OSDN Git Service

Delete ruby samples
authorAkihiro Ono <a-ono@users.sourceforge.jp>
Sat, 5 Feb 2011 18:31:25 +0000 (03:31 +0900)
committerAkihiro Ono <a-ono@users.sourceforge.jp>
Sat, 5 Feb 2011 18:31:25 +0000 (03:31 +0900)
1249 files changed:
ruby/doc/ruby/ruby-1.8.7/sample/README [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/bigdecimal/linear.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/bigdecimal/nlsolve.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/bigdecimal/pi.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/biorhythm.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/cal.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/cbreak.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/clnt.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/dbmtest.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/dir.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/dl/c++sample.C [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/dl/c++sample.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/dl/drives.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/dl/getch.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/dl/libc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/dl/msgbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/dl/msgbox2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/dl/stream.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/README.rd [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/README.rd.ja [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/darray.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/darrayc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/dbiff.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/dcdbiff.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/dchatc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/dchats.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/dhasen.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/dhasenc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/dlogc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/dlogd.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/dqin.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/dqlib.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/dqout.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/dqueue.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/drbc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/drbch.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/drbm.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/drbmc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/drbs-acl.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/drbs.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/drbssl_c.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/drbssl_s.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/extserv_test.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/gw_ct.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/gw_cu.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/gw_s.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/holderc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/holders.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/http0.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/http0serv.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/name.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/namec.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/old_tuplespace.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/rinda_ts.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/rindac.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/rindas.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/ring_echo.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/ring_inspect.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/ring_place.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/simpletuple.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/speedc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/drb/speeds.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/dualstack-fetch.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/dualstack-httpd.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/erb/erb4html.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/eval.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/export.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/exyacc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/fact.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/fib.awk [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/fib.pl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/fib.py [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/fib.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/fib.scm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/freq.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/from.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/fullpath.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/getopts.test [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/less.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/list.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/list2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/list3.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/logger/app.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/logger/log.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/logger/shifting.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/mine.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/mkproto.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/mpart.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/mrshtest.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/observ.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/occur.pl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/occur.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/occur2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/openssl/c_rehash.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/openssl/cert2text.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/openssl/cert_store_view.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/openssl/certstore.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/openssl/cipher.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/openssl/crlstore.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/openssl/echo_cli.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/openssl/echo_svr.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/openssl/gen_csr.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/openssl/smime_read.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/openssl/smime_write.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/openssl/wget.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/optparse/opttest.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/optparse/subcommand.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/philos.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/pi.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/rcs.awk [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/rcs.dat [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/rcs.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/regx.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/rss/blend.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/rss/convert.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/rss/list_description.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/rss/re_read.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/rss/rss_recent.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/sieve.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/svr.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/test.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/testunit/adder.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/testunit/subtracter.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/testunit/tc_adder.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/testunit/tc_subtracter.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/testunit/ts_examples.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/time.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/24hr_clock.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/binding_sample.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/bindtag_sample.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/binstr_usage.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/btn_with_frame.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/cd_timer.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/cmd_res_test.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/cmd_resource [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ChangeLog [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ChangeLog.prev [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/README [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/README.1st [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/README.tkencoding [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/anilabel.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/aniwave.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/arrow.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/bind.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/bitmap.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/browse1 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/browse2 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/button.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/check.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/check2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/clrpick.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/colors.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/combo.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/cscroll.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ctext.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/dialog1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/dialog2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/README [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/README.JP [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/README.tk80 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/license.terms [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/license.terms.tk80 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/entry1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/entry2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/entry3.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/filebox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/floor.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/floor2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/form.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/goldberg.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/hello [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/hscale.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/icon.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/image1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/image2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/image3.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/items.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ixset [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ixset2 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/knightstour.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/label.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/labelframe.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/mclist.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/menu.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/menu84.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/menubu.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/msgbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/msgbox2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/paned1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/paned2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/pendulum.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/plot.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/puzzle.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/radio.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/radio2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/radio3.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/rmt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/rolodex [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ruler.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/sayings.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/search.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/spin.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/square [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/states.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/style.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/tcolor [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/text.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/textpeer.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/timer [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/tkencoding.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/toolbar.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/tree.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttkbut.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttkmenu.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttknote.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttkpane.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttkprogress.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/twind.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/twind2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/unicodeout.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/vscale.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/widget [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/README [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/README.1st [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/anilabel.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/aniwave.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/arrow.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/bind.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/bitmap.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/browse1 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/browse2 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/button.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/check.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/check2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/clrpick.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/colors.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/combo.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/cscroll.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ctext.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/dialog1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/dialog2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/README [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/README.JP [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/README.tk80 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/license.terms [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/license.terms.tk80 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/entry1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/entry2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/entry3.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/filebox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/floor.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/floor2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/form.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/goldberg.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/hello [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/hscale.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/icon.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/image1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/image2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/image3.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/items.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ixset [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ixset2 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/knightstour.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/label.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/labelframe.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/mclist.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/menu.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/menu84.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/menu8x.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/menubu.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/msgbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/msgbox2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/paned1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/paned2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/pendulum.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/plot.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/puzzle.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/radio.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/radio2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/radio3.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/rmt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/rolodex [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/rolodex-j [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ruler.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/sayings.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/search.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/spin.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/square [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/states.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/style.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/tcolor [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/text.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/textpeer.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/timer [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/toolbar.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/tree.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttkbut.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttkmenu.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttknote.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttkpane.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttkprogress.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/twind.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/twind2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/unicodeout.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/vscale.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/widget [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/editable_listbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/encstr_usage.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/figmemo_sample.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/images/earth.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/images/earthris.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/images/face.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/images/flagdown.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/images/flagup.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/images/gray25.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/images/grey.25 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/images/grey.5 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/images/letters.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/images/noletter.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/images/pattern.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/images/tcllogo.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/images/teapot.ppm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/irbtk.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/irbtkw.rbw [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/iso2022-kr.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/menubar1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/menubar2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/README [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/cs.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/de.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/el.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/en.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/en_gb.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/eo.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/es.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/fr.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/it.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/ja.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/nl.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/pl.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/ru.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb2/README [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb2/de.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb2/ja.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/README [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/cs.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/de.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/el.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/en.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/en_gb.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/eo.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/es.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/fr.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/it.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/ja.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/license.terms [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/nl.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/pl.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/ru.msg [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/multi-ip_sample.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/multi-ip_sample2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/optobj_sample.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/propagate.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/remote-ip_sample.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/remote-ip_sample2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/resource.en [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/resource.ja [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/safe-tk.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/buttonbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/calendar.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/canvasprintbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/canvasprintdialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/checkbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/combobox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/dateentry.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/datefield.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/dialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/dialogshell.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/disjointlistbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/entryfield-1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/entryfield-2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/entryfield-3.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/extbutton.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/extfileselectionbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/extfileselectiondialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/feedback.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/fileselectionbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/fileselectiondialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/finddialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/hierarchy.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/hyperhelp.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/labeledframe.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/labeledwidget.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/mainwindow.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/menubar.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/menubar2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/messagebox1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/messagebox2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/messagedialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/notebook.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/notebook2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/optionmenu.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/panedwindow.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/panedwindow2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/promptdialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/pushbutton.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/radiobox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledcanvas.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledframe.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledhtml.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledlistbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledtext.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/selectionbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/selectiondialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/shell.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/spindate.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/spinint.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/spinner.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/spintime.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/tabnotebook.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/tabnotebook2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/tabset.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/timeentry.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/timefield.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/toolbar.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/watch.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/scrollframe.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/batsu.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines0.tcl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines3.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines4.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/maru.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/safeTk.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/sample0.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/sample1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/sample2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkalignbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkballoonhelp.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkbiff.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkbrowse.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkcombobox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkdialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/Orig_LICENSE.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/tkIcons [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/tkIcons-sample.kde [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/tkIcons.kde [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/viewIcons.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/barchart5.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/calendar.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph6.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph7.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph7a.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph7b.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph7c.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/buckskin.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/chalk.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/qv100.t.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/rain.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/sample.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/pareto.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/plot1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/plot1b.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/readme.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/scripts/stipples.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/winop1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/winop2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/Orig_LICENSE.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/basic.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/bwidget.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/demo.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/dnd.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/manager.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/select.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/tmpldlg.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/tree.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/x1.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/Orig_LICENSE.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/box.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/clear.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/close.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/copy.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/cut.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/exit.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/find.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/help.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/line.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/mag.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/new.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/open.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/oval.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/paste.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/points.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/poly.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/print.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/ruler.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/save.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/select.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/text.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/buttonbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/calendar.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/canvasprintbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/canvasprintdialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/checkbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/combobox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/dateentry.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/datefield.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/dialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/dialogshell.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/disjointlistbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/entryfield-1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/entryfield-2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/entryfield-3.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/extbutton.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/extfileselectionbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/extfileselectiondialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/feedback.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/fileselectionbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/fileselectiondialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/finddialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/hierarchy.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/hyperhelp.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/labeledframe.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/labeledwidget.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/mainwindow.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/menubar.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/menubar2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/messagebox1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/messagebox2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/messagedialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/notebook.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/notebook2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/optionmenu.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/panedwindow.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/panedwindow2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/promptdialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/pushbutton.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/radiobox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledcanvas.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledframe.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledhtml.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledlistbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledtext.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/selectionbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/selectiondialog.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/shell.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/spindate.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/spinint.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/spinner.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/spintime.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/tabnotebook.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/tabnotebook2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/tabset.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/timeentry.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/timefield.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/toolbar.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/watch.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/Orig_LICENSE.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/datefield.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/plotdemos1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/plotdemos2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/plotdemos3.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/xyplot.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/Orig_LICENSE.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/demo.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/iconlib.tcl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/readme.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/repeater.tcl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue.tcl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowdown-h.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowdown-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowdown.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowleft-h.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowleft-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowleft.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowright-h.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowright-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowright.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowup-h.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowup-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowup.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-h.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-n.xcf [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-hc.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-hu.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-nc.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-nu.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-hc.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-hu.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-nc.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-nu.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-thumb-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-thumb.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-vthumb-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-vthumb.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/slider-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/slider.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/vslider-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/vslider.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/pkgIndex.tcl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik.tcl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowdown-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowdown-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowleft-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowleft-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowright-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowright-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowup-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowup-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-d.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-h.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-s.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/check-c.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/check-u.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/hsb-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/hsb-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/hslider-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-a.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-arrow-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-d.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/radio-c.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/radio-u.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tab-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tab-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tbar-a.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tbar-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tbar-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/vsb-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/vsb-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/vslider-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/pkgIndex.tcl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc.tcl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/button-h.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/button-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/button-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-hc.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-hu.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-nc.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-nu.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-hc.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-hu.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-nc.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-nu.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/pkgIndex.tcl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/pkgIndex.tcl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik.tcl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowdown-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowdown-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowleft-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowleft-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowright-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowright-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowup-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowup-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/button-h.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/button-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/button-p.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-hc.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-hu.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-nc.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-nu.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-pc.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/hsb-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/hslider-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-hc.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-hu.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-nc.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-nu.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-pc.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/vsb-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/vslider-n.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/toolbutton.tcl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/Orig_COPYRIGHT.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/README [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/hv.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image1 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image10 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image11 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image12 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image13 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image14 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image2 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image3 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image4 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image5 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image6 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image7 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image8 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image9 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/index.html [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image1 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image10 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image11 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image12 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image13 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image14 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image15 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image16 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image17 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image18 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image19 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image2 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image20 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image21 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image22 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image23 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image24 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image25 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image26 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image27 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image28 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image29 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image3 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image30 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image31 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image32 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image33 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image34 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image35 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image36 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image37 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image38 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image39 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image4 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image5 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image6 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image7 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image8 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image9 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/index.html [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image1 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image10 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image11 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image12 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image13 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image14 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image2 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image3 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image4 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image5 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image6 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image7 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image8 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image9 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/index.html [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image1 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image2 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image3 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image4 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image5 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image6 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image7 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image8 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image9 [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/index.html [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/ss.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkimg/demo.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkimg/license_terms_of_Img_extension [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkimg/readme.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/Orig_LICENSE.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/basic.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/buttons.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/command.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/debug.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/dynarows.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/maxsize.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/spreadsheet.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/tcllogo.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/valid.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/bitmaps.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/demo.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/explorer.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/help.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/imovie.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/layout.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/mailwasher.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/outlook-folders.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/outlook-newgroup.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-dll.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-exe.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-file.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-folder.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-txt.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/checked.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/file.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/folder-closed.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/folder-open.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/help-book-closed.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/help-book-open.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/help-page.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-01.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-02.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-03.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-04.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-05.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-06.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-07.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-check-off.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-check-on.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-print.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-radio-off.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-radio-on.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-search.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-security.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/mac-collapse.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/mac-expand.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-arrow.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-clip.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-deleted.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-draft.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-folder.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-group.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-inbox.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-local.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-main.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-outbox.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-read-2.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-read.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-sent.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-server.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-unread.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-watch.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/sky.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-dll.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-exe.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-file.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-folder.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-txt.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/unchecked.gif [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/random.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/readme.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/www-options.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/Orig_LICENSE.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/README.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/canvItems.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/canvSticker.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/canvSticker2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/dial_demo.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/m128_000.xbm [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/oscilloscope.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/pie.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/vu_demo.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkfrom.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkhello.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkline.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmenubutton.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmsgcat-load_rb.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmsgcat-load_rb2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmsgcat-load_tk.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmulticolumnlist.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmultilistbox.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmultilistframe.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkoptdb-safeTk.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkoptdb.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tkrttimer.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tksleep_sample.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tktextframe.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tktextio.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tktimer.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tktimer2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tktimer3.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tktree.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/tktree.tcl [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tk/ttk_wrapper.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/trojan.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/tsvr.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/uumerge.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/webrick/demo-app.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/webrick/demo-multipart.cgi [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/webrick/demo-servlet.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/webrick/demo-urlencoded.cgi [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/webrick/hello.cgi [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/webrick/hello.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/webrick/httpd.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/webrick/httpproxy.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/webrick/httpsd.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/win32ole/excel1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/win32ole/excel2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/win32ole/excel3.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/win32ole/ie.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/win32ole/ieconst.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/win32ole/ienavi.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/win32ole/oledirs.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/win32ole/olegen.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/sample/win32ole/xml.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/csv/test_csv.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/dbm/test_dbm.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/digest/test_digest.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/dl/libtest.def [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/dl/test.c [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/dl/test.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/drbtest.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/ignore_test_drb.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/test_acl.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/test_drb.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/test_drbssl.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/test_drbunix.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/ut_array.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/ut_array_drbssl.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/ut_array_drbunix.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/ut_drb.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/ut_drb_drbssl.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/ut_drb_drbunix.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/ut_eval.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/ut_large.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/ut_port.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/ut_safe1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/drb/ut_timerholder.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/erb/hello.erb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/erb/test_erb.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/fileutils/fileasserts.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/fileutils/test_dryrun.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/fileutils/test_fileutils.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/fileutils/test_nowrite.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/fileutils/test_verbose.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/gdbm/test_gdbm.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/iconv/test_basic.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/iconv/test_option.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/iconv/test_partial.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/iconv/utils.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/io/nonblock/test_flush.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/logger/test_logger.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/monitor/test_monitor.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/net/http/test_httpheader.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/net/http/test_https_proxy.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/net/imap/test_imap.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/nkf/test_kconv.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/nkf/test_nkf.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/ssl_server.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_asn1.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_cipher.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_digest.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_ec.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_hmac.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_ns_spki.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_pair.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_pkcs7.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_pkey_rsa.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_ssl.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509cert.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509crl.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509ext.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509name.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509req.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509store.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/openssl/utils.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/optparse/test_getopts.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/optparse/test_noarg.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/optparse/test_optarg.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/optparse/test_optparse.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/optparse/test_placearg.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/optparse/test_reqarg.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ostruct/test_ostruct.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/pathname/test_pathname.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rdoc/parsers/test_parse_c.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/readline/test_readline.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rinda/test_rinda.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/rss-assertions.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/rss-testcase.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_1.0.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_2.0.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_accessor.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_atom.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_content.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_dublincore.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_image.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_inherit.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_itunes.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_0.9.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_1.0.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_2.0.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_atom_entry.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_atom_feed.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_content.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_dc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_image.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_itunes.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_slash.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_sy.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_taxo.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_trackback.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_xml-stylesheet.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser_1.0.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser_2.0.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser_atom_entry.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser_atom_feed.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_0.9.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_1.0.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_2.0.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_atom_entry.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_atom_feed.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_itunes.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_slash.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_slash.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_syndication.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_taxonomy.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_to_s.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_trackback.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_version.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/rss/test_xml-stylesheet.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/beginmainend.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/endblockwarn.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/envutil.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/marshaltestlib.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/suicide.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_alias.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_array.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_assignment.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_beginendblock.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_bignum.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_call.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_case.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_clone.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_condition.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_const.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_defined.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_dir.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_enum.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_enumerator.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_env.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_eval.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_exception.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_file.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_fixnum.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_float.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_gc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_hash.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_ifunless.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_integer.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_io.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_iterator.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_marshal.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_math.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_method.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_objectspace.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_pack.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_path.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_pipe.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_proc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_process.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_rand.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_range.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_readpartial.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_settracefunc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_signal.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_string.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_stringchar.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_struct.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_super.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_symbol.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_system.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_time.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_trace.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_variable.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/test_whileuntil.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/ruby/ut_eof.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/runner.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/sdbm/test_sdbm.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/asp.net/hello.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/asp.net/test_aspdotnet.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/calc/calc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/calc/calc2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/calc/server.cgi [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/calc/server.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/calc/server2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/calc/test_calc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/calc/test_calc2.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/calc/test_calc_cgi.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/fault/test_customfault.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/header/server.cgi [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/header/test_authheader.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/header/test_authheader_cgi.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/header/test_simplehandler.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/helloworld/hw_s.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/helloworld/test_helloworld.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/marshal/test_digraph.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/marshal/test_marshal.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/marshal/test_struct.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/README [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/ca.cert [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/client.cert [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/client.key [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/server.cert [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/server.key [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/sslsvr.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/subca.cert [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/test_ssl.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/struct/test_struct.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/swa/test_file.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/test_basetype.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/test_envelopenamespace.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/test_httpconfigloader.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/test_mapping.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/test_no_indent.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/test_property.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/test_soapelement.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/test_streamhandler.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/test_styleuse.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/README.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/calc.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/document.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/echo_version.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/simpletype.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/test_calc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/test_document.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/test_simpletype.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/socket/test_nonblock.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/socket/test_socket.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/socket/test_unix.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/stringio/test_stringio.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/strscan/test_stringscanner.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/collector/test_dir.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/collector/test_objectspace.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/runit/test_assert.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/runit/test_testcase.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/runit/test_testresult.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/runit/test_testsuite.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/test_assertions.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/test_error.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/test_failure.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/test_testcase.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/test_testresult.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/test_testsuite.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/util/test_backtracefilter.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/util/test_observable.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/testunit/util/test_procwrapper.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/thread/lbtest.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/thread/test_thread.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/uri/test_common.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/uri/test_ftp.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/uri/test_generic.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/uri/test_http.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/uri/test_ldap.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/uri/test_mailto.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/webrick/.htaccess [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/webrick/test_cgi.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/webrick/test_cookie.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/webrick/test_filehandler.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httpauth.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httprequest.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httpserver.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httputils.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httpversion.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/webrick/test_server.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/webrick/utils.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/webrick/webrick.cgi [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/webrick/webrick_long_filename.cgi [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/any.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/expectedDriver.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/expectedEcho.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/expectedService.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/test_any.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/axisArray/axisArray.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/axisArray/itemList.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/axisArray/test_axisarray.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/DatetimeService.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/datetime.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/datetime.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/datetimeServant.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/test_datetime.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/document.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/echo.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/number.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/ping_nosoapaction.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/test_nosoapaction.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/test_number.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/test_rpc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/emptycomplextype.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/map/map.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/map/map.xml [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/map/test_map.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/marshal/person.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/marshal/person_org.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/marshal/test_wsdlmarshal.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/multiplefault.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/lp.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/lp.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/lp.xsd [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/np.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/test_qualified.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/test_unqualified.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/RAA.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/RAAServant.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/RAAService.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/README.txt [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/raa.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/server.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/test_raa.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/ref/expectedProduct.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/ref/product.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/ref/test_ref.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/echoDriver.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/echo_serviceClient.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/rpc.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/test-rpc-lit.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/test-rpc-lit12.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/test_rpc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/test_rpc_lit.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedClient.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedDriver.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedEchoVersion.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedServant.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedService.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/rpc.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/test_rpc.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/simpletype.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/test_simpletype.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/soap/soapbodyparts.wsdl [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/soap/test_soapbodyparts.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/test_emptycomplextype.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/test_fault.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/wsdl/test_multiplefault.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_bool.expected [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_bool.xml [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_cdata.expected [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_cdata.xml [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_covert.expected [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_covert.xml [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/datetime_iso8601.xml [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/fault.xml [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/value.expected [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/value.xml [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/xml1.expected [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/xml1.xml [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_cookie.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_datetime.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_features.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_marshal.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_parser.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_webrick_server.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/webrick_testing.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xsd/codegen/test_classdef.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xsd/noencoding.xml [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xsd/test_noencoding.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xsd/test_xmlschemaparser.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xsd/test_xsd.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/xsd/xmlschema.xml [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/yaml/test_yaml.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/yaml/test_yamlstore.rb [deleted file]
ruby/doc/ruby/ruby-1.8.7/test/zlib/test_zlib.rb [deleted file]

diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/README b/ruby/doc/ruby/ruby-1.8.7/sample/README
deleted file mode 100644 (file)
index bc38a8b..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-README         this file
-biorhythm.rb   biorhythm calculator
-cal.rb         cal(1) clone
-cbreak.rb      no echo done by ioctl
-clnt.rb                socket client
-dbmtest.rb     test for dbm
-dir.rb         directory access
-dualstack-fetch.rb     IPv6 demo
-dualstack-httpd.rb     IPv6 demo
-dstore.rb      object database on dbm
-eval.rb                simple evaluator
-export.rb      method access example
-exyacc.rb      extrace BNF from yacc file
-fact.rb                factorial calculator
-fib.awk                Fibonacci number (AWK)
-fib.pl         Fibonacci number (Perl)
-fib.py         Fibonacci number (Python)
-fib.rb         Fibonacci number (Ruby)
-fib.scm                Fibonacci number (Scheme)
-freq.rb                count word occurrence
-from.rb                scan mail spool
-fullpath.rb    convert ls -lR to fullpath format
-getopts.test   test fot getopt.rb
-io.rb          io test
-irb.rb         interactive ruby
-less.rb                front end for less
-list.rb                stupid object sample
-list2.rb       stupid object sample
-list3.rb       stupid object sample
-mine.rb                simple mine sweeper     
-mkproto.rb     extract prototype from C
-mpart.rb       split file int multi part
-mrshtest.rb    test marshal
-observ.rb      observer design pattern sample
-occur.pl       count word occurrence (Perl)
-occur.rb       count word occurrence (Ruby)
-occur2.rb      count word occurrence - another style
-philos.rb      famous dining philosophers
-pi.rb          calculate PI
-rcs.awk                random character stereogram (AWK)
-rcs.rb         random character stereogram (Ruby)
-rcs.dat                data for random character stereogram
-rd2html.rb     rd (Ruby Document) to HTML translator
-regx.rb                regular expression tester
-sieve.rb       sieve of Eratosthenes
-svr.rb         socket server
-test.rb                test suite used by `make test'
-time.rb                /usr/bin/time clone
-trojan.rb      simple tool to find file that may be trojan horse.
-tsvr.rb                socket server using thread
-uumerge.rb     merge files and uudecode them
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/bigdecimal/linear.rb b/ruby/doc/ruby/ruby-1.8.7/sample/bigdecimal/linear.rb
deleted file mode 100644 (file)
index 88a62ff..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/local/bin/ruby
-
-#
-# linear.rb
-#
-# Solves linear equation system(A*x = b) by LU decomposition method.
-#  where  A is a coefficient matrix,x is an answer vector,b is a constant vector.
-#
-# USAGE:
-#   ruby linear.rb [input file solved]
-#
-
-require "bigdecimal"
-require "bigdecimal/ludcmp"
-
-#
-# NOTE:
-#   Change following BigDecimal::limit() if needed.
-BigDecimal::limit(100)
-#
-
-include LUSolve
-def rd_order(na)
-   printf("Number of equations ?") if(na <= 0)
-   n = ARGF.gets().to_i
-end
-
-na   = ARGV.size
-zero = BigDecimal::new("0.0")
-one  = BigDecimal::new("1.0")
-
-while (n=rd_order(na))>0
-  a = []
-  as= []
-  b = []
-  if na <= 0
-     # Read data from console.
-     printf("\nEnter coefficient matrix element A[i,j]\n");
-     for i in 0...n do
-       for j in 0...n do
-         printf("A[%d,%d]? ",i,j); s = ARGF.gets
-         a  << BigDecimal::new(s);
-         as << BigDecimal::new(s);
-       end
-       printf("Contatant vector element b[%d] ? ",i); b << BigDecimal::new(ARGF.gets);
-     end
-  else
-     # Read data from specified file.
-     printf("Coefficient matrix and constant vector.\n");
-     for i in 0...n do
-       s = ARGF.gets
-       printf("%d) %s",i,s)
-       s = s.split
-       for j in 0...n do
-         a  << BigDecimal::new(s[j]);
-         as << BigDecimal::new(s[j]);
-       end
-       b << BigDecimal::new(s[n]);
-     end
-  end
-  x = lusolve(a,b,ludecomp(a,n,zero,one),zero)
-  printf("Answer(x[i] & (A*x-b)[i]) follows\n")
-  for i in 0...n do
-     printf("x[%d]=%s ",i,x[i].to_s)
-     s = zero
-     for j in 0...n do
-       s = s + as[i*n+j]*x[j]
-     end
-     printf(" & %s\n",(s-b[i]).to_s)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/bigdecimal/nlsolve.rb b/ruby/doc/ruby/ruby-1.8.7/sample/bigdecimal/nlsolve.rb
deleted file mode 100644 (file)
index 7f729e6..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/local/bin/ruby
-
-#
-# nlsolve.rb
-# An example for solving nonlinear algebraic equation system.
-#
-
-require "bigdecimal"
-require "bigdecimal/newton"
-include Newton
-
-class Function
-  def initialize()
-    @zero = BigDecimal::new("0.0")
-    @one  = BigDecimal::new("1.0")
-    @two  = BigDecimal::new("2.0")
-    @ten  = BigDecimal::new("10.0")
-    @eps  = BigDecimal::new("1.0e-16")
-  end
-  def zero;@zero;end
-  def one ;@one ;end
-  def two ;@two ;end
-  def ten ;@ten ;end
-  def eps ;@eps ;end
-  def values(x) # <= defines functions solved
-    f = []
-    f1 = x[0]*x[0] + x[1]*x[1] - @two # f1 = x**2 + y**2 - 2 => 0
-    f2 = x[0] - x[1]                  # f2 = x    - y        => 0
-    f <<= f1
-    f <<= f2
-    f
-  end
-end
- f = BigDecimal::limit(100)
- f = Function.new
- x = [f.zero,f.zero]      # Initial values
- n = nlsolve(f,x)
- p x
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/bigdecimal/pi.rb b/ruby/doc/ruby/ruby-1.8.7/sample/bigdecimal/pi.rb
deleted file mode 100644 (file)
index 2f7dd27..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/local/bin/ruby
-
-#
-# pi.rb
-#
-# Calculates 3.1415.... (the number of times that a circle's diameter
-# will fit around the circle) using J. Machin's formula.
-#
-
-require "bigdecimal"
-require "bigdecimal/math.rb"
-
-include BigMath
-
-if ARGV.size == 1
-    print "PI("+ARGV[0]+"):\n"
-    p PI(ARGV[0].to_i)
-else
-    print "TRY: ruby pi.rb 1000 \n"
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/biorhythm.rb b/ruby/doc/ruby/ruby-1.8.7/sample/biorhythm.rb
deleted file mode 100644 (file)
index 8566eb7..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/usr/local/bin/ruby
-#
-#               biorhythm.rb - 
-#                       $Release Version: $
-#                       $Revision: 11708 $
-#                       $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-#                       by Yasuo OHBA(STAFS Development Room)
-#
-# --
-#
-#       
-#
-
-# probably based on:
-#
-# Newsgroups: comp.sources.misc,de.comp.sources.os9
-# From: fkk@stasys.sta.sub.org (Frank Kaefer)
-# Subject: v41i126:  br - Biorhythm v3.0, Part01/01
-# Message-ID: <1994Feb1.070616.15982@sparky.sterling.com>
-# Sender: kent@sparky.sterling.com (Kent Landfield)
-# Organization: Sterling Software
-# Date: Tue, 1 Feb 1994 07:06:16 GMT
-#
-# Posting-number: Volume 41, Issue 126
-# Archive-name: br/part01
-# Environment: basic, dos, os9
-
-include Math
-require "date.rb"
-require "parsearg.rb"
-require "parsedate.rb"
-
-def usage()
-  print "Usage:\n"
-  print "biorhythm.rb [options]\n"
-  print "  options...\n"
-  print "    -D YYYYMMDD(birthday)     : use default values.\n"
-  print "    --sdate | --date YYYYMMDD : use system date; use specified date.\n"
-  print "    --birthday YYYYMMDD       : specifies your birthday.\n"
-  print "    -v | -g                   : show values or graph.\n"
-  print "    --days DAYS               : graph range (only in effect for graphs).\n"
-  print "    --help                    : help\n"
-end
-$USAGE = 'usage'
-
-def printHeader(y, m, d, p, w)
-  print "\n>>> Biorhythm <<<\n"
-  printf "The birthday %04d.%02d.%02d is a %s\n", y, m, d, w
-  printf "Age in days: [%d]\n\n", p
-end
-
-def getPosition(z)
-  pi = Math::PI
-  z = Integer(z)
-  phys = (50.0 * (1.0 + sin((z / 23.0 - (z / 23)) * 360.0 * pi / 180.0))).to_i
-  emot = (50.0 * (1.0 + sin((z / 28.0 - (z / 28)) * 360.0 * pi / 180.0))).to_i
-  geist =(50.0 * (1.0 + sin((z / 33.0 - (z / 33)) * 360.0 * pi / 180.0))).to_i
-  return phys, emot, geist
-end
-
-def parsedate(s)
-  ParseDate::parsedate(s).values_at(0, 1, 2)
-end
-
-def name_of_week(date)
-  Date::DAYNAMES[date.wday]
-end
-
-#
-# main program
-#
-parseArgs(0, nil, "vg", "D:", "sdate", "date:", "birthday:", "days:")
-
-if $OPT_D
-  dd = Date.today
-  bd = Date.new(*parsedate($OPT_D))
-  ausgabeart = "g"
-else
-  if $OPT_birthday
-    bd = Date.new(*parsedate($OPT_birthday))
-  else
-    STDERR.print("Birthday                      (YYYYMMDD) : ")
-    unless (si = STDIN.gets.chop).empty?
-      bd = Date.new(*parsedate(si))
-    end
-  end
-  if !bd
-    STDERR.print "BAD Input Birthday!!\n"
-    exit()
-  end
-
-  if $OPT_sdate
-    dd = Date.today
-  elsif $OPT_date
-    dd = Date.new(*parsedate($OPT_date))
-  else
-    STDERR.print("Date        [<RETURN> for Systemdate] (YYYYMMDD) : ")
-    unless (si = STDIN.gets.chop).empty?
-      dd = Date.new(*parsedate(si))
-    end
-  end
-  dd ||= Date.today
-
-  if $OPT_v
-    ausgabeart = "v"
-  elsif $OPT_g
-    ausgabeart = "g"
-  else
-    STDERR.print("Values for today or Graph  (v/g) [default g] : ")
-    ausgabeart = STDIN.gets.chop
-  end
-end
-if ausgabeart == "v"
-  printHeader(bd.year, bd.month, bd.day, dd - bd, name_of_week(bd))
-  print "\n"
-  
-  phys, emot, geist = getPosition(dd - bd)
-  printf "Biorhythm:   %04d.%02d.%02d\n", dd.year, dd.month, dd.day
-  printf "Physical:    %d%%\n", phys
-  printf "Emotional:   %d%%\n", emot
-  printf "Mental:      %d%%\n", geist
-  print "\n"
-else
-  if $OPT_days
-    display_period = $OPT_days.to_i
-  elsif $OPT_D
-    display_period = 9
-  else
-    STDERR.printf("Graph for how many days     [default 10] : ")
-    display_period = STDIN.gets.chop
-    if display_period.empty?
-      display_period = 9
-    else
-      display_period = display_period.to_i - 1
-    end
-  end
-
-  printHeader(bd.year, bd.month, bd.day, dd - bd, name_of_week(bd))
-  print "                     P=physical, E=emotional, M=mental\n"
-  print "             -------------------------+-------------------------\n"
-  print "                     Bad Condition    |    Good Condition\n"
-  print "             -------------------------+-------------------------\n"
-  
-  (dd - bd).step(dd - bd + display_period) do |z|
-    phys, emot, geist = getPosition(z)
-    
-    printf "%04d.%02d.%02d : ", dd.year, dd.month, dd.day
-    p = (phys / 2.0 + 0.5).to_i
-    e = (emot / 2.0 + 0.5).to_i
-    g = (geist / 2.0 + 0.5).to_i
-    graph = "." * 51
-    graph[25] = ?|
-    graph[p] = ?P
-    graph[e] = ?E
-    graph[g] = ?M
-    print graph, "\n"
-    dd = dd + 1
-  end
-  print "             -------------------------+-------------------------\n\n"
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/cal.rb b/ruby/doc/ruby/ruby-1.8.7/sample/cal.rb
deleted file mode 100644 (file)
index 3876574..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-#! /usr/bin/env ruby
-
-# cal.rb: Written by Tadayoshi Funaba 1998-2004,2006,2008
-# $Id: cal.rb,v 2.11 2008-01-06 08:42:17+09 tadf Exp $
-
-require 'date'
-
-class Cal
-
-  START =
-    {
-    'cn' => Date::GREGORIAN, # China
-    'de' => 2342032,         # Germany (protestant states)
-    'dk' => 2342032,         # Denmark
-    'es' => 2299161,         # Spain
-    'fi' => 2361390,         # Finland
-    'fr' => 2299227,         # France
-    'gb' => 2361222,         # United Kingdom
-    'gr' => 2423868,         # Greece
-    'hu' => 2301004,         # Hungary
-    'it' => 2299161,         # Italy
-    'jp' => Date::GREGORIAN, # Japan
-    'no' => 2342032,         # Norway
-    'pl' => 2299161,         # Poland
-    'pt' => 2299161,         # Portugal
-    'ru' => 2421639,         # Russia
-    'se' => 2361390,         # Sweden
-    'us' => 2361222,         # United States
-    'os' => Date::JULIAN,    # (old style)
-    'ns' => Date::GREGORIAN  # (new style)
-  }
-
-  DEFAULT_START = 'gb'
-
-  def initialize
-    opt_j; opt_m; opt_t; opt_y; opt_c
-  end
-
-  def opt_j(flag=false) @opt_j = flag end
-  def opt_m(flag=false) @opt_m = flag end
-  def opt_t(flag=false) @opt_t = flag end
-  def opt_y(flag=false) @opt_y = flag end
-
-  def opt_c(arg=DEFAULT_START) @start = START[arg] end
-
-  def set_params
-    @dw = if @opt_j then 3 else 2 end
-    @mw = (@dw + 1) * 7 - 1
-    @mn = if @opt_j then 2 else 3 end
-    @tw = (@mw + 2) * @mn - 2
-    @k  = if @opt_m then 1 else 0 end
-    @da = if @opt_j then :yday else :mday end
-  end
-
-  def pict(y, m)
-    d = (1..31).detect{|x| Date.valid_date?(y, m, x, @start)}
-    fi = Date.new(y, m, d, @start)
-    fi -= (fi.jd - @k + 1) % 7
-
-    ve  = (fi..fi +  6).collect{|cu|
-      %w(S M Tu W Th F S)[cu.wday]
-    }
-    ve += (fi..fi + 41).collect{|cu|
-      if cu.mon == m then cu.send(@da) end.to_s
-    }
-
-    ve = ve.collect{|e| e.rjust(@dw)}
-
-    gr = group(ve, 7)
-    gr = trans(gr) if @opt_t
-    ta = gr.collect{|xs| xs.join(' ')}
-
-    ca = %w(January February March April May June July
-           August September October November December)[m - 1]
-    ca = ca + ' ' + y.to_s if !@opt_y
-    ca = ca.center(@mw)
-
-    ta.unshift(ca)
-  end
-
-  def group(xs, n)
-    (0..xs.size / n - 1).collect{|i| xs[i * n, n]}
-  end
-
-  def trans(xs)
-    (0..xs[0].size - 1).collect{|i| xs.collect{|x| x[i]}}
-  end
-
-  def stack(xs)
-    if xs.empty? then [] else xs[0] + stack(xs[1..-1]) end
-  end
-
-  def block(xs, n)
-    stack(group(xs, n).collect{|ys| trans(ys).collect{|zs| zs.join('  ')}})
-  end
-
-  def unlines(xs)
-    xs.collect{|x| x + "\n"}.join
-  end
-
-  def monthly(y, m)
-    unlines(pict(y, m))
-  end
-
-  def addmon(y, m, n)
-    y, m = (y * 12 + (m - 1) + n).divmod(12)
-    return y, m + 1
-  end
-
-  def yearly(y)
-    y.to_s.center(@tw) + "\n\n" +
-      unlines(block((0..11).collect{|n| pict(*addmon(y, 1, n))}, @mn)) + "\n"
-  end
-
-  def print(y, m)
-    set_params
-    if @opt_y then yearly(y) else monthly(y, m) end
-  end
-
-end
-
-if __FILE__ == $0
-
-  require 'getoptlong'
-
-  def usage
-    warn 'usage: cal [-c iso3166] [-jmty] [[month] year]'
-    exit 1
-  end
-
-  cal = Cal.new
-
-  begin
-    GetoptLong.new(['-c', GetoptLong::REQUIRED_ARGUMENT],
-                  ['-j', GetoptLong::NO_ARGUMENT],
-                  ['-m', GetoptLong::NO_ARGUMENT],
-                  ['-t', GetoptLong::NO_ARGUMENT],
-                  ['-y', GetoptLong::NO_ARGUMENT]).
-    each do |opt, arg|
-      case opt
-      when '-c'; cal.opt_c(arg) || raise
-      when '-j'; cal.opt_j(true)
-      when '-m'; cal.opt_m(true)
-      when '-t'; cal.opt_t(true)
-      when '-y'; cal.opt_y(true)
-      end
-    end
-  rescue
-    usage
-  end
-
-  y, m = ARGV.values_at(1, 0).compact.collect{|x| x.to_i}
-  cal.opt_y(true) if y && !m
-
-  to = Date.today
-  y ||= to.year
-  m ||= to.mon
-
-  usage unless m >= 1 && m <= 12
-  usage unless y >= -4712
-
-  print cal.print(y, m)
-
-end
-
-# See Bird & Wadler's Introduction to functional programming 4.5.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/cbreak.rb b/ruby/doc/ruby/ruby-1.8.7/sample/cbreak.rb
deleted file mode 100644 (file)
index 76b534a..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-# ioctl example works on Sun
-
-CBREAK = 0x00000002
-ECHO = 0x00000008
-TIOCGETP = 0x40067408
-TIOCSETP = 0x80067409
-
-def cbreak ()
-  set_cbreak(true)
-end
-
-def cooked ()
-  set_cbreak(false)
-end
-
-def set_cbreak (on)
-  tty = "\0" * 256
-  STDIN.ioctl(TIOCGETP, tty)
-  ttys = tty.unpack("C4 S")
-  if on
-    ttys[4] |= CBREAK
-    ttys[4] &= ~ECHO
-  else
-    ttys[4] &= ~CBREAK
-    ttys[4] |= ECHO
-  end
-  tty = ttys.pack("C4 S")
-  STDIN.ioctl(TIOCSETP, tty)
-end
-cbreak();
-
-print("this is no-echo line: ");
-readline().print
-cooked();
-print("this is echo line: ");
-readline()
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/clnt.rb b/ruby/doc/ruby/ruby-1.8.7/sample/clnt.rb
deleted file mode 100644 (file)
index 0f3d17b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-# socket example - client side
-# usage: ruby clnt.rb [host] port
-
-require "socket"
-
-if ARGV.length >= 2
-  host = ARGV.shift
-else
-  host = "localhost"
-end
-print("Trying ", host, " ...")
-STDOUT.flush
-s = TCPSocket.open(host, ARGV.shift)
-print(" done\n")
-print("addr: ", s.addr.join(":"), "\n")
-print("peer: ", s.peeraddr.join(":"), "\n")
-while line = gets()
-  s.write(line)
-  print(s.readline)
-end
-s.close
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/dbmtest.rb b/ruby/doc/ruby/ruby-1.8.7/sample/dbmtest.rb
deleted file mode 100644 (file)
index c77cc20..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# ruby dbm acess
-require "dbm"
-
-d = DBM.open("test")
-keys = d.keys
-if keys.length > 0 then
-  for k in keys; print k, "\n"; end
-  for v in d.values; print v, "\n"; end
-else
-  d['foobar'] = 'FB'
-  d['baz'] = 'BZ'
-  d['quux'] = 'QX'
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/dir.rb b/ruby/doc/ruby/ruby-1.8.7/sample/dir.rb
deleted file mode 100644 (file)
index b627383..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# directory access
-# list all files but .*/*~/*.o
-dirp = Dir.open(".")
-for f in dirp
-  case f
-  when /^\./, /~$/, /\.o/
-    # do not print
-  else
-    print f, "\n"
-  end
-end
-dirp.close
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/dl/c++sample.C b/ruby/doc/ruby/ruby-1.8.7/sample/dl/c++sample.C
deleted file mode 100644 (file)
index d083d33..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <stdio.h>
-
-class Person {
-private:
-  const char *name;
-  int age;
-
-public:
-  Person(const char *name, int age);
-  const char * get_name();
-  int get_age();
-  void set_age(int i);
-};
-
-Person::Person(const char *name, int age)
-  : name(name), age(age)
-{
-  /* empty */
-}
-
-const char *
-Person::get_name()
-{
-  return name;
-}
-
-int
-Person::get_age(){
-  return age;
-}
-
-void
-Person::set_age(int i){
-  age = i;
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/dl/c++sample.rb b/ruby/doc/ruby/ruby-1.8.7/sample/dl/c++sample.rb
deleted file mode 100644 (file)
index 29887df..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-=begin
- This script shows how to deal with C++ classes using Ruby/DL.
- You must build a dynamic loadable library using "c++sample.C"
- to run this script as follows:
-   $ g++ -o libsample.so -shared c++sample.C
-=end
-
-require 'dl'
-require 'dl/import'
-require 'dl/struct'
-
-# Give a name of dynamic loadable library
-LIBNAME = ARGV[0] || "libsample.so"
-
-class Person
-  module Core
-    extend DL::Importable
-    
-    dlload LIBNAME
-
-    # mangled symbol names
-    extern "void __6PersonPCci(void *, const char *, int)"
-    extern "const char *get_name__6Person(void *)"
-    extern "int get_age__6Person(void *)"
-    extern "void set_age__6Personi(void *, int)"
-
-    Data = struct [
-      "char *name",
-      "int age",
-    ]
-  end
-
-  def initialize(name, age)
-    @ptr = Core::Data.alloc
-    Core::__6PersonPCci(@ptr, name, age)
-  end
-
-  def get_name()
-    str = Core::get_name__6Person(@ptr)
-    if( str )
-      str.to_s
-    else
-      nil
-    end
-  end
-
-  def get_age()
-    Core::get_age__6Person(@ptr)
-  end
-
-  def set_age(age)
-    Core::set_age__6Personi(@ptr, age)
-  end
-end
-
-obj = Person.new("ttate", 1)
-p obj.get_name()
-p obj.get_age()
-obj.set_age(10)
-p obj.get_age()
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/dl/drives.rb b/ruby/doc/ruby/ruby-1.8.7/sample/dl/drives.rb
deleted file mode 100644 (file)
index 8a59040..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-# -*- ruby -*-
-# drives.rb -- find existing drives and show the drive type.
-
-require 'dl'
-require 'dl/import'
-
-module Kernel32
-  extend DL::Importable
-
-  dlload "kernel32"
-
-  extern "long GetLogicalDrives()"
-  extern "int GetDriveType(char*)"
-  extern "long GetDiskFreeSpace(char*, long ref, long ref, long ref, long ref)"
-end
-
-include Kernel32
-
-buff = Kernel32.getLogicalDrives()
-
-i = 0
-ds = []
-while( i < 26 )
-  mask = (1 << i)
-  if( buff & mask > 0 )
-    ds.push((65+i).chr)
-  end
-  i += 1
-end
-
-=begin
-From the cygwin's /usr/include/w32api/winbase.h:
-#define DRIVE_UNKNOWN 0
-#define DRIVE_NO_ROOT_DIR 1
-#define DRIVE_REMOVABLE 2
-#define DRIVE_FIXED 3
-#define DRIVE_REMOTE 4
-#define DRIVE_CDROM 5
-#define DRIVE_RAMDISK 6
-=end
-
-types = [
-  "unknown",
-  "no root dir",
-  "Removable",
-  "Fixed", 
-  "Remote",
-  "CDROM",
-  "RAM",
-]
-print("Drive : Type (Free Space/Available Space)\n")
-ds.each{|d|
-  t = Kernel32.getDriveType(d + ":\\")
-  Kernel32.getDiskFreeSpace(d + ":\\", 0, 0, 0, 0)
-  _,sec_per_clus,byte_per_sec,free_clus,total_clus = Kernel32._args_
-  fbytes = sec_per_clus * byte_per_sec * free_clus
-  tbytes = sec_per_clus * byte_per_sec * total_clus
-  unit = "B"
-  if( fbytes > 1024 && tbytes > 1024 )
-    fbytes = fbytes / 1024
-    tbytes = tbytes / 1024
-    unit = "K"
-  end
-  if( fbytes > 1024 && tbytes > 1024 )
-    fbytes = fbytes / 1024
-    tbytes = tbytes / 1024
-    unit = "M"
-  end
-  print("#{d} : #{types[t]} (#{fbytes} #{unit}/#{tbytes} #{unit})\n")
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/dl/getch.rb b/ruby/doc/ruby/ruby-1.8.7/sample/dl/getch.rb
deleted file mode 100644 (file)
index 3f7261c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-require 'dl'
-
-crtdll = DL::dlopen("crtdll")
-getch  = crtdll['_getch', 'L']
-print(getch.call, "\n")
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/dl/libc.rb b/ruby/doc/ruby/ruby-1.8.7/sample/dl/libc.rb
deleted file mode 100644 (file)
index a1f6fbe..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-require "dl/import"
-require "dl/struct"
-
-module LIBC
-  extend DL::Importable
-
-  begin
-    dlload "libc.so.6"
-  rescue
-    dlload "libc.so.5"
-  end
-
-  extern "int atoi(char*)"
-  extern "ibool isdigit(int)"
-  extern "int gettimeofday(struct timeval *, struct timezone *)"
-  extern "char* strcat(char*, char*)"
-  extern "FILE* fopen(char*, char*)"
-  extern "int fclose(FILE*)"
-  extern "int fgetc(FILE*)"
-  extern "int strlen(char*)"
-  extern "void qsort(void*, int, int, void*)"
-
-  def str_qsort(ary, comp)
-    len = ary.length
-    r,rs = qsort(ary, len, DL.sizeof('P'), comp)
-    return rs[0].to_a('S', len)
-  end
-
-  Timeval = struct [
-    "long tv_sec",
-    "long tv_usec",
-  ]
-
-  Timezone = struct [
-    "int tz_minuteswest",
-    "int tz_dsttime",
-  ]
-
-  def my_compare(ptr1, ptr2)
-    ptr1.ptr.to_s <=> ptr2.ptr.to_s
-  end
-  COMPARE = callback("int my_compare(char**, char**)")
-end
-
-
-$cb1 = DL.callback('IPP'){|ptr1, ptr2|
-  str1 = ptr1.ptr.to_s
-  str2 = ptr2.ptr.to_s
-  str1 <=> str2
-}
-
-p LIBC.atoi("10")
-
-p LIBC.isdigit(?1)
-
-p LIBC.isdigit(?a)
-
-p LIBC.strcat("a", "b")
-
-ary = ["a","c","b"]
-ptr = ary.to_ptr
-LIBC.qsort(ptr, ary.length, DL.sizeof('P'), LIBC::COMPARE)
-p ptr.to_a('S', ary.length)
-
-tv = LIBC::Timeval.malloc
-tz = LIBC::Timezone.malloc
-LIBC.gettimeofday(tv, tz)
-
-p Time.at(tv.tv_sec)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/dl/msgbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/dl/msgbox.rb
deleted file mode 100644 (file)
index 091e646..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-# This script works on Windows.
-
-require 'dl'
-
-User32 = DL.dlopen("user32")
-Kernel32 = DL.dlopen("kernel32")
-
-MB_OK = 0
-MB_OKCANCEL = 1
-
-message_box = User32['MessageBoxA', 'ILSSI']
-r,rs = message_box.call(0, 'ok?', 'error', MB_OKCANCEL)
-
-case r
-when 1
-  print("OK!\n")
-when 2
-  print("Cancel!\n")
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/dl/msgbox2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/dl/msgbox2.rb
deleted file mode 100644 (file)
index e49846c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# This script works on Windows.
-
-require 'dl/win32'
-
-MB_OK = 0
-MB_OKCANCEL = 1
-
-message_box = Win32API.new("user32",'MessageBoxA', 'ISSI', 'I')
-r = message_box.call(0, 'ok?', 'error', MB_OKCANCEL)
-
-case r
-when 1
-  print("OK!\n")
-when 2
-  print("Cancel!\n")
-else
-  p r
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/dl/stream.rb b/ruby/doc/ruby/ruby-1.8.7/sample/dl/stream.rb
deleted file mode 100644 (file)
index 1798369..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-# -*- ruby -*-
-# Display a file name and stream names of a file with those size.
-
-require 'dl'
-require 'dl/import'
-
-module NTFS
-  extend DL::Importable
-
-  dlload "kernel32.dll"
-
-  OPEN_EXISTING         = 3
-  GENERIC_READ          = 0x80000000
-  BACKUP_DATA           = 0x00000001
-  BACKUP_ALTERNATE_DATA = 0x00000004
-  FILE_SHARE_READ       = 0x00000001
-  FILE_FLAG_BACKUP_SEMANTICS = 0x02000000
-
-  typealias "LPSECURITY_ATTRIBUTES", "void*"
-
-  extern "BOOL BackupRead(HANDLE, PBYTE, DWORD, PDWORD, BOOL, BOOL, PVOID)"
-  extern "BOOL BackupSeek(HANDLE, DWORD, DWORD, PDWORD, PDWORD, PVOID)"
-  extern "BOOL CloseHandle(HANDLE)"
-  extern "HANDLE CreateFile(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES,
-                            DWORD, DWORD, HANDLE)"
-
-  module_function
-
-  def streams(filename)
-    status = []
-    h = createFile(filename,GENERIC_READ,FILE_SHARE_READ,nil,
-                  OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,0)
-    if( h != 0 )
-      begin
-       # allocate the memory for backup data used in backupRead().
-       data = DL.malloc(DL.sizeof("L5"))
-       data.struct!("LLLLL", :id, :attrs, :size_low, :size_high, :name_size)
-
-       # allocate memories for references to long values used in backupRead().
-       context = DL.malloc(DL.sizeof("L"))
-       lval = DL.malloc(DL.sizeof("L"))
-
-       while( backupRead(h, data, data.size, lval, false, false, context) )
-         size = data[:size_low] + (data[:size_high] << (DL.sizeof("I") * 8))
-         case data[:id]
-         when BACKUP_ALTERNATE_DATA
-           stream_name = DL.malloc(data[:name_size])
-           backupRead(h, stream_name, stream_name.size,
-                      lval, false, false, context)
-           name = stream_name[0, stream_name.size]
-           name.tr!("\000","")
-           if( name =~ /^:(.*?):.*$/ )
-             status.push([$1,size])
-           end
-         when BACKUP_DATA
-           status.push([nil,size])
-         else
-           raise(RuntimeError, "unknown data type #{data[:id]}.")
-         end
-         l1 = DL.malloc(DL.sizeof("L"))
-         l2 = DL.malloc(DL.sizeof("L"))
-         if( !backupSeek(h, data[:size_low], data[:size_high], l1, l2, context) )
-           break
-         end
-       end
-      ensure
-       backupRead(h, nil, 0, lval, true, false, context)
-       closeHandle(h)
-      end
-      return status
-    else
-      raise(RuntimeError, "can't open #{filename}.\n")
-    end
-  end
-end
-
-ARGV.each{|filename|
-  if( File.exist?(filename) )
-    NTFS.streams(filename).each{|name,size|
-      if( name )
-       print("#{filename}:#{name}\t#{size}bytes\n")
-      else
-       print("#{filename}\t#{size}bytes\n")
-      end
-    }
-  end
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/README.rd b/ruby/doc/ruby/ruby-1.8.7/sample/drb/README.rd
deleted file mode 100644 (file)
index 5cf1f51..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-= Sample scripts
-
-* array and iteretor
-  * darray.rb --- server
-  * darrayc.rb --- client
-
-* simple chat
-  * dchats.rb --- server
-  * dchatc.rb --- client
-
-* distributed chasen (for Japanese)
-  * dhasen.rb --- server
-  * dhasenc.rb --- client
-
-* simple log server
-  * dlogd.rb --- server
-  * dlogc.rb --- client
-
-* Queue server, and DRbUnknown demo
-  * dqueue.rb --- server
-  * dqin.rb --- client. push DQEntry objects.
-  * dqout.rb --- client. pop DQEntry objects.
-  * dqlib.rb --- define DQEntry
-
-* IdConv customize demo: reference by name 
-  * name.rb --- server
-  * namec.rb --- client
-
-* extserv
-  * extserv_test.rb
-
-* IdConv customize demo 2: using TimerIdConv
-  * holders.rb --- server
-  * holderc.rb --- client
-
-* rinda, remote tuplespace
-  * rinda_ts.rb --- TupleSpace server.
-  * rindas.rb --- provide simple service via TupleSpace.
-  * rindac.rb --- service user
-
-* observer
-  cdbiff - ((<URI:http://namazu.org/~satoru/cdbiff/>))
-  * dbiff.rb --- dcdbiff server
-  * dcdbiff.rb --- dcdbiff client
-
-* drbssl
-  * drbssl_s.rb
-  * drbssl_c.rb
-  
-* add DRbProtocl
-  * http0.rb
-  * http0serv.rb
-
-* Rinda::Ring
-  * ring_place.rb
-  * ring_echo.rb
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/README.rd.ja b/ruby/doc/ruby/ruby-1.8.7/sample/drb/README.rd.ja
deleted file mode 100644 (file)
index 04143b9..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-= ¥µ¥ó¥×¥ë¥¹¥¯¥ê¥×¥È
-
-* Array¤ò¥ê¥â¡¼¥È¤«¤éÍøÍѤ·¤Æ¥¤¥Æ¥ì¡¼¥¿¤ò»î¤¹¡£
-  * darray.rb --- server
-  * darrayc.rb --- client
-
-* ´Ê°×¥Á¥ã¥Ã¥È
-  * dchats.rb --- server
-  * dchatc.rb --- client
-
-* Ê¬»¶chasen
-  * dhasen.rb --- server
-  * dhasenc.rb --- client
-
-* ´Ê°×¥í¥°¥µ¡¼¥Ð
-  * dlogd.rb --- server
-  * dlogc.rb --- client
-
-* Queue¥µ¡¼¥Ð¡£
-  ¥¯¥é¥¤¥¢¥ó¥Èdqin.rb¤ÏQueue¥µ¡¼¥Ð¤ÎÃΤé¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È(DQEntry)¤ò
-  push¤¹¤ë¤¬DRbUnknown¤Ë¤è¤ê¥¯¥é¥¤¥¢¥ó¥Èdqout.rb¤¬pop¤Ç¤­¤ë¡£
-  * dqueue.rb --- server
-  * dqin.rb --- client¡£DQEntry¥ª¥Ö¥¸¥§¥¯¥È¤òpush¤¹¤ë
-  * dqout.rb --- client¡£DQEntry¥ª¥Ö¥¸¥§¥¯¥È¤òpop¤¹¤ë
-  * dqlib.rb --- DQEntry¤òÄêµÁ¤·¤¿¥é¥¤¥Ö¥é¥ê
-
-* Ì¾Á°¤Ë¤è¤ë»²¾È
-  IdConv¤ò¥«¥¹¥¿¥Þ¥¤¥º¤·¤Æid¤Ç¤Ê¤¯Ì¾Á°¤Ç»²¾È¤¹¤ëÎã
-  * name.rb --- server
-  * namec.rb --- client
-
-* extserv¤Î¥µ¥ó¥×¥ë
-  * extserv_test.rb
-
-* TimerIdConv¤Î»ÈÍÑÎã
-  * holders.rb --- server¡£ruby -d hodlers.rb¤È¤¹¤ë¤ÈTimerIdConv¤ò»ÈÍѤ¹¤ë¡£
-  * holderc.rb --- client
-
-* rinda.rb¤Î»ÈÍÑÎã
-  * rinda_ts.rb --- TupleSpace¥µ¡¼¥Ð¡£
-  * rindac.rb --- TupleSpace¤Îclient¤Ç¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Îclient
-  * rindas.rb --- TupleSpace¤Îclient¤Ç¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Îserver
-
-* observer¤Î»ÈÍÑÎã
-  cdbiff - ((<URI:http://namazu.org/~satoru/cdbiff/>))
-  * dbiff.rb --- dcdbiff server
-  * dcdbiff.rb --- dcdbiff client
-
-* drbssl¤Î»ÈÍÑÎã
-  * drbssl_s.rb
-  * drbssl_c.rb
-
-* DRbProtocl¤ÎÄɲÃÎã
-  * http0.rb
-  * http0serv.rb
-
-* ring¤Î»ÈÍÑÎã
-  * ring_place.rb
-  * ring_echo.rb
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/darray.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/darray.rb
deleted file mode 100644 (file)
index 95ee01f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-=begin
- distributed Ruby --- Array
-       Copyright (c) 1999-2001 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-
-here = ARGV.shift
-DRb.start_service(here, [1, 2, "III", 4, "five", 6])
-puts DRb.uri
-DRb.thread.join
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/darrayc.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/darrayc.rb
deleted file mode 100644 (file)
index 6f5ff6b..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-=begin
- distributed Ruby --- Array client
-       Copyright (c) 1999-2001 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-
-there = ARGV.shift || raise("usage: #{$0} <server_uri>")
-
-DRb.start_service(nil, nil)
-ro = DRbObject.new(nil, there)
-p ro.size
-
-puts "# collect"
-a = ro.collect { |x|
-  x + x
-}
-p a
-
-puts "# find"
-p ro.find { |x| x.kind_of? String }
-  
-puts "# each, break"
-ro.each do |x|
-  next if x == "five"
-  puts x
-end
-
-puts "# each, break"
-ro.each do |x|
-  break if x == "five"
-  puts x
-end
-
-puts "# each, next"
-ro.each do |x|
-  next if x == "five"
-  puts x
-end
-
-puts "# each, redo"
-count = 0
-ro.each do |x|
-  count += 1
-  puts count
-  redo if count == 3
-end
-
-puts "# each, retry"
-retried = false
-ro.each do |x|
-  puts x
-  if x == 4 && !retried
-    puts 'retry'
-    retried = true
-    retry
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/dbiff.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/dbiff.rb
deleted file mode 100644 (file)
index 8faef50..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# dbiff.rb - distributed cdbiff (server)
-#  * original: cdbiff by Satoru Takabayashi <http://namazu.org/~satoru/cdbiff>
-
-require 'drb/drb'
-require 'drb/eq'
-require 'drb/observer'
-
-class Biff
-  include DRb::DRbObservable
-
-  def initialize(filename, interval)
-    super()
-    @filename = filename
-    @interval = interval
-  end
-
-  def run
-    last = Time.now
-    while true
-      begin 
-       sleep(@interval)
-       current = File::mtime(@filename)
-       if current > last
-         changed
-         begin
-           notify_observers(@filename, current) 
-         rescue Error
-         end
-         last = current
-       end
-      rescue
-       next
-      end
-    end
-  end
-end
-
-def main
-  filename = "/var/mail/#{ENV['USER']}"
-  interval = 15
-  uri = 'druby://:19903'
-
-  biff = Biff.new(filename, interval)
-
-  DRb.start_service(uri, biff)
-  biff.run
-end
-
-main
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/dcdbiff.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/dcdbiff.rb
deleted file mode 100644 (file)
index 6a24680..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-# dcdbiff.rb - distributed cdbiff (client)
-#  * original: cdbiff by Satoru Takabayashi <http://namazu.org/~satoru/cdbiff>
-
-require 'drb/drb'
-require 'drb/eq'
-
-class Notify
-  include DRbUndumped
-
-  def initialize(biff, command)
-    @biff = biff
-    @command = command
-
-    @biff.add_observer(self)
-  end
-
-  def update(filename, time)
-    p [filename, time] if $DEBUG
-    system(@command)
-  end
-
-  def done
-    begin
-      @biff.delete_observer(self)
-    rescue
-    end
-  end
-end
-
-def main
-  command = 'eject'
-  uri = 'druby://localhost:19903'
-
-  DRb.start_service
-  biff = DRbObject.new(nil, uri)
-  notify = Notify.new(biff, command)
-
-  trap("INT"){ notify.done }
-  DRb.thread.join
-end
-
-main
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/dchatc.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/dchatc.rb
deleted file mode 100644 (file)
index b506f5b..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-=begin
- distributed Ruby --- chat client
-       Copyright (c) 1999-2000 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-
-class ChatClient
-  include DRbUndumped  
-
-  def initialize(name)
-    @name = name
-    @key = nil
-  end
-  attr_reader(:name)
-  attr_accessor(:key)
-
-  def message(there, str)
-    raise 'invalid key' unless @key == there
-    puts str
-  end
-end
-
-if __FILE__ == $0
-  begin
-    there = ARGV.shift
-    name = ARGV.shift
-    raise "usage" unless (there and name)
-  rescue
-    $stderr.puts("usage: #{$0} <server_uri> <your_name>")
-    exit 1
-  end
-  DRb.start_service
-  ro = DRbObject.new(nil, there)
-
-  chat = ChatClient.new(name)
-  entry = ro.add_member(chat)
-  while gets
-    entry.say($_)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/dchats.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/dchats.rb
deleted file mode 100644 (file)
index 012dfee..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-=begin
- distributed Ruby --- chat server
-       Copyright (c) 1999-2000 Masatoshi SEKI 
-=end
-require 'thread'
-require 'drb/drb'
-
-class ChatEntry
-  include DRbUndumped
-
-  def initialize(server, there)
-    @server = server
-    @there = there
-    @name = there.name
-    @key = there.key = Time.now
-  end
-  attr :name, true
-  attr :there
-
-  def say(str)
-    @server.distribute(@there, str)
-  end
-
-  def listen(str)
-    @there.message(@key, str)
-  end
-end
-
-
-class ChatServer
-  def initialize
-    @mutex = Mutex.new
-    @members = {}
-  end
-
-  def add_member(there)
-    client = ChatEntry.new(self, there)
-    @mutex.synchronize do
-      @members[there] = client
-    end
-    client
-  end
-
-  def distribute(there, str)
-    name = @members[there].name
-    msg = "<#{name}> #{str}"
-    msg2 = ">#{name}< #{str}"
-    @mutex.synchronize do
-      for m in @members.keys
-       begin
-         if m == there
-           @members[m].listen(msg2)
-          else
-           @members[m].listen(msg)
-         end
-       rescue
-         p $!
-         @members.delete(m)
-       end
-      end
-    end
-  end
-end
-
-if __FILE__ == $0
-  here = ARGV.shift
-  DRb.start_service(here, ChatServer.new)
-  puts DRb.uri
-  DRb.thread.join
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/dhasen.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/dhasen.rb
deleted file mode 100644 (file)
index fb1724a..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-=begin
- distributed Ruby --- dRuby Sample Server --- chasen server
-       Copyright (c) 1999-2001 Masatoshi SEKI 
-=end
-
-=begin
- How to play.
-
- Terminal 1
- | % ruby dhasen.rb 
- | druby://yourhost:7640
-
- Terminal 2
- | % ruby dhasenc.rb druby://yourhost:7640
-
-=end
-
-require 'drb/drb'
-require 'chasen'
-require 'thread'
-
-class Dhasen
-  include DRbUndumped
-
-  def initialize
-    @mutex = Mutex.new
-  end
-
-  def sparse(str, *arg)
-    @mutex.synchronize do
-      Chasen.getopt(*arg)
-      Chasen.sparse(str)
-    end
-  end
-end
-
-if __FILE__ == $0
-  DRb.start_service(nil, Dhasen.new)
-  puts DRb.uri
-  DRb.thread.join
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/dhasenc.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/dhasenc.rb
deleted file mode 100644 (file)
index 8114e92..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-=begin
- distributed Ruby --- dRuby Sample Client -- chasen client
-       Copyright (c) 1999-2001 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-
-there = ARGV.shift || raise("usage: #{$0} <server_uri>")
-DRb.start_service
-dhasen = DRbObject.new(nil, there)
-
-print dhasen.sparse("ËÜÆü¤Ï¡¢À²Å·¤Ê¤ê¡£", "-F", '(%BB %m %M)\n', "-j")
-print dhasen.sparse("ËÜÆü¤Ï¡¢À²Å·¤Ê¤ê¡£", "-F", '(%m %M)\n')
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/dlogc.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/dlogc.rb
deleted file mode 100644 (file)
index c75bc7b..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-=begin
- distributed Ruby --- Log test
-       Copyright (c) 1999-2001 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-
-there = ARGV.shift || raise("usage: #{$0} <server_uri>")
-
-DRb.start_service
-ro = DRbObject.new(nil, there)
-ro.log(123)
-ro.log("hello")
-sleep 2
-ro.log("wakeup")
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/dlogd.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/dlogd.rb
deleted file mode 100644 (file)
index 9f9aa2f..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-=begin
- distributed Ruby --- Log server
-       Copyright (c) 1999-2000 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-require 'thread'
-
-class Logger
-  def initialize(fname)
-    @fname = fname.to_s
-    @fp = File.open(@fname, "a+")
-    @queue = Queue.new
-    @th = Thread.new { self.flush }
-  end
-
-  def log(str)
-    @queue.push("#{Time.now}\t" + str.to_s)
-  end
-
-  def flush
-    begin
-      while(1)
-       @fp.puts(@queue.pop)
-       @fp.flush
-      end
-    ensure
-      @fp.close
-    end
-  end
-end
-
-if __FILE__ == $0
-  here = ARGV.shift
-  DRb.start_service(here, Logger.new('/usr/tmp/dlogd.log'))
-  puts DRb.uri
-  DRb.thread.join
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/dqin.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/dqin.rb
deleted file mode 100644 (file)
index 3ba1caa..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-=begin
- distributed Ruby --- store
-       Copyright (c) 1999-2000 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-require 'dqlib'
-
-there = ARGV.shift || raise("usage: #{$0} <server_uri>")
-
-DRb.start_service
-queue = DRbObject.new(nil, there)
-queue.push(DQEntry.new(DRb.uri))
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/dqlib.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/dqlib.rb
deleted file mode 100644 (file)
index 75f2e61..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-class DQEntry
-  def initialize(name)
-    @name = name
-  end
-
-  def greeting
-    "Hello, This is #{@name}."
-  end
-  alias to_s greeting
-end
-
-if __FILE__ == $0
-  puts DQEntry.new('DQEntry')
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/dqout.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/dqout.rb
deleted file mode 100644 (file)
index 4700e55..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-=begin
- distributed Ruby --- fetch
-       Copyright (c) 1999-2000 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-require 'dqlib'
-
-there = ARGV.shift || raise("usage: #{$0} <server_uri>")
-
-DRb.start_service
-queue = DRbObject.new(nil, there)
-entry = queue.pop
-puts entry.greeting
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/dqueue.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/dqueue.rb
deleted file mode 100644 (file)
index a5a4365..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-=begin
- distributed Ruby --- Queue
-       Copyright (c) 1999-2000 Masatoshi SEKI 
-=end
-
-require 'thread'
-require 'drb/drb'
-
-DRb.start_service(nil, Queue.new)
-puts DRb.uri
-DRb.thread.join
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbc.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbc.rb
deleted file mode 100644 (file)
index 00132b4..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-=begin
- distributed Ruby --- dRuby Sample Client
-       Copyright (c) 1999-2000 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-
-class DRbEx2
-  include DRbUndumped
-
-  def initialize(n)
-    @n = n
-  end
-
-  def to_i
-    @n.to_i
-  end
-end
-
-if __FILE__ == $0
-  there = ARGV.shift
-  unless there
-    $stderr.puts("usage: #{$0} <server_uri>")
-    exit 1
-  end
-
-  DRb.start_service()
-  ro = DRbObject.new_with_uri(there)
-
-  puts ro
-  p ro.to_a
-  puts ro.hello
-  p ro.hello
-  puts ro.sample(DRbEx2.new(1), 2, 3)
-  puts ro.sample(1, ro.sample(DRbEx2.new(1), 2, 3), DRbEx2.new(3))
-
-  begin
-    ro.err
-  rescue DRb::DRbUnknownError
-    p $!
-    p $!.unknown
-  rescue RuntimeError
-    p $!
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbch.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbch.rb
deleted file mode 100644 (file)
index 495ff1c..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-=begin
- distributed Ruby --- dRuby Sample Client
-       Copyright (c) 1999-2000 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-require 'drb/http'
-
-class DRbEx2
-  include DRbUndumped
-
-  def initialize(n)
-    @n = n
-  end
-
-  def to_i
-    @n.to_i
-  end
-end
-
-if __FILE__ == $0
-  there = ARGV.shift
-  unless there
-    $stderr.puts("usage: #{$0} <server_uri>")
-    exit 1
-  end
-
-  DRb::DRbConn.proxy_map['x68k'] = 'http://x68k/~mas/http_cgi.rb'
-
-  DRb.start_service()
-  ro = DRbObject.new(nil, there)
-
-  puts ro
-  p ro.to_a
-  puts ro.hello
-  p ro.hello
-  puts ro.sample(DRbEx2.new(1), 2, 3)
-  puts ro.sample(1, ro.sample(DRbEx2.new(1), 2, 3), DRbEx2.new(3))
-
-  begin
-    ro.err
-  rescue DRb::DRbUnknownError
-    p $!
-    p $!.unknown
-  rescue RuntimeError
-    p $!
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbm.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbm.rb
deleted file mode 100644 (file)
index 74a15a4..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-=begin
- multiple DRbServer
-       Copyright (c) 1999-2002 Masatoshi SEKI 
-=end
-
-=begin
- How to play.
-
- Terminal 1
- | % ruby drbm.rb 
- | druby://yourhost:7640 druby://yourhost:7641
-
- Terminal 2
- | % ruby drbmc.rb druby://yourhost:7640 druby://yourhost:7641
- | [#<DRb::DRbObject .... @uri="druby://yourhost:7640">, "FOO"]
- | [#<DRb::DRbObject .... @uri="druby://yourhost:7641">, "FOO"]
-
-=end
-
-require 'drb/drb'
-
-class Hoge
-  include DRbUndumped
-  def initialize(s)
-    @str = s
-  end
-  
-  def to_s
-    @str
-  end
-end
-
-class Foo
-  def initialize(s='FOO')
-    @hoge = Hoge.new(s)
-  end
-
-  def hello
-    @hoge
-  end
-end
-
-class Bar < Foo
-  def initialize(foo)
-    @hoge = foo.hello
-  end
-end
-
-
-if __FILE__ == $0
-  foo = Foo.new
-  s1 = DRb::DRbServer.new('druby://:7640', foo)
-  s2 = DRb::DRbServer.new('druby://:7641', Bar.new(foo))
-
-  puts "#{s1.uri} #{s2.uri}"
-
-  s1.thread.join
-  s2.thread.join
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbmc.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbmc.rb
deleted file mode 100644 (file)
index c654fce..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-=begin
-  multiple DRbServer client
-       Copyright (c) 1999-2002 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-
-if __FILE__ == $0
-  s1 = ARGV.shift
-  s2 = ARGV.shift
-  unless s1 && s2
-    $stderr.puts("usage: #{$0} <server_uri1> <server_uri2>")
-    exit 1
-  end
-
-  DRb.start_service()
-  r1 = DRbObject.new(nil, s1)
-  r2 = DRbObject.new(nil, s2)
-
-  p [r1.hello, r1.hello.to_s]
-  p [r2.hello, r2.hello.to_s]
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbs-acl.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbs-acl.rb
deleted file mode 100644 (file)
index 151dd94..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-=begin
- distributed Ruby --- dRuby Sample Server
-       Copyright (c) 1999-2000 Masatoshi SEKI 
-=end
-
-=begin
- How to play.
-
- Terminal 1
- | % ruby drbs.rb 
- | druby://yourhost:7640
-
- Terminal 2
- | % ruby drbc.rb druby://yourhost:7640
- | "hello"
- | 6
- | 10
-
-=end
-
-require 'drb/drb'
-require 'acl'
-
-class DRbEx
-  def initialize
-    @hello = 'hello'
-  end
-
-  def hello
-    info = Thread.current['DRb']
-    p info['socket'].peeraddr if info
-    @hello
-  end
-
-  def sample(a, b, c)
-    a.to_i + b.to_i + c.to_i
-  end
-end
-
-if __FILE__ == $0
-  acl = ACL.new(%w(deny all
-                   allow 192.168.1.*
-                   allow localhost))
-  
-  DRb.install_acl(acl)
-
-  DRb.start_service(nil, DRbEx.new)
-  puts DRb.uri
-  DRb.thread.join
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbs.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbs.rb
deleted file mode 100644 (file)
index b76e283..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-=begin
- distributed Ruby --- dRuby Sample Server
-       Copyright (c) 1999-2000,2002 Masatoshi SEKI 
-=end
-
-=begin
- How to play.
-
- Terminal 1
- | % ruby drbs.rb 
- | druby://yourhost:7640
-
- Terminal 2
- | % ruby drbc.rb druby://yourhost:7640
- | "hello"
- | ....
-
-=end
-
-require 'drb/drb'
-
-class DRbEx
-  include DRbUndumped
-
-  def initialize
-    @hello = 'hello'
-  end
-
-  def hello
-    cntxt = Thread.current['DRb']
-    if cntxt
-      p cntxt['server'].uri
-      p cntxt['client'].peeraddr
-    end
-    Foo::Unknown.new
-  end
-
-  def err
-    raise FooError
-  end
-
-  def sample(a, b, c)
-    a.to_i + b.to_i + c.to_i
-  end
-end
-
-class Foo
-  class Unknown
-  end
-end
-
-class FooError < RuntimeError
-end
-
-if __FILE__ == $0
-  DRb.start_service(ARGV.shift || 'druby://:7640', DRbEx.new)
-  puts DRb.uri
-  Thread.new do
-    sleep 10
-    DRb.stop_service
-  end
-  DRb.thread.join
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbssl_c.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbssl_c.rb
deleted file mode 100644 (file)
index 65112f6..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'drb'
-require 'drb/ssl'
-
-there = ARGV.shift || "drbssl://localhost:3456"
-
-config = Hash.new
-config[:SSLVerifyMode] = OpenSSL::SSL::VERIFY_PEER
-config[:SSLVerifyCallback] = lambda{|ok,x509_store|
-  p [ok, x509_store.error_string]
-  true
-}
-
-DRb.start_service(nil,nil,config)
-h = DRbObject.new(nil, there)
-while line = gets
-  p h.hello(line.chomp)
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbssl_s.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/drbssl_s.rb
deleted file mode 100644 (file)
index 4d96f59..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'drb'
-require 'drb/ssl'
-
-here = ARGV.shift || "drbssl://localhost:3456"
-
-class HelloWorld
-  include DRbUndumped
-
-  def hello(name)
-    "Hello, #{name}."
-  end
-end
-
-config = Hash.new
-config[:verbose] = true
-begin
-  data = open("sample.key"){|io| io.read }
-  config[:SSLPrivateKey] = OpenSSL::PKey::RSA.new(data)
-  data = open("sample.crt"){|io| io.read }
-  config[:SSLCertificate] = OpenSSL::X509::Certificate.new(data)
-rescue
-  $stderr.puts "Switching to use self-signed certificate"
-  config[:SSLCertName] =
-    [ ["C","JP"], ["O","Foo.DRuby.Org"], ["CN", "Sample"] ]
-end
-
-DRb.start_service(here, HelloWorld.new, config)
-puts DRb.uri
-DRb.thread.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/extserv_test.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/extserv_test.rb
deleted file mode 100644 (file)
index 83d871a..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-=begin
- dRuby sample
-       Copyright (c) 2000 Masatoshi SEKI 
-
-= How to play
-
-* Terminal 1
-  
-  % ruby -I. extserv_test.rb server
-  druby://yourhost:12345
-
-* Terminal 2
-
-  % ruby -I. extserv_test.rb druby://yourhost:12345
-  ...
-
-=end
-
-require 'drb/drb'
-
-def ARGV.shift
-  it = super()
-  raise "usage:\nserver: #{$0} server [<uri>]\nclient: #{$0} [quit] <uri>" unless it
-  it
-end
-
-class Foo
-  include DRbUndumped
-  
-  def initialize(str)
-    @str = str
-  end
-  
-  def hello(it)
-    "#{it}: #{self}"
-  end
-
-  def to_s
-    @str
-  end
-end
-
-cmd = ARGV.shift
-case cmd
-when 'itest1', 'itest2'
-  require 'drb/extserv'
-
-  front = Foo.new(cmd)
-  server = DRb::DRbServer.new(nil, front)
-  es = DRb::ExtServ.new(ARGV.shift, ARGV.shift, server)
-  server.thread.join
-
-when 'server'
-  require 'drb/extservm'
-
-  DRb::ExtServManager.command['itest1'] = "ruby -I. #{$0} itest1"
-  DRb::ExtServManager.command['itest2'] = "ruby -I. #{$0} itest2"
-  
-  s = DRb::ExtServManager.new
-  DRb.start_service(ARGV.shift, s)
-  puts DRb.uri
-  DRb.thread.join
-
-
-else
-  uri = (cmd == 'quit') ? ARGV.shift : cmd
-
-  DRb.start_service
-  s = DRbObject.new(nil, uri)
-  t1 = s.service('itest1').front
-  puts t1
-  t2 = s.service('itest2').front
-  puts t2
-  puts t1.hello(t2)
-  if (cmd == 'quit') 
-    s.service('itest1').stop_service
-    s.service('itest2').stop_service
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/gw_ct.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/gw_ct.rb
deleted file mode 100644 (file)
index 0622784..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-require 'drb/drb'
-
-class Foo
-  include DRbUndumped
-
-  def foo(n)
-    n + n
-  end
-
-  def bar(n)
-    yield(n) + yield(n)
-  end
-end
-
-DRb.start_service(nil)
-puts DRb.uri
-
-ro = DRbObject.new(nil, ARGV.shift)
-ro[:tcp] = Foo.new
-gets
-
-it = ro[:unix]
-p [it, it.foo(1)]
-gets
-
-p it.bar('2') {|n| n * 3}
-gets
-
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/gw_cu.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/gw_cu.rb
deleted file mode 100644 (file)
index 0e5ed36..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-require 'drb/drb'
-require 'drb/unix'
-
-class Foo
-  include DRbUndumped
-
-  def foo(n)
-    n + n
-  end
-
-  def bar(n)
-    yield(n) + yield(n)
-  end
-end
-
-DRb.start_service('drubyunix:', nil)
-puts DRb.uri
-
-ro = DRbObject.new(nil, ARGV.shift)
-ro[:unix] = Foo.new
-gets
-
-it = ro[:tcp]
-p [it, it.foo(1)]
-gets
-
-p it.bar('2') {|n| n * 3}
-gets
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/gw_s.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/gw_s.rb
deleted file mode 100644 (file)
index c2bea0b..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-require 'drb/drb'
-require 'drb/unix'
-require 'drb/gw'
-
-DRb.install_id_conv(DRb::GWIdConv.new)
-gw = DRb::GW.new
-s1 = DRb::DRbServer.new(ARGV.shift, gw)
-s2 = DRb::DRbServer.new(ARGV.shift, gw)
-s1.thread.join
-s2.thread.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/holderc.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/holderc.rb
deleted file mode 100644 (file)
index 8dd72eb..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'drb/drb'
-
-begin
-  there = ARGV.shift || raise
-rescue
-  $stderr.puts("usage: #{$0} <server_uri>")
-  exit 1
-end
-
-DRb.start_service()
-ro = DRbObject.new(nil, there)
-
-ary = []
-10.times do 
-  ary.push(ro.gen)
-end
-
-sleep 5 if $DEBUG
-
-ary.each do |e|
-  p e.sample([1])
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/holders.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/holders.rb
deleted file mode 100644 (file)
index 2d9974f..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-=begin
-= How to play.
-
-==  with timeridconv:
-  % ruby -d holders.rb
-  druby://yourhost:1234
-
-  % ruby holderc.rb druby://yourhost:1234
-
-
-==  without timeridconv:
-  % ruby holders.rb
-  druby://yourhost:1234
-
-  % ruby holderc.rb druby://yourhost:1234
-=end
-  
-
-require 'drb/drb'
-
-class DRbEx3
-  include DRbUndumped
-
-  def initialize(n)
-    @v = n
-  end
-
-  def sample(list)
-    sum = 0
-    list.each do |e|
-      sum += e.to_i
-    end
-    @v * sum
-  end
-end
-
-class DRbEx4
-  include DRbUndumped
-  
-  def initialize
-    @curr = 1
-  end
-  
-  def gen
-    begin
-      @curr += 1
-      DRbEx3.new(@curr)
-    ensure
-      GC.start
-    end
-  end
-end
-
-if __FILE__ == $0
-  if $DEBUG
-    require 'drb/timeridconv'
-    DRb.install_id_conv(DRb::TimerIdConv.new(2))
-  end
-
-  DRb.start_service(nil, DRbEx4.new)
-  puts DRb.uri
-  DRb.thread.join
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/http0.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/http0.rb
deleted file mode 100644 (file)
index 7649925..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-require 'drb/drb'
-require 'net/http'
-require 'uri'
-
-module DRb
-  module HTTP0
-    class StrStream
-      def initialize(str='')
-       @buf = str
-      end
-      attr_reader :buf
-
-      def read(n)
-       begin
-         return @buf[0,n]
-       ensure
-         @buf[0,n] = ''
-       end
-      end
-
-      def write(s)
-       @buf.concat s
-      end
-    end
-
-    def self.uri_option(uri, config)
-      return uri, nil
-    end
-
-    def self.open(uri, config)
-      unless /^http:/ =~ uri
-       raise(DRbBadScheme, uri) unless uri =~ /^http:/
-       raise(DRbBadURI, 'can\'t parse uri:' + uri)
-      end
-      ClientSide.new(uri, config)
-    end
-
-    class ClientSide
-      def initialize(uri, config)
-       @uri = uri
-       @res = nil
-       @config = config
-       @msg = DRbMessage.new(config)
-       @proxy = ENV['HTTP_PROXY']
-      end
-
-      def close; end
-      def alive?; false; end
-      
-      def send_request(ref, msg_id, *arg, &b)
-       stream = StrStream.new
-       @msg.send_request(stream, ref, msg_id, *arg, &b)
-       @reply_stream = StrStream.new
-       post(@uri, stream.buf)
-      end
-      
-      def recv_reply
-       @msg.recv_reply(@reply_stream)
-      end
-
-      def post(url, data)
-       it = URI.parse(url)
-       path = [(it.path=='' ? '/' : it.path), it.query].compact.join('?')
-       http = Net::HTTP.new(it.host, it.port)
-       sio = StrStream.new
-       http.post(path, data, {'Content-Type'=>'application/octetstream;'}) do |str|
-         sio.write(str)
-         if @config[:load_limit] < sio.buf.size
-           raise TypeError, 'too large packet' 
-         end
-       end
-       @reply_stream = sio
-      end
-    end
-  end
-  DRbProtocol.add_protocol(HTTP0)
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/http0serv.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/http0serv.rb
deleted file mode 100644 (file)
index 100d126..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-require 'webrick'
-require 'drb/drb'
-require 'drb/http0'
-require 'thread'
-
-module DRb
-  module HTTP0
-    
-    def self.open_server(uri, config)
-      unless /^http:/ =~ uri
-       raise(DRbBadScheme, uri) unless uri =~ /^http:/
-       raise(DRbBadURI, 'can\'t parse uri:' + uri)
-      end
-      Server.new(uri, config)
-    end
-
-    class Callback < WEBrick::HTTPServlet::AbstractServlet
-      def initialize(config, drb)
-       @config = config
-       @drb = drb
-       @queue = Queue.new
-      end
-      
-      def do_POST(req, res)
-       @req = req
-       @res = res
-       @drb.push(self)
-       @res.body = @queue.pop
-       @res['content-type'] = 'application/octet-stream;'
-      end
-      
-      def req_body
-       @req.body
-      end
-
-      def reply(body)
-       @queue.push(body)
-      end
-      
-      def close
-       @queue.push('')
-      end
-    end
-
-    class Server
-      def initialize(uri, config)
-       @uri = uri
-       @config = config
-       @queue = Queue.new
-       setup_webrick(uri)
-      end
-      attr_reader :uri
-
-      def close
-       @server.shutdown if @server
-       @server = nil
-      end
-
-      def push(callback)
-       @queue.push(callback)
-      end
-
-      def accept
-       client = @queue.pop
-       ServerSide.new(client, @config)
-      end
-
-      def setup_webrick(uri)
-       logger = WEBrick::Log::new($stderr, WEBrick::Log::FATAL)
-       u = URI.parse(uri)
-       s = WEBrick::HTTPServer.new(:Port => u.port,
-                                   :AddressFamily => Socket::AF_INET,
-                                   :BindAddress => u.host,
-                                   :Logger => logger,
-                                   :ServerType => Thread)
-       s.mount(u.path, Callback, self)
-       @server = s
-       s.start
-      end
-    end
-    
-    class ServerSide
-      def initialize(callback, config)
-       @callback = callback
-       @config = config
-       @msg = DRbMessage.new(@config)
-       @req_stream = StrStream.new(@callback.req_body)
-      end
-      
-      def close
-       @callback.close if @callback
-       @callback = nil
-      end
-
-      def alive?; false; end
-
-      def recv_request
-       begin
-         @msg.recv_request(@req_stream)
-       rescue
-         close
-         raise $!
-       end
-      end
-
-      def send_reply(succ, result)
-       begin
-         return unless @callback
-         stream = StrStream.new
-         @msg.send_reply(stream, succ, result)
-         @callback.reply(stream.buf)
-       rescue
-         close
-         raise $!
-       end
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/name.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/name.rb
deleted file mode 100644 (file)
index 86b478f..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-=begin
- distributed Ruby --- NamedObject Sample
-       Copyright (c) 2000-2001 Masatoshi SEKI 
-=end
-
-=begin
-How to play.
-
-* start server 
- Terminal 1
- | % ruby name.rb druby://yourhost:7640
- | druby://yourhost:7640
- | [return] to exit
-
-* start client
- Terminal 2
- | % ruby namec.rb druby://yourhost:7640
- | #<DRb::DRbObject:0x40164174 @uri="druby://yourhost:7640", @ref="seq">
- | #<DRb::DRbObject:0x40163c9c @uri="druby://yourhost:7640", @ref="mutex">
- | 1
- | 2
- | [return] to continue
-
-* restart server
- Terminal 1
- type [return]
- | % ruby name.rb druby://yourhost:7640
- | druby://yourhost:7640
- | [return] to exit
-
-* continue client 
- Terminal 2
- type [return] 
- | 1
- | 2
-=end
-
-require 'thread.rb'
-require 'drb/drb'
-
-module DRbNamedObject
-  DRbNAMEDICT = {}
-  attr_reader(:drb_name)
-
-  def drb_name=(name)
-    @drb_name = name
-    Thread.exclusive do 
-      raise(IndexError, name) if DRbNAMEDICT[name]
-      DRbNAMEDICT[name] = self
-    end
-  end
-end
-
-class DRbNamedIdConv < DRb::DRbIdConv
-  def initialize
-    @dict = DRbNamedObject::DRbNAMEDICT
-  end
-
-  def to_obj(ref)
-    @dict.fetch(ref) do super end
-  end
-
-  def to_id(obj)
-    if obj.kind_of? DRbNamedObject
-      return obj.drb_name 
-    else
-      return super
-    end
-  end
-end
-
-class Seq
-  include DRbUndumped
-  include DRbNamedObject
-
-  def initialize(v, name)
-    @counter = v
-    @mutex = Mutex.new
-    self.drb_name = name
-  end
-
-  def next_value
-    @mutex.synchronize do
-      @counter += 1
-      return @counter
-    end
-  end
-end
-
-class Front
-  def initialize
-    seq = Seq.new(0, 'seq')
-    mutex = Mutex.new
-    mutex.extend(DRbUndumped)
-    mutex.extend(DRbNamedObject)
-    mutex.drb_name = 'mutex'
-    @name = {}
-    @name['seq'] = seq
-    @name['mutex'] = mutex
-  end
-    
-  def [](k)
-    @name[k]
-  end
-end
-
-if __FILE__ == $0
-  uri = ARGV.shift
-
-  name_conv = DRbNamedIdConv.new
-  
-  DRb.install_id_conv(name_conv)
-  DRb.start_service(uri, Front.new)
-  puts DRb.uri
-  DRb.thread.join
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/namec.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/namec.rb
deleted file mode 100644 (file)
index f6db6f3..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-=begin
- distributed Ruby --- NamedObject Sample Client
-       Copyright (c) 2000-2001 Masatoshi SEKI 
-=end
-
-require 'drb/drb'
-
-begin
-  there = ARGV.shift || raise
-rescue
-  puts "usage: #{$0} <server_uri>"
-  exit 1
-end
-
-DRb.start_service()
-ro = DRbObject.new(nil, there)
-
-seq = ro["seq"]
-mutex = ro["mutex"]
-
-p seq
-p mutex
-
-mutex.synchronize do
-  p seq.next_value
-  p seq.next_value
-end
-
-puts '[return] to continue'
-gets
-
-mutex.synchronize do
-  p seq.next_value
-  p seq.next_value
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/old_tuplespace.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/old_tuplespace.rb
deleted file mode 100644 (file)
index 3e13b92..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-#!/usr/local/bin/ruby
-# TupleSpace
-# Copyright (c) 1999-2000 Masatoshi SEKI
-# You can redistribute it and/or modify it under the same terms as Ruby.
-
-require 'thread'
-
-class TupleSpace
-  class Template
-    def initialize(list)
-      @list = list
-      @check_idx = []
-      @list.each_with_index do |x, i|
-       @check_idx.push i if x
-      end
-      @size = @list.size
-    end
-
-    attr :size
-    alias length size
-
-    def match(tuple)
-      return nil if tuple.size != self.size
-      @check_idx.each do |i|
-       unless @list[i] === tuple[i]
-         return false
-       end
-      end
-      return true
-    end
-  end
-
-  def initialize
-    @que = {}
-    @waiting = {}
-    @que.taint         # enable tainted comunication
-    @waiting.taint
-    self.taint
-  end
-
-  def wakeup_waiting(tuple)
-    sz = tuple.length
-    return nil unless @waiting[sz]
-
-    x = nil
-    i = -1
-    found = false
-    @waiting[sz] = @waiting[sz].find_all { |x|
-      if x[0].match(tuple)
-       begin
-         x[1].wakeup
-       rescue ThreadError
-       end
-       false
-      else
-       true
-      end
-    }
-  end
-
-  def put_waiting(template, thread)
-    sz = template.length
-    @waiting[sz] = [] unless @waiting[sz]
-    @waiting[sz].push([Template.new(template), thread])
-  end
-  private :wakeup_waiting
-  private :put_waiting
-
-  def get_que(template)
-    sz = template.length
-    return nil unless @que[sz]
-
-    template = Template.new(template)
-
-    x = nil
-    i = -1
-    found = false
-    @que[sz].each_with_index do |x, i|
-      if template.match(x)
-       found = true
-       break
-      end
-    end
-    return nil unless found
-    
-    @que[sz].delete_at(i)
-
-    return x
-  end
-
-  def put_que(tuple)
-    sz = tuple.length
-    @que[sz] = [] unless @que[sz]
-    @que[sz].push tuple
-  end
-  private :get_que
-  private :put_que
-
-  def out(*tuples)
-    tuples.each do |tuple|
-      Thread.critical = true
-      put_que(tuple)
-      wakeup_waiting(tuple)
-      Thread.critical = false
-    end
-  end
-  alias put out
-  alias write out
-
-  def in(template, non_block=false)
-    begin
-      loop do
-       Thread.critical = true
-       tuple = get_que(template)
-       unless tuple
-         if non_block
-           raise ThreadError, "queue empty"
-         end
-         put_waiting(template, Thread.current)
-         Thread.stop
-       else
-         return tuple
-       end
-      end
-    ensure
-      Thread.critical = false
-    end
-  end
-  alias get in
-  alias take in
-
-  def rd(template, non_block=false)
-    tuple = self.in(template, non_block)
-    out(tuple)
-    tuple
-  end
-  alias read rd
-
-  def mv(dest, template, non_block=false)
-    tuple = self.in(template, non_block)
-    begin
-      dest.out(tuple)
-    rescue
-      self.out(tuple)
-    end
-  end
-  alias move mv
-end
-
-if __FILE__ == $0
-  ts = TupleSpace.new
-  clients = []
-  servers = []
-
-  def server(ts, id)
-    Thread.start {
-      loop do
-       req = ts.in(['req', nil, nil])
-       ac = req[1]
-       num = req[2]
-       sleep id
-       ts.out([ac, id, num, num * num])
-      end
-    }
-  end
-
-  def client(ts, n)
-    Thread.start {
-      ac = Object.new
-      tuples = (1..10).collect { |i| 
-       ['req', ac, i * 10 + n]
-      }
-      ts.out(*tuples)
-      ts.out(tuples[0])
-      puts "out: #{n}"
-      11.times do |i|
-       ans = ts.in([ac, nil, nil, nil])
-       puts "client(#{n}) server(#{ans[1]}) #{ans[2]} #{ans[3]}"
-      end
-    }
-  end
-
-  def watcher(ts)
-    Thread.start {
-      loop do
-       begin
-         sleep 1
-         p ts.rd(['req', nil, nil], true)
-       rescue ThreadError
-         puts "'req' not found."
-       end
-      end
-    }
-  end
-
-  (0..3).each do |n|
-    servers.push(server(ts, n))
-  end
-
-  (1..6).each do |n|
-    clients.push(client(ts, n))
-  end
-
-  (1..3).each do 
-    watcher(ts)
-  end
-
-  clients.each do |t|
-    t.join
-  end
-end
-
-
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/rinda_ts.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/rinda_ts.rb
deleted file mode 100644 (file)
index 6f2fae5..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'drb/drb'
-require 'rinda/tuplespace'
-
-uri = ARGV.shift
-DRb.start_service(uri, Rinda::TupleSpace.new)
-puts DRb.uri
-DRb.thread.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/rindac.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/rindac.rb
deleted file mode 100644 (file)
index 72be09d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'drb/drb'
-require 'rinda/rinda'
-
-uri = ARGV.shift || raise("usage: #{$0} <server_uri>")
-
-DRb.start_service
-ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, uri))
-
-(1..10).each do |n|
-  ts.write(['sum', DRb.uri, n])
-end
-
-(1..10).each do |n|
-  ans = ts.take(['ans', DRb.uri, n, nil])
-  p [ans[2], ans[3]]
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/rindas.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/rindas.rb
deleted file mode 100644 (file)
index 9fd9ada..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-require 'drb/drb'
-require 'rinda/rinda'
-
-def do_it(v)
-  puts "do_it(#{v})"
-  v + v
-end
-
-uri = ARGV.shift || raise("usage: #{$0} <server_uri>")
-
-DRb.start_service
-ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, uri))
-
-while true
-  r = ts.take(['sum', nil, nil])
-  v = do_it(r[2])
-  ts.write(['ans', r[1], r[2], v])
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/ring_echo.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/ring_echo.rb
deleted file mode 100644 (file)
index 0633aa8..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'drb/drb'
-require 'drb/eq'
-require 'rinda/ring'
-require 'thread'
-
-class RingEcho
-  include DRbUndumped
-  def initialize(name)
-    @name = name
-  end
-  
-  def echo(str)
-    "#{@name}: #{str}"
-  end
-end
-
-DRb.start_service
-
-renewer = Rinda::SimpleRenewer.new
-
-finder = Rinda::RingFinger.new
-ts = finder.lookup_ring_any
-ts.read_all([:name, :RingEcho, nil, nil]).each do |tuple|
-  p tuple[2]
-  puts tuple[2].echo('Hello, World') rescue nil
-end
-ts.write([:name, :RingEcho, RingEcho.new(DRb.uri), ''], renewer)
-
-DRb.thread.join
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/ring_inspect.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/ring_inspect.rb
deleted file mode 100644 (file)
index c096cd7..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'rinda/ring'
-require 'drb/drb'
-
-class Inspector
-  def initialize
-  end
-
-  def primary
-    Rinda::RingFinger.primary
-  end
-
-  def list_place
-    Rinda::RingFinger.to_a
-  end
-
-  def list(idx = -1)
-    if idx < 0
-      ts = primary
-    else
-      ts = list_place[idx]
-      raise "RingNotFound" unless ts
-    end
-    ts.read_all([:name, nil, nil, nil])
-  end
-end
-
-def main
-  DRb.start_service
-  r = Inspector.new
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/ring_place.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/ring_place.rb
deleted file mode 100644 (file)
index 0ceef7c..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-require 'drb/drb'
-require 'rinda/ring'
-require 'rinda/tuplespace'
-
-unless $DEBUG
-  # Run as a daemon...
-  exit!( 0 ) if fork
-  Process.setsid
-  exit!( 0 ) if fork
-end
-
-DRb.start_service(ARGV.shift)
-
-ts = Rinda::TupleSpace.new
-place = Rinda::RingServer.new(ts)
-
-if $DEBUG
-  puts DRb.uri
-  DRb.thread.join
-else
-  STDIN.reopen('/dev/null')
-  STDOUT.reopen('/dev/null', 'w')
-  STDERR.reopen('/dev/null', 'w')
-  DRb.thread.join
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/simpletuple.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/simpletuple.rb
deleted file mode 100644 (file)
index 3ae9208..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/usr/local/bin/ruby
-# SimpleTupleSpace
-# Copyright (c) 1999-2000 Masatoshi SEKI
-# You can redistribute it and/or modify it under the same terms as Ruby.
-
-require 'thread'
-
-class SimpleTupleSpace
-  def initialize
-    @hash = {}
-    @waiting = {}
-    @hash.taint
-    @waiting.taint
-    self.taint
-  end
-   
-  def out(key, obj)
-    Thread.critical = true
-    @hash[key] ||= []
-    @waiting[key] ||= []
-    @hash[key].push obj
-    begin
-      t = @waiting[key].shift
-      @waiting.delete(key) if @waiting[key].length == 0
-      t.wakeup if t
-    rescue ThreadError
-      retry
-    ensure
-      Thread.critical = false
-    end
-  end
-
-  def in(key)
-    Thread.critical = true
-    @hash[key] ||= []
-    @waiting[key] ||= []
-    begin
-      loop do
-        if @hash[key].length == 0
-          @waiting[key].push Thread.current
-          Thread.stop
-        else
-          return @hash[key].shift
-        end
-      end
-    ensure
-      @hash.delete(key) if @hash[key].length == 0
-      Thread.critical = false
-    end
-  end
-end  
-
-if __FILE__ == $0
-  ts = SimpleTupleSpace.new
-  clients = []
-  servers = []
-
-  def server(ts)
-    Thread.start {
-      loop do
-       req = ts.in('req')
-       ac = req[0]
-       num = req[1]
-       ts.out(ac, num * num)
-      end
-    }
-  end
-
-  def client(ts, n)
-    Thread.start {
-      ac = Object.new
-      ts.out('req', [ac, n])
-      ans = ts.in(ac)
-      puts "#{n}: #{ans}"
-    }
-  end
-
-  3.times do 
-    servers.push(server(ts))
-  end
-
-  (1..6).each do |n|
-    clients.push(client(ts, n))
-  end
-
-  clients.each do |t|
-    t.join
-  end
-end
-
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/speedc.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/speedc.rb
deleted file mode 100644 (file)
index 14d526d..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/local/bin/ruby
-
-uri = ARGV.shift || raise("usage: #{$0} URI")
-N = (ARGV.shift || 100).to_i
-
-case uri
-when /^tcpromp:/, /^unixromp:/
-  require 'romp'
-
-  client = ROMP::Client.new(uri, false)
-  foo = client.resolve("foo")
-when /^druby:/
-  require 'drb/drb'
-  
-  DRb.start_service
-  foo = DRbObject.new(nil, uri)
-end
-
-N.times do |n|
-  foo.foo(n)
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/drb/speeds.rb b/ruby/doc/ruby/ruby-1.8.7/sample/drb/speeds.rb
deleted file mode 100644 (file)
index 76b4b29..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-class Foo
-  attr_reader :i
-  def initialize
-    @i = 0
-  end
-  
-  def foo(i)
-    @i = i
-    i + i
-  end
-end
-
-# server = ROMP::Server.new('tcpromp://localhost:4242', nil, true)
-
-uri = ARGV.shift || raise("usage: #{$0} URI")
-foo = Foo.new
-
-case uri
-when /^tcpromp:/, /^unixromp:/
-  require 'romp'
-
-  server = ROMP::Server.new(uri, nil, true)
-  server.bind(foo, "foo")
-
-when /^druby:/
-  require 'drb/drb'
-  
-  DRb.start_service(uri, Foo.new)
-end
-
-DRb.thread.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/dualstack-fetch.rb b/ruby/doc/ruby/ruby-1.8.7/sample/dualstack-fetch.rb
deleted file mode 100644 (file)
index 1897a3d..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-# simple webpage fetcher
-
-# The code demonstrates how a multi-protocol client should be written.
-# TCPSocket is using getaddrinfo() internally, so there should be no problem.
-
-require "socket"
-
-if ARGV.size != 1
-  STDERR.print "requires URL\n"
-  exit
-end
-
-url = ARGV[0]
-if url !~ /^http:\/\/([^\/]+)(\/.*)$/
-  STDERR.print "only http with full hostname is supported\n"
-  exit
-end
-
-# split URL into host, port and path
-hostport = $1
-path = $2
-if (hostport =~ /^(.*):([0-9]+)$/)
-  host = $1
-  port = $2
-else
-  host = hostport
-  port = 80
-end
-if host =~ /^\[(.*)\]$/
-  host = $1
-end
-
-#STDERR.print "url=<#{ARGV[0]}>\n"
-#STDERR.print "host=<#{host}>\n"
-#STDERR.print "port=<#{port}>\n"
-#STDERR.print "path=<#{path}>\n"
-
-STDERR.print "conntecting to #{host} port #{port}\n"
-c = TCPSocket.new(host, port)
-dest = Socket.getnameinfo(c.getpeername,
-               Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV)
-STDERR.print "conntected to #{dest[0]} port #{dest[1]}\n"
-c.print "GET #{path} HTTP/1.0\n"
-c.print "Host: #{host}\n"
-c.print "\n"
-while c.gets
-  print
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/dualstack-httpd.rb b/ruby/doc/ruby/ruby-1.8.7/sample/dualstack-httpd.rb
deleted file mode 100644 (file)
index 69e3181..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-# simple httpd
-
-# The code demonstrates how a multi-protocol daemon should be written.
-
-require "socket"
-require "thread"
-
-port = 8888
-res = Socket.getaddrinfo(nil, port, nil, Socket::SOCK_STREAM, nil, Socket::AI_PASSIVE)
-sockpool = []
-names = []
-threads = []
-
-res.each do |i|
-  s = TCPserver.new(i[3], i[1])
-  n = Socket.getnameinfo(s.getsockname, Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV).join(" port ")
-  sockpool.push s
-  names.push n
-end
-
-(0 .. sockpool.size - 1).each do |i|
-  mysock = sockpool[i]
-  myname = names[i]
-  STDERR.print "socket #{mysock} started, address #{myname}\n"
-  threads[i] = Thread.start do         # Thread.start cannot be used here!
-    ls = mysock        # copy to dynamic variable
-    t = Thread.current
-    STDERR.print "socket #{myname} listener started, pid #{$$} thread #{t}\n"
-    while true
-      as = ls.accept
-      Thread.start do
-       STDERR.print "socket #{myname} accepted, thread ", Thread.current, "\n"
-       s = as  # copy to dynamic variable
-       str = ''
-       while line = s.gets
-         break if line == "\r\n" or line == "\n"
-         str << line
-       end
-       STDERR.print "socket #{myname} got string\n"
-       s.write("HTTP/1.0 200 OK\n")
-       s.write("Content-type: text/plain\n\n")
-       s.write("this is test: my name is #{myname}, you sent:\n")
-       s.write("---start\n")
-       s.write(str)
-       s.write("---end\n")
-       s.close
-       STDERR.print "socket #{myname} processed, thread ", Thread.current, " terminating\n"
-      end
-    end
-  end
-end
-
-for t in threads
-  t.join
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/erb/erb4html.rb b/ruby/doc/ruby/ruby-1.8.7/sample/erb/erb4html.rb
deleted file mode 100644 (file)
index df0ffae..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-require 'erb'
-
-class ERB
-  class ERBString < String
-    def to_s; self; end
-
-    def erb_concat(s)
-      if self.class === s
-        concat(s)
-      else
-        concat(erb_quote(s))
-      end
-    end
-
-    def erb_quote(s); s; end
-  end
-end
-
-class ERB4Html < ERB
-  def self.quoted(s)
-    HtmlString.new(s)
-  end
-
-  class HtmlString < ERB::ERBString
-    def erb_quote(s)
-      ERB::Util::html_escape(s)
-    end
-  end
-
-  def set_eoutvar(compiler, eoutvar = '_erbout')
-    compiler.put_cmd = "#{eoutvar}.concat"
-    compiler.insert_cmd = "#{eoutvar}.erb_concat"
-
-    cmd = []
-    cmd.push "#{eoutvar} = ERB4Html.quoted('')"
-
-    compiler.pre_cmd = cmd
-
-    cmd = []
-    cmd.push(eoutvar)
-
-    compiler.post_cmd = cmd
-  end
-end
-
-if __FILE__ == $0
-  page = <<EOP
-<title><%=title%></title>
-<p><%=para%></p>
-EOP
-  erb = ERB4Html.new(page)
-
-  title = "<auto-quote>"
-  para = "&lt;quoted&gt;"
-  puts erb.result
-
-  title = "<auto-quote>"
-  para = ERB4Html.quoted("&lt;quoted&gt;")
-  puts erb.result
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/eval.rb b/ruby/doc/ruby/ruby-1.8.7/sample/eval.rb
deleted file mode 100644 (file)
index ed4b7c3..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-line = ''
-indent = 0
-$stdout.sync = true
-print "ruby> "
-loop do
-  l = gets
-  if l.nil?
-    break if line.empty?
-  else
-    line += l
-    if l =~ /,\s*$/
-      print "ruby| "
-      next
-    end
-    if l =~ /^\s*(class|module|def|if|unless|case|while|until|for|begin)\b[^_]/
-      indent += 1
-    end
-    if l =~ /^\s*end\b[^_]/
-      indent -= 1
-    end
-    if l =~ /\{\s*(\|.*\|)?\s*$/
-      indent += 1
-    end
-    if l =~ /^\s*\}/
-      indent -= 1
-    end
-    if indent > 0
-      print "ruby| "
-      next
-    end
-  end
-  begin
-    print eval(line).inspect, "\n"
-  rescue ScriptError, StandardError
-    printf "ERR: %s\n", $! || 'exception raised'
-  end
-  break if l.nil?
-  line = ''
-  print "ruby> "
-end
-print "\n"
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/export.rb b/ruby/doc/ruby/ruby-1.8.7/sample/export.rb
deleted file mode 100644 (file)
index 949e5b1..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-# method access permission
-# output:
-#      foobar
-#      Foo
-
-class Foo
-  public :printf
-  def baz
-    print "baz\n"
-  end
-  private :baz
-
-  def quux
-    print "in QUUX "
-    baz()
-  end
-end
-
-def foobar
-  print "foobar\n"
-end
-
-f = Foo.new
-#Foo.private :printf
-class Foo                      # redefines foobar's scope
-  public :foobar
-end
-f.foobar
-f.printf "%s\n", Foo
-
-f.quux
-
-class Bar<Foo
-  def quux
-    super
-    baz()
-  end
-end
-
-Bar.new.quux
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/exyacc.rb b/ruby/doc/ruby/ruby-1.8.7/sample/exyacc.rb
deleted file mode 100644 (file)
index 5818825..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#! /usr/local/bin/ruby -Kn
-# usage: exyacc.rb [yaccfiles]
-# this is coverted from exyacc.pl in the camel book
-
-$/ = nil
-
-while gets()
-  sbeg = $_.index("\n%%") + 1
-  send = $_.rindex("\n%%") + 1
-  $_ = $_[sbeg, send-sbeg]
-  sub!(/.*\n/, "")
-  gsub!(/'\{'/, "'\001'")
-  gsub!(/'\}'/, "'\002'")
-  gsub!(%r{\*/}, "\003\003")
-  gsub!(%r{/\*[^\003]*\003\003}, '')
-  while gsub!(/\{[^{}]*\}/, ''); end
-  gsub!(/'\001'/, "'{'")
-  gsub!(/'\002'/, "'}'")
-  while gsub!(/^[ \t]*\n(\s)/, '\1'); end
-  gsub!(/([:|])[ \t\n]+(\w)/, '\1 \2')
-  print $_
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/fact.rb b/ruby/doc/ruby/ruby-1.8.7/sample/fact.rb
deleted file mode 100644 (file)
index d8147a4..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-def fact(n)
-  return 1 if n == 0
-  f = 1
-  n.downto(1) do |i|
-    f *= i
-  end
-  return f
-end
-print fact(ARGV[0].to_i), "\n"
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/fib.awk b/ruby/doc/ruby/ruby-1.8.7/sample/fib.awk
deleted file mode 100644 (file)
index 7ebe893..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-   function fib(n) {
-       if ( n<2 ) return n; else return fib(n-2) + fib(n-1)
-   }
-
-   BEGIN { print fib(20); }
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/fib.pl b/ruby/doc/ruby/ruby-1.8.7/sample/fib.pl
deleted file mode 100644 (file)
index 945a492..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-sub fib {
-    my($n)=@_;
-    if ($n<2) {
-       return $n;
-    }
-    else {
-       return fib($n-2)+fib($n-1);
-    }
-}
-
-print fib(20), "\n";
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/fib.py b/ruby/doc/ruby/ruby-1.8.7/sample/fib.py
deleted file mode 100644 (file)
index 8318021..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# calculate Fibonacci(20)
-# for benchmark
-def fib(n):
-  if n<2:
-    return n
-  else:
-    return fib(n-2)+fib(n-1)
-
-print fib(20)
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/fib.rb b/ruby/doc/ruby/ruby-1.8.7/sample/fib.rb
deleted file mode 100644 (file)
index cde4fba..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# calculate Fibonacci(20)
-# for benchmark
-def fib(n)
-  if n<2
-    n
-  else
-    fib(n-2)+fib(n-1)
-  end
-end
-print(fib(20), "\n");
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/fib.scm b/ruby/doc/ruby/ruby-1.8.7/sample/fib.scm
deleted file mode 100644 (file)
index b246ca5..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-(define (fib n)
-  (if (< n 2)
-      n
-      (+ (fib (- n 2)) (fib (- n 1)))))
-
-(display (fib 20))
-(newline)
-(quit)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/freq.rb b/ruby/doc/ruby/ruby-1.8.7/sample/freq.rb
deleted file mode 100644 (file)
index 362753f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# word occurrence listing
-# usege: ruby freq.rb file..
-freq = Hash.new(0)
-while line = gets()
-  line.scan(/\w+/) do |word|
-    freq[word] += 1
-  end
-end
-
-for word in freq.keys.sort!
-  print word, " -- ", freq[word], "\n"
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/from.rb b/ruby/doc/ruby/ruby-1.8.7/sample/from.rb
deleted file mode 100644 (file)
index 6b0c702..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-#! /usr/local/bin/ruby
-
-require "parsedate"
-require "kconv"
-require "mailread"
-
-include ParseDate
-include Kconv
-
-class String
-
-  def kconv(code = Kconv::EUC)
-    Kconv.kconv(self, code, Kconv::AUTO)
-  end
-
-  def kjust(len)
-    len += 1
-    me = self[0, len].ljust(len)
-    if me =~ /.$/ and $&.size == 2
-      me[-2..-1] = '  '
-      me[-2, 2] = '  '
-    end
-    me.chop!
-  end
-
-end
-
-if ARGV[0] == '-w'
-  wait = true
-  ARGV.shift
-end
-
-if ARGV.length == 0
-  file = ENV['MAIL']
-  user = ENV['USER'] || ENV['USERNAME'] || ENV['LOGNAME'] 
-else
-  file = user = ARGV[0]
-  ARGV.clear
-end
-
-if file == nil or !File.exist? file
-  [ENV['SPOOLDIR'], '/usr/spool', '/var/spool', '/usr', '/var'].each do |m|
-    if File.exist? f = "#{m}/mail/#{user}"
-      file = f
-      break 
-    end
-  end
-end
-
-$outcount = 0;
-def fromout(date, from, subj)
-  return if !date
-  y, m, d = parsedate(date) if date
-  y ||= 0; m ||= 0; d ||= 0
-  if from
-    from.gsub! /\n/, ""
-  else
-    from = "sombody@somewhere"
-  end
-  if subj
-    subj.gsub! /\n/, ""
-  else
-    subj = "(nil)"
-  end
-  if ENV['LANG'] =~ /sjis/i
-    lang = Kconv::SJIS
-  else
-    lang = Kconv::EUC
-  end
-  from = from.kconv(lang).kjust(28)
-  subj = subj.kconv(lang).kjust(40)
-  printf "%02d/%02d/%02d [%s] %s\n",y%100,m,d,from,subj
-  $outcount += 1
-end
-
-if File.exist?(file)
-  atime = File.atime(file)
-  mtime = File.mtime(file)
-  f = open(file, "r")
-  begin
-    until f.eof?
-      mail = Mail.new(f)
-      fromout mail.header['Date'],mail.header['From'],mail.header['Subject']
-    end
-  ensure
-    f.close
-    File.utime(atime, mtime, file)
-  end
-end
-
-if $outcount == 0
-  print "You have no mail.\n"
-  sleep 2 if wait
-elsif wait
-  system "stty cbreak -echo"
-  getc()
-  system "stty cooked echo"
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/fullpath.rb b/ruby/doc/ruby/ruby-1.8.7/sample/fullpath.rb
deleted file mode 100644 (file)
index 8472e5d..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#! /usr/local/bin/ruby
-# convert ls-lR filename into fullpath.
-
-if ARGV[0] =~ /-p/
-  ARGV.shift
-  path = ARGV.shift 
-end
-
-if path == nil
-  path = ""
-elsif path !~ %r|/$|
-  path += "/"
-end
-
-while line = gets()
-  case line
-  when /:$/
-    path = line.chop.chop + "/"
-  when /^total/, /^d/
-  when /^(.*\d )(.+)$/
-    print($1, path, $2, "\n")
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/getopts.test b/ruby/doc/ruby/ruby-1.8.7/sample/getopts.test
deleted file mode 100644 (file)
index 2866bcc..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#! /usr/local/bin/ruby
-
-load("parsearg.rb")
-
-def usage()
-  printf "Usage:\n"
-  printf "%s -d [-x x] [-y y] [--geometry geom] [--version] [string ...]\n", $0
-end
-
-$USAGE = 'usage'
-parseArgs(0, "d&(x|y)", "dfg", "x:", "y:", "geometry:800x600", "version")
-if ($OPT_d)
-  if $OPT_version
-    printf "version 1.0\n"
-  end
-  if ($OPT_x)
-    printf("x = %d\n", $OPT_x.to_i)
-  end
-  if ($OPT_y)
-    printf("y = %d\n", $OPT_y.to_i)
-  end
-  if ($OPT_geometry)
-    printf("geometry = %s\n", $OPT_geometry)
-  end
-  if $OPT_f
-    printf "f = TRUE\n"
-  end
-  if $OPT_g
-    printf "g = TRUE\n"
-  end
-end
-
-while (ARGV.length != 0)
-  print "other = ", ARGV[0], "\n"
-  ARGV.shift
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/less.rb b/ruby/doc/ruby/ruby-1.8.7/sample/less.rb
deleted file mode 100644 (file)
index 8be3591..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#! /usr/local/bin/ruby
-
-ZCAT = "/usr/local/bin/zcat"
-LESS = "/usr/local/bin/less"
-
-FILE = ARGV.pop
-OPTION = (if ARGV.length == 0; "" else ARGV.join(" "); end)
-
-if FILE =~ /\.(Z|gz)$/
-  exec(format("%s %s | %s %s", ZCAT, FILE, LESS, OPTION))
-elsif FILE == nil
-  exec(format("%s %s", LESS, OPTION))
-else
-  print(format("%s %s %s", LESS, OPTION, FILE), "\n")
-  exec(format("%s %s %s", LESS, OPTION, FILE))
-end
-exit()
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/list.rb b/ruby/doc/ruby/ruby-1.8.7/sample/list.rb
deleted file mode 100644 (file)
index 221f7ed..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-# Linked list example
-class MyElem
-  # object initializer called from Class#new
-  def initialize(item)
-    # @variables are instance variable, no declaration needed
-    @data = item
-    @succ = nil
-  end
-
-  def data
-    @data
-  end
-
-  def succ
-    @succ
-  end
-
-  # the method invoked by ``obj.data = val''
-  def succ=(new)
-    @succ = new
-  end
-end
-
-class MyList
-  def add_to_list(obj)
-    elt = MyElem.new(obj)
-    if @head
-      @tail.succ = elt
-    else
-      @head = elt
-    end
-    @tail = elt
-  end
-
-  def each
-    elt = @head
-    while elt
-      yield elt
-      elt = elt.succ
-    end
-  end
-
-  # the method to convert object into string.
-  # redefining this will affect print.
-  def to_s
-    str = "<MyList:\n";
-    for elt in self
-      # short form of ``str = str + elt.data.to_s + "\n"''
-      str += elt.data.to_s + "\n"
-    end
-    str += ">"
-    str
-  end
-end
-
-class Point
-  def initialize(x, y)
-    @x = x; @y = y
-    self
-  end
-
-  def to_s
-    sprintf("%d@%d", @x, @y)
-  end
-end
-
-# global variable name starts with `$'.
-$list1 = MyList.new
-$list1.add_to_list(10)
-$list1.add_to_list(20)
-$list1.add_to_list(Point.new(2, 3))
-$list1.add_to_list(Point.new(4, 5))
-$list2 = MyList.new
-$list2.add_to_list(20)
-$list2.add_to_list(Point.new(4, 5))
-$list2.add_to_list($list1)
-
-# parenthesises around method arguments can be ommitted unless ambiguous.
-print "list1:\n", $list1, "\n"
-print "list2:\n", $list2, "\n"
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/list2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/list2.rb
deleted file mode 100644 (file)
index 914cb89..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# Linked list example -- short version
-class Point
-  def initialize(x, y)
-    @x = x; @y = y
-    self
-  end
-
-  def to_s
-    sprintf("%d@%d", @x, @y)
-  end
-end
-    
-list1 = [10, 20, Point.new(2, 3), Point.new(4, 5)]
-list2 = [20, Point.new(4, 5), list1]
-print("list1:\n", list1.join("\n"), "\n")
-print("list2:\n", list2.join("\n"), "\n")
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/list3.rb b/ruby/doc/ruby/ruby-1.8.7/sample/list3.rb
deleted file mode 100644 (file)
index 1d756fd..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# Linked list example -- short version
-# using inspect
-
-class Point
-  def initialize(x, y)
-    @x = x; @y = y
-    self
-  end
-
-  def to_s
-    sprintf("%d@%d", @x, @y)
-  end
-end
-    
-list1 = [10, 20, Point.new(2, 3), Point.new(4, 5)]
-list2 = [20, Point.new(4, 5), list1]
-print("list1: ", list1.inspect, "\n")
-print("list2: ", list2.inspect, "\n")
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/logger/app.rb b/ruby/doc/ruby/ruby-1.8.7/sample/logger/app.rb
deleted file mode 100644 (file)
index 924bcba..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'logger'
-
-class MyApp < Logger::Application
-  def initialize(a, b, c)
-    super('MyApp')
-
-    # Set logDevice here.
-    logfile = 'app.log'
-    self.log = logfile
-    self.level = INFO
-
-    # Initialize your application...
-    @a = a
-    @b = b
-    @c = c
-  end
-
-  def run
-    @log.info  { 'Started.' }
-
-    @log.info  { "This block isn't evaled because 'debug' is not severe here." }
-    @log.debug { "Result = " << foo(0) }
-    @log.info  { "So nothing is dumped." }
-
-    @log.info  { "This block is evaled because 'info' is enough severe here." }
-    @log.info  { "Result = " << foo(0) }
-    @log.info  { "Above causes exception, so not reached here." }
-
-    @log.info  { 'Finished.' }
-  end
-
-private
-
-  def foo(var)
-    1 / var
-  end
-end
-
-status = MyApp.new(1, 2, 3).start
-
-if status != 0
-  puts 'Some error(s) occured.'
-  puts 'See "app.log".'
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/logger/log.rb b/ruby/doc/ruby/ruby-1.8.7/sample/logger/log.rb
deleted file mode 100644 (file)
index aab80e4..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'logger'
-
-log = Logger.new(STDERR)
-
-def do_log(log)
-  log.debug('do_log1') { "debug" }
-  log.info('do_log2') { "info" }
-  log.warn('do_log3') { "warn" }
-  log.error('do_log4') { "error" }
-  log.fatal('do_log6') { "fatal" }
-  log.unknown('do_log7') { "unknown" }
-end
-
-log.level = Logger::DEBUG      # Default.
-do_log(log)
-
-puts "Set severity threshold 'WARN'."
-
-log.level = Logger::WARN
-do_log(log)
-
-puts "Change datetime format.  Thanks to Daniel Berger."
-
-log.datetime_format = "%d-%b-%Y@%H:%M:%S"
-do_log(log)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/logger/shifting.rb b/ruby/doc/ruby/ruby-1.8.7/sample/logger/shifting.rb
deleted file mode 100644 (file)
index bd8852a..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'logger'
-
-logfile = 'shifting.log'
-# Max 3 age ... logShifting.log, logShifting.log.0, and logShifting.log.1
-shift_age = 3
-# Shift log file about for each 1024 bytes.
-shift_size = 1024
-
-log = Logger.new(logfile, shift_age, shift_size)
-
-def do_log(log)
-  log.debug('do_log1') { 'd' * rand(100) }
-  log.info('do_log2') { 'i' * rand(100) }
-  log.warn('do_log3') { 'w' * rand(100) }
-  log.error('do_log4') { 'e' * rand(100) }
-  log.fatal('do_log5') { 'f' * rand(100) }
-  log.unknown('do_log6') { 'u' * rand(100) }
-end
-
-(1..10).each do
-  do_log(log)
-end
-
-puts 'See shifting.log and shifting.log.[01].'
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/mine.rb b/ruby/doc/ruby/ruby-1.8.7/sample/mine.rb
deleted file mode 100644 (file)
index 8fc27e0..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-#! /usr/bin/ruby -Ke
-
-class Board
-  def clr
-    print "\e[2J"
-  end
-  def pos(x,y)
-    printf "\e[%d;%dH", y+1, x*2+1
-  end
-  def colorstr(id,s)
-    printf "\e[%dm%s\e[0m", id, s
-  end
-  def put(x, y, col, str)
-    pos(x,y); colorstr(43,str)
-    pos(0,@hi); print "»Ä¤ê:",@mc,"/",@total,"   "
-    pos(x,y)
-  end
-  private :clr, :pos, :colorstr, :put
-  CHR=["¡¦","£±","£²","£³","£´","£µ","£¶","£·","£¸","¡ú","¡ü","@@"]
-  COL=[46,43,45] # default,opened,over
-  def initialize(h,w,m)
-    # ¥²¡¼¥àÈפÎÀ¸À®(h:½Ä¡¤w:²£¡¤m:ÇúÃƤοô)
-    @hi=h; @wi=w; @m=m
-    reset
-  end
-  def reset
-    # ¥²¡¼¥àÈפò(ºÆ)½é´ü²½¤¹¤ë
-    srand()
-    @cx=0; @cy=0; @mc=@m
-    @over=false
-    @data=Array.new(@hi*@wi)
-    @state=Array.new(@hi*@wi)
-    @total=@hi*@wi
-    @total.times {|i| @data[i]=0}
-    @m.times do
-       loop do
-         j=rand(@total-1)
-         if @data[j] == 0 then
-           @data[j]=1
-           break
-         end
-       end
-    end
-    clr; pos(0,0)
-    @hi.times{|y| pos(0,y); colorstr(COL[0],CHR[0]*@wi)}
-    pos(@cx,@cy)
-  end
-  def mark
-    # ¸½ºß¤Î¥«¡¼¥½¥ë°ÌÃ֤˥ޡ¼¥¯¤ò¤Ä¤±¤ë
-    if @state[@wi*@cy+@cx] != nil then return end
-    @state[@wi*@cy+@cx] = "MARK"
-    @mc=@mc-1;
-    @total=@total-1;
-    put(@cx, @cy, COL[1], CHR[9])
-  end
-  def open(x=@cx,y=@cy)
-    # ¸½ºß¤Î¥«¡¼¥½¥ë°ÌÃÖ¤ò¥ª¡¼¥×¥ó¤Ë¤¹¤ë
-    # ÇúÃƤ¬¤¢¤ì¤Ð¥²¡¼¥à¥ª¡¼¥Ð¡¼
-    if @state[@wi*y+x] =="OPEN"  then return 0 end
-    if @state[@wi*y+x] == nil then @total=@total-1 end
-    if @state[@wi*y+x] =="MARK" then @mc=@mc+1 end
-    @state[@wi*y+x]="OPEN"
-    if fetch(x,y) == 1 then @over = 1; return end
-    c = count(x,y)
-    put(x, y, COL[1], CHR[c])
-    return 0 if c != 0
-    if x > 0 && y > 0         then open(x-1,y-1) end
-    if y > 0                  then open(x,  y-1) end
-    if x < @wi-1 && y > 0     then open(x+1,y-1) end
-    if x > 0                  then open(x-1,y) end
-    if x < @wi-1              then open(x+1,y) end
-    if x > 0 && y < @hi-1     then open(x-1,y+1) end
-    if y < @hi -1             then open(x,y+1) end
-    if x < @wi-1 && y < @hi-1 then open(x+1,y+1) end
-    pos(@cx,@cy)
-  end
-  def fetch(x,y)
-    # (x,y)¤Î°ÌÃÖ¤ÎÇúÃƤοô(0 or 1)¤òÊÖ¤¹
-    if x < 0 then 0
-    elsif x >= @wi then 0
-    elsif y < 0 then 0
-    elsif y >= @hi then 0
-    else
-      @data[y*@wi+x]
-    end
-  end
-  def count(x,y)
-    # (x,y)¤ËÎÙÀܤ¹¤ëÇúÃƤοô¤òÊÖ¤¹
-    fetch(x-1,y-1)+fetch(x,y-1)+fetch(x+1,y-1)+
-    fetch(x-1,y)  +             fetch(x+1,y)+
-    fetch(x-1,y+1)+fetch(x,y+1)+fetch(x+1,y+1)
-  end
-  def over(win)
-    # ¥²¡¼¥à¤Î½ªÎ»
-    quit
-    unless win
-      pos(@cx,@cy); print CHR[11]
-    end
-    pos(0,@hi)
-    if win then print "*** YOU WIN !! ***"
-    else print "*** GAME OVER ***"
-    end
-  end
-  def over?
-    # ¥²¡¼¥à¤Î½ªÎ»¥Á¥§¥Ã¥¯
-    # ½ªÎ»½èÍý¤â¸Æ¤Ó½Ð¤¹
-    remain = (@mc+@total == 0)
-    if @over || remain
-      over(remain)
-      true
-    else
-      false
-    end
-  end
-  def quit
-    # ¥²¡¼¥à¤ÎÃæÃÇ(¤Þ¤¿¤Ï½ªÎ»)
-    # È×Ì̤òÁ´¤Æ¸«¤»¤ë
-    @hi.times do|y|
-      pos(0,y)
-      @wi.times do|x|
-       colorstr(if @state[y*@wi+x] == "MARK" then COL[1] else COL[2] end,
-                if fetch(x,y)==1 then CHR[10] else CHR[count(x,y)] end)
-      end
-    end
-  end
-  def down
-    # ¥«¡¼¥½¥ë¤ò²¼¤Ë
-    if @cy < @hi-1 then @cy=@cy+1; pos(@cx, @cy) end
-  end
-  def up
-    # ¥«¡¼¥½¥ë¤ò¾å¤Ë
-    if @cy > 0 then @cy=@cy-1; pos(@cx, @cy) end
-  end
-  def left
-    # ¥«¡¼¥½¥ë¤òº¸¤Ë
-    if @cx > 0 then @cx=@cx-1; pos(@cx, @cy) end
-  end
-  def right
-    # ¥«¡¼¥½¥ë¤ò±¦¤Ë
-    if @cx < @wi-1 then @cx=@cx+1; pos(@cx, @cy) end
-  end
-end
-
-bd=Board.new(10,10,10)
-system("stty raw -echo")
-begin
-  loop do
-    case STDIN.getc
-    when ?n  # new game
-      bd.reset
-    when ?m  # mark
-      bd.mark
-    when ?j
-      bd.down
-    when ?k
-      bd.up
-    when ?h
-      bd.left
-    when ?l
-      bd.right
-    when ?\s
-      bd.open
-    when ?q,?\C-c  # quit game
-      bd.quit
-      break
-    end
-    if bd.over?
-      if STDIN.getc == ?q then break end
-      bd.reset
-    end
-  end
-ensure
-  system("stty -raw echo")
-end
-print "\n"
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/mkproto.rb b/ruby/doc/ruby/ruby-1.8.7/sample/mkproto.rb
deleted file mode 100644 (file)
index 754ca2d..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-$/ = nil
-while line = gets()
-  if /^((void|VALUE|int|char *\*|ID|struct [\w_]+ *\*|st_table *\*) *)?\n([\w\d_]+)\(.*\)\n\s*((.+;\n)*)\{/ =~ line
-    line = $'
-    printf "%s %s(", $2, $3
-    args = []
-    for arg in $4.split(/;\n\s*/)
-      arg.gsub!(/ +/, ' ')
-      if arg =~ /,/
-       if arg =~ /(([^*]+) *\** *[\w\d_]+),/
-         type = $2.strip
-         args.push $1.strip
-         arg = $'
-       else
-         type = ""
-       end
-       while arg.sub!(/(\** *[\w\d_]+)(,|$)/, "") && $~
-         args.push type + " " + $1.strip
-       end
-      else
-       args.push arg.strip
-      end
-    end
-    printf "%s);\n", args.join(', ')
-    redo
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/mpart.rb b/ruby/doc/ruby/ruby-1.8.7/sample/mpart.rb
deleted file mode 100644 (file)
index a88eba0..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#! ./ruby
-# split into multi part
-# usage: mpart.rb [-nnn] file..
-
-lines = 1000
-
-if (ARGV[0] =~ /^-(\d+)$/ )
-  lines = $1.to_i;
-  ARGV.shift;
-end
-
-basename = ARGV[0]
-extname = "part"
-
-part = 1
-line = 0
-
-fline = 0
-for i in ifp = open(basename)
-  fline = fline + 1
-end
-ifp.close
-
-parts = fline / lines + 1
-
-for i in ifp = open(basename)
-  if line == 0
-    ofp = open(sprintf("%s.%s%02d", basename, extname, part), "w")
-    printf(ofp, "%s part%02d/%02d\n", basename, part, parts)
-    ofp.write("BEGIN--cut here--cut here\n")
-  end
-  ofp.write(i)
-  line = line + 1
-  if line >= lines and !ifp.eof?
-    ofp.write("END--cut here--cut here\n")
-    ofp.close
-    part = part + 1
-    line = 0
-  end
-end
-ofp.write("END--cut here--cut here\n")
-ofp.close
-
-ifp.close
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/mrshtest.rb b/ruby/doc/ruby/ruby-1.8.7/sample/mrshtest.rb
deleted file mode 100644 (file)
index 8d2dc99..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-include Marshal
-a = 25.6;
-pt = Struct.new('Point', :x,:y);
-x = pt.new(10, 10)
-y = pt.new(20, 20)
-rt = Struct.new('Rectangle', :origin,:corner);
-z = rt.new(x, y)
-c = Object.new
-s = [a, x, z, c, c, "fff"];
-p s
-d = dump(s);
-p d
-p load(d)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/observ.rb b/ruby/doc/ruby/ruby-1.8.7/sample/observ.rb
deleted file mode 100644 (file)
index 72e5178..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#! /usr/local/bin/ruby
-
-require "thread"
-require "observer"
-
-class Tick
-  include Observable
-  def initialize
-    Thread.start do
-      loop do
-       sleep 0.999
-       now = Time.now
-       changed
-       notify_observers(now.hour, now.min, now.sec)
-      end
-    end
-  end
-end
-
-class Clock
-  def initialize(tick)
-    @tick = tick
-    @tick.add_observer(self)
-  end
-  def update(h, m, s)
-    printf "\e[8D%02d:%02d:%02d", h, m, s
-    STDOUT.flush
-  end
-end
-
-clock = Clock.new(Tick.new)
-sleep
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/occur.pl b/ruby/doc/ruby/ruby-1.8.7/sample/occur.pl
deleted file mode 100644 (file)
index 1f5fcf2..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-while (<>) {
-    for (split(/\W+/)) {
-       $freq{$_}++;
-    }
-}
-
-for (sort keys %freq) {
-    print "$_ -- $freq{$_}\n";
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/occur.rb b/ruby/doc/ruby/ruby-1.8.7/sample/occur.rb
deleted file mode 100644 (file)
index 8bb09e1..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# word occurrence listing
-# usege: ruby occur.rb file..
-freq = Hash.new(0)
-while gets()
-  for word in split(/\W+/)
-    freq[word] += 1
-  end
-end
-
-for word in freq.keys.sort!
-  print word, " -- ", freq[word], "\n"
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/occur2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/occur2.rb
deleted file mode 100644 (file)
index 53885c0..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# word occurrence listing
-# usege: ruby occur2.rb file..
-freq = {}
-while gets()
-  for word in split(/\W+/)
-    begin
-      freq[word] += 1
-    rescue NameError
-      freq[word] = 1
-    end
-  end
-end
-
-for word in freq.keys.sort
-  printf("%s -- %d\n", word, freq[word])
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/openssl/c_rehash.rb b/ruby/doc/ruby/ruby-1.8.7/sample/openssl/c_rehash.rb
deleted file mode 100644 (file)
index afbb654..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'openssl'
-require 'digest/md5'
-
-class CHashDir
-  include Enumerable
-
-  def initialize(dirpath)
-    @dirpath = dirpath
-    @fingerprint_cache = @cert_cache = @crl_cache = nil
-  end
-
-  def hash_dir(silent = false)
-    # ToDo: Should lock the directory...
-    @silent = silent
-    @fingerprint_cache = Hash.new
-    @cert_cache = Hash.new
-    @crl_cache = Hash.new
-    do_hash_dir
-  end
-
-  def get_certs(name = nil)
-    if name
-      @cert_cache[hash_name(name)]
-    else
-      @cert_cache.values.flatten
-    end
-  end
-
-  def get_crls(name = nil)
-    if name
-      @crl_cache[hash_name(name)]
-    else
-      @crl_cache.values.flatten
-    end
-  end
-
-  def delete_crl(crl)
-    File.unlink(crl_filename(crl))
-    hash_dir(true)
-  end
-
-  def add_crl(crl)
-    File.open(crl_filename(crl), "w") do |f|
-      f << crl.to_pem
-    end
-    hash_dir(true)
-  end
-
-  def load_pem_file(filepath)
-    str = File.read(filepath)
-    begin
-      OpenSSL::X509::Certificate.new(str)
-    rescue
-      begin
-       OpenSSL::X509::CRL.new(str)
-      rescue
-       begin
-         OpenSSL::X509::Request.new(str)
-       rescue
-         nil
-       end
-      end
-    end
-  end
-
-private
-
-  def crl_filename(crl)
-    path(hash_name(crl.issuer)) + '.pem'
-  end
-
-  def do_hash_dir
-    Dir.chdir(@dirpath) do
-      delete_symlink
-      Dir.glob('*.pem') do |pemfile|
-       cert = load_pem_file(pemfile)
-       case cert
-       when OpenSSL::X509::Certificate
-         link_hash_cert(pemfile, cert)
-       when OpenSSL::X509::CRL
-         link_hash_crl(pemfile, cert)
-       else
-         STDERR.puts("WARNING: #{pemfile} does not contain a certificate or CRL: skipping") unless @silent
-       end
-      end
-    end
-  end
-
-  def delete_symlink
-    Dir.entries(".").each do |entry|
-      next unless /^[\da-f]+\.r{0,1}\d+$/ =~ entry
-      File.unlink(entry) if FileTest.symlink?(entry)
-    end
-  end
-
-  def link_hash_cert(org_filename, cert)
-    name_hash = hash_name(cert.subject)
-    fingerprint = fingerprint(cert.to_der)
-    filepath = link_hash(org_filename, name_hash, fingerprint) { |idx|
-      "#{name_hash}.#{idx}"
-    }
-    unless filepath
-      unless @silent
-       STDERR.puts("WARNING: Skipping duplicate certificate #{org_filename}")
-      end
-    else
-      (@cert_cache[name_hash] ||= []) << path(filepath)
-    end
-  end
-
-  def link_hash_crl(org_filename, crl)
-    name_hash = hash_name(crl.issuer)
-    fingerprint = fingerprint(crl.to_der)
-    filepath = link_hash(org_filename, name_hash, fingerprint) { |idx|
-      "#{name_hash}.r#{idx}"
-    }
-    unless filepath
-      unless @silent
-       STDERR.puts("WARNING: Skipping duplicate CRL #{org_filename}")
-      end
-    else
-      (@crl_cache[name_hash] ||= []) << path(filepath)
-    end
-  end
-
-  def link_hash(org_filename, name, fingerprint)
-    idx = 0
-    filepath = nil
-    while true
-      filepath = yield(idx)
-      break unless FileTest.symlink?(filepath) or FileTest.exist?(filepath)
-      if @fingerprint_cache[filepath] == fingerprint
-       return false
-      end
-      idx += 1
-    end
-    STDOUT.puts("#{org_filename} => #{filepath}") unless @silent
-    symlink(org_filename, filepath)
-    @fingerprint_cache[filepath] = fingerprint
-    filepath
-  end
-
-  def symlink(from, to)
-    begin
-      File.symlink(from, to)
-    rescue
-      File.open(to, "w") do |f|
-       f << File.read(from)
-      end
-    end
-  end
-
-  def path(filename)
-    File.join(@dirpath, filename)
-  end
-
-  def hash_name(name)
-    sprintf("%x", name.hash)
-  end
-
-  def fingerprint(der)
-    Digest::MD5.hexdigest(der).upcase
-  end
-end
-
-if $0 == __FILE__
-  dirlist = ARGV
-  dirlist << '/usr/ssl/certs' if dirlist.empty?
-  dirlist.each do |dir|
-    CHashDir.new(dir).hash_dir
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/openssl/cert2text.rb b/ruby/doc/ruby/ruby-1.8.7/sample/openssl/cert2text.rb
deleted file mode 100644 (file)
index 50da224..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'openssl'
-include OpenSSL::X509
-
-def cert2text(cert_str)
-  [Certificate, CRL, Request].each do |klass|
-    begin
-      puts klass.new(cert_str).to_text
-      return
-    rescue
-    end
-  end
-  raise ArgumentError.new('Unknown format.')
-end
-
-if ARGV.empty?
-  cert2text(STDIN.read)
-else
-  ARGV.each do |file|
-    cert2text(File.read(file))
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/openssl/cert_store_view.rb b/ruby/doc/ruby/ruby-1.8.7/sample/openssl/cert_store_view.rb
deleted file mode 100644 (file)
index 26c4d52..0000000
+++ /dev/null
@@ -1,911 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'fox'
-require 'openssl'
-require 'time'
-require 'certstore'
-require 'getopts'
-
-include Fox
-
-module CertDumpSupport
-  def cert_label(cert)
-    subject_alt_name =
-      cert.extensions.find { |ext| ext.oid == 'subjectAltName' }
-    if subject_alt_name
-      subject_alt_name.value.split(/\s*,\s/).each do |alt_name_pair|
-       alt_tag, alt_name = alt_name_pair.split(/:/)
-       return alt_name
-      end
-    end
-    name_label(cert.subject)
-  end
-
-  def name_label(name)
-    ary = name.to_a
-    if (cn = ary.find { |rdn| rdn[0] == 'CN' })
-      return cn[1]
-    end
-    if ary.last[0] == 'OU'
-      return ary.last[1]
-    end
-    name.to_s
-  end
-
-  def name_text(name)
-    name.to_a.collect { |tag, value|
-      "#{tag} = #{value}"
-    }.reverse.join("\n")
-  end
-
-  def bn_label(bn)
-    ("0" << sprintf("%X", bn)).scan(/../).join(" ")
-  end
-end
-
-class CertDump
-  include CertDumpSupport
-
-  def initialize(cert)
-    @cert = cert
-  end
-
-  def get_dump(tag)
-    case tag
-    when 'Version'
-      version
-    when 'Serial'
-      serial
-    when 'Signature Algorithm'
-      signature_algorithm
-    when 'Issuer'
-      issuer
-    when 'Validity'
-      validity
-    when 'Not before'
-      not_before
-    when 'Not after'
-      not_after
-    when 'Subject'
-      subject
-    when 'Public key'
-      public_key
-    else
-      ext(tag)
-    end
-  end
-
-  def get_dump_line(tag)
-    case tag
-    when 'Version'
-      version_line
-    when 'Serial'
-      serial_line
-    when 'Signature Algorithm'
-      signature_algorithm_line
-    when 'Subject'
-      subject_line
-    when 'Issuer'
-      issuer_line
-    when 'Validity'
-      validity_line
-    when 'Not before'
-      not_before_line
-    when 'Not after'
-      not_after_line
-    when 'Public key'
-      public_key_line
-    else
-      ext_line(tag)
-    end
-  end
-
-private
-
-  def version
-    "Version: #{@cert.version + 1}"
-  end
-
-  def version_line
-    version
-  end
-
-  def serial
-    bn_label(@cert.serial)
-  end
-
-  def serial_line
-    serial
-  end
-
-  def signature_algorithm
-    @cert.signature_algorithm
-  end
-
-  def signature_algorithm_line
-    signature_algorithm
-  end
-
-  def subject
-    name_text(@cert.subject)
-  end
-
-  def subject_line
-    @cert.subject.to_s
-  end
-
-  def issuer
-    name_text(@cert.issuer)
-  end
-
-  def issuer_line
-    @cert.issuer.to_s
-  end
-
-  def validity
-    <<EOS
-Not before: #{not_before}
-Not after: #{not_after}
-EOS
-  end
-
-  def validity_line
-    "from #{@cert.not_before.iso8601} to #{@cert.not_after.iso8601}"
-  end
-
-  def not_before
-    @cert.not_before.to_s
-  end
-
-  def not_before_line
-    not_before
-  end
-
-  def not_after
-    @cert.not_after.to_s
-  end
-
-  def not_after_line
-    not_after
-  end
-
-  def public_key
-    @cert.public_key.to_text
-  end
-
-  def public_key_line
-    "#{@cert.public_key.class} -- " << public_key.scan(/\A[^\n]*/)[0] << '...'
-  end
-
-  def ext(tag)
-    @cert.extensions.each do |ext|
-      if ext.oid == tag
-       return ext_detail(tag, ext.value)
-      end
-    end
-    "(unknown)"
-  end
-
-  def ext_line(tag)
-    ext(tag).tr("\r\n", '')
-  end
-
-  def ext_detail(tag, value)
-    value
-  end
-end
-
-class CrlDump
-  include CertDumpSupport
-
-  def initialize(crl)
-    @crl = crl
-  end
-
-  def get_dump(tag)
-    case tag
-    when 'Version'
-      version
-    when 'Signature Algorithm'
-      signature_algorithm
-    when 'Issuer'
-      issuer
-    when 'Last update'
-      last_update
-    when 'Next update'
-      next_update
-    else
-      ext(tag)
-    end
-  end
-
-  def get_dump_line(tag)
-    case tag
-    when 'Version'
-      version_line
-    when 'Signature Algorithm'
-      signature_algorithm_line
-    when 'Issuer'
-      issuer_line
-    when 'Last update'
-      last_update_line
-    when 'Next update'
-      next_update_line
-    else
-      ext_line(tag)
-    end
-  end
-
-private
-
-  def version
-    "Version: #{@crl.version + 1}"
-  end
-
-  def version_line
-    version
-  end
-
-  def signature_algorithm
-    @crl.signature_algorithm
-  end
-
-  def signature_algorithm_line
-    signature_algorithm
-  end
-
-  def issuer
-    name_text(@crl.issuer)
-  end
-
-  def issuer_line
-    @crl.issuer.to_s
-  end
-
-  def last_update
-    @crl.last_update.to_s
-  end
-
-  def last_update_line
-    last_update
-  end
-
-  def next_update
-    @crl.next_update.to_s
-  end
-
-  def next_update_line
-    next_update
-  end
-
-  def ext(tag)
-    @crl.extensions.each do |ext|
-      if ext.oid == tag
-       return ext_detail(tag, ext.value)
-      end
-    end
-    "(unknown)"
-  end
-
-  def ext_line(tag)
-    ext(tag).tr("\r\n", '')
-  end
-
-  def ext_detail(tag, value)
-    value
-  end
-end
-
-class RevokedDump
-  include CertDumpSupport
-
-  def initialize(revoked)
-    @revoked = revoked
-  end
-
-  def get_dump(tag)
-    case tag
-    when 'Serial'
-      serial
-    when 'Time'
-      time
-    else
-      ext(tag)
-    end
-  end
-
-  def get_dump_line(tag)
-    case tag
-    when 'Serial'
-      serial_line
-    when 'Time'
-      time_line
-    else
-      ext_line(tag)
-    end
-  end
-
-private
-
-  def serial
-    bn_label(@revoked.serial)
-  end
-
-  def serial_line
-    serial
-  end
-
-  def time
-    @revoked.time.to_s
-  end
-
-  def time_line
-    time
-  end
-
-  def ext(tag)
-    @revoked.extensions.each do |ext|
-      if ext.oid == tag
-       return ext_detail(tag, ext.value)
-      end
-    end
-    "(unknown)"
-  end
-
-  def ext_line(tag)
-    ext(tag).tr("\r\n", '')
-  end
-
-  def ext_detail(tag, value)
-    value
-  end
-end
-
-class RequestDump
-  include CertDumpSupport
-
-  def initialize(req)
-    @req = req
-  end
-
-  def get_dump(tag)
-    case tag
-    when 'Version'
-      version
-    when 'Signature Algorithm'
-      signature_algorithm
-    when 'Subject'
-      subject
-    when 'Public key'
-      public_key
-    else
-      attributes(tag)
-    end
-  end
-
-  def get_dump_line(tag)
-    case tag
-    when 'Version'
-      version_line
-    when 'Signature Algorithm'
-      signature_algorithm_line
-    when 'Subject'
-      subject_line
-    when 'Public key'
-      public_key_line
-    else
-      attributes_line(tag)
-    end
-  end
-
-private
-
-  def version
-    "Version: #{@req.version + 1}"
-  end
-
-  def version_line
-    version
-  end
-
-  def signature_algorithm
-    @req.signature_algorithm
-  end
-
-  def signature_algorithm_line
-    signature_algorithm
-  end
-
-  def subject
-    name_text(@req.subject)
-  end
-
-  def subject_line
-    @req.subject.to_s
-  end
-
-  def public_key
-    @req.public_key.to_text
-  end
-
-  def public_key_line
-    "#{@req.public_key.class} -- " << public_key.scan(/\A[^\n]*/)[0] << '...'
-  end
-
-  def attributes(tag)
-    "(unknown)"
-  end
-
-  def attributes_line(tag)
-    attributes(tag).tr("\r\n", '')
-  end
-end
-
-class CertStoreView < FXMainWindow
-  class CertTree
-    include CertDumpSupport
-
-    def initialize(observer, tree)
-      @observer = observer
-      @tree = tree
-      @tree.connect(SEL_COMMAND) do |sender, sel, item|
-               if item.data
-         @observer.getApp().beginWaitCursor do
-           @observer.show_item(item.data)
-         end
-       else
-         @observer.show_item(nil)
-       end
-      end
-    end
-
-    def show(cert_store)
-      @tree.clearItems
-      @self_signed_ca_node = add_item_last(nil, "Trusted root CA")
-      @other_ca_node = add_item_last(nil, "Intermediate CA")
-      @ee_node = add_item_last(nil, "Personal")
-      @crl_node = add_item_last(nil, "CRL")
-      @request_node = add_item_last(nil, "Request")
-      @verify_path_node = add_item_last(nil, "Certification path")
-      show_certs(cert_store)
-    end
-
-    def show_certs(cert_store)
-      remove_items(@self_signed_ca_node)
-      remove_items(@other_ca_node)
-      remove_items(@ee_node)
-      remove_items(@crl_node)
-      remove_items(@request_node)
-      import_certs(cert_store)
-    end
-
-    def show_request(req)
-      node = add_item_last(@request_node, name_label(req.subject), req)
-      @tree.selectItem(node)
-      @observer.show_item(req)
-    end
-
-    def show_verify_path(verify_path)
-      add_verify_path(verify_path)
-    end
-
-  private
-
-    def open_node(node)
-      node.expanded = node.opened = true
-    end
-
-    def close_node(node)
-      node.expanded = node.opened = false
-    end
-
-    def import_certs(cert_store)
-      cert_store.self_signed_ca.each do |cert|
-       add_item_last(@self_signed_ca_node, cert_label(cert), cert)
-      end
-      cert_store.other_ca.each do |cert|
-       add_item_last(@other_ca_node, cert_label(cert), cert)
-      end
-      cert_store.ee.each do |cert|
-       add_item_last(@ee_node, cert_label(cert), cert)
-      end
-      cert_store.crl.each do |crl|
-       node = add_item_last(@crl_node, name_label(crl.issuer), crl)
-       close_node(node)
-       crl.revoked.each do |revoked|
-         add_item_last(node, bn_label(revoked.serial), revoked)
-       end
-      end
-      cert_store.request.each do |req|
-       add_item_last(@requestnode, name_label(req.subject), req)
-      end
-    end
-
-    def add_verify_path(verify_path)
-      node = @verify_path_node
-      last_cert = nil
-      verify_path.reverse_each do |ok, cert, crl_check, error_string|
-       warn = []
-       if @observer.cert_store.is_ca?(cert)
-         warn << 'NO ARL' unless crl_check
-       else
-         warn << 'NO CRL' unless crl_check
-       end
-       warn_str = '(' << warn.join(", ") << ')'
-       warn_mark = warn.empty? ? '' : '!'
-       label = if ok
-           "OK#{warn_mark}..." + cert_label(cert)
-         else
-           "NG(#{error_string})..." + cert_label(cert)
-         end
-       label << warn_str unless warn.empty?
-       node = add_item_last(node, label, cert)
-       node.expanded = true
-       last_cert = cert
-      end
-      if last_cert
-       @tree.selectItem(node)
-       @observer.show_item(last_cert)
-      end
-    end
-
-    def add_item_last(parent, label, obj = nil)
-      node = @tree.addItemLast(parent, FXTreeItem.new(label))
-      node.data = obj if obj
-      open_node(node)
-      node
-    end
-
-    def remove_items(node)
-      while node.getNumChildren > 0
-       @tree.removeItem(node.getFirst)
-      end
-    end
-  end
-
-  class CertInfo
-    def initialize(observer, table)
-      @observer = observer
-      @table = table
-      @table.leadingRows = 0
-      @table.leadingCols = 0
-      @table.trailingRows = 0
-      @table.trailingCols = 0
-      @table.showVertGrid(false)
-      @table.showHorzGrid(false)
-      @table.setTableSize(1, 2)
-      @table.setColumnWidth(0, 125)
-      @table.setColumnWidth(1, 350)
-    end
-
-    def show(item)
-      @observer.show_detail(nil, nil)
-      if item.nil?
-       set_column_size(1)
-       return
-      end
-      case item
-      when OpenSSL::X509::Certificate
-       show_cert(item)
-      when OpenSSL::X509::CRL
-       show_crl(item)
-      when OpenSSL::X509::Revoked
-       show_revoked(item)
-      when OpenSSL::X509::Request
-       show_request(item)
-      else
-       raise NotImplementedError.new("Unknown item type #{item.class}.")
-      end
-    end
-
-  private
-
-    def show_cert(cert)
-      wrap = CertDump.new(cert)
-      items = []
-      items << ['Version', wrap.get_dump_line('Version')]
-      items << ['Signature Algorithm', wrap.get_dump_line('Signature Algorithm')]
-      items << ['Issuer', wrap.get_dump_line('Issuer')]
-      items << ['Serial', wrap.get_dump_line('Serial')]
-      #items << ['Not before', wrap.get_dump_line('Not before')]
-      #items << ['Not after', wrap.get_dump_line('Not after')]
-      items << ['Subject', wrap.get_dump_line('Subject')]
-      items << ['Public key', wrap.get_dump_line('Public key')]
-      items << ['Validity', wrap.get_dump_line('Validity')]
-      (cert.extensions.sort { |a, b| a.oid <=> b.oid }).each do |ext|
-       items << [ext.oid, wrap.get_dump_line(ext.oid)]
-      end
-      show_items(cert, items)
-    end
-
-    def show_crl(crl)
-      wrap = CrlDump.new(crl)
-      items = []
-      items << ['Version', wrap.get_dump_line('Version')]
-      items << ['Signature Algorithm', wrap.get_dump_line('Signature Algorithm')]
-      items << ['Issuer', wrap.get_dump_line('Issuer')]
-      items << ['Last update', wrap.get_dump_line('Last update')]
-      items << ['Next update', wrap.get_dump_line('Next update')]
-      crl.extensions.each do |ext|
-       items << [ext.oid, wrap.get_dump_line(ext.oid)]
-      end
-      show_items(crl, items)
-    end
-
-    def show_revoked(revoked)
-      wrap = RevokedDump.new(revoked)
-      items = []
-      items << ['Serial', wrap.get_dump_line('Serial')]
-      items << ['Time', wrap.get_dump_line('Time')]
-      revoked.extensions.each do |ext|
-       items << [ext.oid, wrap.get_dump_line(ext.oid)]
-      end
-      show_items(revoked, items)
-    end
-
-    def show_request(req)
-      wrap = RequestDump.new(req)
-      items = []
-      items << ['Version', wrap.get_dump_line('Version')]
-      items << ['Signature Algorithm', wrap.get_dump_line('Signature Algorithm')]
-      items << ['Subject', wrap.get_dump_line('Subject')]
-      items << ['Public key', wrap.get_dump_line('Public key')]
-      req.attributes.each do |attr|
-       items << [attr.attr, wrap.get_dump_line(attr.oid)]
-      end
-      show_items(req, items)
-    end
-
-    def show_items(obj, items)
-      set_column_size(items.size)
-      items.each_with_index do |ele, idx|
-       tag, value = ele
-       @table.setItemText(idx, 0, tag)
-       @table.getItem(idx, 0).data = tag
-       @table.setItemText(idx, 1, value.to_s)
-       @table.getItem(idx, 1).data = tag
-      end
-      @table.connect(SEL_COMMAND) do |sender, sel, loc|
-       item = @table.getItem(loc.row, loc.col)
-       @observer.show_detail(obj, item.data)
-      end
-      justify_table
-    end
-
-    def set_column_size(size)
-      col0_width = @table.getColumnWidth(0)
-      col1_width = @table.getColumnWidth(1)
-      @table.setTableSize(size, 2)
-      @table.setColumnWidth(0, col0_width)
-      @table.setColumnWidth(1, col1_width)
-    end
-
-    def justify_table
-      for col in 0..@table.numCols-1
-       for row in 0..@table.numRows-1
-         @table.getItem(row, col).justify = FXTableItem::LEFT
-       end
-      end
-    end
-  end
-
-  class CertDetail
-    def initialize(observer, detail)
-      @observer = observer
-      @detail = detail
-    end
-
-    def show(item, tag)
-      if item.nil?
-       @detail.text = ''
-       return
-      end
-      case item
-      when OpenSSL::X509::Certificate
-       show_cert(item, tag)
-      when OpenSSL::X509::CRL
-       show_crl(item, tag)
-      when OpenSSL::X509::Revoked
-       show_revoked(item, tag)
-      when OpenSSL::X509::Request
-       show_request(item, tag)
-      else
-       raise NotImplementedError.new("Unknown item type #{item.class}.")
-      end
-    end
-
-  private
-
-    def show_cert(cert, tag)
-      wrap = CertDump.new(cert)
-      @detail.text = wrap.get_dump(tag)
-    end
-
-    def show_crl(crl, tag)
-      wrap = CrlDump.new(crl)
-      @detail.text = wrap.get_dump(tag)
-    end
-
-    def show_revoked(revoked, tag)
-      wrap = RevokedDump.new(revoked)
-      @detail.text = wrap.get_dump(tag)
-    end
-
-    def show_request(request, tag)
-      wrap = RequestDump.new(request)
-      @detail.text = wrap.get_dump(tag)
-    end
-  end
-
-  attr_reader :cert_store
-
-  def initialize(app, cert_store)
-    @cert_store = cert_store
-    @verify_filter = 0
-    @verify_filename = nil
-    full_width = 800
-    full_height = 500
-    horz_pos = 300
-
-    super(app, "Certificate store", nil, nil, DECOR_ALL, 0, 0, full_width,
-      full_height)
-
-    FXTooltip.new(self.getApp())
-
-    menubar = FXMenubar.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X)
-    file_menu = FXMenuPane.new(self)
-    FXMenuTitle.new(menubar, "&File", nil, file_menu)
-    file_open_menu = FXMenuPane.new(self)
-    FXMenuCommand.new(file_open_menu, "&Directory\tCtl-O").connect(SEL_COMMAND,
-      method(:on_cmd_file_open_dir))
-    FXMenuCascade.new(file_menu, "&Open\tCtl-O", nil, file_open_menu)
-    FXMenuCommand.new(file_menu, "&Quit\tCtl-Q", nil, getApp(), FXApp::ID_QUIT)
-
-    tool_menu = FXMenuPane.new(self)
-    FXMenuTitle.new(menubar, "&Tool", nil, tool_menu)
-    FXMenuCommand.new(tool_menu, "&Verify\tCtl-N").connect(SEL_COMMAND,
-      method(:on_cmd_tool_verify))
-    FXMenuCommand.new(tool_menu, "&Show Request\tCtl-R").connect(SEL_COMMAND,
-      method(:on_cmd_tool_request))
-
-    base_frame = FXHorizontalFrame.new(self, LAYOUT_FILL_X | LAYOUT_FILL_Y)
-    splitter_horz = FXSplitter.new(base_frame, LAYOUT_SIDE_TOP | LAYOUT_FILL_X |
-    LAYOUT_FILL_Y | SPLITTER_TRACKING | SPLITTER_HORIZONTAL)
-
-    # Cert tree
-    cert_tree_frame = FXHorizontalFrame.new(splitter_horz, LAYOUT_FILL_X |
-      LAYOUT_FILL_Y | FRAME_SUNKEN | FRAME_THICK)
-    cert_tree_frame.setWidth(horz_pos)
-    cert_tree = FXTreeList.new(cert_tree_frame, 0, nil, 0,
-      TREELIST_BROWSESELECT | TREELIST_SHOWS_LINES | TREELIST_SHOWS_BOXES |
-      TREELIST_ROOT_BOXES | LAYOUT_FILL_X | LAYOUT_FILL_Y)
-    @cert_tree = CertTree.new(self, cert_tree)
-
-    # Cert info
-    splitter_vert = FXSplitter.new(splitter_horz, LAYOUT_SIDE_TOP |
-      LAYOUT_FILL_X | LAYOUT_FILL_Y | SPLITTER_TRACKING | SPLITTER_VERTICAL |
-      SPLITTER_REVERSED)
-    cert_list_base = FXVerticalFrame.new(splitter_vert, LAYOUT_FILL_X |
-      LAYOUT_FILL_Y, 0,0,0,0, 0,0,0,0)
-    cert_list_frame = FXHorizontalFrame.new(cert_list_base, FRAME_SUNKEN |
-      FRAME_THICK | LAYOUT_FILL_X | LAYOUT_FILL_Y)
-    cert_info = FXTable.new(cert_list_frame, 2, 10, nil, 0, FRAME_SUNKEN |
-      TABLE_COL_SIZABLE | LAYOUT_FILL_X | LAYOUT_FILL_Y, 0, 0, 0, 0, 2, 2, 2, 2)
-    @cert_info = CertInfo.new(self, cert_info)
-
-    cert_detail_base = FXVerticalFrame.new(splitter_vert, LAYOUT_FILL_X |
-      LAYOUT_FILL_Y, 0,0,0,0, 0,0,0,0)
-    cert_detail_frame = FXHorizontalFrame.new(cert_detail_base, FRAME_SUNKEN |
-      FRAME_THICK | LAYOUT_FILL_X | LAYOUT_FILL_Y)
-    cert_detail = FXText.new(cert_detail_frame, nil, 0, TEXT_READONLY |
-      LAYOUT_FILL_X | LAYOUT_FILL_Y)
-    @cert_detail = CertDetail.new(self, cert_detail)
-
-    show_init
-  end
-
-  def create
-    super
-    show(PLACEMENT_SCREEN)
-  end
-
-  def show_init
-    @cert_tree.show(@cert_store)
-    show_item(nil)
-  end
-
-  def show_certs
-    @cert_tree.show_certs(@cert_store)
-  end
-
-  def show_request(req)
-    @cert_tree.show_request(req)
-  end
-
-  def show_verify_path(verify_path)
-    @cert_tree.show_verify_path(verify_path)
-  end
-
-  def show_item(item)
-    @cert_info.show(item) if @cert_info
-  end
-
-  def show_detail(item, tag)
-    @cert_detail.show(item, tag) if @cert_detail
-  end
-
-  def verify(certfile)
-    path = verify_certfile(certfile)
-    show_certs # CRL could be change.
-    show_verify_path(path)
-  end
-
-private
-
-  def on_cmd_file_open_dir(sender, sel, ptr)
-    dir = FXFileDialog.getOpenDirectory(self, "Open certificate directory", ".")
-    unless dir.empty?
-      begin
-       @cert_store = CertStore.new(dir)
-      rescue
-       show_error($!)
-      end
-      show_init
-    end
-    1
-  end
-
-  def on_cmd_tool_verify(sender, sel, ptr)
-    dialog = FXFileDialog.new(self, "Verify certificate")
-    dialog.filename = ''
-    dialog.patternList = ["All Files (*)", "PEM formatted certificate (*.pem)"]
-    dialog.currentPattern = @verify_filter
-    if dialog.execute != 0
-      @verify_filename = dialog.filename
-      verify(@verify_filename)
-    end
-    @verify_filter = dialog.currentPattern
-    1
-  end
-
-  def on_cmd_tool_request(sender, sel, ptr)
-    dialog = FXFileDialog.new(self, "Show request")
-    dialog.filename = ''
-    dialog.patternList = ["All Files (*)", "PEM formatted certificate (*.pem)"]
-    if dialog.execute != 0
-      req = @cert_store.generate_cert(dialog.filename)
-      show_request(req)
-    end
-    1
-  end
-
-  def verify_certfile(filename)
-    begin
-      cert = @cert_store.generate_cert(filename)
-      result = @cert_store.verify(cert)
-      @cert_store.scan_certs
-      result
-    rescue
-      show_error($!)
-      []
-    end
-  end
-
-  def show_error(e)
-    msg = e.inspect + "\n" + e.backtrace.join("\n")
-    FXMessageBox.error(self, MBOX_OK, "Error", msg)
-  end
-end
-
-getopts nil, "cert:"
-
-certs_dir = ARGV.shift or raise "#{$0} cert_dir"
-certfile = $OPT_cert
-app = FXApp.new("CertStore", "FoxTest")
-cert_store = CertStore.new(certs_dir)
-w = CertStoreView.new(app, cert_store)
-app.create
-if certfile
-  w.verify(certfile)
-end
-app.run
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/openssl/certstore.rb b/ruby/doc/ruby/ruby-1.8.7/sample/openssl/certstore.rb
deleted file mode 100644 (file)
index bbc637f..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-require 'c_rehash'
-require 'crlstore'
-
-
-class CertStore
-  include OpenSSL
-  include X509
-
-  attr_reader :self_signed_ca
-  attr_reader :other_ca
-  attr_reader :ee
-  attr_reader :crl
-  attr_reader :request
-
-  def initialize(certs_dir)
-    @certs_dir = certs_dir
-    @c_store = CHashDir.new(@certs_dir)
-    @c_store.hash_dir(true)
-    @crl_store = CrlStore.new(@c_store)
-    @x509store = Store.new
-    @self_signed_ca = @other_ca = @ee = @crl = nil
-
-    # Uncomment this line to let OpenSSL to check CRL for each certs.
-    # @x509store.flags = V_FLAG_CRL_CHECK | V_FLAG_CRL_CHECK_ALL
-
-    add_path
-    scan_certs
-  end
-
-  def generate_cert(filename)
-    @c_store.load_pem_file(filename)
-  end
-
-  def verify(cert)
-    error, crl_map = do_verify(cert)
-    if error
-      [[false, cert, crl_map[cert.subject], error]]
-    else
-      @x509store.chain.collect { |c| [true, c, crl_map[c.subject], nil] }
-    end
-  end
-
-  def match_cert(cert1, cert2)
-    (cert1.issuer.cmp(cert2.issuer) == 0) and cert1.serial == cert2.serial
-  end
-
-  def is_ca?(cert)
-    case guess_cert_type(cert)
-    when CERT_TYPE_SELF_SIGNED
-      true
-    when CERT_TYPE_OTHER 
-      true
-    else
-      false
-    end
-  end
-
-  def scan_certs
-    @self_signed_ca = []
-    @other_ca = []
-    @ee = []
-    @crl = []
-    @request = []
-    load_certs
-  end
-
-private
-
-  def add_path
-    @x509store.add_path(@certs_dir)
-  end
-
-  def do_verify(cert)
-    error_map = {}
-    crl_map = {}
-    result = @x509store.verify(cert) do |ok, ctx|
-      cert = ctx.current_cert
-      if ctx.current_crl
-       crl_map[cert.subject] = true
-      end
-      if ok
-       if !ctx.current_crl
-         if crl = @crl_store.find_crl(cert)
-           crl_map[cert.subject] = true
-           if crl.revoked.find { |revoked| revoked.serial == cert.serial }
-             ok = false
-             error_string = 'certification revoked'
-           end
-         end
-       end
-      end
-      error_map[cert.subject] = error_string if error_string
-      ok
-    end
-    error = if result
-       nil
-      else
-       error_map[cert.subject] || @x509store.error_string
-      end
-    return error, crl_map
-  end
-
-  def load_certs
-    @c_store.get_certs.each do |certfile|
-      cert = generate_cert(certfile)
-      case guess_cert_type(cert)
-      when CERT_TYPE_SELF_SIGNED
-       @self_signed_ca << cert
-      when CERT_TYPE_OTHER
-       @other_ca << cert
-      when CERT_TYPE_EE
-       @ee << cert
-      else
-       raise "Unknown cert type."
-      end
-    end
-    @c_store.get_crls.each do |crlfile|
-      @crl << generate_cert(crlfile)
-    end
-  end
-
-  CERT_TYPE_SELF_SIGNED = 0
-  CERT_TYPE_OTHER = 1
-  CERT_TYPE_EE = 2
-  def guess_cert_type(cert)
-    ca = self_signed = is_cert_self_signed(cert)
-    cert.extensions.each do |ext|
-      # Ignores criticality of extensions.  It's 'guess'ing.
-      case ext.oid
-      when 'basicConstraints'
-       /CA:(TRUE|FALSE), pathlen:(\d+)/ =~ ext.value
-       ca = ($1 == 'TRUE') unless ca
-      when 'keyUsage'
-       usage = ext.value.split(/\s*,\s*/)
-       ca = usage.include?('Certificate Sign') unless ca
-      when 'nsCertType'
-       usage = ext.value.split(/\s*,\s*/)
-       ca = usage.include?('SSL CA') unless ca
-      end
-    end
-    if ca
-      if self_signed
-       CERT_TYPE_SELF_SIGNED
-      else
-       CERT_TYPE_OTHER
-      end
-    else
-      CERT_TYPE_EE
-    end
-  end
-
-  def is_cert_self_signed(cert)
-    # cert.subject.cmp(cert.issuer) == 0
-    cert.subject.to_s == cert.issuer.to_s
-  end
-end
-
-
-if $0 == __FILE__
-  c = CertStore.new("trust_certs")
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/openssl/cipher.rb b/ruby/doc/ruby/ruby-1.8.7/sample/openssl/cipher.rb
deleted file mode 100644 (file)
index 6e8cdb9..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env ruby
-require 'openssl'
-
-text = "abcdefghijklmnopqrstuvwxyz"
-pass = "secret password"
-salt = "8 octets"        # or nil
-alg = "DES-EDE3-CBC"
-#alg = "AES-128-CBC"
-
-puts "--Setup--"
-puts %(clear text:    "#{text}")
-puts %(password:      "#{pass}")
-puts %(salt:          "#{salt}")
-puts %(cipher alg:    "#{alg}")
-puts
-
-puts "--Encrypting--"
-des = OpenSSL::Cipher::Cipher.new(alg)
-des.pkcs5_keyivgen(pass, salt)
-des.encrypt
-cipher =  des.update(text)
-cipher << des.final
-puts %(encrypted text: #{cipher.inspect})
-puts
-
-puts "--Decrypting--"
-des = OpenSSL::Cipher::Cipher.new(alg)
-des.pkcs5_keyivgen(pass, salt)
-des.decrypt
-out =  des.update(cipher)
-out << des.final
-puts %(decrypted text: "#{out}")
-puts
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/openssl/crlstore.rb b/ruby/doc/ruby/ruby-1.8.7/sample/openssl/crlstore.rb
deleted file mode 100644 (file)
index b305913..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-begin
-  require 'http-access2'
-rescue LoadError
-  STDERR.puts("Cannot load http-access2.  CRL might not be fetched.")
-end
-require 'c_rehash'
-
-
-class CrlStore
-  def initialize(c_store)
-    @c_store = c_store
-    @c_store.hash_dir(true)
-  end
-
-  def find_crl(cert)
-    do_find_crl(cert)
-  end
-
-private
-
-  def do_find_crl(cert)
-    unless ca = find_ca(cert)
-      return nil
-    end
-    unless crlfiles = @c_store.get_crls(ca.subject)
-      if crl = renew_crl(cert, ca)
-       @c_store.add_crl(crl)
-       return crl
-      end
-      return nil
-    end
-    crlfiles.each do |crlfile|
-      next unless crl = load_crl(crlfile)
-      if crl.next_update < Time.now
-       if new_crl = renew_crl(cert, ca)
-         @c_store.delete_crl(crl)
-         @c_store.add_crl(new_crl)
-         crl = new_crl
-       end
-      end
-      if check_valid(crl, ca)
-       return crl
-      end
-    end
-    nil
-  end
-
-  def find_ca(cert)
-    @c_store.get_certs(cert.issuer).each do |cafile|
-      ca = load_cert(cafile)
-      if cert.verify(ca.public_key)
-       return ca
-      end
-    end
-    nil
-  end
-
-  def fetch(location)
-    if /\AURI:(.*)\z/ =~ location
-      begin
-       c = HTTPAccess2::Client.new(ENV['http_proxy'] || ENV['HTTP_PROXY'])
-       c.get_content($1)
-      rescue NameError, StandardError
-       nil
-      end
-    else
-      nil
-    end
-  end
-
-  def load_cert(certfile)
-    load_cert_str(File.read(certfile))
-  end
-
-  def load_crl(crlfile)
-    load_crl_str(File.read(crlfile))
-  end
-
-  def load_cert_str(cert_str)
-    OpenSSL::X509::Certificate.new(cert_str)
-  end
-
-  def load_crl_str(crl_str)
-    OpenSSL::X509::CRL.new(crl_str)
-  end
-
-  def check_valid(crl, ca)
-    unless crl.verify(ca.public_key)
-      return false
-    end
-    crl.last_update <= Time.now
-  end
-
-  RE_CDP = /\AcrlDistributionPoints\z/
-  def get_cdp(cert)
-    if cdp_ext = cert.extensions.find { |ext| RE_CDP =~ ext.oid }
-      cdp_ext.value.chomp
-    else
-      false
-    end
-  end
-
-  def renew_crl(cert, ca)
-    if cdp = get_cdp(cert)
-      if new_crl_str = fetch(cdp)
-       new_crl = load_crl_str(new_crl_str)
-       if check_valid(new_crl, ca)
-         return new_crl
-       end
-      end
-    end
-    false
-  end
-end
-
-if $0 == __FILE__
-  dir = "trust_certs"
-  c_store = CHashDir.new(dir)
-  s = CrlStore.new(c_store)
-  c = OpenSSL::X509::Certificate.new(File.read("cert_store/google_codesign.pem"))
-  p s.find_crl(c)
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/openssl/echo_cli.rb b/ruby/doc/ruby/ruby-1.8.7/sample/openssl/echo_cli.rb
deleted file mode 100644 (file)
index 29b356a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'socket'
-require 'openssl'
-require 'getopts'
-
-getopts nil, "p:2000", "c:", "k:", "C:"
-
-host      = ARGV[0] || "localhost"
-port      = $OPT_p
-cert_file = $OPT_c
-key_file  = $OPT_k
-ca_path   = $OPT_C
-
-ctx = OpenSSL::SSL::SSLContext.new()
-if cert_file && key_file
-  ctx.cert = OpenSSL::X509::Certificate.new(File::read(cert_file))
-  ctx.key  = OpenSSL::PKey::RSA.new(File::read(key_file))
-end
-if ca_path
-  ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER
-  ctx.ca_path = ca_path
-else
-  $stderr.puts "!!! WARNING: PEER CERTIFICATE WON'T BE VERIFIED !!!"
-end
-
-s = TCPSocket.new(host, port)
-ssl = OpenSSL::SSL::SSLSocket.new(s, ctx)
-ssl.connect # start SSL session
-ssl.sync_close = true  # if true the underlying socket will be
-                       # closed in SSLSocket#close. (default: false)
-while line = $stdin.gets
-  ssl.write line
-  print ssl.gets
-end
-
-ssl.close
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/openssl/echo_svr.rb b/ruby/doc/ruby/ruby-1.8.7/sample/openssl/echo_svr.rb
deleted file mode 100644 (file)
index be8e10f..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'socket'
-require 'openssl'
-require 'getopts'
-
-getopts nil, "p:2000", "c:", "k:", "C:"
-
-port      = $OPT_p
-cert_file = $OPT_c
-key_file  = $OPT_k
-ca_path   = $OPT_C
-
-if cert_file && key_file
-  cert = OpenSSL::X509::Certificate.new(File::read(cert_file))
-  key  = OpenSSL::PKey::RSA.new(File::read(key_file))
-else
-  key = OpenSSL::PKey::RSA.new(512){ print "." }
-  puts
-  cert = OpenSSL::X509::Certificate.new
-  cert.version = 2
-  cert.serial = 0
-  name = OpenSSL::X509::Name.new([["C","JP"],["O","TEST"],["CN","localhost"]])
-  cert.subject = name
-  cert.issuer = name
-  cert.not_before = Time.now
-  cert.not_after = Time.now + 3600
-  cert.public_key = key.public_key
-  ef = OpenSSL::X509::ExtensionFactory.new(nil,cert)
-  cert.extensions = [
-    ef.create_extension("basicConstraints","CA:FALSE"),
-    ef.create_extension("subjectKeyIdentifier","hash"),
-    ef.create_extension("extendedKeyUsage","serverAuth"),
-    ef.create_extension("keyUsage",
-                        "keyEncipherment,dataEncipherment,digitalSignature")
-  ]
-  ef.issuer_certificate = cert
-  cert.add_extension ef.create_extension("authorityKeyIdentifier",
-                                         "keyid:always,issuer:always")
-  cert.sign(key, OpenSSL::Digest::SHA1.new)
-end
-
-ctx = OpenSSL::SSL::SSLContext.new()
-ctx.key = key
-ctx.cert = cert
-if ca_path
-  ctx.verify_mode =
-    OpenSSL::SSL::VERIFY_PEER|OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT
-  ctx.ca_path = ca_path
-else
-  $stderr.puts "!!! WARNING: PEER CERTIFICATE WON'T BE VERIFIED !!!"
-end
-
-tcps = TCPServer.new(port)
-ssls = OpenSSL::SSL::SSLServer.new(tcps, ctx)
-loop do
-  ns = ssls.accept
-  while line = ns.gets
-    ns.write line
-  end
-  ns.close
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/openssl/gen_csr.rb b/ruby/doc/ruby/ruby-1.8.7/sample/openssl/gen_csr.rb
deleted file mode 100644 (file)
index 5858acd..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'getopts'
-require 'openssl'
-
-include OpenSSL
-
-def usage
-  myname = File::basename($0)
-  $stderr.puts <<EOS
-Usage: #{myname} [--key keypair_file] name
-  name ... ex. /C=JP/O=RRR/OU=CA/CN=NaHi/emailAddress=nahi@example.org
-EOS
-  exit
-end
-
-getopts nil, "key:", "csrout:", "keyout:"
-keypair_file = $OPT_key
-csrout = $OPT_csrout || "csr.pem"
-keyout = $OPT_keyout || "keypair.pem"
-
-$stdout.sync = true
-name_str = ARGV.shift or usage()
-p name_str
-name = X509::Name.parse(name_str)
-
-keypair = nil
-if keypair_file
-  keypair = PKey::RSA.new(File.open(keypair_file).read)
-else
-  keypair = PKey::RSA.new(1024) { putc "." }
-  puts
-  puts "Writing #{keyout}..."
-  File.open(keyout, "w", 0400) do |f|
-    f << keypair.to_pem
-  end
-end
-
-puts "Generating CSR for #{name_str}"
-
-req = X509::Request.new
-req.version = 0
-req.subject = name
-req.public_key = keypair.public_key
-req.sign(keypair, Digest::MD5.new)
-
-puts "Writing #{csrout}..."
-File.open(csrout, "w") do |f|
-  f << req.to_pem
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/openssl/smime_read.rb b/ruby/doc/ruby/ruby-1.8.7/sample/openssl/smime_read.rb
deleted file mode 100644 (file)
index 0f08f54..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-require 'getopts'
-require 'openssl'
-include OpenSSL
-
-getopts nil, "c:", "k:", "C:"
-
-cert_file = $OPT_c
-key_file  = $OPT_k
-ca_path   = $OPT_C
-
-data = $stdin.read
-
-cert = X509::Certificate.new(File::read(cert_file))
-key = PKey::RSA.new(File::read(key_file))
-p7enc = PKCS7::read_smime(data)
-data = p7enc.decrypt(key, cert)
-
-store = X509::Store.new
-store.add_path(ca_path)
-p7sig = PKCS7::read_smime(data)
-if p7sig.verify([], store)
-  puts p7sig.data
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/openssl/smime_write.rb b/ruby/doc/ruby/ruby-1.8.7/sample/openssl/smime_write.rb
deleted file mode 100644 (file)
index ce32cd8..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-require 'openssl'
-require 'getopts'
-include OpenSSL
-
-getopts nil, "c:", "k:", "r:"
-
-cert_file = $OPT_c
-key_file  = $OPT_k
-rcpt_file = $OPT_r
-
-cert = X509::Certificate.new(File::read(cert_file))
-key = PKey::RSA.new(File::read(key_file))
-
-data  = "Content-Type: text/plain\r\n"
-data << "\r\n"
-data << "This is a clear-signed message.\r\n"
-
-p7sig  = PKCS7::sign(cert, key, data, [], PKCS7::DETACHED)
-smime0 = PKCS7::write_smime(p7sig)
-
-rcpt  = X509::Certificate.new(File::read(rcpt_file))
-p7enc = PKCS7::encrypt([rcpt], smime0)
-print PKCS7::write_smime(p7enc)   
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/openssl/wget.rb b/ruby/doc/ruby/ruby-1.8.7/sample/openssl/wget.rb
deleted file mode 100644 (file)
index 0362ab9..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'net/https'
-require 'getopts'
-
-getopts nil, 'C:'
-
-ca_path = $OPT_C
-
-uri = URI.parse(ARGV[0])
-if proxy = ENV['HTTP_PROXY']
-  prx_uri = URI.parse(proxy)
-  prx_host = prx_uri.host
-  prx_port = prx_uri.port
-end
-
-h = Net::HTTP.new(uri.host, uri.port, prx_host, prx_port)
-h.set_debug_output($stderr) if $DEBUG
-if uri.scheme == "https"
-  h.use_ssl = true
-  if ca_path
-    h.verify_mode = OpenSSL::SSL::VERIFY_PEER
-    h.ca_path = ca_path
-  else
-    $stderr.puts "!!! WARNING: PEER CERTIFICATE WON'T BE VERIFIED !!!"
-  end
-end
-
-path = uri.path.empty? ? "/" : uri.path
-h.get2(path){|resp|
-  STDERR.puts h.peer_cert.inspect if h.peer_cert
-  print resp.body
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/optparse/opttest.rb b/ruby/doc/ruby/ruby-1.8.7/sample/optparse/opttest.rb
deleted file mode 100644 (file)
index 61b157b..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/usr/bin/ruby -I.
-
-require 'optparse'
-require 'optparse/time'
-require 'pp'
-
-# keywords
-CODES = %w[iso-2022-jp shift_jis euc-jp utf8 binary]
-CODE_ALIASES = {"jis" => "iso-2022-jp", "sjis" => "shift_jis"}
-POSSIBLE_CODES = "(#{(CODES+CODE_ALIASES.keys).join(',')})"
-
-ARGV.options do
-  |opts|
-  opts.banner << " argv..."
-
-  # separater
-  opts.on_tail
-  opts.on_tail("common options:")
-
-  # no argument, shows at tail
-  opts.on_tail("--help", "show this message") {puts opts; exit}
-
-  # mandatory argument
-  opts.on("-r", "--require=LIBRARY", String,
-         "require the LIBRARY, before",
-         "executing your script") {|@library|}
-
-  # optional argument
-  opts.on("-i", "--inplace=[EXTENSION]",
-         "edit ARGV files in place", # multiline description
-         "(make backup if EXTENSION supplied)") {|@inplace| @inplace ||= ''}
-
-  opts.on("-N=[NUM]", Integer) {|@number|}
-
-  # additional class
-  opts.on("-t", "--[no-]time[=TIME]", Time, "it's the time") {|@time|}
-
-  # limit argument syntax
-  opts.on("-[0-7]", "-F", "--irs=[OCTAL]", OptionParser::OctalInteger,
-         "specify record separator", "(\\0, if no argument)") {|@irs|}
-
-  # boolean switch(default true)
-  @exec = true
-  opts.on("-n", "--no-exec[=FLAG]", TrueClass, "not really execute") {|@exec|}
-
-  # array
-  opts.on("-a", "--list[=LIST,LIST]", Array, "list") {|@list|}
-
-  # fixed size array
-  opts.on("--pair[=car,cdr]", Array, "pair") {|@x, @y|}
-
-  # keyword completion
-  opts.on("--code=CODE", CODES, CODE_ALIASES, "select coding system",
-         "("+CODES.join(",")+",", " "+CODE_ALIASES.keys.join(",")+")") {|@code|}
-
-  # optional argument with keyword completion
-  opts.on("--type[=TYPE]", [:text, :binary], "select type(text, binary)") {|@type|}
-
-  # boolean switch with optional argument(default false)
-  opts.on("-v", "--[no-]verbose=[FLAG]", "run verbosely") {|@verbose|}
-
-  # easy way, set local variable
-  opts.on("-q", "--quit", "quit when ARGV is empty") {|@quit|}
-
-  # adding on the fly
-  opts.on("--add=SWITCH=[ARG]", "add option on the fly", /\A(\w+)(?:=.+)?\Z/) do
-    |opt, var|
-    opts.on("--#{opt}", "added in runtime", &eval("proc {|@#{var}|}"))
-  end
-
-  opts.on_head("specific options:")
-
-  # no argument
-  opts.on_tail("--version", "show version") do
-    puts OptionParser::Version.join('.')
-    exit
-  end
-  opts.parse!
-end
-
-pp self
-(print ARGV.options; exit) if @quit
-ARGV.options = nil             # no more parse
-puts "ARGV = #{ARGV.join(' ')}" if !ARGV.empty?
-#opts.variable.each {|sym| puts "#{sym} = #{opts.send(sym).inspect}"}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/optparse/subcommand.rb b/ruby/doc/ruby/ruby-1.8.7/sample/optparse/subcommand.rb
deleted file mode 100644 (file)
index 21c42dd..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#! /usr/bin/ruby
-# contributed by Minero Aoki.
-
-require 'optparse'
-
-parser = OptionParser.new
-parser.on('-i') { puts "-i" }
-parser.on('-o') { puts '-o' }
-
-subparsers = Hash.new {|h,k|
-  $stderr.puts "no such subcommand: #{k}"
-  exit 1
-}
-subparsers['add'] = OptionParser.new.on('-i') { puts "add -i" }
-subparsers['del'] = OptionParser.new.on('-i') { puts "del -i" }
-subparsers['list'] = OptionParser.new.on('-i') { puts "list -i" }
-
-parser.order!(ARGV)
-subparsers[ARGV.shift].parse!(ARGV) unless ARGV.empty?
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/philos.rb b/ruby/doc/ruby/ruby-1.8.7/sample/philos.rb
deleted file mode 100644 (file)
index 5c8f43c..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# The Dining Philosophers - thread example
-#
-require "thread"
-
-srand
-#srand
-N=9                            # number of philosophers
-$forks = []
-for i in 0..N-1
-  $forks[i] = Mutex.new
-end
-$state = "-o"*N
-
-def wait
-  sleep rand(20)/10.0
-end
-
-def think(n)
-  wait
-end
-
-def eat(n)
-  wait
-end
-
-def philosopher(n)
-  while true
-    think n
-    $forks[n].lock
-    if not $forks[(n+1)%N].try_lock
-      $forks[n].unlock         # avoid deadlock
-      next
-    end
-    $state[n*2] = ?|;
-    $state[(n+1)%N*2] = ?|;
-    $state[n*2+1] = ?*;
-    print $state, "\n"
-    eat(n)
-    $state[n*2] = ?-;
-    $state[(n+1)%N*2] = ?-;
-    $state[n*2+1] = ?o;
-    print $state, "\n"
-    $forks[n].unlock
-    $forks[(n+1)%N].unlock
-  end
-end
-
-for n in 0..N-1
-  Thread.start(n){|i| philosopher(i)}
-  sleep 0.1
-end
-
-sleep
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/pi.rb b/ruby/doc/ruby/ruby-1.8.7/sample/pi.rb
deleted file mode 100644 (file)
index 63be974..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/local/bin/ruby
-
-k, a, b, a1, b1 = 2, 4, 1, 12, 4
-
-loop do
-  # Next approximation
-  p, q, k = k*k, 2*k+1, k+1
-  a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
-  # Print common digits
-  d = a / b
-  d1 = a1 / b1
-  while d == d1
-    print d
-    $stdout.flush
-    a, a1 = 10*(a%b), 10*(a1%b1)
-    d, d1 = a/b, a1/b1
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/rcs.awk b/ruby/doc/ruby/ruby-1.8.7/sample/rcs.awk
deleted file mode 100644 (file)
index 0897928..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-BEGIN {
-    sw = 40.0;
-    dw = 78.0;
-    hdw = dw / 2.0;
-    w = 20.0;
-    h =1.0;
-    d = 0.2;
-    ss="abcdefghijklmnopqrstuvwxyz0123456789!#$%^&*()-=\\[];'`,./";
-    rnd = srand();
-}
-
-{
-    xr = -hdw; y = h * 1.0; maxxl = -999;
-    s = "";
-    while (xr < hdw) {
-       x = xr * (1 + y) - y * w / 2;
-       i = (x / (1 + h) + sw /2);
-       c = (0 < i && i < length($0)) ? substr($0, i, 1) : "0";
-       y = h - d * c;
-       xl = xr - w * y / (1 + y);
-       if (xl < -hdw || xl >= hdw || xl <= maxxl) {
-           t = rand() * length(ss);
-           c = substr(ss, t, 1);
-       }
-       else {
-           c = substr(s, xl + hdw, 1);
-           maxxl = xl;
-       }
-       s = s c;
-       xr = xr + 1;
-    }
-    print s;
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/rcs.dat b/ruby/doc/ruby/ruby-1.8.7/sample/rcs.dat
deleted file mode 100644 (file)
index 61c88bf..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-0000000000000000220000000000000000
-0000000000000111221110000000000000
-0000000000111112222111110000000000
-0000000111111112222111111110000000
-0000111111111122222211111111110000
-0111111111111222222221111111111110
-2222222222222222222222222222222222
-1122222222222222222222222222222211
-0111122222222222222222222222211110
-0011111122222222222222222211111100
-0001111111222222222222221111111000
-0000111112222222222222222111110000
-0000011122222222112222222211100000
-0000001122222221111222222211000000
-0000000122221111111111222210000000
-0000000221111111111111111220000000
-0000000000000000000000000000000000
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/rcs.rb b/ruby/doc/ruby/ruby-1.8.7/sample/rcs.rb
deleted file mode 100644 (file)
index 0bdf81c..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# random dot steraogram
-# usage: rcs.rb rcs.dat
-
-sw = 40.0      # width of original pattern
-dw = 78.0      # width of generating Random Character Streogram
-hdw = dw / 2.0
-w = 20.0       # distance between eyes
-h =1.0         # distance from screen and base plane
-d = 0.2                # z value unit
-ss="abcdefghijklmnopqrstuvwxyz0123456789#!$%^&*()-=\\[];'`,./"
-rnd = srand()  # You don't actually need this in ruby - srand() is called
-               # on the first call of rand().
-
-while gets()
-#  print($_)
-  xr = -hdw; y = h * 1.0; maxxl = -999
-  s = ""
-  while xr < hdw
-    x = xr * (1 + y) - y * w / 2
-    i = (x / (1 + h) + sw / 2)
-    if (1 < i && i < $_.length)
-      c = $_[i, 1].to_i
-    else
-      c = 0
-    end
-    y = h - d * c
-    xl = xr - w * y / (1 + y)
-    if xl < -hdw || xl >= hdw || xl <= maxxl
-      tt = rand(ss.length)
-      c = ss[tt, 1]
-    else
-      c = s[xl + hdw, 1]
-      maxxl = xl
-    end
-    s += c
-    xr += 1
-  end
-  print(s, "\n")
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/regx.rb b/ruby/doc/ruby/ruby-1.8.7/sample/regx.rb
deleted file mode 100644 (file)
index 6d90b7f..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-st = "\033[7m"
-en = "\033[m"
-#st = "<<"
-#en = ">>"
-
-while true
-  print "str> "
-  STDOUT.flush
-  input = gets
-  break if not input
-  if input != ""
-    str = input
-    str.chop!
-  end
-  print "pat> "
-  STDOUT.flush
-  re = gets
-  break if not re
-  re.chop!
-  str.gsub! re, "#{st}\\&#{en}"
-  print str, "\n"
-end
-print "\n"
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/rss/blend.rb b/ruby/doc/ruby/ruby-1.8.7/sample/rss/blend.rb
deleted file mode 100644 (file)
index 351f6f3..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env ruby
-
-require "rss"
-
-feeds = []
-verbose = false
-encoding = "UTF-8"
-
-def error(exception)
-  mark = "=" * 20
-  mark = "#{mark} error #{mark}"
-  STDERR.puts mark
-  STDERR.puts exception.class
-  STDERR.puts exception.message
-  STDERR.puts exception.backtrace
-  STDERR.puts mark
-end
-
-before_time = Time.now
-ARGV.each do |fname|
-  if fname == '-v'
-    verbose = true
-    next
-  end
-  rss = nil
-  f = File.new(fname).read
-  begin
-    ## do validate parse
-    rss = RSS::Parser.parse(f)
-  rescue RSS::InvalidRSSError
-    error($!) if verbose
-    ## do non validate parse for invalid RSS 1.0
-    begin
-      rss = RSS::Parser.parse(f, false)
-    rescue RSS::Error
-      ## invalid RSS.
-      error($!) if verbose
-    end
-  rescue RSS::Error
-    error($!) if verbose
-  end
-  if rss.nil?
-    STDERR.puts "#{fname} does not include RSS 1.0 or 0.9x/2.0"
-  else
-    begin
-      rss.output_encoding = encoding
-    rescue RSS::UnknownConversionMethodError
-      error($!) if verbose
-    end
-    feeds << rss
-  end
-end
-processing_time = Time.now - before_time
-
-rss = RSS::Maker.make("1.0") do |maker|
-  maker.encoding = encoding
-  maker.channel.about = "http://example.com/blend.rdf"
-  maker.channel.title = "blended feeds"
-  maker.channel.link = "http://example.com/"
-  maker.channel.description = "blended feeds generated by RSS Parser"
-
-  feeds.each do |feed|
-    feed.items.each do |item|
-      item.setup_maker(maker.items)
-    end
-  end
-
-  maker.items.each do |item|
-    item.title ||= "UNKNOWN"
-    item.link ||= "UNKNOWN"
-  end
-
-  maker.items.do_sort = true
-  maker.items.max_size = 15
-end
-puts rss
-
-STDERR.puts "Used XML parser: #{RSS::Parser.default_parser}"
-STDERR.puts "Processing time: #{processing_time}s"
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/rss/convert.rb b/ruby/doc/ruby/ruby-1.8.7/sample/rss/convert.rb
deleted file mode 100644 (file)
index e6bff4c..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env ruby
-
-require "rss"
-
-feeds = []
-verbose = false
-encoding = "UTF-8"
-to_version = "1.0"
-
-def error(exception)
-  mark = "=" * 20
-  mark = "#{mark} error #{mark}"
-  STDERR.puts mark
-  STDERR.puts exception.class
-  STDERR.puts exception.message
-  STDERR.puts exception.backtrace
-  STDERR.puts mark
-end
-
-before_time = Time.now
-ARGV.each do |fname|
-  case fname
-  when '-v'
-    verbose = true
-    next
-  when /^-t(0\.91|1\.0|2\.0|atom)$/
-    to_version = $1
-    next
-  end
-  rss = nil
-  f = File.read(fname)
-  begin
-    ## do validate parse
-    rss = RSS::Parser.parse(f)
-  rescue RSS::InvalidRSSError
-    error($!) if verbose
-    ## do non validate parse for invalid RSS 1.0
-    begin
-      rss = RSS::Parser.parse(f, false)
-    rescue RSS::Error
-      ## invalid RSS.
-      error($!) if verbose
-    end
-  rescue RSS::Error
-    error($!) if verbose
-  end
-  if rss.nil?
-    STDERR.puts "#{fname} does not include RSS 1.0 or 0.9x/2.0"
-  else
-    begin
-      rss.output_encoding = encoding
-    rescue RSS::UnknownConversionMethodError
-      error($!) if verbose
-    end
-    feeds << [fname, rss]
-  end
-end
-processing_time = Time.now - before_time
-
-feeds.each do |fname, rss|
-  converted_rss = rss.to_xml(to_version)
-  output_name = fname.sub(/(\.[^\.]+)$/, "-#{to_version}\\1")
-  File.open(output_name, "w") do |output|
-    output.print(converted_rss)
-  end
-end
-
-STDERR.puts "Used XML parser: #{RSS::Parser.default_parser}"
-STDERR.puts "Processing time: #{processing_time}s"
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/rss/list_description.rb b/ruby/doc/ruby/ruby-1.8.7/sample/rss/list_description.rb
deleted file mode 100644 (file)
index d4b98a9..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/usr/bin/env ruby
-
-require "nkf"
-class String
-  # From tdiary.rb
-  def shorten( len = 120 )
-    lines = NKF::nkf( "-e -m0 -f#{len}", self.gsub( /\n/, ' ' ) ).split( /\n/ )
-    lines[0].concat( '...' ) if lines[0] and lines[1]
-    lines[0]
-  end
-end
-
-require "rss"
-
-channels = {}
-verbose = false
-
-def error(exception)
-  mark = "=" * 20
-  mark = "#{mark} error #{mark}"
-  puts mark
-  puts exception.class
-  puts exception.message
-  puts exception.backtrace
-  puts mark
-end
-
-before_time = Time.now
-ARGV.each do |fname|
-  if fname == '-v'
-    verbose = true
-    next
-  end
-  rss = nil
-  f = File.new(fname).read
-  begin
-    ## do validate parse
-    rss = RSS::Parser.parse(f)
-  rescue RSS::InvalidRSSError
-    error($!) if verbose
-    ## do non validate parse for invalid RSS 1.0
-    begin
-      rss = RSS::Parser.parse(f, false)
-    rescue RSS::Error
-      ## invalid RSS.
-      error($!) if verbose
-    end
-  rescue RSS::Error
-    error($!) if verbose
-  end
-  if rss.nil?
-    puts "#{fname} does not include RSS 1.0 or 0.9x/2.0"
-  else
-    begin
-      rss.output_encoding = "euc-jp"
-    rescue RSS::UnknownConversionMethodError
-      error($!) if verbose
-    end
-
-    rss = rss.to_rss("1.0") do |maker|
-      maker.channel.about ||= maker.channel.link
-      maker.channel.description ||= "No description"
-      maker.items.each do |item|
-        item.title ||= "No title"
-        item.link ||= "UNKNOWN"
-      end
-    end
-    next if rss.nil?
-
-    rss.items.each do |item|
-      channels[rss.channel.title] ||= []
-      channels[rss.channel.title] << item if item.description
-    end
-  end
-end
-processing_time = Time.now - before_time
-
-channels.sort do |x, y|
-  x[0] <=> y[0]
-end[0..20].each do |title, items|
-  puts "Channel: #{title}" unless items.empty?
-  items.sort do |x, y|
-    x.title <=> y.title
-  end[0..10].each do |item|
-    puts "  Item: #{item.title.shorten(50)}"
-    puts "    Description: #{item.description.shorten(50)}"
-  end
-end
-
-puts "Used XML parser: #{RSS::Parser.default_parser}"
-puts "Processing time: #{processing_time}s"
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/rss/re_read.rb b/ruby/doc/ruby/ruby-1.8.7/sample/rss/re_read.rb
deleted file mode 100644 (file)
index ee54a18..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env ruby
-
-require "rss"
-
-def error(exception)
-  mark = "=" * 20
-  mark = "#{mark} error #{mark}"
-  puts mark
-  puts exception.class
-  puts exception.message
-  puts exception.backtrace
-  puts mark
-end
-
-verbose = false
-before_time = Time.now
-
-ARGV.each do |fname|
-  if fname == '-v'
-    verbose = true
-    next
-  end
-  source = nil
-  File.open(fname) do |f|
-    source = f.read
-  end
-  
-  rss = nil
-  read = false
-  begin
-    rss = RSS::Parser.parse(source)
-    puts "Re-read valid feed: #{fname}"
-    RSS::Parser.parse(rss.to_s)
-    read = true
-  rescue RSS::InvalidRSSError
-    error($!) if verbose
-    ## do non validate parse for invalid feed
-    begin
-      rss = RSS::Parser.parse(source, false)
-    rescue RSS::Error
-      ## invalid feed
-      error($!) if verbose
-    end
-  rescue RSS::Error
-    error($!) if verbose
-  end
-  
-  if rss.nil?
-    puts "Invalid feed: #{fname}"
-  elsif !read
-    puts "Re-read invalid feed: #{fname}"
-    begin
-      RSS::Parser.parse(rss.to_s)
-    rescue RSS::Error
-      puts "  Error occurred: #{fname}"
-      error($!) if verbose
-    end
-  end
-end
-
-processing_time = Time.now - before_time
-
-puts "Used XML parser: #{RSS::Parser.default_parser}"
-puts "Processing time: #{processing_time}s"
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/rss/rss_recent.rb b/ruby/doc/ruby/ruby-1.8.7/sample/rss/rss_recent.rb
deleted file mode 100644 (file)
index 38b57c3..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/usr/bin/env ruby
-
-require "nkf"
-class String
-  # From tdiary.rb
-  def shorten( len = 120 )
-    lines = NKF::nkf( "-e -m0 -f#{len}", self.gsub( /\n/, ' ' ) ).split( /\n/ )
-    lines[0].concat( '...' ) if lines[0] and lines[1]
-    lines[0]
-  end
-end
-
-require "rss"
-
-items = []
-verbose = false
-
-def error(exception)
-  mark = "=" * 20
-  mark = "#{mark} error #{mark}"
-  puts mark
-  puts exception.class
-  puts exception.message
-  puts exception.backtrace
-  puts mark
-end
-before_time = Time.now
-ARGV.each do |fname|
-  if fname == '-v'
-    verbose = true
-    next
-  end
-  rss = nil
-  f = File.new(fname).read
-  begin
-    ## do validate parse
-    rss = RSS::Parser.parse(f)
-  rescue RSS::InvalidRSSError
-    error($!) if verbose
-    ## do non validate parse for invalid RSS 1.0
-    begin
-      rss = RSS::Parser.parse(f, false)
-    rescue RSS::Error
-      ## invalid RSS.
-      error($!) if verbose
-    end
-  rescue RSS::Error
-    error($!) if verbose
-  end
-  if rss.nil?
-    puts "#{fname} does not include RSS 1.0 or 0.9x/2.0"
-  else
-    begin
-      rss.output_encoding = "euc-jp"
-    rescue RSS::UnknownConversionMethodError
-      error($!) if verbose
-    end
-
-    rss = rss.to_rss("1.0") do |maker|
-      maker.channel.about ||= maker.channel.link
-      maker.channel.description ||= "No description"
-      maker.items.each do |item|
-        item.title ||= "UNKNOWN"
-        item.link ||= "UNKNOWN"
-      end
-    end
-    next if rss.nil?
-
-    rss.items.each do |item|
-      items << [rss.channel, item] if item.dc_date
-    end
-  end
-end
-processing_time = Time.now - before_time
-
-items.sort do |x, y|
-  y[1].dc_date <=> x[1].dc_date
-end[0..20].each do |channel, item|
-  puts "#{item.dc_date.localtime.iso8601}: " <<
-    "#{channel.title}: #{item.title}"
-  puts " Description: #{item.description.shorten(50)}" if item.description
-end
-
-puts "Used XML parser: #{RSS::Parser.default_parser}"
-puts "Processing time: #{processing_time}s"
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/sieve.rb b/ruby/doc/ruby/ruby-1.8.7/sample/sieve.rb
deleted file mode 100644 (file)
index e0bb21d..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# sieve of Eratosthenes
-max = Integer(ARGV.shift || 100)
-sieve = []
-for i in 2 .. max
-  sieve[i] = i
-end
-
-for i in 2 .. Math.sqrt(max)
-  next unless sieve[i]
-  (i*i).step(max, i) do |j|
-    sieve[j] = nil
-  end
-end
-puts sieve.compact.join(", ")
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/svr.rb b/ruby/doc/ruby/ruby-1.8.7/sample/svr.rb
deleted file mode 100644 (file)
index 11cfc5f..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# socket example - server side
-# usage: ruby svr.rb
-
-# this server might be blocked by an ill-behaved client.
-# see tsvr.rb which is safe from client blocking.
-
-require "socket"
-
-gs = TCPserver.open(0)
-addr = gs.addr
-addr.shift
-printf("server is on %s\n", addr.join(":"))
-socks = [gs]
-
-loop do
-  nsock = select(socks);
-  next if nsock == nil
-  for s in nsock[0]
-    if s == gs
-      ns = s.accept
-      socks.push(ns)
-      print(s, " is accepted\n")
-    else
-      if s.eof?
-       print(s, " is gone\n")
-       s.close
-       socks.delete(s)
-      # single thread gets may block whole service
-      elsif str = s.gets   
-         s.write(str)
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/test.rb b/ruby/doc/ruby/ruby-1.8.7/sample/test.rb
deleted file mode 100644 (file)
index eb0791b..0000000
+++ /dev/null
@@ -1,2093 +0,0 @@
-#! /usr/bin/env ruby
-
-$KCODE = "none"
-$testnum=0
-$ntest=0
-$failed = 0
-
-def test_check(what)
-  printf "%s\n", what
-  $what = what
-  $testnum = 0
-end
-
-def test_ok(cond,n=1)
-  $testnum+=1
-  $ntest+=1
-  if cond
-    printf "ok %d\n", $testnum
-  else
-    where = caller(n)[0]
-    printf "not ok %s %d -- %s\n", $what, $testnum, where
-    $failed+=1 
-  end
-end
-
-# make sure conditional operators work
-
-test_check "assignment"
-
-a=[]; a[0] ||= "bar";
-test_ok(a[0] == "bar")
-h={}; h["foo"] ||= "bar";
-test_ok(h["foo"] == "bar")
-
-aa = 5
-aa ||= 25
-test_ok(aa == 5)
-bb ||= 25
-test_ok(bb == 25)
-cc &&=33
-test_ok(cc == nil)
-cc = 5
-cc &&=44
-test_ok(cc == 44)
-
-a = nil; test_ok(a == nil)
-a = 1; test_ok(a == 1)
-a = []; test_ok(a == [])
-a = [1]; test_ok(a == [1])
-a = [nil]; test_ok(a == [nil])
-a = [[]]; test_ok(a == [[]])
-a = [1,2]; test_ok(a == [1,2])
-a = [*[]]; test_ok(a == [])
-a = [*[1]]; test_ok(a == [1])
-a = [*[1,2]]; test_ok(a == [1,2])
-
-a = *nil; test_ok(a == nil)
-a = *1; test_ok(a == 1)
-a = *[]; test_ok(a == nil)
-a = *[1]; test_ok(a == 1)
-a = *[nil]; test_ok(a == nil)
-a = *[[]]; test_ok(a == [])
-a = *[1,2]; test_ok(a == [1,2])
-a = *[*[]]; test_ok(a == nil)
-a = *[*[1]]; test_ok(a == 1)
-a = *[*[1,2]]; test_ok(a == [1,2])
-
-a, = nil; test_ok(a == nil)
-a, = 1; test_ok(a == 1)
-a, = []; test_ok(a == nil)
-a, = [1]; test_ok(a == 1)
-a, = [nil]; test_ok(a == nil)
-a, = [[]]; test_ok(a == [])
-a, = 1,2; test_ok(a == 1)
-a, = [1,2]; test_ok(a == 1)
-a, = [*[]]; test_ok(a == nil)
-a, = [*[1]]; test_ok(a == 1)
-a, = *[1,2]; test_ok(a == 1)
-a, = [*[1,2]]; test_ok(a == 1)
-
-a, = *nil; test_ok(a == nil)
-a, = *1; test_ok(a == 1)
-a, = *[]; test_ok(a == nil)
-a, = *[1]; test_ok(a == 1)
-a, = *[nil]; test_ok(a == nil)
-a, = *[[]]; test_ok(a == [])
-a, = *[1,2]; test_ok(a == 1)
-a, = *[*[]]; test_ok(a == nil)
-a, = *[*[1]]; test_ok(a == 1)
-a, = *[*[1,2]]; test_ok(a == 1)
-
-*a = nil; test_ok(a == [nil])
-*a = 1; test_ok(a == [1])
-*a = []; test_ok(a == [[]])
-*a = [1]; test_ok(a == [[1]])
-*a = [nil]; test_ok(a == [[nil]])
-*a = [[]]; test_ok(a == [[[]]])
-*a = [1,2]; test_ok(a == [[1,2]])
-*a = [*[]]; test_ok(a == [[]])
-*a = [*[1]]; test_ok(a == [[1]])
-*a = [*[1,2]]; test_ok(a == [[1,2]])
-
-*a = *nil; test_ok(a == [nil])
-*a = *1; test_ok(a == [1])
-*a = *[]; test_ok(a == [])
-*a = *[1]; test_ok(a == [1])
-*a = *[nil]; test_ok(a == [nil])
-*a = *[[]]; test_ok(a == [[]])
-*a = *[1,2]; test_ok(a == [1,2])
-*a = *[*[]]; test_ok(a == [])
-*a = *[*[1]]; test_ok(a == [1])
-*a = *[*[1,2]]; test_ok(a == [1,2])
-
-a,b,*c = nil; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = 1; test_ok([a,b,c] == [1,nil,[]])
-a,b,*c = []; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = [1]; test_ok([a,b,c] == [1,nil,[]])
-a,b,*c = [nil]; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = [[]]; test_ok([a,b,c] == [[],nil,[]])
-a,b,*c = [1,2]; test_ok([a,b,c] == [1,2,[]])
-a,b,*c = [*[]]; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = [*[1]]; test_ok([a,b,c] == [1,nil,[]])
-a,b,*c = [*[1,2]]; test_ok([a,b,c] == [1,2,[]])
-
-a,b,*c = *nil; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = *1; test_ok([a,b,c] == [1,nil,[]])
-a,b,*c = *[]; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = *[1]; test_ok([a,b,c] == [1,nil,[]])
-a,b,*c = *[nil]; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = *[[]]; test_ok([a,b,c] == [[],nil,[]])
-a,b,*c = *[1,2]; test_ok([a,b,c] == [1,2,[]])
-a,b,*c = *[*[]]; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = *[*[1]]; test_ok([a,b,c] == [1,nil,[]])
-a,b,*c = *[*[1,2]]; test_ok([a,b,c] == [1,2,[]])
-
-def f; yield nil; end; f {|a| test_ok(a == nil)}
-def f; yield 1; end; f {|a| test_ok(a == 1)}
-def f; yield []; end; f {|a| test_ok(a == [])}
-def f; yield [1]; end; f {|a| test_ok(a == [1])}
-def f; yield [nil]; end; f {|a| test_ok(a == [nil])}
-def f; yield [[]]; end; f {|a| test_ok(a == [[]])}
-def f; yield [*[]]; end; f {|a| test_ok(a == [])}
-def f; yield [*[1]]; end; f {|a| test_ok(a == [1])}
-def f; yield [*[1,2]]; end; f {|a| test_ok(a == [1,2])}
-
-def f; yield *nil; end; f {|a| test_ok(a == nil)}
-def f; yield *1; end; f {|a| test_ok(a == 1)}
-def f; yield *[1]; end; f {|a| test_ok(a == 1)}
-def f; yield *[nil]; end; f {|a| test_ok(a == nil)}
-def f; yield *[[]]; end; f {|a| test_ok(a == [])}
-def f; yield *[*[1]]; end; f {|a| test_ok(a == 1)}
-
-def f; yield; end; f {|a,| test_ok(a == nil)}
-def f; yield nil; end; f {|a,| test_ok(a == nil)}
-def f; yield 1; end; f {|a,| test_ok(a == 1)}
-def f; yield []; end; f {|a,| test_ok(a == nil)}
-def f; yield [1]; end; f {|a,| test_ok(a == 1)}
-def f; yield [nil]; end; f {|a,| test_ok(a == nil)}
-def f; yield [[]]; end; f {|a,| test_ok(a == [])}
-def f; yield [*[]]; end; f {|a,| test_ok(a == nil)}
-def f; yield [*[1]]; end; f {|a,| test_ok(a == 1)}
-def f; yield [*[1,2]]; end; f {|a,| test_ok(a == 1)}
-
-def f; yield *nil; end; f {|a,| test_ok(a == nil)}
-def f; yield *1; end; f {|a,| test_ok(a == 1)}
-def f; yield *[]; end; f {|a,| test_ok(a == nil)}
-def f; yield *[1]; end; f {|a,| test_ok(a == 1)}
-def f; yield *[nil]; end; f {|a,| test_ok(a == nil)}
-def f; yield *[[]]; end; f {|a,| test_ok(a == [])}
-def f; yield *[*[]]; end; f {|a,| test_ok(a == nil)}
-def f; yield *[*[1]]; end; f {|a,| test_ok(a == 1)}
-def f; yield *[*[1,2]]; end; f {|a,| test_ok(a == 1)}
-
-def f; yield; end; f {|*a| test_ok(a == [])}
-def f; yield nil; end; f {|*a| test_ok(a == [nil])}
-def f; yield 1; end; f {|*a| test_ok(a == [1])}
-def f; yield []; end; f {|*a| test_ok(a == [[]])}
-def f; yield [1]; end; f {|*a| test_ok(a == [[1]])}
-def f; yield [nil]; end; f {|*a| test_ok(a == [[nil]])}
-def f; yield [[]]; end; f {|*a| test_ok(a == [[[]]])}
-def f; yield [1,2]; end; f {|*a| test_ok(a == [[1,2]])}
-def f; yield [*[]]; end; f {|*a| test_ok(a == [[]])}
-def f; yield [*[1]]; end; f {|*a| test_ok(a == [[1]])}
-def f; yield [*[1,2]]; end; f {|*a| test_ok(a == [[1,2]])}
-
-def f; yield *nil; end; f {|*a| test_ok(a == [nil])}
-def f; yield *1; end; f {|*a| test_ok(a == [1])}
-def f; yield *[]; end; f {|*a| test_ok(a == [])}
-def f; yield *[1]; end; f {|*a| test_ok(a == [1])}
-def f; yield *[nil]; end; f {|*a| test_ok(a == [nil])}
-def f; yield *[[]]; end; f {|*a| test_ok(a == [[]])}
-def f; yield *[*[]]; end; f {|*a| test_ok(a == [])}
-def f; yield *[*[1]]; end; f {|*a| test_ok(a == [1])}
-def f; yield *[*[1,2]]; end; f {|*a| test_ok(a == [1,2])}
-
-def f; yield; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
-def f; yield nil; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
-def f; yield 1; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}
-def f; yield []; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
-def f; yield [1]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}
-def f; yield [nil]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
-def f; yield [[]]; end; f {|a,b,*c| test_ok([a,b,c] == [[],nil,[]])}
-def f; yield [*[]]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
-def f; yield [*[1]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}
-def f; yield [*[1,2]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,2,[]])}
-
-def f; yield *nil; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
-def f; yield *1; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}
-def f; yield *[]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
-def f; yield *[1]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}
-def f; yield *[nil]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
-def f; yield *[[]]; end; f {|a,b,*c| test_ok([a,b,c] == [[],nil,[]])}
-def f; yield *[*[]]; end; f {|a,b,*c| test_ok([a,b,c] == [nil,nil,[]])}
-def f; yield *[*[1]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,nil,[]])}
-def f; yield *[*[1,2]]; end; f {|a,b,*c| test_ok([a,b,c] == [1,2,[]])}
-
-def r; return; end; a = r(); test_ok(a == nil)
-def r; return nil; end; a = r(); test_ok(a == nil)
-def r; return 1; end; a = r(); test_ok(a == 1)
-def r; return []; end; a = r(); test_ok(a == [])
-def r; return [1]; end; a = r(); test_ok(a == [1])
-def r; return [nil]; end; a = r(); test_ok(a == [nil])
-def r; return [[]]; end; a = r(); test_ok(a == [[]])
-def r; return [*[]]; end; a = r(); test_ok(a == [])
-def r; return [*[1]]; end; a = r(); test_ok(a == [1])
-def r; return [*[1,2]]; end; a = r(); test_ok(a == [1,2])
-
-def r; return *nil; end; a = r(); test_ok(a == nil)
-def r; return *1; end; a = r(); test_ok(a == 1)
-def r; return *[]; end; a = r(); test_ok(a == nil)
-def r; return *[1]; end; a = r(); test_ok(a == 1)
-def r; return *[nil]; end; a = r(); test_ok(a == nil)
-def r; return *[[]]; end; a = r(); test_ok(a == [])
-def r; return *[*[]]; end; a = r(); test_ok(a == nil)
-def r; return *[*[1]]; end; a = r(); test_ok(a == 1)
-def r; return *[*[1,2]]; end; a = r(); test_ok(a == [1,2])
-
-def r; return *nil; end; a = *r(); test_ok(a == nil)
-def r; return *1; end; a = *r(); test_ok(a == 1)
-def r; return *[]; end; a = *r(); test_ok(a == nil)
-def r; return *[1]; end; a = *r(); test_ok(a == 1)
-def r; return *[nil]; end; a = *r(); test_ok(a == nil)
-def r; return *[[]]; end; a = *r(); test_ok(a == nil)
-def r; return *[*[]]; end; a = *r(); test_ok(a == nil)
-def r; return *[*[1]]; end; a = *r(); test_ok(a == 1)
-def r; return *[*[1,2]]; end; a = *r(); test_ok(a == [1,2])
-
-def r; return; end; *a = r(); test_ok(a == [nil])
-def r; return nil; end; *a = r(); test_ok(a == [nil])
-def r; return 1; end; *a = r(); test_ok(a == [1])
-def r; return []; end; *a = r(); test_ok(a == [[]])
-def r; return [1]; end; *a = r(); test_ok(a == [[1]])
-def r; return [nil]; end; *a = r(); test_ok(a == [[nil]])
-def r; return [[]]; end; *a = r(); test_ok(a == [[[]]])
-def r; return [1,2]; end; *a = r(); test_ok(a == [[1,2]])
-def r; return [*[]]; end; *a = r(); test_ok(a == [[]])
-def r; return [*[1]]; end; *a = r(); test_ok(a == [[1]])
-def r; return [*[1,2]]; end; *a = r(); test_ok(a == [[1,2]])
-
-def r; return *nil; end; *a = r(); test_ok(a == [nil])
-def r; return *1; end; *a = r(); test_ok(a == [1])
-def r; return *[]; end; *a = r(); test_ok(a == [nil])
-def r; return *[1]; end; *a = r(); test_ok(a == [1])
-def r; return *[nil]; end; *a = r(); test_ok(a == [nil])
-def r; return *[[]]; end; *a = r(); test_ok(a == [[]])
-def r; return *[1,2]; end; *a = r(); test_ok(a == [[1,2]])
-def r; return *[*[]]; end; *a = r(); test_ok(a == [nil])
-def r; return *[*[1]]; end; *a = r(); test_ok(a == [1])
-def r; return *[*[1,2]]; end; *a = r(); test_ok(a == [[1,2]])
-
-def r; return *nil; end; *a = *r(); test_ok(a == [nil])
-def r; return *1; end; *a = *r(); test_ok(a == [1])
-def r; return *[]; end; *a = *r(); test_ok(a == [nil])
-def r; return *[1]; end; *a = *r(); test_ok(a == [1])
-def r; return *[nil]; end; *a = *r(); test_ok(a == [nil])
-def r; return *[[]]; end; *a = *r(); test_ok(a == [])
-def r; return *[1,2]; end; *a = *r(); test_ok(a == [1,2])
-def r; return *[*[]]; end; *a = *r(); test_ok(a == [nil])
-def r; return *[*[1]]; end; *a = *r(); test_ok(a == [1])
-def r; return *[*[1,2]]; end; *a = *r(); test_ok(a == [1,2])
-
-def r; return; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
-def r; return nil; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
-def r; return 1; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])
-def r; return []; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
-def r; return [1]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])
-def r; return [nil]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
-def r; return [[]]; end; a,b,*c = r(); test_ok([a,b,c] == [[],nil,[]])
-def r; return [1,2]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]])
-def r; return [*[]]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
-def r; return [*[1]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])
-def r; return [*[1,2]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]])
-
-def r; return *nil; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
-def r; return *1; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])
-def r; return *[]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
-def r; return *[1]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])
-def r; return *[nil]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
-def r; return *[[]]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
-def r; return *[1,2]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]])
-def r; return *[*[]]; end; a,b,*c = r(); test_ok([a,b,c] == [nil,nil,[]])
-def r; return *[*[1]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,nil,[]])
-def r; return *[*[1,2]]; end; a,b,*c = r(); test_ok([a,b,c] == [1,2,[]])
-
-f = lambda {|r,| test_ok([] == r)}
-f.call([], *[])
-
-f = lambda {|r,*l| test_ok([] == r); test_ok([1] == l)}
-f.call([], *[1])
-
-f = lambda{|x| x}
-test_ok(f.call(42) == 42)
-test_ok(f.call([42]) == [42])
-test_ok(f.call([[42]]) == [[42]])
-test_ok(f.call([42,55]) == [42,55])
-
-f = lambda{|x,| x}
-test_ok(f.call(42) == 42)
-test_ok(f.call([42]) == [42])
-test_ok(f.call([[42]]) == [[42]])
-test_ok(f.call([42,55]) == [42,55])
-
-f = lambda{|*x| x}
-test_ok(f.call(42) == [42])
-test_ok(f.call([42]) == [[42]])
-test_ok(f.call([[42]]) == [[[42]]])
-test_ok(f.call([42,55]) == [[42,55]])
-test_ok(f.call(42,55) == [42,55])
-
-a,=*[1]
-test_ok(a == 1)
-a,=*[[1]]
-test_ok(a == [1])
-a,=*[[[1]]]
-test_ok(a == [[1]])
-
-x, (y, z) = 1, 2, 3
-test_ok([1,2,nil] == [x,y,z])
-x, (y, z) = 1, [2,3]
-test_ok([1,2,3] == [x,y,z])
-x, (y, z) = 1, [2]
-test_ok([1,2,nil] == [x,y,z])
-
-a = loop do break; end; test_ok(a == nil)
-a = loop do break nil; end; test_ok(a == nil)
-a = loop do break 1; end; test_ok(a == 1)
-a = loop do break []; end; test_ok(a == [])
-a = loop do break [1]; end; test_ok(a == [1])
-a = loop do break [nil]; end; test_ok(a == [nil])
-a = loop do break [[]]; end; test_ok(a == [[]])
-a = loop do break [*[]]; end; test_ok(a == [])
-a = loop do break [*[1]]; end; test_ok(a == [1])
-a = loop do break [*[1,2]]; end; test_ok(a == [1,2])
-
-a = loop do break *nil; end; test_ok(a == nil)
-a = loop do break *1; end; test_ok(a == 1)
-a = loop do break *[]; end; test_ok(a == nil)
-a = loop do break *[1]; end; test_ok(a == 1)
-a = loop do break *[nil]; end; test_ok(a == nil)
-a = loop do break *[[]]; end; test_ok(a == [])
-a = loop do break *[*[]]; end; test_ok(a == nil)
-a = loop do break *[*[1]]; end; test_ok(a == 1)
-a = loop do break *[*[1,2]]; end; test_ok(a == [1,2])
-
-*a = loop do break; end; test_ok(a == [nil])
-*a = loop do break nil; end; test_ok(a == [nil])
-*a = loop do break 1; end; test_ok(a == [1])
-*a = loop do break []; end; test_ok(a == [[]])
-*a = loop do break [1]; end; test_ok(a == [[1]])
-*a = loop do break [nil]; end; test_ok(a == [[nil]])
-*a = loop do break [[]]; end; test_ok(a == [[[]]])
-*a = loop do break [1,2]; end; test_ok(a == [[1,2]])
-*a = loop do break [*[]]; end; test_ok(a == [[]])
-*a = loop do break [*[1]]; end; test_ok(a == [[1]])
-*a = loop do break [*[1,2]]; end; test_ok(a == [[1,2]])
-
-*a = loop do break *nil; end; test_ok(a == [nil])
-*a = loop do break *1; end; test_ok(a == [1])
-*a = loop do break *[]; end; test_ok(a == [nil])
-*a = loop do break *[1]; end; test_ok(a == [1])
-*a = loop do break *[nil]; end; test_ok(a == [nil])
-*a = loop do break *[[]]; end; test_ok(a == [[]])
-*a = loop do break *[1,2]; end; test_ok(a == [[1,2]])
-*a = loop do break *[*[]]; end; test_ok(a == [nil])
-*a = loop do break *[*[1]]; end; test_ok(a == [1])
-*a = loop do break *[*[1,2]]; end; test_ok(a == [[1,2]])
-
-*a = *loop do break *nil; end; test_ok(a == [nil])
-*a = *loop do break *1; end; test_ok(a == [1])
-*a = *loop do break *[]; end; test_ok(a == [nil])
-*a = *loop do break *[1]; end; test_ok(a == [1])
-*a = *loop do break *[nil]; end; test_ok(a == [nil])
-*a = *loop do break *[[]]; end; test_ok(a == [])
-*a = *loop do break *[1,2]; end; test_ok(a == [1,2])
-*a = *loop do break *[*[]]; end; test_ok(a == [nil])
-*a = *loop do break *[*[1]]; end; test_ok(a == [1])
-*a = *loop do break *[*[1,2]]; end; test_ok(a == [1,2])
-
-a,b,*c = loop do break; end; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = loop do break nil; end; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = loop do break 1; end; test_ok([a,b,c] == [1,nil,[]])
-a,b,*c = loop do break []; end; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = loop do break [1]; end; test_ok([a,b,c] == [1,nil,[]])
-a,b,*c = loop do break [nil]; end; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = loop do break [[]]; end; test_ok([a,b,c] == [[],nil,[]])
-a,b,*c = loop do break [1,2]; end; test_ok([a,b,c] == [1,2,[]])
-a,b,*c = loop do break [*[]]; end; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = loop do break [*[1]]; end; test_ok([a,b,c] == [1,nil,[]])
-a,b,*c = loop do break [*[1,2]]; end; test_ok([a,b,c] == [1,2,[]])
-
-a,b,*c = loop do break *nil; end; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = loop do break *1; end; test_ok([a,b,c] == [1,nil,[]])
-a,b,*c = loop do break *[]; end; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = loop do break *[1]; end; test_ok([a,b,c] == [1,nil,[]])
-a,b,*c = loop do break *[nil]; end; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = loop do break *[[]]; end; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = loop do break *[1,2]; end; test_ok([a,b,c] == [1,2,[]])
-a,b,*c = loop do break *[*[]]; end; test_ok([a,b,c] == [nil,nil,[]])
-a,b,*c = loop do break *[*[1]]; end; test_ok([a,b,c] == [1,nil,[]])
-a,b,*c = loop do break *[*[1,2]]; end; test_ok([a,b,c] == [1,2,[]])
-
-def r(val); a = yield(); test_ok(a == val, 2); end
-r(nil){next}
-r(nil){next nil}
-r(1){next 1}
-r([]){next []}
-r([1]){next [1]}
-r([nil]){next [nil]}
-r([[]]){next [[]]}
-r([]){next [*[]]}
-r([1]){next [*[1]]}
-r([1,2]){next [*[1,2]]}
-
-r(nil){next *nil}
-r(1){next *1}
-r(nil){next *[]}
-r(1){next *[1]}
-r(nil){next *[nil]}
-r([]){next *[[]]}
-r(nil){next *[*[]]}
-r(1){next *[*[1]]}
-r([1,2]){next *[*[1,2]]}
-
-def r(val); *a = yield(); test_ok(a == val, 2); end
-r([nil]){next}
-r([nil]){next nil}
-r([1]){next 1}
-r([[]]){next []}
-r([[1]]){next [1]}
-r([[nil]]){next [nil]}
-r([[[]]]){next [[]]}
-r([[1,2]]){next [1,2]}
-r([[]]){next [*[]]}
-r([[1]]){next [*[1]]}
-r([[1,2]]){next [*[1,2]]}
-
-def r(val); *a = *yield(); test_ok(a == val, 2); end
-r([nil]){next *nil}
-r([1]){next *1}
-r([nil]){next *[]}
-r([1]){next *[1]}
-r([nil]){next *[nil]}
-r([]){next *[[]]}
-r([1,2]){next *[1,2]}
-r([nil]){next *[*[]]}
-r([1]){next *[*[1]]}
-r([1,2]){next *[*[1,2]]}
-
-def r(val); a,b,*c = yield(); test_ok([a,b,c] == val, 2); end
-r([nil,nil,[]]){next}
-r([nil,nil,[]]){next nil}
-r([1,nil,[]]){next 1}
-r([nil,nil,[]]){next []}
-r([1,nil,[]]){next [1]}
-r([nil,nil,[]]){next [nil]}
-r([[],nil,[]]){next [[]]}
-r([1,2,[]]){next [1,2]}
-r([nil,nil,[]]){next [*[]]}
-r([1,nil,[]]){next [*[1]]}
-r([1,2,[]]){next [*[1,2]]}
-
-def r(val); a,b,*c = *yield(); test_ok([a,b,c] == val, 2); end
-r([nil,nil,[]]){next *nil}
-r([1,nil,[]]){next *1}
-r([nil,nil,[]]){next *[]}
-r([1,nil,[]]){next *[1]}
-r([nil,nil,[]]){next *[nil]}
-r([nil,nil,[]]){next *[[]]}
-r([1,2,[]]){next *[1,2]}
-r([nil,nil,[]]){next *[*[]]}
-r([1,nil,[]]){next *[*[1]]}
-r([1,2,[]]){next *[*[1,2]]}
-
-test_check "condition"
-
-$x = '0';
-
-$x == $x && test_ok(true)
-$x != $x && test_ok(false)
-$x == $x || test_ok(false)
-$x != $x || test_ok(true)
-
-# first test to see if we can run the tests.
-
-test_check "if/unless";
-
-$x = 'test';
-test_ok(if $x == $x then true else false end)
-$bad = false
-unless $x == $x
-  $bad = true
-end
-test_ok(!$bad)
-test_ok(unless $x != $x then true else false end)
-
-test_check "case"
-
-case 5
-when 1, 2, 3, 4, 6, 7, 8
-  test_ok(false)
-when 5
-  test_ok(true)
-end
-
-case 5
-when 5
-  test_ok(true)
-when 1..10
-  test_ok(false)
-end
-
-case 5
-when 1..10
-  test_ok(true)
-else
-  test_ok(false)
-end
-
-case 5
-when 5
-  test_ok(true)
-else
-  test_ok(false)
-end
-
-case "foobar"
-when /^f.*r$/
-  test_ok(true)
-else
-  test_ok(false)
-end
-
-test_check "while/until";
-
-tmp = open("while_tmp", "w")
-tmp.print "tvi925\n";
-tmp.print "tvi920\n";
-tmp.print "vt100\n";
-tmp.print "Amiga\n";
-tmp.print "paper\n";
-tmp.close
-
-# test break
-
-tmp = open("while_tmp", "r")
-test_ok(tmp.kind_of?(File))
-
-while line = tmp.gets()
-  break if /vt100/ =~ line
-end
-
-test_ok(!tmp.eof? && /vt100/ =~ line)
-tmp.close
-
-# test next
-$bad = false
-tmp = open("while_tmp", "r")
-while line = tmp.gets()
-  next if /vt100/ =~ line
-  $bad = 1 if /vt100/ =~ line
-end
-test_ok(!(!tmp.eof? || /vt100/ =~ line || $bad))
-tmp.close
-
-# test redo
-$bad = false
-tmp = open("while_tmp", "r")
-while tmp.gets()
-  line = $_
-  gsub(/vt100/, 'VT100')
-  if $_ != line
-    $_.gsub!('VT100', 'Vt100')
-    redo
-  end
-  $bad = 1 if /vt100/ =~ $_
-  $bad = 1 if /VT100/ =~ $_
-end
-test_ok(tmp.eof? && !$bad)
-tmp.close
-
-sum=0
-for i in 1..10
-  sum += i
-  i -= 1
-  if i > 0
-    redo
-  end
-end
-test_ok(sum == 220)
-
-# test interval
-$bad = false
-tmp = open("while_tmp", "r")
-while line = tmp.gets()
-  break if 3
-  case line
-  when /vt100/, /Amiga/, /paper/
-    $bad = true
-  end
-end
-test_ok(!$bad)
-tmp.close
-
-File.unlink "while_tmp" or `/bin/rm -f "while_tmp"`
-test_ok(!File.exist?("while_tmp"))
-
-i = 0
-until i>4
-  i+=1
-end
-test_ok(i>4)
-
-
-# exception handling
-test_check "exception";
-
-begin
-  raise "this must be handled"
-  test_ok(false)
-rescue
-  test_ok(true)
-end
-
-$bad = true
-begin
-  raise "this must be handled no.2"
-rescue
-  if $bad
-    $bad = false
-    retry
-    test_ok(false)
-  end
-end
-test_ok(true)
-
-# exception in rescue clause
-$string = "this must be handled no.3"
-begin
-  begin
-    raise "exception in rescue clause"
-  rescue 
-    raise $string
-  end
-  test_ok(false)
-rescue
-  test_ok(true) if $! == $string
-end
-  
-# exception in ensure clause
-begin
-  begin
-    raise "this must be handled no.4"
-  ensure 
-    raise "exception in ensure clause"
-  end
-  test_ok(false)
-rescue
-  test_ok(true)
-end
-
-$bad = true
-begin
-  begin
-    raise "this must be handled no.5"
-  ensure
-    $bad = false
-  end
-rescue
-end
-test_ok(!$bad)
-
-$bad = true
-begin
-  begin
-    raise "this must be handled no.6"
-  ensure
-    $bad = false
-  end
-rescue
-end
-test_ok(!$bad)
-
-$bad = true
-while true
-  begin
-    break
-  ensure
-    $bad = false
-  end
-end
-test_ok(!$bad)
-
-test_ok(catch(:foo) {
-     loop do
-       loop do
-        throw :foo, true
-        break
-       end
-       break
-       test_ok(false)                  # should no reach here
-     end
-     false
-   })
-
-test_check "array"
-test_ok([1, 2] + [3, 4] == [1, 2, 3, 4])
-test_ok([1, 2] * 2 == [1, 2, 1, 2])
-test_ok([1, 2] * ":" == "1:2")
-
-test_ok([1, 2].hash == [1, 2].hash)
-
-test_ok([1,2,3] & [2,3,4] == [2,3])
-test_ok([1,2,3] | [2,3,4] == [1,2,3,4])
-test_ok([1,2,3] - [2,3] == [1])
-
-$x = [0, 1, 2, 3, 4, 5]
-test_ok($x[2] == 2)
-test_ok($x[1..3] == [1, 2, 3])
-test_ok($x[1,3] == [1, 2, 3])
-
-$x[0, 2] = 10
-test_ok($x[0] == 10 && $x[1] == 2)
-  
-$x[0, 0] = -1
-test_ok($x[0] == -1 && $x[1] == 10)
-
-$x[-1, 1] = 20
-test_ok($x[-1] == 20 && $x.pop == 20)
-
-# array and/or
-test_ok(([1,2,3]&[2,4,6]) == [2])
-test_ok(([1,2,3]|[2,4,6]) == [1,2,3,4,6])
-
-# compact
-$x = [nil, 1, nil, nil, 5, nil, nil]
-$x.compact!
-test_ok($x == [1, 5])
-
-# uniq
-$x = [1, 1, 4, 2, 5, 4, 5, 1, 2]
-$x.uniq!
-test_ok($x == [1, 4, 2, 5])
-
-# empty?
-test_ok(!$x.empty?)
-$x = []
-test_ok($x.empty?)
-
-# sort
-$x = ["it", "came", "to", "pass", "that", "..."]
-$x = $x.sort.join(" ")
-test_ok($x == "... came it pass that to")
-$x = [2,5,3,1,7]
-$x.sort!{|a,b| a<=>b}          # sort with condition
-test_ok($x == [1,2,3,5,7])
-$x.sort!{|a,b| b-a}            # reverse sort
-test_ok($x == [7,5,3,2,1])
-
-# split test
-$x = "The Book of Mormon"
-test_ok($x.split(//).reverse!.join == $x.reverse)
-test_ok($x.reverse == $x.reverse!)
-test_ok("1 byte string".split(//).reverse.join(":") == "g:n:i:r:t:s: :e:t:y:b: :1")
-$x = "a b c  d"
-test_ok($x.split == ['a', 'b', 'c', 'd'])
-test_ok($x.split(' ') == ['a', 'b', 'c', 'd'])
-test_ok(defined? "a".chomp)
-test_ok("abc".scan(/./) == ["a", "b", "c"])
-test_ok("1a2b3c".scan(/(\d.)/) == [["1a"], ["2b"], ["3c"]])
-# non-greedy match
-test_ok("a=12;b=22".scan(/(.*?)=(\d*);?/) == [["a", "12"], ["b", "22"]])
-
-$x = [1]
-test_ok(($x * 5).join(":") == '1:1:1:1:1')
-test_ok(($x * 1).join(":") == '1')
-test_ok(($x * 0).join(":") == '')
-
-*$x = *(1..7).to_a
-test_ok($x.size == 7)
-test_ok($x == [1, 2, 3, 4, 5, 6, 7])
-
-$x = [1,2,3]
-$x[1,0] = $x
-test_ok($x == [1,1,2,3,2,3])
-
-$x = [1,2,3]
-$x[-1,0] = $x
-test_ok($x == [1,2,1,2,3,3])
-
-$x = [1,2,3]
-$x.concat($x)
-test_ok($x == [1,2,3,1,2,3])
-
-test_check "hash"
-$x = {1=>2, 2=>4, 3=>6}
-$y = {1, 2, 2, 4, 3, 6}
-
-test_ok($x[1] == 2)
-
-test_ok(begin   
-     for k,v in $y
-       raise if k*2 != v
-     end
-     true
-   rescue
-     false
-   end)
-
-test_ok($x.length == 3)
-test_ok($x.has_key?(1))
-test_ok($x.has_value?(4))
-test_ok($x.values_at(2,3) == [4,6])
-test_ok($x == {1=>2, 2=>4, 3=>6})
-
-$z = $y.keys.sort.join(":")
-test_ok($z == "1:2:3")
-
-$z = $y.values.sort.join(":")
-test_ok($z == "2:4:6")
-test_ok($x == $y)
-
-$y.shift
-test_ok($y.length == 2)
-
-$z = [1,2]
-$y[$z] = 256
-test_ok($y[$z] == 256)
-
-$x = Hash.new(0)
-$x[1] = 1
-test_ok($x[1] == 1)
-test_ok($x[2] == 0)
-
-$x = Hash.new([])
-test_ok($x[22] == [])
-test_ok($x[22].equal?($x[22]))
-
-$x = Hash.new{[]}
-test_ok($x[22] == [])
-test_ok(!$x[22].equal?($x[22]))
-
-$x = Hash.new{|h,k| $z = k; h[k] = k*2}
-$z = 0
-test_ok($x[22] == 44)
-test_ok($z == 22)
-$z = 0
-test_ok($x[22] == 44)
-test_ok($z == 0)
-$x.default = 5
-test_ok($x[23] == 5)
-
-$x = Hash.new
-def $x.default(k)
-  $z = k
-  self[k] = k*2
-end
-$z = 0
-test_ok($x[22] == 44)
-test_ok($z == 22)
-$z = 0
-test_ok($x[22] == 44)
-test_ok($z == 0)
-
-test_check "iterator"
-
-test_ok(!iterator?)
-
-def ttt
-  test_ok(iterator?)
-end
-ttt{}
-
-# yield at top level
-test_ok(!defined?(yield))
-
-$x = [1, 2, 3, 4]
-$y = []
-
-# iterator over array
-for i in $x
-  $y.push i
-end
-test_ok($x == $y)
-
-# nested iterator
-def tt
-  1.upto(10) {|i|
-    yield i
-  }
-end
-
-tt{|i| break if i == 5}
-test_ok(i == 5)
-
-def tt2(dummy)
-  yield 1
-end
-
-def tt3(&block)
-  tt2(raise(ArgumentError,""),&block)
-end
-
-$x = false
-begin
-  tt3{}
-rescue ArgumentError
-  $x = true
-rescue Exception
-end
-test_ok($x)
-
-def tt4 &block
-  tt2(raise(ArgumentError,""),&block)
-end
-$x = false
-begin
-  tt4{}
-rescue ArgumentError
-  $x = true
-rescue Exception
-end
-test_ok($x)
-
-# iterator break/redo/next/retry
-done = true
-loop{
-  break
-  done = false                 # should not reach here
-}
-test_ok(done)
-
-done = false
-$bad = false
-loop {
-  break if done
-  done = true
-  next
-  $bad = true                  # should not reach here
-}
-test_ok(!$bad)
-
-done = false
-$bad = false
-loop {
-  break if done
-  done = true
-  redo
-  $bad = true                  # should not reach here
-}
-test_ok(!$bad)
-
-$x = []
-for i in 1 .. 7
-  $x.push i
-end
-test_ok($x.size == 7)
-test_ok($x == [1, 2, 3, 4, 5, 6, 7])
-
-$done = false
-$x = []
-for i in 1 .. 7                        # see how retry works in iterator loop
-  if i == 4 and not $done
-    $done = true
-    retry
-  end
-  $x.push(i)
-end
-test_ok($x.size == 10)
-test_ok($x == [1, 2, 3, 1, 2, 3, 4, 5, 6, 7])
-
-# append method to built-in class
-class Array
-  def iter_test1
-    collect{|e| [e, yield(e)]}.sort{|a,b|a[1]<=>b[1]}
-  end
-  def iter_test2
-    a = collect{|e| [e, yield(e)]}
-    a.sort{|a,b|a[1]<=>b[1]}
-  end
-end
-$x = [[1,2],[3,4],[5,6]]
-test_ok($x.iter_test1{|x|x} == $x.iter_test2{|x|x})
-
-class IterTest
-  def initialize(e); @body = e; end
-
-  def each0(&block); @body.each(&block); end
-  def each1(&block); @body.each {|*x| block.call(*x) } end
-  def each2(&block); @body.each {|*x| block.call(x) } end
-  def each3(&block); @body.each {|x| block.call(*x) } end
-  def each4(&block); @body.each {|x| block.call(x) } end
-  def each5; @body.each {|*x| yield(*x) } end
-  def each6; @body.each {|*x| yield(x) } end
-  def each7; @body.each {|x| yield(*x) } end
-  def each8; @body.each {|x| yield(x) } end
-
-  def f(a)
-    a
-  end
-end
-test_ok(IterTest.new(nil).method(:f).to_proc.call([1]) == [1])
-m = /\w+/.match("abc")
-test_ok(IterTest.new(nil).method(:f).to_proc.call([m]) == [m])
-
-IterTest.new([0]).each0 {|x| test_ok(x == 0)}
-IterTest.new([1]).each1 {|x| test_ok(x == 1)}
-IterTest.new([2]).each2 {|x| test_ok(x == [2])}
-IterTest.new([3]).each3 {|x| test_ok(x == 3)}
-IterTest.new([4]).each4 {|x| test_ok(x == 4)}
-IterTest.new([5]).each5 {|x| test_ok(x == 5)}
-IterTest.new([6]).each6 {|x| test_ok(x == [6])}
-IterTest.new([7]).each7 {|x| test_ok(x == 7)}
-IterTest.new([8]).each8 {|x| test_ok(x == 8)}
-
-IterTest.new([[0]]).each0 {|x| test_ok(x == [0])}
-IterTest.new([[1]]).each1 {|x| test_ok(x == [1])}
-IterTest.new([[2]]).each2 {|x| test_ok(x == [[2]])}
-IterTest.new([[3]]).each3 {|x| test_ok(x == 3)}
-IterTest.new([[4]]).each4 {|x| test_ok(x == [4])}
-IterTest.new([[5]]).each5 {|x| test_ok(x == [5])}
-IterTest.new([[6]]).each6 {|x| test_ok(x == [[6]])}
-IterTest.new([[7]]).each7 {|x| test_ok(x == 7)}
-IterTest.new([[8]]).each8 {|x| test_ok(x == [8])}
-
-IterTest.new([[0,0]]).each0 {|x| test_ok(x == [0,0])}
-IterTest.new([[8,8]]).each8 {|x| test_ok(x == [8,8])}
-
-def m0(v)
-  v
-end
-
-def m1
-  m0(block_given?)
-end
-test_ok(m1{p 'test'})
-test_ok(!m1)
-
-def m
-  m0(block_given?,&proc{})
-end
-test_ok(m1{p 'test'})
-test_ok(!m1)
-
-class C
-  include Enumerable
-  def initialize
-    @a = [1,2,3]
-  end
-  def each(&block)
-    @a.each(&block)
-  end
-end
-
-test_ok(C.new.collect{|n| n} == [1,2,3])
-
-test_ok(Proc == lambda{}.class)
-test_ok(Proc == Proc.new{}.class)
-lambda{|a|test_ok(a==1)}.call(1)
-def block_test(klass, &block)
-  test_ok(klass === block)
-end
-
-block_test(NilClass)
-block_test(Proc){}
-
-def argument_test(state, proc, *args)
-  x = state
-  begin
-    proc.call(*args)
-  rescue ArgumentError
-    x = !x
-  end
-  test_ok(x,2)
-end
-
-argument_test(true, lambda{||})
-argument_test(false, lambda{||}, 1)
-argument_test(true, lambda{|a,|}, 1)
-argument_test(false, lambda{|a,|})
-argument_test(false, lambda{|a,|}, 1,2)
-
-def get_block(&block)
-  block
-end
-
-test_ok(Proc == get_block{}.class)
-argument_test(true, get_block{||})
-argument_test(true, get_block{||}, 1)
-argument_test(true, get_block{|a,|}, 1)
-argument_test(true, get_block{|a,|})
-argument_test(true, get_block{|a,|}, 1,2)
-
-argument_test(true, get_block(&lambda{||}))
-argument_test(false, get_block(&lambda{||}),1)
-argument_test(true, get_block(&lambda{|a,|}),1)
-argument_test(false, get_block(&lambda{|a,|}),1,2)
-
-block = get_block{11}
-test_ok(block.class == Proc)
-test_ok(block.to_proc.class == Proc)
-test_ok(block.clone.call == 11)
-test_ok(get_block(&block).class == Proc)
-
-lambda = lambda{44}
-test_ok(lambda.class == Proc)
-test_ok(lambda.to_proc.class == Proc)
-test_ok(lambda.clone.call == 44)
-test_ok(get_block(&lambda).class == Proc)
-
-test_ok(Proc.new{|a,| a}.call(1,2,3) == 1)
-argument_test(true, Proc.new{|a,|}, 1,2)
-
-test_ok(Proc.new{|&b| b.call(10)}.call {|x| x} == 10)
-test_ok(Proc.new{|a,&b| b.call(a)}.call(12) {|x| x} == 12)
-
-def test_return1
-  Proc.new {
-    return 55
-  }.call + 5
-end
-test_ok(test_return1() == 55)
-def test_return2
-  lambda {
-    return 55
-  }.call + 5
-end
-test_ok(test_return2() == 60)
-
-def proc_call(&b)
-  b.call
-end
-def proc_yield()
-  yield
-end
-def proc_return1
-  proc_call{return 42}+1
-end
-test_ok(proc_return1() == 42)
-def proc_return2
-  proc_yield{return 42}+1
-end
-test_ok(proc_return2() == 42)
-
-def ljump_test(state, proc, *args)
-  x = state
-  begin
-    proc.call(*args)
-  rescue LocalJumpError
-    x = !x
-  end
-  test_ok(x,2)
-end
-
-ljump_test(false, get_block{break})
-ljump_test(true, lambda{break})
-
-test_ok(block.arity == -1)
-test_ok(lambda.arity == -1)
-test_ok(lambda{||}.arity == 0)
-test_ok(lambda{|a|}.arity == 1)
-test_ok(lambda{|a,|}.arity == 1)
-test_ok(lambda{|a,b|}.arity == 2)
-
-def marity_test(m)
-  method = method(m)
-  test_ok(method.arity == method.to_proc.arity)
-end
-marity_test(:test_ok)
-marity_test(:marity_test)
-marity_test(:p)
-
-lambda(&method(:test_ok)).call(true)
-lambda(&get_block{|a,n| test_ok(a,n)}).call(true, 2)
-
-class ITER_TEST1
-   def a
-     block_given?
-   end
-end
-
-class ITER_TEST2 < ITER_TEST1
-   def a
-     test_ok(super)
-     super
-   end
-end
-test_ok(ITER_TEST2.new.a {})
-
-class ITER_TEST3
-  def foo x
-    return yield if block_given?
-    x
-  end
-end
-
-class ITER_TEST4 < ITER_TEST3
-  def foo x
-    test_ok(super == yield)
-    test_ok(super(x, &nil) == x)
-  end
-end
-
-ITER_TEST4.new.foo(44){55}   
-
-test_check "float"
-test_ok(2.6.floor == 2)
-test_ok((-2.6).floor == -3)
-test_ok(2.6.ceil == 3)
-test_ok((-2.6).ceil == -2)
-test_ok(2.6.truncate == 2)
-test_ok((-2.6).truncate == -2)
-test_ok(2.6.round == 3)
-test_ok((-2.4).truncate == -2)
-test_ok((13.4 % 1 - 0.4).abs < 0.0001)
-nan = 0.0/0
-def nan_test(x,y)
-  test_ok(x != y)
-  test_ok((x < y) == false)
-  test_ok((x > y) == false)
-  test_ok((x <= y) == false)
-  test_ok((x >= y) == false)
-end
-nan_test(nan, nan)
-nan_test(nan, 0)
-nan_test(nan, 1)
-nan_test(nan, -1)
-nan_test(nan, 1000)
-nan_test(nan, -1000)
-nan_test(nan, 1_000_000_000_000)
-nan_test(nan, -1_000_000_000_000)
-nan_test(nan, 100.0);
-nan_test(nan, -100.0);
-nan_test(nan, 0.001);
-nan_test(nan, -0.001);
-nan_test(nan, 1.0/0);
-nan_test(nan, -1.0/0);
-
-#s = "3.7517675036461267e+17"
-#test_ok(s == sprintf("%.16e", s.to_f))
-f = 3.7517675036461267e+17
-test_ok(f == sprintf("%.16e", f).to_f)
-
-
-test_check "bignum"
-def fact(n)
-  return 1 if n == 0
-  f = 1
-  while n>0
-    f *= n
-    n -= 1
-  end
-  return f
-end
-$x = fact(40)
-test_ok($x == $x)
-test_ok($x == fact(40))
-test_ok($x < $x+2)
-test_ok($x > $x-2)
-test_ok($x == 815915283247897734345611269596115894272000000000)
-test_ok($x != 815915283247897734345611269596115894272000000001)
-test_ok($x+1 == 815915283247897734345611269596115894272000000001)
-test_ok($x/fact(20) == 335367096786357081410764800000)
-$x = -$x
-test_ok($x == -815915283247897734345611269596115894272000000000)
-test_ok(2-(2**32) == -(2**32-2))
-test_ok(2**32 - 5 == (2**32-3)-2)
-
-$good = true;
-for i in 1000..1014
-  $good = false if ((1 << i) != (2**i))
-end
-test_ok($good)
-
-$good = true;
-n1= 1 << 1000
-for i in 1000..1014
-  $good = false if ((1 << i) != n1)
-  n1 *= 2
-end
-test_ok($good)
-
-$good = true;
-n2=n1
-for i in 1..10
-  n1 = n1 / 2
-  n2 = n2 >> 1
-  $good = false if (n1 != n2)
-end
-test_ok($good)
-
-$good = true;
-for i in 4000..4096
-  n1 = 1 << i;
-  if (n1**2-1) / (n1+1) != (n1-1)
-    p i
-    $good = false
-  end
-end
-test_ok($good)
-
-b = 10**80
-a = b * 9 + 7
-test_ok(7 == a.modulo(b))
-test_ok(-b + 7 == a.modulo(-b))
-test_ok(b + -7 == (-a).modulo(b))
-test_ok(-7 == (-a).modulo(-b))
-test_ok(7 == a.remainder(b))
-test_ok(7 == a.remainder(-b))
-test_ok(-7 == (-a).remainder(b))
-test_ok(-7 == (-a).remainder(-b))
-
-test_ok(10**40+10**20 == 10000000000000000000100000000000000000000)
-test_ok(10**40/10**20 == 100000000000000000000)
-
-a = 677330545177305025495135714080
-b = 14269972710765292560
-test_ok(a % b == 0)
-test_ok(-a % b == 0)
-
-def shift_test(a)
-  b = a / (2 ** 32)
-  c = a >> 32
-  test_ok(b == c)
-
-  b = a * (2 ** 32)
-  c = a << 32
-  test_ok(b == c)
-end
-
-shift_test(-4518325415524767873)
-shift_test(-0xfffffffffffffffff)
-
-test_check "string & char"
-
-test_ok("abcd" == "abcd")
-test_ok("abcd" =~ /abcd/)
-test_ok("abcd" === "abcd")
-# compile time string concatenation
-test_ok("ab" "cd" == "abcd")
-test_ok("#{22}aa" "cd#{44}" == "22aacd44")
-test_ok("#{22}aa" "cd#{44}" "55" "#{66}" == "22aacd445566")
-test_ok("abc" !~ /^$/)
-test_ok("abc\n" !~ /^$/)
-test_ok("abc" !~ /^d*$/)
-test_ok(("abc" =~ /d*$/) == 3)
-test_ok("" =~ /^$/)
-test_ok("\n" =~ /^$/)
-test_ok("a\n\n" =~ /^$/)
-test_ok("abcabc" =~ /.*a/ && $& == "abca")
-test_ok("abcabc" =~ /.*c/ && $& == "abcabc")
-test_ok("abcabc" =~ /.*?a/ && $& == "a")
-test_ok("abcabc" =~ /.*?c/ && $& == "abc")
-test_ok(/(.|\n)*?\n(b|\n)/ =~ "a\nb\n\n" && $& == "a\nb")
-
-test_ok(/^(ab+)+b/ =~ "ababb" && $& == "ababb")
-test_ok(/^(?:ab+)+b/ =~ "ababb" && $& == "ababb")
-test_ok(/^(ab+)+/ =~ "ababb" && $& == "ababb")
-test_ok(/^(?:ab+)+/ =~ "ababb" && $& == "ababb")
-
-test_ok(/(\s+\d+){2}/ =~ " 1 2" && $& == " 1 2")
-test_ok(/(?:\s+\d+){2}/ =~ " 1 2" && $& == " 1 2")
-
-$x = <<END;
-ABCD
-ABCD
-END
-$x.gsub!(/((.|\n)*?)B((.|\n)*?)D/){$1+$3}
-test_ok($x == "AC\nAC\n")
-
-test_ok("foobar" =~ /foo(?=(bar)|(baz))/)
-test_ok("foobaz" =~ /foo(?=(bar)|(baz))/)
-
-$foo = "abc"
-test_ok("#$foo = abc" == "abc = abc")
-test_ok("#{$foo} = abc" == "abc = abc")
-
-foo = "abc"
-test_ok("#{foo} = abc" == "abc = abc")
-
-test_ok('-' * 5 == '-----')
-test_ok('-' * 1 == '-')
-test_ok('-' * 0 == '')
-
-foo = '-'
-test_ok(foo * 5 == '-----')
-test_ok(foo * 1 == '-')
-test_ok(foo * 0 == '')
-
-$x = "a.gif"
-test_ok($x.sub(/.*\.([^\.]+)$/, '\1') == "gif")
-test_ok($x.sub(/.*\.([^\.]+)$/, 'b.\1') == "b.gif")
-test_ok($x.sub(/.*\.([^\.]+)$/, '\2') == "")
-test_ok($x.sub(/.*\.([^\.]+)$/, 'a\2b') == "ab")
-test_ok($x.sub(/.*\.([^\.]+)$/, '<\&>') == "<a.gif>")
-
-# character constants(assumes ASCII)
-test_ok("a"[0] == ?a)
-test_ok(?a == ?a)
-test_ok(?\C-a == 1)
-test_ok(?\M-a == 225)
-test_ok(?\M-\C-a == 129)
-test_ok("a".upcase![0] == ?A)
-test_ok("A".downcase![0] == ?a)
-test_ok("abc".tr!("a-z", "A-Z") == "ABC")
-test_ok("aabbcccc".tr_s!("a-z", "A-Z") == "ABC")
-test_ok("abcc".squeeze!("a-z") == "abc")
-test_ok("abcd".delete!("bc") == "ad")
-
-$x = "abcdef"
-$y = [ ?a, ?b, ?c, ?d, ?e, ?f ]
-$bad = false
-$x.each_byte {|i|
-  if i != $y.shift
-    $bad = true
-    break
-  end
-}
-test_ok(!$bad)
-
-s = "a string"
-s[0..s.size]="another string"
-test_ok(s == "another string")
-
-s = <<EOS
-#{
-[1,2,3].join(",")
-}
-EOS
-test_ok(s == "1,2,3\n")
-test_ok("Just".to_i(36) == 926381)
-test_ok("-another".to_i(36) == -23200231779)
-test_ok(1299022.to_s(36) == "ruby")
-test_ok(-1045307475.to_s(36) == "-hacker")
-test_ok("Just_another_Ruby_hacker".to_i(36) == 265419172580680477752431643787347)
-test_ok(-265419172580680477752431643787347.to_s(36) == "-justanotherrubyhacker")
-
-a = []
-(0..255).each {|n|
-  ch = [n].pack("C")                     
-  a.push ch if /a#{Regexp.quote ch}b/x =~ "ab" 
-}
-test_ok(a.size == 0)
-
-test_check "assignment"
-a = nil
-test_ok(defined?(a))
-test_ok(a == nil)
-
-# multiple asignment
-a, b = 1, 2
-test_ok(a == 1 && b == 2)
-
-a, b = b, a
-test_ok(a == 2 && b == 1)
-
-a, = 1,2
-test_ok(a == 1)
-
-a, *b = 1, 2, 3
-test_ok(a == 1 && b == [2, 3])
-
-a, (b, c), d = 1, [2, 3], 4
-test_ok(a == 1 && b == 2 && c == 3 && d == 4)
-
-*a = 1, 2, 3
-test_ok(a == [1, 2, 3])
-
-*a = 4
-test_ok(a == [4])
-
-*a = nil
-test_ok(a == [nil])
-
-test_check "call"
-def aaa(a, b=100, *rest)
-  res = [a, b]
-  res += rest if rest
-  return res
-end
-
-# not enough argument
-begin
-  aaa()                                # need at least 1 arg
-  test_ok(false)
-rescue
-  test_ok(true)
-end
-
-begin
-  aaa                          # no arg given (exception raised)
-  test_ok(false)
-rescue
-  test_ok(true)
-end
-
-test_ok(aaa(1) == [1, 100])
-test_ok(aaa(1, 2) == [1, 2])
-test_ok(aaa(1, 2, 3, 4) == [1, 2, 3, 4])
-test_ok(aaa(1, *[2, 3, 4]) == [1, 2, 3, 4])
-
-test_check "proc"
-$proc = proc{|i| i}
-test_ok($proc.call(2) == 2)
-test_ok($proc.call(3) == 3)
-
-$proc = proc{|i| i*2}
-test_ok($proc.call(2) == 4)
-test_ok($proc.call(3) == 6)
-
-proc{
-  iii=5                                # nested local variable
-  $proc = proc{|i|
-    iii = i
-  }
-  $proc2 = proc {
-    $x = iii                   # nested variables shared by procs
-  }
-  # scope of nested variables
-  test_ok(defined?(iii))
-}.call
-test_ok(!defined?(iii))                # out of scope
-
-loop{iii=5; test_ok(eval("defined? iii")); break}
-loop {
-  iii = 10
-  def dyna_var_check
-    loop {
-      test_ok(!defined?(iii))
-      break
-    }
-  end
-  dyna_var_check
-  break
-}
-$x=0
-$proc.call(5)
-$proc2.call
-test_ok($x == 5)
-
-if defined? Process.kill
-  test_check "signal"
-
-  $x = 0
-  trap "SIGINT", proc{|sig| $x = 2}
-  Process.kill "SIGINT", $$
-  sleep 0.1
-  test_ok($x == 2)
-
-  trap "SIGINT", proc{raise "Interrupt"}
-
-  x = false
-  begin
-    Process.kill "SIGINT", $$
-    sleep 0.1
-  rescue
-    x = $!
-  end
-  test_ok(x && /Interrupt/ =~ x.message)
-end
-
-test_check "eval"
-test_ok(eval("") == nil)
-$bad=false
-eval 'while false; $bad = true; print "foo\n" end'
-test_ok(!$bad)
-
-test_ok(eval('TRUE'))
-test_ok(eval('true'))
-test_ok(!eval('NIL'))
-test_ok(!eval('nil'))
-test_ok(!eval('FALSE'))
-test_ok(!eval('false'))
-
-$foo = 'test_ok(true)'
-begin
-  eval $foo
-rescue
-  test_ok(false)
-end
-
-test_ok(eval("$foo") == 'test_ok(true)')
-test_ok(eval("true") == true)
-i = 5
-test_ok(eval("i == 5"))
-test_ok(eval("i") == 5)
-test_ok(eval("defined? i"))
-
-# eval with binding
-def test_ev
-  local1 = "local1"
-  lambda {
-    local2 = "local2"
-    return binding
-  }.call
-end
-
-$x = test_ev
-test_ok(eval("local1", $x) == "local1") # normal local var
-test_ok(eval("local2", $x) == "local2") # nested local var
-$bad = true
-begin
-  p eval("local1")
-rescue NameError               # must raise error
-  $bad = false
-end
-test_ok(!$bad)
-
-module EvTest
-  EVTEST1 = 25
-  evtest2 = 125
-  $x = binding
-end
-test_ok(eval("EVTEST1", $x) == 25)     # constant in module
-test_ok(eval("evtest2", $x) == 125)    # local var in module
-$bad = true
-begin
-  eval("EVTEST1")
-rescue NameError               # must raise error
-  $bad = false
-end
-test_ok(!$bad)
-
-x = proc{}
-eval "i4 = 1", x
-test_ok(eval("i4", x) == 1)
-x = proc{proc{}}.call
-eval "i4 = 22", x
-test_ok(eval("i4", x) == 22)
-$x = []
-x = proc{proc{}}.call
-eval "(0..9).each{|i5| $x[i5] = proc{i5*2}}", x
-test_ok($x[4].call == 8)
-
-x = binding
-eval "i = 1", x
-test_ok(eval("i", x) == 1)
-x = proc{binding}.call
-eval "i = 22", x
-test_ok(eval("i", x) == 22)
-$x = []
-x = proc{binding}.call
-eval "(0..9).each{|i5| $x[i5] = proc{i5*2}}", x
-test_ok($x[4].call == 8)
-x = proc{binding}.call
-eval "for i6 in 1..1; j6=i6; end", x
-test_ok(eval("defined? i6", x))
-test_ok(eval("defined? j6", x))
-
-proc {
-  p = binding
-  eval "foo11 = 1", p
-  foo22 = 5
-  proc{foo11=22}.call
-  proc{foo22=55}.call
-  test_ok(eval("foo11", p) == eval("foo11"))
-  test_ok(eval("foo11") == 1)
-  test_ok(eval("foo22", p) == eval("foo22"))
-  test_ok(eval("foo22") == 55)
-}.call
-
-p1 = proc{i7 = 0; proc{i7}}.call
-test_ok(p1.call == 0)
-eval "i7=5", p1
-test_ok(p1.call == 5)
-test_ok(!defined?(i7))
-
-p1 = proc{i7 = 0; proc{i7}}.call
-i7 = nil
-test_ok(p1.call == 0)
-eval "i7=1", p1
-test_ok(p1.call == 1)
-eval "i7=5", p1
-test_ok(p1.call == 5)
-test_ok(i7 == nil)
-
-test_check "system"
-test_ok(`echo foobar` == "foobar\n")
-test_ok(`./miniruby -e 'print "foobar"'` == 'foobar')
-
-tmp = open("script_tmp", "w")
-tmp.print "print $zzz\n";
-tmp.close
-
-test_ok(`./miniruby -s script_tmp -zzz` == 'true')
-test_ok(`./miniruby -s script_tmp -zzz=555` == '555')
-
-tmp = open("script_tmp", "w")
-tmp.print "#! /usr/local/bin/ruby -s\n";
-tmp.print "print $zzz\n";
-tmp.close
-
-test_ok(`./miniruby script_tmp -zzz=678` == '678')
-
-tmp = open("script_tmp", "w")
-tmp.print "this is a leading junk\n";
-tmp.print "#! /usr/local/bin/ruby -s\n";
-tmp.print "print $zzz\n";
-tmp.print "__END__\n";
-tmp.print "this is a trailing junk\n";
-tmp.close
-
-test_ok(`./miniruby -x script_tmp` == 'nil')
-test_ok(`./miniruby -x script_tmp -zzz=555` == '555')
-
-tmp = open("script_tmp", "w")
-for i in 1..5
-  tmp.print i, "\n"
-end
-tmp.close
-
-`./miniruby -i.bak -pe 'sub(/^[0-9]+$/){$&.to_i * 5}' script_tmp`
-done = true
-tmp = open("script_tmp", "r")
-while tmp.gets
-  if $_.to_i % 5 != 0
-    done = false
-    break
-  end
-end
-tmp.close
-test_ok(done)
-  
-File.unlink "script_tmp" or `/bin/rm -f "script_tmp"`
-File.unlink "script_tmp.bak" or `/bin/rm -f "script_tmp.bak"`
-
-$bad = false
-if (dir = File.dirname(File.dirname($0))) == '.'
-  dir = ""
-else
-  dir << "/"
-end
-
-def valid_syntax?(code, fname)
-  code = code.sub(/\A(?:\s*\#.*$)*(\n)?/n) {
-    "#$&#{"\n" if $1 && !$2}BEGIN{return true}\n"
-  }
-  eval(code, nil, fname, 0)
-rescue Exception
-  puts $!.message
-  false
-end
-
-for script in Dir["#{dir}{lib,sample,ext}/**/*.rb"]
-  unless valid_syntax? IO::read(script), script
-    $bad = true
-  end
-end
-test_ok(!$bad)
-
-test_check "const"
-TEST1 = 1
-TEST2 = 2
-
-module Const
-  TEST3 = 3
-  TEST4 = 4
-end
-
-module Const2
-  TEST3 = 6
-  TEST4 = 8
-end
-
-include Const
-
-test_ok([TEST1,TEST2,TEST3,TEST4] == [1,2,3,4])
-
-include Const2
-STDERR.print "intentionally redefines TEST3, TEST4\n" if $VERBOSE
-test_ok([TEST1,TEST2,TEST3,TEST4] == [1,2,6,8])
-
-
-test_ok((String <=> Object) == -1)
-test_ok((Object <=> String) == 1)
-test_ok((Array <=> String) == nil)
-
-test_check "clone"
-foo = Object.new
-def foo.test
-  "test"
-end
-bar = foo.clone
-def bar.test2
-  "test2"
-end
-
-test_ok(bar.test2 == "test2")
-test_ok(bar.test == "test")
-test_ok(foo.test == "test")  
-
-begin
-  foo.test2
-  test_ok false
-rescue NoMethodError
-  test_ok true
-end
-
-module M001; end
-module M002; end
-module M003; include M002; end
-module M002; include M001; end
-module M003; include M002; end
-
-test_ok(M003.ancestors == [M003, M002, M001])
-
-test_check "marshal"
-$x = [1,2,3,[4,5,"foo"],{1=>"bar"},2.5,fact(30)]
-$y = Marshal.dump($x)
-test_ok($x == Marshal.load($y))
-
-StrClone=String.clone;
-test_ok(Marshal.load(Marshal.dump(StrClone.new("abc"))).class == StrClone)
-
-[[1,2,3,4], [81, 2, 118, 3146]].each { |w,x,y,z|
-  a = (x.to_f + y.to_f / z.to_f) * Math.exp(w.to_f / (x.to_f + y.to_f / z.to_f))
-  ma = Marshal.dump(a)
-  b = Marshal.load(ma)
-  test_ok(a == b)
-}
-
-test_check "pack"
-
-$format = "c2x5CCxsdils_l_a6";
-# Need the expression in here to force ary[5] to be numeric.  This avoids
-# test2 failing because ary2 goes str->numeric->str and ary does not.
-ary = [1,-100,127,128,32767,987.654321098 / 100.0,12345,123456,-32767,-123456,"abcdef"]
-$x = ary.pack($format)
-ary2 = $x.unpack($format)
-
-test_ok(ary.length == ary2.length)
-test_ok(ary.join(':') == ary2.join(':'))
-test_ok($x =~ /def/)
-
-$x = [-1073741825]
-test_ok($x.pack("q").unpack("q") == $x)
-
-test_check "math"
-test_ok(Math.sqrt(4) == 2)
-
-include Math
-test_ok(sqrt(4) == 2)
-
-test_check "struct"
-struct_test = Struct.new("Test", :foo, :bar)
-test_ok(struct_test == Struct::Test)
-
-test = struct_test.new(1, 2)
-test_ok(test.foo == 1 && test.bar == 2)
-test_ok(test[0] == 1 && test[1] == 2)
-
-a, b = test.to_a
-test_ok(a == 1 && b == 2)
-
-test[0] = 22
-test_ok(test.foo == 22)
-
-test.bar = 47
-test_ok(test.bar == 47)
-
-test_check "variable"
-test_ok($$.instance_of?(Fixnum))
-
-# read-only variable
-begin
-  $$ = 5
-  test_ok false
-rescue NameError
-  test_ok true
-end
-
-foobar = "foobar"
-$_ = foobar
-test_ok($_ == foobar)
-
-class Gods
-  @@rule = "Uranus"
-  def ruler0
-    @@rule
-  end
-
-  def self.ruler1              # <= per method definition style
-    @@rule
-  end             
-  class << self                        # <= multiple method definition style
-    def ruler2
-      @@rule
-    end
-  end
-end
-
-module Olympians
- @@rule ="Zeus"
- def ruler3
-    @@rule
-  end
-end
-
-class Titans < Gods
-  @@rule = "Cronus"
-  include Olympians            # OK to cause warning (intentional)
-end
-
-test_ok(Gods.new.ruler0 == "Cronus")
-test_ok(Gods.ruler1 == "Cronus")
-test_ok(Gods.ruler2 == "Cronus")
-test_ok(Titans.ruler1 == "Cronus")
-test_ok(Titans.ruler2 == "Cronus")
-atlas = Titans.new
-test_ok(atlas.ruler0 == "Cronus")
-test_ok(atlas.ruler3 == "Zeus")
-
-test_check "trace"
-$x = 1234
-$y = 0
-trace_var :$x, proc{$y = $x}
-$x = 40414
-test_ok($y == $x)
-
-untrace_var :$x
-$x = 19660208
-test_ok($y != $x)
-
-trace_var :$x, proc{$x *= 2}
-$x = 5
-test_ok($x == 10)
-
-untrace_var :$x
-
-test_check "defined?"
-
-test_ok(defined?($x))          # global variable
-test_ok(defined?($x) == 'global-variable')# returns description
-
-foo=5
-test_ok(defined?(foo))         # local variable
-
-test_ok(defined?(Array))       # constant
-test_ok(defined?(Object.new))  # method
-test_ok(!defined?(Object.print))# private method
-test_ok(defined?(1 == 2))      # operator expression
-
-class Foo
-  def foo
-    p :foo
-  end
-  protected :foo
-  def bar(f)
-    test_ok(defined?(self.foo))
-    test_ok(defined?(f.foo))
-  end
-end
-f = Foo.new
-test_ok(defined?(f.foo) == nil)
-f.bar(f)
-
-def defined_test
-  return !defined?(yield)
-end
-
-test_ok(defined_test)          # not iterator
-test_ok(!defined_test{})       # called as iterator
-
-test_check "alias"
-class Alias0
-  def foo; "foo" end
-end
-class Alias1<Alias0
-  alias bar foo
-  def foo; "foo+" + super end
-end
-class Alias2<Alias1
-  alias baz foo
-  undef foo
-end
-
-x = Alias2.new
-test_ok(x.bar == "foo")
-test_ok(x.baz == "foo+foo")
-
-# test_check for cache
-test_ok(x.baz == "foo+foo")
-
-class Alias3<Alias2
-  def foo
-    defined? super
-  end
-  def bar
-    defined? super
-  end
-  def quux
-    defined? super
-  end
-end
-x = Alias3.new
-test_ok(!x.foo)
-test_ok(x.bar)
-test_ok(!x.quux)
-
-test_check "path"
-test_ok(File.basename("a") == "a")
-test_ok(File.basename("a/b") == "b")
-test_ok(File.basename("a/b/") == "b")
-test_ok(File.basename("/") == "/")
-test_ok(File.basename("//") == "/")
-test_ok(File.basename("///") == "/")
-test_ok(File.basename("a/b////") == "b")
-test_ok(File.basename("a.rb", ".rb") == "a")
-test_ok(File.basename("a.rb///", ".rb") == "a")
-test_ok(File.basename("a.rb///", ".*") == "a")
-test_ok(File.basename("a.rb///", ".c") == "a.rb")
-test_ok(File.dirname("a") == ".")
-test_ok(File.dirname("/") == "/")
-test_ok(File.dirname("/a") == "/")
-test_ok(File.dirname("a/b") == "a")
-test_ok(File.dirname("a/b/c") == "a/b")
-test_ok(File.dirname("/a/b/c") == "/a/b")
-test_ok(File.dirname("/a/b/") == "/a")
-test_ok(File.dirname("/a/b///") == "/a")
-case Dir.pwd
-when %r'\A\w:'
-  test_ok(/\A\w:\/\z/ =~ File.expand_path(".", "/"))
-  test_ok(/\A\w:\/a\z/ =~ File.expand_path("a", "/"))
-  dosish = true
-when %r'\A//'
-  test_ok(%r'\A//[^/]+/[^/]+\z' =~ File.expand_path(".", "/"))
-  test_ok(%r'\A//[^/]+/[^/]+/a\z' =~ File.expand_path(".", "/"))
-  dosish = true
-else
-  test_ok(File.expand_path(".", "/") == "/")
-  test_ok(File.expand_path("sub", "/") == "/sub")
-end
-if dosish
-  test_ok(File.expand_path("/", "//machine/share/sub") == "//machine/share")
-  test_ok(File.expand_path("/dir", "//machine/share/sub") == "//machine/share/dir")
-  test_ok(File.expand_path("/", "z:/sub") == "z:/")
-  test_ok(File.expand_path("/dir", "z:/sub") == "z:/dir")
-end
-test_ok(File.expand_path(".", "//") == "//")
-test_ok(File.expand_path("sub", "//") == "//sub")
-
-test_check "gc"
-begin
-  1.upto(10000) {
-    tmp = [0,1,2,3,4,5,6,7,8,9]
-  }
-  tmp = nil
-  test_ok true
-rescue
-  test_ok false
-end
-class S
-  def initialize(a)
-    @a = a
-  end
-end
-l=nil
-100000.times {
-  l = S.new(l)
-}
-GC.start
-test_ok true   # reach here or dumps core
-l = []
-100000.times {
-  l.push([l])
-}
-GC.start
-test_ok true   # reach here or dumps core
-
-if $failed > 0
-  printf "test: %d failed %d\n", $ntest, $failed
-else
-  printf "end of test(test: %d)\n", $ntest
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/testunit/adder.rb b/ruby/doc/ruby/ruby-1.8.7/sample/testunit/adder.rb
deleted file mode 100644 (file)
index aa5c88c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-class Adder
-  def initialize(number)
-    @number = number
-  end
-  def add(number)
-    return @number + number
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/testunit/subtracter.rb b/ruby/doc/ruby/ruby-1.8.7/sample/testunit/subtracter.rb
deleted file mode 100644 (file)
index 2c08247..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-class Subtracter
-  def initialize(number)
-    @number = number
-  end
-  def subtract(number)
-    return @number - number
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/testunit/tc_adder.rb b/ruby/doc/ruby/ruby-1.8.7/sample/testunit/tc_adder.rb
deleted file mode 100644 (file)
index 8453beb..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit'
-require 'adder'
-
-class TC_Adder < Test::Unit::TestCase
-  def setup
-    @adder = Adder.new(5)
-  end
-  def test_add
-    assert_equal(7, @adder.add(2), "Should have added correctly")
-  end
-  def teardown
-    @adder = nil
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/testunit/tc_subtracter.rb b/ruby/doc/ruby/ruby-1.8.7/sample/testunit/tc_subtracter.rb
deleted file mode 100644 (file)
index d2c8313..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit'
-require 'subtracter'
-
-class TC_Subtracter < Test::Unit::TestCase
-  def setup
-    @subtracter = Subtracter.new(5)
-  end
-  def test_subtract
-    assert_equal(3, @subtracter.subtract(2), "Should have subtracted correctly")
-  end
-  def teardown
-    @subtracter = nil
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/testunit/ts_examples.rb b/ruby/doc/ruby/ruby-1.8.7/sample/testunit/ts_examples.rb
deleted file mode 100644 (file)
index 3d24dd6..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit'
-require 'tc_adder'
-require 'tc_subtracter'
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/time.rb b/ruby/doc/ruby/ruby-1.8.7/sample/time.rb
deleted file mode 100644 (file)
index e169120..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /usr/bin/env ruby
-
-b = Time.now
-system(*ARGV)
-e = Time.now
-
-tms = Process.times
-real = e - b
-user = tms.cutime
-sys = tms.cstime
-
-STDERR.printf("%11.1f real %11.1f user %11.1f sys\n", real, user, sys)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/24hr_clock.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/24hr_clock.rb
deleted file mode 100644 (file)
index 60d8072..0000000
+++ /dev/null
@@ -1,286 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-
-class Clock
-  def initialize(clock24 = true)
-    @clock = (clock24)? 24: 12
-
-    @size = 200
-    @cdot_size = 5
-
-    @cdot_color        = 'black'
-    @hour_hand_color   = 'black'
-    @minute_hand_color = 'gray25'
-    @second_hand_color = 'gray50'
-
-    @mark_font     = 'Helvetica -14'
-    @mark_width    = 3
-    @mark_color    = 'black'
-    @submark_color = 'gray50'
-
-    @c = TkCanvas.new(:width=>2*@size, :height=>2*@size, 
-                     :scrollregion=>[-@size, -@size, @size, @size]
-                     ).pack(:fill=>:both, :expand=>true)
-
-    @tag = TkcTag.new(@c)
-    @hand_tag = TkcTag.new(@c)
-
-    @circle_coords = [[-0.9*@size, -0.9*@size], [0.9*@size, 0.9*@size]]
-    @oval = TkcOval.new(@c, @circle_coords, :fill=>'white', :tags=>[@tag])
-
-    f = TkFrame.new.pack
-    TkLabel.new(f, :text=>'CURRENT:').pack(:side=>:left)
-    @now = TkLabel.new(f, :text=>'00:00:00').pack(:side=>:left, :padx=>2)
-    TkLabel.new(f, :text=>'  ').pack(:side=>:left)
-    TkLabel.new(f, :text=>'  ').pack(:side=>:right)
-    @l = TkLabel.new(f, :text=>'00:00').pack(:side=>:right, :padx=>2)
-    TkLabel.new(f, :text=>'MOUSE-POINTER:').pack(:side=>:right)
-
-    cmd = proc{|x, y|
-      @l.text = '%02d:%02d' % coords_to_time(@c.canvasx(x), @c.canvasy(y))
-    }
-    @c.bind('Motion', cmd, '%x %y')
-    @tag.bind('Motion', cmd, '%x %y')
-
-    _create_hands
-    _create_marks
-
-    timer_proc = proc{
-      t = Time.now
-      @now.text = '%02d:%02d:%02d' % [t.hour, t.min, t.sec]
-      set_hands(t.hour, t.min, t.sec)
-    }
-
-    timer_proc.call
-    @timer = TkRTTimer.start(100, -1, timer_proc)
-  end
-
-  def _create_marks
-    @mark_tag = TkcTag.new(@c)
-
-    TkcLine.new(@c, 0, -0.90*@size, 0, -0.85*@size, 
-                :tags=>[@tag, @mark_tag], 
-                :width=>@mark_width, :fill=>@mark_color)
-    TkcLine.new(@c, 0.90*@size, 0, 0.85*@size, 0, 
-                :tags=>[@tag, @mark_tag], 
-                :width=>@mark_width, :fill=>@mark_color)
-    TkcLine.new(@c, 0, 0.90*@size, 0, 0.85*@size, 
-                :tags=>[@tag, @mark_tag], 
-                :width=>@mark_width, :fill=>@mark_color)
-    TkcLine.new(@c, -0.90*@size, 0, -0.85*@size, 0, 
-                :tags=>[@tag, @mark_tag], 
-                :width=>@mark_width, :fill=>@mark_color)
-
-    TkcText.new(@c, [0, -0.92*@size], :text=>0, 
-                :anchor=>'s', :fill=>@mark_color)
-    TkcText.new(@c, [0.92*@size, 0], :text=>@clock.div(4), 
-                :anchor=>'w', :fill=>@mark_color)
-    TkcText.new(@c, [0, 0.92*@size], :text=>@clock.div(2), 
-                :anchor=>'n', :fill=>@mark_color)
-    TkcText.new(@c, [-0.92*@size, 0], :text=>@clock.div(4)*3, 
-                :anchor=>'e', :fill=>@mark_color)
-
-    [30.0, 60.0].each{|angle|
-      rad = Math::PI * angle / 180.0
-      x_base = @size*Math::sin(rad)
-      y_base = @size*Math::cos(rad)
-
-      x1 = 0.90*x_base
-      y1 = 0.90*y_base
-
-      x2 = 0.85*x_base
-      y2 = 0.85*y_base
-
-      TkcLine.new(@c, x1, y1, x2, y2, 
-                  :tags=>[@tag, @mark_tag], 
-                  :width=>@mark_width, :fill=>@mark_color)
-      TkcLine.new(@c, x1, -y1, x2, -y2, 
-                  :tags=>[@tag, @mark_tag], 
-                  :width=>@mark_width, :fill=>@mark_color)
-      TkcLine.new(@c, -x1, y1, -x2, y2, 
-                  :tags=>[@tag, @mark_tag], 
-                  :width=>@mark_width, :fill=>@mark_color)
-      TkcLine.new(@c, -x1, -y1, -x2, -y2, 
-                  :tags=>[@tag, @mark_tag], 
-                  :width=>@mark_width, :fill=>@mark_color)
-
-      x3 = 0.92*x_base
-      y3 = 0.92*y_base
-
-      if @clock == 24
-        dh = angle.to_i/15
-      else # @clock == 12
-        dh = angle.to_i/30
-      end
-
-      TkcText.new(@c, x3, -y3, :text=>dh, 
-                  :anchor=>'sw', :fill=>@mark_color)
-      TkcText.new(@c, x3, y3, :text=>@clock.div(2)-dh, 
-                  :anchor=>'nw', :fill=>@mark_color)
-      TkcText.new(@c, -x3, y3, :text=>@clock.div(2)+dh, 
-                  :anchor=>'ne', :fill=>@mark_color)
-      TkcText.new(@c, -x3, -y3, :text=>@clock-dh, 
-                  :anchor=>'se', :fill=>@mark_color)
-    }
-
-    if @clock == 24
-      [15.0, 45.0, 75.0].each{|angle|
-        rad = Math::PI * angle / 180.0
-        x_base = @size*Math::sin(rad)
-        y_base = @size*Math::cos(rad)
-
-        x1 = 0.90*x_base
-        y1 = 0.90*y_base
-
-        x2 = 0.875*x_base
-        y2 = 0.875*y_base
-
-        TkcLine.new(@c, x1, y1, x2, y2, 
-                    :tags=>[@tag, @mark_tag], 
-                    :width=>@mark_width, :fill=>@submark_color)
-        TkcLine.new(@c, x1, -y1, x2, -y2, 
-                    :tags=>[@tag, @mark_tag], 
-                    :width=>@mark_width, :fill=>@submark_color)
-        TkcLine.new(@c, -x1, y1, -x2, y2, 
-                    :tags=>[@tag, @mark_tag], 
-                    :width=>@mark_width, :fill=>@submark_color)
-        TkcLine.new(@c, -x1, -y1, -x2, -y2, 
-                    :tags=>[@tag, @mark_tag], 
-                    :width=>@mark_width, :fill=>@submark_color)
-      }
-    end
-  end
-
-  def _create_hands
-    hour_hand_len   = 0.55*@size
-    minute_hand_len = 0.85*@size
-    second_hand_len = 0.88*@size
-
-    hour_hand_width   = 1.8*@cdot_size
-    minute_hand_width = 1.0*@cdot_size
-    second_hand_width = 1 # 0.4*@cdot_size
-
-    @hour_hand_coords = [
-      [0, -0.5*@cdot_size], 
-      [hour_hand_width, -0.5*@cdot_size-hour_hand_width], 
-      [hour_hand_width, -hour_hand_len+hour_hand_width], 
-      [0, -hour_hand_len], 
-      [-hour_hand_width, -hour_hand_len+hour_hand_width], 
-      [-hour_hand_width, -0.5*@cdot_size-hour_hand_width], 
-    ]
-    @minute_hand_coords = [
-      [0, -0.5*@cdot_size], 
-      [minute_hand_width, -0.5*@cdot_size - minute_hand_width], 
-      [minute_hand_width, -minute_hand_len+minute_hand_width], 
-      [0, -minute_hand_len], 
-      [-minute_hand_width, -minute_hand_len+minute_hand_width], 
-      [-minute_hand_width, -0.5*@cdot_size-minute_hand_width], 
-    ]
-    @second_hand_coords = [
-      [0, -0.5*@cdot_size], 
-      [second_hand_width, -0.5*@cdot_size - second_hand_width], 
-      [second_hand_width, -second_hand_len+second_hand_width], 
-      [0, -second_hand_len], 
-      [-second_hand_width, -second_hand_len+second_hand_width], 
-      [-second_hand_width, -0.5*@cdot_size-second_hand_width], 
-    ]
-
-    @hour_hand = TkcPolygon.new(@c, @hour_hand_coords, 
-                                :tags=>[@tag, @hand_tag], 
-                                :outline=>@hour_hand_color, 
-                                :fill=>@hour_hand_color)
-
-    @minute_hand = TkcPolygon.new(@c, @minute_hand_coords, 
-                                  :tags=>[@tag, @hand_tag], 
-                                  :outline=>@minute_hand_color, 
-                                  :fill=>@minute_hand_color)
-
-    @second_hand = TkcPolygon.new(@c, @second_hand_coords, 
-                                  :tags=>[@tag, @hand_tag], 
-                                  :outline=>@second_hand_color, 
-                                  :fill=>@second_hand_color)
-
-    @center_dot = TkcOval.new(@c, 
-                              [-@cdot_size, -@cdot_size], 
-                              [@cdot_size, @cdot_size], 
-                              :outline=>@cdot_color, :fill=>@cdot_color)
-  end
-  private :_create_hands
-
-  def _raise_hands
-    @hour_hand.raise
-    @minute_hand.raise
-    @second_hand.raise
-    @center_dot.raise
-  end
-  private :_raise_hands
-
-  def _raise_marks
-    @mark_tag.raise
-  end
-  private :_raise_marks
-
-  def set_hands(hh, mm, ss)
-    ss_angle = Math::PI * ss / 30.0
-    mm_angle = Math::PI * (mm + ss/60.0) / 30.0
-    hh_angle = Math::PI * (hh + (mm + ss/60.0)/60.0) / (@clock.div(2))
-
-    @second_hand.coords = @second_hand_coords.collect{|x, y|
-      r = Math::hypot(y, x)
-      a = Math::atan2(y, x) + ss_angle
-      [Math::cos(a) * r, Math::sin(a) * r]
-    }
-
-    @minute_hand.coords = @minute_hand_coords.collect{|x, y|
-      r = Math::hypot(y, x)
-      a = Math::atan2(y, x) + mm_angle
-      [Math::cos(a) * r, Math::sin(a) * r]
-    }
-
-    @hour_hand.coords = @hour_hand_coords.collect{|x, y|
-      r = Math::hypot(y, x)
-      a = Math::atan2(y, x) + hh_angle
-      [Math::cos(a) * r, Math::sin(a) * r]
-    }
-
-    _raise_hands
-    _raise_marks
-  end
-
-  def coords_to_time(x, y)
-    return ((y < 0)? [0, 0]: [@clock.div(2), 0])  if x == 0
-    if @clock == 24
-      offset = (x<0&&y<0)? 1800.0: 360.0
-      m_half = 720.0
-    else # @clock == 12
-      offset = (x<0&&y<0)? 900.0: 180.0
-      m_half = 360.0
-    end
-    (offset + m_half*Math.atan2(y,x)/Math::PI).round.divmod(60)
-  end
-
-  def create_pie(hh, mm, span, color='red')
-    if @clock == 24
-      start  = 90.0 - (hh*60 + mm)/4.0  # 360.0*(hh*60+mm)/(24*60)
-      extent = -span/4.0
-    else # @clock == 12
-      start  = 90.0 - (hh*60 + mm)/2.0  # 360.0*(hh*60+mm)/(12*60)
-      extent = -span/2.0
-    end
-
-    pie = TkcArc.new(@c, @circle_coords, :tags=>[@tag], 
-                     :outline=>'black', 'fill'=>color, 
-                     :start=>start, :extent=>extent)
-    _raise_hands
-    _raise_marks
-    pie
-  end
-end
-
-sched = Clock.new
-sched.create_pie(0,0, 60)            #  60 minutes from 00:00
-sched.create_pie(6,30, 280, 'green') # 280 minutes from 06:30
-sched.create_pie(15,20, 90, 'blue')  #  90 minutes from 15:20
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/binding_sample.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/binding_sample.rb
deleted file mode 100644 (file)
index 693cc7d..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-
-class Button_clone < TkLabel
-  def initialize(*args)
-    @command = nil
-
-    if args[-1].kind_of?(Hash)
-      keys = _symbolkey2str(args.pop)
-      @command = keys.delete('command')
-
-      keys['highlightthickness'] = 1 unless keys.key?('highlightthickness')
-      keys['padx'] = '3m' unless keys.key?('padx')
-      keys['pady'] = '1m' unless keys.key?('pady')
-      keys['relief'] = 'raised' unless keys.key?('relief')
-
-      args.push(keys)
-    end
-
-    super(*args)
-
-    @press = false
-
-    self.bind('Enter', proc{self.background(self.activebackground)})
-    self.bind('Leave', proc{
-                @press = false
-                self.background(self.highlightbackground)
-                self.relief('raised')
-              })
-
-    self.bind('ButtonPress-1', proc{@press = true; self.relief('sunken')})
-    self.bind('ButtonRelease-1', proc{
-                self.relief('raised')
-                @command.call if @press && @command
-                @press = false
-              })
-  end
-
-  def command(cmd = Proc.new)
-    @command = cmd
-  end
-
-  def invoke
-    if @command
-      @command.call 
-    else
-      ''
-    end
-  end
-end
-
-TkLabel.new(:text=><<EOT).pack
-This is a sample of 'event binding'.
-The first button is a normal button widget.
-And the second one is a normal label widget 
-but with some bindings like a button widget.
-EOT
-
-lbl = TkLabel.new(:foreground=>'red').pack(:pady=>3)
-
-v = TkVariable.new(0)
-
-TkFrame.new{|f|
-  TkLabel.new(f, :text=>'click count : ').pack(:side=>:left)
-  TkLabel.new(f, :textvariable=>v).pack(:side=>:left)
-}.pack
-
-TkButton.new(:text=>'normal Button widget', 
-             :command=>proc{
-               puts 'button is clicked!!'
-               lbl.text 'button is clicked!!'
-               v.numeric += 1
-             }){
-  pack(:fill=>:x, :expand=>true)
-}
-
-Button_clone.new(:text=>'Label with Button binding', 
-                 :command=>proc{
-                   puts 'label is clicked!!'
-                   lbl.text 'label is clicked!!'
-                   v.numeric += 1
-                 }){
-  pack(:fill=>:x, :expand=>true)
-}
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/bindtag_sample.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/bindtag_sample.rb
deleted file mode 100644 (file)
index 8c93b4a..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-
-TkLabel.new(:text=><<EOT, :justify=>:left).pack
-This is a sample of bindtags and usage of 
-Tk.callback_break/Tk.callback_continue. 
-Please check the work of following buttons 
-(attend the difference between before/after 
- pressing the bottom button), and see the 
-source code.
-EOT
-
-def set_class_bind
-  TkButton.bind('ButtonPress-1', 
-                proc{puts 'bind "ButtonPress-1" of TkButton class'})
-  TkButton.bind('ButtonRelease-1', 
-                proc{puts 'bind "ButtonRelease-1" of TkButton class'})
-end
-
-# set root binding
-r = TkRoot.new
-r.bind('ButtonPress-1',   proc{puts 'bind "ButtonPress-1" of root widget'})
-r.bind('ButtonRelease-1', proc{puts 'bind "ButtonRelease-1" of root widget'})
-
-# set 'all' binding
-TkBindTag::ALL.bind('ButtonPress-1', 
-                    proc{puts 'bind "ButtonPress-1" of the tag "all"'})
-TkBindTag::ALL.bind('ButtonRelease-1', 
-                    proc{puts 'bind "ButtonRelease-1" of the tag "all"'})
-
-# create buttons
-b1 = TkButton.new(:text=>'button-1', 
-                  :command=>proc{puts "command of button-1"}).pack
-b2 = TkButton.new(:text=>'button-2', 
-                  :command=>proc{puts "command of button-2"}).pack
-b3 = TkButton.new(:text=>'button-3', 
-                  :command=>proc{puts "command of button-3"}).pack
-b4 = TkButton.new(:text=>'button-4', 
-                  :command=>proc{puts "command of button-4"}).pack
-b5 = TkButton.new(:text=>'button-5', 
-                  :command=>proc{puts "command of button-5"}).pack
-
-# set button binding
-b1.bind('ButtonPress-1',   proc{puts 'bind "ButtonPress-1" of button-1'})
-b1.bind('ButtonRelease-1', proc{puts 'bind "ButtonRelease-1" of button-1'})
-
-b2.bind('ButtonPress-1',   proc{puts 'bind "ButtonPress-1" of button-2'})
-b2.bind('ButtonRelease-1', proc{puts 'bind "ButtonRelease-1" of button-2'})
-
-b3.bind('ButtonPress-1',   proc{puts 'bind "ButtonPress-1" of button-3'})
-b3.bind('ButtonRelease-1', proc{puts 'bind "ButtonRelease-1" of button-3'})
-
-b4.bind('ButtonPress-1',   proc{puts 'bind "ButtonPress-1" of button-4'})
-b4.bind('ButtonRelease-1', proc{puts 'bind "ButtonRelease-1" of button-4'})
-
-b5.bind('ButtonPress-1',   proc{puts 'bind "ButtonPress-1" of button-5'})
-b5.bind('ButtonRelease-1', proc{puts 'bind "ButtonRelease-1" of button-5'})
-
-# create bindtag and set binding
-tag1 = TkBindTag.new
-tag1.bind('ButtonPress-1',   proc{puts 'bind "ButtonPress-1" of tag1'})
-tag1.bind('ButtonRelease-1', proc{puts 'bind "ButtonRelease-1" of tag1'})
-
-tag2 = TkBindTag.new
-tag2.bind('ButtonPress-1',   
-          proc{
-            puts 'bind "ButtonPress-1" of tag2'
-            puts 'call Tk.callback_continue'
-            Tk.callback_continue
-            puts 'never see this message'
-          })
-tag2.bind('ButtonRelease-1', 
-          proc{
-            puts 'bind "ButtonRelease-1" of tag2'
-            puts 'call Tk.callback_continue'
-            Tk.callback_continue
-            puts 'never see this message'
-          })
-
-tag3 = TkBindTag.new
-tag3.bind('ButtonPress-1',   
-          proc{
-            puts 'bind "ButtonPress-1" of tag3'
-            puts 'call Tk.callback_break'
-            Tk.callback_break
-            puts 'never see this message'
-          })
-tag3.bind('ButtonRelease-1', 
-          proc{
-            puts 'bind "ButtonRelease-1" of tag3'
-            puts 'call Tk.callback_break'
-            Tk.callback_break
-            puts 'never see this message'
-          })
-
-# set bindtags
-p b1.bindtags
-
-tags = b2.bindtags
-tags[2,0] = tag1
-tags[0,0] = tag1
-b2.bindtags(tags)
-p b2.bindtags
-
-tags = b3.bindtags
-tags[2,0] = tag2
-tags[0,0] = tag2
-b3.bindtags(tags)
-p b3.bindtags
-
-tags = b4.bindtags
-tags[2,0] = tag3
-tags[0,0] = tag3
-b4.bindtags(tags)
-p b4.bindtags
-
-b5.bindtags([tag1, TkButton, tag2, b5])
-
-# create button to set button class binding
-TkButton.new(:text=>'set binding to TkButton class', 
-             :command=>proc{
-               puts 'call "set_class_bind"'
-               set_class_bind
-             }).pack(:pady=>7)
-
-# start event-loop
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/binstr_usage.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/binstr_usage.rb
deleted file mode 100644 (file)
index be8399b..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env ruby
-
-require "tk"
-
-TkMessage.new(:width=>360, :text=><<EOM).pack
-This sample shows how to use a binary sequence between Ruby and Tk. \
-This reads the image data from the file as the binary sequence.
-
-To treat the difference of encodings between on Ruby and on Tk seamlessly, \
-Ruby/Tk converts the encoding of string arguments automatically. \
-I think it is comfortable for users on almost all situations. \
-However, when treats a binary sequence, the convert process makes troubles.
-
-Tk::BinaryString class (subclass of Tk::EncodedString class) is the class \
-to avoid such troubles. Please see the source code of this sample. \
-A Tk::BinaryString instance is used to create the image for the center button. 
-EOM
-
-ImgFile=[File.dirname(__FILE__), 'images','tcllogo.gif'].join(File::Separator)
-
-ph1 = TkPhotoImage.new(:file=>ImgFile)
-p ph1.configinfo
-
-b_str = Tk::BinaryString(IO.read(ImgFile))
-p [b_str, b_str.encoding]
-
-ph2 = TkPhotoImage.new(:data=>b_str)
-p ph2.configinfo
-p ph2.data(:grayscale=>true)
-
-ph3 = TkPhotoImage.new(:palette=>256)
-ph3.put(ph2.data)
-
-ph4 = TkPhotoImage.new()
-ph4.put(ph2.data(:grayscale=>true))
-
-#p [b_str.encoding, b_str.rb_encoding]
-
-f = TkFrame.new.pack
-TkButton.new(:parent=>f, :image=>ph1, :command=>proc{exit}).pack(:side=>:left)
-TkButton.new(:parent=>f, :image=>ph2, :command=>proc{exit}).pack(:side=>:left)
-TkButton.new(:parent=>f, :image=>ph3, :command=>proc{exit}).pack(:side=>:left)
-TkButton.new(:parent=>f, :image=>ph4, :command=>proc{exit}).pack(:side=>:left)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/btn_with_frame.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/btn_with_frame.rb
deleted file mode 100644 (file)
index d04c95a..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-require 'tk'
-
-class Button_with_Frame < TkButton
-  def create_self(keys)
-    @frame = TkFrame.new('widgetname'=>@path, 'background'=>'yellow')
-    install_win(@path) # create new @path which is a daughter of old @path
-    super(keys)
-    TkPack(@path, :padx=>7, :pady=>7)
-    @epath = @frame.path
-  end
-  def epath
-    @epath
-  end
-end
-
-Button_with_Frame.new(:text=>'QUIT', :command=>proc{exit}) {
-  pack(:padx=>15, :pady=>5)
-}
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/cd_timer.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/cd_timer.rb
deleted file mode 100644 (file)
index 9154e89..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/usr/bin/env ruby
-#
-#   countdown timer
-#     usage: cd_timer min [, min ... ]
-#            ( e.g. cd_timer 0.5 1 3 5 10 )
-#
-require 'tk'
-
-if ARGV.empty?
-  $stderr.puts 'Error:: No time arguments for counting down' 
-  exit(1)
-end
-
-width = 10
-
-TkButton.new(:text=>'exit', 
-             :command=>proc{exit}).pack(:side=>:bottom, :fill=>:x)
-
-b = TkButton.new(:text=>'start').pack(:side=>:top, :fill=>:x)
-
-f = TkFrame.new(:relief=>:ridge, :borderwidth=>2).pack(:fill=>:x)
-TkLabel.new(f, :relief=>:flat, :pady=>3, 
-            :background=>'black', :foreground=>'white', 
-            :text=>'  elapsed: ').pack(:fill=>:x, :side=>:left, :expand=>true)
-now = TkLabel.new(f, :width=>width, :relief=>:flat, :pady=>3, :anchor=>:w, 
-                  :background=>'black', :foreground=>'white', 
-                  :text=>'%4d:%02d.00' % [0, 0]).pack(:side=>:right)
-
-timers = [ TkRTTimer.new(10){|tm|
-    t = (tm.return_value || 0) + 1
-    s, u = t.divmod(100)
-    m, s = s.divmod(60)
-    now.text('%4d:%02d.%02d' % [m, s, u])
-    t
-  }.set_start_proc(0, proc{
-                     now.text('%4d:%02d.00' % [0,0])
-                     now.foreground('white')
-                     0
-                   })
-]
-
-ARGV.collect{|arg| (Float(arg) * 60).to_i}.sort.each_with_index{|time, idx|
-  f = TkFrame.new(:relief=>:ridge, :borderwidth=>2).pack(:fill=>:x)
-  TkLabel.new(f, :relief=>:flat, :pady=>3, 
-              :text=>'  %4d:%02d  --> ' % (time.divmod(60))).pack(:side=>:left)
-  l = TkLabel.new(f, :width=>width, :relief=>:flat, :pady=>3, :anchor=>:w, 
-                  :text=>'%4d:%02d' % (time.divmod(60))).pack(:side=>:right)
-  timers << TkRTTimer.new(1000){|tm|
-    t = (tm.return_value || time) - 1
-    if t < 0
-      l.text('%4d:%02d' % ((-t).divmod(60)))
-    else
-      l.text('%4d:%02d' % (t.divmod(60)))
-    end
-    if t.zero?
-      l.foreground('red')
-      idx.times{Tk.bell}
-    end
-    t
-  }.set_start_proc(0, proc{
-                     l.text('%4d:%02d' % (time.divmod(60)))
-                     l.foreground('black')
-                     time
-                   })
-}
-
-mode = :start
-b.command(proc{
-            if mode == :start
-              timers.each{|timer| timer.restart}
-              b.text('reset')
-              mode = :reset
-            else
-              timers.each{|timer| timer.stop.reset}
-              b.text('start')
-              mode = :start
-            end
-          })
-
-Tk.mainloop
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/cmd_res_test.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/cmd_res_test.rb
deleted file mode 100644 (file)
index 6e954f2..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'tk'
-TkOptionDB.readfile(File.expand_path('cmd_resource', 
-                                     File.dirname(__FILE__)))
-f = TkFrame.new(:class=>'BtnFrame').pack
-b = TkButton.new(:parent=>f, :widgetname=>'hello').pack
-cmd1 = TkOptionDB.new_proc_class(b, [:show_msg, :bye_msg], 3)
-cmd2 = TkOptionDB.new_proc_class(:ZZZ, [:show_msg, :bye_msg], 3, false, cmd1)
-cmd3 = TkOptionDB.new_proc_class(:ZZZ, [:show_msg, :bye_msg], 3, false, b)
-cmd4 = TkOptionDB.new_proc_class(:BTN_CMD, [:show_msg, :bye_msg], 3){
-  def self.__check_proc_string__(str)
-    "{|arg| print [arg, $SAFE].inspect, ': '; Proc.new#{str}.call(arg)}"
-  end
-}
-cmd1.show_msg('cmd1')
-cmd2.show_msg('cmd2')
-cmd3.show_msg('cmd3')
-cmd4.show_msg('cmd4')
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/cmd_resource b/ruby/doc/ruby/ruby-1.8.7/sample/tk/cmd_resource
deleted file mode 100644 (file)
index 9cc4915..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-*BtnFrame.hello.text: HELLO
-*BtnFrame.hello.command: ruby {puts "Hello World!!"}
-*BTN_CMD.show_msg: {|arg| print "Hello, #{arg}!!\n"}
-*hello.show_msg: {|arg| print "Hello, Hello, #{arg}!!\n"}
-*hello.ZZZ.show_msg: {|arg| print "Hello, Hello, ZZZ:#{arg}!!\n"}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ChangeLog b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ChangeLog
deleted file mode 100644 (file)
index c3f66cf..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-2002-08-29 16:30  matt
-
-       * ChangeLog: ChangeLog is auto-generated *from* CVS log.
-
-2002-08-29 16:27  matt
-
-       * ChangeLog.prev: [no log message]
-
-2002-08-28 18:07  matt
-
-       * browse1, browse2, hello, ixset, rmt, rolodex, rolodex-j, square,
-       tcolor, timer, widget: Changed #! lines to the slightly more
-       portable '#!/usr/bin/env ruby'.
-
-2002-08-28 17:56  matt
-
-       * icon.rb, items.rb, label.rb, menu.rb, ruler.rb: Changed bitmap
-       file extensions from .bmp to .xbm.
-
-2002-08-28 17:55  matt
-
-       * images/: face.bmp, face.xbm, flagdown.bmp, flagdown.xbm,
-       flagup.bmp, flagup.xbm, gray25.bmp, gray25.xbm, letters.bmp,
-       letters.xbm, noletter.bmp, noletter.xbm, pattern.bmp, pattern.xbm:
-       Changed X bitmap file extensions from .bmp to the more intuitive
-       .xbm.
-
-2002-08-28 17:35  matt
-
-       * bitmap.rb, colors.rb, cscroll.rb, ctext.rb, hello, ixset,
-       menubu.rb, patch_1.1c1, rmt, style.rb, timer, ChangeLog, README,
-       README.tkencoding, arrow.rb, bind.rb, browse1, browse2, button.rb,
-       check.rb, clrpick.rb, dialog1.rb, dialog2.rb, entry1.rb, entry2.rb,
-       filebox.rb, floor.rb, form.rb, hscale.rb, icon.rb, image1.rb,
-       image2.rb, items.rb, label.rb, menu.rb, msgbox.rb, plot.rb,
-       puzzle.rb, radio.rb, rolodex, rolodex-j, ruler.rb, sayings.rb,
-       search.rb, square, states.rb, tcolor, text.rb, tkencoding.rb,
-       twind.rb, vscale.rb, widget, doc.org/README, doc.org/README.JP,
-       doc.org/README.tk80, doc.org/license.terms,
-       doc.org/license.terms.tk80, images/earth.gif, images/earthris.gif,
-       images/face.bmp, images/flagdown.bmp, images/flagup.bmp,
-       images/gray25.bmp, images/grey.25, images/grey.5,
-       images/letters.bmp, images/noletter.bmp, images/pattern.bmp,
-       images/tcllogo.gif, images/teapot.ppm: Initial revision
-
-2002-08-28 17:35  matt
-
-       * bitmap.rb, colors.rb, cscroll.rb, ctext.rb, hello, ixset,
-       menubu.rb, patch_1.1c1, rmt, style.rb, timer, ChangeLog, README,
-       README.tkencoding, arrow.rb, bind.rb, browse1, browse2, button.rb,
-       check.rb, clrpick.rb, dialog1.rb, dialog2.rb, entry1.rb, entry2.rb,
-       filebox.rb, floor.rb, form.rb, hscale.rb, icon.rb, image1.rb,
-       image2.rb, items.rb, label.rb, menu.rb, msgbox.rb, plot.rb,
-       puzzle.rb, radio.rb, rolodex, rolodex-j, ruler.rb, sayings.rb,
-       search.rb, square, states.rb, tcolor, text.rb, tkencoding.rb,
-       twind.rb, vscale.rb, widget, doc.org/README, doc.org/README.JP,
-       doc.org/README.tk80, doc.org/license.terms,
-       doc.org/license.terms.tk80, images/earth.gif, images/earthris.gif,
-       images/face.bmp, images/flagdown.bmp, images/flagup.bmp,
-       images/gray25.bmp, images/grey.25, images/grey.5,
-       images/letters.bmp, images/noletter.bmp, images/pattern.bmp,
-       images/tcllogo.gif, images/teapot.ppm: Taking over demo package
-       from Jonathan Conway.
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ChangeLog.prev b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ChangeLog.prev
deleted file mode 100644 (file)
index 536ce30..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-2001-07-26      <rise@leannan.knavery.net>
-
-       * Moved files to directory ruby-tk81-demos-english in tarball.
-
-2001-07-26      <rise@knavery.net>
-
-       * Added test to widget and hello versus Tk::TCL_VERSION & Tk::JAPANIZED_TK (per Guy Decoux in [ruby-talk:18559]) before requiring tkencoding.rb.
-
-       
\ No newline at end of file
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/README b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/README
deleted file mode 100644 (file)
index 2908aa3..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-Current Maintainer: 
-       Jonathan Conway
-       rise@knavery.net
-
-       Please direct all bug reports/requests/suggestions to the above 
-       address.
-
-
-Notes:
-
-*      The files hello and widget have been changed to test Tk::TCL_VERSION 
-       and Tk::JAPANIZED_TK before requiring tkencoding.rb to prevent an
-       infinite loop.  This test was taken from a message in
-       [ruby-talk:18559] by Guy Decoux.
-
-*      The .bmp files in the images directory are X bitmaps (i.e. XBM to many
-       graphics packages), not Windows bitmaps (.bmp).  You will not be
-       able to use images exported by a graphics program as Windows
-       bitmaps with this demo collection nor will you be able to edit the
-       included images without setting the file type correctly.
-       
--- Jonathan Conway, 2001-07-26
-
-
-#------------------------------------------------------------------------------
-# ==== Introduction. ====
-#
-# To create this version of the Ruby/Tk widget demo, I took the
-# ruby-tk81-demos and removed all the Kanji strings and comments.  I
-# have tried to restore the original English strings and comments
-# using the Tcl/Tk8.2.2 version of the widget demo. 
-#
-# When I tried running the Kanji version, all I got was a mostly blank
-# panel with a non-functional "File" button. I disovered that if all
-# non-ASCII characters were replaced with blanks, then I could get the
-# gutted stuff running.  
-#
-# Since English Ruby/Tk documentation is lacking and I needed this
-# code to see how it worked and to use as the basis of my try-it
-# prototype (The Ruby Yielding Interactive Toolkit), plus the fact
-# that no help was forthcoming for making the Kanji version work (plus
-# the fact that I can't read Kanji anyway), I decided to embark on
-# this English restoration project. 
-#
-# Thanks to everyone who worked on the original Ruby/Tk widget demo
-# (and the preceding Tcl/Tk version for that matter).  The
-# comparatively simple task of changing text strings and comments has
-# made me appreciate the great amount of original work that went into
-# this.
-#
-# -- Conrad Schneiker, 2000-07-23.
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# ==== Known bugs. ====
-#
-# ^C-ing the demo gives Ruby interrupt and stack message; clean exit needed.
-# Font settings don't work correctly.
-# Dismissing the embedded windows demo (tkwind.rb) kills the widget demo.
-# Rerunning the canvas item demo from the code widow get errors.
-# The "press me" button in the canvas item demo doesn't time out.
-# The simple 2 d plot starts up extremely slow compared to the Tcl version.
-# The first item message on the icon menu on the menu and cascades demo doesn't work.
-#------------------------------------------------------------------------------
-
-
-###################### Original README ########################################
-
-  Ruby/Tk81 widget-demo                        1999/08/13
-
-                                       ËÌΦÀèüÂç¾ðÊó²Ê³Ø¸¦µæ²Ê
-                                       Î©ÀР<ttate@jaist.ac.jp>
-
-Tcl/Tk8.1¤Ç¤Ïunicode(UTF8)¤¬ºÎÍѤµ¤ì¡¢unicode¤ËÊÑ´¹¤µ¤ì¤¿ÆüËܸì¤Ç¤¢¤ì¤Ð
-Widget¤Ëɽ¼¨¤µ¤»¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£ËÜ¥¢¡¼¥«¥¤¥Ö¤Ë¤Ï°ÊÁ°¤Ë±Ê°æ¤µ¤ó¤¬Ãæ¿´¤È
-¤Ê¤é¤ì¤ÆºîÀ®¤µ¤ì¤¿Ruby/Tk¤Î¥µ¥ó¥×¥ë¤Ë½¤Àµ¤ò²Ã¤¨¡¢°Ê²¼¤Î´Ä¶­¤Ë¤ª¤¤¤Æ¤ÇÆ°ºî
-¤ò³Îǧ¤·¤¿¤â¤Î¤Ç¤¹¡£
-
-* ruby-1.3.7,ruby-1.4.0
-* tcl8.1, tk8.1
-* linux-2.2
-
-Windows(Cygwin)¤Ë¤ª¤¤¤Æ¡¢¥µ¥ó¥×¥ë¤òÆ°¤«¤¹¤Ë¤Ïruby¤ò-Ke¤È¤¤¤¦¥ª¥×¥·¥ç¥ó¤òÉÕ
-¤±¤Æµ¯Æ°¤µ¤»¤ë¤ÈÎɤ¤¤½¤¦¤Ç¤¹¡£
-                                       ¾ðÊóÄ󶡡§ÅÏÊÕ¤µ¤ó
-                                       <eban@os.rim.or.jp>
-
-----------------------------------------------------------------------------
-  Ruby/Tk widget-demo 
-                              version 1.1 ( 1998/07/24 )
-                              ±Ê°æ¡÷ÃÎǽ¡¥¶å¹©Âç (nagai@ai.kyutech.ac.jp)
-
-ɸ½àÇÛÉۤΠTcl/Tk ³ÈÄ¥¥Ñ¥Ã¥±¡¼¥¸¤ò¼è¤ê¹þ¤ó¤À Ruby (°Ê²¼ Ruby/Tk ¤È¸Æ¤Ó¤Þ¤¹) 
-¤Ç¤Ï¡¤Tk widget ¤òÍѤ¤¤¿ GUI ¤ÎºîÀ®¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥¼ÂºÝ¤Ë GUI ¤òºîÀ®
-¤·¤Æ¤¤¤¯¾ì¹ç¤Ë¤ÏÍÍ¡¹¤Ê¼ÂÎ㤬¥µ¥ó¥×¥ë¤È¤·¤Æ¸ºß¤¹¤ë¤ÈÊØÍø¤Ê¤Î¤Ç¤¹¤¬¡¤Ruby/Tk 
-¤Ë¤Ï¤½¤Î¤è¤¦¤ÊŬÅö¤Ê¥µ¥ó¥×¥ë¥¹¥¯¥ê¥×¥È½¸¹ç¤Ï¸ºß¤·¤Þ¤»¤ó¤Ç¤·¤¿¡¥¤½¤ì¤ËÂФ·¡¤
-³ÈÄ¥¥Ñ¥Ã¥±¡¼¥¸¤Î¸µ¤Ç¤¢¤ë Tcl/Tk ¤Ë¤Ï¡¤Tk widget ¤òÍѤ¤¤Æ¤É¤Î¤è¤¦¤Ê¤³¤È¤¬¤Ç
-¤­¤ë¤«¤ò¼¨¤¹¤â¤Î¤È¤·¤Æ widget-demo ¤¬Â¸ºß¤·¤ª¤ê¡¤Tcl/Tk ¤òÍѤ¤¤¿ GUI ¤ÎºîÀ®
-¤ò½¬ÆÀ¤¹¤ëºÝ¤ÎÂåɽŪ¥µ¥ó¥×¥ë¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥ËÜ¥¢¡¼¥«¥¤¥Ö¤Ï¡¤Ruby/Tk ¤Î½¬ÆÀ¤Î
-¤¿¤á¤ÎÂåɽŪ¤Ê¥µ¥ó¥×¥ë¥¹¥¯¥ê¥×¥È¤È¤¹¤Ù¤¯¡¤Tcl/Tk ¤Î widget-demo ¤ò°Ü¿¢¤·¤¿¤â
-¤Î¤Ç¤¹¡¥
-
-ËÜ¥¢¡¼¥«¥¤¥Ö¤Ë´Þ¤Þ¤ì¤ë¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ë¤Ï¡¤ruby-1.1c2 °Ê¾å¤Ç¤¢¤ë¤³
-¤È¤¬É¬ÍפǤ¹¡¥1.1c1 ¤Î¾ì¹ç¤Ï¡¤ËÜ¥¢¡¼¥«¥¤¥Ö¤Ë´Þ¤Þ¤ì¤ë patck_1.1c1 ¤ò Ruby ¤Î
-¥é¥¤¥Ö¥é¥ê¤Ë¤¢¤Æ¤Æ¤¯¤À¤µ¤¤¡¥ÁȤ߹þ¤à Tk ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï¡¤4.2 ¤Ç¤â 8.0 ¤Ç¤â½¤
-Àµ¤Ê¤¯Æ°¤«¤»¤ë¤Ï¤º¤Ç¤¹¡¥¤¿¤À¤·¡¤ÆüËܸìÈǤǤΰܿ¢¤È¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¡¤ÆüËܸ첽¤µ
-¤ì¤¿ Tk ¤ò¤´ÍøÍѤ¯¤À¤µ¤¤¡¥¥¹¥¯¥ê¥×¥È¤Î¥Æ¥¹¥È¤Ï¡¤Tk4.2jp ¤È Tk8.0jp ¤Î¾å¤Ç¹Ô
-¤¤¤Þ¤·¤¿ (´°àú¤Ë¤Ç¤Ï¤Ê¤¤¤Ç¤¹¤¬)¡¥
-
-ËÜ¥¢¡¼¥«¥¤¥Ö¤Ë´Þ¤Þ¤ì¤ë¥¹¥¯¥ê¥×¥È¤Î¿¤¯¤Ï¡¤¸µ¤È¤Ê¤Ã¤Æ¤¤¤ë Tcl/Tk ÈǤËÈæ³ÓŪ¶á
-¤¤¥¹¥¯¥ê¥×¥Èµ­½Ò¤È¤Ê¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡¥¤½¤Î¤¿¤á¡¤Ruby/Tk ¤Î¥µ¥ó¥×¥ë¤È¸À¤¦¤Ë
-¤Ï¡¤¤¢¤Þ¤ê Ruby ¤é¤·¤¯¤Ê¤¤¤È¤â¸À¤¨¤ë¤Ç¤·¤ç¤¦¡¥¤Ë¤â¤«¤«¤ï¤é¤º¡¤¤½¤Î¤è¤¦¤Êµ­½Ò
-¤ò¼è¤Ã¤Æ¤¤¤ëÍýͳ¤Ï¡¤Ruby/Tk ¤Î¥É¥­¥å¥á¥ó¥ÈÉÔ­¤Ë¤¢¤ê¤Þ¤¹¡¥
-
-Tcl/Tk ¤Ë¤ÏŬÅö¤Ê»²¹Í½ñ¤¬²¿ºý¤«Â¸ºß¤·¤Æ¤¤¤Þ¤¹¤«¤é¡¤Ruby/Tk ¥¹¥¯¥ê¥×¥È¤òºîÀ®
-¤¹¤ëºÝ¤Ï¡¤¤½¤Î¤è¤¦¤Ê Tcl/Tk ¤Î»²¹Í½ñ¤Ç¾ðÊó¤òÊ䤤¤Ê¤¬¤éºîÀ®¤¹¤ë¤³¤È¤Ë¤Ê¤ë¤È»×
-¤¤¤Þ¤¹¡¥³Æ widget ¤Î»ÈÍÑÎã¤È¤·¤Æ¡¤Tcl/Tk ¤Î widget-demo ¤ò»²¾È¤¹¤ë¤³¤È¤â¤¢¤ë
-¤Ç¤·¤ç¤¦¡¥Ruby/Tk ÈǤε­½Ò¤ò widget-demo ¤ò Tcl/Tk ÈǤε­½Ò¤Ë¶á¤¤¤â¤Î¤Ë¤·¤Æ
-¤ª¤±¤Ð¡¤¤½¤ÎÂÐÈæ¤Ë¤è¤Ã¤Æ¡¤Ruby/Tk ¤ÎÍý²ò¤òÁá¤á¤ë¤³¤È¤¬¤Ç¤­¤ë¤È¹Í¤¨¤é¤ì¤Þ¤¹¡¥
-°ìö Ruby/Tk ¤Ç¤Î ³Æ widget ¤Î»ÈÍÑÊýË¡¤ò½¬ÆÀ¤·¤Æ¤·¤Þ¤¨¤Ð¡¤Ruby ¤é¤·¤¤¥¹¥¯¥ê
-¥×¥È¤òºîÀ®¤¹¤ë¤³¤È¤ÏÆñ¤·¤¯¤Ê¤¤¤Ç¤·¤ç¤¦¡¥ËÜ¥¢¡¼¥«¥¤¥Ö¤Î¥¹¥¯¥ê¥×¥È¤Ï¡¤Ruby/Tk 
-¤òºÇ½é¤Ë½¬ÆÀ¤¹¤ë¤Þ¤Ç¤ÎƧÂæ¤È¤·¤ÆÍøÍѤ·¤Æ¤¤¤¿¤À¤±¤ì¤Ð¹¬¤¤¤Ç¤¹¡¥
-
-widget-demo ¤Î°Ü¿¢¤Ë¤¢¤¿¤Ã¤Æ¤Ï¡¤¼¡¤ÎÊý¤Ë¤â°Ü¿¢¤·¤¿¥¹¥¯¥ê¥×¥È¤òÄ󶡤·¤Æ¤¤¤¿¤À
-¤­¤Þ¤·¤¿¡¥¤³¤³¤Ë´¶¼Õ¤Î°Õ¤òɽ¤·¤Þ¤¹¡¥
-
-    Î©ÀС÷JAIST (ttate@jaist.ac.jp) ¤µ¤ó 
-    Ê¿¾¾¾Í»Ë (hiramatu@cdrom.co.jp) ¤µ¤ó
-
-Ê¿¾¾¤µ¤ó¤Ë¤è¤ë Ruby/Tk ÆþÌç¤Î Web page (http://www.cdrom.co.jp/~hiramatu/) 
-¤â Ruby/Tk ¤Î½¬ÆÀ¤ËÍ­ÍѤȻפ¨¤Þ¤¹¤Î¤Ç¡¤¤¼¤Ò¤´»²¾È¤¯¤À¤µ¤¤¡¥
-
-¤Þ¤¿¡¤Á°¶¶ (maebashi@iij.ad.jp) ¤µ¤ó¤ò¤Ï¤¸¤á¤È¤·¤Æ¡¤widget-demo ¤Î°Ü¿¢¤ËºÝ¤·
-¤ÆɬÍפȤʤä¿ Ruby ¤Î Tk ´ØÏ¢¥é¥¤¥Ö¥é¥ê½¤Àµ¤Ë¤Ä¤¤¤Æ¡¤ÌäÂêÅÀ¡¤¥Ð¥°¤Î»ØŦ¤ò¤·
-¤Æ¤¤¤¿¤À¤¤¤¿Êý¡¹¤Ë¤â´¶¼ÕÃפ·¤Þ¤¹¡¥
-
-¤½¤·¤ÆºÇ¸å¤ËºÇÂç¤Î´¶¼Õ¤ò Ruby À߷׼ԤΠ¤Þ¤Ä¤â¤È ¤æ¤­¤Ò¤í (matz@netlab.co.jp) 
-¤µ¤ó¤ËÊû¤²¤¿¤¤¤È»×¤¤¤Þ¤¹¡¥
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/README.1st b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/README.1st
deleted file mode 100644 (file)
index e031f12..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-There are Ruby/Tk demo scripts.
-
-Files with '.rb' extension are sub-scripts which are launched 'widget'
-script. Those files don't work independently. Please call them from 
-'widget' script.
-
-If you want start some sub-scripts at same time when the launcher
-script tarts, please give the sub-script names as arguments. 
-(e.g. /usr/local/bin/ruby widget button.rb entry1.rb text.rb )
-You can ommit '.rb' of the sub-scripts
-(e.g. /usr/local/bin/ruby widget button entry1 text )
-
-If you don't need launcher's main window, give -n option. 
-(e.g. /usr/local/bin/ruby widget -n button.rb entry1.rb text.rb )
-
-Others (browse1, hello, and so on) are standalone scripts. 
-
-          2004/04/14  Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/README.tkencoding b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/README.tkencoding
deleted file mode 100644 (file)
index f576bc5..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-This is a original document of 'tkencoding.rb'. 
-The library 'tkencoding.rb' is obsolete. 
-Functions of tkencoding.rb is already included into Ruby/Tk.
-
--------------------------------------------------
-tkencoding.rb¤òÍѤ¤¤¿ÆüËܸì¤Îɽ¼¨¤Ë¤Ä¤¤¤Æ
-
-Copyright (C) 1999/07, Takaaki Tateishi <ttate@jaist.ac.jp>
-
-
-1. tkencoding.rb¤È¤Ï¡©
-
-tkencoding.rb¤ÏTcl/Tk8.1¤òÍøÍѤ·¤¿Ruby/Tk¤Î¤¿¤á¤Î¥é¥¤¥Ö¥é¥ê
-¤Ç¤¹¡£tkencoding.rb¤òrequire¤¹¤ë¤³¤È¤Ë¤è¤Ã¤ÆWedget¤Ëɽ¼¨¤µ
-¤ì¤ë¥Æ¥­¥¹¥È¤ÏÁ´¤Æunicode(UTF8)¤ØÊÑ´¹¤µ¤ì¤Þ¤¹¡£
-
-
-2. »È¤¤Êý
-
-tkencoding.rb¤òrequire¤·¤ÆTk.encoding¤Ç»ÈÍѤ·¤Æ¤¤¤ëʸ»ú¥³¡¼¥É
-¤ò»ØÄꤷ¤Æ²¼¤µ¤¤¡£Î㤨¤Ð°Ê²¼¤Î¤è¤¦¤Ê´¶¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£
-
-----
-require 'tk'
-require 'tkencoding'
-
-Tk.encoding = "euc-jp"
-# Tk.encoding = "shiftjis"
----
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/anilabel.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/anilabel.rb
deleted file mode 100644 (file)
index 0b9bc73..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-#
-# animated label widget demo (called by 'widget')
-#
-# based on Tcl/Tk8.5a2 widget demos
-
-if defined?($anilabel_demo) && $anilabel_demo
-  $anilabel_demo.destroy 
-  $anilabel_demo = nil
-end
-
-# demo toplevel widget
-$anilabel_demo = TkToplevel.new {|w|
-  title("Animated Label Demonstration")
-  iconname("anilabel")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($anilabel_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "Four animated labels are displayed below; each of the labels on the left is animated by making the text message inside it appear to scroll, and the label on the right is animated by animating the image that it displays."
-}
-msg.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $anilabel_demo
-      $anilabel_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'See Code'
-    command proc{showCode 'anilabel'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# create frame for label demo
-f_left = TkLabelFrame.new(base_frame,  :text=>'Scrolling Texts')
-f_right = TkLabelFrame.new(base_frame, :text=>'GIF Image')
-Tk.pack(f_left, f_right, 'side'=>'left', 'expand'=>'yes', 'fill'=>'both', 
-        'padx'=>10, 'pady'=>10)
-
-# animated label
-class AnimatedTextLabel < TkLabel
-  def initialize(*args)
-    super(*args)
-    @timer = TkTimer.new{ _animation_callback }
-    @timer.loop_exec = -1
-    # bind('Destroy'){ @timer.stop }
-    @btag = TkBindTag.new('Destroy'){ @timer.stop }
-    self.bindtags_unshift(@btag)
-  end
-
-  def _animation_callback()
-    txt = self.text
-    self.text = (txt[1..-1] << txt[0])
-  end
-  private :_animation_callback
-
-  def start(interval)
-    @timer.set_interval(interval)
-    @timer.start
-  end
-
-  def stop
-    @timer.stop
-  end
-end
-
-# animated image
-class AnimatedImageLabel < AnimatedTextLabel
-  def initialize(*args)
-    super(*args)
-    @destroy_image = false
-    @btag.bind_append('Destroy'){
-      if @destroy_image
-        begin
-          self.image.delete 
-        rescue
-        end
-      end
-    }
-  end
-  attr_accessor :destroy_image
-
-  def _animation_callback()
-    img = self.image
-
-    fmt = img.format
-    if fmt.kind_of?(Array)
-      if fmt[1].kind_of?(Hash)
-        # fmt == ['GIF', {'index'=>idx}]
-        idx = fmt[1]['index']
-      else
-        # fmt == ['GIF', '-index', idx]  :: Ruby1.8.2 returns this.
-        idx = fmt[2]
-      end
-    elsif fmt.kind_of?(String) && fmt =~ /GIF -index (\d+)/
-      idx = $1.to_i
-    else
-      idx = -1
-    end
-
-    begin
-      img.format("GIF -index #{idx + 1}")
-    rescue => e
-      img.format("GIF -index 0")
-    end
-  end
-  private :_animation_callback
-end
-
-# create labels
-l1 = AnimatedTextLabel.new(f_left, :borderwidth=>4, :relief=>:ridge, 
-                           :font=>{:family=>'Courier', :size=>10})
-l2 = AnimatedTextLabel.new(f_left, :borderwidth=>4, :relief=>:groove, 
-                           :font=>{:family=>'Courier', :size=>10})
-l3 = AnimatedTextLabel.new(f_left, :borderwidth=>4, :relief=>:flat, 
-                           :font=>{:family=>'Courier', :size=>10}, :width=>18)
-Tk.pack(l1, l2, l3, 
-        :side=>:top, :expand=>true, :anchor=>:w, :padx=>10, :pady=>10)
-
-limg = AnimatedImageLabel.new(f_right, :borderwidth=>0)
-limg.pack(:side=>:top, :expand=>true, :padx=>10, :pady=>10)
-
-# base64-encoded animated GIF file
-tclPowerdData = <<EOD
-    R0lGODlhKgBAAPQAAP//////zP//AP/MzP/Mmf/MAP+Zmf+ZZv+ZAMz//8zM
-    zMyZmcyZZsxmZsxmAMwzAJnMzJmZzJmZmZlmmZlmZplmM5kzM2aZzGZmzGZm
-    mWZmZmYzZmYzMzNmzDMzZgAzmSH+IE1hZGUgd2l0aCBHSU1QIGJ5IExARGVt
-    YWlsbHkuY29tACH5BAVkAAEALAAAAAAqAEAAAAX+YCCOZEkyTKM2jOm66yPP
-    dF03bx7YcuHIDkGBR7SZeIyhTID4FZ+4Es8nQyCe2EeUNJ0peY2s9mi7PhAM
-    ngEAMGRbUpvzSxskLh1J+Hkg134OdDIDEB+GHxtYMEQMTjMGEYeGFoomezaC
-    DZGSHFmLXTQKkh8eNQVpZ2afmDQGHaOYSoEyhhcklzVmMpuHnaZmDqiGJbg0
-    qFqvh6UNAwB7VA+OwydEjgujkgrPNhbTI8dFvNgEYcHcHx0lB1kX2IYeA2G6
-    NN0YfkXJ2BsAMuAzHB9cZMk3qoEbRzUACsRCUBK5JxsC3iMiKd8GN088SIyT
-    0RAFSROyeEg38caDiB/+JEgqxsODrZJ1BkT0oHKSmI0ceQxo94HDpg0qsuDk
-    UmRAMgu8OgwQ+uIJgUMVeGXA+IQkzEeHGvD8cIGlDXsLiRjQ+EHroQhea7xY
-    8IQBSgYYDi1IS+OFBCgaDMGVS3fGi5BPJpBaENdQ0EomKGD56IHwO39EXiSC
-    Ysgxor5+Xfgq0qByYUpiXmwuoredB2aYH4gWWda0B7SeNENpEJHC1ghi+pS4
-    AJpIAwWvKPBi+8YEht5EriEqpFfMlhEdkBNpx0HUhwypx5T4IB1MBg/Ws2sn
-    wV3MSQOkzI8fUd48Aw3dOZto71x85hHtHijYv18Gf/3GqCdDCXHNoICBobSo
-    IqBqJLyCoH8JPrLgdh88CKCFD0CGmAiGYPgffwceZh6FC2ohIIklnkhehTNY
-    4CIHHGzgwYw01ujBBhvAqKOLLq5AAk9kuSPkkKO40NB+h1gnypJIIvkBf09a
-    N5QIRz5p5ZJXJpmlIVhOGQA2TmIJZZhKKmmll2BqyWSXWUrZpQtpatlmk1c2
-    KaWRHeTZEJF8SqLDn/hhsOeQgBbqAh6DGqronxeARUIIACH5BAUeAAAALAUA
-    LgAFAAUAAAUM4CeKz/OV5YmqaRkCACH5BAUeAAEALAUALgAKAAUAAAUUICCK
-    z/OdJVCaa7p+7aOWcDvTZwgAIfkEBR4AAQAsCwAuAAkABQAABRPgA4zP95zA
-    eZqoWqqpyqLkZ38hACH5BAUKAAEALAcALgANAA4AAAU7ICA+jwiUJEqeKau+
-    r+vGaTmac63v/GP9HM7GQyx+jsgkkoRUHJ3Qx0cK/VQVTKtWwbVKn9suNunc
-    WkMAIfkEBQoAAAAsBwA3AAcABQAABRGgIHzk842j+Yjlt5KuO8JmCAAh+QQF
-    CgAAACwLADcABwAFAAAFEeAnfN9TjqP5oOWziq05lmUIACH5BAUKAAAALA8A
-    NwAHAAUAAAUPoPCJTymS3yiQj4qOcPmEACH5BAUKAAAALBMANwAHAAUAAAUR
-    oCB+z/MJX2o+I2miKimiawgAIfkEBQoAAAAsFwA3AAcABQAABRGgIHzfY47j
-    Q4qk+aHl+pZmCAAh+QQFCgAAACwbADcABwAFAAAFEaAgfs/zCV9qPiNJouo7
-    ll8IACH5BAUKAAAALB8ANwADAAUAAAUIoCB8o0iWZggAOw==
-EOD
-
-l1.text('* Slow Animation *').start(300)
-l2.text('* Fast Animation *').start(80)
-l3.text('This is a longer scrolling text in a widget that will not show the whole message at once. ').start(150)
-
-limg.destroy_image = true
-limg.image(TkPhotoImage.new(:format=>'GIF', :data=>tclPowerdData)).start(100)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/aniwave.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/aniwave.rb
deleted file mode 100644 (file)
index 63a04a7..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-#
-# animated wave demo (called by 'widget')
-#
-# based on Tcl/Tk8.5a2 widget demos
-
-# destroy toplevel widget for this demo script
-if defined?($aniwave_demo) && $aniwave_demo
-  $aniwave_demo.destroy 
-  $aniwave_demo = nil
-end
-
-# create toplevel widget
-$aniwave_demo = TkToplevel.new {|w|
-  title("Animated Wave Demonstration")
-  iconname("aniwave")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($aniwave_demo).pack(:fill=>:both, :expand=>true)
-
-# create label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text 'This demonstration contains a canvas widget with a line item inside it. The animation routines work by adjusting the coordinates list of the line.'
-}
-msg.pack('side'=>'top')
-
-# create frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $aniwave_demo
-      $aniwave_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'See Code'
-    command proc{showCode 'aniwave'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# animated wave
-class AnimatedWaveDemo
-  def initialize(frame, dir=:left)
-    @direction = dir
-
-    # create canvas widget
-    @c = TkCanvas.new(frame, :width=>300, :height=>200, 
-                      :background=>'black')
-    @c.pack(:padx=>10, :pady=>10, :expand=>true)
-
-    # Creates a coordinates list of a wave. 
-    @waveCoords = []
-    @backupCoords = []
-    n = 0
-    (-10..300).step(5){|n| @waveCoords << [n, 100]; @backupCoords << [n, 100] }
-    n = 305
-    @waveCoords << [n, 0]; @backupCoords << [n, 0]
-    @waveCoords << [n+5, 200]; @backupCoords << [n+5, 200]
-    @coordsLen = @waveCoords.length
-
-    # Create a smoothed line and arrange for its coordinates to be the
-    # contents of the variable waveCoords.
-    @line = TkcLine.new(@c, @waveCoords, 
-                        :width=>1, :fill=>'green', :smooth=>true)
-
-    # Main animation "loop". 
-    # Theoretically 100 frames-per-second (==10ms between frames)
-    @timer = TkTimer.new(10){ basicMotion; reverser }
-
-    # Arrange for the animation loop to stop when the canvas is deleted
-    @c.bindtags_unshift(TkBindTag.new('Destroy'){ @timer.stop })
-  end
-
-  # Basic motion handler. Given what direction the wave is travelling
-  # in, it advances the y coordinates in the coordinate-list one step in
-  # that direction.
-  def basicMotion
-    @backupCoords, @waveCoords = @waveCoords, @backupCoords
-    (0...@coordsLen).each{|idx|
-      if @direction == :left
-        @waveCoords[idx][1] = @backupCoords[(idx+1 == @coordsLen)? 0: idx+1][1]
-      else
-        @waveCoords[idx][1] = @backupCoords[(idx == 0)? -1: idx-1][1]
-      end
-    }
-    @line.coords(@waveCoords)
-  end
-
-  # Oscillation handler. This detects whether to reverse the direction
-  # of the wave by checking to see if the peak of the wave has moved off
-  # the screen (whose size we know already.)
-  def reverser
-    if @waveCoords[0][1] < 10
-      @direction = :right
-    elsif @waveCoords[-1][1] < 10
-      @direction = :left
-    end
-  end
-
-  # animation control
-  def move
-    @timer.start
-  end
-
-  def stop
-    @timer.stop
-  end
-end
-
-# Start the animation processing
-AnimatedWaveDemo.new(base_frame, :left).move
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/arrow.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/arrow.rb
deleted file mode 100644 (file)
index 055cd2a..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-# arrow.rb
-#
-# This demonstration script creates a canvas widget that displays a
-# large line with an arrowhead whose shape can be edited interactively.
-#
-# arrowhead widget demo (called by 'widget')
-#
-
-# arrowSetup --
-# This method regenerates all the text and graphics in the canvas
-# window.  It's called when the canvas is initially created, and also
-# whenever any of the parameters of the arrow head are changed
-# interactively.
-#
-# Arguments:
-# c -           Name of the canvas widget.
-
-def arrowSetup(c)
-  v = $demo_arrowInfo
-
-  # Remember the current box, if there is one.
-  tags = c.gettags('current')
-  if tags != []
-    cur = tags.find{|t| t.kind_of?(String) && t =~ /^box[1-3]$/ }
-  else
-    cur = nil
-  end
-
-  # Create the arrow and outline.
-  c.delete('all')
-  TkcLine.new(c, v.x1, v.y, v.x2, v.y, 
-              { 'width'=>10 * v.width, 
-                'arrowshape'=>[10*v.a, 10*v.b, 10*v.c], 
-                'arrow'=>'last' 
-              }.update(v.bigLineStyle) )
-  xtip = v.x2 - 10*v.b
-  deltaY = 10*v.c + 5*v.width
-  TkcLine.new(c, v.x2, v.y, xtip, v.y + deltaY, 
-              v.x2 - 10*v.a, v.y, xtip, v.y - deltaY, v.x2, v.y, 
-              'width'=>2, 'capstyle'=>'round', 'joinstyle'=>'round')
-
-  # Create the boxes for reshaping the line and arrowhead.
-  TkcRectangle.new(c, v.x2-10*v.a-5, v.y-5, v.x2-10*v.a+5, v.y+5, 
-                   {'tags'=>['box1', $arrowTag_box]}.update(v.boxStyle) )
-  TkcRectangle.new(c, xtip-5, v.y-deltaY-5, xtip+5, v.y-deltaY+5, 
-                   {'tags'=>['box2', $arrowTag_box]}.update(v.boxStyle) )
-  TkcRectangle.new(c, v.x1-5, v.y-5*v.width-5, v.x1+5, v.y-5*v.width+5, 
-                   {'tags'=>['box3', $arrowTag_box]}.update(v.boxStyle) )
-  c.itemconfigure cur, v.activeStyle if cur
-
-  # Create three arrows in actual size with the same parameters
-  TkcLine.new(c, v.x2+50, 0, v.x2+50, 1000, 'width'=>2)
-  tmp = v.x2+100
-  TkcLine.new(c, tmp, v.y-125, tmp, v.y-75, 'width'=>v.width, 
-              'arrow'=>'both', 'arrowshape'=>[v.a, v.b, v.c])
-  TkcLine.new(c, tmp-25, v.y, tmp+25, v.y, 'width'=>v.width, 
-              'arrow'=>'both', 'arrowshape'=>[v.a, v.b, v.c])
-  TkcLine.new(c, tmp-25, v.y+75, tmp+25, v.y+125, 'width'=>v.width, 
-              'arrow'=>'both', 'arrowshape'=>[v.a, v.b, v.c])
-
-  # Create a bunch of other arrows and text items showing the 
-  # current dimensions.
-  tmp = v.x2+10
-  TkcLine.new(c, tmp, v.y-5*v.width, tmp, v.y-deltaY, 
-              'arrow'=>'both', 'arrowshape'=>v.smallTips)
-  TkcText.new(c, v.x2+15, v.y-deltaY+5*v.c, 'text'=>v.c, 'anchor'=>'w')
-  tmp = v.x1-10
-  TkcLine.new(c, tmp, v.y-5*v.width, tmp, v.y+5*v.width, 
-              'arrow'=>'both', 'arrowshape'=>v.smallTips)
-  TkcText.new(c, v.x1-15, v.y, 'text'=>v.width, 'anchor'=>'e')
-  tmp = v.y+5*v.width+10*v.c+10
-  TkcLine.new(c, v.x2-10*v.a, tmp, v.x2, tmp, 
-              'arrow'=>'both', 'arrowshape'=>v.smallTips)
-  TkcText.new(c, v.x2-5*v.a, tmp+5, 'text'=>v.a, 'anchor'=>'n')
-  tmp = tmp+25
-  TkcLine.new(c, v.x2-10*v.b, tmp, v.x2, tmp, 
-              'arrow'=>'both', 'arrowshape'=>v.smallTips)
-  TkcText.new(c, v.x2-5*v.b, tmp+5, 'text'=>v.b, 'anchor'=>'n')
-
-  if $tk_version =~ /^4.*/
-    TkcText.new(c, v.x1, 310, 'text'=>"'width'=>#{v.width}", 'anchor'=>'w', 
-                'font'=>'-*-Helvetica-Medium-R-Normal--*-180-*-*-*-*-*-*')
-    TkcText.new(c, v.x1, 330, 
-                'text'=>"'arrowshape'=>[#{v.a}, #{v.b}, #{v.c}]",'anchor'=>'w',
-                'font'=>'-*-Helvetica-Medium-R-Normal--*-180-*-*-*-*-*-*')
-  else
-    TkcText.new(c, v.x1, 310, 'text'=>"'width'=>#{v.width}", 'anchor'=>'w', 
-                'font'=>'Helvetica 18')
-    TkcText.new(c, v.x1, 330, 
-                'text'=>"'arrowshape'=>[#{v.a}, #{v.b}, #{v.c}]",
-                'anchor'=>'w', 'font'=>'Helvetica 18')
-  end
-
-  v.count += 1
-end
-
-# toplevel widget
-if defined?($arrow_demo) && $arrow_demo
-  $arrow_demo.destroy 
-  $arrow_demo = nil
-end
-
-# demo toplevel widget
-$arrow_demo = TkToplevel.new {|w|
-  title("Arrowhead Editor Demonstration")
-  iconname("arrow")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($arrow_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'5i', 'justify'=>'left', 
-            'text'=>"This widget allows you to experiment with different widths and arrowhead shapes for lines in canvases.  To change the line width or the shape of the arrowhead, drag any of the three boxes attached to the oversized arrow.  The arrows on the right give examples at normal scale.  The text at the bottom shows the configuration options as you'd enter them for a canvas line item."){
-  pack('side'=>'top')
-}
-
-# frame
-$arrow_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $arrow_demo
-      $arrow_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'arrow'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$arrow_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# canvas 
-$arrow_canvas = TkCanvas.new(base_frame, 'width'=>500, 'height'=>350, 
-                             'relief'=>'sunken', 'borderwidth'=>2)
-$arrow_canvas.pack('expand'=>'yes', 'fill'=>'both')
-
-# 
-unless Struct.const_defined?("ArrowInfo")
-  $demo_arrowInfo = Struct.new("ArrowInfo", :a, :b, :c, :width, :motionProc, 
-                               :x1, :x2, :y, :smallTips, :count, 
-                               :bigLineStyle, :boxStyle, :activeStyle).new
-end
-$demo_arrowInfo.a = 8
-$demo_arrowInfo.b = 10
-$demo_arrowInfo.c = 3
-$demo_arrowInfo.width = 2
-$demo_arrowInfo.motionProc = proc{}
-$demo_arrowInfo.x1 = 40
-$demo_arrowInfo.x2 = 350
-$demo_arrowInfo.y = 150
-$demo_arrowInfo.smallTips = [5, 5, 2]
-$demo_arrowInfo.count = 0
-if TkWinfo.depth($arrow_canvas) > 1
-  $demo_arrowInfo.bigLineStyle = {'fill'=>'SkyBlue1'}
-  $demo_arrowInfo.boxStyle = {'fill'=>'', 'outline'=>'black', 'width'=>1}
-  $demo_arrowInfo.activeStyle = {'fill'=>'red', 'outline'=>'black', 'width'=>1}
-else
-  $demo_arrowInfo.bigLineStyle = {'fill'=>'black', 
-    'stipple'=>'@'+[$demo_dir,'..','images','grey.25'].join(File::Separator)}
-  $demo_arrowInfo.boxStyle = {'fill'=>'', 'outline'=>'black', 'width'=>1}
-  $demo_arrowInfo.activeStyle = {'fill'=>'black','outline'=>'black','width'=>1}
-end
-$arrowTag_box = TkcTag.new($arrow_canvas)
-arrowSetup $arrow_canvas
-$arrowTag_box.bind('Enter', proc{$arrow_canvas.itemconfigure('current', $demo_arrowInfo.activeStyle)})
-$arrowTag_box.bind('Leave', proc{$arrow_canvas.itemconfigure('current', $demo_arrowInfo.boxStyle)})
-$arrowTag_box.bind('B1-Enter', proc{})
-$arrowTag_box.bind('B1-Leave', proc{})
-$arrow_canvas.itembind('box1', '1', 
-                       proc{$demo_arrowInfo.motionProc \
-                         = proc{|x,y| arrowMove1 $arrow_canvas, x, y}})
-$arrow_canvas.itembind('box2', '1', 
-                       proc{$demo_arrowInfo.motionProc \
-                         = proc{|x,y| arrowMove2 $arrow_canvas, x, y}})
-$arrow_canvas.itembind('box3', '1', 
-                       proc{$demo_arrowInfo.motionProc \
-                         = proc{|x,y| arrowMove3 $arrow_canvas, x, y}})
-$arrowTag_box.bind('B1-Motion', 
-                  proc{|x,y| $demo_arrowInfo.motionProc.call(x,y)}, "%x %y")
-$arrow_canvas.bind('Any-ButtonRelease-1', proc{arrowSetup $arrow_canvas})
-
-# arrowMove1 --
-# This method is called for each mouse motion event on box1 (the
-# one at the vertex of the arrow).  It updates the controlling parameters
-# for the line and arrowhead.
-#
-# Arguments:
-# c -           The name of the canvas window.
-# x, y -        The coordinates of the mouse.
-
-def arrowMove1(c,x,y)
-  v = $demo_arrowInfo
-  newA = (v.x2+5-c.canvasx(x).round)/10
-  newA = 0 if newA < 0
-  newA = 25 if newA > 25
-  if newA != v.a
-    c.move('box1', 10*(v.a-newA), 0)
-    v.a = newA
-  end
-end
-
-# arrowMove2 --
-# This method is called for each mouse motion event on box2 (the
-# one at the trailing tip of the arrowhead).  It updates the controlling
-# parameters for the line and arrowhead.
-#
-# Arguments:
-# c -           The name of the canvas window.
-# x, y -        The coordinates of the mouse.
-
-def arrowMove2(c,x,y)
-  v = $demo_arrowInfo
-  newB = (v.x2+5-c.canvasx(x).round)/10
-  newB = 0 if newB < 0
-  newB = 25 if newB > 25
-  newC = (v.y+5-c.canvasy(y).round-5*v.width)/10
-  newC = 0 if newC < 0
-  newC = 20 if newC > 20
-  if newB != v.b || newC != v.c
-    c.move('box2', 10*(v.b-newB), 10*(v.c-newC))
-    v.b = newB
-    v.c = newC
-  end
-end
-
-# arrowMove3 --
-# This method is called for each mouse motion event on box3 (the
-# one that controls the thickness of the line).  It updates the
-# controlling parameters for the line and arrowhead.
-#
-# Arguments:
-# c -           The name of the canvas window.
-# x, y -        The coordinates of the mouse.
-
-def arrowMove3(c,x,y)
-  v = $demo_arrowInfo
-  newWidth = (v.y+2-c.canvasy(y).round)/5
-  newWidth = 0 if newWidth < 0
-  newWidth = 20 if newWidth > 20
-  if newWidth != v.width
-    c.move('box3', 0, 5*(v.width-newWidth))
-    v.width = newWidth
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/bind.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/bind.rb
deleted file mode 100644 (file)
index 665592a..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-# bind.rb
-#
-# This demonstration script creates a text widget with bindings set
-# up for hypertext-like effects.
-#
-# text (tag bindings) widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($bind_demo) && $bind_demo
-  $bind_demo.destroy 
-  $bind_demo = nil
-end
-
-# demo toplevel widget
-$bind_demo = TkToplevel.new {|w|
-  title("Text Demonstration - Tag Bindings")
-  iconname("bind")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($bind_demo).pack(:fill=>:both, :expand=>true)
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $bind_demo
-      $bind_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'bind'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# bind 
-def tag_binding_for_bind_demo(tag, enter_style, leave_style)
-  tag.bind('Any-Enter', proc{tag.configure enter_style})
-  tag.bind('Any-Leave', proc{tag.configure leave_style})
-end
-
-# text 
-txt = TkText.new(base_frame){|t|
-  # 
-  setgrid 'true'
-  #width  60
-  #height 24
-  font $font
-  wrap 'word'
-  TkScrollbar.new(base_frame) {|s|
-    pack('side'=>'right', 'fill'=>'y')
-    command proc{|*args| t.yview(*args)}
-    t.yscrollcommand proc{|first,last| s.set first,last}
-  }
-  pack('expand'=>'yes', 'fill'=>'both')
-
-  # 
-  if TkWinfo.depth($root).to_i > 1
-    tagstyle_bold = {'background'=>'#43ce80', 'relief'=>'raised', 
-                     'borderwidth'=>1}
-    tagstyle_normal = {'background'=>'', 'relief'=>'flat'}
-  else
-    tagstyle_bold = {'foreground'=>'white', 'background'=>'black'}
-    tagstyle_normal = {'foreground'=>'', 'background'=>''}
-  end
-
-  # insert text
-  insert 'insert', "The same tag mechanism that controls display styles in text widgets can also be used to associate Tcl commands with regions of text, so that mouse or keyboard actions on the text cause particular Tcl commands to be invoked.  For example, in the text below the descriptions of the canvas demonstrations have been tagged.  When you move the mouse over a demo description the description lights up, and when you press button 1 over a description then that particular demonstration is invoked.
-
-"
-  insert('end', '1. Samples of all the different types of items that can be created in canvas widgets.', (d1 = TkTextTag.new(t)) )
-  insert('end', "\n\n")
-  insert('end', '2. A simple two-dimensional plot that allows you to adjust the positions of the data points.', (d2 = TkTextTag.new(t)) )
-  insert('end', "\n\n")
-  insert('end', '3. Anchoring and justification modes for text items.', 
-         (d3 = TkTextTag.new(t)) )
-  insert('end', "\n\n")
-  insert('end', '4. An editor for arrow-head shapes for line items.', 
-         (d4 = TkTextTag.new(t)) )
-  insert('end', "\n\n")
-  insert('end', '5. A ruler with facilities for editing tab stops.', 
-         (d5 = TkTextTag.new(t)) )
-  insert('end', "\n\n")
-  insert('end', 
-         '6. A grid that demonstrates how canvases can be scrolled.', 
-         (d6 = TkTextTag.new(t)) )
-
-  # binding
-  [d1, d2, d3, d4, d5, d6].each{|tag|
-    tag_binding_for_bind_demo(tag, tagstyle_bold, tagstyle_normal)
-  }
-  d1.bind('1', 
-          proc{
-            eval_samplecode(`cat #{[$demo_dir,'items.rb'].join(File::Separator)}`, 'items.rb')
-          })
-  d2.bind('1', 
-          proc{
-            eval_samplecode(`cat #{[$demo_dir,'plot.rb'].join(File::Separator)}`, 'plot.rb')
-          })
-  d3.bind('1', 
-          proc{
-            eval_samplecode(`cat #{[$demo_dir,'ctext.rb'].join(File::Separator)}`, 'ctext.rb')
-          })
-  d4.bind('1', 
-          proc{
-            eval_samplecode(`cat #{[$demo_dir,'arrow.rb'].join(File::Separator)}`, 'arrow.rb')
-          })
-  d5.bind('1', 
-          proc{
-            eval_samplecode(`cat #{[$demo_dir,'ruler.rb'].join(File::Separator)}`, 'ruler.rb')
-          })
-  d6.bind('1', 
-          proc{
-            eval_samplecode(`cat #{[$demo_dir,'cscroll.rb'].join(File::Separator)}`, 'cscroll.rb')
-          })
-
-  TkTextMarkInsert.new(t, '0.0')
-  configure('state','disabled')
-}
-
-txt.width  60
-txt.height 24
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/bitmap.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/bitmap.rb
deleted file mode 100644 (file)
index 133adb0..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-# bitmap.rb
-#
-# This demonstration script creates a toplevel window that displays
-# all of Tk's built-in bitmaps.#
-# bitmap widget demo (called by 'widget')
-#
-
-# bitmapRow --
-# Create a row of bitmap items in a window.
-#
-# Arguments:
-# w -           The parent window that is to contain the row.
-# args -        The names of one or more bitmaps, which will be displayed
-#               in a new row across the bottom of w along with their
-#               names.
-
-def bitmapRow(w,*args)
-  TkFrame.new(w){|row|
-    pack('side'=>'top', 'fill'=>'both')
-    for bitmap in args 
-      TkFrame.new(row){|base|
-        pack('side'=>'left', 'fill'=>'both', 'pady'=>'.25c', 'padx'=>'.25c')
-        TkLabel.new(base, 'text'=>bitmap, 'width'=>9).pack('side'=>'bottom')
-        Tk::Label.new(base, 'bitmap'=>bitmap).pack('side'=>'bottom')
-      }
-    end
-  }
-end
-
-# toplevel widget
-if defined?($bitmap_demo) && $bitmap_demo
-  $bitmap_demo.destroy 
-  $bitmap_demo = nil
-end
-
-# demo toplevel widget
-$bitmap_demo = TkToplevel.new {|w|
-  title("Bitmap Demonstration")
-  iconname("bitmap")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($bitmap_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left', 
-            'text'=>"This window displays all of Tk's built-in bitmaps, along with the names you can use for them in Tcl scripts."){
-  pack('side'=>'top')
-}
-
-# frame
-$bitmap_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $bitmap_demo
-      $bitmap_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'bitmap'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$bitmap_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame 
-TkFrame.new(base_frame){|f|
-  bitmapRow(f,'error','gray25','gray50','hourglass')
-  bitmapRow(f,'info','question','questhead','warning')
-  pack('side'=>'top', 'expand'=>'yes', 'fill'=>'both')
-}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/browse1 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/browse1
deleted file mode 100644 (file)
index 03e2510..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/env ruby
-
-# browse --
-# This script generates a directory browser, which lists the working 
-# directory and allow you to open files or subdirectories by 
-# double-clicking. 
-
-require 'tk'
-
-# Create a scrollbar on the right side of the main window and a listbox 
-# on the left side.
-
-listbox = TkListbox.new(nil, 'relief'=>'sunken', 
-                       'width'=>20, 'height'=>20, 'setgrid'=>'yes') {|l|
-  TkScrollbar.new(nil, 'command'=>proc{|*args| l.yview *args}) {|s|
-    pack('side'=>'right', 'fill'=>'y')
-    l.yscrollcommand(proc{|first,last| s.set(first,last)})
-  }
-
-  pack('side'=>'left', 'fill'=>'both', 'expand'=>'yes')
-}
-
-root = TkRoot.new
-root.minsize(1,1)
-
-# The procedure below is invoked to open a browser on a given file;  if the 
-# file is a directory then another instance of this program is invoked; if 
-# the file is a regular file then the Mx editor is invoked to display 
-# the file. 
-
-def browse (dir, file)
-  file = dir + File::Separator + file if dir != '.'
-  type = File.ftype(file)
-  if type == 'directory'
-    system($0 + ' ' + file + ' &')
-  else
-    if type == 'file'
-      if ENV['EDITOR']
-       system(ENV['EDITOR'] + ' ' + file + ' &')
-      else
-       system('xedit ' + file + ' &')
-      end
-    else
-      STDOUT.print "\"#{file}\" isn't a directory or regular file"
-    end
-  end
-end
-
-# Fill the listbox with a list of all the files in the directory (run 
-# the "ls" command to get that information).
-
-dir = ARGV[0] ?  ARGV[0] : '.'
-open("|ls -a #{dir}", 'r'){|fid| fid.readlines}.each{|fname|
-  listbox.insert('end', fname.chomp)
-}
-
-# Set up bindings for the browser.
-
-Tk.bind_all('Control-c', proc{root.destroy})
-listbox.bind('Double-Button-1', 
-            proc{TkSelection.get.each{|f| browse dir, f}})
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/browse2 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/browse2
deleted file mode 100644 (file)
index edad04d..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/usr/bin/env ruby
-
-# browse --
-# This script generates a directory browser, which lists the working 
-# directory and allow you to open files or subdirectories by 
-# double-clicking. 
-
-require 'tk'
-
-class Browse
-  BROWSE_WIN_COUNTER = TkVariable.new(0)
-
-  def initialize(dir)
-    BROWSE_WIN_COUNTER.value = BROWSE_WIN_COUNTER.to_i + 1
-
-    # create base frame
-    base = TkToplevel.new {
-      minsize(1,1)
-      title('Browse : ' + dir)
-    }
-
-    # Create a scrollbar on the right side of the main window and a listbox 
-    # on the left side.
-    list = TkListbox.new(base, 'relief'=>'sunken', 
-                        'width'=>20, 'height'=>20, 'setgrid'=>'yes') {|l|
-      TkScrollbar.new(base, 'command'=>proc{|*args| l.yview *args}) {|s|
-       pack('side'=>'right', 'fill'=>'y')
-       l.yscrollcommand(proc{|first,last| s.set(first,last)})
-      }
-
-      pack('side'=>'left', 'fill'=>'both', 'expand'=>'yes')
-
-      # Fill the listbox with a list of all the files in the directory (run 
-      # the "ls" command to get that information).
-      open("|ls -a #{dir}", 'r'){|fid| fid.readlines}.each{|fname|
-       l.insert('end', fname.chomp)
-      }
-
-    }
-
-    # Set up bindings for the browser.
-    base.bind('Destroy', proc{
-               Browse::BROWSE_WIN_COUNTER.value = \
-                               Browse::BROWSE_WIN_COUNTER.to_i - 1
-             })
-    base.bind('Control-c', proc{base.destroy})
-    list.bind('Double-Button-1', 
-        proc{TkSelection.get.each{|f| self.browse dir, f}})
-  end
-
-  # The method below is invoked to open a browser on a given file;  if the 
-  # file is a directory then another instance of this program is invoked; if 
-  # the file is a regular file then the Mx editor is invoked to display 
-  # the file. 
-  def browse (dir, file)
-    file = dir + File::Separator + file if dir != '.'
-    type = File.ftype(file)
-    if type == 'directory'
-      Browse.new(file)
-    else
-      if type == 'file'
-       if ENV['EDITOR']
-         system(ENV['EDITOR'] + ' ' + file + ' &')
-       else
-         system('xedit ' + file + ' &')
-       end
-      else
-       STDOUT.print "\"#{file}\" isn't a directory or regular file"
-      end
-    end
-  end
-
-end
-
-Browse.new(ARGV[0] ? ARGV[0] : '.')
-
-TkRoot.new {
-  withdraw
-  Browse::BROWSE_WIN_COUNTER.trace('w', proc{exit if Browse::BROWSE_WIN_COUNTER.to_i == 0})
-}
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/button.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/button.rb
deleted file mode 100644 (file)
index 5c03bd4..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-# button.rb
-#
-# This demonstration script creates a toplevel window containing
-# several button widgets.
-#
-# button widget demo (called by 'widget')
-#
-
-# toplevel widget 
-if defined?($button_demo) && $button_demo
-  $button_demo.destroy 
-  $button_demo = nil
-end
-
-# demo toplevel widget 
-$button_demo = TkToplevel.new {|w|
-  title("Button Demonstration")
-  iconname("button")
-  positionWindow(w)
-}
-
-# label 
-msg = TkLabel.new($button_demo) {
-  font $kanji_font
-  wraplength '4i'
-  justify 'left'
-  text "If you click on any of the four buttons below, the background of the button area will change to the color indicated in the button.  You can press Tab to move among the buttons, then press Space to invoke the current button."
-}
-msg.pack('side'=>'top')
-
-# frame 
-$button_buttons = Tk::Frame.new($button_demo) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $button_demo
-      $button_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'See Code'
-    command proc{showCode 'button'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# button
-TkButton.new($button_demo){
-  text "Peach Puff"
-  width 10
-  command proc{
-    $button_demo.configure('bg','PeachPuff1')
-    $button_buttons.configure('bg','PeachPuff1')
-  }
-}.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2)
-
-TkButton.new($button_demo){
-  text "Light Blue"
-  width 10
-  command proc{
-    $button_demo.configure('bg','LightBlue1')
-    $button_buttons.configure('bg','LightBlue1')
-  }
-}.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2)
-
-TkButton.new($button_demo){
-  text "Sea Green"
-  width 10
-  command proc{
-    $button_demo.configure('bg','SeaGreen2')
-    $button_buttons.configure('bg','SeaGreen2')
-  }
-}.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2)
-
-TkButton.new($button_demo){
-  text "Yellow"
-  width 10
-  command proc{
-    $button_demo.configure('bg','Yellow1')
-    $button_buttons.configure('bg','Yellow1')
-  }
-}.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/check.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/check.rb
deleted file mode 100644 (file)
index 2951962..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-# check.rb
-#
-# This demonstration script creates a toplevel window containing
-# several checkbuttons.
-#
-# checkbutton widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($check_demo) && $check_demo
-  $check_demo.destroy 
-  $check_demo = nil
-end
-
-# demo toplevel widget
-$check_demo = TkToplevel.new {|w|
-  title("Checkbutton Demonstration")
-  iconname("check")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($check_demo).pack(:fill=>:both, :expand=>true)
-
-# label 
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "Three checkbuttons are displayed below.  If you click on a button, it will toggle the button's selection state and set a Tcl variable to a value indicating the state of the checkbutton.  Click the \"See Variables\" button to see the current values of the variables."
-}
-msg.pack('side'=>'top')
-
-# 
-wipers = TkVariable.new(0)
-brakes = TkVariable.new(0)
-sober  = TkVariable.new(0)
-
-# frame 
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $check_demo
-      $check_demo = nil
-      $showVarsWin[tmppath.path] = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'check'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-
-  TkButton.new(frame) {
-    text 'See Variables'
-    command proc{
-      showVars(base_frame, 
-               ['wipers', wipers], ['brakes', brakes], ['sober', sober])
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-
-# checkbutton
-[ TkCheckButton.new(base_frame, 'text'=>'Wipers  OK', 'variable'=>wipers),
-  TkCheckButton.new(base_frame, 'text'=>'Brakes  OK', 'variable'=>brakes),
-  TkCheckButton.new(base_frame, 'text'=>'Driver Sober', 'variable'=>sober)
-].each{|w| w.relief('flat'); w.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w')}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/check2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/check2.rb
deleted file mode 100644 (file)
index faea748..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-#
-# checkbutton widget demo2 (called by 'widget')
-#
-
-# delete old toplevel widget
-if defined?($check2_demo) && $check2_demo
-  $check2_demo.destroy 
-  $check2_demo = nil
-end
-
-# create demo toplevel widget
-$check2_demo = TkToplevel.new {|w|
-  title("Checkbutton Demonstration 2")
-  iconname("check2")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($check2_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "Four checkbuttons are displayed below.  If you click on a button, it will toggle the button's selection state and set a Tcl variable to a value indicating the state of the checkbutton.  The first button also follows the state of the other three.  If only some of the three are checked, the first button will display the tri-state mode. Click the \"See Variables\" button to see the current values of the variables."
-}
-msg.pack('side'=>'top')
-
-# variable
-safety = TkVariable.new(0)
-wipers = TkVariable.new(0)
-brakes = TkVariable.new(0)
-sober  = TkVariable.new(0)
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkGrid(TkFrame.new(frame, :height=>2, :relief=>:sunken, :bd=>2), 
-         :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         TkButton.new(frame, :text=>'See Variables', 
-                      :image=>$image['view'], :compound=>:left, 
-                      :command=>proc{
-                        showVars($check2_demo, 
-                                 ['safety', safety], ['wipers', wipers], 
-                                 ['brakes', brakes], ['sober', sober])
-                      }), 
-         TkButton.new(frame, :text=>'See Code', 
-                      :image=>$image['view'], :compound=>:left, 
-                      :command=>proc{showCode 'check2'}), 
-         TkButton.new(frame, :text=>'Dismiss', 
-                      :image=>$image['delete'], :compound=>:left, 
-                      :command=>proc{
-                        tmppath = $check2_demo
-                        $check2_demo = nil
-                        $showVarsWin[tmppath.path] = nil
-                        tmppath.destroy
-                      }), 
-         :padx=>4, :pady=>4)
-  frame.grid_columnconfigure(0, :weight=>1)
-}.pack('side'=>'bottom', 'fill'=>'x')
-
-
-# checkbutton
-TkCheckButton.new(base_frame, :text=>'Safety Check', :variable=>safety, 
-                  :relief=>:flat, :onvalue=>'all', :offvalue=>'none', 
-                  :tristatevalue=>'partial'){
-  pack('side'=>'top', 'pady'=>2, 'anchor'=>'w')
-}
-
-[ TkCheckButton.new(base_frame, 'text'=>'Wipers OK', 'variable'=>wipers),
-  TkCheckButton.new(base_frame, 'text'=>'Brakes OK', 'variable'=>brakes),
-  TkCheckButton.new(base_frame, 'text'=>'Driver Sober', 'variable'=>sober)
-].each{|w| 
-  w.relief('flat')
-  w.pack('side'=>'top', 'padx'=>15, 'pady'=>2, 'anchor'=>'w')
-}
-
-# tristate check
-in_check = false
-tristate_check = proc{|n1,n2,op|
-  unless in_check
-    in_check = true
-    begin
-      if n1 == safety
-        if safety == 'none'
-          wipers.value = 0
-          brakes.value = 0
-          sober.value  = 0
-        elsif safety == 'all'
-          wipers.value = 1
-          brakes.value = 1
-          sober.value  = 1
-        end
-      else
-        if wipers == 1 && brakes == 1 && sober == 1
-          safety.value = 'all'
-        elsif wipers == 1 || brakes == 1 || sober == 1
-          safety.value = 'partial'
-        else
-          safety.value = 'none'
-        end
-      end
-    ensure
-      in_check = false
-    end
-  end
-}
-
-[wipers, brakes, sober, safety].each{|v| v.trace('w', tristate_check)}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/clrpick.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/clrpick.rb
deleted file mode 100644 (file)
index 431439d..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-# clrpick.rb
-#
-# This demonstration script prompts the user to select a color.
-#
-# widget demo prompts the user to select a color (called by 'widget')
-#
-#  Note: don't support ttk_wrapper. work with standard widgets only.
-#
-
-# toplevel widget
-if defined?($clrpick_demo) && $clrpick_demo
-  $clrpick_demo.destroy 
-  $clrpick_demo = nil
-end
-
-# demo toplevel widget
-$clrpick_demo = TkToplevel.new {|w|
-  title("Color Selection Dialogs")
-  iconname("colors")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($clrpick_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-#TkLabel.new($clrpick_demo,'font'=>$font,'wraplength'=>'4i','justify'=>'left',
-Tk::Label.new($clrpick_demo,'font'=>$font,'wraplength'=>'4i','justify'=>'left',
-            'text'=>"Press the buttons below to choose the foreground and background colors for the widgets in this window.").pack('side'=>'top')
-
-# frame
-#TkFrame.new($clrpick_demo) {|frame|
-Tk::Frame.new($clrpick_demo) {|frame|
-  # TkButton.new(frame) {
-  Tk::Button.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $clrpick_demo
-      $clrpick_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  # TkButton.new(frame) {
-  Tk::Button.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'clrpick'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# button 
-# TkButton.new($clrpick_demo, 'text'=>'Set background color ...') {|b|
-Tk::Button.new($clrpick_demo, 'text'=>'Set background color ...') {|b|
-  command(proc{setColor $clrpick_demo, b, 'background', 
-              ['background', 'highlightbackground']})
-  pack('side'=>'top', 'anchor'=>'c', 'pady'=>'2m')
-}
-
-# TkButton.new($clrpick_demo, 'text'=>'Set foreground color ...') {|b|
-Tk::Button.new($clrpick_demo, 'text'=>'Set foreground color ...') {|b|
-  command(proc{setColor $clrpick_demo, b, 'foreground', ['foreground']})
-  pack('side'=>'top', 'anchor'=>'c', 'pady'=>'2m')
-}
-
-def setColor(w,button,name,options)
-  w.grab
-  initialColor = button[name]
-  color = Tk.chooseColor('title'=>"Choose a #{name} color", 'parent'=>w, 
-                         'initialcolor'=>initialColor)
-  if color != ""
-    setColor_helper(w,options,color)
-  end
-
-  w.grab('release')
-end
-
-def setColor_helper(w, options, color)
-  options.each{|opt|
-    begin
-      w[opt] = color
-    rescue
-    end
-  }
-  TkWinfo.children(w).each{|child|
-    setColor_helper child, options, color
-  }
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/colors.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/colors.rb
deleted file mode 100644 (file)
index 4300a66..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-# colors.rb
-#
-# This demonstration script creates a listbox widget that displays
-# many of the colors from the X color database.  You can click on
-# a color to change the application's palette.
-#
-# listbox widget demo 'colors' (called by 'widget')
-#
-
-# toplevel widget
-if defined?($colors_demo) && $colors_demo
-  $colors_demo.destroy 
-  $colors_demo = nil
-end
-
-# demo toplevel widget
-$colors_demo = TkToplevel.new {|w|
-  title("Listbox Demonstration (colors)")
-  iconname("colors")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($colors_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "A listbox containing several color names is displayed below, along with a scrollbar.  You can scan the list either using the scrollbar or by dragging in the listbox window with button 2 pressed.  If you double-click button 1 on a color, then the application's color palette will be set to match that color"
-}
-msg.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $colors_demo
-      $colors_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'colors'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame
-colors_lbox = nil
-TkFrame.new(base_frame, 'borderwidth'=>10) {|w|
-  s = TkScrollbar.new(w)
-  colors_lbox = TkListbox.new(w) {
-    setgrid 1
-    width  10
-    height 12
-    yscrollcommand proc{|first,last| s.set first,last}
-  }
-  s.command(proc{|*args| colors_lbox.yview(*args)})
-  s.pack('side'=>'right', 'fill'=>'y')
-  colors_lbox.pack('side'=>'left', 'expand'=>1, 'fill'=>'both')
-}.pack('side'=>'top', 'expand'=>'yes', 'fill'=>'y')
-
-#colors_lbox.bind('Double-1', proc{TkPalette.setPalette TkSelection.get})
-colors_lbox.bind('Double-1', proc{
-                   begin
-                     TkPalette.setPalette TkSelection.get
-                   rescue => e
-                     p e
-                     Tk.tk_call_without_enc('destroy', '.___tk_set_palette')
-                   end
-                 })
-
-ins_data = [
-  'gray60','gray70','gray80','gray85','gray90','gray95',
-  'snow1','snow2','snow3','snow4','seashell1','seashell2',
-  'seashell3','seashell4','AntiqueWhite1','AntiqueWhite2',
-  'AntiqueWhite3','AntiqueWhite4','bisque1','bisque2',
-  'bisque3','bisque4','PeachPuff1','PeachPuff2',
-  'PeachPuff3','PeachPuff4','NavajoWhite1','NavajoWhite2',
-  'NavajoWhite3','NavajoWhite4','LemonChiffon1',
-  'LemonChiffon2','LemonChiffon3','LemonChiffon4',
-  'cornsilk1','cornsilk2','cornsilk3','cornsilk4',
-  'ivory1','ivory2','ivory3','ivory4','honeydew1',
-  'honeydew2','honeydew3','honeydew4','LavenderBlush1',
-  'LavenderBlush2','LavenderBlush3','LavenderBlush4',
-  'MistyRose1','MistyRose2','MistyRose3','MistyRose4',
-  'azure1','azure2','azure3','azure4','SlateBlue1',
-  'SlateBlue2','SlateBlue3','SlateBlue4','RoyalBlue1',
-  'RoyalBlue2','RoyalBlue3','RoyalBlue4','blue1','blue2',
-  'blue3','blue4','DodgerBlue1','DodgerBlue2',
-  'DodgerBlue3','DodgerBlue4','SteelBlue1','SteelBlue2',
-  'SteelBlue3','SteelBlue4','DeepSkyBlue1','DeepSkyBlue2',
-  'DeepSkyBlue3','DeepSkyBlue4','SkyBlue1','SkyBlue2',
-  'SkyBlue3','SkyBlue4','LightSkyBlue1','LightSkyBlue2',
-  'LightSkyBlue3','LightSkyBlue4','SlateGray1',
-  'SlateGray2','SlateGray3','SlateGray4',
-  'LightSteelBlue1','LightSteelBlue2','LightSteelBlue3',
-  'LightSteelBlue4','LightBlue1','LightBlue2',
-  'LightBlue3','LightBlue4','LightCyan1','LightCyan2',
-  'LightCyan3','LightCyan4','PaleTurquoise1',
-  'PaleTurquoise2','PaleTurquoise3','PaleTurquoise4',
-  'CadetBlue1','CadetBlue2','CadetBlue3','CadetBlue4',
-  'turquoise1','turquoise2','turquoise3','turquoise4',
-  'cyan1','cyan2','cyan3','cyan4','DarkSlateGray1',
-  'DarkSlateGray2','DarkSlateGray3','DarkSlateGray4',
-  'aquamarine1','aquamarine2','aquamarine3','aquamarine4',
-  'DarkSeaGreen1','DarkSeaGreen2','DarkSeaGreen3',
-  'DarkSeaGreen4','SeaGreen1','SeaGreen2','SeaGreen3',
-  'SeaGreen4','PaleGreen1','PaleGreen2','PaleGreen3',
-  'PaleGreen4','SpringGreen1','SpringGreen2',
-  'SpringGreen3','SpringGreen4','green1','green2',
-  'green3','green4','chartreuse1','chartreuse2',
-  'chartreuse3','chartreuse4','OliveDrab1','OliveDrab2',
-  'OliveDrab3','OliveDrab4','DarkOliveGreen1',
-  'DarkOliveGreen2','DarkOliveGreen3','DarkOliveGreen4',
-  'khaki1','khaki2','khaki3','khaki4','LightGoldenrod1',
-  'LightGoldenrod2','LightGoldenrod3','LightGoldenrod4',
-  'LightYellow1','LightYellow2','LightYellow3',
-  'LightYellow4','yellow1','yellow2','yellow3','yellow4',
-  'gold1','gold2','gold3','gold4','goldenrod1',
-  'goldenrod2','goldenrod3','goldenrod4','DarkGoldenrod1',
-  'DarkGoldenrod2','DarkGoldenrod3','DarkGoldenrod4',
-  'RosyBrown1','RosyBrown2','RosyBrown3','RosyBrown4',
-  'IndianRed1','IndianRed2','IndianRed3','IndianRed4',
-  'sienna1','sienna2','sienna3','sienna4','burlywood1',
-  'burlywood2','burlywood3','burlywood4','wheat1',
-  'wheat2','wheat3','wheat4','tan1','tan2','tan3','tan4',
-  'chocolate1','chocolate2','chocolate3','chocolate4',
-  'firebrick1','firebrick2','firebrick3','firebrick4',
-  'brown1','brown2','brown3','brown4','salmon1','salmon2',
-  'salmon3','salmon4','LightSalmon1','LightSalmon2',
-  'LightSalmon3','LightSalmon4','orange1','orange2',
-  'orange3','orange4','DarkOrange1','DarkOrange2',
-  'DarkOrange3','DarkOrange4','coral1','coral2','coral3',
-  'coral4','tomato1','tomato2','tomato3','tomato4',
-  'OrangeRed1','OrangeRed2','OrangeRed3','OrangeRed4',
-  'red1','red2','red3','red4','DeepPink1','DeepPink2',
-  'DeepPink3','DeepPink4','HotPink1','HotPink2',
-  'HotPink3','HotPink4','pink1','pink2','pink3','pink4',
-  'LightPink1','LightPink2','LightPink3','LightPink4',
-  'PaleVioletRed1','PaleVioletRed2','PaleVioletRed3',
-  'PaleVioletRed4','maroon1','maroon2','maroon3',
-  'maroon4','VioletRed1','VioletRed2','VioletRed3',
-  'VioletRed4','magenta1','magenta2','magenta3',
-  'magenta4','orchid1','orchid2','orchid3','orchid4',
-  'plum1','plum2','plum3','plum4','MediumOrchid1',
-  'MediumOrchid2','MediumOrchid3','MediumOrchid4',
-  'DarkOrchid1','DarkOrchid2','DarkOrchid3',
-  'DarkOrchid4','purple1','purple2','purple3','purple4',
-  'MediumPurple1','MediumPurple2','MediumPurple3',
-  'MediumPurple4','thistle1','thistle2','thistle3', 'thistle4'
-]
-
-colors_lbox.insert(0, *ins_data)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/combo.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/combo.rb
deleted file mode 100644 (file)
index 0907d9e..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-# combo.rb --
-#
-# This demonstration script creates several combobox widgets.
-#
-# based on "Id: combo.tcl,v 1.3 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($combo_demo) && $combo_demo
-  $combo_demo.destroy 
-  $combo_demo = nil
-end
-
-$combo_demo = TkToplevel.new {|w|
-  title("Combobox Demonstration")
-  iconname("combo")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($combo_demo).pack(:fill=>:both, :expand=>true)
-
-Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'5i', :justify=>:left, 
-               :text=><<EOL).pack(:side=>:top, :fill=>:x)
-Three different combo-boxes are displayed below. \
-You can add characters to the first \
-one by pointing, clicking and typing, just as with an entry; pressing \
-Return will cause the current value to be added to the list that is \
-selectable from the drop-down list, and you can choose other values \
-by pressing the Down key, using the arrow keys to pick another one, \
-and pressing Return again. The second combo-box is fixed to a \
-particular value, and cannot be modified at all. The third one only \
-allows you to select values from its drop-down list of Australian \
-cities.
-EOL
-
-## variables
-firstValue  = TkVariable.new
-secondValue = TkVariable.new
-ozCity      = TkVariable.new
-
-## See Code / Dismiss buttons
-Ttk::Frame.new(base_frame) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'See Variables', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{
-                           showVars(base_frame, 
-                                    ['firstVariable', firstValue], 
-                                    ['secondVariable', secondValue], 
-                                    ['ozCity', ozCity])
-                         }), 
-         Ttk::Button.new(frame, :text=>'See Code', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'combo'}), 
-         Ttk::Button.new(frame, :text=>'Dismiss', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $combo_demo.destroy
-                           $combo_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x)
-}
-
-frame = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
-
-australianCities = [
-  'Canberra', 'Sydney', 'Melbourne', 'Perth', 'Adelaide', 'Brisbane', 
-  'Hobart', 'Darwin', 'Alice Springs'
-]
-
-
-secondValue.value = 'unchangable'
-ozCity.value = 'Sydney'
-
-Tk.pack(Ttk::Labelframe.new(frame, :text=>'Fully Editable'){|f|
-          Ttk::Combobox.new(f, :textvariable=>firstValue){|b|
-            b.bind('Return', '%W'){|w|
-              w.values <<= w.value unless w.values.include?(w.value)
-            }
-          }.pack(:pady=>5, :padx=>10)
-        }, 
-
-        Ttk::LabelFrame.new(frame, :text=>'Disabled'){|f|
-          Ttk::Combobox.new(f, :textvariable=>secondValue, :state=>:disabled) .
-            pack(:pady=>5, :padx=>10)
-        }, 
-
-        Ttk::LabelFrame.new(frame, :text=>'Defined List Only'){|f|
-          Ttk::Combobox.new(f, :textvariable=>ozCity, :state=>:readonly, 
-                            :values=>australianCities) .
-            pack(:pady=>5, :padx=>10)
-        }, 
-
-        :side=>:top, :pady=>5, :padx=>10)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/cscroll.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/cscroll.rb
deleted file mode 100644 (file)
index 259ed3b..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-# cscroll.rb
-#
-# This demonstration script creates a simple canvas that can be
-# scrolled in two dimensions.
-#
-# simple scrollable canvas widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($cscroll_demo) && $cscroll_demo
-  $cscroll_demo.destroy 
-  $cscroll_demo = nil
-end
-
-# demo toplevel widget
-$cscroll_demo = TkToplevel.new {|w|
-  title("Scrollable Canvas Demonstration")
-  iconname("cscroll")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($cscroll_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'4i', 
-            'justify'=>'left', 'text'=>"This window displays a canvas widget that can be scrolled either using the scrollbars or by dragging with button 2 in the canvas.  If you click button 1 on one of the rectangles, its indices will be printed on stdout."){
-  pack('side'=>'top')
-}
-
-# frame
-$cscroll_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $cscroll_demo
-      $cscroll_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'cscroll'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$cscroll_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame 
-unless $tk_version =~ /^4\.[01]/
-  $cscroll_grid = TkFrame.new(base_frame) {
-    pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>1)
-  }
-  TkGrid.rowconfigure($cscroll_grid, 0, 'weight'=>1, 'minsize'=>0)
-  TkGrid.columnconfigure($cscroll_grid, 0, 'weight'=>1, 'minsize'=>0)
-end
-
-# canvas
-$cscroll_canvas = TkCanvas.new(base_frame, 
-                               'relief'=>'sunken', 'borderwidth'=>2,
-                               'scrollregion'=>['-11c', '-11c', '50c', '20c']
-                               ) {|c|
-  if $tk_version =~ /^4\.[01]/
-    pack('expand'=>'yes', 'fill'=>'both') 
-  else
-    grid('in'=>$cscroll_grid, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>0, 
-         'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-  end
-
-  TkScrollbar.new(base_frame, 'command'=>proc{|*args| c.yview(*args)}) {|vs|
-    c.yscrollcommand(proc{|first,last| vs.set first,last})
-    if $tk_version =~ /^4\.[01]/
-      pack('side'=>'right', 'fill'=>'y')
-    else
-      grid('in'=>$cscroll_grid, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>1, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    end
-  }
-
-  TkScrollbar.new(base_frame, 'orient'=>'horiz', 
-                  'command'=>proc{|*args| c.xview(*args)}) {|hs|
-    c.xscrollcommand(proc{|first,last| hs.set first,last})
-    if $tk_version =~ /^4\.[01]/
-      pack('side'=>'bottom', 'fill'=>'x') 
-    else
-      grid('in'=>$cscroll_grid, 'padx'=>1, 'pady'=>1, 'row'=>1, 'column'=>0, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    end
-  }
-}
-
-bg = $cscroll_canvas.configinfo('bg')[4]
-(0..19).each{|i|
-  x = -10+3*i
-  y = -10
-  (0..9).each{|j|
-    TkcRectangle.new($cscroll_canvas, "#{x}c", "#{y}c", "#{x+2}c", "#{y+2}c", 
-                     'outline'=>'black', 'fill'=>bg, 'tags'=>'rect')
-    TkcText.new($cscroll_canvas, "#{x+1}c", "#{y+1}c", 
-                'text'=>"#{i},#{j}", 'anchor'=>'center', 'tags'=>'text')
-    y += 3
-  }
-}
-
-$cscroll_canvas.itembind('all', 'Any-Enter', proc{scrollEnter $cscroll_canvas})
-$cscroll_canvas.itembind('all', 'Any-Leave', proc{scrollLeave $cscroll_canvas})
-$cscroll_canvas.itembind('all', '1', proc{scrollButton $cscroll_canvas})
-$cscroll_canvas.itembind('all', 'Any-Enter', proc{scrollEnter $cscroll_canvas})
-$cscroll_canvas.bind('2', proc{|x,y| $cscroll_canvas.scan_mark(x,y)}, '%x %y')
-$cscroll_canvas.bind('B2-Motion', 
-                     proc{|x,y| $cscroll_canvas.scan_dragto(x,y)}, '%x %y')
-
-def scrollEnter(c)
-  id = c.find_withtag('current')[0].id
-  id -= 1 if c.gettags('current').include?('text')
-  $oldFill = c.itemconfiginfo(id, 'fill')[4]
-  if TkWinfo.depth(c) > 1
-    c.itemconfigure(id, 'fill'=>'SeaGreen1')
-  else
-    c.itemconfigure(id, 'fill'=>'black')
-    c.itemconfigure(id+1, 'fill'=>'white')
-  end
-end
-
-def scrollLeave(c)
-  id = c.find_withtag('current')[0].id
-  id -= 1 if c.gettags('current').include?('text')
-  c.itemconfigure(id, 'fill'=>$oldFill)
-  c.itemconfigure(id+1, 'fill'=>'black')
-end
-
-def scrollButton(c)
-  id = c.find_withtag('current')[0].id
-  id += 1 unless c.gettags('current').include?('text')
-  print "You buttoned at #{c.itemconfiginfo(id,'text')[4]}\n"
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ctext.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ctext.rb
deleted file mode 100644 (file)
index 01374b0..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-# ctext.rb
-#
-# This demonstration script creates a canvas widget with a text
-# item that can be edited and reconfigured in various ways.
-#
-# Canvas Text widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($ctext_demo) && $ctext_demo
-  $ctext_demo.destroy 
-  $ctext_demo = nil
-end
-
-# demo toplevel widget
-$ctext_demo = TkToplevel.new {|w|
-  title("Canvas Text Demonstration")
-  iconname("Text")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($ctext_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'5i', 'justify'=>'left', 
-            'text'=>"This window displays a string of text to demonstrate the text facilities of canvas widgets.  You can click in the boxes to adjust the position of the text relative to its positioning point or change its justification.  The text also supports the following simple bindings for editing:
-  1. You can point, click, and type.
-  2. You can also select with button 1.
-  3. You can copy the selection to the mouse position with button 2.
-  4. Backspace and Control+h delete the selection if there is one;
-     otherwise they delete the character just before the insertion cursor.
-  5. Delete deletes the selection if there is one; otherwise it deletes
-     the character just after the insertion cursor."){
-  pack('side'=>'top')
-}
-
-# frame
-$ctext_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $ctext_demo
-      $ctext_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'ctext'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$ctext_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# canvas 
-$ctext_canvas = TkCanvas.new(base_frame, 'relief'=>'flat', 
-                             'borderwidth'=>0, 'width'=>500, 'height'=>350)
-$ctext_canvas.pack('side'=>'top', 'expand'=>'yes', 'fill'=>'both')
-
-# font 
-if $tk_version =~ /^4.*/
-  textFont = '-*-Helvetica-Medium-R-Normal--*-240-*-*-*-*-*-*'
-else
-  textFont = 'Helvetica 24'
-end
-
-# canvas 
-TkcRectangle.new($ctext_canvas, 245, 195, 255, 205, 
-                 'outline'=>'black', 'fill'=>'red')
-
-ctag_text_param = {
-  'text'=>"This is just a string of text to demonstrate the text facilities of canvas widgets. Bindings have been been defined to support editing (see above).",
-  'width'=>440, 'anchor'=>'n', 'justify'=>'left'
-}
-if $tk_version =~ /^4.*/
-  ctag_text_param['font'] = '-*-Helvetica-Medium-R-Normal--*-240-*-*-*-*-*-*'
-else
-  ctag_text_param['font'] = 'Helvetica 24'
-end
-
-$ctag_text = TkcTag.new($ctext_canvas)
-$ctag_text.withtag(TkcText.new($ctext_canvas, 250, 200, ctag_text_param))
-
-$ctag_text.bind('1', proc{|x,y| textB1Press $ctext_canvas,x,y}, "%x %y")
-$ctag_text.bind('B1-Motion', proc{|x,y| textB1Move $ctext_canvas,x,y}, "%x %y")
-$ctag_text.bind('Shift-1', 
-        proc{|x,y| $ctext_canvas.seleect_adjust 'current', "@#{x},#{y}"}, 
-        "%x %y")
-$ctag_text.bind('Shift-B1-Motion', 
-                proc{|x,y| textB1Move $ctext_canvas,x,y}, "%x %y")
-$ctag_text.bind('KeyPress', proc{|a| textInsert $ctext_canvas,a}, "%A")
-$ctag_text.bind('Return', proc{textInsert $ctext_canvas,"\n"})
-$ctag_text.bind('Control-h', proc{textBs $ctext_canvas})
-$ctag_text.bind('BackSpace', proc{textBs $ctext_canvas})
-$ctag_text.bind('Delete', proc{textDel $ctext_canvas})
-$ctag_text.bind('2', proc{|x,y| textPaste $ctext_canvas, "@#{x},#{y}"}, 
-                "%x %y")
-
-# Next, create some items that allow the text's anchor position 
-# to be edited.
-
-def mkTextConfig(w,x,y,option,value,color)
-  item = TkcRectangle.new(w, x, y, x+30, y+30, 
-                          'outline'=>'black', 'fill'=>color, 'width'=>1)
-  item.bind('1', proc{$ctag_text.configure option, value})
-  w.addtag_withtag('config', item)
-end
-
-x = 50
-y = 50
-color = 'LightSkyBlue1'
-mkTextConfig $ctext_canvas, x, y, 'anchor', 'se', color
-mkTextConfig $ctext_canvas, x+30, y, 'anchor', 's', color
-mkTextConfig $ctext_canvas, x+60, y, 'anchor', 'sw', color
-mkTextConfig $ctext_canvas, x, y+30, 'anchor', 'e', color
-mkTextConfig $ctext_canvas, x+30, y+30, 'anchor', 'center', color
-mkTextConfig $ctext_canvas, x+60, y+30, 'anchor', 'w', color
-mkTextConfig $ctext_canvas, x, y+60, 'anchor', 'ne', color
-mkTextConfig $ctext_canvas, x+30, y+60, 'anchor', 'n', color
-mkTextConfig $ctext_canvas, x+60, y+60, 'anchor', 'nw', color
-item = TkcRectangle.new($ctext_canvas, x+40, y+40, x+50, y+50, 
-                        'outline'=>'black', 'fill'=>'red')
-item.bind('1', proc{$ctag_text.configure 'anchor', 'center'})
-if $tk_version =~ /^4.*/
-  TkcText.new($ctext_canvas, x+45, y-5, 'text'=>'Text Position', 
-              'font'=>'-*-times-medium-r-normal--*-240-*-*-*-*-*-*', 
-              'anchor'=>'s', 'fill'=>'brown')
-else
-  TkcText.new($ctext_canvas, x+45, y-5, 'text'=>'Text Position', 
-              'font'=>'Times 24', 'anchor'=>'s', 'fill'=>'brown')
-end
-
-# Lastly, create some items that allow the text's justification to be
-# changed.
-
-x = 350
-y = 50
-color = 'SeaGreen2'
-mkTextConfig $ctext_canvas, x, y, 'justify', 'left', color
-mkTextConfig $ctext_canvas, x+30, y, 'justify', 'center', color
-mkTextConfig $ctext_canvas, x+60, y, 'justify', 'right', color
-if $tk_version =~ /^4.*/
-  TkcText.new($ctext_canvas, x+45, y-5, 'text'=>'Justification', 
-              'font'=>'-*-times-medium-r-normal--*-240-*-*-*-*-*-*', 
-              'anchor'=>'s', 'fill'=>'brown')
-else
-  TkcText.new($ctext_canvas, x+45, y-5, 'text'=>'Justification', 
-              'font'=>'Times 24', 'anchor'=>'s', 'fill'=>'brown')
-end
-
-$ctext_canvas.itembind('config', 'Enter', proc{textEnter $ctext_canvas})
-$ctext_canvas.itembind('config', 'Leave', 
-                       proc{$ctext_canvas\
-                             .itemconfigure('current', 
-                                            'fill'=>$textConfigFill)})
-
-$textConfigFill = ''
-
-def textEnter(w)
-  $textConfigFill = (w.itemconfiginfo 'current', 'fill')[4]
-  w.itemconfigure 'current', 'fill', 'black'
-end
-
-def textInsert(w, string)
-  return if string == ""
-  begin
-    $ctag_text.dchars 'sel.first', 'sel.last'
-  rescue
-  end
-  $ctag_text.insert 'insert', string
-end
-
-def textPaste(w, pos)
-  begin
-    $ctag_text.insert pos, TkSelection.get
-  rescue
-  end
-end
-
-def textB1Press(w,x,y)
-  w.icursor 'current', "@#{x},#{y}"
-  w.itemfocus 'current'
-  w.focus
-  w.select_from 'current', "@#{x},#{y}"
-end
-
-def textB1Move(w,x,y)
-  w.select_to 'current', "@#{x},#{y}"
-end
-
-def textBs(w)
-  begin
-    $ctag_text.dchars 'sel.first', 'sel.last'
-  rescue
-    char = $ctag_text.index('insert').to_i - 1
-    $ctag_text.dchars(char) if char >= 0
-  end
-end
-
-def textDel(w)
-  begin
-    $ctag_text.dchars 'sel.first', 'sel.last'
-  rescue
-    $ctag_text.dchars 'insert'
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/dialog1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/dialog1.rb
deleted file mode 100644 (file)
index af476ec..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# a dialog box with a local grab (called by 'widget')
-#
-class TkDialog_Demo1 < TkDialog
-  ###############
-  private
-  ###############
-  def title
-    "Dialog with local grab"
-  end
-
-  def message
-    'This is a modal dialog box.  It uses Tk\'s "grab" command to create a "local grab" on the dialog box.  The grab prevents any pointer-related events from getting to any other windows in the application until you have answered the dialog by invoking one of the buttons below.  However, you can still interact with other applications.'
-  end
-
-  def bitmap
-    'info'
-  end
-
-  def default_button
-    0
-  end
-
-  def buttons
-    # ["Dismiss", "", "Show Code"]
-    ["OK", "Cancel", "Show Code"]
-  end
-end
-
-ret =  TkDialog_Demo1.new('message_config'=>{'wraplength'=>'4i'}).value
-case ret
-when 0
-  print "You pressed OK\n"
-when 1
-  print "You pressed Cancel\n"
-when 2
-  showCode 'dialog1'
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/dialog2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/dialog2.rb
deleted file mode 100644 (file)
index efc4b71..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# a dialog box with a global grab (called by 'widget')
-#
-class TkDialog_Demo2 < TkDialog
-  ###############
-  private
-  ###############
-  def title
-    "Dialog with global grab"
-  end
-
-  def message
-    "This dialog box uses a global grab, so it prevents you from interacting with anything on your display until you invoke one of the buttons below.  Global grabs are almost always a bad idea; don't use them unless you're truly desperate."
-  end
-
-  def bitmap
-    'info'
-  end
-
-  def default_button
-    0
-  end
-
-  def buttons
-    ["OK", "Cancel", "Show Code"]
-  end
-end
-
-ret =  TkDialog_Demo2.new('message_config'=>{'wraplength'=>'4i'},
-                          'prev_command'=>proc{|dialog|
-                            Tk.after 100, proc{dialog.grab('global')}
-                          }).value
-case ret
-when 0
-  print "\You pressed OK\n"
-when 1
-  print "You pressed Cancel\n"
-when 2
-  showCode 'dialog2'
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/README b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/README
deleted file mode 100644 (file)
index 90677d3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-This directory contains a collection of demonstration programs that
-are translated into Japanese.  You need to use a Japanized "wish" to
-see these Japanese-translated demonstration programs.  You also need
-to put this directory ("demos.jp") at the next to "demos" since some
-of the programs refer to the image files at "demos".
-
-Please refer to the README file at "demos" for more detail.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/README.JP b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/README.JP
deleted file mode 100644 (file)
index 42b4929..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-This directory contains "widget" demo for the Japanized Tcl7.6/Tk4.2.
-Most of the messages in the original are translated to Japanese.
-But other tools in this directory are not translated.
-
-Following 2 kanji fonts are defined at the beginning of the file "widget."
-
-       -*--24-*-jisx0208.1983-0
-       -*--16-*-jisx0208.1983-0
-
-These fonts are all part of the core distribution of X11R5, so
-if you are running X11R5, you don't have to modify the file.
-
-But if you don't have these fonts, replace them with appropriate ones.
-"-*--14-*-jisx0208.1983-0" will be a good choice.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/README.tk80 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/README.tk80
deleted file mode 100644 (file)
index c71f977..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-This directory contains a collection of programs to demonstrate
-the features of the Tk toolkit.  The programs are all scripts for
-"wish", a windowing shell.  If wish has been installed in /usr/local
-then you can invoke any of the programs in this directory just
-by typing its file name to your command shell.  Otherwise invoke
-wish with the file as its first argument, e.g., "wish hello".
-The rest of this file contains a brief description of each program.
-Files with names ending in ".tcl" are procedure packages used by one
-or more of the demo programs;  they can't be used as programs by
-themselves so they aren't described below.
-
-hello -                Creates a single button;  if you click on it, a message
-               is typed and the application terminates.
-
-widget -       Contains a collection of demonstrations of the widgets
-               currently available in the Tk library.  Most of the .tcl
-               files are scripts for individual demos available through
-               the "widget" program.
-
-ixset -                A simple Tk-based wrapper for the "xset" program, which
-               allows you to interactively query and set various X options
-               such as mouse acceleration and bell volume.  Thanks to
-               Pierre David for contributing this example.
-
-rolodex -      A mock-up of a simple rolodex application.  It has much of
-               the user interface for such an application but no back-end
-               database.  This program was written in response to Tom
-               LaStrange's toolkit benchmark challenge.
-
-tcolor -       A color editor.  Allows you to edit colors in several
-               different ways, and will also perform automatic updates
-               using "send".
-
-rmt -          Allows you to "hook-up" remotely to any Tk application
-               on the display.  Select an application with the menu,
-               then just type commands:  they'll go to that application.
-
-timer -                Displays a seconds timer with start and stop buttons.
-               Control-c and control-q cause it to exit.
-
-browse -       A simple directory browser.  Invoke it with and argument
-               giving the name of the directory you'd like to browse.
-               Double-click on files or subdirectories to browse them.
-               Control-c and control-q cause the program to exit.
-
-sccs id = SCCS: @(#) README 1.3 96/02/16 10:49:14
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/license.terms b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/license.terms
deleted file mode 100644 (file)
index 03ca6fc..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-This software is copyrighted by the Regents of the University of
-California, Sun Microsystems, Inc., and other parties.  The following
-terms apply to all files associated with the software unless explicitly
-disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-GOVERNMENT USE: If you are acquiring this software on behalf of the
-U.S. government, the Government shall have only "Restricted Rights"
-in the software and related documentation as defined in the Federal 
-Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
-are acquiring the software on behalf of the Department of Defense, the
-software shall be classified as "Commercial Computer Software" and the
-Government shall have only "Restricted Rights" as defined in Clause
-252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
-authors grant the U.S. Government and others acting in its behalf
-permission to use and distribute the software in accordance with the
-terms specified in this license.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/license.terms.tk80 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/doc.org/license.terms.tk80
deleted file mode 100644 (file)
index 03ca6fc..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-This software is copyrighted by the Regents of the University of
-California, Sun Microsystems, Inc., and other parties.  The following
-terms apply to all files associated with the software unless explicitly
-disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-GOVERNMENT USE: If you are acquiring this software on behalf of the
-U.S. government, the Government shall have only "Restricted Rights"
-in the software and related documentation as defined in the Federal 
-Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
-are acquiring the software on behalf of the Department of Defense, the
-software shall be classified as "Commercial Computer Software" and the
-Government shall have only "Restricted Rights" as defined in Clause
-252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
-authors grant the U.S. Government and others acting in its behalf
-permission to use and distribute the software in accordance with the
-terms specified in this license.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/entry1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/entry1.rb
deleted file mode 100644 (file)
index 6f5b10f..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# entry (no scrollbars) widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($entry1_demo) && $entry1_demo
-  $entry1_demo.destroy 
-  $entry1_demo = nil
-end
-
-# demo toplevel widget
-$entry1_demo = TkToplevel.new {|w|
-  title("Entry Demonstration (no scrollbars)")
-  iconname("entry1")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($entry1_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '5i'
-  justify 'left'
-  text "Three different entries are displayed below.  You can add characters by pointing, clicking and typing.  The normal Motif editing characters are supported, along with many Emacs bindings.  For example, Backspace and Control-h delete the character to the left of the insertion cursor and Delete and Control-d delete the chararacter to the right of the insertion cursor.  For entries that are too large to fit in the window all at once, you can scan through the entries by dragging with mouse button2 pressed."
-}
-msg.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $entry1_demo
-      $entry1_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'entry1'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# 
-e1 = TkEntry.new(base_frame, 'relief'=>'sunken')
-e2 = TkEntry.new(base_frame, 'relief'=>'sunken')
-e3 = TkEntry.new(base_frame, 'relief'=>'sunken')
-[e1,e2,e3].each{|w| w.pack('side'=>'top', 'padx'=>10, 'pady'=>5, 'fill'=>'x')}
-
-# 
-e1.insert(0, 'Initial value')
-e2.insert('end', "This entry contains a long value, much too long ")
-e2.insert('end', "to fit in the window at one time, so long in fact ")
-e2.insert('end', "that you'll have to scan or scroll to see the end.")
-e2.insert('end', "")
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/entry2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/entry2.rb
deleted file mode 100644 (file)
index d67d04b..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-# entry2.rb
-#
-# This demonstration script is the same as the entry1.tcl script
-# except that it creates scrollbars for the entries.
-#
-# entry (with scrollbars) widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($entry2_demo) && $entry2_demo
-  $entry2_demo.destroy 
-  $entry2_demo = nil
-end
-
-# demo toplevel widget
-$entry2_demo = TkToplevel.new {|w|
-  title("Entry Demonstration (with scrollbars)")
-  iconname("entry2")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($entry2_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '5i'
-  justify 'left'
-  text "Three different entries are displayed below, with a scrollbar for each entry.  You can add characters by pointing, clicking and typing.  The normal Motif editing characters are supported, along with many Emacs bindings.  For example, Backspace and Control-h delete the character to the left of the insertion cursor and Delete and Control-d delete the chararacter to the right of the insertion cursor.  For entries that are too large to fit in the window all at once, you can scan through the entries with the scrollbars, or by dragging with mouse button2 pressed."
-}
-msg.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $entry2_demo
-      $entry2_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'entry2'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame
-TkFrame.new(base_frame, 'borderwidth'=>10) {|w|
-  # entry 1
-  s1 = TkScrollbar.new(w, 'relief'=>'sunken', 'orient'=>'horiz')
-  e1 = TkEntry.new(w, 'relief'=>'sunken') {
-    xscrollcommand proc{|first,last| s1.set first,last}
-  }
-  s1.command(proc{|*args| e1.xview(*args)})
-  e1.pack('side'=>'top', 'fill'=>'x')
-  s1.pack('side'=>'top', 'fill'=>'x')
-
-  # spacer
-  TkFrame.new(w, 'width'=>20, 'height'=>10).pack('side'=>'top', 'fill'=>'x')
-
-  # entry 2
-  s2 = TkScrollbar.new(w, 'relief'=>'sunken', 'orient'=>'horiz')
-  e2 = TkEntry.new(w, 'relief'=>'sunken') {
-    xscrollcommand proc{|first,last| s2.set first,last}
-  }
-  s2.command(proc{|*args| e2.xview(*args)})
-  e2.pack('side'=>'top', 'fill'=>'x')
-  s2.pack('side'=>'top', 'fill'=>'x')
-
-  # spacer
-  TkFrame.new(w, 'width'=>20, 'height'=>10).pack('side'=>'top', 'fill'=>'x')
-
-  # entry 3
-  s3 = TkScrollbar.new(w, 'relief'=>'sunken', 'orient'=>'horiz')
-  e3 = TkEntry.new(w, 'relief'=>'sunken') {
-    xscrollcommand proc{|first,last| s3.set first,last}
-  }
-  s3.command(proc{|*args| e3.xview(*args)})
-  e3.pack('side'=>'top', 'fill'=>'x')
-  s3.pack('side'=>'top', 'fill'=>'x')
-
-  # 
-  e1.insert(0, 'Initial value')
-  e2.insert('end', "This entry contains a long value, much too long ")
-  e2.insert('end', "to fit in the window at one time, so long in fact ")
-  e2.insert('end', "that you'll have to scan or scroll to see the end.")
-  e2.insert('end', "")
-
-}.pack('side'=>'top', 'fill'=>'x', 'expand'=>'yes')
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/entry3.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/entry3.rb
deleted file mode 100644 (file)
index f7df3a5..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-# entry3.rb --
-#
-# This demonstration script creates several entry widgets whose
-# permitted input is constrained in some way.  It also shows off a
-# password entry.
-#
-# based on Tcl/Tk8.4.4 widget demos
-
-if defined?($entry3_demo) && $entry3_demo
-  $entry3_demo.destroy 
-  $entry3_demo = nil
-end
-
-$entry3_demo = TkToplevel.new {|w|
-  title("Constrained Entry Demonstration")
-  iconname("entry3")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($entry3_demo).pack(:fill=>:both, :expand=>true)
-
-TkLabel.new(base_frame, 
-            :font=>$font, :wraplength=>'5i', :justify=>:left, 
-            :text=><<EOL).pack(:side=>:top)
-Four different entries are displayed below.  You can add characters \
-by pointing, clicking and typing, though each is constrained in what \
-it will accept.  The first only accepts integers or the empty string \
-(checking when focus leaves it) and will flash to indicate any \
-problem.  The second only accepts strings with fewer than ten \
-characters and sounds the bell when an attempt to go over the limit \
-is made.  The third accepts US phone numbers, mapping letters to \
-their digit equivalent and sounding the bell on encountering an \
-invalid character or if trying to type over a character that is not \
-a digit.  The fourth is a password field that accepts up to eight \
-characters (silently ignoring further ones), and displaying them as \
-asterisk characters.
-EOL
-
-TkFrame.new(base_frame){|f|
-  pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
-
-  TkButton.new(f, :text=>'Dismiss', :width=>15, :command=>proc{
-                 $entry3_demo.destroy
-                 $entry3_demo = nil
-               }).pack(:side=>:left, :expand=>true)
-
-  TkButton.new(f, :text=>'See Code', :width=>15, :command=>proc{
-                 showCode 'entry3'
-               }).pack(:side=>:left, :expand=>true)
-}
-
-# focusAndFlash --
-# Error handler for entry widgets that forces the focus onto the
-# widget and makes the widget flash by exchanging the foreground and
-# background colours at intervals of 200ms (i.e. at approximately
-# 2.5Hz).
-#
-# Arguments:
-# widget -      entry widget to flash
-# fg -          Initial foreground colour
-# bg -          Initial background colour
-# count -       Counter to control the number of times flashed
-def focusAndFlash(widget, fg, bg, count=5)
-  return if count <= 0
-  if fg && !fg.empty? && bg && !bg.empty?
-    TkTimer.new(200, count, 
-                proc{widget.configure(:foreground=>bg, :background=>fg)}, 
-                proc{widget.configure(:foreground=>fg, :background=>bg)}
-                ).start
-  else
-    # TkTimer.new(150, 3){Tk.bell}.start
-    Tk.bell
-    TkTimer.new(200, count,
-                proc{widget.configure(:foreground=>'white',
-                                      :background=>'black')},
-                proc{widget.configure(:foreground=>'black',
-                                      :background=>'white')}
-                ).at_end{begin
-                           widget.configure(:foreground=>fg,
-                                            :background=>bg)
-                         rescue
-                           # ignore
-                         end}.start
-  end
-  widget.focus(true)
-end
-
-l1 = TkLabelFrame.new(base_frame, :text=>"Integer Entry")
-TkEntry.new(l1, :validate=>:focus, 
-            :vcmd=>[
-              proc{|s| s == '' || /^[+-]?\d+$/ =~ s }, '%P'
-            ]) {|e|
-  fg = e.foreground
-  bg = e.background
-  invalidcommand [proc{|w| focusAndFlash(w, fg, bg)}, '%W']
-  pack(:fill=>:x, :expand=>true, :padx=>'1m', :pady=>'1m')
-}
-
-l2 = TkLabelFrame.new(base_frame, :text=>"Length-Constrained Entry")
-TkEntry.new(l2, :validate=>:key, :invcmd=>proc{Tk.bell}, 
-            :vcmd=>[proc{|s| s.length < 10}, '%P']
-            ).pack(:fill=>:x, :expand=>true, :padx=>'1m', :pady=>'1m')
-
-### PHONE NUMBER ENTRY ###
-# Note that the source to this is quite a bit longer as the behaviour
-# demonstrated is a lot more ambitious than with the others.
-
-# Initial content for the third entry widget
-entry3content = TkVariable.new("1-(000)-000-0000")
-
-# Mapping from alphabetic characters to numbers.
-$phoneNumberMap = {}
-Hash[*(%w(abc 2 def 3 ghi 4 jkl 5 mno 6 pqrs 7 tuv 8 wxyz 9))].each{|chars, n|
-  chars.split('').each{|c|
-    $phoneNumberMap[c] = n
-    $phoneNumberMap[c.upcase] = n
-  }
-}
-
-# phoneSkipLeft --
-# Skip over fixed characters in a phone-number string when moving left.
-#
-# Arguments:
-# widget -      The entry widget containing the phone-number.
-def phoneSkipLeft(widget)
-  idx = widget.index('insert')
-  if idx == 8
-    # Skip back two extra characters
-    widget.cursor = idx - 2
-  elsif idx == 7 || idx == 12
-    # Skip back one extra character
-    widget.cursor = idx - 1
-  elsif idx <= 3
-    # Can't move any further
-    Tk.bell
-    Tk.callback_break
-  end
-end
-
-# phoneSkipRight --
-# Skip over fixed characters in a phone-number string when moving right.
-#
-# Arguments:
-# widget -      The entry widget containing the phone-number.
-# add - Offset to add to index before calculation (used by validation.)
-def phoneSkipRight(widget, add = 0)
-  idx = widget.index('insert')
-  if (idx + add == 5)
-    # Skip forward two extra characters
-    widget.cursor = idx + 2
-  elsif (idx + add == 6 || idx + add == 10)
-    # Skip forward one extra character
-    widget.cursor = idx + 1
-  elsif (idx + add == 15 && add == 0)
-    # Can't move any further
-    Tk.bell
-    Tk.callback_break
-  end
-end
-
-# validatePhoneChange --
-# Checks that the replacement (mapped to a digit) of the given
-# character in an entry widget at the given position will leave a
-# valid phone number in the widget.
-#
-# widget - entry widget to validate
-# vmode -  The widget's validation mode
-# idx -    The index where replacement is to occur
-# char -   The character (or string, though that will always be
-#          refused) to be overwritten at that point.
-
-def validatePhoneChange(widget, vmode, idx, char)
-  return true if idx == nil
-  Tk.after_idle(proc{widget.configure(:validate=>vmode, 
-                                      :invcmd=>proc{Tk.bell})})
-  if !(idx<3 || idx==6 || idx==7 || idx==11 || idx>15) && char =~ /[0-9A-Za-z]/
-    widget.delete(idx)
-    widget.insert(idx, $phoneNumberMap[char] || char)
-    Tk.after_idle(proc{phoneSkipRight(widget, -1)})
-    return true
-    # Tk.update(true) # <- Don't work 'update' inter validation callback.
-                      #    It depends on Tcl/Tk side (tested on Tcl/Tk8.5a1). 
-  end
-  return false
-end
-
-
-l3 = TkLabelFrame.new(base_frame, :text=>"US Phone-Number Entry")
-TkEntry.new(l3, :validate=>:key, :invcmd=>proc{Tk.bell}, 
-            :textvariable=>entry3content, 
-            :vcmd=>[
-              proc{|w,v,i,s| validatePhoneChange(w,v,i,s)}, 
-              "%W %v %i %S"
-            ]){|e|
-  # Click to focus goes to the first editable character...
-  bind('FocusIn', proc{|d,w|
-         if d != "NotifyAncestor"
-           w.cursor = 3
-           Tk.after_idle(proc{w.selection_clear})
-         end
-       }, '%d %W')
-  bind('Left',  proc{|w| phoneSkipLeft(w)},  '%W')
-  bind('Right', proc{|w| phoneSkipRight(w)}, '%W')
-  pack(:fill=>:x, :expand=>true, :padx=>'1m', :pady=>'1m')
-}
-
-l4 = TkLabelFrame.new(base_frame, :text=>"Password Entry")
-TkEntry.new(l4, :validate=>:key, :show=>'*', 
-            :vcmd=>[
-              proc{|s| s.length <= 8}, 
-              '%P'
-            ]).pack(:fill=>:x, :expand=>true, :padx=>'1m', :pady=>'1m')
-
-TkFrame.new(base_frame){|f|
-  lower
-  TkGrid.configure(l1, l2, :in=>f, :padx=>'3m', :pady=>'1m', :sticky=>:ew)
-  TkGrid.configure(l3, l4, :in=>f, :padx=>'3m', :pady=>'1m', :sticky=>:ew)
-  TkGrid.columnconfigure(f, [0,1], :uniform=>1)
-  pack(:fill=>:both, :expand=>true)
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/filebox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/filebox.rb
deleted file mode 100644 (file)
index 676c347..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-# filebox.rb
-#
-# This demonstration script prompts the user to select a file.#
-# widget demo prompts the user to select a file (called by 'widget')
-#
-
-# toplevel widget
-if defined?($filebox_demo) && $filebox_demo
-  $filebox_demo.destroy 
-  $filebox_demo = nil
-end
-
-# demo toplevel widget
-$filebox_demo = TkToplevel.new {|w|
-  title("File Selection Dialogs")
-  iconname("filebox")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($filebox_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left',
-            'text'=>"Enter a file name in the entry box or click on the \"Browse\" buttons to select a file name using the file selection dialog.").pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $filebox_demo
-      $filebox_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'filebox'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame
-['open', 'save'].each{|type|
-  TkFrame.new(base_frame) {|f|
-    TkLabel.new(f, 'text'=>"Select a file to #{type}: ", 'anchor'=>'e')\
-    .pack('side'=>'left')
-
-    TkEntry.new(f, 'width'=>20) {|e|
-      pack('side'=>'left', 'expand'=>'yes', 'fill'=>'x')
-
-      TkButton.new(f, 'text'=>'Browse ...', 
-                   'command'=>proc{fileDialog base_frame,e,type})\
-      .pack('side'=>'left')
-    }
-
-    pack('fill'=>'x', 'padx'=>'1c', 'pady'=>3)
-  }
-}
-
-$tk_strictMotif = TkVarAccess.new('tk_strictMotif')
-if ($tk_platform['platform'] == 'unix')
-  TkCheckButton.new(base_frame, 
-                    'text'=>'Use Motif Style Dialog', 
-                    'variable'=>$tk_strictMotif, 
-                    'onvalue'=>1, 'offvalue'=>0 ).pack('anchor'=>'c')
-end
-
-def fileDialog(w,ent,operation)
-  #    Type names         Extension(s)             Mac File Type(s)
-  #
-  #--------------------------------------------------------
-  types = [
-    ['Text files',       ['.txt','.doc']          ], 
-    ['Text files',       [],                      'TEXT' ], 
-    ['Ruby Scripts',     ['.rb'],                 'TEXT' ], 
-    ['Tcl Scripts',      ['.tcl'],                'TEXT' ], 
-    ['C Source Files',   ['.c','.h']              ], 
-    ['All Source Files', ['.rb','.tcl','.c','.h'] ], 
-    ['Image Files',      ['.gif']                 ], 
-    ['Image Files',      ['.jpeg','.jpg']         ], 
-    ['Image Files',      [],                      ['GIFF','JPEG']], 
-    ['All files',        '*'                      ]
-  ]
-
-  if operation == 'open'
-    file = Tk.getOpenFile('filetypes'=>types, 'parent'=>w)
-  else
-    file = Tk.getSaveFile('filetypes'=>types, 'parent'=>w, 
-                          'initialfile'=>'Untitled', 
-                          'defaultextension'=>'.txt')
-  end
-  if file != ""
-    ent.delete 0, 'end'
-    ent.insert 0, file
-    # ent.xview 'end'
-    Tk.update_idletasks # need this for Tk::Tile::Entry
-                        # (to find right position of 'xview').
-    ent.xview(ent.index('end'))
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/floor.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/floor.rb
deleted file mode 100644 (file)
index 7023f2a..0000000
+++ /dev/null
@@ -1,1723 +0,0 @@
-# floor.rb
-#
-# This demonstration script creates a canvas widet that displays the
-# floorplan for DEC's Western Research Laboratory.
-#
-# floorDisplay widget demo (called by 'widget')
-#
-
-# floorDisplay --
-# Recreate the floorplan display in the canvas given by "w".  The
-# floor given by "active" is displayed on top with its office structure
-# visible.
-#
-# Arguments:
-# w -           Name of the canvas window.
-# active -      Number of active floor (1, 2, or 3).
-
-def floorDisplay(w,active)
-  return if $activeFloor == active
-
-  w.delete('all')
-  $activeFloor = active
-
-  # First go through the three floors, displaying the backgrounds for 
-  # each floor.
-
-  floor_bg1(w,$floor_colors['bg1'],$floor_colors['outline1'])
-  floor_bg2(w,$floor_colors['bg2'],$floor_colors['outline2'])
-  floor_bg3(w,$floor_colors['bg3'],$floor_colors['outline3'])
-
-  # Raise the background for the active floor so that it's on top.
-
-  w.raise("floor#{active}")
-
-  # Create a dummy item just to mark this point in the display list, 
-  # so we can insert highlights here.
-
-  TkcRectangle.new(w,0,100,1,101, 'fill'=>'', 'outline'=>'', 'tags'=>'marker')
-
-  # Add the walls and labels for the active floor, along with 
-  # transparent polygons that define the rooms on the floor.
-  # Make sure that the room polygons are on top.
-
-  $floorLabels.clear
-  $floorItems.clear
-  send("floor_fg#{active}", w, $floor_colors['offices'])
-  w.raise('room')
-
-  # Offset the floors diagonally from each other.
-
-  w.move('floor1', '2c', '2c')
-  w.move('floor2', '1c', '1c')
-
-  # Create items for the room entry and its label.
-  TkcWindow.new(w, 600, 100, 'anchor'=>'w', 'window'=>$floor_entry)
-  TkcText.new(w, 600, 100, 'anchor'=>'e', 'text'=>"Room: ")
-  w['scrollregion'] = w.bbox('all')
-end
-
-# newRoom --
-# This method is invoked whenever the mouse enters a room
-# in the floorplan.  It changes tags so that the current room is
-# highlighted.
-#
-# Arguments:
-# w  -          The name of the canvas window.
-
-def newRoom(w)
-  id = w.find_withtag('current')[0]
-  $currentRoom.value = $floorLabels[id.id] if id != ""
-  Tk.update(true)
-end
-
-# roomChanged --
-# This method is invoked whenever the currentRoom variable changes.
-# It highlights the current room and unhighlights any previous room.
-#
-# Arguments:
-# w -           The canvas window displaying the floorplan.
-# args -        Not used.
-
-def roomChanged(w,*args)
-  w.delete('highlight')
-  item = $floorItems[$currentRoom.value]
-  return if item == nil
-  new = TkcPolygon.new(w, *(w.coords(item)))
-  new.configure('fill'=>$floor_colors['active'], 'tags'=>'highlight')
-  w.raise(new, 'marker')
-end
-
-# floor_bg1 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the background information for the first
-# floor.
-#
-# Arguments:
-# w -           The canvas window.
-# fill -        Fill color to use for the floor's background.
-# outline -     Color to use for the floor's outline.
-
-def floor_bg1(w,fill,outline)
-  TkcPolygon.new(w,347,80,349,82,351,84,353,85,363,92,375,99,386,104,
-                 386,129,398,129,398,162,484,162,484,129,559,129,559,133,725,
-                 133,725,129,802,129,802,389,644,389,644,391,559,391,559,327,
-                 508,327,508,311,484,311,484,278,395,278,395,288,400,288,404,
-                 288,409,290,413,292,418,297,421,302,422,309,421,318,417,325,
-                 411,330,405,332,397,333,344,333,340,334,336,336,335,338,332,
-                 342,331,347,332,351,334,354,336,357,341,359,340,360,335,363,
-                 331,365,326,366,304,366,304,355,258,355,258,387,60,387,60,391,
-                 0,391,0,337,3,337,3,114,8,114,8,25,30,25,30,5,93,5,98,5,104,7,
-                 110,10,116,16,119,20,122,28,123,32,123,68,220,68,220,34,221,
-                 22,223,17,227,13,231,8,236,4,242,2,246,0,260,0,283,1,300,5,
-                 321,14,335,22,348,25,365,29,363,39,358,48,352,56,337,70,
-                 344,76,347,80, 'tags'=>['floor1','bg'], 'fill'=>fill)
-  TkcLine.new(w,386,129,398,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,258,355,258,387, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,60,387,60,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,0,337,0,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,60,391,0,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,3,114,3,337, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,258,387,60,387, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,484,162,398,162, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,398,162,398,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,484,278,484,311, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,484,311,508,311, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,508,327,508,311, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,559,327,508,327, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,644,391,559,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,644,389,644,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,559,129,484,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,484,162,484,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,725,133,559,133, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,559,129,559,133, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,725,129,802,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,802,389,802,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,3,337,0,337, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,559,391,559,327, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,802,389,644,389, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,725,133,725,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,8,25,8,114, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,8,114,3,114, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,30,25,8,25, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,484,278,395,278, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,30,25,30,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,93,5,30,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,98,5,93,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,104,7,98,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,110,10,104,7, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,116,16,110,10, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,119,20,116,16, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,122,28,119,20, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,123,32,122,28, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,123,68,123,32, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,220,68,123,68, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,386,129,386,104, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,386,104,375,99, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,375,99,363,92, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,353,85,363,92, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,220,68,220,34, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,337,70,352,56, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,352,56,358,48, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,358,48,363,39, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,363,39,365,29, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,365,29,348,25, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,348,25,335,22, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,335,22,321,14, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,321,14,300,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,300,5,283,1, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,283,1,260,0, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,260,0,246,0, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,246,0,242,2, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,242,2,236,4, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,236,4,231,8, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,231,8,227,13, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,223,17,227,13, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,221,22,223,17, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,220,34,221,22, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,340,360,335,363, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,335,363,331,365, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,331,365,326,366, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,326,366,304,366, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,304,355,304,366, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,395,288,400,288, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,404,288,400,288, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,409,290,404,288, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,413,292,409,290, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,418,297,413,292, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,421,302,418,297, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,422,309,421,302, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,421,318,422,309, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,421,318,417,325, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,417,325,411,330, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,411,330,405,332, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,405,332,397,333, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,397,333,344,333, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,344,333,340,334, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,340,334,336,336, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,336,336,335,338, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,335,338,332,342, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,331,347,332,342, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,332,351,331,347, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,334,354,332,351, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,336,357,334,354, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,341,359,336,357, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,341,359,340,360, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,395,288,395,278, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,304,355,258,355, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,347,80,344,76, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,344,76,337,70, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,349,82,347,80, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,351,84,349,82, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,353,85,351,84, 'fill'=>outline, 'tags'=>['floor1','bg'])
-end
-
-# floor_bg2 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the background information for the first
-# floor.
-#
-# Arguments:
-# w -           The canvas window.
-# fill -        Fill color to use for the floor's background.
-# outline -     Color to use for the floor's outline.
-
-def floor_bg2(w,fill,outline)
-  TkcPolygon.new(w,559,129,484,129,484,162,398,162,398,129,315,129,
-                 315,133,176,133,176,129,96,129,96,133,3,133,3,339,0,339,0,391,
-                 60,391,60,387,258,387,258,329,350,329,350,311,395,311,395,280,
-                 484,280,484,311,508,311,508,327,558,327,558,391,644,391,644,
-                 367,802,367,802,129,725,129,725,133,559,133,559,129,
-                 'tags'=>['floor2','bg'], 'fill'=>fill)
-  TkcLine.new(w,350,311,350,329, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,398,129,398,162, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,802,367,802,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,802,129,725,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,725,133,725,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,559,129,559,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,559,133,725,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,484,162,484,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,559,129,484,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,802,367,644,367, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,644,367,644,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,644,391,558,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,558,327,558,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,558,327,508,327, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,508,327,508,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,484,311,508,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,484,280,484,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,398,162,484,162, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,484,280,395,280, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,395,280,395,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,258,387,60,387, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,3,133,3,339, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,3,339,0,339, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,60,391,0,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,0,339,0,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,60,387,60,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,258,329,258,387, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,350,329,258,329, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,395,311,350,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,398,129,315,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,176,133,315,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,176,129,96,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,3,133,96,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,315,133,315,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,176,133,176,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,96,133,96,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-end
-
-# floor_bg3 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the background information for the first
-# floor.
-#
-# Arguments:
-# w -           The canvas window.
-# fill -        Fill color to use for the floor's background.
-# outline -     Color to use for the floor's outline.
-
-def floor_bg3(w,fill,outline)
-  TkcPolygon.new(w,159,300,107,300,107,248,159,248,159,129,96,129,96,
-                 133,21,133,21,331,0,331,0,391,60,391,60,370,159,370,159,300,
-                 'tags'=>['floor3','bg'], 'fill'=>fill)
-  TkcPolygon.new(w,258,370,258,329,350,329,350,311,399,311,399,129,
-                 315,129,315,133,176,133,176,129,159,129,159,370,258,370,
-                 'tags'=>['floor3','bg'], 'fill'=>fill)
-  TkcLine.new(w,96,133,96,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,176,129,96,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,176,129,176,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,315,133,176,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,315,133,315,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,399,129,315,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,399,311,399,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,399,311,350,311, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,350,329,350,311, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,350,329,258,329, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,258,370,258,329, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,60,370,258,370, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,60,370,60,391, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,60,391,0,391, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,0,391,0,331, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,21,331,0,331, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,21,331,21,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,96,133,21,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,107,300,159,300,159,248,107,248,107,300, 
-              'fill'=>outline, 'tags'=>['floor3','bg'])
-end
-
-# floor_fg1 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the foreground information for the first
-# floor (office outlines and numbers).
-#
-# Arguments:
-# w -           The canvas window.
-# color -       Color to use for drawing foreground information.
-
-def floor_fg1(w,color)
-  i = TkcPolygon.new(w,375,246,375,172,341,172,341,246, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '101'
-  $floorItems['101'] = i
-  TkcText.new(w,358,209, 'text'=>'101', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,307,240,339,240,339,206,307,206, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'Pub Lift1'
-  $floorItems['Pub Lift1'] = i
-  TkcText.new(w,323,223, 'text'=>'Pub Lift1', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,339,205,307,205,307,171,339,171, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'Priv Lift1'
-  $floorItems['Priv Lift1'] = i
-  TkcText.new(w,323,188, 'text'=>'Priv Lift1', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,42,389,42,337,1,337,1,389, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '110'
-  $floorItems['110'] = i
-  TkcText.new(w,21.5,363, 'text'=>'110', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,59,389,59,385,90,385,90,337,44,337,44,389, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '109'
-  $floorItems['109'] = i
-  TkcText.new(w,67,363, 'text'=>'109', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,51,300,51,253,6,253,6,300, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '111'
-  $floorItems['111'] = i
-  TkcText.new(w,28.5,276.5, 'text'=>'111', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,98,248,98,309,79,309,79,248, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '117B'
-  $floorItems['117B'] = i
-  TkcText.new(w,88.5,278.5, 'text'=>'117B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,51,251,51,204,6,204,6,251, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '112'
-  $floorItems['112'] = i
-  TkcText.new(w,28.5,227.5, 'text'=>'112', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,6,156,51,156,51,203,6,203, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '113'
-  $floorItems['113'] = i
-  TkcText.new(w,28.5,179.5, 'text'=>'113', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,85,169,79,169,79,192,85,192, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '117A'
-  $floorItems['117A'] = i
-  TkcText.new(w,82,180.5, 'text'=>'117A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,77,302,77,168,53,168,53,302, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '117'
-  $floorItems['117'] = i
-  TkcText.new(w,65,235, 'text'=>'117', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,51,155,51,115,6,115,6,155, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '114'
-  $floorItems['114'] = i
-  TkcText.new(w,28.5,135, 'text'=>'114', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,95,115,53,115,53,168,95,168, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '115'
-  $floorItems['115'] = i
-  TkcText.new(w,74,141.5, 'text'=>'115', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,87,113,87,27,10,27,10,113, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '116'
-  $floorItems['116'] = i
-  TkcText.new(w,48.5,70, 'text'=>'116', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,89,91,128,91,128,113,89,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '118'
-  $floorItems['118'] = i
-  TkcText.new(w,108.5,102, 'text'=>'118', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,178,128,178,132,216,132,216,91,
-                     163,91,163,112,149,112,149,128, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '120'
-  $floorItems['120'] = i
-  TkcText.new(w,189.5,111.5, 'text'=>'120', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,79,193,87,193,87,169,136,169,136,192,
-                     156,192,156,169,175,169,175,246,79,246, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '122'
-  $floorItems['122'] = i
-  TkcText.new(w,131,207.5, 'text'=>'122', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,138,169,154,169,154,191,138,191, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '121'
-  $floorItems['121'] = i
-  TkcText.new(w,146,180, 'text'=>'121', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,99,300,126,300,126,309,99,309, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '106A'
-  $floorItems['106A'] = i
-  TkcText.new(w,112.5,304.5, 'text'=>'106A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,128,299,128,309,150,309,150,248,99,248,99,299, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '105'
-  $floorItems['105'] = i
-  TkcText.new(w,124.5,278.5, 'text'=>'105', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,174,309,174,300,152,300,152,309, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '106B'
-  $floorItems['106B'] = i
-  TkcText.new(w,163,304.5, 'text'=>'106B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,176,299,176,309,216,309,216,248,152,248,152,299, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '104'
-  $floorItems['104'] = i
-  TkcText.new(w,184,278.5, 'text'=>'104', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,138,385,138,337,91,337,91,385, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '108'
-  $floorItems['108'] = i
-  TkcText.new(w,114.5,361, 'text'=>'108', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,256,337,140,337,140,385,256,385, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '107'
-  $floorItems['107'] = i
-  TkcText.new(w,198,361, 'text'=>'107', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,300,353,300,329,260,329,260,353, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'Smoking'
-  $floorItems['Smoking'] = i
-  TkcText.new(w,280,341, 'text'=>'Smoking', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,314,135,314,170,306,170,306,246,177,246,177,135, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '123'
-  $floorItems['123'] = i
-  TkcText.new(w,245.5,190.5, 'text'=>'123', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,217,248,301,248,301,326,257,326,257,310,217,310, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '103'
-  $floorItems['103'] = i
-  TkcText.new(w,259,287, 'text'=>'103', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,396,188,377,188,377,169,316,169,316,131,396,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '124'
-  $floorItems['124'] = i
-  TkcText.new(w,356,150, 'text'=>'124', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,397,226,407,226,407,189,377,189,377,246,397,246, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '125'
-  $floorItems['125'] = i
-  TkcText.new(w,392,217.5, 'text'=>'125', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,399,187,409,187,409,207,474,207,474,164,399,164, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '126'
-  $floorItems['126'] = i
-  TkcText.new(w,436.5,185.5, 'text'=>'126', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,409,209,409,229,399,229,399,253,
-                     486,253,486,239,474,239,474,209, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '127'
-  $floorItems['127'] = i
-  TkcText.new(w,436.5,'231', 'text'=>'127', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,501,164,501,174,495,174,495,188,
-                     490,188,490,204,476,204,476,164, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'MShower'
-  $floorItems['MShower'] = i
-  TkcText.new(w,488.5,'184', 'text'=>'MShower', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,497,176,513,176,513,204,492,204,492,190,497,190, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'Closet'
-  $floorItems['Closet'] = i
-  TkcText.new(w,502.5,190, 'text'=>'Closet', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,476,237,476,206,513,206,513,254,488,254,488,237, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'WShower'
-  $floorItems['WShower'] = i
-  TkcText.new(w,494.5,230, 'text'=>'WShower', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,486,131,558,131,558,135,724,135,724,166,
-                     697,166,697,275,553,275,531,254,515,254,
-                     515,174,503,174,503,161,486,161, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '130'
-  $floorItems['130'] = i
-  TkcText.new(w,638.5,205, 'text'=>'130', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,308,242,339,242,339,248,342,248,
-                     342,246,397,246,397,276,393,276,
-                     393,309,300,309,300,248,308,248, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '102'
-  $floorItems['102'] = i
-  TkcText.new(w,367.5,278.5, 'text'=>'102', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,397,255,486,255,486,276,397,276, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '128'
-  $floorItems['128'] = i
-  TkcText.new(w,441.5,265.5, 'text'=>'128', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,510,309,486,309,486,255,530,255,
-                     552,277,561,277,561,325,510,325,
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '129'
-  $floorItems['129'] = i
-  TkcText.new(w,535.5,293, 'text'=>'129', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,696,281,740,281,740,387,642,387,
-                     642,389,561,389,561,277,696,277, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '133'
-  $floorItems['133'] = i
-  TkcText.new(w,628.5,335, 'text'=>'133', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,742,387,742,281,800,281,800,387, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '132'
-  $floorItems['132'] = i
-  TkcText.new(w,771,334, 'text'=>'132', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,800,168,800,280,699,280,699,168, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '134'
-  $floorItems['134'] = i
-  TkcText.new(w,749.5,224, 'text'=>'134', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,726,131,726,166,800,166,800,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '135'
-  $floorItems['135'] = i
-  TkcText.new(w,763,148.5, 'text'=>'135', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,340,360,335,363,331,365,326,366,304,366,
-                     304,312,396,312,396,288,400,288,404,288,
-                     409,290,413,292,418,297,421,302,422,309,
-                     421,318,417,325,411,330,405,332,397,333,
-                     344,333,340,334,336,336,335,338,332,342,
-                     331,347,332,351,334,354,336,357,341,359, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'Ramona Stair'
-  $floorItems['Ramona Stair'] = i
-  TkcText.new(w,368,323, 'text'=>'Ramona Stair', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,30,23,30,5,93,5,98,5,104,7,110,10,116,16,119,20,
-                     122,28,123,32,123,68,220,68,220,87,90,87,90,23, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'University Stair'
-  $floorItems['University Stair'] = i
-  TkcText.new(w,155,77.5, 'text'=>'University Stair', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,282,37,295,40,312,49,323,56,337,70,352,56,
-                     358,48,363,39,365,29,348,25,335,22,321,14,
-                     300,5,283,1,260,0,246,0,242,2,236,4,231,8,
-                     227,13,223,17,221,22,220,34,260,34, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'Plaza Stair'
-  $floorItems['Plaza Stair'] = i
-  TkcText.new(w,317.5,28.5, 'text'=>'Plaza Stair', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,220,34,260,34,282,37,295,40,312,49,
-                     323,56,337,70,350,83,365,94,377,100,
-                     386,104,386,128,220,128, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'Plaza Deck'
-  $floorItems['Plaza Deck'] = i
-  TkcText.new(w,303,81, 'text'=>'Plaza Deck', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,257,336,77,336,6,336,6,301,77,301,77,310,257,310,
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '106'
-  $floorItems['106'] = i
-  TkcText.new(w,131.5,318.5, 'text'=>'106', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,146,110,162,110,162,91,130,91,130,115,95,115,
-                     95,128,114,128,114,151,157,151,157,153,112,153,
-                     112,130,97,130,97,168,175,168,175,131,146,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '119'
-  $floorItems['119'] = i
-  TkcText.new(w,143.5,133, 'text'=>'119', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  TkcLine.new(w,155,191,155,189, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,155,177,155,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,96,129,96,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,78,169,176,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,176,247,176,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,340,206,307,206, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,340,187,340,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,340,210,340,201, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,340,247,340,224, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,340,241,307,241, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,376,246,376,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,307,247,307,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,376,170,307,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,315,129,315,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,147,129,176,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,202,133,176,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,398,129,315,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,258,352,258,387, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,60,387,60,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,0,337,0,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,60,391,0,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,3,114,3,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,258,387,60,387, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,237,52,273, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,189,52,225, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,140,52,177, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,395,306,395,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,531,254,398,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,475,178,475,238, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,502,162,398,162, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,398,129,398,188, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,383,188,376,188, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,408,188,408,194, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,398,227,398,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,408,227,398,227, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,408,222,408,227, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,408,206,408,210, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,408,208,475,208, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,484,278,484,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,484,311,508,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,508,327,508,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,559,327,508,327, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,644,391,559,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,644,389,644,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,514,205,475,205, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,496,189,496,187, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,559,129,484,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,484,162,484,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,725,133,559,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,559,129,559,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,725,149,725,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,725,129,802,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,802,389,802,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,739,167,802,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,396,188,408,188, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,0,337,9,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,58,337,21,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,43,391,43,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,105,337,75,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,91,387,91,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,154,337,117,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,139,387,139,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,227,337,166,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,258,337,251,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,258,328,302,328, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,302,355,302,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,395,311,302,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,484,278,395,278, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,395,294,395,278, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,473,278,473,275, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,473,256,473,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,533,257,531,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,553,276,551,274, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,698,276,553,276, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,559,391,559,327, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,802,389,644,389, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,741,314,741,389, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,698,280,698,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,707,280,698,280, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,802,280,731,280, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,741,280,741,302, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,698,167,727,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,725,137,725,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,514,254,514,175, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,496,175,514,175, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,502,175,502,162, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,475,166,475,162, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,496,176,496,175, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,491,189,496,189, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,491,205,491,189, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,487,238,475,238, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,487,240,487,238, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,487,252,487,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,315,133,304,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,256,133,280,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,78,247,270,247, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,307,247,294,247, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,214,133,232,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,217,247,217,266, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,217,309,217,291, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,217,309,172,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,154,309,148,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,175,300,175,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,151,300,175,300, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,151,247,151,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,78,237,78,265, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,78,286,78,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,106,309,78,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,130,309,125,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,99,309,99,247, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,127,299,99,299, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,127,309,127,299, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,155,191,137,191, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,137,169,137,191, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,78,171,78,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,78,190,78,218, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,86,192,86,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,86,192,78,192, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,301,3,301, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,286,52,301, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,252,3,252, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,203,3,203, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,3,156,52,156, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,8,25,8,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,63,114,3,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,75,114,97,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,108,114,129,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,129,114,129,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,114,52,128, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,132,89,88,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,88,25,88,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,88,114,88,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,218,89,144,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,147,111,147,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,162,111,147,111, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,162,109,162,111, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,162,96,162,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,218,89,218,94, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,218,89,218,119, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,8,25,88,25, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,258,337,258,328, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,113,129,96,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,302,355,258,355, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,386,104,386,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,377,100,386,104, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,365,94,377,100, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,350,83,365,94, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,337,70,350,83, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,337,70,323,56, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,312,49,323,56, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,295,40,312,49, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,282,37,295,40, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,260,34,282,37, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,253,34,260,34, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,386,128,386,104, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,113,152,156,152, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,113,152,156,152, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,113,152,113,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-end
-
-# floor_fg2 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the foreground information for the second
-# floor (office outlines and numbers).
-#
-# Arguments:
-# w -           The canvas window.
-# color -       Color to use for drawing foreground information.
-
-def floor_fg2(w,color)
-  i = TkcPolygon.new(w,748,188,755,188,755,205,758,205,758,222,
-                     800,222,800,168,748,168, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '238'
-  $floorItems['238'] = i
-  TkcText.new(w,774,195, 'text'=>'238', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,726,188,746,188,746,166,800,166,800,131,726,131,
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '237'
-  $floorItems['237'] = i
-  TkcText.new(w,763,148.5, 'text'=>'237', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,497,187,497,204,559,204,559,324,641,324,
-                     643,324,643,291,641,291,641,205,696,205,
-                     696,291,694,291,694,314,715,314,715,291,
-                     715,205,755,205,755,190,724,190,724,187, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '246'
-  $floorItems['246'] = i
-  TkcText.new(w,600,264, 'text'=>'246', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,694,279,643,279,643,314,694,314, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '247'
-  $floorItems['247'] = i
-  TkcText.new(w,668.5,296.5, 'text'=>'247', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,232,250,308,250,308,242,339,242,339,246,
-                     397,246,397,255,476,255,476,250,482,250,559,250,
-                     559,274,482,274,482,278,396,278,396,274,232,274, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '202'
-  $floorItems['202'] = i
-  TkcText.new(w,285.5,260, 'text'=>'202', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,53,228,53,338,176,338,233,338,233,196,
-                     306,196,306,180,175,180,175,169,156,169,
-                     156,196,176,196,176,228, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '206'
-  $floorItems['206'] = i
-  TkcText.new(w,143,267, 'text'=>'206', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,277,6,277,6,338,51,338, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '212'
-  $floorItems['212'] = i
-  TkcText.new(w,28.5,307.5, 'text'=>'212', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,557,276,486,276,486,309,510,309,510,325,557,325, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '245'
-  $floorItems['245'] = i
-  TkcText.new(w,521.5,300.5, 'text'=>'245', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,560,389,599,389,599,326,560,326, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '244'
-  $floorItems['244'] = i
-  TkcText.new(w,579.5,357.5, 'text'=>'244', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,601,389,601,326,643,326,643,389, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '243'
-  $floorItems['243'] = i
-  TkcText.new(w,622,357.5, 'text'=>'243', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,688,316,645,316,645,365,688,365, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '242'
-  $floorItems['242'] = i
-  TkcText.new(w,666.5,340.5, 'text'=>'242', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,802,367,759,367,759,226,802,226, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = 'Barbecue Deck'
-  $floorItems['Barbecue Deck'] = i
-  TkcText.new(w,780.5,296.5, 'text'=>'Barbecue Deck', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,755,262,755,314,717,314,717,262, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '240'
-  $floorItems['240'] = i
-  TkcText.new(w,736,288, 'text'=>'240', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,755,316,689,316,689,365,755,365, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '241'
-  $floorItems['241'] = i
-  TkcText.new(w,722,340.5, 'text'=>'241', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,755,206,717,206,717,261,755,261, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '239'
-  $floorItems['239'] = i
-  TkcText.new(w,736,233.5, 'text'=>'239', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,695,277,643,277,643,206,695,206, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '248'
-  $floorItems['248'] = i
-  TkcText.new(w,669,241.5, 'text'=>'248', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,676,135,676,185,724,185,724,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '236'
-  $floorItems['236'] = i
-  TkcText.new(w,700,160, 'text'=>'236', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,675,135,635,135,635,145,628,145,628,185,675,185, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '235'
-  $floorItems['235'] = i
-  TkcText.new(w,651.5,160, 'text'=>'235', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,626,143,633,143,633,135,572,135,
-                     572,143,579,143,579,185,626,185, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '234'
-  $floorItems['234'] = i
-  TkcText.new(w,606,160, 'text'=>'234', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,557,135,571,135,571,145,578,145,
-                     578,185,527,185,527,131,557,131, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '233'
-  $floorItems['233'] = i
-  TkcText.new(w,552.5,158, 'text'=>'233', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,476,249,557,249,557,205,476,205,
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '230'
-  $floorItems['230'] = i
-  TkcText.new(w,516.5,227, 'text'=>'230', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,476,164,486,164,486,131,525,131,525,185,476,185, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '232'
-  $floorItems['232'] = i
-  TkcText.new(w,500.5,158, 'text'=>'232', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,476,186,495,186,495,204,476,204, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '229'
-  $floorItems['229'] = i
-  TkcText.new(w,485.5,195, 'text'=>'229', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,474,207,409,207,409,187,399,187,399,164,474,164, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '227'
-  $floorItems['227'] = i
-  TkcText.new(w,436.5,185.5, 'text'=>'227', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,399,228,399,253,474,253,474,209,409,209,409,228, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '228'
-  $floorItems['228'] = i
-  TkcText.new(w,436.5,231, 'text'=>'228', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,397,246,397,226,407,226,407,189,377,189,377,246, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '226'
-  $floorItems['226'] = i
-  TkcText.new(w,392,217.5, 'text'=>'226', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,377,169,316,169,316,131,397,131,397,188,377,188, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '225'
-  $floorItems['225'] = i
-  TkcText.new(w,356.5,150, 'text'=>'225', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,234,198,306,198,306,249,234,249, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '224'
-  $floorItems['224'] = i
-  TkcText.new(w,270,223.5, 'text'=>'224', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,270,179,306,179,306,170,314,170,314,135,270,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '223'
-  $floorItems['223'] = i
-  TkcText.new(w,292,157, 'text'=>'223', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,268,179,221,179,221,135,268,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '222'
-  $floorItems['222'] = i
-  TkcText.new(w,244.5,157, 'text'=>'222', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,177,179,219,179,219,135,177,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '221'
-  $floorItems['221'] = i
-  TkcText.new(w,198,157, 'text'=>'221', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,299,327,349,327,349,284,341,284,341,276,299,276, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '204'
-  $floorItems['204'] = i
-  TkcText.new(w,324,301.5, 'text'=>'204', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,234,276,297,276,297,327,257,327,257,338,234,338, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '205'
-  $floorItems['205'] = i
-  TkcText.new(w,265.5,307, 'text'=>'205', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,256,385,256,340,212,340,212,385,
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '207'
-  $floorItems['207'] = i
-  TkcText.new(w,234,362.5, 'text'=>'207', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,210,340,164,340,164,385,210,385, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '208'
-  $floorItems['208'] = i
-  TkcText.new(w,187,362.5, 'text'=>'208', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,115,340,162,340,162,385,115,385, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '209'
-  $floorItems['209'] = i
-  TkcText.new(w,138.5,362.5, 'text'=>'209', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,89,228,89,156,53,156,53,228, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '217'
-  $floorItems['217'] = i
-  TkcText.new(w,71,192, 'text'=>'217', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,89,169,97,169,97,190,89,190, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '217A'
-  $floorItems['217A'] = i
-  TkcText.new(w,93,179.5, 'text'=>'217A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,89,156,89,168,95,168,95,135,53,135,53,156, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '216'
-  $floorItems['216'] = i
-  TkcText.new(w,71,145.5, 'text'=>'216', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,179,51,135,6,135,6,179, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '215'
-  $floorItems['215'] = i
-  TkcText.new(w,28.5,157, 'text'=>'215', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,227,6,227,6,180,51,180, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '214'
-  $floorItems['214'] = i
-  TkcText.new(w,28.5,203.5, 'text'=>'214', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,275,6,275,6,229,51,229, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '213'
-  $floorItems['213'] = i
-  TkcText.new(w,28.5,252, 'text'=>'213', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,114,340,67,340,67,385,114,385, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '210'
-  $floorItems['210'] = i
-  TkcText.new(w,90.5,362.5, 'text'=>'210', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,59,389,59,385,65,385,65,340,1,340,1,389, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '211'
-  $floorItems['211'] = i
-  TkcText.new(w,33,364.5, 'text'=>'211', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,393,309,350,309,350,282,342,282,342,276,393,276, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '203'
-  $floorItems['203'] = i
-  TkcText.new(w,367.5,292.5, 'text'=>'203', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,99,191,91,191,91,226,174,226,174,198,
-                     154,198,154,192,109,192,109,169,99,169, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '220'
-  $floorItems['220'] = i
-  TkcText.new(w,132.5,208.5, 'text'=>'220', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,339,205,307,205,307,171,339,171, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = 'Priv Lift2'
-  $floorItems['Priv Lift2'] = i
-  TkcText.new(w,323,188, 'text'=>'Priv Lift2', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,307,240,339,240,339,206,307,206, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = 'Pub Lift 2'
-  $floorItems['Pub Lift 2'] = i
-  TkcText.new(w,323,223, 'text'=>'Pub Lift 2', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,175,168,97,168,97,131,175,131, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '218'
-  $floorItems['218'] = i
-  TkcText.new(w,136,149.5, 'text'=>'218', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,154,191,111,191,111,169,154,169, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '219'
-  $floorItems['219'] = i
-  TkcText.new(w,132.5,180, 'text'=>'219', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,375,246,375,172,341,172,341,246, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '201'
-  $floorItems['201'] = i
-  TkcText.new(w,358,209, 'text'=>'201', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  TkcLine.new(w,641,186,678,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,350,757,367, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,634,133,634,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,634,144,627,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,572,133,572,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,572,144,579,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,398,129,398,162, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,174,197,175,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,175,197,175,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,206,757,221, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,396,188,408,188, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,727,189,725,189, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,747,167,802,167, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,747,167,747,189, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,755,189,739,189, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,769,224,757,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,802,224,802,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,802,129,725,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,725,189,725,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,725,186,690,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,676,133,676,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,627,144,627,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,629,186,593,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,579,144,579,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,559,129,559,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,725,133,559,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,484,162,484,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,559,129,484,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,526,129,526,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,540,186,581,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,528,186,523,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,511,186,475,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,496,190,496,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,496,205,496,202, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,475,205,527,205, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,558,205,539,205, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,558,205,558,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,558,249,475,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,662,206,642,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,695,206,675,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,695,278,642,278, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,642,291,642,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,695,291,695,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,716,208,716,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,206,716,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,221,757,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,793,224,802,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,262,716,262, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,716,220,716,264, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,716,315,716,276, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,315,703,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,325,757,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,367,644,367, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,689,367,689,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,647,315,644,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,659,315,691,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,600,325,600,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,627,325,644,325, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,644,391,644,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,615,325,575,325, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,644,391,558,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,563,325,558,325, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,558,391,558,314, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,558,327,508,327, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,558,275,484,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,558,302,558,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,508,327,508,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,484,311,508,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,484,275,484,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,475,208,408,208, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,408,206,408,210, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,408,222,408,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,408,227,398,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,398,227,398,254, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,408,188,408,194, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,383,188,376,188, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,398,188,398,162, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,398,162,484,162, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,475,162,475,254, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,398,254,475,254, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,484,280,395,280, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,395,311,395,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,307,197,293,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,278,197,233,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,233,197,233,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,307,179,284,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,233,249,278,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,269,179,269,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,220,179,220,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,155,191,110,191, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,90,190,98,190, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,98,169,98,190, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,52,133,52,165, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,52,214,52,177, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,52,226,52,262, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,52,274,52,276, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,234,275,234,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,226,339,258,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,211,387,211,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,214,339,177,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,258,387,60,387, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,3,133,3,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,165,339,129,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,117,339,80,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,68,339,59,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,0,339,46,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,60,391,0,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,0,339,0,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,60,387,60,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,258,329,258,387, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,350,329,258,329, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,395,311,350,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,398,129,315,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,176,133,315,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,176,129,96,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,3,133,96,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,66,387,66,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,115,387,115,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,163,387,163,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,234,275,276,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,288,275,309,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,298,275,298,329, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,341,283,350,283, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,321,275,341,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,375,275,395,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,315,129,315,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,376,170,307,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,307,250,307,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,376,245,376,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,340,241,307,241, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,340,245,340,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,340,210,340,201, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,340,187,340,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,340,206,307,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,293,250,307,250, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,271,179,238,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,226,179,195,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,176,129,176,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,182,179,176,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,174,169,176,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,162,169,90,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,96,169,96,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,175,227,90,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,90,190,90,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,52,179,3,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,52,228,3,228, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,52,276,3,276, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,155,177,155,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,110,191,110,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,155,189,155,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,350,283,350,329, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,162,197,155,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,341,275,341,283, 'fill'=>color, 'tags'=>['floor2','wall'])
-end
-
-# floor_fg3 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the foreground information for the third
-# floor (office outlines and numbers).
-#
-# Arguments:
-# w -           The canvas window.
-# color -       Color to use for drawing foreground information.
-
-def floor_fg3(w,color)
-  i = TkcPolygon.new(w,89,228,89,180,70,180,70,228,
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '316'
-  $floorItems['316'] = i
-  TkcText.new(w,79.5,204, 'text'=>'316', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,115,368,162,368,162,323,115,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '309'
-  $floorItems['309'] = i
-  TkcText.new(w,138.5,345.5, 'text'=>'309', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,164,323,164,368,211,368,211,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '308'
-  $floorItems['308'] = i
-  TkcText.new(w,187.5,345.5, 'text'=>'308', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,256,368,212,368,212,323,256,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '307'
-  $floorItems['307'] = i
-  TkcText.new(w,234,345.5, 'text'=>'307', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,244,276,297,276,297,327,260,327,260,321,244,321, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '305'
-  $floorItems['305'] = i
-  TkcText.new(w,270.5,301.5, 'text'=>'305', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,251,219,251,203,244,203,244,219,
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '324B'
-  $floorItems['324B'] = i
-  TkcText.new(w,247.5,211, 'text'=>'324B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,251,249,244,249,244,232,251,232, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '324A'
-  $floorItems['324A'] = i
-  TkcText.new(w,247.5,240.5, 'text'=>'324A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,223,135,223,179,177,179,177,135, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '320'
-  $floorItems['320'] = i
-  TkcText.new(w,200,157, 'text'=>'320', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,114,368,114,323,67,323,67,368, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '310'
-  $floorItems['310'] = i
-  TkcText.new(w,90.5,345.5, 'text'=>'310', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,23,277,23,321,68,321,68,277, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '312'
-  $floorItems['312'] = i
-  TkcText.new(w,45.5,299, 'text'=>'312', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,23,229,68,229,68,275,23,275, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '313'
-  $floorItems['313'] = i
-  TkcText.new(w,45.5,252, 'text'=>'313', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,68,227,23,227,23,180,68,180, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '314'
-  $floorItems['314'] = i
-  TkcText.new(w,40.5,203.5, 'text'=>'314', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,95,179,95,135,23,135,23,179, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '315'
-  $floorItems['315'] = i
-  TkcText.new(w,59,157, 'text'=>'315', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,99,226,99,204,91,204,91,226, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '316B'
-  $floorItems['316B'] = i
-  TkcText.new(w,95,215, 'text'=>'316B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,91,202,99,202,99,180,91,180, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '316A'
-  $floorItems['316A'] = i
-  TkcText.new(w,95,191, 'text'=>'316A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,97,169,109,169,109,192,154,192,154,198,
-                     174,198,174,226,101,226,101,179,97,179, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '319'
-  $floorItems['319'] = i
-  TkcText.new(w,141.5,209, 'text'=>'319', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,65,368,58,368,58,389,1,389,1,333,23,333,23,323,65,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '311'
-  $floorItems['311'] = i
-  TkcText.new(w,29.5,361, 'text'=>'311', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,154,191,111,191,111,169,154,169, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '318'
-  $floorItems['318'] = i
-  TkcText.new(w,132.5,180, 'text'=>'318', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,175,168,97,168,97,131,175,131, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '317'
-  $floorItems['317'] = i
-  TkcText.new(w,136,149.5, 'text'=>'317', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,274,194,274,221,306,221,306,194, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '323'
-  $floorItems['323'] = i
-  TkcText.new(w,290,207.5, 'text'=>'323', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,306,222,274,222,274,249,306,249, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '325'
-  $floorItems['325'] = i
-  TkcText.new(w,290,235.5, 'text'=>'325', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,263,179,224,179,224,135,263,135, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '321'
-  $floorItems['321'] = i
-  TkcText.new(w,243.5,157, 'text'=>'321', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,314,169,306,169,306,192,273,192,
-                     264,181,264,135,314,135, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '322'
-  $floorItems['322'] = i
-  TkcText.new(w,293.5,163.5, 'text'=>'322', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,307,240,339,240,339,206,307,206, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = 'Pub Lift3'
-  $floorItems['Pub Lift3'] = i
-  TkcText.new(w,323,223, 'text'=>'Pub Lift3', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,339,205,307,205,307,171,339,171, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = 'Priv Lift3'
-  $floorItems['Priv Lift3'] = i
-  TkcText.new(w,323,188, 'text'=>'Priv Lift3', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,350,284,376,284,376,276,397,276,397,309,350,309, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '303'
-  $floorItems['303'] = i
-  TkcText.new(w,373.5,292.5, 'text'=>'303', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,272,203,272,249,252,249,252,230,
-                     244,230,244,221,252,221,252,203, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '324'
-  $floorItems['324'] = i
-  TkcText.new(w,262,226, 'text'=>'324', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,299,276,299,327,349,327,349,284,341,284,341,276, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '304'
-  $floorItems['304'] = i
-  TkcText.new(w,324,301.5, 'text'=>'304', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,375,246,375,172,341,172,341,246, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '301'
-  $floorItems['301'] = i
-  TkcText.new(w,358,209, 'text'=>'301', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,397,246,377,246,377,185,397,185, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '327'
-  $floorItems['327'] = i
-  TkcText.new(w,387,215.5, 'text'=>'327', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,316,131,316,169,377,169,377,185,397,185,397,131, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '326'
-  $floorItems['326'] = i
-  TkcText.new(w,365.5,150, 'text'=>'326', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,308,251,242,251,242,274,342,274,342,282,375, 282,
-                     375,274,397,274,397,248,339,248,339,242,308,242, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '302'
-  $floorItems['302'] = i
-  TkcText.new(w,319.5,261, 'text'=>'302', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,70,321,242,321,242,200,259,200,259,203,272,203,
-                     272,193,263,180,242,180,175,180,175,169,156,169,
-                     156,196,177,196,177,228,107,228,70,228,70,275,107,275,
-                     107,248,160,248,160,301,107,301,107,275,70,275, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '306'
-  $floorItems['306'] = i
-  TkcText.new(w,200.5,284.5, 'text'=>'306', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  TkcLine.new(w,341,275,341,283, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,162,197,155,197, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,396,247,399,247, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,399,129,399,311, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,258,202,243,202, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,350,283,350,329, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,251,231,243,231, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,243,220,251,220, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,243,250,243,202, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,155,197,155,190, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,110,192,110,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,155,192,110,192, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,155,177,155,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,176,197,176,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,69,280,69,274, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,21,276,69,276, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,69,262,69,226, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,21,228,69,228, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,21,179,75,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,69,179,69,214, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,90,220,90,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,90,204,90,202, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,90,203,100,203, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,90,187,90,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,90,227,176,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,100,179,100,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,100,179,87,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,96,179,96,129, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,162,169,96,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,173,169,176,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,182,179,176,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,176,129,176,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,195,179,226,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,224,133,224,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,264,179,264,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,238,179,264,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,273,207,273,193, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,273,235,273,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,273,224,273,219, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,273,193,307,193, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,273,222,307,222, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,273,250,307,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,384,247,376,247, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,340,206,307,206, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,340,187,340,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,340,210,340,201, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,340,247,340,224, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,340,241,307,241, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,376,247,376,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,307,250,307,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,376,170,307,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,315,129,315,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,376,283,366,283, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,376,283,376,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,399,275,376,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,341,275,320,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,341,283,350,283, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,298,275,298,329, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,308,275,298,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,243,322,243,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,243,275,284,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,258,322,226,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,212,370,212,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,214,322,177,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,163,370,163,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,165,322,129,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,84,322,117,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,71,322,64,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,115,322,115,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,66,322,66,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,52,322,21,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,21,331,0,331, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,21,331,21,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,96,133,21,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,176,129,96,129, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,315,133,176,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,315,129,399,129, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,399,311,350,311, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,350,329,258,329, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,258,322,258,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,60,370,258,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,60,370,60,391, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,0,391,0,331, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,60,391,0,391, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,307,250,307,242, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,273,250,307,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,258,250,243,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-end
-
-# Below is the "main program" that creates the floorplan demonstration.
-
-# toplevel widget
-if defined?($floor_demo) && $floor_demo
-  $floor_demo.destroy 
-  $floor_demo = nil
-end
-
-# demo toplevel widget
-$floor_demo = TkToplevel.new {|w|
-  title("Floorplan Canvas Demonstration")
-  iconname("Floorplan")
-  positionWindow(w)
-  geometry('+20+20')
-  minsize(100,100)
-}
-
-base_frame = TkFrame.new($floor_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'8i', 'justify'=>'left', 
-            'text'=>"This window contains a canvas widget showing the floorplan of Digital Equipment Corporation's Western Research Laboratory.  It has three levels.  At any given time one of the levels is active, meaning that you can see its room structure.  To activate a level, click the left mouse button anywhere on it.  As the mouse moves over the active level, the room under the mouse lights up and its room number appears in the \"Room:\" entry.  You can also type a room number in the entry and the room will light up."){
-  pack('side'=>'top')
-}
-
-# frame
-$floor_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $floor_demo
-      $floor_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'floor'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$floor_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# 
-$floorLabels = {}
-$floorItems = {}
-
-# canvas 
-if $tk_version =~ /^4\.[01]/
-  $floor_canvas_frame = TkFrame.new(base_frame,'bd'=>2,'relief'=>'sunken',
-                                    'highlightthickness'=>2)
-  $floor_canvas = TkCanvas.new($floor_canvas_frame, 
-                               'width'=>900, 'height'=>500, 'borderwidth'=>0, 
-                               'highlightthickness'=>0) {|c|
-    TkScrollbar.new(base_frame, 'orient'=>'horiz', 
-                    'command'=>proc{|*args| c.xview(*args)}){|hs|
-      c.xscrollcommand(proc{|first,last| hs.set first,last})
-      pack('side'=>'bottom', 'fill'=>'x')
-    }
-    TkScrollbar.new(base_frame, 'command'=>proc{|*args| c.yview(*args)}){|vs|
-      c.yscrollcommand(proc{|first,last| vs.set first,last})
-      pack('side'=>'right', 'fill'=>'y')
-    }
-  }
-  $floor_canvas_frame.pack('side'=>'top','fill'=>'both', 'expand'=>'yes')
-  $floor_canvas.pack('expand'=>'yes', 'fill'=>'both')
-
-else
-  TkFrame.new(base_frame) {|f|
-    pack('side'=>'top', 'fill'=>'both', 'expand'=>'yes')
-
-    h = TkScrollbar.new(f, 'highlightthickness'=>0, 'orient'=>'horizontal')
-    v = TkScrollbar.new(f, 'highlightthickness'=>0, 'orient'=>'vertical')
-
-    TkFrame.new(f, 'bd'=>2, 'relief'=>'sunken') {|f1|
-      $floor_canvas = TkCanvas.new(f1, 'width'=>900, 'height'=>500, 
-                                   'borderwidth'=>0, 
-                                   'highlightthickness'=>0) {
-        xscrollcommand(proc{|first,last| h.set first,last})
-        yscrollcommand(proc{|first,last| v.set first,last})
-        pack('expand'=>'yes', 'fill'=>'both')
-      }
-      grid('padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>0, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    }
-
-    v.grid('padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>1, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    h.grid('padx'=>1, 'pady'=>1, 'row'=>1, 'column'=>0, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-
-    TkGrid.rowconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
-    TkGrid.columnconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
-
-    pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>1)
-
-    v.command(proc{|*args| $floor_canvas.yview(*args)})
-    h.command(proc{|*args| $floor_canvas.xview(*args)})
-  }
-end
-
-
-# Create an entry for displaying and typing in current room.
-
-$currentRoom = TkVariable.new
-$floor_entry = TkEntry.new($floor_canvas, 'width'=>10, 'relief'=>'sunken', 
-                           'bd'=>2, 'textvariable'=>$currentRoom)
-
-# Choose colors, then fill in the floorplan.
-
-$floor_colors = {}
-if TkWinfo.depth($floor_canvas) > 1
-  $floor_colors['bg1'] = '#a9c1da'
-  $floor_colors['outline1'] = '#77889a'
-  $floor_colors['bg2'] = '#9ab0c6'
-  $floor_colors['outline2'] = '#687786'
-  $floor_colors['bg3'] = '#8ba0b3'
-  $floor_colors['outline3'] = '#596673'
-  $floor_colors['offices'] = 'Black'
-  $floor_colors['active'] = '#c4d1df'
-else
-  $floor_colors['bg1'] = 'white'
-  $floor_colors['outline1'] = 'black'
-  $floor_colors['bg2'] = 'white'
-  $floor_colors['outline2'] = 'black'
-  $floor_colors['bg3'] = 'white'
-  $floor_colors['outline3'] = 'black'
-  $floor_colors['offices'] = 'Black'
-  $floor_colors['active'] = 'black'
-end
-
-$activeFloor = ''
-floorDisplay $floor_canvas,3
-
-# Set up event bindings for canvas:
-
-$floor_canvas.itembind('floor1', '1', proc{floorDisplay $floor_canvas,1})
-$floor_canvas.itembind('floor2', '1', proc{floorDisplay $floor_canvas,2})
-$floor_canvas.itembind('floor3', '1', proc{floorDisplay $floor_canvas,3})
-$floor_canvas.itembind('room', 'Enter', proc{newRoom $floor_canvas})
-$floor_canvas.itembind('room', 'Leave', proc{$currentRoom.value = ''})
-$floor_canvas.bind('2', proc{|x,y| $floor_canvas.scan_mark x,y}, '%x %y')
-$floor_canvas.bind('B2-Motion', 
-                   proc{|x,y| $floor_canvas.scan_dragto x,y}, '%x %y')
-$floor_canvas.bind('Destroy', proc{$currentRoom.unset})
-$currentRoom.value = ''
-$currentRoom.trace('w',proc{roomChanged $floor_canvas})
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/floor2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/floor2.rb
deleted file mode 100644 (file)
index 88b07ae..0000000
+++ /dev/null
@@ -1,1722 +0,0 @@
-%# floor2.rb
-#
-# This demonstration script creates a canvas widet that displays the
-# floorplan for DEC's Western Research Laboratory.
-#
-# floorDisplay widget demo (called by 'widget')
-#
-
-# floorDisplay2 --
-# Recreate the floorplan display in the canvas given by "w".  The
-# floor given by "active" is displayed on top with its office structure
-# visible.
-#
-# Arguments:
-# w -           Name of the canvas window.
-# active -      Number of active floor (1, 2, or 3).
-
-def floorDisplay2(w,active)
-  return if $activeFloor2 == active
-
-  w.delete('all')
-  $activeFloor2 = active
-
-  # First go through the three floors, displaying the backgrounds for 
-  # each floor.
-
-  floor2_bg1(w,$floor2_colors['bg1'],$floor2_colors['outline1'])
-  floor2_bg2(w,$floor2_colors['bg2'],$floor2_colors['outline2'])
-  floor2_bg3(w,$floor2_colors['bg3'],$floor2_colors['outline3'])
-
-  # Raise the background for the active floor so that it's on top.
-
-  w.raise("floor#{active}")
-
-  # Create a dummy item just to mark this point in the display list, 
-  # so we can insert highlights here.
-
-  w.create(TkcRectangle,0,100,1,101,'fill'=>'','outline'=>'','tags'=>'marker')
-
-  # Add the walls and labels for the active floor, along with 
-  # transparent polygons that define the rooms on the floor.
-  # Make sure that the room polygons are on top.
-
-  $floorLabels2.clear
-  $floorItems2.clear
-  send("floor2_fg#{active}", w, $floor2_colors['offices'])
-  w.raise('room')
-
-  # Offset the floors diagonally from each other.
-
-  w.move('floor1', '2c', '2c')
-  w.move('floor2', '1c', '1c')
-
-  # Create items for the room entry and its label.
-  w.create(TkcWindow, 600, 100, 'anchor'=>'w', 'window'=>$floor2_entry)
-  w.create(TkcText, 600, 100, 'anchor'=>'e', 'text'=>"Room: ")
-  w['scrollregion'] = w.bbox('all')
-end
-
-# newRoom2 --
-# This method is invoked whenever the mouse enters a room
-# in the floorplan.  It changes tags so that the current room is
-# highlighted.
-#
-# Arguments:
-# w  -          The name of the canvas window.
-
-def newRoom2(w)
-  id = w.find_withtag('current')[0]
-  $currentRoom2.value = $floorLabels2[id.id] if id != ""
-  Tk.update(true)
-end
-
-# roomChanged2 --
-# This method is invoked whenever the currentRoom variable changes.
-# It highlights the current room and unhighlights any previous room.
-#
-# Arguments:
-# w -           The canvas window displaying the floorplan.
-# args -        Not used.
-
-def roomChanged2(w,*args)
-  w.delete('highlight')
-  item = $floorItems2[$currentRoom2.value]
-  return if item == nil
-  new = TkcPolygon.new(w, *(w.coords(item)))
-  new.configure('fill'=>$floor2_colors['active'], 'tags'=>'highlight')
-  w.raise(new, 'marker')
-end
-
-# floor2_bg1 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the background information for the first
-# floor.
-#
-# Arguments:
-# w -           The canvas window.
-# fill -        Fill color to use for the floor's background.
-# outline -     Color to use for the floor's outline.
-
-def floor2_bg1(w,fill,outline)
-  w.create(TkcPolygon,347,80,349,82,351,84,353,85,363,92,375,99,386,104,
-                 386,129,398,129,398,162,484,162,484,129,559,129,559,133,725,
-                 133,725,129,802,129,802,389,644,389,644,391,559,391,559,327,
-                 508,327,508,311,484,311,484,278,395,278,395,288,400,288,404,
-                 288,409,290,413,292,418,297,421,302,422,309,421,318,417,325,
-                 411,330,405,332,397,333,344,333,340,334,336,336,335,338,332,
-                 342,331,347,332,351,334,354,336,357,341,359,340,360,335,363,
-                 331,365,326,366,304,366,304,355,258,355,258,387,60,387,60,391,
-                 0,391,0,337,3,337,3,114,8,114,8,25,30,25,30,5,93,5,98,5,104,7,
-                 110,10,116,16,119,20,122,28,123,32,123,68,220,68,220,34,221,
-                 22,223,17,227,13,231,8,236,4,242,2,246,0,260,0,283,1,300,5,
-                 321,14,335,22,348,25,365,29,363,39,358,48,352,56,337,70,
-                 344,76,347,80, 'tags'=>['floor1','bg'], 'fill'=>fill)
-  w.create(TkcLine,386,129,398,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,258,355,258,387, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,60,387,60,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,0,337,0,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,60,391,0,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,3,114,3,337, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,258,387,60,387, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,484,162,398,162, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,398,162,398,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,484,278,484,311, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,484,311,508,311, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,508,327,508,311, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,559,327,508,327, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,644,391,559,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,644,389,644,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,559,129,484,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,484,162,484,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,725,133,559,133, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,559,129,559,133, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,725,129,802,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,802,389,802,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,3,337,0,337, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,559,391,559,327, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,802,389,644,389, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,725,133,725,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,8,25,8,114, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,8,114,3,114, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,30,25,8,25, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,484,278,395,278, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,30,25,30,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,93,5,30,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,98,5,93,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,104,7,98,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,110,10,104,7, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,116,16,110,10, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,119,20,116,16, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,122,28,119,20, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,123,32,122,28, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,123,68,123,32, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,220,68,123,68, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,386,129,386,104, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,386,104,375,99, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,375,99,363,92, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,353,85,363,92, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,220,68,220,34, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,337,70,352,56, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,352,56,358,48, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,358,48,363,39, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,363,39,365,29, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,365,29,348,25, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,348,25,335,22, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,335,22,321,14, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,321,14,300,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,300,5,283,1, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,283,1,260,0, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,260,0,246,0, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,246,0,242,2, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,242,2,236,4, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,236,4,231,8, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,231,8,227,13, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,223,17,227,13, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,221,22,223,17, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,220,34,221,22, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,340,360,335,363, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,335,363,331,365, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,331,365,326,366, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,326,366,304,366, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,304,355,304,366, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,395,288,400,288, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,404,288,400,288, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,409,290,404,288, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,413,292,409,290, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,418,297,413,292, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,421,302,418,297, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,422,309,421,302, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,421,318,422,309, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,421,318,417,325, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,417,325,411,330, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,411,330,405,332, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,405,332,397,333, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,397,333,344,333, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,344,333,340,334, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,340,334,336,336, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,336,336,335,338, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,335,338,332,342, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,331,347,332,342, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,332,351,331,347, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,334,354,332,351, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,336,357,334,354, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,341,359,336,357, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,341,359,340,360, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,395,288,395,278, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,304,355,258,355, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,347,80,344,76, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,344,76,337,70, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,349,82,347,80, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,351,84,349,82, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,353,85,351,84, 'fill'=>outline, 'tags'=>['floor1','bg'])
-end
-
-# floor2_bg2 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the background information for the first
-# floor.
-#
-# Arguments:
-# w -           The canvas window.
-# fill -        Fill color to use for the floor's background.
-# outline -     Color to use for the floor's outline.
-
-def floor2_bg2(w,fill,outline)
-  w.create(TkcPolygon,559,129,484,129,484,162,398,162,398,129,315,129,
-                 315,133,176,133,176,129,96,129,96,133,3,133,3,339,0,339,0,391,
-                 60,391,60,387,258,387,258,329,350,329,350,311,395,311,395,280,
-                 484,280,484,311,508,311,508,327,558,327,558,391,644,391,644,
-                 367,802,367,802,129,725,129,725,133,559,133,559,129,
-                 'tags'=>['floor2','bg'], 'fill'=>fill)
-  w.create(TkcLine,350,311,350,329, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,398,129,398,162, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,802,367,802,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,802,129,725,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,725,133,725,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,559,129,559,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,559,133,725,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,484,162,484,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,559,129,484,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,802,367,644,367, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,644,367,644,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,644,391,558,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,558,327,558,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,558,327,508,327, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,508,327,508,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,484,311,508,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,484,280,484,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,398,162,484,162, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,484,280,395,280, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,395,280,395,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,258,387,60,387, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,3,133,3,339, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,3,339,0,339, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,60,391,0,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,0,339,0,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,60,387,60,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,258,329,258,387, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,350,329,258,329, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,395,311,350,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,398,129,315,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,176,133,315,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,176,129,96,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,3,133,96,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,315,133,315,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,176,133,176,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,96,133,96,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-end
-
-# floor2_bg3 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the background information for the first
-# floor.
-#
-# Arguments:
-# w -           The canvas window.
-# fill -        Fill color to use for the floor's background.
-# outline -     Color to use for the floor's outline.
-
-def floor2_bg3(w,fill,outline)
-  w.create(TkcPolygon,159,300,107,300,107,248,159,248,159,129,96,129,96,
-                 133,21,133,21,331,0,331,0,391,60,391,60,370,159,370,159,300,
-                 'tags'=>['floor3','bg'], 'fill'=>fill)
-  w.create(TkcPolygon,258,370,258,329,350,329,350,311,399,311,399,129,
-                 315,129,315,133,176,133,176,129,159,129,159,370,258,370,
-                 'tags'=>['floor3','bg'], 'fill'=>fill)
-  w.create(TkcLine,96,133,96,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,176,129,96,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,176,129,176,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,315,133,176,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,315,133,315,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,399,129,315,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,399,311,399,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,399,311,350,311, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,350,329,350,311, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,350,329,258,329, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,258,370,258,329, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,60,370,258,370, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,60,370,60,391, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,60,391,0,391, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,0,391,0,331, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,21,331,0,331, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,21,331,21,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,96,133,21,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,107,300,159,300,159,248,107,248,107,300, 
-              'fill'=>outline, 'tags'=>['floor3','bg'])
-end
-
-# floor2_fg1 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the foreground information for the first
-# floor (office outlines and numbers).
-#
-# Arguments:
-# w -           The canvas window.
-# color -       Color to use for drawing foreground information.
-
-def floor2_fg1(w,color)
-  i = TkcPolygon.new(w,375,246,375,172,341,172,341,246, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '101'
-  $floorItems2['101'] = i
-  w.create(TkcText,358,209, 'text'=>'101', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,307,240,339,240,339,206,307,206, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'Pub Lift1'
-  $floorItems2['Pub Lift1'] = i
-  w.create(TkcText,323,223, 'text'=>'Pub Lift1', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,339,205,307,205,307,171,339,171, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'Priv Lift1'
-  $floorItems2['Priv Lift1'] = i
-  w.create(TkcText,323,188, 'text'=>'Priv Lift1', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,42,389,42,337,1,337,1,389, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '110'
-  $floorItems2['110'] = i
-  w.create(TkcText,21.5,363, 'text'=>'110', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,59,389,59,385,90,385,90,337,44,337,44,389, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '109'
-  $floorItems2['109'] = i
-  w.create(TkcText,67,363, 'text'=>'109', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,51,300,51,253,6,253,6,300, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '111'
-  $floorItems2['111'] = i
-  w.create(TkcText,28.5,276.5, 'text'=>'111', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,98,248,98,309,79,309,79,248, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '117B'
-  $floorItems2['117B'] = i
-  w.create(TkcText,88.5,278.5, 'text'=>'117B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,51,251,51,204,6,204,6,251, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '112'
-  $floorItems2['112'] = i
-  w.create(TkcText,28.5,227.5, 'text'=>'112', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,6,156,51,156,51,203,6,203, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '113'
-  $floorItems2['113'] = i
-  w.create(TkcText,28.5,179.5, 'text'=>'113', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,85,169,79,169,79,192,85,192, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '117A'
-  $floorItems2['117A'] = i
-  w.create(TkcText,82,180.5, 'text'=>'117A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,77,302,77,168,53,168,53,302, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '117'
-  $floorItems2['117'] = i
-  w.create(TkcText,65,235, 'text'=>'117', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,51,155,51,115,6,115,6,155, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '114'
-  $floorItems2['114'] = i
-  w.create(TkcText,28.5,135, 'text'=>'114', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,95,115,53,115,53,168,95,168, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '115'
-  $floorItems2['115'] = i
-  w.create(TkcText,74,141.5, 'text'=>'115', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,87,113,87,27,10,27,10,113, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '116'
-  $floorItems2['116'] = i
-  w.create(TkcText,48.5,70, 'text'=>'116', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,89,91,128,91,128,113,89,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '118'
-  $floorItems2['118'] = i
-  w.create(TkcText,108.5,102, 'text'=>'118', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,178,128,178,132,216,132,216,91,
-                     163,91,163,112,149,112,149,128, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '120'
-  $floorItems2['120'] = i
-  w.create(TkcText,189.5,111.5, 'text'=>'120', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,79,193,87,193,87,169,136,169,136,192,
-                     156,192,156,169,175,169,175,246,79,246, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '122'
-  $floorItems2['122'] = i
-  w.create(TkcText,131,207.5, 'text'=>'122', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,138,169,154,169,154,191,138,191, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '121'
-  $floorItems2['121'] = i
-  w.create(TkcText,146,180, 'text'=>'121', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,99,300,126,300,126,309,99,309, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '106A'
-  $floorItems2['106A'] = i
-  w.create(TkcText,112.5,304.5, 'text'=>'106A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,128,299,128,309,150,309,150,248,99,248,99,299, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '105'
-  $floorItems2['105'] = i
-  w.create(TkcText,124.5,278.5, 'text'=>'105', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,174,309,174,300,152,300,152,309, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '106B'
-  $floorItems2['106B'] = i
-  w.create(TkcText,163,304.5, 'text'=>'106B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,176,299,176,309,216,309,216,248,152,248,152,299, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '104'
-  $floorItems2['104'] = i
-  w.create(TkcText,184,278.5, 'text'=>'104', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,138,385,138,337,91,337,91,385, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '108'
-  $floorItems2['108'] = i
-  w.create(TkcText,114.5,361, 'text'=>'108', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,256,337,140,337,140,385,256,385, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '107'
-  $floorItems2['107'] = i
-  w.create(TkcText,198,361, 'text'=>'107', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,300,353,300,329,260,329,260,353, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'Smoking'
-  $floorItems2['Smoking'] = i
-  w.create(TkcText,280,341, 'text'=>'Smoking', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,314,135,314,170,306,170,306,246,177,246,177,135, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '123'
-  $floorItems2['123'] = i
-  w.create(TkcText,245.5,190.5, 'text'=>'123', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,217,248,301,248,301,326,257,326,257,310,217,310, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '103'
-  $floorItems2['103'] = i
-  w.create(TkcText,259,287, 'text'=>'103', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,396,188,377,188,377,169,316,169,316,131,396,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '124'
-  $floorItems2['124'] = i
-  w.create(TkcText,356,150, 'text'=>'124', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,397,226,407,226,407,189,377,189,377,246,397,246, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '125'
-  $floorItems2['125'] = i
-  w.create(TkcText,392,217.5, 'text'=>'125', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,399,187,409,187,409,207,474,207,474,164,399,164, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '126'
-  $floorItems2['126'] = i
-  w.create(TkcText,436.5,185.5, 'text'=>'126', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,409,209,409,229,399,229,399,253,
-                     486,253,486,239,474,239,474,209, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '127'
-  $floorItems2['127'] = i
-  w.create(TkcText,436.5,'231', 'text'=>'127', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,501,164,501,174,495,174,495,188,
-                     490,188,490,204,476,204,476,164, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'MShower'
-  $floorItems2['MShower'] = i
-  w.create(TkcText,488.5,'184', 'text'=>'MShower', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,497,176,513,176,513,204,492,204,492,190,497,190, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'Closet'
-  $floorItems2['Closet'] = i
-  w.create(TkcText,502.5,190, 'text'=>'Closet', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,476,237,476,206,513,206,513,254,488,254,488,237, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'WShower'
-  $floorItems2['WShower'] = i
-  w.create(TkcText,494.5,230, 'text'=>'WShower', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,486,131,558,131,558,135,724,135,724,166,
-                     697,166,697,275,553,275,531,254,515,254,
-                     515,174,503,174,503,161,486,161, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '130'
-  $floorItems2['130'] = i
-  w.create(TkcText,638.5,205, 'text'=>'130', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,308,242,339,242,339,248,342,248,
-                     342,246,397,246,397,276,393,276,
-                     393,309,300,309,300,248,308,248, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '102'
-  $floorItems2['102'] = i
-  w.create(TkcText,367.5,278.5, 'text'=>'102', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,397,255,486,255,486,276,397,276, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '128'
-  $floorItems2['128'] = i
-  w.create(TkcText,441.5,265.5, 'text'=>'128', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,510,309,486,309,486,255,530,255,
-                     552,277,561,277,561,325,510,325,
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '129'
-  $floorItems2['129'] = i
-  w.create(TkcText,535.5,293, 'text'=>'129', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,696,281,740,281,740,387,642,387,
-                     642,389,561,389,561,277,696,277, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '133'
-  $floorItems2['133'] = i
-  w.create(TkcText,628.5,335, 'text'=>'133', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,742,387,742,281,800,281,800,387, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '132'
-  $floorItems2['132'] = i
-  w.create(TkcText,771,334, 'text'=>'132', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,800,168,800,280,699,280,699,168, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '134'
-  $floorItems2['134'] = i
-  w.create(TkcText,749.5,224, 'text'=>'134', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,726,131,726,166,800,166,800,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '135'
-  $floorItems2['135'] = i
-  w.create(TkcText,763,148.5, 'text'=>'135', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,340,360,335,363,331,365,326,366,304,366,
-                     304,312,396,312,396,288,400,288,404,288,
-                     409,290,413,292,418,297,421,302,422,309,
-                     421,318,417,325,411,330,405,332,397,333,
-                     344,333,340,334,336,336,335,338,332,342,
-                     331,347,332,351,334,354,336,357,341,359, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'Ramona Stair'
-  $floorItems2['Ramona Stair'] = i
-  w.create(TkcText,368,323, 'text'=>'Ramona Stair', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,30,23,30,5,93,5,98,5,104,7,110,10,116,16,119,20,
-                     122,28,123,32,123,68,220,68,220,87,90,87,90,23, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'University Stair'
-  $floorItems2['University Stair'] = i
-  w.create(TkcText,155,77.5, 'text'=>'University Stair', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,282,37,295,40,312,49,323,56,337,70,352,56,
-                     358,48,363,39,365,29,348,25,335,22,321,14,
-                     300,5,283,1,260,0,246,0,242,2,236,4,231,8,
-                     227,13,223,17,221,22,220,34,260,34, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'Plaza Stair'
-  $floorItems2['Plaza Stair'] = i
-  w.create(TkcText,317.5,28.5, 'text'=>'Plaza Stair', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,220,34,260,34,282,37,295,40,312,49,
-                     323,56,337,70,350,83,365,94,377,100,
-                     386,104,386,128,220,128, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'Plaza Deck'
-  $floorItems2['Plaza Deck'] = i
-  w.create(TkcText,303,81, 'text'=>'Plaza Deck', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,257,336,77,336,6,336,6,301,77,301,77,310,257,310,
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '106'
-  $floorItems2['106'] = i
-  w.create(TkcText,131.5,318.5, 'text'=>'106', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,146,110,162,110,162,91,130,91,130,115,95,115,
-                     95,128,114,128,114,151,157,151,157,153,112,153,
-                     112,130,97,130,97,168,175,168,175,131,146,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '119'
-  $floorItems2['119'] = i
-  w.create(TkcText,143.5,133, 'text'=>'119', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  w.create(TkcLine,155,191,155,189, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,155,177,155,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,96,129,96,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,78,169,176,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,176,247,176,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,340,206,307,206, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,340,187,340,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,340,210,340,201, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,340,247,340,224, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,340,241,307,241, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,376,246,376,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,307,247,307,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,376,170,307,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,315,129,315,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,147,129,176,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,202,133,176,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,398,129,315,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,258,352,258,387, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,60,387,60,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,0,337,0,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,60,391,0,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,3,114,3,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,258,387,60,387, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,237,52,273, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,189,52,225, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,140,52,177, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,395,306,395,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,531,254,398,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,475,178,475,238, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,502,162,398,162, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,398,129,398,188, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,383,188,376,188, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,408,188,408,194, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,398,227,398,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,408,227,398,227, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,408,222,408,227, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,408,206,408,210, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,408,208,475,208, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,484,278,484,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,484,311,508,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,508,327,508,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,559,327,508,327, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,644,391,559,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,644,389,644,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,514,205,475,205, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,496,189,496,187, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,559,129,484,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,484,162,484,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,725,133,559,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,559,129,559,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,725,149,725,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,725,129,802,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,802,389,802,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,739,167,802,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,396,188,408,188, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,0,337,9,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,58,337,21,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,43,391,43,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,105,337,75,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,91,387,91,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,154,337,117,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,139,387,139,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,227,337,166,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,258,337,251,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,258,328,302,328, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,302,355,302,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,395,311,302,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,484,278,395,278, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,395,294,395,278, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,473,278,473,275, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,473,256,473,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,533,257,531,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,553,276,551,274, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,698,276,553,276, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,559,391,559,327, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,802,389,644,389, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,741,314,741,389, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,698,280,698,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,707,280,698,280, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,802,280,731,280, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,741,280,741,302, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,698,167,727,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,725,137,725,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,514,254,514,175, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,496,175,514,175, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,502,175,502,162, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,475,166,475,162, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,496,176,496,175, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,491,189,496,189, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,491,205,491,189, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,487,238,475,238, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,487,240,487,238, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,487,252,487,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,315,133,304,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,256,133,280,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,78,247,270,247, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,307,247,294,247, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,214,133,232,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,217,247,217,266, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,217,309,217,291, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,217,309,172,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,154,309,148,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,175,300,175,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,151,300,175,300, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,151,247,151,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,78,237,78,265, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,78,286,78,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,106,309,78,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,130,309,125,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,99,309,99,247, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,127,299,99,299, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,127,309,127,299, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,155,191,137,191, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,137,169,137,191, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,78,171,78,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,78,190,78,218, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,86,192,86,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,86,192,78,192, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,301,3,301, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,286,52,301, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,252,3,252, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,203,3,203, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,3,156,52,156, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,8,25,8,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,63,114,3,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,75,114,97,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,108,114,129,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,129,114,129,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,114,52,128, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,132,89,88,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,88,25,88,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,88,114,88,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,218,89,144,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,147,111,147,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,162,111,147,111, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,162,109,162,111, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,162,96,162,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,218,89,218,94, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,218,89,218,119, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,8,25,88,25, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,258,337,258,328, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,113,129,96,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,302,355,258,355, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,386,104,386,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,377,100,386,104, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,365,94,377,100, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,350,83,365,94, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,337,70,350,83, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,337,70,323,56, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,312,49,323,56, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,295,40,312,49, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,282,37,295,40, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,260,34,282,37, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,253,34,260,34, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,386,128,386,104, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,113,152,156,152, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,113,152,156,152, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,113,152,113,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-end
-
-# floor2_fg2 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the foreground information for the second
-# floor (office outlines and numbers).
-#
-# Arguments:
-# w -           The canvas window.
-# color -       Color to use for drawing foreground information.
-
-def floor2_fg2(w,color)
-  i = TkcPolygon.new(w,748,188,755,188,755,205,758,205,758,222,
-                     800,222,800,168,748,168, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '238'
-  $floorItems2['238'] = i
-  w.create(TkcText,774,195, 'text'=>'238', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,726,188,746,188,746,166,800,166,800,131,726,131,
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '237'
-  $floorItems2['237'] = i
-  w.create(TkcText,763,148.5, 'text'=>'237', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,497,187,497,204,559,204,559,324,641,324,
-                     643,324,643,291,641,291,641,205,696,205,
-                     696,291,694,291,694,314,715,314,715,291,
-                     715,205,755,205,755,190,724,190,724,187, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '246'
-  $floorItems2['246'] = i
-  w.create(TkcText,600,264, 'text'=>'246', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,694,279,643,279,643,314,694,314, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '247'
-  $floorItems2['247'] = i
-  w.create(TkcText,668.5,296.5, 'text'=>'247', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,232,250,308,250,308,242,339,242,339,246,
-                     397,246,397,255,476,255,476,250,482,250,559,250,
-                     559,274,482,274,482,278,396,278,396,274,232,274, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '202'
-  $floorItems2['202'] = i
-  w.create(TkcText,285.5,260, 'text'=>'202', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,53,228,53,338,176,338,233,338,233,196,
-                     306,196,306,180,175,180,175,169,156,169,
-                     156,196,176,196,176,228, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '206'
-  $floorItems2['206'] = i
-  w.create(TkcText,143,267, 'text'=>'206', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,277,6,277,6,338,51,338, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '212'
-  $floorItems2['212'] = i
-  w.create(TkcText,28.5,307.5, 'text'=>'212', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,557,276,486,276,486,309,510,309,510,325,557,325, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '245'
-  $floorItems2['245'] = i
-  w.create(TkcText,521.5,300.5, 'text'=>'245', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,560,389,599,389,599,326,560,326, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '244'
-  $floorItems2['244'] = i
-  w.create(TkcText,579.5,357.5, 'text'=>'244', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,601,389,601,326,643,326,643,389, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '243'
-  $floorItems2['243'] = i
-  w.create(TkcText,622,357.5, 'text'=>'243', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,688,316,645,316,645,365,688,365, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '242'
-  $floorItems2['242'] = i
-  w.create(TkcText,666.5,340.5, 'text'=>'242', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,802,367,759,367,759,226,802,226, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = 'Barbecue Deck'
-  $floorItems2['Barbecue Deck'] = i
-  w.create(TkcText,780.5,296.5, 'text'=>'Barbecue Deck', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,755,262,755,314,717,314,717,262, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '240'
-  $floorItems2['240'] = i
-  w.create(TkcText,736,288, 'text'=>'240', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,755,316,689,316,689,365,755,365, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '241'
-  $floorItems2['241'] = i
-  w.create(TkcText,722,340.5, 'text'=>'241', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,755,206,717,206,717,261,755,261, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '239'
-  $floorItems2['239'] = i
-  w.create(TkcText,736,233.5, 'text'=>'239', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,695,277,643,277,643,206,695,206, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '248'
-  $floorItems2['248'] = i
-  w.create(TkcText,669,241.5, 'text'=>'248', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,676,135,676,185,724,185,724,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '236'
-  $floorItems2['236'] = i
-  w.create(TkcText,700,160, 'text'=>'236', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,675,135,635,135,635,145,628,145,628,185,675,185, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '235'
-  $floorItems2['235'] = i
-  w.create(TkcText,651.5,160, 'text'=>'235', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,626,143,633,143,633,135,572,135,
-                     572,143,579,143,579,185,626,185, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '234'
-  $floorItems2['234'] = i
-  w.create(TkcText,606,160, 'text'=>'234', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,557,135,571,135,571,145,578,145,
-                     578,185,527,185,527,131,557,131, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '233'
-  $floorItems2['233'] = i
-  w.create(TkcText,552.5,158, 'text'=>'233', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,476,249,557,249,557,205,476,205,
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '230'
-  $floorItems2['230'] = i
-  w.create(TkcText,516.5,227, 'text'=>'230', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,476,164,486,164,486,131,525,131,525,185,476,185, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '232'
-  $floorItems2['232'] = i
-  w.create(TkcText,500.5,158, 'text'=>'232', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,476,186,495,186,495,204,476,204, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '229'
-  $floorItems2['229'] = i
-  w.create(TkcText,485.5,195, 'text'=>'229', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,474,207,409,207,409,187,399,187,399,164,474,164, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '227'
-  $floorItems2['227'] = i
-  w.create(TkcText,436.5,185.5, 'text'=>'227', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,399,228,399,253,474,253,474,209,409,209,409,228, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '228'
-  $floorItems2['228'] = i
-  w.create(TkcText,436.5,231, 'text'=>'228', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,397,246,397,226,407,226,407,189,377,189,377,246, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '226'
-  $floorItems2['226'] = i
-  w.create(TkcText,392,217.5, 'text'=>'226', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,377,169,316,169,316,131,397,131,397,188,377,188, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '225'
-  $floorItems2['225'] = i
-  w.create(TkcText,356.5,150, 'text'=>'225', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,234,198,306,198,306,249,234,249, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '224'
-  $floorItems2['224'] = i
-  w.create(TkcText,270,223.5, 'text'=>'224', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,270,179,306,179,306,170,314,170,314,135,270,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '223'
-  $floorItems2['223'] = i
-  w.create(TkcText,292,157, 'text'=>'223', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,268,179,221,179,221,135,268,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '222'
-  $floorItems2['222'] = i
-  w.create(TkcText,244.5,157, 'text'=>'222', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,177,179,219,179,219,135,177,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '221'
-  $floorItems2['221'] = i
-  w.create(TkcText,198,157, 'text'=>'221', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,299,327,349,327,349,284,341,284,341,276,299,276, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '204'
-  $floorItems2['204'] = i
-  w.create(TkcText,324,301.5, 'text'=>'204', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,234,276,297,276,297,327,257,327,257,338,234,338, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '205'
-  $floorItems2['205'] = i
-  w.create(TkcText,265.5,307, 'text'=>'205', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,256,385,256,340,212,340,212,385,
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '207'
-  $floorItems2['207'] = i
-  w.create(TkcText,234,362.5, 'text'=>'207', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,210,340,164,340,164,385,210,385, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '208'
-  $floorItems2['208'] = i
-  w.create(TkcText,187,362.5, 'text'=>'208', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,115,340,162,340,162,385,115,385, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '209'
-  $floorItems2['209'] = i
-  w.create(TkcText,138.5,362.5, 'text'=>'209', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,89,228,89,156,53,156,53,228, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '217'
-  $floorItems2['217'] = i
-  w.create(TkcText,71,192, 'text'=>'217', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,89,169,97,169,97,190,89,190, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '217A'
-  $floorItems2['217A'] = i
-  w.create(TkcText,93,179.5, 'text'=>'217A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,89,156,89,168,95,168,95,135,53,135,53,156, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '216'
-  $floorItems2['216'] = i
-  w.create(TkcText,71,145.5, 'text'=>'216', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,179,51,135,6,135,6,179, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '215'
-  $floorItems2['215'] = i
-  w.create(TkcText,28.5,157, 'text'=>'215', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,227,6,227,6,180,51,180, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '214'
-  $floorItems2['214'] = i
-  w.create(TkcText,28.5,203.5, 'text'=>'214', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,275,6,275,6,229,51,229, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '213'
-  $floorItems2['213'] = i
-  w.create(TkcText,28.5,252, 'text'=>'213', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,114,340,67,340,67,385,114,385, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '210'
-  $floorItems2['210'] = i
-  w.create(TkcText,90.5,362.5, 'text'=>'210', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,59,389,59,385,65,385,65,340,1,340,1,389, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '211'
-  $floorItems2['211'] = i
-  w.create(TkcText,33,364.5, 'text'=>'211', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,393,309,350,309,350,282,342,282,342,276,393,276, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '203'
-  $floorItems2['203'] = i
-  w.create(TkcText,367.5,292.5, 'text'=>'203', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,99,191,91,191,91,226,174,226,174,198,
-                     154,198,154,192,109,192,109,169,99,169, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '220'
-  $floorItems2['220'] = i
-  w.create(TkcText,132.5,208.5, 'text'=>'220', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,339,205,307,205,307,171,339,171, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = 'Priv Lift2'
-  $floorItems2['Priv Lift2'] = i
-  w.create(TkcText,323,188, 'text'=>'Priv Lift2', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,307,240,339,240,339,206,307,206, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = 'Pub Lift 2'
-  $floorItems2['Pub Lift 2'] = i
-  w.create(TkcText,323,223, 'text'=>'Pub Lift 2', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,175,168,97,168,97,131,175,131, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '218'
-  $floorItems2['218'] = i
-  w.create(TkcText,136,149.5, 'text'=>'218', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,154,191,111,191,111,169,154,169, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '219'
-  $floorItems2['219'] = i
-  w.create(TkcText,132.5,180, 'text'=>'219', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,375,246,375,172,341,172,341,246, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '201'
-  $floorItems2['201'] = i
-  w.create(TkcText,358,209, 'text'=>'201', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  w.create(TkcLine,641,186,678,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,350,757,367, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,634,133,634,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,634,144,627,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,572,133,572,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,572,144,579,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,398,129,398,162, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,174,197,175,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,175,197,175,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,206,757,221, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,396,188,408,188, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,727,189,725,189, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,747,167,802,167, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,747,167,747,189, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,755,189,739,189, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,769,224,757,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,802,224,802,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,802,129,725,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,725,189,725,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,725,186,690,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,676,133,676,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,627,144,627,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,629,186,593,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,579,144,579,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,559,129,559,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,725,133,559,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,484,162,484,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,559,129,484,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,526,129,526,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,540,186,581,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,528,186,523,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,511,186,475,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,496,190,496,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,496,205,496,202, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,475,205,527,205, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,558,205,539,205, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,558,205,558,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,558,249,475,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,662,206,642,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,695,206,675,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,695,278,642,278, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,642,291,642,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,695,291,695,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,716,208,716,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,206,716,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,221,757,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,793,224,802,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,262,716,262, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,716,220,716,264, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,716,315,716,276, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,315,703,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,325,757,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,367,644,367, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,689,367,689,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,647,315,644,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,659,315,691,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,600,325,600,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,627,325,644,325, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,644,391,644,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,615,325,575,325, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,644,391,558,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,563,325,558,325, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,558,391,558,314, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,558,327,508,327, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,558,275,484,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,558,302,558,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,508,327,508,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,484,311,508,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,484,275,484,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,475,208,408,208, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,408,206,408,210, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,408,222,408,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,408,227,398,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,398,227,398,254, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,408,188,408,194, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,383,188,376,188, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,398,188,398,162, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,398,162,484,162, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,475,162,475,254, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,398,254,475,254, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,484,280,395,280, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,395,311,395,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,307,197,293,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,278,197,233,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,233,197,233,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,307,179,284,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,233,249,278,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,269,179,269,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,220,179,220,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,155,191,110,191, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,90,190,98,190, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,98,169,98,190, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,52,133,52,165, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,52,214,52,177, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,52,226,52,262, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,52,274,52,276, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,234,275,234,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,226,339,258,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,211,387,211,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,214,339,177,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,258,387,60,387, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,3,133,3,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,165,339,129,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,117,339,80,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,68,339,59,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,0,339,46,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,60,391,0,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,0,339,0,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,60,387,60,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,258,329,258,387, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,350,329,258,329, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,395,311,350,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,398,129,315,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,176,133,315,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,176,129,96,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,3,133,96,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,66,387,66,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,115,387,115,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,163,387,163,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,234,275,276,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,288,275,309,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,298,275,298,329, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,341,283,350,283, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,321,275,341,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,375,275,395,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,315,129,315,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,376,170,307,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,307,250,307,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,376,245,376,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,340,241,307,241, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,340,245,340,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,340,210,340,201, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,340,187,340,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,340,206,307,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,293,250,307,250, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,271,179,238,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,226,179,195,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,176,129,176,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,182,179,176,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,174,169,176,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,162,169,90,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,96,169,96,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,175,227,90,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,90,190,90,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,52,179,3,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,52,228,3,228, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,52,276,3,276, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,155,177,155,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,110,191,110,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,155,189,155,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,350,283,350,329, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,162,197,155,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,341,275,341,283, 'fill'=>color, 'tags'=>['floor2','wall'])
-end
-
-# floor2_fg3 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the foreground information for the third
-# floor (office outlines and numbers).
-#
-# Arguments:
-# w -           The canvas window.
-# color -       Color to use for drawing foreground information.
-
-def floor2_fg3(w,color)
-  i = TkcPolygon.new(w,89,228,89,180,70,180,70,228,
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '316'
-  $floorItems2['316'] = i
-  w.create(TkcText,79.5,204, 'text'=>'316', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,115,368,162,368,162,323,115,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '309'
-  $floorItems2['309'] = i
-  w.create(TkcText,138.5,345.5, 'text'=>'309', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,164,323,164,368,211,368,211,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '308'
-  $floorItems2['308'] = i
-  w.create(TkcText,187.5,345.5, 'text'=>'308', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,256,368,212,368,212,323,256,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '307'
-  $floorItems2['307'] = i
-  w.create(TkcText,234,345.5, 'text'=>'307', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,244,276,297,276,297,327,260,327,260,321,244,321, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '305'
-  $floorItems2['305'] = i
-  w.create(TkcText,270.5,301.5, 'text'=>'305', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,251,219,251,203,244,203,244,219,
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '324B'
-  $floorItems2['324B'] = i
-  w.create(TkcText,247.5,211, 'text'=>'324B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,251,249,244,249,244,232,251,232, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '324A'
-  $floorItems2['324A'] = i
-  w.create(TkcText,247.5,240.5, 'text'=>'324A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,223,135,223,179,177,179,177,135, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '320'
-  $floorItems2['320'] = i
-  w.create(TkcText,200,157, 'text'=>'320', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,114,368,114,323,67,323,67,368, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '310'
-  $floorItems2['310'] = i
-  w.create(TkcText,90.5,345.5, 'text'=>'310', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,23,277,23,321,68,321,68,277, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '312'
-  $floorItems2['312'] = i
-  w.create(TkcText,45.5,299, 'text'=>'312', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,23,229,68,229,68,275,23,275, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '313'
-  $floorItems2['313'] = i
-  w.create(TkcText,45.5,252, 'text'=>'313', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,68,227,23,227,23,180,68,180, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '314'
-  $floorItems2['314'] = i
-  w.create(TkcText,40.5,203.5, 'text'=>'314', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,95,179,95,135,23,135,23,179, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '315'
-  $floorItems2['315'] = i
-  w.create(TkcText,59,157, 'text'=>'315', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,99,226,99,204,91,204,91,226, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '316B'
-  $floorItems2['316B'] = i
-  w.create(TkcText,95,215, 'text'=>'316B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,91,202,99,202,99,180,91,180, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '316A'
-  $floorItems2['316A'] = i
-  w.create(TkcText,95,191, 'text'=>'316A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,97,169,109,169,109,192,154,192,154,198,
-                     174,198,174,226,101,226,101,179,97,179, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '319'
-  $floorItems2['319'] = i
-  w.create(TkcText,141.5,209, 'text'=>'319', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,65,368,58,368,58,389,1,389,1,333,23,333,23,323,65,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '311'
-  $floorItems2['311'] = i
-  w.create(TkcText,29.5,361, 'text'=>'311', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,154,191,111,191,111,169,154,169, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '318'
-  $floorItems2['318'] = i
-  w.create(TkcText,132.5,180, 'text'=>'318', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,175,168,97,168,97,131,175,131, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '317'
-  $floorItems2['317'] = i
-  w.create(TkcText,136,149.5, 'text'=>'317', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,274,194,274,221,306,221,306,194, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '323'
-  $floorItems2['323'] = i
-  w.create(TkcText,290,207.5, 'text'=>'323', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,306,222,274,222,274,249,306,249, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '325'
-  $floorItems2['325'] = i
-  w.create(TkcText,290,235.5, 'text'=>'325', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,263,179,224,179,224,135,263,135, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '321'
-  $floorItems2['321'] = i
-  w.create(TkcText,243.5,157, 'text'=>'321', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,314,169,306,169,306,192,273,192,
-                     264,181,264,135,314,135, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '322'
-  $floorItems2['322'] = i
-  w.create(TkcText,293.5,163.5, 'text'=>'322', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,307,240,339,240,339,206,307,206, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = 'Pub Lift3'
-  $floorItems2['Pub Lift3'] = i
-  w.create(TkcText,323,223, 'text'=>'Pub Lift3', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,339,205,307,205,307,171,339,171, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = 'Priv Lift3'
-  $floorItems2['Priv Lift3'] = i
-  w.create(TkcText,323,188, 'text'=>'Priv Lift3', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,350,284,376,284,376,276,397,276,397,309,350,309, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '303'
-  $floorItems2['303'] = i
-  w.create(TkcText,373.5,292.5, 'text'=>'303', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,272,203,272,249,252,249,252,230,
-                     244,230,244,221,252,221,252,203, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '324'
-  $floorItems2['324'] = i
-  w.create(TkcText,262,226, 'text'=>'324', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,299,276,299,327,349,327,349,284,341,284,341,276, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '304'
-  $floorItems2['304'] = i
-  w.create(TkcText,324,301.5, 'text'=>'304', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,375,246,375,172,341,172,341,246, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '301'
-  $floorItems2['301'] = i
-  w.create(TkcText,358,209, 'text'=>'301', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,397,246,377,246,377,185,397,185, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '327'
-  $floorItems2['327'] = i
-  w.create(TkcText,387,215.5, 'text'=>'327', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,316,131,316,169,377,169,377,185,397,185,397,131, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '326'
-  $floorItems2['326'] = i
-  w.create(TkcText,365.5,150, 'text'=>'326', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,308,251,242,251,242,274,342,274,342,282,375, 282,
-                     375,274,397,274,397,248,339,248,339,242,308,242, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '302'
-  $floorItems2['302'] = i
-  w.create(TkcText,319.5,261, 'text'=>'302', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,70,321,242,321,242,200,259,200,259,203,272,203,
-                     272,193,263,180,242,180,175,180,175,169,156,169,
-                     156,196,177,196,177,228,107,228,70,228,70,275,107,275,
-                     107,248,160,248,160,301,107,301,107,275,70,275, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '306'
-  $floorItems2['306'] = i
-  w.create(TkcText,200.5,284.5, 'text'=>'306', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  w.create(TkcLine,341,275,341,283, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,162,197,155,197, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,396,247,399,247, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,399,129,399,311, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,258,202,243,202, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,350,283,350,329, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,251,231,243,231, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,243,220,251,220, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,243,250,243,202, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,155,197,155,190, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,110,192,110,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,155,192,110,192, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,155,177,155,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,176,197,176,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,69,280,69,274, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,21,276,69,276, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,69,262,69,226, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,21,228,69,228, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,21,179,75,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,69,179,69,214, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,90,220,90,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,90,204,90,202, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,90,203,100,203, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,90,187,90,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,90,227,176,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,100,179,100,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,100,179,87,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,96,179,96,129, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,162,169,96,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,173,169,176,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,182,179,176,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,176,129,176,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,195,179,226,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,224,133,224,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,264,179,264,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,238,179,264,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,273,207,273,193, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,273,235,273,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,273,224,273,219, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,273,193,307,193, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,273,222,307,222, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,273,250,307,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,384,247,376,247, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,340,206,307,206, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,340,187,340,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,340,210,340,201, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,340,247,340,224, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,340,241,307,241, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,376,247,376,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,307,250,307,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,376,170,307,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,315,129,315,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,376,283,366,283, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,376,283,376,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,399,275,376,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,341,275,320,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,341,283,350,283, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,298,275,298,329, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,308,275,298,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,243,322,243,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,243,275,284,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,258,322,226,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,212,370,212,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,214,322,177,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,163,370,163,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,165,322,129,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,84,322,117,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,71,322,64,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,115,322,115,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,66,322,66,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,52,322,21,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,21,331,0,331, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,21,331,21,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,96,133,21,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,176,129,96,129, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,315,133,176,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,315,129,399,129, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,399,311,350,311, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,350,329,258,329, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,258,322,258,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,60,370,258,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,60,370,60,391, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,0,391,0,331, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,60,391,0,391, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,307,250,307,242, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,273,250,307,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,258,250,243,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-end
-
-# Below is the "main program" that creates the floorplan demonstration.
-
-# toplevel widget
-if defined?($floor2_demo) && $floor2_demo
-  $floor2_demo.destroy 
-  $floor2_demo = nil
-end
-
-# demo toplevel widget
-$floor2_demo = TkToplevel.new {|w|
-  title("Floorplan Canvas Demonstration 2")
-  iconname("Floorplan2")
-  positionWindow(w)
-  geometry('+20+20')
-  minsize(100,100)
-}
-
-base_frame = TkFrame.new($floor2_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'8i', 'justify'=>'left', 
-            'text'=>"This window contains a canvas widget showing the floorplan of Digital Equipment Corporation's Western Research Laboratory.  It has three levels.  At any given time one of the levels is active, meaning that you can see its room structure.  To activate a level, click the left mouse button anywhere on it.  As the mouse moves over the active level, the room under the mouse lights up and its room number appears in the \"Room:\" entry.  You can also type a room number in the entry and the room will light up."){
-  pack('side'=>'top')
-}
-
-# frame
-$floor2_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $floor2_demo
-      $floor2_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'floor2'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$floor2_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# 
-$floorLabels2 = {}
-$floorItems2 = {}
-
-# canvas 
-if $tk_version =~ /^4\.[01]/
-  $floor2_canvas_frame = TkFrame.new(base_frame,'bd'=>2,'relief'=>'sunken',
-                                    'highlightthickness'=>2)
-  $floor2_canvas = TkCanvas.new($floor2_canvas_frame, 
-                               'width'=>900, 'height'=>500, 'borderwidth'=>0, 
-                               'highlightthickness'=>0) {|c|
-    TkScrollbar.new(base_frame, 'orient'=>'horiz', 
-                    'command'=>proc{|*args| c.xview(*args)}){|hs|
-      c.xscrollcommand(proc{|first,last| hs.set first,last})
-      pack('side'=>'bottom', 'fill'=>'x')
-    }
-    TkScrollbar.new(base_frame, 'command'=>proc{|*args| c.yview(*args)}){|vs|
-      c.yscrollcommand(proc{|first,last| vs.set first,last})
-      pack('side'=>'right', 'fill'=>'y')
-    }
-  }
-  $floor2_canvas_frame.pack('side'=>'top','fill'=>'both', 'expand'=>'yes')
-  $floor2_canvas.pack('expand'=>'yes', 'fill'=>'both')
-
-else
-  TkFrame.new(base_frame) {|f|
-    pack('side'=>'top', 'fill'=>'both', 'expand'=>'yes')
-
-    h = TkScrollbar.new(f, 'highlightthickness'=>0, 'orient'=>'horizontal')
-    v = TkScrollbar.new(f, 'highlightthickness'=>0, 'orient'=>'vertical')
-
-    TkFrame.new(f, 'bd'=>2, 'relief'=>'sunken') {|f1|
-      $floor2_canvas = TkCanvas.new(f1, 'width'=>900, 'height'=>500, 
-                                   'borderwidth'=>0, 
-                                   'highlightthickness'=>0) {
-        xscrollcommand(proc{|first,last| h.set first,last})
-        yscrollcommand(proc{|first,last| v.set first,last})
-        pack('expand'=>'yes', 'fill'=>'both')
-      }
-      grid('padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>0, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    }
-
-    v.grid('padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>1, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    h.grid('padx'=>1, 'pady'=>1, 'row'=>1, 'column'=>0, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-
-    TkGrid.rowconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
-    TkGrid.columnconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
-
-    pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>1)
-
-    v.command(proc{|*args| $floor2_canvas.yview(*args)})
-    h.command(proc{|*args| $floor2_canvas.xview(*args)})
-  }
-end
-
-
-# Create an entry for displaying and typing in current room.
-
-$currentRoom2 = TkVariable.new
-$floor2_entry = TkEntry.new($floor2_canvas, 'width'=>10, 'relief'=>'sunken', 
-                           'bd'=>2, 'textvariable'=>$currentRoom2)
-
-# Choose colors, then fill in the floorplan.
-
-$floor2_colors = {}
-if TkWinfo.depth($floor2_canvas) > 1
-  $floor2_colors['bg1'] = '#a9c1da'
-  $floor2_colors['outline1'] = '#77889a'
-  $floor2_colors['bg2'] = '#9ab0c6'
-  $floor2_colors['outline2'] = '#687786'
-  $floor2_colors['bg3'] = '#8ba0b3'
-  $floor2_colors['outline3'] = '#596673'
-  $floor2_colors['offices'] = 'Black'
-  $floor2_colors['active'] = '#c4d1df'
-else
-  $floor2_colors['bg1'] = 'white'
-  $floor2_colors['outline1'] = 'black'
-  $floor2_colors['bg2'] = 'white'
-  $floor2_colors['outline2'] = 'black'
-  $floor2_colors['bg3'] = 'white'
-  $floor2_colors['outline3'] = 'black'
-  $floor2_colors['offices'] = 'Black'
-  $floor2_colors['active'] = 'black'
-end
-
-$activeFloor2 = ''
-floorDisplay2 $floor2_canvas,3
-
-# Set up event bindings for canvas:
-
-$floor2_canvas.itembind('floor1', '1', proc{floorDisplay2 $floor2_canvas,1})
-$floor2_canvas.itembind('floor2', '1', proc{floorDisplay2 $floor2_canvas,2})
-$floor2_canvas.itembind('floor3', '1', proc{floorDisplay2 $floor2_canvas,3})
-$floor2_canvas.itembind('room', 'Enter', proc{newRoom2 $floor2_canvas})
-$floor2_canvas.itembind('room', 'Leave', proc{$currentRoom2.value = ''})
-$floor2_canvas.bind('2', proc{|x,y| $floor2_canvas.scan_mark x,y}, '%x %y')
-$floor2_canvas.bind('B2-Motion', 
-                   proc{|x,y| $floor2_canvas.scan_dragto x,y}, '%x %y')
-$floor2_canvas.bind('Destroy', proc{$currentRoom2.unset})
-$currentRoom2.value = ''
-$currentRoom2.trace('w',proc{roomChanged2 $floor2_canvas})
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/form.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/form.rb
deleted file mode 100644 (file)
index 3119752..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#
-# form widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($form_demo) && $form_demo
-  $form_demo.destroy 
-  $form_demo = nil
-end
-
-# demo toplevel widget
-$form_demo = TkToplevel.new {|w|
-  title("Form Demonstration")
-  iconname("form")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($form_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "This window contains a simple form where you can type in the various entries and use tabs to move circularly between the entries."
-}
-msg.pack('side'=>'top', 'fill'=>'x')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $form_demo
-      $form_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'form'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# entry 
-form_data = []
-(1..5).each{|i|
-  f = TkFrame.new(base_frame, 'bd'=>2)
-  e = TkEntry.new(f, 'relief'=>'sunken', 'width'=>40)
-  l = TkLabel.new(f)
-  e.pack('side'=>'right')
-  l.pack('side'=>'left')
-  form_data[i] = {'frame'=>f, 'entry'=>e, 'label'=>l}
-}
-
-# 
-form_data[1]['label'].text('Name:')
-form_data[2]['label'].text('Address:')
-form_data[5]['label'].text('Phone:')
-
-# pack
-(1..5).each{|i| form_data[i]['frame'].pack('side'=>'top', 'fill'=>'x')}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/goldberg.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/goldberg.rb
deleted file mode 100644 (file)
index c6fa37c..0000000
+++ /dev/null
@@ -1,2006 +0,0 @@
-#
-# Ruby/Tk Goldverg demo (called by 'widget')
-#
-# Based on Tcl/Tk8.5a2 widget demos.
-# The following is the original comment of TkGoldberg.tcl.
-#
-#>>##+#################################################################
-#>>#
-#>># TkGoldberg.tcl
-#>># by Keith Vetter, March 13, 2003
-#>>#
-#>># "Man will always find a difficult means to perform a simple task"
-#>># Rube Goldberg
-#>>#
-#>># Reproduced here with permission.
-#>>#
-#>>##+#################################################################
-#>>#
-#>># Keith Vetter 2003-03-21: this started out as a simple little program
-#>># but was so much fun that it grew and grew. So I apologize about the
-#>># size but I just couldn't resist sharing it.
-#>>#
-#>># This is a whizzlet that does a Rube Goldberg type animation, the
-#>># design of which comes from an New Years e-card from IncrediMail.
-#>># That version had nice sound effects which I eschewed. On the other
-#>># hand, that version was in black and white (actually dark blue and
-#>># light blue) and this one is fully colorized.
-#>>#
-#>># One thing I learned from this project is that drawing filled complex
-#>># objects on a canvas is really hard. More often than not I had to
-#>># draw each item twice--once with the desired fill color but no
-#>># outline, and once with no fill but with the outline. Another trick
-#>># is erasing by drawing with the background color. Having a flood fill
-#>># command would have been extremely helpful.
-#>>#
-#>># Two wiki pages were extremely helpful: Drawing rounded rectangles
-#>># which I generalized into Drawing rounded polygons, and regular
-#>># polygons which allowed me to convert ovals and arcs into polygons
-#>># which could then be rotated (see Canvas Rotation). I also wrote
-#>># Named Colors to aid in the color selection.
-#>>#
-#>># I could comment on the code, but it's just 26 state machines with
-#>># lots of canvas create and move calls.
-
-if defined?($goldberg_demo) && $goldberg_demo
-  $goldberg_demo.destroy 
-  $goldberg_demo = nil
-end
-
-# demo toplevel widget
-$goldberg_demo = TkToplevel.new {|w|
-  title("Tk Goldberg (demonstration)")
-  iconname("goldberg")
-#  positionWindow(w)
-}
-
-base_frame = TkFrame.new($goldberg_demo).pack(:fill=>:both, :expand=>true)
-
-=begin
-# label
-msg = TkLabel.new($goldberg_demo) {
-  font 'Arial 10'
-  wraplength '4i'
-  justify 'left'
-  text "This is a demonstration of just how complex you can make your animations become. Click the ball to start things moving!\n\n\"Man will always find a difficult means to perform a simple task\"\n - Rube Goldberg"
-}
-msg.pack('side'=>'top')
-=end
-
-=begin
-# frame
-TkFrame.new($goldberg_demo) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $goldberg_demo
-      $goldberg_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'See Code'
-    command proc{showCode 'goldberg'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-=end
-
-#########################################
-
-class TkGoldberg_Demo
-  def initialize(parent)
-    @parent = parent
-
-    @S = {}
-    @S['title']   = 'Tk Goldberg'
-    @S['speed']   = TkVariable.new(5)
-    @S['cnt']     = TkVariable.new(0)
-    @S['message'] = TkVariable.new("\\nWelcome\\nto\\nRuby/Tk")
-    @S['pause']   = TkVariable.new
-    @S['details'] = TkVariable.new(true)
-
-    @S['mode'] = TkVariable.new(:MSTART, :symbol) 
-    #            :MSTART, :MGO, :MPAUSE, :MSSTEP, :MBSTEP, :MDONE, :MDEBUG
-
-    #         0,  1,  2,  3,  4,  5,   6,   7,   8,   9,  10
-    @speed = [1, 10, 20, 50, 80, 100, 150, 200, 300, 400, 500]
-
-    # colors
-    @C = {}
-    @C['fg'] = 'black'
-    # @C['bg'] = 'gray75'
-    @C['bg'] = 'cornflowerblue'
-
-    @C['0'] = 'white';         @C['1a'] = 'darkgreen';   @C['1b'] = 'yellow'
-    @C['2'] = 'red';           @C['3a'] = 'green';       @C['3b'] = 'darkblue'
-    @C['4'] = @C['fg'];        @C['5a'] = 'brown';       @C['5b'] = 'white'
-    @C['6'] = 'magenta';       @C['7'] = 'green';        @C['8'] = @C['fg']
-    @C['9'] = 'blue4';         @C['10a'] = 'white';      @C['10b'] = 'cyan'
-    @C['11a'] = 'yellow';      @C['11b'] = 'mediumblue'; @C['12'] = 'tan2'
-    @C['13a'] = 'yellow';      @C['13b'] = 'red';        @C['14'] = 'white'
-    @C['15a'] = 'green';       @C['15b'] = 'yellow';     @C['16'] = 'gray65'
-    @C['17'] = '#A65353';     @C['18'] = @C['fg'];      @C['19'] = 'gray50'
-    @C['20'] = 'cyan';         @C['21'] = 'gray65';      @C['22'] = @C['20']
-    @C['23a'] = 'blue';        @C['23b'] = 'red';        @C['23c'] = 'yellow'
-    @C['24a'] = 'red';         @C['24b'] = 'white';
-
-    @STEP = TkVariable.new_hash
-    @STEP.default_value_type = :numeric
-
-    @XY = {}
-
-    @XY6 = {
-      '-1'=>[366, 207], '-2'=>[349, 204], '-3'=>[359, 193], '-4'=>[375, 192], 
-      '-5'=>[340, 190], '-6'=>[349, 177], '-7'=>[366, 177], '-8'=>[380, 176],
-      '-9'=>[332, 172], '-10'=>[342, 161], '-11'=>[357, 164], 
-      '-12'=>[372, 163], '-13'=>[381, 149], '-14'=>[364, 151], 
-      '-15'=>[349, 146], '-16'=>[333, 148], '0'=>[357, 219], 
-      '1'=>[359, 261], '2'=>[359, 291], '3'=>[359, 318], '4'=>[361, 324], 
-      '5'=>[365, 329], '6'=>[367, 334], '7'=>[367, 340], '8'=>[366, 346], 
-      '9'=>[364, 350], '10'=>[361, 355], '11'=>[359, 370], '12'=>[359, 391], 
-      '13,0'=>[360, 456], '13,1'=>[376, 456], '13,2'=>[346, 456], 
-      '13,3'=>[330, 456], '13,4'=>[353, 444], '13,5'=>[368, 443], 
-      '13,6'=>[339, 442], '13,7'=>[359, 431], '13,8'=>[380, 437], 
-      '13,9'=>[345, 428], '13,10'=>[328, 434], '13,11'=>[373, 424], 
-      '13,12'=>[331, 420], '13,13'=>[360, 417], '13,14'=>[345, 412], 
-      '13,15'=>[376, 410], '13,16'=>[360, 403]
-    }
-
-    @timer = TkTimer.new(@speed[@S['speed'].numeric]){|timer|
-      timer.set_interval(go)
-    }
-
-    do_display
-    reset
-
-    # Start everything going
-    @timer.start
-  end
-
-  def do_display()
-    @ctrl = TkFrame.new(@parent, :relief=>:ridge, :bd=>2, :padx=>5, :pady=>5)
-    @screen = TkFrame.new(@parent, :bd=>2, 
-                         :relief=>:raised).pack(:side=>:left, :fill=>:both, 
-                                                :expand=>true)
-
-    @canvas = TkCanvas.new(@parent, :width=>850, :height=>700, 
-                          :bg=>@C['bg'], :highlightthickness=>0){
-      scrollregion([0, 0, 1000, 1000]) # Kludge to move everything up
-      yview_moveto(0.05)
-    }.pack(:in=>@screen, :side=>:top, :fill=>:both, :expand=>true)
-
-    @canvas.bind('3'){ @pause.invoke }
-    @canvas.bind('Destroy'){ @timer.stop }
-
-    do_ctrl_frame
-    do_detail_frame
-
-    # msg = TkLabel.new(@parent, :bg=>@C['bg'], :fg=>'white') {
-    msg = Tk::Label.new(@parent, :bg=>@C['bg'], :fg=>'white') {
-      font 'Arial 10'
-      wraplength 600
-      justify 'left'
-      text "This is a demonstration of just how complex you can make your animations become. Click the ball to start things moving!\n\"Man will always find a difficult means to perform a simple task\" - Rube Goldberg"
-    }
-    msg.place(:in=>@canvas, :relx=>0, :rely=>0, :anchor=>:nw)
-
-    frame = TkFrame.new(@parent, :bg=>@C['bg'])
-
-    # TkButton.new(frame, :bg=>@C['bg'], :activebackground=>@C['bg']) {
-    Tk::Button.new(frame, :bg=>@C['bg'], :activebackground=>@C['bg']) {
-      text 'Dismiss'
-      command proc{
-        tmppath = $goldberg_demo
-        $goldberg_demo = nil
-        tmppath.destroy
-      }
-    }.pack('side'=>'left')
-
-    # TkButton.new(frame, :bg=>@C['bg'], :activebackground=>@C['bg']) {
-    Tk::Button.new(frame, :bg=>@C['bg'], :activebackground=>@C['bg']) {
-      text 'See Code'
-      command proc{showCode 'goldberg'}
-    }.pack('side'=>'left', 'padx'=>5)
-
-    # @show = TkButton.new(frame, :text=>'>>', :command=>proc{show_ctrl}, 
-    @show = Tk::Button.new(frame, :text=>'>>', :command=>proc{show_ctrl}, 
-                         :bg=>@C['bg'], :activebackground=>@C['bg'])
-    @show.pack('side'=>'left')
-    frame.place(:in=>@canvas, :relx=>1, :rely=>0, :anchor=>:ne)
-
-    Tk.update
-  end
-
-  def do_ctrl_frame
-    @start = Tk::Button.new(@parent, :text=>'Start', :bd=>6, 
-                          :command=>proc{do_button(0)})
-    if font = @start['font']
-      @start.font(font.weight('bold'))
-    end
-
-    @pause = TkCheckbutton.new(@parent, :text=>'Pause', :font=>font, 
-                               :command=>proc{do_button(1)}, :relief=>:raised, 
-                               :variable=>@S['pause'])
-
-    @step  = TkButton.new(@parent, :text=>'Single Step', :font=>font, 
-                          :command=>proc{do_button(2)})
-    @bstep = TkButton.new(@parent, :text=>'Big Step', :font=>font, 
-                          :command=>proc{do_button(4)})
-    @reset = TkButton.new(@parent, :text=>'Reset', :font=>font, 
-                          :command=>proc{do_button(3)})
-
-    @details = TkFrame.new(@parent, :bd=>2, :relief=>:ridge)
-    @detail = TkCheckbutton.new(@parent, :text=>'Details', :font=>font, 
-                               :relief=>:raised, :variable=>@S['details'])
-
-    @msg_entry = TkEntry.new(@parent, :textvariable=>@S['message'], 
-                             :justify=>:center)
-    @speed_scale = TkScale.new(@parent, :orient=>:horizontal, 
-                               :from=>1, :to=>10, :font=>font, 
-                               :variable=>@S['speed'], :bd=>2, 
-                               :relief=>:ridge, :showvalue=>false)
-    @about = TkButton.new(@parent, :text=>'About', 
-                          :command=>proc{about}, :font=>font)
-
-    Tk.grid(@start, :in=>@ctrl, :row=>0, :sticky=>:ew)
-    @ctrl.grid_rowconfigure(1, :minsize=>10)
-    Tk.grid(@pause, :in=>@ctrl, :row=>2, :sticky=>:ew)
-    Tk.grid(@step,  :in=>@ctrl, :sticky=>:ew)
-    Tk.grid(@bstep, :in=>@ctrl, :sticky=>:ew)
-    Tk.grid(@reset, :in=>@ctrl, :sticky=>:ew)
-    @ctrl.grid_rowconfigure(10, :minsize=>20)
-    Tk.grid(@details, :in=>@ctrl, :row=>11, :sticky=>:ew)
-    Tk.grid(@detail, :in=>@details, :row=>0, :sticky=>:ew)
-    @ctrl.grid_rowconfigure(50, :weight=>1)
-
-    @S['mode'].trace('w', proc{|*args| active_GUI(*args)})
-    @S['details'].trace('w', proc{|*args| active_GUI(*args)})
-    @S['speed'].trace('w', proc{|*args| active_GUI(*args)})
-
-    Tk.grid(@msg_entry, :in=>@ctrl, :row=>98, :sticky=>:ew, :pady=>5)
-    Tk.grid(@speed_scale, :in=>@ctrl, :row=>99, :sticky=>:ew)
-    Tk.grid(@about, :in=>@ctrl, :row=>100, :sticky=>:ew)
-
-    @reset.bind('3'){@S['mode'].value = -1}  # Debugging
-  end
-
-  def do_detail_frame
-    @f_details = TkFrame.new(@details)
-
-    @label = TkLabel.new(@f_details, :textvariable=>@S['cnt'], 
-                         :bd=>1, :relief=>:solid, :bg=>'white')
-    Tk.grid(@label, '-', '-', '-', :sticky=>:ew, :row=>0)
-
-    idx = 1
-    loop {
-      break unless respond_to?("move#{idx}")
-      l = TkLabel.new(@f_details, :text=>idx, :anchor=>:e, 
-                      :width=>2, :bd=>1, :relief=>:solid, :bg=>'white')
-      @STEP[idx] = 0
-      ll = TkLabel.new(@f_details, :textvariable=>@STEP.ref(idx), 
-                       :width=>5, :bd=>1, :relief=>:solid, :bg=>'white')
-      row = (idx + 1)/2
-      col = ((idx + 1) & 1) * 2
-      Tk.grid(l, :sticky=>:ew, :row=>row, :column=>col)
-      Tk.grid(ll, :sticky=>:ew, :row=>row, :column=>(col + 1))
-      idx += 1
-    }
-    @f_details.grid_columnconfigure(1, :weight=>1)
-  end
-
-  def show_ctrl
-    if @ctrl.winfo_mapped?
-      @ctrl.pack_forget
-      @show.text('>>')
-    else
-      @ctrl.pack(:side=>:right, :fill=>:both, :ipady=>5)
-      @show.text('<<')
-    end
-  end
-
-  def draw_all
-    reset_step
-    @canvas.delete(:all)
-    idx = 0
-    loop{
-      m = "draw#{idx}"
-      break unless respond_to?(m)
-      send(m)
-      idx += 1
-    }
-  end
-
-  def active_GUI(var1, var2, op)
-    st = {false=>:disabled, true=>:normal}
-
-    m = @S['mode'].to_sym
-    @S['pause'].value = (m == :MPAUSE)
-    @start.state(st[m != :MGO])
-    @pause.state(st[m != :MSTART && m != :MDONE])
-    @step.state(st[m != :MGO && m != :MDONE])
-    @bstep.state(st[m != :MGO && m != :MDONE])
-    @reset.state(st[m != :MSTART])
-
-    if @S['details'].bool
-      Tk.grid(@f_details, :in=>@details, :row=>2, :sticky=>:ew)
-    else
-      Tk.grid_forget(@f_details)
-    end
-    @speed_scale.label("Speed: #{@S['speed'].value}")
-  end
-
-  def start
-    @S['mode'].value = :MGO
-  end
-
-  def do_button(what)
-    case what
-    when 0  # Start
-      reset if @S['mode'].to_sym == :MDONE
-      @S['mode'].value = :MGO
-
-    when 1  # Pause
-      @S['mode'].value = ((@S['pause'].bool)? :MPAUSE: :MGO)
-
-    when 2  # Step
-      @S['mode'].value = :MSSTEP
-
-    when 3  # Reset
-      reset
-
-    when 4  # Big step
-      @S['mode'].value = :MBSTEP
-    end
-  end
-
-  def go(who = nil)
-    now = Tk::Clock.clicks(:miliseconds)
-    if who  # Start here for debugging
-      @S['active'] = [who]
-      @S['mode'].value = :MGO
-    end
-    return if @S['mode'].to_sym == :MDEBUG  # Debugging
-    # If not paused, do the next move
-    n = next_step if @S['mode'].to_sym != :MPAUSE
-    @S['mode'].value = :MPAUSE if @S['mode'].to_sym == :MSSTEP  # Single step
-    @S['mode'].value = :MSSTEP if @S['mode'].to_sym == :MBSTEP && n  # big step
-    elapsed = Tk::Clock.clicks(:miliseconds) - now
-    delay = @speed[@S['speed'].to_i] - elapsed
-    delay = 1 if delay <= 0
-    return delay
-  end
-
-  def next_step
-    retval = false   # Return value
-
-    if @S['mode'].to_sym != :MSTART && @S['mode'].to_sym != :MDONE
-      @S['cnt'].numeric += 1
-    end
-    alive = []
-    @S['active'].each{|who|
-      who = who.to_i
-      n = send("move#{who}")
-      if (n & 1).nonzero?          # This guy still alive
-        alive << who 
-      end
-      if (n & 2).nonzero?          # Next guy is active
-        alive << (who + 1)
-        retval = true
-      end
-      if (n & 4).nonzero?          # End of puzzle flag
-        @S['mode'].value = :MDONE  # Done mode
-        @S['active'] = []          # No more animation
-        return true
-      end
-    }
-    @S['active'] = alive
-    return retval
-  end
-
-  def about
-    msg = "Ruby/Tk Version ::\nby Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)\n\n"
-    msg += "Original Version ::\n"
-    msg += "#{@S['title']}\nby Keith Vetter, March 2003\n(Reproduced by kind permission of the author)\n\n"
-    msg += "Man will always find a difficult means to perform a simple task"
-    msg += "\nRube Goldberg"
-    Tk.messageBox(:message=>msg, :title=>'About')
-  end
-
-  ################################################################
-  #
-  # All the drawing and moving routines
-  #
-
-  # START HERE! banner
-  def draw0
-    color = @C['0']
-    TkcText.new(@canvas, [579, 119], :text=>'START HERE!', 
-                :fill=>color, :anchor=>:w, 
-                :tag=>'I0', :font=>['Times Roman', 12, :italic, :bold])
-    TkcLine.new(@canvas, [719, 119, 763, 119], :tag=>'I0', :fill=>color, 
-                :width=>5, :arrow=>:last, :arrowshape=>[18, 18, 5])
-    @canvas.itembind('I0', '1'){ start }
-  end
-
-  def move0(step = nil)
-    step = get_step(0, step)
-
-    if @S['mode'].to_sym != :MSTART    # Start the ball rolling
-      move_abs('I0', [-100, -100])     # Hide the banner
-      return 2
-    end
-
-    pos = [
-      [673, 119], [678, 119], [683, 119], [688, 119], 
-      [693, 119], [688, 119], [683, 119], [678, 119]
-    ]
-    step = step % pos.length
-    move_abs('I0', pos[step])
-    return 1
-  end
-
-  # Dropping ball
-  def draw1
-    color = @C['1a']
-    color2 = @C['1b']
-    TkcPolygon.new(@canvas, 
-                   [ 844, 133, 800, 133, 800, 346, 820, 346, 
-                     820, 168, 844, 168, 844, 133 ], 
-                   :width=>3, :fill=>color, :outline=>'')
-    TkcPolygon.new(@canvas, 
-                   [ 771, 133, 685, 133, 685, 168, 751, 168, 
-                     751, 346, 771, 346, 771, 133 ], 
-                   :width=>3, :fill=>color, :outline=>'')
-    TkcOval.new(@canvas, box(812, 122, 9), 
-                :tag=>'I1', :fill=>color2, :outline=>'')
-
-    @canvas.itembind('I1', '1'){ start }
-  end
-
-  def move1(step = nil)
-    step = get_step(1, step)
-    pos = [
-      [807, 122], [802, 122], [797, 123], [793, 124], [789, 129], [785, 153], 
-      [785, 203], [785, 278, :x], [785, 367], [810, 392], [816, 438], 
-      [821, 503], [824, 585, :y], [838, 587], [848, 593], [857, 601], 
-      [-100, -100]
-    ]
-    return 0 if step >= pos.length
-    where = pos[step]
-    move_abs('I1', where)
-    move15a if where[2] == :y
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  # Lighting the match
-  def draw2
-    color = @C['2']
-
-    # Fulcrum
-    TkcPolygon.new(@canvas, [750, 369, 740, 392, 760, 392], 
-                   :fill=>@C['fg'], :outline=>@C['fg'])
-
-    # Strike box
-    TkcRectangle.new(@canvas, [628, 335, 660, 383], 
-                     :fill=>'', :outline=>@C['fg'])
-    (0..2).each{|y|
-      yy = 335 + y*16
-      TkcBitmap.new(@canvas, [628, yy], :bitmap=>'gray25', 
-                    :anchor=>:nw, :foreground=>@C['fg'])
-      TkcBitmap.new(@canvas, [644, yy], :bitmap=>'gray25', 
-                    :anchor=>:nw, :foreground=>@C['fg'])
-    }
-
-    # Lever
-    TkcLine.new(@canvas, [702, 366, 798, 366], 
-                :fill=>@C['fg'], :width=>6, :tag=>'I2_0')
-
-    # R strap
-    TkcLine.new(@canvas, [712, 363, 712, 355], 
-                :fill=>@C['fg'], :width=>3, :tag=>'I2_1')
-
-    # L strap
-    TkcLine.new(@canvas, [705, 363, 705, 355], 
-                :fill=>@C['fg'], :width=>3, :tag=>'I2_2')
-
-    # Match stick
-    TkcLine.new(@canvas, [679, 356, 679, 360, 717, 360, 717, 356, 679, 356], 
-                :fill=>@C['fg'], :width=>3, :tag=>'I2_3')
-
-    # Match head
-    TkcPolygon.new(@canvas, 
-                   [ 671, 352, 677.4, 353.9, 680, 358.5, 677.4, 363.1, 
-                     671, 365, 664.6, 363.1, 662, 358.5, 664.6, 353.9 ], 
-                   :fill=>color, :outline=>color, :tag=>'I2_4')
-  end
-
-  def move2(step = nil)
-    step = get_step(2, step)
-
-    stages = [0, 0, 1, 2, 0, 2, 1, 0, 1, 2, 0, 2, 1]
-    xy = []
-    xy[0] = [
-      686, 333, 692, 323, 682, 316, 674, 309, 671, 295, 668, 307, 
-      662, 318, 662, 328, 671, 336
-    ]
-    xy[1] = [
-      687, 331, 698, 322, 703, 295, 680, 320, 668, 297, 663, 311, 
-      661, 327, 671, 335
-    ]
-    xy[2] = [
-      686, 331, 704, 322, 688, 300, 678, 283, 678, 283, 674, 298, 
-      666, 309, 660, 324, 672, 336
-    ]
-
-    if step >= stages.length
-      @canvas.delete('I2')
-      return 0
-    end
-
-    if step == 0  # Rotate the match
-      beta = 20
-      
-      ox, oy = anchor('I2_0', :s)  # Where to pivot
-
-      i = 0
-      until @canvas.find_withtag("I2_#{i}").empty?
-        rotate_item("I2_#{i}", ox, oy, beta)
-        i += 1
-      end
-
-      # For the flame
-      TkcPolygon.new(@canvas, [], :tag=>'I2', :smooth=>true, :fill=>@C['2'])
-
-      return 1
-    end
-    @canvas.coords('I2', xy[stages[step]])
-    return ((step == 7)? 3: 1)
-  end
-
-  # Weight and pulleys
-  def draw3
-    color = @C['3a']
-    color2 = @C['3b']
-
-    xy = [ [602, 296], [577, 174], [518, 174] ]
-    xy.each{|x, y| # 3 Pulleys
-      TkcOval.new(@canvas, box(x, y, 13), 
-                  :fill=>color, :outline=>@C['fg'], :width=>3)
-      TkcOval.new(@canvas, box(x, y, 2), :fill=>@C['fg'], :outline=>@C['fg'])
-    }
-
-    # Wall to flame
-    TkcLine.new(@canvas, [750, 309, 670, 309], :tag=>'I3_s', 
-                :width=>3, :fill=>@C['fg'], :smooth=>true)
-
-    # Flame to pulley 1
-    TkcLine.new(@canvas, [670, 309, 650, 309], :tag=>'I3_0', 
-                :width=>3, :fill=>@C['fg'], :smooth=>true)
-    TkcLine.new(@canvas, [650, 309, 600, 309], :tag=>'I3_1', 
-                :width=>3, :fill=>@C['fg'], :smooth=>true)
-
-    # Pulley 1 half way to 2
-    TkcLine.new(@canvas, [589, 296, 589, 235], :tag=>'I3_2', 
-                :width=>3, :fill=>@C['fg'])
-
-    # Pulley 1 other half to 2
-    TkcLine.new(@canvas, [589, 235, 589, 174], :width=>3, :fill=>@C['fg'])
-
-    # Across the top
-    TkcLine.new(@canvas, [577, 161, 518, 161], :width=>3, :fill=>@C['fg'])
-
-    # Down to weight
-    TkcLine.new(@canvas, [505, 174, 505, 205], :tag=>'I3_w', 
-                :width=>3, :fill=>@C['fg'])
-
-    # Draw the weight as 2 circles, two rectangles and 1 rounded rectangle
-    x1, y1, x2, y2 = [515, 207, 495, 207]
-    TkcOval.new(@canvas, box(x1, y1, 6), 
-                :tag=>'I3_', :fill=>color2, :outline=>color2)
-    TkcOval.new(@canvas, box(x2, y2, 6), 
-                :tag=>'I3_', :fill=>color2, :outline=>color2)
-    TkcRectangle.new(@canvas, x1, y1 - 6, x2, y2 + 6, 
-                     :tag=>'I3_', :fill=>color2, :outline=>color2)
-    
-    TkcPolygon.new(@canvas, round_rect([492, 220, 518, 263], 15), 
-                   :smooth=>true, :tag=>'I3_', :fill=>color2, :outline=>color2)
-
-    TkcLine.new(@canvas, [500, 217, 511, 217], 
-                :tag=>'I3_', :fill=>color2, :width=>10)
-
-    # Bottom weight target
-    TkcLine.new(@canvas, [502, 393, 522, 393, 522, 465], 
-                :tag=>'I3__', :fill=>@C['fg'], :joinstyle=>:miter, :width=>10)
-  end
-
-  def move3(step = nil)
-    step = get_step(3, step)
-
-    pos = [ [505, 247], [505, 297], [505, 386.5], [505, 386.5] ]
-    rope = []
-    rope[0] = [750, 309, 729, 301, 711, 324, 690, 300]
-    rope[1] = [750, 309, 737, 292, 736, 335, 717, 315, 712, 320]
-    rope[2] = [750, 309, 737, 309, 740, 343, 736, 351, 725, 340]
-    rope[3] = [750, 309, 738, 321, 746, 345, 742, 356]
-
-    return 0 if step >= pos.length
-
-    @canvas.delete("I3_#{step}")        # Delete part of the rope
-    move_abs('I3_', pos[step])          # Move weight down
-    @canvas.coords('I3_s', rope[step])  # Flapping rope end
-    @canvas.coords('I3_w', [505, 174].concat(pos[step]))
-    if step == 2
-      @canvas.move('I3__', 0, 30)
-      return 2
-    end
-    return 1
-  end
-
-  # Cage and door
-  def draw4
-    color = @C['4']
-    x0, y0, x1, y1 = [527, 356, 611, 464]
-
-    # Horizontal bars
-    y0.step(y1, 12){|y|
-      TkcLine.new(@canvas, [x0, y, x1, y], :fill=>color, :width=>1)
-    }
-
-    # Vertical bars
-    x0.step(x1, 12){|x|
-      TkcLine.new(@canvas, [x, y0, x, y1], :fill=>color, :width=>1)
-    }
-
-    # Swing gate
-    TkcLine.new(@canvas, [518, 464, 518, 428], 
-                :tag=>'I4', :fill=>color, :width=>1)
-  end
-
-  def move4(step = nil)
-    step = get_step(4, step)
-
-    angles = [-10, -20, -30, -30]
-    return 0 if step >= angles.length
-
-    rotate_item('I4', 518, 464, angles[step])
-    @canvas.raise('I4')
-
-    return((step == 3)? 3: 1)
-  end
-
-  # Mouse
-  def draw5
-    color  = @C['5a']
-    color2 = @C['5b']
-
-    xy = [377, 248, 410, 248, 410, 465, 518, 465]  # Mouse course
-    xy.concat [518, 428, 451, 428, 451, 212, 377, 212]
-
-    TkcPolygon.new(@canvas, xy, :fill=>color2, :outline=>@C['fg'], :width=>3)
-
-    xy = [
-      534.5, 445.5, 541, 440, 552, 436, 560, 436, 569, 440, 574, 446, 
-      575, 452, 574, 454, 566, 456, 554, 456, 545, 456, 537, 454, 530, 452
-    ]
-    TkcPolygon.new(@canvas, xy, :tag=>['I5', 'I5_0'], :fill=>color)
-
-    TkcLine.new(@canvas, [573, 452, 592, 458, 601, 460, 613, 456], # Tail
-                :tag=>['I5', 'I5_1'], :fill=>color, :smooth=>true, :width=>3)
-
-    xy = box(540, 446, 2)   # Eye
-    xy = [540, 444, 541, 445, 541, 447, 540, 448, 538, 447, 538, 445]
-    TkcPolygon.new(@canvas, xy, :tag=>['I5', 'I5_2'], :fill=>@C['bg'], 
-                   :outline=>'', :smooth=>true)
-
-    xy = [538, 454, 535, 461] # Front leg
-    TkcLine.new(@canvas, xy, :tag=>['I5', 'I5_3'], :fill=>color, :width=>2)
-
-    xy = [566, 455, 569, 462] # Back leg
-    TkcLine.new(@canvas, xy, :tag=>['I5', 'I5_4'], :fill=>color, :width=>2)
-
-    xy = [544, 455, 545, 460] # 2nd front leg
-    TkcLine.new(@canvas, xy, :tag=>['I5', 'I5_5'], :fill=>color, :width=>2)
-
-    xy = [560, 455, 558, 460] # 2nd back leg
-    TkcLine.new(@canvas, xy, :tag=>['I5', 'I5_6'], :fill=>color, :width=>2)
-  end
-
-  def move5(step = nil)
-    step = get_step(5, step)
-
-    pos = [
-      [553, 452], [533, 452], [513, 452], [493, 452], [473, 452], 
-      [463, 442, 30], [445.5, 441.5, 30], [425.5, 434.5, 30], [422, 414], 
-      [422, 394], [422, 374], [422, 354], [422, 334], [422, 314], [422, 294], 
-      [422, 274, -30], [422, 260.5, -30, :x], [422.5, 248.5, -28], [425, 237]
-    ]
-
-    return 0 if step >= pos.length
-
-    x, y, beta, nxt = pos[step]
-    move_abs('I5', [x, y])
-    if beta
-      ox, oy = centroid('I5_0')
-      (0..6).each{|id| rotate_item("I5_#{id}", ox, oy, beta) }
-    end
-    return 3 if nxt == :x
-    return 1
-  end
-
-  # Dropping gumballs
-  def draw6
-    color = @C['6']
-    xy = [324, 130, 391, 204] # Ball holder
-    xy = round_rect(xy, 10)
-    TkcPolygon.new(@canvas, xy, :smooth=>true, 
-                   :outline=>@C['fg'], :width=>3, :fill=>color)
-    xy = [339, 204, 376, 253] # Below the ball holder
-    TkcRectangle.new(@canvas, xy, :outline=>@C['fg'], :width=>3, 
-                     :fill=>color, :tag=>'I6c')
-    xy = box(346, 339, 28)
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>'') # Roter
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>2, :style=>:arc, 
-               :start=>80, :extent=>205)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>2, :style=>:arc, 
-               :start=>-41, :extent=>85)
-
-    xy = box(346, 339, 15) # Center of rotor
-    TkcOval.new(@canvas, xy, :outline=>@C['fg'], :fill=>@C['fg'], :tag=>'I6m')
-    xy = [352, 312, 352, 254, 368, 254, 368, 322] # Top drop to rotor
-    TkcPolygon.new(@canvas, xy, :fill=>color, :outline=>'')
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2)
-
-    xy = [353, 240, 367, 300] # Poke bottom hole
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>'')
-    xy = [341, 190, 375, 210] # Poke another hole
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>'')
-
-    xy = [
-      368, 356, 368, 403, 389, 403, 389, 464, 320, 464, 320, 403, 
-      352, 403, 352, 366
-    ]
-    TkcPolygon.new(@canvas, xy, :fill=>color, :outline=>'', 
-                   :width=>2) # Below rotor
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2)
-    xy = box(275, 342, 7) # On/off rotor
-    TkcOval.new(@canvas, xy, :outline=>@C['fg'], :fill=>@C['fg'])
-    xy = [276, 334, 342, 325] # Fan belt top
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-    xy = [276, 349, 342, 353] # Fan belt bottom
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-
-    xy = [337, 212, 337, 247] # What the mouse pushes
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I6_')
-    xy = [392, 212, 392, 247]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I6_')
-    xy = [337, 230, 392, 230]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>7, :tag=>'I6_')
-
-    who = -1 # All the balls
-    colors = %w(red cyan orange green blue darkblue)
-    colors *= 3
-
-    (0..16).each{|i|
-      loc = -i
-      color = colors[i]
-      x, y = @XY6["#{loc}"]
-      TkcOval.new(@canvas, box(x, y, 5), 
-                  :fill=>color, :outline=>color, :tag=>"I6_b#{i}")
-    }
-    draw6a(12) # The wheel
-  end
-
-  def draw6a(beta)
-    @canvas.delete('I6_0')
-    ox, oy = [346, 339]
-    (0..3).each{|i|
-      b = beta + i * 45
-      x, y = rotate_c(28, 0, 0, 0, b)
-      xy = [ox + x, oy + y, ox - x, oy - y]
-      TkcLine.new(@canvas, xy, :tag=>'I6_0', :fill=>@C['fg'], :width=>2)
-    }
-  end
-
-  def move6(step = nil)
-    step = get_step(6, step)
-
-    return 0 if step > 62
-
-    if step < 2  # Open gate for balls to drop
-      @canvas.move('I6_', -7, 0)
-      if step == 1  # Poke a hole
-        xy = [348, 226, 365, 240]
-        TkcRectangle.new(@canvas, xy, :fill=>@canvas.itemcget('I6c', :fill), 
-                         :outline=>'')
-      end
-      return 1
-    end
-
-    s = step - 1  # Do the gumball drop dance
-    (0..(((s - 1)/3).to_i)).each{|i|
-      tag = "I6_b#{i}"
-      break if @canvas.find_withtag(tag).empty?
-      loc = s - 3*i
-
-      if @XY6["#{loc},#{i}"]
-        move_abs(tag, @XY6["#{loc},#{i}"])
-      elsif @XY6["#{loc}"]
-        move_abs(tag, @XY6["#{loc}"])
-      end
-    }
-    if s % 3 == 1
-      first = (s + 2)/3
-      i = first
-      loop {
-        tag = "I6_b#{i}"
-        break if @canvas.find_withtag(tag).empty?
-        loc = first - i
-        move_abs(tag, @XY6["#{loc}"])
-        i += 1
-      }
-    end
-    if s >= 3  # Rotate the motor
-      idx = s % 3
-      draw6a(12 + s * 15)
-    end
-    return((s == 3)? 3 : 1)
-  end
-
-  # On/off switch
-  def draw7
-    color = @C['7']
-    xy = [198, 306, 277, 374]  # Box
-    TkcRectangle.new(@canvas, xy, :outline=>@C['fg'], :width=>2, 
-                     :fill=>color, :tag=>'I7z')
-    @canvas.lower('I7z')
-    xy = [275, 343, 230, 349]
-    TkcLine.new(@canvas, xy, :tag=>'I7', :fill=>@C['fg'], :arrow=>:last, 
-                :arrowshape=>[23, 23, 8], :width=>6)
-    xy = [225, 324]  # On button
-    x, y = xy
-    TkcOval.new(@canvas, box(x, y, 3), :fill=>@C['fg'], :outline=>@C['fg'])
-    xy = [218, 323]  # On text
-    font = ['Times Roman', 8]
-    TkcText.new(@canvas, xy, :text=>'on', :anchor=>:e, 
-                :fill=>@C['fg'], :font=>font)
-    xy = [225, 350]  # Off button
-    x, y = xy
-    TkcOval.new(@canvas, box(x, y, 3), :fill=>@C['fg'], :outline=>@C['fg'])
-    xy = [218, 349]  # Off text
-    TkcText.new(@canvas, xy, :text=>'off', :anchor=>:e, 
-                :fill=>@C['fg'], :font=>font)
-  end
-
-  def move7(step = nil)
-    step = get_step(7, step)
-
-    numsteps = 30
-    return 0 if step > numsteps
-    beta = 30.0 / numsteps
-    rotate_item('I7', 275, 343, beta)
-
-    return((step == numsteps)? 3: 1)
-  end
-
-  # Electricity to the fan
-  def draw8
-    sine([271, 248, 271, 306], 5, 8, :tag=>'I8_s', :fill=>@C['8'], :width=>3)
-  end
-
-  def move8(step = nil)
-    step = get_step(8, step)
-
-    return 0 if step > 3
-    if step == 0
-      sparkle(anchor('I8_s', :s), 'I8')
-      return 1
-    elsif step == 1
-      move_abs('I8', anchor('I8_s', :c))
-    elsif step == 2
-      move_abs('I8', anchor('I8_s', :n))
-    else
-      @canvas.delete('I8')
-    end
-    return((step == 2)? 3: 1)
-  end
-
-  # Fan
-  def draw9
-    color = @C['9']
-    xy = [266, 194, 310, 220]
-    TkcOval.new(@canvas, xy, :outline=>color, :fill=>color)
-    xy = [280, 209, 296, 248]
-    TkcOval.new(@canvas, xy, :outline=>color, :fill=>color)
-    xy = [
-      288, 249, 252, 249, 260, 240, 280, 234, 
-      296, 234, 316, 240, 324, 249, 288, 249
-    ]
-    TkcPolygon.new(@canvas, xy, :fill=>color, :smooth=>true)
-
-    xy = [248, 205, 265, 214, 264, 205, 265, 196]  # Spinner
-    TkcPolygon.new(@canvas, xy, :fill=>color)
-
-    xy = [255, 206, 265, 234]  # Fan blades
-    TkcOval.new(@canvas, xy, :fill=>'', :outline=>@C['fg'], 
-                :width=>3, :tag=>'I9_0')
-    xy = [255, 176, 265, 204]
-    TkcOval.new(@canvas, xy, :fill=>'', :outline=>@C['fg'], 
-                :width=>3, :tag=>'I9_0')
-    xy = [255, 206, 265, 220]
-    TkcOval.new(@canvas, xy, :fill=>'', :outline=>@C['fg'], 
-                :width=>1, :tag=>'I9_1')
-    xy = [255, 190, 265, 204]
-    TkcOval.new(@canvas, xy, :fill=>'', :outline=>@C['fg'], 
-                :width=>1, :tag=>'I9_1')
-  end
-
-  def move9(step = nil)
-    step = get_step(9, step)
-
-    if (step & 1).nonzero?
-      @canvas.itemconfigure('I9_0', :width=>4)
-      @canvas.itemconfigure('I9_1', :width=>1)
-      @canvas.lower('I9_1', 'I9_0')
-    else
-      @canvas.itemconfigure('I9_0', :width=>1)
-      @canvas.itemconfigure('I9_1', :width=>4)
-      @canvas.lower('I9_0', 'I9_1')
-    end
-    return 3 if step == 0
-    return 1
-  end
-
-  # Boat
-  def draw10
-    color  = @C['10a']
-    color2 = @C['10b']
-    xy = [191, 230, 233, 230, 233, 178, 191, 178]  # Sail
-    TkcPolygon.new(@canvas, xy, :fill=>color, :width=>3, :outline=>@C['fg'], 
-                   :tag=>'I10')
-    xy = box(209, 204, 31)  # Front
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>color, :style=>:pie, 
-               :start=>120, :extent=>120, :tag=>'I10')
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :style=>:arc, 
-               :start=>120, :extent=>120, :tag=>'I10')
-    xy = box(249, 204, 31)  # Back
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>@C['bg'], :width=>3, 
-               :style=>:pie, :start=>120, :extent=>120, :tag=>'I10')
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :style=>:arc, 
-               :start=>120, :extent=>120, :tag=>'I10')
-
-    xy = [200, 171, 200, 249]  # Mast
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I10')
-    xy = [159, 234, 182, 234]  # Bow sprit
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I10')
-    xy = [180, 234, 180, 251, 220, 251]  # Hull
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>6, :tag=>'I10')
-
-    xy = [92, 255, 221, 255]  # Waves
-    sine(xy, 2, 25, :fill=>color2, :width=>1, :tag=>'I10w')
-
-    xy = @canvas.coords('I10w')[4..-5]  # Water
-    xy.concat([222, 266, 222, 277, 99, 277])
-    TkcPolygon.new(@canvas, xy, :fill=>color2, :outline=>color2)
-    xy = [222, 266, 222, 277, 97, 277, 97, 266]  # Water bottom
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-
-    xy = box(239, 262, 17)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :style=>:arc, 
-               :start=>95, :extent=>103)
-    xy = box(76, 266, 21)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :style=>:arc, 
-               :extent=>190)
-  end
-
-  def move10(step = nil)
-    step = get_step(10, step)
-
-    pos = [
-      [195, 212], [193, 212], [190, 212], [186, 212], [181, 212], [176, 212], 
-      [171, 212], [166, 212], [161, 212], [156, 212], [151, 212], [147, 212], 
-      [142, 212], [137, 212], [132, 212, :x], [127, 212], [121, 212], 
-      [116, 212], [111, 212]
-    ]
-
-    return 0 if step >= pos.length
-
-    where = pos[step]
-    move_abs('I10', where)
-
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  # 2nd ball drop
-  def draw11
-    color  = @C['11a']
-    color2 = @C['11b']
-    xy = [23, 264, 55, 591]  # Color the down tube
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>'')
-    xy = box(71, 460, 48)    # Color the outer loop
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>'')
-
-    xy = [55, 264, 55, 458]  # Top right side
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-    xy = [55, 504, 55, 591]  # Bottom right side
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-    xy = box(71, 460, 48)    # Outer loop
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :style=>:arc, 
-               :start=>110, :extent=>-290, :tag=>'I11i')
-    xy = box(71, 460, 16)    # Inner loop
-    TkcOval.new(@canvas, xy, :outline=>@C['fg'], :fill=>'', 
-                :width=>3, :tag=>'I11i')
-    TkcOval.new(@canvas, xy, :outline=>@C['fg'], :fill=>@C['bg'], :width=>3)
-
-    xy = [23, 264, 23, 591]  # Left side
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-    xy = box(1, 266, 23)     # Top left curve
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, 
-               :style=>:arc, :extent=>90)
-
-    xy = box(75, 235, 9)     # The ball
-    TkcOval.new(@canvas, xy, :fill=>color2, :outline=>'', 
-                :width=>3, :tag=>'I11')
-  end
-
-  def move11(step = nil)
-    step = get_step(11, step)
-
-    pos = [
-      [75, 235], [70, 235], [65, 237], [56, 240], [46, 247], [38, 266], 
-      [38, 296], [38, 333], [38, 399], [38, 475], [74, 496], [105, 472], 
-      [100, 437], [65, 423], [-100, -100], [38, 505], [38, 527, :x], [38, 591]
-    ]
-
-    return 0 if step >= pos.length
-    where = pos[step]
-    move_abs('I11', where)
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  # Hand
-  def draw12
-    xy = [
-      20, 637, 20, 617, 20, 610, 20, 590, 40, 590, 40, 590, 
-      60, 590, 60, 610, 60, 610
-    ]
-    xy.concat([60, 610, 65, 620, 60, 631])  # Thumb
-    xy.concat([60, 631, 60, 637, 60, 662, 60, 669, 52, 669, 
-                56, 669, 50, 669, 50, 662, 50, 637])
-
-    y0 = 637  # Bumps for fingers
-    y1 = 645
-    50.step(21, -10){|x|
-      x1 = x - 5
-      x2 = x - 10
-      xy << x << y0 << x1 << y1 << x2 << y0
-    }
-    TkcPolygon.new(@canvas, xy, :fill=>@C['12'], :outline=>@C['fg'], 
-                   :smooth=>true, :tag=>'I12', :width=>3)
-  end
-
-  def move12(step = nil)
-    step = get_step(12, step)
-
-    pos = [[42.5, 641, :x]]
-    return 0 if step >= pos.length
-    where = pos[step]
-    move_abs('I12', where)
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  # Fax
-  def draw13
-    color = @C['13a']
-    xy = [86, 663, 149, 663, 149, 704, 50, 704, 50, 681, 64, 681, 86, 671]
-    xy2 = [
-      784, 663, 721, 663, 721, 704, 820, 704, 820, 681, 806, 681, 784, 671
-    ]
-    radii = [2, 9, 9, 8, 5, 5, 2]
-
-    round_poly(@canvas, xy, radii, :width=>3, 
-               :outline=>@C['fg'], :fill=>color)
-    round_poly(@canvas, xy2, radii, :width=>3, 
-               :outline=>@C['fg'], :fill=>color)
-
-    xy = [56, 677]
-    x, y = xy
-    TkcRectangle.new(@canvas, box(x, y, 4), :fill=>'', :outline=>@C['fg'], 
-                     :width=>3, :tag=>'I13')
-    xy = [809, 677]
-    x, y = xy
-    TkcRectangle.new(@canvas, box(x, y, 4), :fill=>'', :outline=>@C['fg'], 
-                     :width=>3, :tag=>'I13R')
-
-    xy = [112, 687]  # Label
-    TkcText.new(@canvas, xy, :text=>'FAX', :fill=>@C['fg'], 
-                :font=>['Times Roman', 12, :bold])
-    xy = [762, 687]
-    TkcText.new(@canvas, xy, :text=>'FAX', :fill=>@C['fg'], 
-                :font=>['Times Roman', 12, :bold])
-
-    xy = [138, 663, 148, 636, 178, 636]  # Paper guide
-    TkcLine.new(@canvas, xy, :smooth=>true, :fill=>@C['fg'], :width=>3)
-    xy = [732, 663, 722, 636, 692, 636]
-    TkcLine.new(@canvas, xy, :smooth=>true, :fill=>@C['fg'], :width=>3)
-
-    sine([149, 688, 720, 688], 5, 15, 
-         :tag=>'I13_s', :fill=>@C['fg'],  :width=>3)
-  end
-
-  def move13(step = nil)
-    step = get_step(13, step)
-
-    numsteps = 7
-
-    if step == numsteps + 2
-      move_abs('I13_star', [-100, -100])
-      @canvas.itemconfigure('I13R', :fill=>@C['13b'], :width=>2)
-      return 2
-    end
-    if step == 0  # Button down
-      @canvas.delete('I13')
-      sparkle([-100, -100], 'I13_star')  # Create off screen
-      return 1
-    end
-    x0, y0 = anchor('I13_s', :w)
-    x1, y1 = anchor('I13_s', :e)
-    x = x0 + (x1 - x0) * (step - 1) / numsteps.to_f
-    move_abs('I13_star', [x, y0])
-    return 1
-  end
-
-  # Paper in fax
-  def draw14
-    color = @C['14']
-    xy = [102, 661, 113, 632, 130, 618]  # Left paper edge
-    TkcLine.new(@canvas, xy, :smooth=>true, :fill=>color, 
-                :width=>3, :tag=>'I14L_0')
-    xy = [148, 629, 125, 640, 124, 662]  # Right paper edge
-    TkcLine.new(@canvas, xy, :smooth=>true, :fill=>color, 
-                :width=>3, :tag=>'I14L_1')
-    draw14a('L')
-
-    xy = [
-      768.0, 662.5, 767.991316225, 662.433786215, 767.926187912, 662.396880171
-    ]
-    TkcLine.new(@canvas, xy, :smooth=>true, :fill=>color, 
-                :width=>3, :tag=>'I14R_0')
-    @canvas.lower('I14R_0')
-    # NB. these numbers are VERY sensitive, you must start with final size
-    # and shrink down to get the values
-    xy = [
-      745.947897349, 662.428358855, 745.997829056, 662.452239237, 746.0, 662.5
-    ]
-    TkcLine.new(@canvas, xy, :smooth=>true, :fill=>color, 
-                :width=>3, :tag=>'I14R_1')
-    @canvas.lower('I14R_1')
-  end
-
-  def draw14a(side)
-    color = @C['14']
-    xy = @canvas.coords("I14#{side}_0")
-    xy2 = @canvas.coords("I14#{side}_1")
-    x0, y0, x1, y1, x2, y2 = xy
-    x3, y3, x4, y4, x5, y5 = xy2
-
-    zz = [
-      x0, y0, x0, y0, xy, x2, y2, x2, y2, 
-      x3, y3, x3, y3, xy2, x5, y5, x5, y5
-    ].flatten
-    @canvas.delete("I14#{side}")
-    TkcPolygon.new(@canvas, zz, :tag=>"I14#{side}", :smooth=>true, 
-                   :fill=>color, :outline=>color, :width=>3)
-    @canvas.lower("I14#{side}")
-  end
-
-  def move14(step = nil)
-    step = get_step(14, step)
-
-    # Paper going down
-    sc = 0.9 - 0.05*step
-    if sc < 0.3
-      @canvas.delete('I14L')
-      return 0
-    end
-
-    ox, oy = @canvas.coords('I14L_0')
-    @canvas.scale('I14L_0', ox, oy, sc, sc)
-    ox, oy = @canvas.coords('I14L_1')[-2..-1]
-    @canvas.scale('I14L_1', ox, oy, sc, sc)
-    draw14a('L')
-
-    # Paper going up
-    sc = 0.35 + 0.05*step
-    sc = 1/sc
-
-    ox, oy = @canvas.coords('I14R_0')
-    @canvas.scale('I14R_0', ox, oy, sc, sc)
-    ox, oy = @canvas.coords('I14R_1')[-2..-1]
-    @canvas.scale('I14R_1', ox, oy, sc, sc)
-    draw14a('R')
-
-    return((step == 10)? 3: 1)
-  end
-
-  # Light beam
-  def draw15
-    color = @C['15a']
-    xy = [824, 599, 824, 585, 820, 585, 829, 585]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I15a')
-    xy = [789, 599, 836, 643]
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>3)
-    xy = [778, 610, 788, 632]
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>3)
-    xy = [766, 617, 776, 625]
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>3)
-
-    xy = [633, 600, 681, 640]
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>3)
-    xy = [635, 567, 657, 599]
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>2)
-    xy = [765, 557, 784, 583]
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>2)
-
-    sine([658, 580, 765, 580], 3, 15, 
-         :tag=>'I15_s', :fill=>@C['fg'], :width=>3)
-  end
-
-  def move15a
-    color = @C['15b']
-    @canvas.scale('I15a', 824, 599, 1, 0.3)  # Button down
-    xy = [765, 621, 681, 621]
-    TkcLine.new(@canvas, xy, :dash=>'-', :width=>3, :fill=>color, :tag=>'I15')
-  end
-
-  def move15(step = nil)
-    step = get_step(15, step)
-
-    numsteps = 6
-
-    if step == numsteps + 2
-      move_abs('I15_star', [-100, -100])
-      return 2
-    end
-    if step == 0  # Break the light beam
-      sparkle([-100, -100], 'I15_star')
-      xy = [765, 621, 745, 621]
-      @canvas.coords('I15', xy)
-      return 1
-    end
-    x0, y0 = anchor('I15_s', :w)
-    x1, y1 = anchor('I15_s', :e)
-    x = x0 + (x1 - x0) * (step - 1) / numsteps.to_f
-    move_abs('I15_star', [x, y0])
-    return 1
-  end
-
-  # Bell
-  def draw16
-    color = @C['16']
-    xy = [722, 485, 791, 556]
-    TkcRectangle.new(@canvas, xy, :fill=>'', :outline=>@C['fg'], :width=>3)
-    xy = box(752, 515, 25)  # Bell
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>'black', 
-                :tag=>'I16b', :width=>2)
-    xy = box(752, 515, 5)   # Bell button
-    TkcOval.new(@canvas, xy, :fill=>'black', :outline=>'black', :tag=>'I16b')
-
-    xy = [784, 523, 764, 549]  # Clapper
-    TkcLine.new(@canvas, xy, :width=>3, :tag=>'I16c', :fill=>@C['fg'])
-    xy = box(784, 523, 4)
-    TkcOval.new(@canvas, xy, :fill=>@C['fg'], :outline=>@C['fg'], :tag=>'I16d')
-  end
-
-  def move16(step = nil)
-    step = get_step(16, step)
-
-    # Note: we never stop
-    ox, oy = [760, 553]
-    if (step & 1).nonzero?
-      beta = 12
-      @canvas.move('I16b', 3, 0)
-    else
-      beta = -12
-      @canvas.move('I16b', -3, 0)
-    end
-    rotate_item('I16c', ox, oy, beta)
-    rotate_item('I16d', ox, oy, beta)
-
-    return ((step == 1)? 3: 1)
-  end
-
-  # Cat
-  def draw17
-    color = @C['17']
-
-    xy = [584, 556, 722, 556]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-    xy = [584, 485, 722, 485]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-
-    xy = [664, 523, 717, 549]  # Body
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :fill=>color, :width=>3, 
-               :style=>:chord, :start=>128, :extent=>260, :tag=>'I17')
-
-    xy = [709, 554, 690, 543]  # Paw
-    TkcOval.new(@canvas, xy, :outline=>@C['fg'], :fill=>color, 
-                :width=>3, :tag=>'I17')
-    xy = [657, 544, 676, 555]
-    TkcOval.new(@canvas, xy, :outline=>@C['fg'], :fill=>color, 
-                :width=>3, :tag=>'I17')
-
-    xy = box(660, 535, 15)     # Lower face
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :style=>:arc, 
-               :start=>150, :extent=>240, :tag=>'I17_')
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>color, :width=>1, 
-               :style=>:chord, :start=>150, :extent=>240, :tag=>'I17_')
-    xy = [674, 529, 670, 513, 662, 521, 658, 521, 650, 513, 647, 529]  # Ears
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-    TkcPolygon.new(@canvas, xy, :fill=>color, :outline=>'', :width=>1, 
-                   :tag=>['I17_', 'I17_c'])
-    xy = [652, 542, 628, 539]  # Whiskers
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-    xy = [652, 543, 632, 545]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-    xy = [652, 546, 632, 552]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-
-    xy = [668, 543, 687, 538]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, 
-                :tag=>['I17_', 'I17_w'])
-    xy = [668, 544, 688, 546]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, 
-                :tag=>['I17_', 'I17_w'])
-    xy = [668, 547, 688, 553]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, 
-                :tag=>['I17_', 'I17_w'])
-
-    xy = [649, 530, 654, 538, 659, 530]  # Left eye
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2, 
-                :smooth=>true, :tag=>'I17')
-    xy = [671, 530, 666, 538, 661, 530]  # Right eye
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2, 
-                :smooth=>true, :tag=>'I17')
-    xy = [655, 543, 660, 551, 665, 543]  # Mouth
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2, 
-                :smooth=>true, :tag=>'I17')
-  end
-
-  def move17(step = nil)
-    step = get_step(17, step)
-
-    if step == 0
-      @canvas.delete('I17')  # Delete most of the cat
-      xy = [655, 543, 660, 535, 665, 543]  # Mouth
-      TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3,
-                  :smooth=>true, :tag=>'I17_')
-      xy = box(654, 530, 4)  # Left eye
-      TkcOval.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :fill=>'', 
-                  :tag=>'I17_')
-      xy = box(666, 530, 4)  # Right eye
-      TkcOval.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :fill=>'', 
-                  :tag=>'I17_')
-
-      @canvas.move('I17_', 0, -20) # Move face up
-      xy = [652, 528, 652, 554]    # Front leg
-      TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-      xy = [670, 528, 670, 554]    # 2nd front leg
-      TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-
-      xy = [ # Body
-        675, 506, 694, 489, 715, 513, 715, 513, 715, 513, 716, 525, 
-        716, 525, 716, 525, 706, 530, 695, 530, 679, 535, 668, 527, 
-        668, 527, 668, 527, 675, 522, 676, 517, 677, 512
-      ]
-      TkcPolygon.new(@canvas, xy, :fill=>@canvas.itemcget('I17_c', :fill), 
-                     :outline=>@C['fg'], :width=>3, :smooth=>true, 
-                     :tag=>'I17_')
-      xy = [716, 514, 716, 554]  # Back leg
-      TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-      xy = [694, 532, 694, 554]  # 2nd back leg
-      TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-      xy = [715, 514, 718, 506, 719, 495, 716, 488]  # Tail
-      TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, 
-                  :smooth=>true, :tag=>'I17_')
-
-      @canvas.raise('I17w')       # Make whiskers visible
-      @canvas.move('I17_', -5, 0) # Move away from the wall a bit
-      return 2
-    end
-    return 0
-  end
-
-  # Sling shot
-  def draw18
-    color = @C['18']
-    xy = [721, 506, 627, 506]  # Sling hold
-    TkcLine.new(@canvas, xy, :width=>4, :fill=>@C['fg'], :tag=>'I18')
-
-    xy = [607, 500, 628, 513]  # Sling rock
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>'', :tag=>'I18a')
-
-    xy = [526, 513, 606, 507, 494, 502]  # Sling band
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>4, :tag=>'I18b')
-    xy = [485, 490, 510, 540, 510, 575, 510, 540, 535, 491]  # Sling
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>6)
-  end
-
-  def move18(step = nil)
-    step = get_step(18, step)
-
-    pos = [
-      [587, 506], [537, 506], [466, 506], [376, 506], [266, 506, :x], 
-      [136, 506], [16, 506], [-100, -100]
-    ]
-
-    b = []
-    b[0] = [490, 502, 719, 507, 524, 512]  # Band collapsing
-    b[1] = [
-      491, 503, 524, 557, 563, 505, 559, 496, 546, 506, 551, 525, 
-      553, 536, 538, 534, 532, 519, 529, 499
-    ]
-    b[2] = [
-      491, 503, 508, 563, 542, 533, 551, 526, 561, 539, 549, 550, 530, 500
-    ]
-    b[3] = [
-      491, 503, 508, 563, 530, 554, 541, 562, 525, 568, 519, 544, 530, 501
-    ]
-
-    return 0 if step >= pos.length
-
-    if step == 0
-      @canvas.delete('I18')
-      @canvas.itemconfigure('I18b', :smooth=>true)
-    end
-    if b[step]
-      @canvas.coords('I18b', b[step])
-    end
-
-    where = pos[step]
-    move_abs('I18a', where)
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  # Water pipe
-  def draw19
-    color = @C['19']
-    xx = [[249, 181], [155, 118], [86, 55], [22, 0]]
-    xx.each{|x1, x2|
-      TkcRectangle.new(@canvas, x1, 453, x2, 467, 
-                       :fill=>color, :outline=>'', :tag=>'I19')
-      TkcLine.new(@canvas, x1, 453, x2, 453, 
-                  :fill=>@C['fg'], :width=>1) # Pipe top
-      TkcLine.new(@canvas, x1, 467, x2, 467, 
-                  :fill=>@C['fg'], :width=>1) # Pipe bottom
-    }
-    @canvas.raise('I11i')
-
-    xy = box(168, 460, 16)  # Bulge by the joint
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>'')
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, :style=>:arc, 
-               :start=>21, :extent=>136)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, :style=>:arc, 
-               :start=>-21, :extent=>-130)
-
-    xy = [249, 447, 255, 473]  # First joint 26x6
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>1)
-
-    xy = box(257, 433, 34)     # Bend up
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>color, :width=>1, 
-               :style=>:pie, :start=>0, :extent=>-91)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, 
-               :style=>:arc, :start=>0, :extent=>-90)
-    xy = box(257, 433, 20)
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>@C['bg'], :width=>1, 
-               :style=>:pie, :start=>0, :extent=>-92)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, 
-               :style=>:arc, :start=>0, :extent=>-90)
-    xy = box(257, 421, 34)     # Bend left
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>color, :width=>1, 
-               :style=>:pie, :start=>0, :extent=>91)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, 
-               :style=>:arc, :start=>0, :extent=>90)
-    xy = box(257, 421, 20)
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>@C['bg'], :width=>1, 
-               :style=>:pie, :start=>0, :extent=>90)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, 
-               :style=>:arc, :start=>0, :extent=>90)
-    xy = box(243, 421, 34)     # Bend down
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>color, :width=>1, 
-               :style=>:pie, :start=>90, :extent=>90)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, 
-               :style=>:arc, :start=>90, :extent=>90)
-    xy = box(243, 421, 20)
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>@C['bg'], :width=>1, 
-               :style=>:pie, :start=>90, :extent=>90)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, 
-               :style=>:arc, :start=>90, :extent=>90)
-
-    xy = [270, 427, 296, 433]  # 2nd joint bottom
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>1)
-    xy = [270, 421, 296, 427]  # 2nd joint top
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>1)
-    xy = [249, 382, 255, 408]  # Third joint right
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>1)
-    xy = [243, 382, 249, 408]  # Third joint left
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>1)
-    xy = [203, 420, 229, 426]  # Last joint
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>1)
-
-    xy = box(168, 460, 6)      # Handle joint
-    TkcOval.new(@canvas, xy, :fill=>@C['fg'], :outline=>'', :tag=>'I19a')
-    xy = [168, 460, 168, 512]  # Handle bar
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>5, :tag=>'I19b')
-  end
-
-  def move19(step = nil)
-    step = get_step(19, step)
-
-     angles = [30, 30, 30]
-    return 2 if step == angles.length
-    ox, oy = centroid('I19a')
-    rotate_item('I19b', ox, oy, angles[step])
-
-    return 1
-  end
-
-  # Water pouring
-  def draw20
-    # do nothing
-  end
-
-  def move20(step = nil)
-    step = get_step(20, step)
-
-    pos  = [451, 462, 473, 484, 496, 504, 513, 523, 532]
-    freq  = [20,  40,  40,  40,  40,  40,  40,  40,  40]
-    pos = [
-      [451, 20], [462, 40], [473, 40], [484, 40], [496, 40], 
-      [504, 40], [513, 40], [523, 40], [532, 40, :x]
-    ]
-    return 0 if step >= pos.length
-
-    @canvas.delete('I20')
-    where = pos[step]
-    y, f = where
-    h20(y, f)
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  def h20(y, f)
-    color = @C['20']
-    @canvas.delete('I20')
-
-    sine([208, 428, 208, y], 4, f, :tag=>['I20', 'I20s'], 
-         :width=>3, :fill=>color, :smooth=>true)
-    TkcLine.new(@canvas, @canvas.coords('I20s'), :width=>3, 
-                :fill=>color, :smooth=>1, :tag=>['I20', 'I20a'])
-    TkcLine.new(@canvas, @canvas.coords('I20s'), :width=>3, 
-                :fill=>color, :smooth=>1, :tag=>['I20', 'I20b'])
-    @canvas.move('I20a', 8, 0)
-    @canvas.move('I20b', 16, 0)
-  end
-
-  # Bucket
-  def draw21
-    color = @C['21']
-    xy = [217, 451, 244, 490]  # Right handle
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2, :tag=>'I21_a')
-    xy = [201, 467, 182, 490]  # Left handle
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2, :tag=>'I21_a')
-
-    xy = [245, 490, 237, 535]  # Right side
-    xy2 = [189, 535, 181, 490] # Left side
-    TkcPolygon.new(@canvas, xy + xy2, :fill=>color, :outline=>'', 
-                   :tag=>['I21', 'I21f'])
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2, :tag=>'I21')
-    TkcLine.new(@canvas, xy2, :fill=>@C['fg'], :width=>2, :tag=>'I21')
-
-    xy = [182, 486, 244, 498]  # Top
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>'', :width=>2, 
-                :tag=>['I21', 'I21f'])
-    TkcOval.new(@canvas, xy, :fill=>'', :outline=>@C['fg'], :width=>2, 
-                :tag=>['I21', 'I21t'])
-    xy = [189, 532, 237, 540]  # Bottom
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>2, 
-                :tag=>['I21', 'I21b'])
-  end
-
-  def move21(step = nil)
-    step = get_step(21, step)
-
-    numsteps = 30
-    return 0 if step >= numsteps
-
-    x1, y1, x2, y2 = @canvas.coords('I21b')
-    # lx1, ly1, lx2, ly2 = @canvas.coords('I21t')
-    lx1, ly1, lx2, ly2 = [183, 492, 243, 504]
-
-    f = step / numsteps.to_f
-    y2 = y2 - 3
-    xx1 = x1 + (lx1 - x1) * f
-    yy1 = y1 + (ly1 - y1) * f
-    xx2 = x2 + (lx2 - x2) * f
-    yy2 = y2 + (ly2 - y2) * f
-
-    @canvas.itemconfigure('I21b', :fill=>@C['20'])
-    @canvas.delete('I21w')
-    TkcPolygon.new(@canvas, x2, y2, x1, y1, xx1, yy1, xx2, yy1, 
-                   :tag=>['I21', 'I21w'], :outline=>'', :fill=>@C['20'])
-    @canvas.lower('I21w', 'I21')
-    @canvas.raise('I21b')
-    @canvas.lower('I21f')
-
-    return((step == numsteps - 1)? 3: 1)
-  end
-
-  # Bucket drop
-  def draw22
-    # do nothing
-  end
-
-  def move22(step = nil)
-    step = get_step(22, step)
-    pos = [[213, 513], [213, 523], [213, 543, :x], [213, 583], [213, 593]]
-
-    @canvas.itemconfigure('I21f', :fill=>@C['22']) if step == 0
-    return 0 if step >= pos.length
-    where = pos[step]
-    move_abs('I21', where)
-    h20(where[1], 40)
-    @canvas.delete('I21_a')  # Delete handles
-
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  # Blow dart
-  def draw23
-    color  = @C['23a']
-    color2 = @C['23b']
-    color3 = @C['23c']
-
-    xy = [185, 623, 253, 650]  # Block
-    TkcRectangle.new(@canvas, xy, :fill=>'black', :outline=>@C['fg'], 
-                     :width=>2, :tag=>'I23a')
-    xy = [187, 592, 241, 623]  # Balloon
-    TkcOval.new(@canvas, xy, :outline=>'', :fill=>color, :tag=>'I23b')
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :tag=>'I23b', 
-               :style=>:arc, :start=>12, :extent=>336)
-    xy = [239, 604, 258, 589, 258, 625, 239, 610]  # Balloon nozzle
-    TkcPolygon.new(@canvas, xy, :outline=>'', :fill=>color, :tag=>'I23b')
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I23b')
-
-    xy = [285, 611, 250, 603]  # Dart body
-    TkcOval.new(@canvas, xy, :fill=>color2, :outline=>@C['fg'], 
-                :width=>3, :tag=>'I23d')
-    xy = [249, 596, 249, 618, 264, 607, 249, 596]  # Dart tail
-    TkcPolygon.new(@canvas, xy, :fill=>color3, :outline=>@C['fg'], 
-                   :width=>3, :tag=>'I23d')
-    xy = [249, 607, 268, 607]  # Dart detail
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I23d')
-    xy = [285, 607, 305, 607]  # Dart needle
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I23d')
-  end
-
-  def move23(step = nil)
-    step = get_step(23, step)
-
-    pos = [
-      [277, 607], [287, 607], [307, 607, :x], [347, 607], [407, 607], 
-      [487, 607], [587, 607], [687, 607], [787, 607], [-100, -100]
-    ]
-
-    return 0 if step >= pos.length
-    if step <= 1
-      ox, oy = anchor('I23a', :n)
-      @canvas.scale('I23b', ox, oy, 0.9, 0.5)
-    end
-    where = pos[step]
-    move_abs('I23d', where)
-
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  # Balloon
-  def draw24
-    color = @C['24a']
-    xy = [366, 518, 462, 665]  # Balloon
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], 
-                :width=>3, :tag=>'I24')
-    xy = [414, 666, 414, 729]  # String
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I24')
-    xy = [410, 666, 404, 673, 422, 673, 418, 666]  # Nozzle
-    TkcPolygon.new(@canvas, xy, :fill=>color, :outline=>@C['fg'],
-                   :width=>3, :tag=>'I24')
-
-    xy = [387, 567, 390, 549, 404, 542]  # Reflections
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :smooth=>true, 
-                :width=>2, :tag=>'I24')
-    xy = [395, 568, 399, 554, 413, 547]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :smooth=>true, 
-                :width=>2, :tag=>'I24')
-    xy = [403, 570, 396, 555, 381, 553]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :smooth=>true, 
-                :width=>2, :tag=>'I24')
-    xy = [408, 564, 402, 547, 386, 545]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :smooth=>true, 
-                :width=>2, :tag=>'I24')
-  end
-
-  def move24(step = nil)
-    step = get_step(24, step)
-
-    return 0 if step > 4
-    return 2 if step == 4
-
-    if step == 0
-      @canvas.delete('I24')  # Exploding balloon
-      xy = [
-        347, 465, 361, 557, 271, 503, 272, 503, 342, 574, 259, 594, 
-        259, 593, 362, 626, 320, 737, 320, 740, 398, 691, 436, 738, 
-        436, 739, 476, 679, 528, 701, 527, 702, 494, 627, 548, 613, 
-        548, 613, 480, 574, 577, 473, 577, 473, 474, 538, 445, 508, 
-        431, 441, 431, 440, 400, 502, 347, 465, 347, 465
-      ]
-      TkcPolygon.new(@canvas, xy, :tag=>'I24', :fill=>@C['24b'], 
-                     :outline=>@C['24a'], :width=>10, :smooth=>true)
-      msg = Tk.subst(@S['message'].value)
-      TkcText.new(@canvas, centroid('I24'), :text=>msg, :tag=>['I24', 'I24t'], 
-                  :justify=>:center, :font=>['Times Roman', 18, :bold])
-      return 1
-    end
-
-    @canvas.itemconfigure('I24t', :font=>['Times Roman', 18 + 6*step, :bold])
-    @canvas.move('I24', 0, -60)
-    ox, oy = centroid('I24')
-    @canvas.scale('I24', ox, oy, 1.25, 1.25)
-    return 1
-  end
-
-  # Displaying the message
-  def move25(step = nil)
-    step = get_step(25, step)
-
-    if step == 0
-      @XY['25'] = Tk::Clock.clicks(:miliseconds)
-      return 1
-    end
-    elapsed = Tk::Clock.clicks(:miliseconds) - @XY['25']
-    return 1 if elapsed < 5000
-    return 2
-  end
-
-  # Collapsing balloon
-  def move26(step = nil)
-    step = get_step(26, step)
-
-    if step >= 3
-      @canvas.delete('I24', 'I26')
-      TkcText.new(@canvas, 430, 740, :anchor=>:s, :tag=>'I26', 
-                  :text=>'click to continue', 
-                  :font=>['Times Roman', 24, :bold])
-      @canvas.bind('1', proc{reset})
-      return 4
-    end
-
-    ox, oy = centroid('I24')
-    @canvas.scale('I24', ox, oy, 0.8, 0.8)
-    @canvas.move('I24', 0, 60)
-    @canvas.itemconfigure('I24t', :font=>['Times Roman', 30 - 6*step, :bold])
-    return 1
-  end
-
-  ################################################################
-  #
-  # Helper functions
-  #
-  def box(x, y, r)
-    [x - r, y - r, x + r, y + r]
-  end
-
-  def move_abs(item, xy)
-    x, y = xy
-    ox, oy = centroid(item)
-    dx = x - ox
-    dy = y - oy
-    @canvas.move(item, dx, dy)
-  end
-
-  def rotate_item(item, ox, oy, beta)
-    xy = @canvas.coords(item)
-    xy2 = []
-    0.step(xy.length - 1, 2){|idx|
-      x, y = xy[idx, 2]
-      xy2.concat(rotate_c(x, y, ox, oy, beta))
-    }
-    @canvas.coords(item, xy2)
-  end
-
-  def rotate_c(x, y, ox, oy, beta)
-    # rotates vector (ox,oy)->(x,y) by beta degrees clockwise
-
-    x -= ox    # Shift to origin
-    y -= oy
-
-    beta = beta * Math.atan(1) * 4 / 180.0        # Radians
-    xx = x * Math.cos(beta) - y * Math.sin(beta)  # Rotate
-    yy = x * Math.sin(beta) + y * Math.cos(beta)
-
-    xx += ox  # Shift back
-    yy += oy
-
-    [xx, yy]
-  end
-
-  def reset
-    draw_all
-    @canvas.bind_remove('1')
-    @S['mode'].value = :MSTART
-    @S['active'] = [0]
-  end
-
-  # Each Move## keeps its state info in STEP, this retrieves and increments it
-  def get_step(who, step)
-    if step
-      @STEP[who] = step
-    else
-      if !@STEP.exist?(who) || @STEP[who] == ""
-        @STEP[who] = 0
-      else
-        @STEP[who] += 1
-      end
-    end
-    @STEP[who]
-  end
-
-  def reset_step
-    @S['cnt'].value = 0
-    @STEP.keys.each{|k| @STEP[k] = ''}
-  end
-
-  def sine(xy0, amp, freq, opts = {})
-    x0, y0, x1, y1 = xy0
-    step = 2
-    xy = []
-    if y0 == y1  # Horizontal
-      x0.step(x1, step){|x|
-        beta = (x - x0) * 2 * Math::PI / freq
-        y = y0 + amp * Math.sin(beta)
-        xy << x << y
-      }
-    else
-      y0.step(y1, step){|y|
-        beta = (y - y0) * 2 * Math::PI / freq
-        x = x0 + amp * Math.sin(beta)
-        xy << x << y
-      }
-    end
-    TkcLine.new(@canvas, xy, opts)
-  end
-
-  def round_rect(xy, radius, opts={})
-    x0, y0, x3, y3 = xy
-    r = @canvas.winfo_pixels(radius)
-    d = 2 * r
-
-    # Make sure that the radius of the curve is less than 3/8 size of the box!
-    maxr = 0.75
-    if d > maxr * (x3 - x0)
-      d = maxr * (x3 - x0)
-    end
-    if d > maxr * (y3 - y0)
-      d = maxr * (y3 - y0)
-    end
-
-    x1 = x0 + d
-    x2 = x3 - d
-    y1 = y0 + d
-    y2 = y3 - d
-
-    xy = [x0, y0, x1, y0, x2, y0, x3, y0, x3, y1, x3, y2]
-    xy.concat([x3, y3, x2, y3, x1, y3, x0, y3, x0, y2, x0, y1])
-    return xy
-  end
-
-  def round_poly(canv, xy, radii, opts)
-    lenXY = xy.length
-    lenR = radii.length
-    if lenXY != 2*lenR
-      raise "wrong number of vertices and radii"
-    end
-
-    knots = []
-    x0 = xy[-2]; y0 = xy[-1]
-    x1 = xy[0];  y1 = xy[1]
-    xy << xy[0] << xy[1]
-
-    0.step(lenXY - 1, 2){|i|
-      radius = radii[i/2]
-      r = canv.winfo_pixels(radius)
-
-      x2 = xy[i+2];  y2 = xy[i+3]
-      z = _round_poly2(x0, y0, x1, y1, x2, y2, r)
-      knots.concat(z)
-
-      x0 = x1;  y0 = y1
-      x1 = x2;  y1 = y2
-    }
-    TkcPolygon.new(canv, knots, {:smooth=>true}.update(opts))
-  end
-
-  def _round_poly2(x0, y0, x1, y1, x2, y2, radius)
-    d = 2 * radius
-    maxr = 0.75
-
-    v1x = x0 - x1
-    v1y = y0 - y1
-    v2x = x2 - x1
-    v2y = y2 - y1
-
-    vlen1 = Math.sqrt(v1x*v1x + v1y*v1y)
-    vlen2 = Math.sqrt(v2x*v2x + v2y*v2y)
-
-    if d > maxr * vlen1
-      d = maxr * vlen1
-    end
-    if d > maxr * vlen2
-      d = maxr * vlen2
-    end
-
-    xy = []
-    xy << (x1 + d * v1x / vlen1) << (y1 + d * v1y / vlen1)
-    xy << x1 << y1
-    xy << (x1 + d * v2x / vlen2) << (y1 + d * v2y / vlen2)
-
-    return xy
-  end
-
-  def sparkle(oxy, tag)
-    xy = [
-      [299, 283], [298, 302], [295, 314], [271, 331], 
-      [239, 310], [242, 292], [256, 274], [281, 273]
-    ]
-    xy.each{|x, y|
-      TkcLine.new(@canvas, 271, 304, x, y, 
-                  :fill=>'white', :width=>3, :tag=>tag)
-    }
-    move_abs(tag, oxy)
-  end
-
-  def centroid(item)
-    anchor(item, :c)
-  end
-
-  def anchor(item, where)
-    x1, y1, x2, y2 = @canvas.bbox(item)
-    case(where)
-    when :n
-      y = y1
-    when :s
-      y = y2
-    else
-      y = (y1 + y2) / 2.0
-    end
-    case(where)
-    when :w
-      x = x1
-    when :e
-      x = x2
-    else
-      x = (x1 + x2) / 2.0
-    end
-    return [x, y]
-  end
-end
-
-TkGoldberg_Demo.new(base_frame)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/hello b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/hello
deleted file mode 100644 (file)
index 5e86ad7..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-
-#unless /^8\.[1-9]/ =~ Tk::TCL_VERSION && !Tk::JAPANIZED_TK
-#  require 'tkencoding'
-#end
-
-TkButton.new(nil,
-       'text'=>"Hello Ruby world!",
-       'font'=>TkFont.new('k14'),
-       'command'=>proc{print "Hello Ruby world!\n"; exit}
-).pack
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/hscale.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/hscale.rb
deleted file mode 100644 (file)
index e660216..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-require "tkcanvas"
-
-if defined?($hscale_demo) && $hscale_demo
-  $hscale_demo.destroy
-  $hscale_demo = nil
-end
-
-$hscale_demo = TkToplevel.new {|w|
-  title("Horizontal Scale Demonstration")
-  iconname("hscale")
-}
-positionWindow($hscale_demo)
-
-base_frame = TkFrame.new($hscale_demo).pack(:fill=>:both, :expand=>true)
-
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '3.5i'
-  justify 'left'
-  text "An arrow and a horizontal scale are displayed below.  If you click or drag mouse button 1 in the scale, you can change the length of the arrow."
-}
-msg.pack('side'=>'top')
-
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc {
-      tmppath = $hscale_demo
-      $hscale_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc { showCode 'hscale' }
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-
-def setWidth(w, width)
-  width = width + 21
-  x2 = width - 30
-  if x2 < 21
-    x2 = 21
-  end
-  w.coords 'poly',20,15,20,35,x2,35,x2,45,width,25,x2,5,x2,15,20,15
-  w.coords 'line',20,15,20,35,x2,35,x2,45,width,25,x2,5,x2,15,20,15
-end
-
-TkFrame.new(base_frame) {|frame|
-  canvas = TkCanvas.new(frame) {|c|
-    width 50
-    height 50
-    bd 0
-    highlightthickness 0
-    TkcPolygon.new(c, '0', '0', '1', '1', '2', '2') {
-      fill 'DeepSkyBlue'
-      tags 'poly'
-    }
-    TkcLine.new(c, '0', '0', '1', '1', '2', '2', '0', '0') {
-      fill 'black'
-      tags 'line'
-    }
-  }.pack('side'=>'top', 'expand'=>'yes', 'anchor'=>'s', 'fill'=>'x', 'padx'=>'15')
-  scale = TkScale.new(frame) {
-    orient 'horizontal'
-    length 284
-    from 0
-    to 250
-    command proc{|value| setWidth(canvas, value)}
-    tickinterval 50
-  }.pack('side'=>'bottom', 'expand'=>'yes', 'anchor'=>'n')
-  scale.set 75
-}.pack('side'=>'top', 'fill'=>'x')
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/icon.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/icon.rb
deleted file mode 100644 (file)
index a3921d2..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-# icon.rb
-#
-# This demonstration script creates a toplevel window containing
-# buttons that display bitmaps instead of text.
-#
-# iconic button widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($icon_demo) && $icon_demo
-  $icon_demo.destroy 
-  $icon_demo = nil
-end
-
-# demo toplevel widget
-$icon_demo = TkToplevel.new {|w|
-  title("Iconic Button Demonstration")
-  iconname("icon")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($icon_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '5i'
-  justify 'left'
-  text "This window shows three ways of using bitmaps or images in radiobuttons and checkbuttons.  On the left are two radiobuttons, each of which displays a bitmap and an indicator.  In the middle is a checkbutton that displays a different image depending on whether it is selected or not.  On the right is a checkbutton that displays a single bitmap but changes its background color to indicate whether or not it is selected. (This change is visible when the mouse pointer is not directy over the button.)"
-}
-msg.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $icon_demo
-      $icon_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'icon'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# image 
-flagup = \
-TkBitmapImage.new('file'=>[$demo_dir,'..',
-                           'images','flagup.xbm'].join(File::Separator),
-                  'maskfile'=>\
-                  [$demo_dir,'..','images','flagup.xbm'].join(File::Separator))
-flagdown = \
-TkBitmapImage.new('file'=>[$demo_dir,'..',
-                           'images','flagdown.xbm'].join(File::Separator),
-                  'maskfile'=>\
-                  [$demo_dir,'..',
-                    'images','flagdown.xbm'].join(File::Separator))
-
-# create variable
-letters = TkVariable.new
-
-# frame
-TkFrame.new(base_frame, 'borderwidth'=>10){|w|
-  TkFrame.new(w) {|f|
-    # TkRadioButton.new(f){
-    Tk::RadioButton.new(f){
-      bitmap '@' + [$demo_dir,'..',
-                    'images','letters.xbm'].join(File::Separator)
-      variable letters
-      value 'full'
-    }.pack('side'=>'top', 'expand'=>'yes')
-
-    # TkRadioButton.new(f){
-    Tk::RadioButton.new(f){
-      bitmap '@' + [$demo_dir,'..',
-                     'images','noletter.xbm'].join(File::Separator)
-      variable letters
-      value 'empty'
-    }.pack('side'=>'top', 'expand'=>'yes')
-
-  }.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'5m')
-
-  # TkCheckButton.new(w) {
-  Tk::CheckButton.new(w) {
-    image flagdown
-    selectimage flagup
-    indicatoron 0
-    selectcolor self['background']
-  }.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'5m')
-
-  # TkCheckButton.new(w) {
-  Tk::CheckButton.new(w) {
-    bitmap '@' + [$demo_dir,'..',
-                   'images','letters.xbm'].join(File::Separator)
-    indicatoron 0
-    selectcolor 'SeaGreen1'
-  }.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'5m')
-
-}.pack('side'=>'top')
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/image1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/image1.rb
deleted file mode 100644 (file)
index a9072bb..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-## image1.rb
-#
-# This demonstration script displays two image widgets.
-#
-# two image widgets demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($image1_demo) && $image1_demo
-  $image1_demo.destroy 
-  $image1_demo = nil
-end
-
-# demo toplevel widget
-$image1_demo = TkToplevel.new {|w|
-  title('Image Demonstration #1')
-  iconname("Image1")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($image1_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "This demonstration displays two images, each in a separate label widget."
-}
-msg.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $image1_demo
-      $image1_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'image1'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# image
-image1a = \
-TkPhotoImage.new('file'=>[$demo_dir,'..',
-                          'images','earth.gif'].join(File::Separator))
-image1b = \
-TkPhotoImage.new('file'=>[$demo_dir,'..',
-                          'images','earthris.gif'].join(File::Separator))
-
-# label
-#[ TkLabel.new(base_frame, 'image'=>image1a, 'bd'=>1, 'relief'=>'sunken'),
-#  TkLabel.new(base_frame, 'image'=>image1b, 'bd'=>1, 'relief'=>'sunken')
-#].each{|w| w.pack('side'=>'top', 'padx'=>'.5m', 'pady'=>'.5m')}
-[ Tk::Label.new(base_frame, 'image'=>image1a, 'bd'=>1, 'relief'=>'sunken'),
-  Tk::Label.new(base_frame, 'image'=>image1b, 'bd'=>1, 'relief'=>'sunken')
-].each{|w| w.pack('side'=>'top', 'padx'=>'.5m', 'pady'=>'.5m')}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/image2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/image2.rb
deleted file mode 100644 (file)
index 1975dd6..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-# image2.rb
-#
-# This demonstration script creates a simple collection of widgets
-# that allow you to select and view images in a Tk label.
-#
-# widget demo 'load image' (called by 'widget')
-#
-
-# toplevel widget
-if defined?($image2_demo) && $image2_demo
-  $image2_demo.destroy 
-  $image2_demo = nil
-end
-
-# demo toplevel widget
-$image2_demo = TkToplevel.new {|w|
-  title('Image Demonstration #2')
-  iconname("Image2")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($image2_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "This demonstration allows you to view images using a Tk \"photo\" image.  First type a directory name in the listbox, then press Enter to load the directory into the listbox.  Then double-click on a file name in the listbox to see that image."
-}
-msg.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $image2_demo
-      $image2_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'image2'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# create variable
-$dirName = TkVariable.new([$demo_dir,'..','images'].join(File::Separator))
-
-# image
-$image2a = TkPhotoImage.new
-
-#
-TkLabel.new(base_frame, 'text'=>'Directory:')\
-.pack('side'=>'top', 'anchor'=>'w')
-
-image2_e = TkEntry.new(base_frame) {
-  width 30
-  textvariable $dirName
-}.pack('side'=>'top', 'anchor'=>'w')
-
-TkFrame.new(base_frame, 'height'=>'3m', 'width'=>20)\
-.pack('side'=>'top', 'anchor'=>'w')
-
-TkLabel.new(base_frame, 'text'=>'File:')\
-.pack('side'=>'top', 'anchor'=>'w')
-
-TkFrame.new(base_frame){|w|
-  s = TkScrollbar.new(w)
-  l = TkListbox.new(w) {
-    width 20
-    height 10
-    yscrollcommand proc{|first,last| s.set first,last}
-  }
-  s.command(proc{|*args| l.yview(*args)})
-  l.pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y')
-  s.pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y')
-  #l.insert(0,'earth.gif', 'earthris.gif', 'mickey.gif', 'teapot.ppm')
-  l.insert(0,'earth.gif', 'earthris.gif', 'teapot.ppm')
-  l.bind('Double-1', proc{|x,y| loadImage $image2a,l,x,y}, '%x %y')
-
-  image2_e.bind 'Return', proc{loadDir l}
-
-}.pack('side'=>'top', 'anchor'=>'w')
-
-# image 
-[ TkFrame.new(base_frame, 'height'=>'3m', 'width'=>20),
-  TkLabel.new(base_frame, 'text'=>'Image:'),
-  TkLabel.new(base_frame, 'image'=>$image2a)
-].each{|w| w.pack('side'=>'top', 'anchor'=>'w')}
-
-# 
-def loadDir(w)
-  w.delete(0,'end')
-  Dir.glob([$dirName,'*'].join(File::Separator)).sort.each{|f|
-    w.insert('end',File.basename(f))
-  }
-end
-
-def loadImage(img,w,x,y)
-  img.file([$dirName, w.get("@#{x},#{y}")].join(File::Separator))
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/image3.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/image3.rb
deleted file mode 100644 (file)
index 43afab7..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-# image3.rb
-#
-# This demonstration script creates a simple collection of widgets
-# that allow you to select and view images in a Tk label.
-#
-# widget demo 'load image' (called by 'widget')
-#
-
-# toplevel widget
-if defined?($image3_demo) && $image3_demo
-  $image3_demo.destroy 
-  $image3_demo = nil
-end
-
-# demo toplevel widget
-$image3_demo = TkToplevel.new {|w|
-  title('Image Demonstration #3')
-  iconname("Image3")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($image3_demo).pack(:fill=>:both, :expand=>true)
-
-# 
-def loadDir3(w)
-  w.delete(0,'end')
-  Dir.glob([$dirName,'*'].join(File::Separator)).sort.each{|f|
-    w.insert('end',File.basename(f))
-  }
-end
-
-# selectAndLoadDir3 --
-# This procedure pops up a dialog to ask for a directory to load into
-# the listobx and (if the user presses OK) reloads the directory
-# listbox from the directory named in the demo's entry.
-#
-# Arguments:
-# w -                   Name of the toplevel window of the demo.
-def selectAndLoadDir3(w, lbox)
-  dir = Tk.chooseDirectory(:initialdir=>$dirName.value, 
-                           :parent=>w, :mustexist=>true)
-  if dir.length > 0
-    $dirName.value = dir 
-    loadDir3(lbox)
-  end
-end
-
-def loadImage(w,x,y)
-  $image3a.file([$dirName, w.get("@#{x},#{y}")].join(File::Separator))
-end
-
-
-# label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "This demonstration allows you to view images using a Tk \"photo\" image.  First type a directory name in the listbox, then type Return to load the directory into the listbox.  Then double-click on a file name in the listbox to see that image."
-}
-msg.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $image3_demo
-      $image3_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'image3'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# variable
-$dirName = TkVariable.new([$demo_dir,'..','images'].join(File::Separator))
-
-# image
-begin
-  $image3a.delete
-rescue
-end
-$image3a = TkPhotoImage.new
-
-#
-image3_f = TkFrame.new(base_frame).pack(:fill=>:both, :expand=>true)
-
-image3_df = TkLabelFrame.new(base_frame, :text=>'Directory:')
-
-image3_ff = TkLabelFrame.new(base_frame, :text=>'File:', 
-                             :padx=>'2m', :pady=>'2m')
-image3_lbx = TkListbox.new(image3_ff, :width=>20, :height=>10) {
-  pack(:side=>:left, :fill=>:y, :expand=>true)
-  yscrollbar(TkScrollbar.new(image3_ff).pack(:side=>:left, :fill=>:y, 
-                                             :expand=>true))
-  insert(0, *(%w(earth.gif earthris.gif teapot.ppm)))
-  bind('Double-1', proc{|x,y| loadImage(self, x, y)}, '%x %y')
-}
-
-image3_ent = TkEntry.new(image3_df, :width=>30, :textvariable=>$dirName){
-  pack(:side=>:left, :fill=>:both, :padx=>'2m', :pady=>'2m', :expand=>true)
-  bind('Return', proc{loadDir3(image3_lbx)})
-}
-
-TkButton.new(image3_df, :pady=>0, :padx=>'2m', :text=>"Select Dir.", 
-             :command=>proc{selectAndLoadDir3(image3_ent, image3_lbx)}) {
-  pack(:side=>:left, :fill=>:y, :padx=>[0, '2m'], :pady=>'2m')
-}
-
-image3_if = TkLabelFrame.new(base_frame, :text=>'Image:') {|f|
-  # TkLabel.new(f, :image=>$image3a).pack(:padx=>'2m', :pady=>'2m')
-  Tk::Label.new(f, :image=>$image3a).pack(:padx=>'2m', :pady=>'2m')
-}
-
-Tk.grid(image3_df,  '-',
-        :sticky=>:ew, :padx=>'1m', :pady=>'1m', :in=>image3_f)
-Tk.grid(image3_ff, image3_if, 
-        :sticky=>:nw, :padx=>'1m', :pady=>'1m', :in=>image3_f)
-TkGrid.columnconfigure(image3_f, 1, :weight=>1)
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/items.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/items.rb
deleted file mode 100644 (file)
index 3fd44fd..0000000
+++ /dev/null
@@ -1,381 +0,0 @@
-# items.rb
-#
-# This demonstration script creates a canvas that displays the
-# canvas item types.
-#
-# canvas item types widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($items_demo) && $items_demo
-  $items_demo.destroy 
-  $items_demo = nil
-end
-
-# demo toplevel widget
-$items_demo = TkToplevel.new {|w|
-  title("Canvas Item Demonstration")
-  iconname("Items")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($items_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-TkLabel.new(base_frame) {
-  font $font
-  wraplength '5i'
-  justify 'left'
-  text "This window contains a canvas widget with examples of the various kinds of items supported by canvases.  The following operations are supported:\n  Button-1 drag:\tmoves item under pointer.\n  Button-2 drag:\trepositions view.\n  Button-3 drag:\tstrokes out area.\n  Ctrl+f:\t\tprints items under area."
-}.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $items_demo
-      $items_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'items'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame
-cvs = nil
-TkFrame.new(base_frame) {|cf|
-  # canvas 
-  cvs = TkCanvas.new(cf) {|c|
-    focus
-    scrollregion '0c 0c 30c 24c'
-    width  '15c'
-    height '10c'
-    relief 'sunken'
-    borderwidth 2
-
-    hs = TkScrollbar.new(cf) {|s|
-      orient 'horizontal'
-      command proc{|*args| c.xview(*args)}
-      c.xscrollcommand proc{|first,last| s.set first,last}
-    }
-
-    vs = TkScrollbar.new(cf) {|s|
-      command proc{|*args| c.yview(*args)}
-      c.yscrollcommand proc{|first,last| s.set first,last}
-    }
-
-    if $tk_version =~ /^4\.[01]/
-      hs.pack('side'=>'bottom', 'fill'=>'x')
-      vs.pack('side'=>'right', 'fill'=>'y')
-      c.pack('in'=>cf, 'expand'=>'yes', 'fill'=>'both')
-
-    else
-      c.grid('in'=>cf, 'row'=>0, 'column'=>0, 
-             'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-      vs.grid('row'=>0, 'column'=>1, 
-              'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-      hs.grid('row'=>1, 'column'=>0, 
-              'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-      TkGrid.rowconfigure(cf, 0, 'weight'=>1, 'minsize'=>0)
-      TkGrid.columnconfigure(cf, 0, 'weight'=>1, 'minsize'=>0)
-
-    end
-
-  }
-}.pack('side'=>'top', 'fill'=>'both', 'expand'=>'yes')
-
-# Display a 3x3 rectangular grid
-TkcRectangle.new(cvs, '0c', '0c', '30c', '24c', 'width'=>2)
-TkcLine.new(cvs, '0c', '8c', '30c', '8c', 'width'=>2)
-TkcLine.new(cvs, '0c', '16c', '30c', '16c', 'width'=>2)
-TkcLine.new(cvs, '10c', '0c', '10c', '24c', 'width'=>2)
-TkcLine.new(cvs, '20c', '0c', '20c', '24c', 'width'=>2)
-
-if $tk_version =~ /^4.*/
-  font1 = '-Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*'
-  font2 = '-Adobe-Helvetica-Bold-R-Normal--*-240-*-*-*-*-*-*'
-else
-  font1 = 'Helvetica 12'
-  font2 = 'Helvetica 24 bold'
-end
-if TkWinfo.depth($root).to_i > 1
-  blue   = 'DeepSkyBlue3'
-  red    = 'red'
-  bisque = 'bisque3'
-  green  = 'SeaGreen3'
-else
-  blue   = 'black'
-  red    = 'black'
-  bisque = 'black'
-  green  = 'black'
-end
-
-# tag 
-$tag_item = TkcGroup.new(cvs)
-
-# Set up demos within each of the areas of the grid.
-TkcText.new(cvs, '5c', '.2c', 'text'=>'Lines', 'anchor'=>'n')
-TkcLine.new(cvs, '1c', '1c', '3c', '1c', '1c', '4c', '3c', '4c', 
-            'width'=>2, 'fill'=>blue, 'capstyle'=>'butt', 
-            'join'=>'miter', 'tags'=>$tag_item )
-TkcLine.new(cvs, '4.67c','1c','4.67c','4c', 'arrow'=>'last', 'tags'=>$tag_item)
-TkcLine.new(cvs, '6.33c','1c','6.33c','4c', 'arrow'=>'both', 'tags'=>$tag_item)
-TkcLine.new(cvs, '5c','6c','9c','6c','9c','1c','8c','1c','8c','4.8c','8.8c',
-            '4.8c','8.8c','1.2c','8.2c','1.2c','8.2c','4.6c','8.6c','4.6c',
-            '8.6c','1.4c','8.4c','1.4c','8.4c','4.4c',
-            'width'=>3, 'fill'=>red, 'tags'=>$tag_item )
-TkcLine.new(cvs, '1c','5c','7c','5c','7c','7c','9c','7c', 'width'=>'.5c', 
-            'stipple'=>'@'+[$demo_dir,'..',
-                            'images','gray25.xbm'].join(File::Separator), 
-            'arrow'=>'both', 'arrowshape'=>'15 15 7', 'tags'=>$tag_item )
-TkcLine.new(cvs, '1c','7c','1.75c','5.8c','2.5c','7c','3.25c','5.8c','4c','7c',
-            'width'=>'.5c', 'capstyle'=>'round', 'join'=>'round', 
-            'tags'=>$tag_item )
-
-TkcText.new(cvs, '15c', '.2c', 
-            'text'=>'Curves (smoothed lines)', 'anchor'=>'n')
-TkcLine.new(cvs, '11c','4c','11.5c','1c','13.5c','1c','14c','4c', 
-            'smooth'=>'on', 'fill'=>blue, 'tags'=>$tag_item )
-TkcLine.new(cvs, '15.5c','1c','19.5c','1.5c','15.5c','4.5c','19.5c','4c', 
-            'smooth'=>'on', 'arrow'=>'both', 'width'=>3, 'tags'=>$tag_item )
-TkcLine.new(cvs, '12c','6c','13.5c','4.5c','16.5c','7.5c','18c','6c', 
-            '16.5c','4.5c','13.5c','7.5c','12c','6c',
-            'smooth'=>'on', 'width'=>'3m', 'capstyle'=>'round', 
-            'stipple'=>'@'+[$demo_dir, '..',
-                            'images', 'gray25.xbm'].join(File::Separator), 
-            'fill'=>red, 'tags'=>$tag_item )
-
-TkcText.new(cvs, '25c', '.2c', 'text'=>'Polygons', 'anchor'=>'n')
-TkcPolygon.new(cvs, '21c','1.0c','22.5c','1.75c','24c','1.0c','23.25c','2.5c',
-               '24c','4.0c','22.5c','3.25c','21c','4.0c','21.75c','2.5c',
-               'fill'=>'green', 'outline'=>'black', 'width'=>4, 
-               'tags'=>$tag_item )
-TkcPolygon.new(cvs, '25c','4c','25c','4c','25c','1c','26c','1c','27c','4c',
-               '28c','1c','29c','1c','29c','4c','29c','4c',
-               'fill'=>red, 'smooth'=>'on', 'tags'=> $tag_item)
-TkcPolygon.new(cvs, '22c','4.5c','25c','4.5c','25c','6.75c','28c','6.75c',
-               '28c','5.25c','24c','5.25c','24c','6.0c','26c','6c','26c',
-               '7.5c','22c','7.5c', 
-               'stipple'=>'@' + [$demo_dir, '..',
-                                 'images', 'gray25.xbm'].join(File::Separator),
-               'outline'=>'black', 'tags'=>$tag_item )
-
-TkcText.new(cvs, '5c', '8.2c', 'text'=>'Rectangles', 'anchor'=>'n')
-TkcRectangle.new(cvs, '1c','9.5c','4c','12.5c',
-                 'outline'=>red, 'width'=>'3m', 'tags'=>$tag_item)
-TkcRectangle.new(cvs, '0.5c','13.5c','4.5c','15.5c', 
-                 'fill'=>green, 'tags'=>$tag_item )
-TkcRectangle.new(cvs, '6c','10c','9c','15c', 'outline'=>'',
-                 'stipple'=>'@'+[$demo_dir,'..',
-                                 'images','gray25.xbm'].join(File::Separator),
-                 'fill'=>blue, 'tags'=>$tag_item )
-
-TkcText.new(cvs, '15c', '8.2c', 'text'=>'Ovals', 'anchor'=>'n')
-TkcOval.new(cvs, '11c','9.5c','14c','12.5c',
-                 'outline'=>red, 'width'=>'3m', 'tags'=>$tag_item)
-TkcOval.new(cvs, '10.5c','13.5c','14.5c','15.5c', 
-                 'fill'=>green, 'tags'=>$tag_item )
-TkcOval.new(cvs, '16c','10c','19c','15c', 'outline'=>'',
-                 'stipple'=>'@'+[$demo_dir,'..',
-                                 'images','gray25.xbm'].join(File::Separator),
-                 'fill'=>blue, 'tags'=>$tag_item )
-
-TkcText.new(cvs, '25c', '8.2c', 'text'=>'Text', 'anchor'=>'n')
-TkcRectangle.new(cvs, '22.4c','8.9c','22.6c','9.1c')
-TkcText.new(cvs, '22.5c', '9c', 'anchor'=>'n', 'font'=>font1, 'width'=>'4c', 
-            'text'=>'A short string of text, word-wrapped, justified left, and anchored north (at the top).  The rectangles show the anchor points for each piece of text.', 'tags'=>$tag_item )
-TkcRectangle.new(cvs, '25.4c','10.9c','25.6c','11.1c')
-TkcText.new(cvs, '25.5c', '11c', 'anchor'=>'w', 'font'=>font1, 'fill'=>blue, 
-            'text'=>"Several lines,\n each centered\nindividually,\nand all anchored\nat the left edge.", 'justify'=>'center', 'tags'=>$tag_item )
-TkcRectangle.new(cvs, '24.9c','13.9c','25.1c','14.1c')
-if $tk_version =~ /^4\.[01]/
-  TkcText.new(cvs, '25c', '14c', 'anchor'=>'c', 'font'=>font2, 'fill'=>red, 
-              'stipple'=>'@' + [$demo_dir, '..',
-                                'images', 'grey.5'].join(File::Separator),
-              'text'=>'Stippled characters', 'tags'=>$tag_item )
-else
-  TkcText.new(cvs, '25c', '14c', 'anchor'=>'c', 'font'=>font2, 'fill'=>red, 
-              'stipple'=>'gray50', 'text'=>'Stippled characters', 
-              'tags'=>$tag_item )
-end
-
-TkcText.new(cvs, '5c', '16.2c', 'text'=>'Arcs', 'anchor'=>'n')
-TkcArc.new(cvs, '0.5c','17c','7c','20c', 'fill'=>green, 'outline'=>'black', 
-           'start'=>45, 'extent'=>270, 'style'=>'pieslice', 'tags'=>$tag_item)
-#TkcArc.new(cvs, '6.5c','17c','9.5c','20c', 'width'=>'4m', 'style'=>'arc', 
-#          'outline'=>blue, 'start'=>135, 'extent'=>270, 
-#          'outlinestipple'=>'@' + ['images', 'grey.25'].join(File::Separator),
-#          'tags'=>$tag_item)
-TkcArc.new(cvs, '6.5c','17c','9.5c','20c', 'width'=>'4m', 'style'=>'arc', 
-           'outline'=>blue, 'start'=>135, 'extent'=>270, 
-           'outlinestipple'=>'@'+[$demo_dir, '..',
-                                  'images','gray25.xbm'].join(File::Separator),
-           'tags'=>$tag_item)
-TkcArc.new(cvs, '0.5c','20c','9.5c','24c', 'width'=>'4m', 'style'=>'pieslice', 
-           'fill'=>'', 'outline'=>red, 'start'=>225, 'extent'=>90, 
-           'tags'=>$tag_item)
-TkcArc.new(cvs, '5.5c','20.5c','9.5c','23.5c', 'width'=>'4m', 'style'=>'chord',
-           'fill'=>blue, 'outline'=>'', 'start'=>45, 'extent'=>270, 
-           'tags'=>$tag_item)
-
-TkcText.new(cvs, '15c', '16.2c', 'text'=>'Bitmaps', 'anchor'=>'n')
-#TkcBitmap.new(cvs, '13c','20c',
-#             'bitmap'=>'@' + ['images', 'face'].join(File::Separator),
-#             'tags'=>$tag_item)
-TkcBitmap.new(cvs, '13c','20c',
-              'bitmap'=>'@' + [$demo_dir, '..',
-                               'images', 'face.xbm'].join(File::Separator),
-              'tags'=>$tag_item)
-#TkcBitmap.new(cvs, '17c','18.5c',
-#             'bitmap'=>'@' + ['images', 'noletters'].join(File::Separator),
-#             'tags'=>$tag_item)
-TkcBitmap.new(cvs, '17c','18.5c',
-              'bitmap'=>'@' + [$demo_dir, '..',
-                               'images', 'noletter.xbm'].join(File::Separator),
-              'tags'=>$tag_item)
-#TkcBitmap.new(cvs, '17c','21.5c',
-#             'bitmap'=>'@' + ['images', 'letters'].join(File::Separator),
-#             'tags'=>$tag_item)
-# 
-TkcBitmap.new(cvs, '17c','21.5c') {
-  bitmap '@' + [$demo_dir, '..', 'images', 'letters.xbm'].join(File::Separator)
-  tags $tag_item
-}
-#TkcBitmap.new(cvs, '17c','21.5c') {
-#  bitmap '@' + ['images', 'letters'].join(File::Separator)
-#  tags $tag_item
-#}
-
-TkcText.new(cvs, '25c', '16.2c', 'text'=>'Windows', 'anchor'=>'n')
-TkButton.new(cvs) {|b|
-  text 'Press Me'
-  command proc{butPress cvs, red}
-  TkcWindow.new(cvs, '21c','18c', 
-                'window'=>b, 'anchor'=>'nw', 'tags'=>$tag_item)
-}
-TkEntry.new(cvs, 'width'=>20, 'relief'=>'sunken') {|e|
-  insert 'end', 'Edit this text'
-  TkcWindow.new(cvs, '21c','21c', 
-                'window'=>e, 'anchor'=>'nw', 'tags'=>$tag_item)
-}
-TkScale.new(cvs, 'from'=>0, 'to'=>100, 'length'=>'6c', 'sliderlength'=>'.4c', 
-            'width'=>'.5c', 'tickinterval'=>0 ) {|scl|
-  TkcWindow.new(cvs, '28.5c','17.5c', 
-                'window'=>scl, 'anchor'=>'n', 'tags'=>$tag_item)
-}
-TkcText.new(cvs, '21c', '17.9c', 'text'=>'Button:', 'anchor'=>'sw')
-TkcText.new(cvs, '21c', '20.9c', 'text'=>'Entry:', 'anchor'=>'sw')
-TkcText.new(cvs, '28.5c', '17.4c', 'text'=>'Scale:', 'anchor'=>'s')
-
-# Set up event bindings for canvas:
-cvs.itembind($tag_item, 'Any-Enter', proc{itemEnter cvs})
-cvs.itembind($tag_item, 'Any-Leave', proc{itemLeave cvs})
-cvs.bind('2', proc{|x,y| cvs.scan_mark x,y}, '%x %y')
-cvs.bind('B2-Motion', proc{|x,y| cvs.scan_dragto x,y}, '%x %y')
-cvs.bind('3', proc{|x,y| itemMark cvs,x,y}, '%x %y')
-cvs.bind('B3-Motion', proc{|x,y| itemStroke cvs,x,y}, '%x %y')
-cvs.bind('Control-f', proc{itemsUnderArea cvs})
-cvs.bind('1', proc{|x,y| itemStartDrag cvs,x,y}, '%x %y')
-cvs.bind('B1-Motion', proc{|x,y| itemDrag cvs,x,y}, '%x %y')
-# Utility methods for highlighting the item under the pointer
-
-$restoreCmd = nil
-def itemEnter (c)
-  if TkWinfo.depth(c).to_i == 1
-    $restoreCmd = nil
-    return
-  end
-  type = c.itemtype('current')
-  if type == TkcWindow
-    $restoreCmd = nil
-    return
-  end
-  if type == TkcBitmap
-    bg = (c.itemconfiginfo('current', 'background'))[4]
-    $restoreCmd = proc{c.itemconfigure 'current', 'background', bg}
-    c.itemconfigure 'current', 'background', 'SteelBlue2'
-    return
-  end
-  fill = (c.itemconfiginfo('current', 'fill'))[4]
-  if (type == TkcRectangle || type == TkcOval || type == TkcArc) && fill == []
-    outline = (c.itemconfiginfo('current', 'outline'))[4]
-    $restoreCmd = proc{c.itemconfigure 'current', 'outline', outline}
-    c.itemconfigure 'current', 'outline', 'SteelBlue2'
-  else
-    $restoreCmd = proc{c.itemconfigure 'current', 'fill', fill}
-    c.itemconfigure 'current', 'fill', 'SteelBlue2'
-  end
-end
-
-def itemLeave(c)
-  $restoreCmd.call if $restoreCmd
-end
-
-# Utility methods for stroking out a rectangle and printing what's 
-# underneath the rectangle's area.
-
-def itemMark(c,x,y)
-  $areaX1 = c.canvasx(x)
-  $areaY1 = c.canvasy(y)
-  c.delete 'area'
-end
-
-def itemStroke(c,x,y)
-  x = c.canvasx(x)
-  y = c.canvasy(y)
-  if $areaX1 != x && $areaY1 != y
-    c.delete 'area'
-    c.addtag_withtag 'area', TkcRectangle.new(c, $areaX1, $areaY1, x, y, 
-                                              '-outline', 'black')
-    $areaX2 = x
-    $areaY2 = y
-  end
-end
-
-def itemsUnderArea(c)
-  area = c.find_withtag('area')
-  items = []
-  c.find_enclosed($areaX1,$areaY1,$areaX2,$areaY2).each{|i|
-    items.push(i) if i.gettags.include?($tag_item)
-  }
-  print "Items enclosed by area: #{items.inspect}\n"; STDOUT.flush
-  items.clear
-  c.find_overlapping($areaX1,$areaY1,$areaX2,$areaY2).each{|i|
-    items.push(i) if i.gettags.include?($tag_item)
-  }
-  print "Items overlapping area: #{items.inspect}\n"; STDOUT.flush
-end
-
-$areaX1 = 0
-$areaY1 = 0
-$areaX2 = 0
-$areaY2 = 0
-
-# Utility methods to support dragging of items.
-
-def itemStartDrag(c,x,y)
-  $lastX = c.canvasx(x)
-  $lastY = c.canvasy(y)
-end
-
-def itemDrag(c,x,y)
-  x = c.canvasx(x)
-  y = c.canvasy(y)
-  c.move 'current', x - $lastX, y - $lastY
-  $lastX = x
-  $lastY = y
-end
-
-# Method that's invoked when the button embedded in the canvas 
-# is invoked.
-
-def butPress(w,color)
-  i = TkcText.new(w, '25c', '18.1c', 
-                  'text'=>'Ouch!!', 'fill'=>color, 'anchor'=>'n')
-  Tk.after(500, proc{w.delete i})
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ixset b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ixset
deleted file mode 100644 (file)
index 979894f..0000000
+++ /dev/null
@@ -1,333 +0,0 @@
-#!/usr/bin/env ruby
-
-# ixset --
-# A nice interface to "xset" to change X server settings
-#
-
-require 'tk'
-
-class Xsettings
-  #
-  # Button actions
-  #
-  def quit
-    @root.destroy
-  end
-
-  def ok
-    writesettings
-    quit
-  end
-
-  def cancel
-    readsettings
-    dispsettings
-  end
-
-  # apply is just "writesettings"
-
-
-  #
-  # Read current settings
-  #
-  def readsettings
-    xfd = open("|xset q", 'r')
-    xfd.readlines.each{|line|
-      fields = line.chomp.strip.split(/\s+/)
-      case fields[0]
-      when "auto"
-       if fields[1] == 'repeat:'
-         @kbdrep = fields[2]
-         @w_kbdrep.set(@kbdrep)
-         @kbdcli = fields[6]
-       end
-
-      when "bell"
-       @bellvol = fields[2]
-       @bellpit = fields[5]
-       @belldur = fields[8]
-
-      when "acceleration:"
-       @mouseacc = fields[1]
-       @mousethr = fields[3]
-
-      when "prefer"
-       if fields[2] == 'yes'
-         @screenbla = 'blank'
-       else
-         @screenbla = 'noblank'
-       end
-       @w_screenbla.set(@screenbla)
-
-      when "timeout:"
-       @screentim = fields[1]
-       @screencyc = fields[3]
-
-      end
-    }
-
-    xfd.close
-  end
-
-  #
-  # Write settings into the X server
-  #
-  def writesettings
-    @bellvol = @w_bellvol.get
-    @bellpit = @w_bellpit.get
-    @belldur = @w_belldur.get
-
-    @kbdrep = @w_kbdrep.get
-    if @kbdrep == 'on'
-      @kbdcli = @w_kbdcli.get
-    else
-      @kbdcli = 'off'
-    end
-
-    @mouseacc = @w_mouseacc.get
-    @mousethr = @w_mousethr.get
-
-    @screentim = @w_screentim.get
-    @screencyc = @w_screencyc.get
-    @screenbla = @w_screenbla.get
-
-    system("xset \
-            b #{@bellvol} #{@bellpit} #{@belldur} \
-            c #{@kbdcli} \
-            r #{@kbdrep} \
-            m #{@mouseacc} #{@mousethr} \
-            s #{@screentim} #{@screencyc} \
-            s #{@screenbla}")
-  end
-
-  #
-  # Sends all settings to the window
-  #
-  def dispsettings
-    @w_bellvol.set(@bellvol)
-    @w_bellpit.set(@bellpit)
-    @w_belldur.set(@belldur)
-
-    @w_kbdonoff.set(@w_kbdrep.get)
-    @w_kbdcli.set(@kbdcli)
-
-    @w_mouseacc.set(@mouseacc)
-    @w_mousethr.set(@mousethr)
-
-    @w_screenblank.set(@w_screenbla.get)
-    @w_screenpat.set(@w_screenbla.get)
-
-    @w_screentim.set(@screentim)
-    @w_screencyc.set(@screencyc)
-  end
-
-  #
-  # Create all windows, and pack them
-  #
-  class LabelEntry
-    def initialize(parent, text, length)
-      @frame = TkFrame.new(parent)
-      TkLabel.new(@frame, 'text'=>text).pack('side'=>'left','expand'=>'y')
-      @entry = TkEntry.new(@frame, 'width'=>length, 'relief'=>'sunken') {
-       pack('side'=>'left','expand'=>'y')
-      }
-    end
-    def pack(keys)
-      @frame.pack(keys)
-    end
-    def get
-      @entry.value
-    end
-    def set(value)
-      @entry.delete(0,'end')
-      @entry.insert(0, value)
-    end
-  end
-
-  def createwindows
-    win = self
-
-    #
-    # Buttons
-    #
-    buttons = TkFrame.new(@root) {|f|
-      [ TkButton.new(f, 'command'=>proc{win.ok}, 'text'=>'Ok'),
-       TkButton.new(f, 'command'=>proc{win.writesettings}, 'text'=>'Apply'),
-       TkButton.new(f, 'command'=>proc{win.cancel}, 'text'=>'Cancel'),
-       TkButton.new(f, 'command'=>proc{win.quit}, 'text'=>'Quit') ].each{|b|
-       b.pack('side'=>'left', 'expand'=>'yes', 'pady'=>5)
-      }
-    }
-
-    #
-    # Bell settings
-    #
-    bell = TkFrame.new(@root, 'relief'=>'raised', 'borderwidth'=>2)
-    l = TkLabel.new(bell, 'text'=>'Bell Settings')
-    @w_bellvol = TkScale.new(bell, 'from'=>0, 'to'=>100, 'length'=>200, 
-                            'tickinterval'=>20, 'orient'=>'horizontal', 
-                            'label'=>"Volume (%)")
-
-    f = TkFrame.new(bell)
-    @w_bellpit = LabelEntry.new(f, "Pitch (Hz)", 6)
-    @w_bellpit.pack('side'=>'left', 'padx'=>5)
-    @w_belldur = LabelEntry.new(f, "Duration (ms)", 6)
-    @w_belldur.pack('side'=>'right', 'padx'=>5)
-
-    l.pack('side'=>'top', 'expand'=>'yes')
-    @w_bellvol.pack('side'=>'top', 'expand'=>'yes')
-    f.pack('side'=>'top', 'expand'=>'yes')
-
-    #
-    # Keyboard settings
-    # 
-    kbdonoff = nil
-    kbdcli = nil
-    kbd = TkFrame.new(@root, 'relief'=>'raised', 'borderwidth'=>2)
-    l = TkLabel.new(kbd, 'text'=>'Keyboard Repeat Settings')
-    f = TkFrame.new(kbd)
-    @w_kbdonoff = TkCheckButton.new(f, 'text'=>'On', 'relief'=>'flat', 
-                                   'onvalue'=>'on', 'offvalue'=>'off',
-                                   'variable'=>@w_kbdrep ) {
-      def self.set(value)
-       if value == 'on'
-         self.select
-       else
-         self.deselect
-       end
-      end
-      pack('side'=>'left', 'expand'=>'yes', 'fill'=>'both')
-    }
-    @w_kbdcli = TkScale.new(f, 'from'=>0, 'to'=>100, 'length'=>200, 
-                        'tickinterval'=>20, 'orient'=>'horizontal', 
-                        'label'=>'Click Volume (%)')
-    @w_kbdcli.pack('side'=>'left', 'expand'=>'yes')
-    l.pack('side'=>'top', 'expand'=>'yes')
-    f.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2, 'fill'=>'x')
-
-    #
-    # Mouse settings
-    #
-    mouse = TkFrame.new(@root, 'relief'=>'raised', 'borderwidth'=>2)
-    l = TkLabel.new(mouse, 'text'=>'Mouse Settings')
-    f = TkFrame.new(mouse)
-    @w_mouseacc = LabelEntry.new(f, 'Acceleration', 3)
-    @w_mouseacc.pack('side'=>'left')
-    @w_mousethr = LabelEntry.new(f, 'Threshold (pixels)', 3)
-    @w_mousethr.pack('side'=>'right')
-    l.pack('side'=>'top')
-    f.pack('side'=>'top', 'expand'=>'yes')
-
-    #
-    # Screen Saver settings
-    #
-    screen = TkFrame.new(@root, 'relief'=>'raised', 'borderwidth'=>2)
-    l = TkLabel.new(screen, 'text'=>'Screen-saver Settings')
-    f = TkFrame.new(screen)
-    ff1 = TkFrame.new(f)
-    [ @w_screenblank = TkRadioButton.new(ff1, 'text'=>'Blank', 
-                                        'relief'=>'flat', 
-                                        'variable'=>@w_screenbla, 
-                                        'value'=>'blank') {
-       def self.set(value)
-         if value == 'blank'
-           self.select
-         else
-           self.deselect
-         end
-       end
-      }, 
-      @w_screenpat = TkRadioButton.new(ff1, 'text'=>'Pattern', 
-                                      'relief'=>'flat', 
-                                      'variable'=>@w_screenbla, 
-                                      'value'=>'noblank') {
-       def self.set(value)
-         if value != 'blank'
-           self.select
-         else
-           self.deselect
-         end
-       end
-      }
-    ].each {|w| w.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w') }
-
-    ff2 = TkFrame.new(f)
-    [ @w_screentim = LabelEntry.new(ff2, 'Timeout (s)', 5), 
-      @w_screencyc = LabelEntry.new(ff2, 'Cycle (s)', 5) ].each{|w|
-      w.pack('side'=>'top', 'pady'=>2, 'anchor'=>'e')
-    }
-
-    ff1.pack('side'=>'left')
-    ff2.pack('side'=>'left')
-
-    l.pack('side'=>'top')
-    f.pack('side'=>'top', 'expand'=>'yes')
-
-    #
-    # Main window
-    #
-    buttons.pack('side'=>'top', 'fill'=>'both')
-    bell.pack('side'=>'top', 'fill'=>'both', 'ipady'=>5, 'expand'=>'yes')
-    kbd.pack('side'=>'top', 'fill'=>'both', 'ipady'=>5, 'expand'=>'yes')
-    mouse.pack('side'=>'top', 'fill'=>'both', 'ipady'=>5, 'expand'=>'yes')
-    screen.pack('side'=>'top', 'fill'=>'both', 'ipady'=>5, 'expand'=>'yes')
-
-    #
-    # Let the user resize our window
-    #
-    @root.minsize(10,10)
-  end
-
-  def initialize
-    @root = TkRoot.new
-
-    @kbdrep = 'on'
-    @w_kbdrep = TkVariable.new(@kbdrep)
-    def @w_kbdrep.get
-      self.value
-    end
-    def @w_kbdrep.set(val)
-      self.value=val
-    end
-
-    @kbdcli = 0
-
-    @bellvol = 100
-    @bellpit = 440
-    @belldur = 100
-
-    @mouseacc = "3/1"
-    @mousethr = 4
-
-    @screenbla = "blank"
-    @w_screenbla = TkVariable.new(@screenbla)
-    def @w_screenbla.get
-      self.value
-    end
-    def @w_screenbla.set(val)
-      self.value=val
-    end
-
-    @screentim = 600
-    @screencyc = 600
-
-    #
-    # Listen what "xset" tells us...
-    #
-    readsettings
-
-    #
-    # Create all windows
-    #
-    createwindows
-
-    #
-    # Write xset parameters
-    #
-    dispsettings
-  end
-end
-
-Xsettings.new
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ixset2 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ixset2
deleted file mode 100644 (file)
index ce8472a..0000000
+++ /dev/null
@@ -1,367 +0,0 @@
-#!/usr/bin/env ruby
-#
-# ixset --
-# A nice interface to "xset" to change X server settings
-#
-
-require 'tk'
-
-class Xsettings
-  #
-  # Button actions
-  #
-  def quit
-    @root.destroy
-  end
-
-  def ok
-    writesettings
-    quit
-  end
-
-  def cancel
-    readsettings
-    dispsettings
-    @btn_APPLY.state(:disabled)
-    @btn_CANCEL.state(:disabled)
-  end
-
-  # apply is just "writesettings"
-  def apply
-    writesettings
-    @btn_APPLY.state(:disabled)
-    @btn_CANCEL.state(:disabled)
-  end
-
-  #
-  # Read current settings
-  #
-  def readsettings
-    xfd = open("|xset q", 'r')
-    xfd.readlines.each{|line|
-      fields = line.chomp.strip.split(/\s+/)
-      case fields[0]
-      when "auto"
-       if fields[1] == 'repeat:'
-         @kbdrep = fields[2]
-         @w_kbdrep.set(@kbdrep)
-         @kbdcli = fields[6]
-       end
-
-      when "bell"
-       @bellvol = fields[2]
-       @bellpit = fields[5]
-       @belldur = fields[8]
-
-      when "acceleration:"
-       @mouseacc = fields[1]
-       @mousethr = fields[3]
-
-      when "prefer"
-       if fields[2] == 'yes'
-         @screenbla = 'blank'
-       else
-         @screenbla = 'noblank'
-       end
-       @w_screenbla.set(@screenbla)
-
-      when "timeout:"
-       @screentim = fields[1]
-       @screencyc = fields[3]
-
-      end
-    }
-
-    xfd.close
-  end
-
-  #
-  # Write settings into the X server
-  #
-  def writesettings
-    @bellvol = @w_bellvol.get
-    @bellpit = @w_bellpit.get
-    @belldur = @w_belldur.get
-
-    @kbdrep = @w_kbdrep.get
-    if @kbdrep == 'on'
-      @kbdcli = @w_kbdcli.get
-    else
-      @kbdcli = 'off'
-    end
-
-    @mouseacc = @w_mouseacc.get
-    @mousethr = @w_mousethr.get
-
-    @screentim = @w_screentim.get
-    @screencyc = @w_screencyc.get
-    @screenbla = @w_screenbla.get
-
-    system("xset \
-            b #{@bellvol} #{@bellpit} #{@belldur} \
-            c #{@kbdcli} \
-            r #{@kbdrep} \
-            m #{@mouseacc} #{@mousethr} \
-            s #{@screentim} #{@screencyc} \
-            s #{@screenbla}")
-  end
-
-  #
-  # Sends all settings to the window
-  #
-  def dispsettings
-    @w_bellvol.set(@bellvol)
-    @w_bellpit.set(@bellpit)
-    @w_belldur.set(@belldur)
-
-    @w_kbdonoff.set(@w_kbdrep.get)
-    @w_kbdcli.set(@kbdcli)
-
-    @w_mouseacc.set(@mouseacc)
-    @w_mousethr.set(@mousethr)
-
-    @w_screenblank.set(@w_screenbla.get)
-    @w_screenpat.set(@w_screenbla.get)
-
-    @w_screentim.set(@screentim)
-    @w_screencyc.set(@screencyc)
-  end
-
-  #
-  # Create all windows, and pack them
-  #
-  class LabelEntry
-    def initialize(parent, text, length, range=[])
-      @frame = TkFrame.new(parent)
-      TkLabel.new(@frame, 'text'=>text).pack('side'=>'left')
-      if range.size > 0 
-       @entry = TkSpinbox.new(@frame, 'width'=>length, 'relief'=>'sunken', 
-                              'from'=>range[0], 'to'=>range[1])
-      else
-       @entry = TkEntry.new(@frame, 'width'=>length, 'relief'=>'sunken')
-      end
-      @entry.pack('side'=>'right','expand'=>'y', 'fill'=>'x')
-    end
-    def epath
-      @frame
-    end
-    def pack(keys)
-      @frame.pack(keys)
-    end
-    def get
-      @entry.value
-    end
-    def set(value)
-      @entry.delete(0,'end')
-      @entry.insert(0, value)
-    end
-  end
-
-  def createwindows
-    win = self
-
-    #
-    # Buttons
-    #
-    btn_frame = TkFrame.new(@root)
-    buttons = [ 
-      @btn_OK = TkButton.new(btn_frame, 'command'=>proc{win.ok}, 
-                            'default'=>'active', 'text'=>'Ok'),
-      @btn_APPLY = TkButton.new(btn_frame, 'command'=>proc{win.writesettings}, 
-                               'default'=>'normal', 'text'=>'Apply', 
-                               'state'=>'disabled'),
-      @btn_CANCEL = TkButton.new(btn_frame, 'command'=>proc{win.cancel}, 
-                                'default'=>'normal', 'text'=>'Cancel', 
-                               'state'=>'disabled'),
-      @btn_QUIT = TkButton.new(btn_frame, 'command'=>proc{win.quit}, 
-                              'default'=>'normal', 'text'=>'Quit')
-    ]
-    buttons.each{|b| b.pack('side'=>'left', 'expand'=>'yes', 'pady'=>5) }
-
-    @root.bind('Return', proc{@btn_OK.flash; @btn_OK.invoke})
-    @root.bind('Escape', proc{@btn_QUIT.flash; @btn_QUIT.invoke})
-    @root.bind('1', proc{|w|
-                unless buttons.index(w)
-                  @btn_APPLY.state(:normal)
-                  @btn_CANCEL.state(:normal)
-                end
-              }, '%W')
-    @root.bind('Key', proc{|w, k|
-                unless buttons.index(w)
-                  case k
-                  when 'Return', 'Escape', 'Tab', /.*Shift.*/
-                    # do nothing
-                  else
-                    @btn_APPLY.state(:normal)
-                    @btn_CANCEL.state(:normal)
-                  end
-                end
-              }, '%W %K')
-
-    #
-    # Bell settings
-    #
-    bell = TkLabelframe.new(@root, 'text'=>'Bell Settings', 
-                           'padx'=>'1.5m', 'pady'=>'1.5m')
-    @w_bellvol = TkScale.new(bell, 'from'=>0, 'to'=>100, 'length'=>200, 
-                            'tickinterval'=>20, 'orient'=>'horizontal', 
-                            'label'=>"Volume (%)")
-
-    f = TkFrame.new(bell)
-    @w_bellpit = LabelEntry.new(f, "Pitch (Hz)", 6, [25, 20000])
-    @w_bellpit.pack('side'=>'left', 'padx'=>5)
-    @w_belldur = LabelEntry.new(f, "Duration (ms)", 6, [1, 10000])
-    @w_belldur.pack('side'=>'right', 'padx'=>5)
-
-    @w_bellvol.pack('side'=>'top', 'expand'=>'yes')
-    f.pack('side'=>'top', 'expand'=>'yes')
-
-    #
-    # Keyboard settings
-    # 
-    kbdonoff = nil
-    kbdcli = nil
-    kbd = TkLabelframe.new(@root, 'text'=>'Keyboard Repeat Settings', 
-                          'padx'=>'1.5m', 'pady'=>'1.5m')
-    f = TkFrame.new(kbd)
-    @w_kbdonoff = TkCheckButton.new(f, 'text'=>'On', 'relief'=>'flat', 
-                                   'onvalue'=>'on', 'offvalue'=>'off',
-                                   'variable'=>@w_kbdrep ) {
-      def self.set(value)
-       if value == 'on'
-         self.select
-       else
-         self.deselect
-       end
-      end
-      pack('side'=>'left', 'expand'=>'yes', 'fill'=>'x', 'padx'=>[0, '1m'])
-    }
-    @w_kbdcli = TkScale.new(f, 'from'=>0, 'to'=>100, 'length'=>200, 
-                        'tickinterval'=>20, 'orient'=>'horizontal', 
-                        'label'=>'Click Volume (%)')
-    @w_kbdcli.pack('side'=>'left', 'expand'=>'yes', 
-                  'fill'=>'x', 'padx'=>['1m', 0])
-    f.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2, 'fill'=>'x')
-
-    #
-    # Mouse settings
-    #
-    mouse = TkLabelframe.new(@root, 'text'=>'Mouse Settings', 
-                            'padx'=>'1.5m', 'pady'=>'1.5m')
-    f = TkFrame.new(mouse)
-    @w_mouseacc = LabelEntry.new(f, 'Acceleration', 5)
-    @w_mouseacc.pack('side'=>'left', 'padx'=>[0, '1m'])
-    @w_mousethr = LabelEntry.new(f, 'Threshold (pixels)', 3, [1, 2000])
-    @w_mousethr.pack('side'=>'right', 'padx'=>['1m', 0])
-    f.pack('side'=>'top', 'expand'=>'yes')
-
-    #
-    # Screen Saver settings
-    #
-    screen = TkLabelframe.new(@root, 'text'=>'Screen-saver Settings', 
-                            'padx'=>'1.5m', 'pady'=>'1.5m')
-    @w_screenblank = TkRadioButton.new(screen, 'text'=>'Blank', 
-                                      'relief'=>'flat', 'anchor'=>'w', 
-                                      'variable'=>@w_screenbla, 
-                                      'value'=>'blank') {
-      def self.set(value)
-       if value == 'blank'
-         self.select
-       else
-         self.deselect
-       end
-      end
-    }
-
-    @w_screenpat = TkRadioButton.new(screen, 'text'=>'Pattern', 
-                                    'relief'=>'flat', 'anchor'=>'w', 
-                                    'variable'=>@w_screenbla, 
-                                    'value'=>'noblank') {
-      def self.set(value)
-       if value != 'blank'
-         self.select
-       else
-         self.deselect
-       end
-      end
-    }
-
-    @w_screentim = LabelEntry.new(screen, 'Timeout (s)', 5, [1, 100000])
-    @w_screencyc = LabelEntry.new(screen, 'Cycle (s)', 5, [1, 100000])
-
-    Tk.grid(@w_screenblank, @w_screentim, 'sticky'=>'e')
-    Tk.grid(@w_screenpat, @w_screencyc, 'sticky'=>'e')
-    TkGrid.configure(@w_screenblank, @w_screenpat, 'sticky'=>'ew')
-
-    #
-    # Main window
-    #
-    param = {
-      'side'=>'top', 'fill'=>'both', 'expand'=>'yes', 
-      'padx'=>'1m', 'pady'=>'1m'
-    }
-    btn_frame.pack('side'=>'top', 'fill'=>'both')
-    bell.pack(param)
-    kbd.pack(param)
-    mouse.pack(param)
-    screen.pack(param)
-
-    #
-    # Let the user resize our window
-    #
-    @root.minsize(10,10)
-  end
-
-  def initialize(title)
-    @root = TkRoot.new('title'=>title)
-
-    @kbdrep = 'on'
-    @w_kbdrep = TkVariable.new(@kbdrep)
-    def @w_kbdrep.get
-      self.value
-    end
-    def @w_kbdrep.set(val)
-      self.value=val
-    end
-
-    @kbdcli = 0
-
-    @bellvol = 100
-    @bellpit = 440
-    @belldur = 100
-
-    @mouseacc = "3/1"
-    @mousethr = 4
-
-    @screenbla = "blank"
-    @w_screenbla = TkVariable.new(@screenbla)
-    def @w_screenbla.get
-      self.value
-    end
-    def @w_screenbla.set(val)
-      self.value=val
-    end
-
-    @screentim = 600
-    @screencyc = 600
-
-    #
-    # Listen what "xset" tells us...
-    #
-    readsettings
-
-    #
-    # Create all windows
-    #
-    createwindows
-
-    #
-    # Write xset parameters
-    #
-    dispsettings
-  end
-end
-
-Xsettings.new(File.basename($0,'.rb'))
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/knightstour.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/knightstour.rb
deleted file mode 100644 (file)
index 618fce5..0000000
+++ /dev/null
@@ -1,271 +0,0 @@
-# Based on the widget demo of Tcl/Tk8.5.2
-# The following is the original copyright text.
-#----------------------------------------------------------------------------
-# Copyright (C) 2008 Pat Thoyts <patthoyts@users.sourceforge.net>
-#
-#      Calculate a Knight's tour of a chessboard.
-#
-#      This uses Warnsdorff's rule to calculate the next square each
-#      time. This specifies that the next square should be the one that
-#      has the least number of available moves.
-#
-#      Using this rule it is possible to get to a position where
-#      there are no squares available to move into. In this implementation
-#      this occurs when the starting square is d6.
-#
-#      To solve this fault an enhancement to the rule is that if we
-#      have a choice of squares with an equal score, we should choose
-#      the one nearest the edge of the board.
-#
-#      If the call to the Edgemost function is commented out you can see
-#      this occur.
-#
-#      You can drag the knight to a specific square to start if you wish.
-#      If you let it repeat then it will choose random start positions
-#      for each new tour.
-#----------------------------------------------------------------------------
-require 'tk'
-
-class Knights_Tour
-  # Return a list of accessible squares from a given square
-  def valid_moves(square)
-    moves = []
-    [
-      [-1,-2], [-2,-1], [-2,1], [-1,2], [1,2], [2,1], [2,-1], [1,-2]
-    ].each{|col_delta, row_delta|
-      col = (square % 8) + col_delta
-      row = (square.div(8)) + row_delta
-      moves << (row * 8 + col) if row > -1 && row < 8 && col > -1 && col < 8
-    }
-    moves
-  end
-
-  # Return the number of available moves for this square
-  def check_square(square)
-    valid_moves(square).find_all{|pos| ! @visited.include?(pos)}.length
-  end
-
-  # Select the next square to move to. Returns -1 if there are no available
-  # squares remaining that we can move to.
-  def next_square(square)
-    minimum = 9
-    nxt = -1
-    valid_moves(square).each{|pos|
-      unless @visited.include?(pos)
-        cnt = check_square(pos)
-        if cnt < minimum
-          minimum = cnt
-          nxt = pos
-        elsif cnt == minimum
-          nxt = edgemost(nxt, pos)
-        end
-      end
-    }
-    nxt
-  end
-
-  # Select the square nearest the edge of the board
-  def edgemost(nxt, pos)
-    col_A = 3 - ((3.5 - nxt % 8).abs.to_i)
-    col_B = 3 - ((3.5 - pos % 8).abs.to_i)
-    row_A = 3 - ((3.5 - nxt.div(8)).abs.to_i)
-    row_B = 3 - ((3.5 - pos.div(8)).abs.to_i)
-    (col_A * row_A < col_B * row_B)? nxt : pos
-  end
-
-  # Display a square number as a standard chess square notation.
-  def _N(square)
-    '%c%d' % [(97 + square % 8), (square.div(8) + 1)]
-  end
-
-  # Perform a Knight's move and schedule the next move.
-  def move_piece(last, square)
-    @log.insert(:end, "#{@visited.length}. #{_N last} -> #{_N square}\n", '')
-    @log.see(:end)
-    @board.itemconfigure(1+last, :state=>:normal, :outline=>'black')
-    @board.itemconfigure(1+square, :state=>:normal, :outline=>'red')
-    @knight.coords(@board.coords(1+square)[0..1])
-    @visited << square
-    if (nxt = next_square(square)) != -1
-      @after_id = Tk.after(@delay.numeric){move_piece(square, nxt) rescue nil}
-    else
-      @start_btn.state :normal
-      if @visited.length == 64
-        if @initial == square
-          @log.insert :end, 'Closed tour!'
-        else
-          @log.insert :end, "Success\n", {}
-          Tk.after(@delay.numeric * 2){tour(rand(64))} if @continuous.bool
-        end
-      else
-        @log.insert :end, "FAILED!\n", {}
-      end
-    end
-  end
-
-  # Begin a new tour of the board given a random start position
-  def tour(square = nil)
-    @visited.clear
-    @log.clear
-    @start_btn.state :disabled
-    1.upto(64){|n|
-      @board.itemconfigure(n, :state=>:disabled, :outline=>'black')
-    }
-    unless square
-      square = @board.find_closest(*(@knight.coords << 0 << 65))[0].to_i - 1
-    end
-    @initial = square
-    Tk.after_idle{ move_piece(@initial, @initial) rescue nil }
-  end
-
-  def _stop
-    Tk.after_cancel(@after_id) rescue nil
-  end
-
-  def _exit
-    _stop
-    $knightstour.destroy
-  end
-
-  def set_delay(new)
-    @delay.numeric = new.to_i
-  end
-
-  def drag_start(w, x, y)
-    w.dtag('selected')
-    w.addtag('selected', :withtag, 'current')
-    @dragging = [x, y]
-  end
-
-  def drag_motion(w, x, y)
-    return unless @dragging
-    w.move('selected', x - @dragging[0], y - @dragging[1])
-    @dragging = [x, y]
-  end
-
-  def drag_end(w, x, y)
-    square = w.find_closest(x, y, 0, 65)
-    w.coords('selected', w.coords(square)[0..1])
-    w.dtag('selected')
-    @dragging = nil
-  end
-
-  def make_SeeDismiss
-    ## See Code / Dismiss
-    frame = Ttk::Frame.new($knightstour)
-    sep = Ttk::Separator.new(frame)
-    Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-    TkGrid('x', 
-           Ttk::Button.new(frame, :text=>'See Code', 
-                           :image=>$image['view'], :compound=>:left, 
-                           :command=>proc{showCode 'knightstour'}), 
-           Ttk::Button.new(frame, :text=>'Dismiss', 
-                           :image=>$image['delete'], :compound=>:left, 
-                           :command=>proc{
-                             $knightstour.destroy
-                             $knightstour = nil
-                           }), 
-           :padx=>4, :pady=>4)
-    frame.grid_columnconfigure(0, :weight=>1)
-    frame
-  end
-
-  def create_gui(parent = nil)
-    $knightstour.destroy rescue nil
-    $knightstour = Tk::Toplevel.new(parent, :title=>"Knight's tour")
-    $knightstour.withdraw
-    base_f = Ttk::Frame.new($knightstour)
-    @board = Tk::Canvas.new(base_f, :width=>240, :height=>240)
-    @log = Tk::Text.new(base_f, :width=>12, :height=>1, 
-                        :font=>'Arial 8', :background=>'white')
-    scr = @log.yscrollbar(Ttk::Scrollbar.new(base_f))
-
-    @visited = []
-    @delay = TkVariable.new(600)
-    @continuous = TkVariable.new(false)
-
-    tool_f = Ttk::Frame.new($knightstour)
-    label = Ttk::Label.new(tool_f, :text=>'Speed')
-    scale = Ttk::Scale.new(tool_f, :from=>8, :to=>2000, :variable=>@delay, 
-                           :command=>proc{|n| set_delay(n)})
-    check = Ttk::Checkbutton.new(tool_f, :text=>'Repeat', 
-                                 :variable=>@continuous)
-    @start_btn = Ttk::Button.new(tool_f, :text=>'Start', 
-                                 :command=>proc{tour()})
-    @exit_btn = Ttk::Button.new(tool_f, :text=>'Exit', 
-                                :command=>proc{_exit()})
-
-    7.downto(0){|row|
-      0.upto(7){|col|
-        if ((col & 1) ^ (row & 1)).zero?
-          fill  = 'bisque'
-          dfill = 'bisque3'
-        else
-          fill  = 'tan3'
-          dfill = 'tan4'
-        end
-        coords = [col * 30 + 4, row * 30 + 4, col * 30 + 30, row * 30 + 30]
-        @board.create(TkcRectangle, coords, 
-                      :fill=>fill, :disabledfill=>dfill,
-                      :width=>2, :state=>:disabled)
-      }
-    }
-
-    @knight_font = TkFont.new(:size=>-24)
-    @knight = TkcText.new(@board, 0, 0, :font=>@knight_font, 
-                          :text=>Tk::UTF8_String.new('\u265e'), 
-                          :anchor=>'nw', # :tags=>'knight', 
-                          :fill=>'black', :activefill=>'#600000')
-    @knight.coords(@board.coords(rand(64)+1)[0..1])
-    @knight.bind('ButtonPress-1', '%W %x %y'){|w,x,y| drag_start(w,x,y)}
-    @knight.bind('Motion', '%W %x %y'){|w,x,y| drag_motion(w,x,y)}
-    @knight.bind('ButtonRelease-1', '%W %x %y'){|w,x,y| drag_end(w,x,y)}
-
-    Tk.grid(@board, @log, scr, :sticky=>'news')
-    base_f.grid_rowconfigure(0, :weight=>1)
-    base_f.grid_columnconfigure(0, :weight=>1)
-
-    Tk.grid(base_f, '-', '-', '-', '-', '-', :sticky=>'news')
-    widgets = [label, scale, check, @start_btn]
-    sg = nil
-    unless $RubyTk_WidgetDemo
-      widgets << @exit_btn
-      if Tk.windowingsystem != 'aqua'
-        #widgets.unshift(Ttk::SizeGrip.new(tool_f))
-        Ttk::SizeGrip.new(tool_f).pack(:side=>:right, :anchor=>'se')
-      end
-    end
-    Tk.pack(widgets, :side=>:right)
-    if Tk.windowingsystem == 'aqua'
-      TkPack.configure(widgets, :padx=>[4, 4], :pady=>[12, 12])
-      TkPack.configure(widgets[0], :padx=>[4, 24])
-      TkPack.configure(widgets[-1], :padx=>[16, 4])
-    end
-
-    Tk.grid(tool_f, '-', '-', '-', '-', '-', :sticky=>'ew')
-
-    if $RubyTk_WidgetDemo
-      Tk.grid(make_SeeDismiss(), '-', '-', '-', '-', '-', :sticky=>'ew')
-    end
-
-    $knightstour.grid_rowconfigure(0, :weight=>1)
-    $knightstour.grid_columnconfigure(0, :weight=>1)
-
-    $knightstour.bind('Control-F2'){TkConsole.show}
-    $knightstour.bind('Return'){@start_btn.invoke}
-    $knightstour.bind('Escape'){@exit_btn.invoke}
-    $knightstour.bind('Destroy'){ _stop }
-    $knightstour.protocol('WM_DELETE_WINDOW'){ _exit }
-
-    $knightstour.deiconify
-    $knightstour.tkwait_destroy
-  end
-
-  def initialize(parent = nil)
-    create_gui(parent)
-  end
-end
-
-Tk.root.withdraw unless $RubyTk_WidgetDemo
-Thread.new{Tk.mainloop} if __FILE__ == $0
-Knights_Tour.new
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/label.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/label.rb
deleted file mode 100644 (file)
index 91e41e4..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-# label.rb
-#
-# This demonstration script creates a toplevel window containing
-# several label widgets.
-#
-# label widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($label_demo) && $label_demo
-  $label_demo.destroy 
-  $label_demo = nil
-end
-
-# demo toplevel widget 
-$label_demo = TkToplevel.new {|w|
-  title("Label Demonstration")
-  iconname("label")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($label_demo).pack(:fill=>:both, :expand=>true)
-
-# label 
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "Five labels are displayed below: three textual ones on the left, and a bitmap label and a text label on the right.  Labels are pretty boring because you can't do anything with them."
-}
-msg.pack('side'=>'top')
-
-# frame 
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $label_demo
-      $label_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'See Code'
-    command proc{showCode 'label'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# label demo 
-f_left = TkFrame.new(base_frame)
-f_right = TkFrame.new(base_frame)
-[f_left, f_right].each{|w| w.pack('side'=>'left', 'expand'=>'yes', 
-                                  'padx'=>10, 'pady'=>10, 'fill'=>'both')}
-
-# label 
-[ TkLabel.new(f_left, 'text'=>'First label'),
-  TkLabel.new(f_left, 'text'=>'Second label, raised', 
-              'relief'=>'raised'),
-  TkLabel.new(f_left, 'text'=>'Third label, sunken', 'relief'=>'sunken')
-].each{|w| w.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2, 'anchor'=>'w')}
-
-# TkLabel.new(f_right) {
-Tk::Label.new(f_right) {
-  bitmap('@' + [$demo_dir,'..','images','face.xbm'].join(File::Separator))
-  borderwidth 2
-  relief 'sunken'
-}.pack('side'=>'top')
-
-TkLabel.new(f_right) { text 'Tcl/Tk Proprietor' }.pack('side'=>'top')
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/labelframe.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/labelframe.rb
deleted file mode 100644 (file)
index c912ff4..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-# labelframe.rb
-#
-# This demonstration script creates a toplevel window containing
-# several labelframe widgets.
-#
-# based on "Id: labelframe.tcl,v 1.2 2001/10/30 11:21:50 dkf Exp"
-
-
-if defined?($labelframe_demo) && $labelframe_demo
-  $labelframe_demo.destroy 
-  $labelframe_demo = nil
-end
-
-$labelframe_demo = TkToplevel.new {|w|
-  title("Labelframe Demonstration")
-  iconname("labelframe")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($labelframe_demo).pack(:fill=>:both, :expand=>true)
-
-# Some information
-TkLabel.new(base_frame, 
-            :font=>$font, :wraplength=>'4i', :justify=>:left, 
-            :text=><<EOL).pack(:side=>:top)
-Labelframes are used to group related widgets together. \
-The label may be either plain text or another widget. \
-If your Tk library linked to Ruby doesn't include a 'labelframe' widget, \
-this demo doesn't work. Please use later version of Tk \
-which supports a 'labelframe' widget.
-EOL
-
-# The bottom buttons
-TkFrame.new(base_frame){|f|
-  pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
-
-  TkButton.new(f, :text=>'Dismiss', :width=>15, :command=>proc{
-                 $labelframe_demo.destroy
-                 $labelframe_demo = nil
-               }).pack(:side=>:left, :expand=>true)
-
-  TkButton.new(f, :text=>'See Code', :width=>15, :command=>proc{
-                 showCode 'labelframe'
-               }).pack(:side=>:left, :expand=>true)
-}
-
-# Demo area
-w = TkFrame.new(base_frame).pack(:side=>:bottom, :fill=>:both, 
-                                       :expand=>true)
-
-# A group of radiobuttons in a labelframe
-TkLabelFrame.new(w, :text=>'Value', 
-                 :padx=>2, :pady=>2) {|f|
-  grid(:row=>0, :column=>0, :pady=>'2m', :padx=>'2m')
-
-  v = TkVariable.new
-  (1..4).each{|i|
-    TkRadiobutton.new(f, :text=>"This is value #{i}", 
-                      :variable=>v, :value=>i) {
-      pack(:side=>:top, :fill=>:x, :pady=>2)
-    }
-  }
-}
-
-
-# Using a label window to control a group of options.
-$lfdummy = TkVariable.new(0)
-
-def lfEnableButtons(w)
-  TkWinfo.children(w).each{|child|
-    next if child.path =~ /\.cb$/
-    if $lfdummy == 1
-      child.state(:normal)
-    else
-      child.state(:disabled)
-    end
-  }
-end
-
-TkLabelFrame.new(w, :pady=>2, :padx=>2){|f|
-  TkCheckButton.new(f, :widgetname=>'cb', :variable=>$lfdummy, 
-                    :text=>"Use this option.", :padx=>0) {|cb|
-    command proc{lfEnableButtons(f)}
-    f.labelwidget(cb)
-  }
-  grid(:row=>0, :column=>1, :pady=>'2m', :padx=>'2m')
-
-  %w(Option1 Option2 Option3).each{|str|
-    TkCheckbutton.new(f, :text=>str).pack(:side=>:top, :fill=>:x, :pady=>2)
-  }
-
-  lfEnableButtons(f)
-}
-
-TkGrid.columnconfigure(w, [0,1], :weight=>1)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/mclist.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/mclist.rb
deleted file mode 100644 (file)
index a849eba..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-# mclist.rb --
-#
-# This demonstration script creates a toplevel window containing a Ttk
-# tree widget configured as a multi-column listbox.
-#
-# based on "Id: mclist.tcl,v 1.3 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($mclist_demo) && $mclist_demo
-  $mclist_demo.destroy 
-  $mclist_demo = nil
-end
-
-$mclist_demo = TkToplevel.new {|w|
-  title("Multi-Column List")
-  iconname("mclist")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($mclist_demo).pack(:fill=>:both, :expand=>true)
-
-## Explanatory text
-Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', 
-               :justify=>:left, :anchor=>'n', :padding=>[10, 2, 10, 6], 
-               :text=><<EOL).pack(:fill=>:x)
-Ttk is the new Tk themed widget set. \
-One of the widgets it includes is a tree widget, \
-which can be configured to display multiple columns of informational data \
-without displaying the tree itself. \
-This is a simple way to build a listbox that has multiple columns. \
-Clicking on the heading for a column will sort the data by that column. \
-You can also change the width of the columns \
-by dragging the boundary between them.
-EOL
-
-## See Code / Dismiss
-Ttk::Frame.new(base_frame) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'See Code', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'mclist'}), 
-         Ttk::Button.new(frame, :text=>'Dismiss', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $mclist_demo.destroy
-                           $mclist_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x)
-}
-
-container = Ttk::Frame.new(base_frame)
-tree = Ttk::Treeview.new(base_frame, :columns=>%w(country capital currency), 
-                          :show=>:headings)
-if Tk.windowingsystem != 'aqua'
-  vsb = tree.yscrollbar(Ttk::Scrollbar.new(base_frame))
-  hsb = tree.xscrollbar(Ttk::Scrollbar.new(base_frame))
-else
-  vsb = tree.yscrollbar(Tk::Scrollbar.new(base_frame))
-  hsb = tree.xscrollbar(Tk::Scrollbar.new(base_frame))
-end
-
-container.pack(:fill=>:both, :expand=>true)
-Tk.grid(tree, vsb, :in=>container, :sticky=>'nsew')
-Tk.grid(hsb,       :in=>container, :sticky=>'nsew')
-container.grid_columnconfigure(0, :weight=>1)
-container.grid_rowconfigure(0, :weight=>1)
-
-## The data we're going to insert
-data = [
-  ['Argentina',        'Buenos Aires',         'ARS'], 
-  ['Australia',                'Canberra',             'AUD'], 
-  ['Brazil',           'Brazilia',             'BRL'], 
-  ['Canada',           'Ottawa',               'CAD'], 
-  ['China',            'Beijing',              'CNY'], 
-  ['France',           'Paris',                'EUR'], 
-  ['Germany',          'Berlin',               'EUR'], 
-  ['India',            'New Delhi',            'INR'], 
-  ['Italy',            'Rome',                 'EUR'], 
-  ['Japan',            'Tokyo',                'JPY'], 
-  ['Mexico',           'Mexico City',          'MXN'], 
-  ['Russia',           'Moscow',               'RUB'], 
-  ['South Africa',     'Pretoria',             'ZAR'], 
-  ['United Kingdom',   'London',               'GBP'], 
-  ['United States',    'Washington, D.C.',     'USD'],
-]
-
-## Code to insert the data nicely
-font = Ttk::Style.lookup(tree[:style], :font)
-cols = %w(country capital currency)
-cols.zip(%w(Country Capital Currency)).each{|col, name|
-  tree.heading_configure(col, :text=>name, 
-                         :command=>proc{sort_by(tree, col, false)})
-  tree.column_configure(col, :width=>TkFont.measure(font, name))
-}
-
-data.each{|country, capital, currency|
-  #tree.insert('', :end, :values=>[country, capital, currency])
-  tree.insert(nil, :end, :values=>[country, capital, currency])
-  cols.zip([country, capital, currency]).each{|col, val|
-    len = TkFont.measure(font, "#{val}  ")
-    if tree.column_cget(col, :width) < len
-      tree.column_configure(col, :width=>len)
-    end
-  }
-}
-
-## Code to do the sorting of the tree contents when clicked on
-def sort_by(tree, col, direction)
-  tree.children(nil).map!{|row| [tree.get(row, col), row.id]} . 
-    sort(&((direction)? proc{|x, y| y <=> x}: proc{|x, y| x <=> y})) . 
-    each_with_index{|info, idx| tree.move(info[1], nil, idx)}
-
-  tree.heading_configure(col, :command=>proc{sort_by(tree, col, ! direction)})
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/menu.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/menu.rb
deleted file mode 100644 (file)
index bf6c22c..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-#
-# menus widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($menu_demo) && $menu_demo
-  $menu_demo.destroy 
-  $menu_demo = nil
-end
-
-# demo toplevel widget
-$menu_demo = TkToplevel.new {|w|
-  title("File Selection Dialogs")
-  iconname("menu")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($menu_demo).pack(:fill=>:both, :expand=>true)
-
-# menu frame
-$menu_frame = TkFrame.new(base_frame, 'relief'=>'raised', 'bd'=>2)
-$menu_frame.pack('side'=>'top', 'fill'=>'x')
-
-begin
-  windowingsystem = Tk.windowingsystem()
-rescue
-  windowingsystem = ""
-end
-
-# label
-TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left') {
-  if $tk_platform['platform'] == 'macintosh' ||
-      windowingsystem == "classic" || windowingsystem == "aqua"
-    text("This window contains a menubar with cascaded menus.  You can invoke entries with an accelerator by typing Command+x, where \"x\" is the character next to the command key symbol. The rightmost menu can be torn off into a palette by dragging outside of its bounds and releasing the mouse.")
-  else
-    text("This window contains a menubar with cascaded menus.  You can post a menu from the keyboard by typing Alt+x, where \"x\" is the character underlined on the menu.  You can then traverse among the menus using the arrow keys.  When a menu is posted, you can invoke the current entry by typing space, or you can invoke any entry by typing its underlined character.  If a menu entry has an accelerator, you can invoke the entry without posting the menu just by typing the accelerator. The rightmost menu can be torn off into a palette by selecting the first item in the menu.")
-  end
-}.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $menu_demo
-      $menu_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'menu'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# menu 
-TkMenubutton.new($menu_frame, 'text'=>'File', 'underline'=>0) {|m|
-  pack('side'=>'left')
-  TkMenu.new(m, 'tearoff'=>false) {|file_menu|
-    m.configure('menu'=>file_menu)
-    add('command', 'label'=>'Open...', 'command'=>proc{fail 'this is just a demo: no action has been defined for the "Open..." entry'})
-    add('command', 'label'=>'New', 'command'=>proc{fail 'this is just a demo: no action has been defined for the "New" entry'})
-    add('command', 'label'=>'Save', 'command'=>proc{fail 'this is just a demo: no action has been defined for the "Save" entry'})
-    add('command', 'label'=>'Save As...', 'command'=>proc{fail 'this is just a demo: no action has been defined for the "Save As..." entry'})
-    add('separator')
-    add('command', 'label'=>'Print Setup...', 'command'=>proc{fail 'this is just a demo: no action has been defined for the "Print Setup..." entry'})
-    add('command', 'label'=>'Print...', 'command'=>proc{fail 'this is just a demo: no action has been defined for the "Print..." entry'})
-    add('separator')
-    add('command', 'label'=>'Dismiss Menus Demo', 'command'=>proc{$menu_demo.destroy})
-  }
-}
-
-if $tk_platform['platform'] == 'macintosh' ||
-    windowingsystem == "classic" || windowingsystem == "aqua"
-  modifier = 'Command'
-elsif $tk_platform['platform'] == 'windows'
-  modifier = 'Control'
-else
-  modifier = 'Meta'
-end
-
-TkMenubutton.new($menu_frame, 'text'=>'Basic', 'underline'=>0) {|m|
-  pack('side'=>'left')
-  TkMenu.new(m, 'tearoff'=>false) {|basic_menu|
-    m.configure('menu'=>basic_menu)
-    add('command', 'label'=>'Long entry that does nothing')
-    ['A','B','C','D','E','F','G'].each{|c|
-      add('command', 'label'=>"Print letter \"#{c}\"", 
-          'underline'=>14, 'accelerator'=>"Meta+#{c}", 
-          'command'=>proc{print c,"\n"}, 'accelerator'=>"#{modifier}+#{c}")
-      $menu_demo.bind("#{modifier}-#{c.downcase}", proc{print c,"\n"})
-    }
-  }
-}
-
-TkMenubutton.new($menu_frame, 'text'=>'Cascades', 'underline'=>0) {|m|
-  pack('side'=>'left')
-  TkMenu.new(m, 'tearoff'=>false) {|cascade_menu|
-    m.configure('menu'=>cascade_menu)
-    add('command', 'label'=>'Print hello', 
-        'command'=>proc{print "Hello\n"}, 
-        'accelerator'=>"#{modifier}+H", 'underline'=>6)
-    $menu_demo.bind("#{modifier}-h", proc{print "Hello\n"})
-    add('command', 'label'=>'Print goodbye', 
-        'command'=>proc{print "Goodbye\n"}, 
-        'accelerator'=>"#{modifier}+G", 'underline'=>6)
-    $menu_demo.bind("#{modifier}-g", proc{print "Goodbye\n"})
-
-    TkMenu.new(cascade_menu, 'tearoff'=>false) {|cascade_check|
-      cascade_menu.add('cascade', 'label'=>'Check buttons', 
-                       'menu'=>cascade_check, 'underline'=>0)
-      oil = TkVariable.new(0)
-      add('check', 'label'=>'Oil checked', 'variable'=>oil)
-      trans = TkVariable.new(0)
-      add('check', 'label'=>'Transmission checked', 'variable'=>trans)
-      brakes = TkVariable.new(0)
-      add('check', 'label'=>'Brakes checked', 'variable'=>brakes)
-      lights = TkVariable.new(0)
-      add('check', 'label'=>'Lights checked', 'variable'=>lights)
-      add('separator')
-      add('command', 'label'=>'Show current values', 
-          'command'=>proc{showVars($menu_demo, 
-                                   ['oil', oil], 
-                                   ['trans', trans], 
-                                   ['brakes', brakes], 
-                                   ['lights', lights])} )
-      invoke 1
-      invoke 3
-    }
-
-    TkMenu.new(cascade_menu, 'tearoff'=>false) {|cascade_radio|
-      cascade_menu.add('cascade', 'label'=>'Radio buttons', 
-                       'menu'=>cascade_radio, 'underline'=>0)
-      pointSize = TkVariable.new
-      add('radio', 'label'=>'10 point', 'variable'=>pointSize, 'value'=>10)
-      add('radio', 'label'=>'14 point', 'variable'=>pointSize, 'value'=>14)
-      add('radio', 'label'=>'18 point', 'variable'=>pointSize, 'value'=>18)
-      add('radio', 'label'=>'24 point', 'variable'=>pointSize, 'value'=>24)
-      add('radio', 'label'=>'32 point', 'variable'=>pointSize, 'value'=>32)
-      add('separator')
-      style = TkVariable.new
-      add('radio', 'label'=>'Roman', 'variable'=>style, 'value'=>'roman')
-      add('radio', 'label'=>'Bold', 'variable'=>style, 'value'=>'bold')
-      add('radio', 'label'=>'Italic', 'variable'=>style, 'value'=>'italic')
-      add('separator')
-      add('command', 'label'=>'Show current values', 
-          'command'=>proc{showVars($menu_demo, 
-                                   ['pointSize', pointSize], 
-                                   ['style', style])} )
-      invoke 1
-      invoke 7
-    }
-  }
-}
-
-TkMenubutton.new($menu_frame, 'text'=>'Icons', 'underline'=>0) {|m|
-  pack('side'=>'left')
-  TkMenu.new(m, 'tearoff'=>false) {|icon_menu|
-    m.configure('menu'=>icon_menu)
-    add('command', 
-        'bitmap'=>'@'+[$demo_dir,'..',
-                        'images','pattern.xbm'].join(File::Separator),
-        'command'=>proc{TkDialog.new('title'=>'Bitmap Menu Entry', 
-                                     'text'=>'The menu entry you invoked displays a bitmap rather than a text string.  Other than this, it is just like any other menu entry.',
-                                     'bitmap'=>'', 'default'=>0, 
-                                     'buttons'=>'Dismiss')} )
-    ['info', 'questhead', 'error'].each{|icon|
-      add('command', 'bitmap'=>icon, 
-          'command'=>proc{print "You invoked the #{icon} bitmap\n"})
-    }
-  }
-}
-
-TkMenubutton.new($menu_frame, 'text'=>'More', 'underline'=>0) {|m|
-  pack('side'=>'left')
-  TkMenu.new(m, 'tearoff'=>false) {|more_menu|
-    m.configure('menu'=>more_menu)
-    [ 'An entry','Another entry','Does nothing','Does almost nothing',
-      'Make life meaningful' ].each{|i|
-      add('command', 'label'=>i, 
-          'command'=>proc{print "You invoked \"#{i}\"\n"})
-    }
-  }
-}
-
-TkMenubutton.new($menu_frame, 'text'=>'Colors', 'underline'=>0) {|m|
-  pack('side'=>'left')
-  TkMenu.new(m) {|colors_menu|
-    m.configure('menu'=>colors_menu)
-    ['red', 'orange', 'yellow', 'green', 'blue'].each{|c|
-      add('command', 'label'=>c, 'background'=>c, 
-          'command'=>proc{print "You invoked \"#{c}\"\n"})
-    }
-  }
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/menu84.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/menu84.rb
deleted file mode 100644 (file)
index 4029ce5..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-#
-# menus widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($menu84_demo) && $menu84_demo
-  $menu84_demo.destroy 
-  $menu84_demo = nil
-end
-
-# demo toplevel widget
-$menu84_demo = TkToplevel.new {|w|
-  title("File Selection Dialogs")
-  iconname("menu84")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($menu84_demo).pack(:fill=>:both, :expand=>true)
-
-begin
-  windowingsystem = Tk.windowingsystem()
-rescue
-  windowingsystem = ""
-end
-
-# label
-TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left') {
-  if $tk_platform['platform'] == 'macintosh' ||
-      windowingsystem == "classic" || windowingsystem == "aqua"
-    text("This window contains a menubar with cascaded menus.  You can invoke entries with an accelerator by typing Command+x, where \"x\" is the character next to the command key symbol. The rightmost menu can be torn off into a palette by dragging outside of its bounds and releasing the mouse.")
-  else
-    text("This window contains a menubar with cascaded menus.  You can post a menu from the keyboard by typing Alt+x, where \"x\" is the character underlined on the menu.  You can then traverse among the menus using the arrow keys.  When a menu is posted, you can invoke the current entry by typing space, or you can invoke any entry by typing its underlined character.  If a menu entry has an accelerator, you can invoke the entry without posting the menu just by typing the accelerator. The rightmost menu can be torn off into a palette by selecting the first item in the menu.")
-  end
-}.pack('side'=>'top')
-
-
-menustatus = TkVariable.new("    ")
-TkFrame.new(base_frame) {|frame|
-  TkLabel.new(frame, 'textvariable'=>menustatus, 'relief'=>'sunken', 
-              'bd'=>1, 'font'=>['Helvetica', '10'], 
-              'anchor'=>'w').pack('side'=>'left', 'padx'=>2, 
-                                  'expand'=>true, 'fill'=>'both')
-  pack('side'=>'bottom', 'fill'=>'x', 'pady'=>2)
-}
-
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $menu84_demo
-      $menu84_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'menu84'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-
-# create menu frame
-$menu84_frame = TkMenu.new($menu84_demo, 'tearoff'=>false)
-
-# menu
-TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
-  $menu84_frame.add('cascade', 'label'=>'File', 'menu'=>m, 'underline'=>0)
-  add('command', 'label'=>'Open...', 'command'=>proc{fail 'this is just a demo: no action has been defined for the "Open..." entry'})
-  add('command', 'label'=>'New', 'command'=>proc{fail 'this is just a demo: no action has been defined for the "New" entry'})
-  add('command', 'label'=>'Save', 'command'=>proc{fail 'this is just a demo: no action has been defined for the "Save" entry'})
-  add('command', 'label'=>'Save As...', 'command'=>proc{fail 'this is just a demo: no action has been defined for the "Save As..." entry'})
-  add('separator')
-  add('command', 'label'=>'Print Setup...', 'command'=>proc{fail 'this is just a demo: no action has been defined for the "Print Setup..." entry'})
-  add('command', 'label'=>'Print...', 'command'=>proc{fail 'this is just a demo: no action has been defined for the "Print..." entry'})
-  add('separator')
-  add('command', 'label'=>'Dismiss Menus Demo', 'command'=>proc{$menu84_demo.destroy})
-}
-
-if $tk_platform['platform'] == 'macintosh' ||
-    windowingsystem = "classic" || windowingsystem = "aqua"
-  modifier = 'Command'
-elsif $tk_platform['platform'] == 'windows'
-  modifier = 'Control'
-else
-  modifier = 'Meta'
-end
-
-TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
-  $menu84_frame.add('cascade', 'label'=>'Basic', 'menu'=>m, 'underline'=>0)
-  add('command', 'label'=>'Long entry that does nothing')
-  ['A','B','C','D','E','F','G'].each{|c|
-    add('command', 'label'=>"Print letter \"#{c}\"", 
-        'underline'=>14, 'accelerator'=>"Meta+#{c}", 
-        'command'=>proc{print c,"\n"}, 'accelerator'=>"#{modifier}+#{c}")
-    $menu84_demo.bind("#{modifier}-#{c.downcase}", proc{print c,"\n"})
-  }
-}
-
-TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
-  $menu84_frame.add('cascade', 'label'=>'Cascades', 'menu'=>m, 'underline'=>0)
-  add('command', 'label'=>'Print hello', 
-      'command'=>proc{print "Hello\n"}, 
-      'accelerator'=>"#{modifier}+H", 'underline'=>6)
-  $menu84_demo.bind("#{modifier}-h", proc{print "Hello\n"})
-  add('command', 'label'=>'Print goodbye', 
-      'command'=>proc{print "Goodbye\n"}, 
-      'accelerator'=>"#{modifier}+G", 'underline'=>6)
-  $menu84_demo.bind("#{modifier}-g", proc{print "Goodbye\n"})
-
-  TkMenu.new(m, 'tearoff'=>false) {|cascade_check|
-    m.add('cascade', 'label'=>'Check buttons', 
-          'menu'=>cascade_check, 'underline'=>0)
-    oil = TkVariable.new(0)
-    add('check', 'label'=>'Oil checked', 'variable'=>oil)
-    trans = TkVariable.new(0)
-    add('check', 'label'=>'Transmission checked', 'variable'=>trans)
-    brakes = TkVariable.new(0)
-    add('check', 'label'=>'Brakes checked', 'variable'=>brakes)
-    lights = TkVariable.new(0)
-    add('check', 'label'=>'Lights checked', 'variable'=>lights)
-    add('separator')
-    add('command', 'label'=>'Show current values', 
-        'command'=>proc{showVars($menu84_demo, 
-                                 ['oil', oil], 
-                                 ['trans', trans], 
-                                 ['brakes', brakes], 
-                                 ['lights', lights])} )
-    invoke 1
-    invoke 3
-  }
-
-  TkMenu.new(m, 'tearoff'=>false) {|cascade_radio|
-    m.add('cascade', 'label'=>'Radio buttons', 
-          'menu'=>cascade_radio, 'underline'=>0)
-    pointSize = TkVariable.new
-    add('radio', 'label'=>'10 point', 'variable'=>pointSize, 'value'=>10)
-    add('radio', 'label'=>'14 point', 'variable'=>pointSize, 'value'=>14)
-    add('radio', 'label'=>'18 point', 'variable'=>pointSize, 'value'=>18)
-    add('radio', 'label'=>'24 point', 'variable'=>pointSize, 'value'=>24)
-    add('radio', 'label'=>'32 point', 'variable'=>pointSize, 'value'=>32)
-    add('separator')
-    style = TkVariable.new
-    add('radio', 'label'=>'Roman', 'variable'=>style, 'value'=>'roman')
-    add('radio', 'label'=>'Bold', 'variable'=>style, 'value'=>'bold')
-    add('radio', 'label'=>'Italic', 'variable'=>style, 'value'=>'italic')
-    add('separator')
-    add('command', 'label'=>'Show current values', 
-        'command'=>proc{showVars($menu84_demo, 
-                                 ['pointSize', pointSize], 
-                                 ['style', style])} )
-    invoke 1
-    invoke 7
-  }
-}
-
-TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
-  $menu84_frame.add('cascade', 'label'=>'Icons', 'menu'=>m, 'underline'=>0)
-  add('command', 'hidemargin'=>1, 
-      'bitmap'=>'@'+[$demo_dir,'..',
-                      'images','pattern.xbm'].join(File::Separator),
-      'command'=>proc{TkDialog.new('title'=>'Bitmap Menu Entry', 
-                                   'text'=>'The menu entry you invoked displays a bitmap rather than a text string.  Other than this, it is just like any other menu entry.',
-                                   'bitmap'=>'', 'default'=>0, 
-                                   'buttons'=>'Dismiss')} )
-  ['info', 'questhead', 'error'].each{|icon|
-    add('command', 'bitmap'=>icon, 'hidemargin'=>1, 
-        'command'=>proc{print "You invoked the #{icon} bitmap\n"})
-  }
-
-  entryconfigure(2, :columnbreak=>true)
-}
-
-TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
-  $menu84_frame.add('cascade', 'label'=>'More', 'menu'=>m, 'underline'=>0)
-  [ 'An entry','Another entry','Does nothing','Does almost nothing',
-    'Make life meaningful' ].each{|i|
-    add('command', 'label'=>i, 
-        'command'=>proc{print "You invoked \"#{i}\"\n"})
-  }
-
-  m.entryconfigure('Does almost nothing', 
-                   'bitmap'=>'questhead', 'compound'=>'left', 
-                   'command'=>proc{
-                     TkDialog.new('title'=>'Compound Menu Entry', 
-                                  'message'=>'The menu entry you invoked'+
-                                             'displays both a bitmap and '+
-                                             'a text string.  Other than '+
-                                             'this, it isjust like any '+
-                                             'other menu entry.', 
-                                  'buttons'=>['OK'], 'bitmap'=>'')
-                   })
-}
-
-TkMenu.new($menu84_frame) {|m|
-  $menu84_frame.add('cascade', 'label'=>'Colors', 'menu'=>m, 'underline'=>0)
-  ['red', 'orange', 'yellow', 'green', 'blue'].each{|c|
-    add('command', 'label'=>c, 'background'=>c, 
-        'command'=>proc{print "You invoked \"#{c}\"\n"})
-  }
-}
-
-$menu84_demo.menu($menu84_frame)
-
-TkMenu.bind('<MenuSelect>', proc{|w|
-              begin
-                label = w.entrycget('active', 'label')
-              rescue
-                label = "    "
-              end
-              menustatus.value = label
-              Tk.update(true)
-            }, '%W')
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/menubu.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/menubu.rb
deleted file mode 100644 (file)
index b37367e..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-# menubutton.rb
-#
-# This demonstration script creates a window with a bunch of menus
-# and cascaded menus using menubuttons.
-
-require "tkcanvas"
-
-def optionMenu(menubutton, varName, firstValue, *rest)
-  varName.value = firstValue
-  configoptions = {'textvariable'=>varName,'indicatoron'=>'on',
-    'relief'=>'raised','borderwidth'=>2,'highlightthickness'=>2,
-    'anchor'=>'c','direction'=>'flush'}
-  configoptions.each {|key, value|
-    menubutton.configure(key, value)
-  }
-  menu = TkMenu.new(menubutton) {
-    tearoff 'off'
-    add 'radio', 'label'=>firstValue, 'variable'=>varName
-  }
-  menubutton.menu(menu)
-  for i in rest
-    menu.add 'radio', 'label'=>i, 'variable'=>varName
-  end
-  
-  return menu
-end
-
-if defined?($menubu_demo) && $menubu_demo
-  $menubu_demo.destroy
-  $menubu_demo = nil
-end
-
-$menubu_demo = TkToplevel.new {|w|
-  title("Menu Button Demonstration")
-  iconname("menubutton")
-}
-
-positionWindow($menubu_demo)
-
-base_frame = TkFrame.new($menubu_demo).pack(:fill=>:both, :expand=>true)
-
-# version check
-if $tk_version.to_f < 8.0
-
-# label
-TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left') {
-    text("This is a demonstration of menubuttons. The \"Below\" menubutton pops its menu below the button; the \"Right\" button pops to the right, etc. There are two option menus directly below this text; one is just a standard menu and the other is a 16-color palette.")
-}.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $menubu_demo
-      $menubu_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'menubu'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-else ; # Tk8.x
-
-body = TkFrame.new(base_frame)
-body.pack('expand'=>'yes', 'fill'=>'both')
-
-below = TkMenubutton.new(body) {
-  text "Below"
-  underline 0
-  direction 'below'
-  relief 'raised'
-}
-belowMenu = TkMenu.new(below) {
-  tearoff 0
-  add 'command', 'label'=>"Below menu: first item", 'command'=>proc {puts "\"You have selected the first item from the Below menu.\""}
-  add 'command', 'label'=>"Below menu: second item", 'command'=>proc {puts "\"You have selected the second item from the Below menu.\""}
-}
-below.menu(belowMenu)
-below.grid('row'=>0, 'column'=>1, 'sticky'=>'n')
-
-below = TkMenubutton.new(body) {
-  text "Below"
-  underline 0
-  direction 'below'
-  relief 'raised'
-}
-belowMenu = TkMenu.new(below) {
-  tearoff 0
-  add 'command', 'label'=>"Below menu: first item", 'command'=>proc {puts "\"You have selected the first item from the Below menu.\""}
-  add 'command', 'label'=>"Below menu: second item", 'command'=>proc {puts "\"You have selected the second item from the Below menu.\""}
-}
-below.menu(belowMenu)
-below.grid('row'=>0, 'column'=>1, 'sticky'=>'n')
-
-below = TkMenubutton.new(body) {
-  text "Below"
-  underline 0
-  direction 'below'
-  relief 'raised'
-}
-belowMenu = TkMenu.new(below) {
-  tearoff 0
-  add 'command', 'label'=>"Below menu: first item", 'command'=>proc {puts "\"You have selected the first item from the Below menu.\""}
-  add 'command', 'label'=>"Below menu: second item", 'command'=>proc {puts "\"You have selected the second item from the Below menu.\""}
-}
-below.menu(belowMenu)
-below.grid('row'=>0, 'column'=>1, 'sticky'=>'n')
-
-right = TkMenubutton.new(body) {
-  text "Right"
-  underline 0
-  direction 'right'
-  relief 'raised'
-}
-rightMenu = TkMenu.new(right) {
-  tearoff 0
-  add 'command', 'label'=>"Right menu: first item", 'command'=>proc {puts "\"You have selected the first item from the Left menu.\""}
-  add 'command', 'label'=>"Right menu: second item", 'command'=>proc {puts "\"You have selected the second item from the Right menu.\""}
-}
-right.menu(rightMenu)
-right.grid('row'=>1, 'column'=>0, 'sticky'=>'w')
-
-left = TkMenubutton.new(body) {
-  text "Left"
-  underline 0
-  direction 'left'
-  relief 'raised'
-}
-leftMenu = TkMenu.new(left) {
-  tearoff 0
-  add 'command', 'label'=>"Left menu: first item", 'command'=>proc {puts "\"You have selected the first item from the Left menu.\""}
-  add 'command', 'label'=>"Left menu: second item", 'command'=>proc {puts "\"You have selected the second item from the Left menu.\""}
-}
-left.menu(leftMenu)
-left.grid('row'=>1, 'column'=>2, 'sticky'=>'e')
-
-center = TkFrame.new(body) {
-  grid('row'=>1, 'column'=>1, 'sticky'=>'news')
-}
-
-above = TkMenubutton.new(body) {
-  text "Above"
-  underline 0
-  direction 'above'
-  relief 'raised'
-}
-aboveMenu = TkMenu.new(above) {
-  tearoff 0
-  add 'command', 'label'=>"Above menu: first item", 'command'=>proc {puts "\"You have selected the first item from the Above menu.\""}
-  add 'command', 'label'=>"Above menu: second item", 'command'=>proc {puts "\"You have selected the second item from the Above menu.\""}
-}
-above.menu(aboveMenu)
-above.grid('row'=>2, 'column'=>1, 'sticky'=>'s')
-
-center = TkFrame.new(body) {
-  grid('row'=>1, 'column'=>1, 'sticky'=>'news')
-}
-
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc {
-      tmppath = $menubu_demo
-      $menubu_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc { showCode 'menubu' }
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'expand'=>'yes', 'fill'=>'x', 'pady'=>'2m')
-
-msg = TkLabel.new(center) {
-#  font $font
-  wraplength '4i'
-  justify 'left'
-  text "This is a demonstration of menubuttons. The \"Below\" menubutton pops its menu below the button; the \"Right\" button pops to the right, etc. There are two option menus directly below this text; one is just a standard menu and the other is a 16-color palette."
-}
-msg.pack('side'=>'top', 'padx'=>25, 'pady'=>25)
-
-TkFrame.new(center) {|f|
-  menubuttonoptions = TkVariable.new
-  mbutton = TkMenubutton.new(f)
-  options = optionMenu(mbutton, menubuttonoptions, 
-                       'one', 'two', 'three')
-  mbutton.pack('side'=>'left', 'padx'=>25, 'pady'=>25)
-  paletteColor = TkVariable.new
-  colors = ['Black','red4','DarkGreen','NavyBlue', 'gray75',
-    'Red','Green','Blue','gray50','Yellow','Cyan','Magenta',
-    'White','Brown','DarkSeaGreen','DarkViolet']
-  colorMenuButton = TkMenubutton.new(f)
-  m = optionMenu(colorMenuButton, paletteColor, *colors)
-  begin
-    windowingsystem = Tk.windowingsystem()
-  rescue
-    windowingsystem = ""
-  end
-  if windowingsystem == "classic" || windowingsystem == "aqua"
-    topBorderColor = 'Black'
-    bottomBorderColor = 'Black'
-  else
-    topBorderColor = 'gray50'
-    bottomBorderColor = 'gray75'
-  end
-  for i in 0..15
-    image = TkPhotoImage.new('height'=>16, 'width'=>16)
-    image.put(topBorderColor, 0, 0, 16, 1)
-    image.put(topBorderColor, 0, 1, 1, 16)
-    image.put(bottomBorderColor, 0, 15, 16, 16)
-    image.put(bottomBorderColor, 15, 1, 16, 16)
-    image.put(colors[i], 1, 1, 15, 15)
-
-    selectimage = TkPhotoImage.new('height'=>16, 'width'=>16)
-    selectimage.put('Black', 0, 0, 16, 2)
-    selectimage.put('Black', 0, 2, 2, 16)
-    selectimage.put('Black', 2, 14, 16, 16)
-    selectimage.put('Black', 14, 2, 16, 14)
-    selectimage.put(colors[i], 2, 2, 14, 14)
-
-    m.entryconfigure(i, 'image'=>image, 'selectimage'=>selectimage, 'hidemargin'=>'on')
-  end
-  m.configure('tearoff', 'on')
-  for c in ['Black', 'gray75', 'gray50', 'White']
-    m.entryconfigure(c, 'columnbreak'=>1)
-  end
-  colorMenuButton.pack('side'=>'left', 'padx'=>25, 'pady'=>25)
-  pack 'padx'=>25, 'pady'=>25
-}
-
-end ; # Tk8.x
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/msgbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/msgbox.rb
deleted file mode 100644 (file)
index 62b1f2b..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-# msgbox.rb
-#
-# This demonstration script creates message boxes of various type
-#
-# message boxes widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($msgbox_demo) && $msgbox_demo
-  $msgbox_demo.destroy 
-  $msgbox_demo = nil
-end
-
-# demo toplevel widget
-$msgbox_demo = TkToplevel.new {|w|
-  title("Message Box Demonstration")
-  iconname("messagebox")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($msgbox_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'4i', 'justify'=>'left',
-            'text'=>"Choose the icon and type option of the message box. Then press the \"Message Box\" button to see the message box.").pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $msgbox_demo
-      $msgbox_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'msgbox'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Message Box'
-    command proc{showMessageBox $msgbox_demo}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame
-$msgbox_leftframe  = TkFrame.new(base_frame)
-$msgbox_rightframe = TkFrame.new(base_frame)
-$msgbox_leftframe .pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y', 
-                        'pady'=>'.5c', 'padx'=>'.5c')
-$msgbox_rightframe.pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y', 
-                        'pady'=>'.5c', 'padx'=>'.5c')
-
-TkLabel.new($msgbox_leftframe, 'text'=>'Icon').pack('side'=>'top')
-TkFrame.new($msgbox_leftframe, 'relief'=>'ridge', 'bd'=>1, 'height'=>2)\
-.pack('side'=>'top', 'fill'=>'x', 'expand'=>'no')
-
-$msgboxIcon = TkVariable.new('info')
-['error', 'info', 'question', 'warning'].each {|icon|
-  TkRadioButton.new($msgbox_leftframe, 'text'=>icon, 'variable'=>$msgboxIcon, 
-                    'relief'=>'flat', 'value'=>icon, 'width'=>16, 
-                    'anchor'=>'w').pack('side'=>'top', 'pady'=>2, 
-                                        'anchor'=>'w', 'fill'=>'x')
-}
-
-TkLabel.new($msgbox_rightframe, 'text'=>'Type').pack('side'=>'top')
-TkFrame.new($msgbox_rightframe, 'relief'=>'ridge', 'bd'=>1, 'height'=>2)\
-.pack('side'=>'top', 'fill'=>'x', 'expand'=>'no')
-
-$msgboxType = TkVariable.new('ok')
-['abortretryignore', 'ok', 'okcancel', 
-  'retrycancel', 'yesno', 'yesnocancel'].each {|type|
-  TkRadioButton.new($msgbox_rightframe, 'text'=>type, 'variable'=>$msgboxType, 
-                    'relief'=>'flat', 'value'=>type, 'width'=>16, 
-                    'anchor'=>'w').pack('side'=>'top', 'pady'=>2, 
-                                        'anchor'=>'w', 'fill'=>'x')
-}
-
-def showMessageBox(w)
-  button = Tk.messageBox('icon'=>$msgboxIcon.value, 'type'=>$msgboxType.value, 
-                         'title'=>'Message', 'parent'=>w,
-                         'message'=>"This is a \"#{$msgboxType.value}\" type messagebox with the \"#{$msgboxIcon.value}\" icon")
-
-  Tk.messageBox('icon'=>'info', 'type'=>'ok', 'parent'=>w, 
-                'message'=>"You have selected  \"#{button}\"")
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/msgbox2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/msgbox2.rb
deleted file mode 100644 (file)
index 6fe6c77..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-# msgbox2.rb
-#
-# This demonstration script creates message boxes of various type
-#
-# message boxes widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($msgbox2_demo) && $msgbox2_demo
-  $msgbox2_demo.destroy 
-  $msgbox2_demo = nil
-end
-
-# demo toplevel widget
-$msgbox2_demo = TkToplevel.new {|w|
-  title("Message Box Demonstration")
-  iconname("messagebox")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($msgbox2_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'4i', 'justify'=>'left',
-            'text'=>"Choose the icon and type option of the message box. Then press the \"Message Box\" button to see the message box with both of a message and a detail.").pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $msgbox2_demo
-      $msgbox2_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'msgbox2'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Message Box'
-    command proc{showMessageBox $msgbox2_demo}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame
-$msgbox_leftframe  = TkFrame.new(base_frame)
-$msgbox_rightframe = TkFrame.new(base_frame)
-$msgbox_leftframe .pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y', 
-                        'pady'=>'.5c', 'padx'=>'.5c')
-$msgbox_rightframe.pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y', 
-                        'pady'=>'.5c', 'padx'=>'.5c')
-
-TkLabel.new($msgbox_leftframe, 'text'=>'Icon').pack('side'=>'top')
-TkFrame.new($msgbox_leftframe, 'relief'=>'ridge', 'bd'=>1, 'height'=>2)\
-.pack('side'=>'top', 'fill'=>'x', 'expand'=>'no')
-
-$msgboxIcon = TkVariable.new('info')
-['error', 'info', 'question', 'warning'].each {|icon|
-  TkRadioButton.new($msgbox_leftframe, 'text'=>icon, 'variable'=>$msgboxIcon, 
-                    'relief'=>'flat', 'value'=>icon, 'width'=>16, 
-                    'anchor'=>'w').pack('side'=>'top', 'pady'=>2, 
-                                        'anchor'=>'w', 'fill'=>'x')
-}
-
-TkLabel.new($msgbox_rightframe, 'text'=>'Type').pack('side'=>'top')
-TkFrame.new($msgbox_rightframe, 'relief'=>'ridge', 'bd'=>1, 'height'=>2)\
-.pack('side'=>'top', 'fill'=>'x', 'expand'=>'no')
-
-$msgboxType = TkVariable.new('ok')
-['abortretryignore', 'ok', 'okcancel', 
-  'retrycancel', 'yesno', 'yesnocancel'].each {|type|
-  TkRadioButton.new($msgbox_rightframe, 'text'=>type, 'variable'=>$msgboxType, 
-                    'relief'=>'flat', 'value'=>type, 'width'=>16, 
-                    'anchor'=>'w').pack('side'=>'top', 'pady'=>2, 
-                                        'anchor'=>'w', 'fill'=>'x')
-}
-
-def showMessageBox(w)
-  button = Tk.messageBox('icon'=>$msgboxIcon.value, 'type'=>$msgboxType.value, 
-                         'title'=>'Message', 'parent'=>w,
-                         'message'=>"\"#{$msgboxType.value}\" Type MessageBox",
-                         'detail'=>"This is a \"#{$msgboxType.value}\" type messagebox with the \"#{$msgboxIcon.value}\" icon. Please click one of the following button.")
-
-  Tk.messageBox('icon'=>'info', 'type'=>'ok', 'parent'=>w, 
-                'message'=>"You have selected  \"#{button}\"")
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/paned1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/paned1.rb
deleted file mode 100644 (file)
index 26941b8..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# paned1.rb
-#
-# This demonstration script creates a toplevel window containing
-# a paned window that separates two windows horizontally.
-#
-# based on "Id: paned1.tcl,v 1.1 2002/02/22 14:07:01 dkf Exp"
-
-if defined?($paned1_demo) && $paned1_demo
-  $paned1_demo.destroy 
-  $paned1_demo = nil
-end
-
-$paned1_demo = TkToplevel.new {|w|
-  title("Horizontal Paned Window Demonstration")
-  iconname("paned1")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($paned1_demo).pack(:fill=>:both, :expand=>true)
-
-TkLabel.new(base_frame, 
-            :font=>$font, :wraplength=>'4i', :justify=>:left, 
-            :text=><<EOL).pack(:side=>:top)
-The sash between the two coloured windows below can be used to divide the area between them.  Use the left mouse button to resize without redrawing by just moving the sash, and use the middle mouse button to resize opaquely (always redrawing the windows in each position.)
-If your Tk library linked to Ruby doesn't include a 'panedwindow', this demo doesn't work. Please use later version of Tk which supports a 'panedwindow'.
-EOL
-
-# The bottom buttons
-TkFrame.new(base_frame){|f|
-  pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
-
-  TkButton.new(f, :text=>'Dismiss', :width=>15, :command=>proc{
-                 $paned1_demo.destroy
-                 $paned1_demo = nil
-               }).pack(:side=>:left, :expand=>true)
-
-  TkButton.new(f, :text=>'See Code', :width=>15, :command=>proc{
-                 showCode 'paned1'
-               }).pack(:side=>:left, :expand=>true)
-}
-
-TkPanedwindow.new(base_frame, :orient=>:horizontal){|f|
-  add(Tk::Label.new(f, :text=>"This is the\nleft side", :bg=>'yellow'), 
-      Tk::Label.new(f, :text=>"This is the\nright side", :bg=>'cyan'))
-
-  pack(:side=>:top, :expand=>true, :fill=>:both, :pady=>2, :padx=>'2m')
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/paned2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/paned2.rb
deleted file mode 100644 (file)
index 0e62013..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-# paned2.rb --
-#
-# This demonstration script creates a toplevel window containing
-# a paned window that separates two windows vertically.
-#
-# based on "Id: paned2.tcl,v 1.1 2002/02/22 14:07:01 dkf Exp"
-
-if defined?($paned2_demo) && $paned2_demo
-  $paned2_demo.destroy 
-  $paned2_demo = nil
-end
-
-$paned2_demo = TkToplevel.new {|w|
-  title("Vertical Paned Window Demonstration")
-  iconname("paned2")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($paned2_demo).pack(:fill=>:both, :expand=>true)
-
-TkLabel.new(base_frame, 
-            :font=>$font, :wraplength=>'4i', :justify=>:left, 
-            :text=><<EOL).pack(:side=>:top)
-The sash between the two scrolled windows below can be used to divide the area between them.  Use the left mouse button to resize without redrawing by just moving the sash, and use the middle mouse button to resize opaquely (always redrawing the windows in each position.)
-If your Tk library linked to Ruby doesn't include a 'panedwindow', this demo doesn't work. Please use later version of Tk which supports a 'panedwindow'.
-EOL
-
-# The bottom buttons
-TkFrame.new(base_frame){|f|
-  pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
-
-  TkButton.new(f, :text=>'Dismiss', :width=>15, :command=>proc{
-                 $paned2_demo.destroy
-                 $paned2_demo = nil
-               }).pack(:side=>:left, :expand=>true)
-
-  TkButton.new(f, :text=>'See Code', :width=>15, :command=>proc{
-                 showCode 'paned2'
-               }).pack(:side=>:left, :expand=>true)
-}
-
-paneList = TkVariable.new  # define as normal variable (not array)
-paneList.value = [         # ruby's array --> tcl's list
-    'List of Ruby/Tk Widgets',
-    'TkButton', 
-    'TkCanvas', 
-    'TkCheckbutton', 
-    'TkEntry', 
-    'TkFrame', 
-    'TkLabel', 
-    'TkLabelframe', 
-    'TkListbox', 
-    'TkMenu', 
-    'TkMenubutton', 
-    'TkMessage', 
-    'TkPanedwindow', 
-    'TkRadiobutton', 
-    'TkScale', 
-    'TkScrollbar', 
-    'TkSpinbox', 
-    'TkText', 
-    'TkToplevel'
-]
-
-# Create the pane itself
-TkPanedwindow.new(base_frame, :orient=>:vertical){|f|
-  pack(:side=>:top, :expand=>true, :fill=>:both, :pady=>2, :padx=>'2m')
-
-  add(TkFrame.new(f){|paned2_top|
-        TkListbox.new(paned2_top, :listvariable=>paneList) {
-          # Invert the first item to highlight it
-          itemconfigure(0, :background=>self.cget(:foreground), 
-                           :foreground=>self.cget(:background) )
-          yscrollbar(TkScrollbar.new(paned2_top).pack(:side=>:right, 
-                                                      :fill=>:y))
-          pack(:fill=>:both, :expand=>true)
-        }
-      }, 
-
-      TkFrame.new(f, :height=>120) {|paned2_bottom|
-        # The bottom window is a text widget with scrollbar
-        paned2_xscr = TkScrollbar.new(paned2_bottom)
-        paned2_yscr = TkScrollbar.new(paned2_bottom)
-        paned2_text = TkText.new(paned2_bottom, :width=>30, :wrap=>:non) {
-          insert('1.0', "This is just a normal text widget")
-          xscrollbar(paned2_xscr)
-          yscrollbar(paned2_yscr)
-        }
-        Tk.grid(paned2_text, paned2_yscr, :sticky=>'nsew')
-        Tk.grid(paned2_xscr, :sticky=>'nsew')
-        TkGrid.columnconfigure(paned2_bottom, 0, :weight=>1)
-        TkGrid.rowconfigure(paned2_bottom, 0, :weight=>1)
-      } )
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/pendulum.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/pendulum.rb
deleted file mode 100644 (file)
index 5f7d361..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-#
-# This demonstration illustrates how Tcl/Tk can be used to construct
-# simulations of physical systems.
-# (called by 'widget')
-#
-# based on Tcl/Tk8.5a2 widget demos
-
-# destroy toplevel widget for this demo script
-if defined?($pendulum_demo) && $pendulum_demo
-  $pendulum_demo.destroy 
-  $pendulum_demo = nil
-end
-
-# create toplevel widget
-$pendulum_demo = TkToplevel.new {|w|
-  title("Pendulum Animation Demonstration")
-  iconname("pendulum")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($pendulum_demo).pack(:fill=>:both, :expand=>true)
-
-# create label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text 'This demonstration shows how Ruby/Tk can be used to carry out animations that are linked to simulations of physical systems. In the left canvas is a graphical representation of the physical system itself, a simple pendulum, and in the right canvas is a graph of the phase space of the system, which is a plot of the angle (relative to the vertical) against the angular velocity. The pendulum bob may be repositioned by clicking and dragging anywhere on the left canvas.'
-}
-msg.pack('side'=>'top')
-
-# create frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $pendulum_demo
-      $pendulum_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'See Code'
-    command proc{showCode 'pendulum'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# animated wave
-class PendulumAnimationDemo
-  def initialize(frame)
-    # Create some structural widgets
-    @pane = TkPanedWindow.new(frame, :orient=>:horizontal).pack(:fill=>:both, :expand=>true)
-#    @pane.add(@lf1 = TkLabelFrame.new(@pane, :text=>'Pendulum Simulation'))
-#    @pane.add(@lf2 = TkLabelFrame.new(@pane, :text=>'Phase Space'))
-    @lf1 = TkLabelFrame.new(@pane, :text=>'Pendulum Simulation')
-    @lf2 = TkLabelFrame.new(@pane, :text=>'Phase Space')
-
-    # Create the canvas containing the graphical representation of the
-    # simulated system.
-    @c = TkCanvas.new(@lf1, :width=>320, :height=>200, :background=>'white', 
-                      :borderwidth=>2, :relief=>:sunken)
-    TkcText.new(@c, 5, 5, :anchor=>:nw, 
-                :text=>'Click to Adjust Bob Start Position')
-    # Coordinates of these items don't matter; they will be set properly below
-    @plate = TkcLine.new(@c, 0, 25, 320, 25, :width=>2, :fill=>'grey50')
-    @rod = TkcLine.new(@c, 1, 1, 1, 1, :width=>3, :fill=>'black')
-    @bob = TkcOval.new(@c, 1, 1, 2, 2, 
-                       :width=>3, :fill=>'yellow', :outline=>'black')
-    TkcOval.new(@c, 155, 20, 165, 30, :fill=>'grey50', :outline=>'')
-
-    # pack
-    @c.pack(:fill=>:both, :expand=>true)
-
-    # Create the canvas containing the phase space graph; this consists of
-    # a line that gets gradually paler as it ages, which is an extremely
-    # effective visual trick.
-    @k = TkCanvas.new(@lf2, :width=>320, :height=>200, :background=>'white', 
-                      :borderwidth=>2, :relief=>:sunken)
-    @y_axis = TkcLine.new(@k, 160, 200, 160, 0, :fill=>'grey75', :arrow=>:last)
-    @x_axis = TkcLine.new(@k, 0, 100, 320, 100, :fill=>'grey75', :arrow=>:last)
-
-    @graph = {}
-    90.step(0, -10){|i|
-      # Coordinates of these items don't matter; 
-      # they will be set properly below
-      @graph[i] = TkcLine.new(@k, 0, 0, 1, 1, :smooth=>true, :fill=>"grey#{i}")
-    }
-
-    # labels
-    @label_theta = TkcText.new(@k, 0, 0, :anchor=>:ne, 
-                               :text=>'q', :font=>'Symbol 8')
-    @label_dtheta = TkcText.new(@k, 0, 0, :anchor=>:ne, 
-                               :text=>'dq', :font=>'Symbol 8')
-
-    # pack
-    @k.pack(:fill=>:both, :expand=>true)
-
-    # Initialize some variables
-    @points = []
-    @theta = 45.0
-    @dTheta = 0.0
-    @length = 150
-
-    # animation loop
-    @timer = TkTimer.new(15){ repeat }
-
-    # binding
-    @c.bindtags_unshift(btag = TkBindTag.new)
-    btag.bind('Destroy'){ @timer.stop }
-    btag.bind('1', proc{|x, y| @timer.stop; showPendulum(x.to_i, y.to_i)}, 
-              '%x %y')
-    btag.bind('B1-Motion', proc{|x, y| showPendulum(x.to_i, y.to_i)}, '%x %y')
-    btag.bind('ButtonRelease-1', 
-              proc{|x, y| showPendulum(x.to_i, y.to_i); @timer.start }, 
-              '%x %y')
-
-    btag.bind('Configure', proc{|w| @plate.coords(0, 25, w.to_i, 25)}, '%w')
-
-    @k.bind('Configure', proc{|h, w| 
-              h = h.to_i
-              w = w.to_i
-              @psh = h/2; 
-              @psw = w/2
-              @x_axis.coords(2, @psh, w-2, @psh)
-              @y_axis.coords(@psw, h-2, @psw, 2)
-              @label_theta.coords(@psw-4, 6)
-              @label_dtheta.coords(w-6, @psh+4)
-            }, '%h %w')
-
-    # add
-    Tk.update
-    @pane.add(@lf1)
-    @pane.add(@lf2)
-
-    # init display
-    showPendulum
-
-    # animation start
-    @timer.start(500)
-  end
-
-  # This procedure makes the pendulum appear at the correct place on the
-  # canvas. If the additional arguments x, y are passed instead of computing 
-  # the position of the pendulum from the length of the pendulum rod and its 
-  # angle, the length and angle are computed in reverse from the given 
-  # location (which is taken to be the centre of the pendulum bob.)
-  def showPendulum(x=nil, y=nil)
-    if x && y && (x != 160 || y != 25)
-      @dTheta = 0.0
-      x2 = x - 160
-      y2 = y - 25
-      @length = Math.hypot(x2, y2)
-      @theta = Math.atan2(x2,y2)*180/Math::PI
-    else
-      angle = @theta*Math::PI/180
-      x = 160 + @length*Math.sin(angle)
-      y = 25 + @length*Math.cos(angle)
-    end
-
-    @rod.coords(160, 25, x, y)
-    @bob.coords(x-15, y-15, x+15, y+15)
-  end
-
-  # Update the phase-space graph according to the current angle and the
-  # rate at which the angle is changing (the first derivative with
-  # respect to time.)
-  def showPhase
-    unless @psw && @psh
-      @psw = @k.width/2
-      @psh = @k.height/2
-    end
-    @points << @theta + @psw << -20*@dTheta + @psh
-    if @points.length > 100
-      @points = @points[-100..-1]
-    end
-    (0...100).step(10){|i|
-      first = - i
-      last = 11 - i
-      last = -1 if last >= 0
-      next if first > last
-      lst = @points[first..last]
-      @graph[i].coords(lst) if lst && lst.length >= 4
-    }
-  end
-
-  # This procedure is the "business" part of the simulation that does
-  # simple numerical integration of the formula for a simple rotational
-  # pendulum.
-  def recomputeAngle
-    scaling = 3000.0/@length/@length
-
-    # To estimate the integration accurately, we really need to
-    # compute the end-point of our time-step.  But to do *that*, we
-    # need to estimate the integration accurately!  So we try this
-    # technique, which is inaccurate, but better than doing it in a
-    # single step.  What we really want is bound up in the
-    # differential equation:
-    #       ..             - sin theta
-    #      theta + theta = -----------
-    #                         length
-    # But my math skills are not good enough to solve this!
-
-    # first estimate
-    firstDDTheta = -Math.sin(@theta * Math::PI/180) * scaling
-    midDTheta = @dTheta + firstDDTheta
-    midTheta = @theta + (@dTheta + midDTheta)/2
-    # second estimate
-    midDDTheta = -Math.sin(midTheta * Math::PI/180) * scaling
-    midDTheta = @dTheta + (firstDDTheta + midDDTheta)/2
-    midTheta = @theta + (@dTheta + midDTheta)/2
-    # Now we do a double-estimate approach for getting the final value
-    # first estimate
-    midDDTheta = -Math.sin(midTheta * Math::PI/180) * scaling
-    lastDTheta = midDTheta + midDDTheta
-    lastTheta = midTheta + (midDTheta+ lastDTheta)/2
-    # second estimate
-    lastDDTheta = -Math.sin(lastTheta * Math::PI/180) * scaling
-    lastDTheta = midDTheta + (midDDTheta + lastDDTheta)/2
-    lastTheta = midTheta + (midDTheta + lastDTheta)/2
-    # Now put the values back in our globals
-    @dTheta = lastDTheta
-    @theta = lastTheta
-  end
-
-  # This method ties together the simulation engine and the graphical
-  # display code that visualizes it.
-  def repeat
-    # Simulate
-    recomputeAngle
-
-    # Update the display
-    showPendulum
-    showPhase
-  end
-end
-
-# Start the animation processing
-PendulumAnimationDemo.new(base_frame)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/plot.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/plot.rb
deleted file mode 100644 (file)
index 628c9df..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-# plot.rb
-#
-# This demonstration script creates a canvas widget showing a 2-D
-# plot with data points that can be dragged with the mouse.
-#
-# 2-D plot widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($plot_demo) && $plot_demo
-  $plot_demo.destroy 
-  $plot_demo = nil
-end
-
-# demo toplevel widget
-$plot_demo = TkToplevel.new {|w|
-  title("Plot Demonstration")
-  iconname("Plot")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($plot_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'4i', 'justify'=>'left', 
-            'text'=>"This window displays a canvas widget containing a simple 2-dimensional plot.  You can doctor the data by dragging any of the points with mouse button 1."){
-  pack('side'=>'top')
-}
-
-# frame
-$plot_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $plot_demo
-      $plot_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'plot'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$plot_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# font 
-plotFont = '-*-Helvetica-Medium-R-Normal--*-180-*-*-*-*-*-*'
-
-# canvas 
-$plot_canvas = TkCanvas.new(base_frame,'relief'=>'raised','width'=>450,'height'=>300)
-$plot_canvas.pack('side'=>'top', 'fill'=>'x')
-
-# plot 
-TkcLine.new($plot_canvas, 100, 250, 400, 250, 'width'=>2)
-TkcLine.new($plot_canvas, 100, 250, 100,  50, 'width'=>2)
-TkcText.new($plot_canvas, 225, 20, 
-            'text'=>"A Simple Plot", 'font'=>plotFont, 'fill'=>'brown')
-
-(0..10).each {|i|
-  x = 100 + (i * 30)
-  TkcLine.new($plot_canvas, x, 250, x, 245, 'width'=>2)
-  TkcText.new($plot_canvas, x, 254, 
-              'text'=>10*i, 'font'=>plotFont, 'anchor'=>'n')
-}
-(0..5).each {|i|
-  y = 250 - (i * 40)
-  TkcLine.new($plot_canvas, 100, y, 105, y, 'width'=>2)
-  TkcText.new($plot_canvas, 96, y, 
-              'text'=>"#{i*50}.0", 'font'=>plotFont, 'anchor'=>'e')
-}
-
-for xx, yy in [[12,56],[20,94],[33,98],[32,120],[61,180],[75,160],[98,223]]
-  x = 100 + (3*xx)
-  y = 250 - (4*yy)/5
-  item = TkcOval.new($plot_canvas, x-6, y-6, x+6, y+6, 
-                     'width'=>1, 'outline'=>'black', 'fill'=>'SkyBlue2')
-  item.addtag 'point'
-end
-
-$plot_canvas.itembind('point', 'Any-Enter', 
-                      proc{$plot_canvas.itemconfigure 'current','fill','red'})
-$plot_canvas.itembind('point', 'Any-Leave', 
-                      proc{$plot_canvas.itemconfigure 'current','fill','SkyBlue2'})
-$plot_canvas.itembind('point', '1', 
-                      proc{|x,y| plotDown $plot_canvas,x,y}, "%x %y")
-$plot_canvas.itembind('point', 'ButtonRelease-1', 
-                      proc{$plot_canvas.dtag 'selected'})
-$plot_canvas.bind('B1-Motion', 
-                  proc{|x,y| plotMove $plot_canvas,x,y}, "%x %y")
-
-$plot = {'lastX'=>0, 'lastY'=>0}
-
-# plotDown --
-# This method is invoked when the mouse is pressed over one of the 
-# data points.  It sets up state to allow the point to be dragged.
-#
-# Arguments:
-# w -           The canvas window.
-# x, y -        The coordinates of the mouse press.
-
-def plotDown (w, x, y)
-  w.dtag 'selected'
-  w.addtag_withtag 'selected', 'current'
-  w.raise 'current'
-  $plot['lastX'] = x
-  $plot['lastY'] = y
-end
-
-# plotMove --
-# This method is invoked during mouse motion events.  It drags the
-# current item.
-#
-# Arguments:
-# w -           The canvas window.
-# x, y -        The coordinates of the mouse.
-
-def plotMove (w, x, y)
-  w.move 'selected', x - $plot['lastX'], y - $plot['lastY']
-  $plot['lastX'] = x
-  $plot['lastY'] = y
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/puzzle.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/puzzle.rb
deleted file mode 100644 (file)
index 43c61f5..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-# puzzle.rb
-#
-# This demonstration script creates a 15-puzzle game using a collection
-# of buttons.
-#
-# widet demo 'puzzle' (called by 'widget')
-#
-
-# toplevel widget
-if defined?($puzzle_demo) && $puzzle_demo
-  $puzzle_demo.destroy 
-  $puzzle_demo = nil
-end
-
-# demo toplevel widget
-$puzzle_demo = TkToplevel.new {|w|
-  title("15-Puzzle Demonstration")
-  iconname("15-Puzzle")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($puzzle_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "A 15-puzzle appears below as a collection of buttons.  Click on any of the pieces next to the space, and that piece will slide over the space.  Continue this until the pieces are arranged in numerical order from upper-left to lower-right."
-}
-msg.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $puzzle_demo
-      $puzzle_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'puzzle'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame
-
-# Special trick: select a darker color for the space by creating a
-# scrollbar widget and using its trough color.
-begin
-  if Tk.windowingsystem() == 'aqua'
-    frameWidth  = 168
-    frameHeight = 168
-  elsif Tk.default_widget_set == :Ttk
-    frameWidth  = 148
-    frameHeight = 124
-  else
-    frameWidth  = 120
-    frameHeight = 120
-  end
-rescue
-  frameWidth  = 120
-  frameHeight = 120
-end
-
-# depend_on_button_width = true
-depend_on_button_width = false
-s = TkScrollbar.new(base_frame)
-base = TkFrame.new(base_frame) {
-  width  frameWidth
-  height frameHeight
-  borderwidth 2
-  relief 'sunken'
-  bg s['troughcolor']
-}
-s.destroy
-base.pack('side'=>'top', 'padx'=>'1c', 'pady'=>'1c')
-
-def def_puzzleswitch_proc(w, num)
-  proc{puzzleSwitch w, num}
-end
-
-$xpos = {}
-$ypos = {}
-order = [3,1,6,2,5,7,15,13,4,11,8,9,14,10,12]
-(0..14).each{|i|
-  num = order[i]
-  $xpos[num] = (i % 4) * 0.25
-  $ypos[num] = (i / 4) * 0.25
-  TkButton.new(base) {|w|
-    relief 'raised'
-    text num
-    highlightthickness 0
-    command def_puzzleswitch_proc(w, num)
-    if depend_on_button_width && (w.winfo_reqwidth * 4 > base.width)
-      base.width = w.winfo_reqwidth * 4
-    end
-  }.place('relx'=>$xpos[num], 'rely'=>$ypos[num], 
-          'relwidth'=>0.25, 'relheight'=>0.25)
-}
-$xpos['space'] = 0.75
-$ypos['space'] = 0.75
-
-
-# puzzleSwitch --
-# This procedure is invoked when the user clicks on a particular button;
-# if the button is next to the empty space, it moves the button into the
-# empty space.
-
-def puzzleSwitch(w, num)
-  if ( ($ypos[num] >= ($ypos['space'] - 0.01))     \
-      && ($ypos[num] <= ($ypos['space'] + 0.01))   \
-      && ($xpos[num] >= ($xpos['space'] - 0.26))   \
-      && ($xpos[num] <= ($xpos['space'] + 0.26)))  \
-    || (($xpos[num] >= ($xpos['space'] - 0.01))    \
-        && ($xpos[num] <= ($xpos['space'] + 0.01)) \
-        && ($ypos[num] >= ($ypos['space'] - 0.26)) \
-        && ($ypos[num] <= ($ypos['space'] + 0.26)))
-    tmp = $xpos['space']
-    $xpos['space'] = $xpos[num]
-    $xpos[num] = tmp
-    tmp = $ypos['space']
-    $ypos['space'] = $ypos[num]
-    $ypos[num] = tmp
-    w.place('relx'=>$xpos[num], 'rely'=>$ypos[num])
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/radio.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/radio.rb
deleted file mode 100644 (file)
index 25cfac2..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-# radio.rb
-#
-# This demonstration script creates a toplevel window containing
-# several radiobutton widgets.
-#
-# radiobutton widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($radio_demo) && $radio_demo
-  $radio_demo.destroy 
-  $radio_demo = nil
-end
-
-# demo toplevel widget
-$radio_demo = TkToplevel.new {|w|
-  title("Radiobutton Demonstration")
-  iconname("radio")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($radio_demo).pack(:fill=>:both, :expand=>true)
-
-# label 
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "Two groups of radiobuttons are displayed below.  If you click on a button then the button will become selected exclusively among all the buttons in its group.  A Tcl variable is associated with each group to indicate which of the group's buttons is selected.  Click the \"See Variables\" button to see the current values of the variables."
-}
-msg.pack('side'=>'top')
-
-# 
-size = TkVariable.new
-color = TkVariable.new
-
-# frame 
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $radio_demo
-      $radio_demo = nil
-      $showVarsWin[tmppath.path] = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'radio'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'See Variables'
-    command proc{
-      showVars(base_frame, ['size', size], ['color', color])
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame 
-f_left = TkFrame.new(base_frame)
-f_right = TkFrame.new(base_frame)
-f_left.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
-f_right.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
-
-# radiobutton 
-[10, 12, 18, 24].each {|sz|
-  TkRadioButton.new(f_left) {
-    text "Point Size #{sz}"
-    variable size
-    relief 'flat'
-    value sz
-  }.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w')
-}
-
-['Red', 'Green', 'Blue', 'Yellow', 'Orange', 'Purple'].each {|col|
-  TkRadioButton.new(f_right) {
-    text col
-    variable color
-    relief 'flat'
-    value col.downcase
-  }.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w')
-}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/radio2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/radio2.rb
deleted file mode 100644 (file)
index 6c02aef..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-# radio2.rb
-#
-# This demonstration script creates a toplevel window containing
-# several radiobutton widgets.
-#
-# radiobutton widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($radio2_demo) && $radio2_demo
-  $radio2_demo.destroy 
-  $radio2_demo = nil
-end
-
-# demo toplevel widget
-$radio2_demo = TkToplevel.new {|w|
-  title("Radiobutton Demonstration 2")
-  iconname("radio2")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($radio2_demo).pack(:fill=>:both, :expand=>true)
-
-# label 
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '5i'
-  justify 'left'
-  text "Three groups of radiobuttons are displayed below.  If you click on a button then the button will become selected exclusively among all the buttons in its group.  A Tcl variable is associated with each group to indicate which of the group's buttons is selected.  Click the \"See Variables\" button to see the current values of the variables."
-}
-msg.pack('side'=>'top')
-
-# 
-size = TkVariable.new
-color = TkVariable.new
-align = TkVariable.new
-
-# frame 
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $radio2_demo
-      $radio2_demo = nil
-      $showVarsWin[tmppath.path] = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'radio2'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'See Variables'
-    command proc{
-      showVars(base_frame, 
-               ['size', size], ['color', color], ['compound', align])
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame 
-f_left  = TkLabelFrame.new(base_frame, 'text'=>'Point Size', 
-                           'pady'=>2, 'padx'=>2)
-f_mid   = TkLabelFrame.new(base_frame, 'text'=>'Color', 
-                           'pady'=>2, 'padx'=>2)
-f_right = TkLabelFrame.new(base_frame, 'text'=>'Alignment', 
-                           'pady'=>2, 'padx'=>2)
-f_left.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
-f_mid.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
-f_right.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
-
-# radiobutton 
-[10, 12, 18, 24].each {|sz|
-  TkRadioButton.new(f_left) {
-    text "Point Size #{sz}"
-    variable size
-    relief 'flat'
-    value sz
-  }.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w', 'fill'=>'x')
-}
-
-['Red', 'Green', 'Blue', 'Yellow', 'Orange', 'Purple'].each {|col|
-  TkRadioButton.new(f_mid) {
-    text col
-    variable color
-    relief 'flat'
-    value col.downcase
-    anchor 'w'
-  }.pack('side'=>'top', 'pady'=>2, 'fill'=>'x')
-}
-
-# label = TkLabel.new(f_right, 'text'=>'Label', 'bitmap'=>'questhead', 
-label = Tk::Label.new(f_right, 'text'=>'Label', 'bitmap'=>'questhead', 
-                    'compound'=>'left')
-label.configure('width'=>TkWinfo.reqwidth(label), 'compound'=>'top')
-label.height(TkWinfo.reqheight(label))
-abtn = ['Top', 'Left', 'Right', 'Bottom'].collect{|a|
-  lower = a.downcase
-  TkRadioButton.new(f_right, 'text'=>a, 'variable'=>align, 'relief'=>'flat', 
-                    'value'=>lower, 'indicatoron'=>0, 'width'=>7, 
-                    'command'=>proc{label.compound(align.value)})
-}
-
-Tk.grid('x', abtn[0])
-Tk.grid(abtn[1], label, abtn[2])
-Tk.grid('x', abtn[3])
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/radio3.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/radio3.rb
deleted file mode 100644 (file)
index 9c9d75e..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-# radio3.rb
-#
-# This demonstration script creates a toplevel window containing
-# several radiobutton widgets.
-#
-# radiobutton widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($radio3_demo) && $radio3_demo
-  $radio3_demo.destroy 
-  $radio3_demo = nil
-end
-
-# demo toplevel widget
-$radio3_demo = TkToplevel.new {|w|
-  title("Radiobutton Demonstration 3")
-  iconname("radio3")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($radio3_demo).pack(:fill=>:both, :expand=>true)
-
-# label 
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '5i'
-  justify 'left'
-  text "Three groups of radiobuttons are displayed below.  If you click on a button then the button will become selected exclusively among all the buttons in its group.  A Tcl variable is associated with each group to indicate which of the group's buttons is selected.  When the 'Tristate' button is pressed, the radio buttons will display the tri-state mode. Selecting any radio button will return the buttons to their respective on/off state. Click the \"See Variables\" button to see the current values of the variables."
-}
-msg.grid(:row=>0, :column=>0, :columnspan=>3, :sticky=>'nsew')
-
-# variable
-size = TkVariable.new
-color = TkVariable.new
-align = TkVariable.new
-
-# frame 
-TkFrame.new(base_frame) {|frame|
-  TkGrid(TkFrame.new(frame, :height=>2, :relief=>:sunken, :bd=>2), 
-         :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         TkButton.new(frame, :text=>'See Variables', 
-                      :image=>$image['view'], :compound=>:left, 
-                      :command=>proc{
-                        showVars(base_frame, ['size', size], 
-                                 ['color', color], ['compound', align])
-                      }), 
-         TkButton.new(frame, :text=>'See Code', 
-                      :image=>$image['view'], :compound=>:left, 
-                      :command=>proc{showCode 'radio3'}), 
-         TkButton.new(frame, :text=>'Dismiss', 
-                      :image=>$image['delete'], :compound=>:left, 
-                      :command=>proc{
-                        tmppath = $radio3_demo
-                        $radio3_demo = nil
-                        $showVarsWin[tmppath.path] = nil
-                        tmppath.destroy
-                      }), 
-         :padx=>4, :pady=>4)
-  frame.grid_columnconfigure(0, :weight=>1)
-  TkGrid(frame, :row=>3, :column=>0, :columnspan=>3, :sticky=>'nsew')
-}
-
-# frame 
-f_left  = TkLabelFrame.new(base_frame, 'text'=>'Point Size', 
-                           'pady'=>2, 'padx'=>2)
-f_mid   = TkLabelFrame.new(base_frame, 'text'=>'Color', 
-                           'pady'=>2, 'padx'=>2)
-f_right = TkLabelFrame.new(base_frame, 'text'=>'Alignment', 
-                           'pady'=>2, 'padx'=>2)
-f_left .grid('column'=>0, 'row'=>1, 'pady'=>'.5c', 'padx'=>'.5c', 'rowspan'=>2)
-f_mid  .grid('column'=>1, 'row'=>1, 'pady'=>'.5c', 'padx'=>'.5c', 'rowspan'=>2)
-f_right.grid('column'=>2, 'row'=>1, 'pady'=>'.5c', 'padx'=>'.5c')
-
-TkButton.new(base_frame, 'text'=>'Tristate', 
-             'command'=>proc{size.value = 'multi'; color.value = 'multi'}){
-  grid('column'=>2, 'row'=>2, 'pady'=>'.5c', 'padx'=>'.5c')
-}
-
-# radiobutton 
-[10, 12, 14, 18, 24].each {|sz|
-  TkRadioButton.new(f_left) {
-    text "Point Size #{sz}"
-    variable size
-    relief 'flat'
-    value sz
-    tristatevalue 'multi'
-  }.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w', 'fill'=>'x')
-}
-
-['Red', 'Green', 'Blue', 'Yellow', 'Orange', 'Purple'].each {|col|
-  TkRadioButton.new(f_mid) {
-    text col
-    variable color
-    relief 'flat'
-    value col.downcase
-    anchor 'w'
-    tristatevalue 'multi'
-    command proc{f_mid.fg(color.value)}
-  }.pack('side'=>'top', 'pady'=>2, 'fill'=>'x')
-}
-
-# label = TkLabel.new(f_right, 'text'=>'Label', 'bitmap'=>'questhead', 
-label = Tk::Label.new(f_right, 'text'=>'Label', 'bitmap'=>'questhead', 
-                    'compound'=>'left')
-label.configure('width'=>TkWinfo.reqwidth(label), 'compound'=>'top')
-label.height(TkWinfo.reqheight(label))
-a_btn = ['Top', 'Left', 'Right', 'Bottom'].collect{|a|
-  TkRadioButton.new(f_right, 'text'=>a, 'variable'=>align, 'relief'=>'flat', 
-                    'value'=>a.downcase, 'indicatoron'=>0, 'width'=>7, 
-                    'command'=>proc{label.compound(align.value)})
-}
-
-Tk.grid('x', a_btn[0])
-Tk.grid(a_btn[1], label, a_btn[2])
-Tk.grid('x', a_btn[3])
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/rmt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/rmt
deleted file mode 100644 (file)
index 73f6311..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-#!/usr/bin/env ruby
-
-# rmt -- 
-# This script implements a simple remote-control mechanism for 
-# Tk applications.  It allows you to select an application and 
-# then type commands to that application. 
-
-require 'tk'
-
-class Rmt
-  def initialize(parent=nil)
-    win = self
-
-    unless parent
-      parent = TkRoot.new
-    end
-    root = TkWinfo.toplevel(parent)
-    root.minsize(1,1)
-
-    # The instance variable below keeps track of the remote application 
-    # that we're sending to.  If it's an empty string then we execute 
-    # the commands locally. 
-    @app = 'local'
-    @mode = 'Ruby'
-
-    # The instance variable below keeps track of whether we're in the 
-    # middle of executing a command entered via the text. 
-    @executing = 0
-
-    # The instance variable below keeps track of the last command executed, 
-    # so it can be re-executed in response to !! commands. 
-    @lastCommand = ""
-
-    # Create menu bar.  Arrange to recreate all the information in the 
-    # applications sub-menu whenever it is cascaded to. 
-
-    TkFrame.new(root, 'relief'=>'raised', 'bd'=>2) {|f|
-      pack('side'=>'top', 'fill'=>'x')
-      TkMenubutton.new(f, 'text'=>'File', 'underline'=>0) {|mb|
-       TkMenu.new(mb) {|mf|
-         mb.menu(mf)
-         TkMenu.new(mf) {|ma| 
-           postcommand proc{win.fillAppsMenu ma}
-           mf.add('cascade', 'label'=>'Select Application', 
-                  'menu'=>ma, 'underline'=>0)
-         }
-         add('command', 'label'=>'Quit', 
-             'command'=>proc{root.destroy}, 'underline'=>0)
-       }
-       pack('side'=>'left')
-      }
-    }
-
-    # Create text window and scrollbar. 
-
-    @txt = TkText.new(root, 'relief'=>'sunken', 'bd'=>2, 'setgrid'=>true) {
-      yscrollbar(TkScrollbar.new(root){pack('side'=>'right', 'fill'=>'y')})
-      pack('side'=>'left')
-    }
-
-    @promptEnd = TkTextMark.new(@txt, 'insert')
-
-    # Create a binding to forward commands to the target application, 
-    # plus modify many of the built-in bindings so that only information 
-    # in the current command can be deleted (can still set the cursor 
-    # earlier in the text and select and insert;  just can't delete).
-
-    @txt.bindtags([@txt, TkText, root, 'all'])
-    @txt.bind('Return', proc{
-               @txt.set_insert('end - 1c')
-               @txt.insert('insert', "\n")
-               win.invoke
-               Tk.callback_break
-             })
-    @txt.bind('Delete', proc{
-               begin
-                 @txt.tag_remove('sel', 'sel.first', @promptEnd)
-               rescue
-               end
-               if @txt.tag_nextrange('sel', '1.0', 'end') == []
-                 if @txt.compare('insert', '<', @promptEnd)
-                   Tk.callback_break
-                 end
-               end
-             })
-    @txt.bind('BackSpace', proc{
-               begin
-                 @txt.tag_remove('sel', 'sel.first', @promptEnd)
-               rescue
-               end
-               if @txt.tag_nextrange('sel', '1.0', 'end') == []
-                 if @txt.compare('insert', '<', @promptEnd)
-                   Tk.callback_break
-                 end
-               end
-             })
-    @txt.bind('Control-d', proc{
-               if @txt.compare('insert', '<', @promptEnd)
-                 Tk.callback_break
-               end
-             })
-    @txt.bind('Control-k', proc{
-               if @txt.compare('insert', '<', @promptEnd)
-                 @txt.set_insert(@promptEnd)
-               end
-             })
-    @txt.bind('Control-t', proc{
-               if @txt.compare('insert', '<', @promptEnd)
-                 Tk.callback_break
-               end
-             })
-    @txt.bind('Meta-d', proc{
-               if @txt.compare('insert', '<', @promptEnd)
-                 Tk.callback_break
-               end
-             })
-    @txt.bind('Meta-BackSpace', proc{
-               if @txt.compare('insert', '<=', @promptEnd)
-                 Tk.callback_break
-               end
-             })
-    @txt.bind('Control-h', proc{
-               if @txt.compare('insert', '<=', @promptEnd)
-                 Tk.callback_break
-               end
-             })
-
-    @txt.tag_configure('bold', 'font'=>['Courier', 12, 'bold'])
-
-    @app = Tk.appname('rmt')
-    if (@app =~ /^rmt(.*)$/)
-      root.title("Tk Remote Controller#{$1}")
-      root.iconname("Tk Remote#{$1}")
-    end
-    prompt
-    @txt.focus
-    #@app = TkWinfo.appname(TkRoot.new)
-  end
-
-  def tkTextInsert(w,s)
-    return if s == ""
-    begin
-      if w.compare('sel.first','<=','insert') \
-       && w.compare('sel.last','>=','insert')
-       w.tag_remove('sel', 'sel.first', @promptEnd)
-       w.delete('sel.first', 'sel.last')
-      end
-    rescue
-    end
-    w.insert('insert', s)
-    w.see('insert')
-  end
-
-  # The method below is used to print out a prompt at the 
-  # insertion point (which should be at the beginning of a line 
-  # right now).
-
-  def prompt
-    @txt.insert('insert', "#{@app}: ")
-    @promptEnd.set('insert')
-    @promptEnd.gravity = 'left'
-    @txt.tag_add('bold', "#{@promptEnd.path} linestart", @promptEnd)
-  end
-
-  # The method below executes a command (it takes everything on the 
-  # current line after the prompt and either sends it to the remote 
-  # application or executes it locally, depending on "app".
-
-  def invoke
-    cmd = @txt.get(@promptEnd, 'insert')
-    @executing += 1
-    case (@mode)
-    when 'Tcl'
-      if Tk.info('complete', cmd)
-       if (cmd == "!!\n")
-         cmd = @lastCommand
-       else
-         @lastCommand = cmd
-       end
-       begin
-         msg = Tk.appsend(@app, false, cmd)
-       rescue
-         msg = "Error: #{$!}"
-       end
-       @txt.insert('insert', msg + "\n") if msg != ""
-       prompt
-       @promptEnd.set('insert')
-      end
-
-    when 'Ruby'
-      if (cmd == "!!\n")
-       cmd = @lastCommand
-      end
-      complete = true
-      begin
-       eval("proc{#{cmd}}")
-      rescue
-       complete = false
-      end
-      if complete
-       @lastCommand = cmd
-       begin
-#        msg = Tk.appsend(@app, false, 
-#                         'ruby', 
-#                         '"(' + cmd.gsub(/[][$"]/, '\\\\\&') + ').to_s"')
-         msg = Tk.rb_appsend(@app, false, cmd)
-       rescue
-         msg = "Error: #{$!}"
-       end
-       @txt.insert('insert', msg + "\n") if msg != ""
-       prompt
-       @promptEnd.set('insert')
-      end
-    end
-
-    @executing -= 1
-    @txt.yview_pickplace('insert')
-  end
-
-  # The following method is invoked to change the application that
-  # we're talking to.  It also updates the prompt for the current 
-  # command, unless we're in the middle of executing a command from 
-  # the text item (in which case a new prompt is about to be output 
-  # so there's no need to change the old one). 
-
-  def newApp(appName, mode)
-    @app = appName
-    @mode = mode
-    if @executing == 0
-      @promptEnd.gravity = 'right'
-      @txt.delete("#{@promptEnd.path} linestart", @promptEnd)
-      @txt.insert(@promptEnd, "#{appName}: ")
-      @txt.tag_add('bold', "#{@promptEnd.path} linestart", @promptEnd)
-      @promptEnd.gravity = 'left'
-    end
-  end
-
-  # The method below will fill in the applications sub-menu with a list
-  # of all the applications that currently exist. 
-
-  def fillAppsMenu(menu)
-    win = self
-    begin
-      menu.delete(0,'last')
-    rescue
-    end
-    TkWinfo.interps.sort.each{|ip|
-      begin
-       if Tk.appsend(ip, false, 'info commands ruby') == ""
-         mode = 'Tcl'
-       else
-         mode = 'Ruby'
-       end
-       menu.add('command', 'label'=>format("%s    (#{mode}/Tk)", ip), 
-                'command'=>proc{win.newApp ip, mode})
-      rescue
-       menu.add('command', 'label'=>format("%s (unknown Tk)", ip), 
-                'command'=>proc{win.newApp ip, mode}, 'state'=>'disabled')
-      end
-    }
-    menu.add('command', 'label'=>format("local    (Ruby/Tk)"), 
-            'command'=>proc{win.newApp 'local', 'Ruby'})
-  end
-end
-
-Rmt.new
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/rolodex b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/rolodex
deleted file mode 100644 (file)
index 9a4030e..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-#!/usr/bin/env ruby
-#
-# rolodex --
-# This script is a part of Tom LaStrange's rolodex
-# 
-# Copyright (C) 1998 by Takaaki Tateishi <ttate@jaist.ac.jp>
-# Time-stamp: "03/08/02 06:23:06 nagai"
-#
-
-require "tk"
-
-
-def show_help(topic,x=0,y=0)
-  if( topic.is_a?(TkWindow) )
-    w = TkWinfo.containing(x,y)
-    if( TkWinfo.exist?(w) )
-      topic = w
-    end
-  end
-  
-  if( $helpTopics.include?(topic) )
-    msg = $helpTopics[topic]
-  else
-    msg = "Sorry, but no help is available for this topic"
-  end
-  TkDialog.new("title"=>"Rolodex Help",
-              "message"=>"Information on #{topic}:\n\n#{msg}",
-              "default_button"=>0,
-              "buttons"=>["OK"])
-end
-
-def fillCard
-  clearAction
-  $root.frame.entry[1].insert(0,"Takaaki Tateishi")
-  $root.frame.entry[2].insert(0,"Japan Advanced Institute of Science and Techonology")
-  $root.frame.entry[3].insert(0,"1-1 Asahidai, Tatsunokuchi")
-  $root.frame.entry[4].insert(0,"Ishikawa 923-1292, Japan")
-  $root.frame.entry[5].insert(0,"private")
-    $root.frame.entry[6].insert(0,"***-***-****")
-  $root.frame.entry[7].insert(0,"***-***-****")
-end
-
-def addAction
-  for i in 1..7
-    STDERR.print format("%-12s %s\n",
-                       RolodexFrame::LABEL[i],
-                       $root.frame.entry[i].value)
-  end
-end
-
-def clearAction
-  for i in 1..7
-    $root.frame.entry[i].delete(0,"end")
-  end
-end
-
-def fileAction
-  TkDialog.new("title"=>"File Selection",
-              "message"=>"This is a dummy file selection dialog box.\n",
-              "default_button"=>0,
-              "buttons"=>["OK"])
-  STDERR.print "dummy file name\n"
-end
-
-def deleteAction
-  result = TkDialog.new("title"=>"Confirm Action",
-                       "message"=>"Are you sure?",
-                       "default_button"=>0,
-                       "buttons"=>["Cancel"])
-  if( result.value == 0 )
-    clearAction
-  end
-end
-
-
-class RolodexFrame < TkFrame
-  attr_reader :entry, :label
-
-  LABEL = ["","Name:","Address:","","","Home Phone:","Work Phone:","Fax:"]
-
-  def initialize(parent=nil,keys=nil)
-    super(parent,keys)
-    self["relief"] = "flat"
-    
-    @i = []
-    @label = []
-    @entry = []
-    for i in 1..7
-      @i[i] = TkFrame.new(self)
-      @i[i].pack("side"=>"top",
-                "pady"=>2,
-                "anchor"=>"e")
-      @label[i] = TkLabel.new(@i[i],
-                             "text"=>LABEL[i],
-                             "anchor"=>"e")
-      @entry[i] = TkEntry.new(@i[i],
-                             "width"=>30,
-                             "relief"=>"sunken")
-      @entry[i].pack("side"=>"right")
-      @label[i].pack("side"=>"right")
-    end
-  end
-end
-
-class RolodexButtons < TkFrame
-  attr_reader :clear, :add, :search, :delete
-
-  def initialize(parent,keys=nil)
-    super(parent,keys)
-    @clear = TkButton.new(self,
-                         "text" => "Clear")
-    @add = TkButton.new(self,
-                       "text" => "Add")
-    @search = TkButton.new(self,
-                          "text" => "Search")
-    @delete = TkButton.new(self,
-                          "text" => "Delete")
-    for w in [@clear,@add,@search,@delete]
-      w.pack("side"=>"left", "padx"=>2)
-    end
-  end
-end
-
-class RolodexMenuFrame < TkFrame
-  attr_reader :file_menu, :help_menu, :file, :help
-
-  def initialize(parent,keys=nil)
-    super(parent,keys)
-    configure("relief"=>"raised",
-             "borderwidth"=>1)
-
-    @file = TkMenubutton.new(self,
-                            "text"=>"File",
-                            "underline"=>0)
-    @file_menu = TkMenu.new(@file)
-    @file_menu.add("command",
-                  "label" => "Load ...",
-                  "command" => proc{fileAction},
-                  "underline" => 0)
-    @file_menu.add("command",
-                  "label" => "Exit",
-                  "command" => proc{$root.destroy},
-                  "underline" => 0)
-    @file.menu(@file_menu)
-    @file.pack("side"=>"left")
-
-    @help = TkMenubutton.new(self,
-                            "text"=>"Help",
-                            "underline"=>0)
-    @help_menu = TkMenu.new(@help)
-    @help_menu.add("command",
-                  "label"=>"On Context...",
-                  "command"=>proc{show_help("context")},
-                  "underline"=>3)
-    @help_menu.add("command",
-                  "label"=>"On Help...",
-                  "command"=>proc{show_help("help")},
-                  "underline"=>3)
-    @help_menu.add("command",
-                  "label"=>"On Window...",
-                  "command"=>proc{show_help("window")},
-                  "underline"=>3)
-    @help_menu.add("command",
-                  "label"=>"On Keys...",
-                  "command"=>proc{show_help("keys")},
-                  "underline"=>3)
-    @help_menu.add("command",
-                  "label"=>"On version...",
-                  "command"=>proc{show_help("version")},
-                  "underline"=>3)
-    @help.menu(@help_menu)
-    @help.pack("side"=>"right")
-  end
-end
-
-class Rolodex < TkRoot
-  attr_reader :frame, :buttons, :menu
-
-  def initialize(*args)
-    super(*args)
-    @frame = RolodexFrame.new(self)
-    @frame.pack("side"=>"top",
-               "fill"=>"y",
-               "anchor"=>"center")
-    @buttons = RolodexButtons.new(self)
-    @buttons.pack("side"=>"bottom",
-                 "pady"=>2,
-                 "anchor"=>"center")
-    @menu = RolodexMenuFrame.new(self)
-    @menu.pack("before"=>@frame,
-              "side"=>"top",
-              "fill"=>"x")
-  end
-end
-
-$root = Rolodex.new
-
-$root.buttons.delete.configure("command"=>proc{deleteAction})
-$root.buttons.add.configure("command"=>proc{addAction})
-$root.buttons.clear.configure("command"=>proc{clearAction})
-$root.buttons.search.configure("command"=>proc{addAction; fillCard})
-
-$root.buttons.clear.configure("text"=>"Clear   Ctrl+C")
-$root.bind("Control-c",proc{clearAction})
-
-$root.buttons.add.configure("text"=>"Add   Ctrl+A")
-$root.bind("Control-a",proc{addAction})
-
-$root.buttons.search.configure("text"=>"Search   Ctrl+S")
-$root.bind("Control-s",proc{addAction; fillCard})
-
-$root.buttons.delete.configure("text"=>"Delete...   Ctrl+D")
-$root.bind("Control-d",proc{deleteAction})
-
-$root.menu.file_menu.entryconfigure(1, "accel"=>"Ctrl+F")
-$root.bind("Control-f",proc{fileAction})
-
-$root.menu.file_menu.entryconfigure(2, "accel"=>"Ctrl+Q")
-$root.bind("Control-q",proc{$root.destroy})
-
-$root.frame.entry[1].focus
-
-$root.bind("Any-F1",
-          proc{|event| show_help(event.widget, event.x_root, event.y_root)})
-$root.bind("Any-Help",
-          proc{|event| show_help(event.widget, event.x_root, event.y_root)})
-
-
-$helpTopics = {}
-
-$helpTopics[$root.menu.file] = <<EOF
-This is the "file" menu. It can be used to invoke\
-some overall operations on the rolodex applications,\
-such as loading a file or exiting.
-EOF
-
-$helpTopics[$root.menu.file_menu.index(0)] = <<EOF
-The "Load" entry in the "File" menu posts a dialog box\
-that you can use to select a rolodex file
-EOF
-
-$helpTopics[$root.menu.file_menu.index(1)] = <<EOF
-The "Exit" entry in the "File" menu causes the rolodex\
-application to terminate
-EOF
-
-$helpTopics[$root.frame.entry[1]] = <<EOF
-In this field of the rolodex entry you should\
-type the person's name
-EOF
-
-$helpTopics[$root.frame.entry[2]] = <<EOF
-In this field of the rolodex entry you should\
-type the first line of the person's address
-EOF
-
-$helpTopics[$root.frame.entry[3]] = <<EOF
-In this field of the rolodex entry you should\
-type the second line of the person's address
-EOF
-
-$helpTopics[$root.frame.entry[4]] = <<EOF
-In this field of the rolodex entry you should\
-type the third line of the person's address
-EOF
-
-$helpTopics[$root.frame.entry[5]] = <<EOF
-In this field of the rolodex entry you should\
-type the person's home phone number, or "private"\
-if the person doesn't want his or he number publicized
-EOF
-
-$helpTopics[$root.frame.entry[6]] = <<EOF
-In this field of the rolodex entry you should\
-type the person's work phone number
-EOF
-
-$helpTopics[$root.frame.entry[7]] = <<EOF
-In this field of the rolodex entry you should\
-type the phone number for the person's FAX machine
-EOF
-
-$helpTopics["context"] = <<EOF
-Unfortunately, this application doesn't support context-sensitive\
-help in the usual way, because when this demo was written Ruby/Tk\
-didn't have a grab mechanism and this is needed for context-sensitive\
-help. Instead, you can achive much the same effect by simply moving\
-the mouse over the window you're curious about and pressing the\
-Help or F1 keys. You can do this anytime.
-EOF
-
-$helpTopics["help"] = <<EOF
-This application provides only very crude help. Besides the\
-entries in this menu, you can get help on individual windows\
-by moving the mouse cursor over the window and pressing the\
-Help or F1 keys.
-EOF
-
-$helpTopics["window"] = <<EOF
-This window is a dummy rolodex application created as part of\
-Tom LaStrange's toolkit benchmark. It doesn't really do anything\
-useful except to demonstrate a few features of the Ruby/Tk.
-EOF
-
-$helpTopics["keys"] = <<EOF
-The following accelerator keys are defined for this application\
-(in addition to those already available for the entry windows):
-Ctrl+A:                Add
-Ctrl+C:                Clear
-Ctrl+D:                Delete
-Ctrl+F:                Enter file name
-Ctrl+Q:                Exit application (quit)
-Ctrl+S:                Search (dummy operation)
-EOF
-
-$helpTopics["version"] = <<EOF
-This is version 1.0.1.
-EOF
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ruler.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ruler.rb
deleted file mode 100644 (file)
index 26cd4f3..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-# ruler.rb
-#
-# This demonstration script creates a canvas widget that displays a ruler
-# with tab stops that can be set, moved, and deleted.
-#
-# ruler widget demo (called by 'widget')
-#
-
-# rulerMkTab --
-# This method creates a new triangular polygon in a canvas to
-# represent a tab stop.
-#
-# Arguments:
-# c -           The canvas window.
-# x, y -        Coordinates at which to create the tab stop.
-
-def rulerMkTab(c,x,y)
-  v = $demo_rulerInfo
-  TkcPolygon.new(c, x, y, x+v.size, y+v.size, x-v.size, y+v.size)
-end
-
-# toplevel widget
-if defined?($ruler_demo) && $ruler_demo
-  $ruler_demo.destroy 
-  $ruler_demo = nil
-end
-
-# demo toplevel widget
-$ruler_demo = TkToplevel.new {|w|
-  title("Ruler Demonstration")
-  iconname("ruler")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($ruler_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'5i', 'justify'=>'left', 
-            'text'=>"This canvas widget shows a mock-up of a ruler.  You can create tab stops by dragging them out of the well to the right of the ruler.  You can also drag existing tab stops.  If you drag a tab stop far enough up or down so that it turns dim, it will be deleted when you release the mouse button."){
-  pack('side'=>'top')
-}
-
-# frame
-$ruler_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $ruler_demo
-      $ruler_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'ruler'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$ruler_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# canvas 
-$ruler_canvas = TkCanvas.new(base_frame, 'width'=>'14.8c', 'height'=>'2.5c')
-$ruler_canvas.pack('side'=>'top', 'fill'=>'x')
-
-# 
-unless Struct.const_defined?("RulerInfo")
-  $demo_rulerInfo = Struct.new("RulerInfo", :grid, :left, :right, :x, :y, 
-                               :top, :bottom, :size, :normalStyle, 
-                               :activeStyle, :deleteStyle).new
-end
-$demo_rulerInfo.grid = '.25c'
-$demo_rulerInfo.left = TkWinfo.fpixels($ruler_canvas, '1c')
-$demo_rulerInfo.right = TkWinfo.fpixels($ruler_canvas, '13c')
-$demo_rulerInfo.top = TkWinfo.fpixels($ruler_canvas, '1c')
-$demo_rulerInfo.bottom = TkWinfo.fpixels($ruler_canvas, '1.5c')
-$demo_rulerInfo.size = TkWinfo.fpixels($ruler_canvas, '.2c')
-$demo_rulerInfo.normalStyle = {'fill'=>'black'}
-if TkWinfo.depth($ruler_canvas) > 1
-  $demo_rulerInfo.activeStyle = {'fill'=>'red', 'stipple'=>''}
-  $demo_rulerInfo.deleteStyle = {'fill'=>'red', 
-    'stipple'=>'@'+[$demo_dir, '..', 
-                     'images', 'gray25.xbm'].join(File::Separator)}
-else
-  $demo_rulerInfo.activeStyle = {'fill'=>'black', 'stipple'=>''}
-  $demo_rulerInfo.deleteStyle = {'fill'=>'black', 
-    'stipple'=>'@'+[$demo_dir, '..', 
-                     'images', 'gray25.xbm'].join(File::Separator)}
-end
-
-TkcLine.new($ruler_canvas, 
-            '1c', '0.5c', '1c', '1c', '13c', '1c', '13c', '0.5c', 'width'=>1)
-(0..11).each{|i|
-  x = i+1
-  TkcLine.new($ruler_canvas, "#{x}c", '1c', "#{x}c", '0.6c', 'width'=>1)
-  TkcLine.new($ruler_canvas, "#{x}.25c", '1c', "#{x}.25c", '0.8c', 'width'=>1)
-  TkcLine.new($ruler_canvas, "#{x}.5c", '1c', "#{x}.5c", '0.7c', 'width'=>1)
-  TkcLine.new($ruler_canvas, "#{x}.75c", '1c', "#{x}.75c", '0.8c', 'width'=>1)
-  TkcText.new($ruler_canvas, "#{x}.15c", '0.75c', 'text'=>i, 'anchor'=>'sw')
-}
-
-$rulerTag_well = TkcTag.new($ruler_canvas)
-$ruler_canvas\
-.addtag_withtag($rulerTag_well,
-                TkcRectangle.new($ruler_canvas, 
-                                 '13.2c', '1c', '13.8c', '0.5c', 
-                                 'outline'=>'black', 
-                                 'fill'=>($ruler_canvas\
-                                          .configinfo('background'))[4]) )
-$ruler_canvas\
-.addtag_withtag($rulerTag_well,
-                rulerMkTab($ruler_canvas, 
-                           TkWinfo.pixels($ruler_canvas, '13.5c'), 
-                           TkWinfo.pixels($ruler_canvas, '.65c') ) )
-
-$rulerTag_well.bind('1', proc{|x,y| rulerNewTab($ruler_canvas,x,y)}, '%x %y')
-$ruler_canvas.itembind('tab', '1', 
-                       proc{|x,y| rulerSelectTab($ruler_canvas,x,y)}, '%x %y')
-$ruler_canvas.bind('B1-Motion', 
-                   proc{|x,y| rulerMoveTab($ruler_canvas,x,y)}, '%x %y')
-$ruler_canvas.bind('Any-ButtonRelease-1', proc{rulerReleaseTab($ruler_canvas)})
-
-# rulerNewTab --
-# Does all the work of creating a tab stop, including creating the
-# triangle object and adding tags to it to give it tab behavior.
-#
-# Arguments:
-# c -           The canvas window.
-# x, y -        The coordinates of the tab stop.
-
-def rulerNewTab(c,x,y)
-  v = $demo_rulerInfo
-  c.addtag_withtag('active', rulerMkTab(c,x,y))
-  c.addtag_withtag('tab', 'active')
-  v.x = x
-  v.y = y
-  rulerMoveTab(c,x,y)
-end
-
-# rulerSelectTab --
-# This method is invoked when mouse button 1 is pressed over
-# a tab.  It remembers information about the tab so that it can
-# be dragged interactively.
-#
-# Arguments:
-# c -           The canvas widget.
-# x, y -        The coordinates of the mouse (identifies the point by
-#               which the tab was picked up for dragging).
-
-def rulerSelectTab(c,x,y)
-  v = $demo_rulerInfo
-  v.x = c.canvasx(x, v.grid)
-  v.y = v.top+2
-  c.addtag_withtag('active', 'current')
-  c.itemconfigure('active', v.activeStyle)
-  c.raise('active')
-end
-
-# rulerMoveTab --
-# This method is invoked during mouse motion events to drag a tab.
-# It adjusts the position of the tab, and changes its appearance if
-# it is about to be dragged out of the ruler.
-#
-# Arguments:
-# c -           The canvas widget.
-# x, y -        The coordinates of the mouse.
-
-def rulerMoveTab(c,x,y)
-  v = $demo_rulerInfo
-  return if c.find_withtag('active') == []
-  cx = c.canvasx(x,v.grid)
-  cy = c.canvasy(y)
-  cx = v.left if cx < v.left
-  cx = v.right if cx > v.right
-  if (cy >= v.top && cy <= v.bottom)
-    cy = v.top+2
-    c.itemconfigure('active', v.activeStyle)
-  else
-    cy = cy-v.size-2
-    c.itemconfigure('active', v.deleteStyle)
-  end
-  c.move('active', cx-v.x, cy-v.y)
-  v.x = cx
-  v.y = cy
-end
-
-# rulerReleaseTab --
-# This method is invoked during button release events that end
-# a tab drag operation.  It deselects the tab and deletes the tab if
-# it was dragged out of the ruler.
-#
-# Arguments:
-# c -           The canvas widget.
-# x, y -        The coordinates of the mouse.
-
-def rulerReleaseTab(c)
-  v = $demo_rulerInfo
-  return if c.find_withtag('active') == []
-  if v.y != v.top+2
-    c.delete('active')
-  else
-    c.itemconfigure('active', v.normalStyle)
-    c.dtag('active')
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/sayings.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/sayings.rb
deleted file mode 100644 (file)
index 06ec7c1..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-# sayings.rb
-#
-# This demonstration script creates a listbox that can be scrolled
-# both horizontally and vertically.  It displays a collection of
-# well-known sayings.
-#
-# listbox widget demo 'sayings' (called by 'widget')
-#
-
-# toplevel widget
-if defined?($sayings_demo) && $sayings_demo
-  $sayings_demo.destroy 
-  $sayings_demo = nil
-end
-
-# demo toplevel widget
-$sayings_demo = TkToplevel.new {|w|
-  title("Listbox Demonstration (well-known sayings)")
-  iconname("sayings")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($sayings_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "The listbox below contains a collection of well-known sayings.  You can scan the list using either of the scrollbars or by dragging in the listbox window with button 2 pressed."
-}
-msg.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $sayings_demo
-      $sayings_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'sayings'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame
-sayings_lbox = nil
-TkFrame.new(base_frame, 'borderwidth'=>10) {|w|
-  sv = TkScrollbar.new(w)
-  sh = TkScrollbar.new(w, 'orient'=>'horizontal')
-  sayings_lbox = TkListbox.new(w) {
-    setgrid 1
-    width  20
-    height 10
-    yscrollcommand proc{|first,last| sv.set first,last}
-    xscrollcommand proc{|first,last| sh.set first,last}
-  }
-  sv.command(proc{|*args| sayings_lbox.yview(*args)})
-  sh.command(proc{|*args| sayings_lbox.xview(*args)})
-
-  if $tk_version =~ /^4\.[01]/
-    sv.pack('side'=>'right', 'fill'=>'y')
-    sh.pack('side'=>'bottom', 'fill'=>'x')
-    sayings_lbox.pack('expand'=>'yes', 'fill'=>'y')
-
-  else
-    sayings_lbox.grid('row'=>0, 'column'=>0, 
-                      'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    sv.grid('row'=>0, 'column'=>1, 
-            'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    sh.grid('row'=>1, 'column'=>0, 
-            'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    TkGrid.rowconfigure(w, 0, 'weight'=>1, 'minsize'=>0)
-    TkGrid.columnconfigure(w, 0, 'weight'=>1, 'minsize'=>0)
-  end
-
-}.pack('side'=>'top', 'expand'=>'yes', 'fill'=>'y')
-
-sayings_lbox.insert(0,
-"Waste not, want not",
-"Early to bed and early to rise makes a man healthy, wealthy, and wise",
-"Ask not what your country can do for you, ask what you can do for your country",
-"I shall return",
-"NOT",
-"A picture is worth a thousand words",
-"User interfaces are hard to build",
-"Thou shalt not steal",
-"A penny for your thoughts",
-"Fool me once, shame on you;  fool me twice, shame on me",
-"Every cloud has a silver lining",
-"Where there's smoke there's fire",
-"It takes one to know one",
-"Curiosity killed the cat; but satisfaction brought it back",
-"Take this job and shove it",
-"Up a creek without a paddle",
-"I'm mad as hell and I'm not going to take it any more",
-"An apple a day keeps the doctor away",
-"Don't look a gift horse in the mouth"
-)
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/search.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/search.rb
deleted file mode 100644 (file)
index e1fc565..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-# search.rb
-#
-# This demonstration script creates a collection of widgets that
-# allow you to load a file into a text widget, then perform searches
-# on that file.
-#
-# Text Search widget demo (called by 'widget')
-#
-
-# textLoadFile --
-# This method below loads a file into a text widget, discarding
-# the previous contents of the widget. Tags for the old widget are
-# not affected, however.
-#
-# Arguments:
-# w -           The window into which to load the file.  Must be a
-#               text widget.
-# file -        The name of the file to load.  Must be readable.
-
-def textLoadFile(w,file)
-  w.delete('1.0', 'end')
-  f = open(file, 'r')
-  while(!f.eof?)
-    w.insert('end', f.read(1000))
-  end
-  f.close
-end
-
-# textSearch --
-# Search for all instances of a given string in a text widget and
-# apply a given tag to each instance found.
-#
-# Arguments:
-# w -           The window in which to search.  Must be a text widget.
-# string -      The string to search for.  The search is done using
-#               exact matching only;  no special characters.
-# tag -         Tag to apply to each instance of a matching string.
-
-def textSearch(w, string, tag)
-  tag.remove('0.0', 'end')
-  return if string == ""
-  cur = '1.0'
-  loop {
-    cur, len = w.search_with_length(string, cur, 'end')
-    break if cur == ""
-    tag.add(cur, "#{cur} + #{len} char")
-    cur = w.index("#{cur} + #{len} char")
-  }
-end
-
-# textToggle --
-# This method is invoked repeatedly to invoke two commands at
-# periodic intervals.  It normally reschedules itself after each
-# execution but if an error occurs (e.g. because the window was
-# deleted) then it doesn't reschedule itself.
-#
-# Arguments:
-# cmd1 -        Command to execute when method is called.
-# sleep1 -      Ms to sleep after executing cmd1 before executing cmd2.
-# cmd2 -        Command to execute in the *next* invocation of this method.
-# sleep2 -      Ms to sleep after executing cmd2 before executing cmd1 again.
-
-def textToggle(cmd1,sleep1,cmd2,sleep2)
-  sleep_list = [sleep2, sleep1]
-  TkAfter.new(proc{sleep = sleep_list.shift; sleep_list.push(sleep); sleep}, 
-              -1, cmd1, cmd2).start(sleep1)
-end
-
-# toplevel widget
-if defined?($search_demo) && $search_demo
-  $search_demo.destroy 
-  $search_demo = nil
-end
-
-# demo toplevel widget
-$search_demo = TkToplevel.new {|w|
-  title("Text Demonstration - Search and Highlight")
-  iconname("search")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($search_demo).pack(:fill=>:both, :expand=>true)
-
-# frame
-$search_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $search_demo
-      $search_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'search'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$search_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame
-TkFrame.new(base_frame) {|f|
-  TkLabel.new(f, 'text'=>'File name:', 
-              'width'=>13, 'anchor'=>'w').pack('side'=>'left')
-  $search_fileName = TkVariable.new
-  TkEntry.new(f, 'width'=>40, 
-              'textvariable'=>$search_fileName) {
-    pack('side'=>'left')
-    bind('Return', proc{textLoadFile($search_text, $search_fileName.value)
-                        $search_string_entry.focus})
-    focus
-  }
-  TkButton.new(f, 'text'=>'Load File', 
-               'command'=>proc{textLoadFile($search_text, 
-                                            $search_fileName.value)})\
-  .pack('side'=>'left', 'pady'=>5, 'padx'=>10)
-}.pack('side'=>'top', 'fill'=>'x')
-
-TkFrame.new(base_frame) {|f|
-  TkLabel.new(f, 'text'=>'Search string:', 
-              'width'=>13, 'anchor'=>'w').pack('side'=>'left')
-  $search_searchString = TkVariable.new
-  $search_string_entry = TkEntry.new(f, 'width'=>40, 
-                                     'textvariable'=>$search_searchString) {
-    pack('side'=>'left')
-    bind('Return', proc{textSearch($search_text, $search_searchString.value, 
-                                   $search_Tag)})
-  }
-  TkButton.new(f, 'text'=>'Highlight', 
-               'command'=>proc{textSearch($search_text, 
-                                          $search_searchString.value, 
-                                          $search_Tag)}) {
-    pack('side'=>'left', 'pady'=>5, 'padx'=>10)
-  }
-}.pack('side'=>'top', 'fill'=>'x')
-
-$search_text = TkText.new(base_frame, 'setgrid'=>true, 'wrap'=>'word') {|t|
-  $search_Tag = TkTextTag.new(t)
-  TkScrollbar.new(base_frame, 'command'=>proc{|*args| t.yview(*args)}) {|sc|
-    t.yscrollcommand(proc{|first,last| sc.set first,last})
-    pack('side'=>'right', 'fill'=>'y')
-  }
-  pack('expand'=>'yes', 'fill'=>'both')
-}
-
-# Set up display styles for text highlighting.
-
-if TkWinfo.depth($search_demo) > 1
-  textToggle(proc{
-               $search_Tag.configure('background'=>'#ce5555', 
-                                     'foreground'=>'white')
-             },
-             800, 
-             proc{
-               $search_Tag.configure('background'=>'', 'foreground'=>'')
-             },
-             200 )
-else
-  textToggle(proc{
-               $search_Tag.configure('background'=>'black', 
-                                     'foreground'=>'white')
-             },
-             800, 
-             proc{
-               $search_Tag.configure('background'=>'', 'foreground'=>'')
-             },
-             200 )
-end
-$search_text.insert('1.0', "\
-This window demonstrates how to use the tagging facilities in text \
-widgets to implement a searching mechanism.  First, type a file name \
-in the top entry, then type <Return> or click on \"Load File\".  Then \
-type a string in the lower entry and type <Return> or click on \
-\"Load File\".  This will cause all of the instances of the string to \
-be tagged with the tag \"search\", and it will arrange for the tag\'s \
-display attributes to change to make all of the strings blink.")
-$search_text.insert('end', "\
-The current directory to load a file is \"#{Dir.pwd}\".\
-")
-$search_text.set_insert '0.0'
-
-$search_fileName.value = ''
-$search_searchString.value = ''
-
-$search_text.width = 60
-$search_text.height = 20
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/spin.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/spin.rb
deleted file mode 100644 (file)
index c2a3a89..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-# spin.rb --
-#
-# This demonstration script creates several spinbox widgets.
-#
-# based on Tcl/Tk8.4.4 widget demos
-
-if defined?($spin_demo) && $spin_demo
-  $spin_demo.destroy 
-  $spin_demo = nil
-end
-
-$spin_demo = TkToplevel.new {|w|
-  title("Spinbox Demonstration")
-  iconname("spin")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($spin_demo).pack(:fill=>:both, :expand=>true)
-
-TkLabel.new(base_frame, 
-            :font=>$font, :wraplength=>'5i', :justify=>:left, 
-            :text=><<EOL).pack(:side=>:top)
-Three different spin-boxes are displayed below.  \
-You can add characters by pointing, clicking and typing.  \
-The normal Motif editing characters are supported, along with \
-many Emacs bindings.  For example, Backspace and Control-h \
-delete the character to the left of the insertion cursor and \
-Delete and Control-d delete the chararacter to the right of the \
-insertion cursor.  For values that are too large to fit in the \
-window all at once, you can scan through the value by dragging \
-with mouse button2 pressed.  Note that the first spin-box will \
-only permit you to type in integers, and the third selects from \
-a list of Australian cities.
-If your Tk library linked to Ruby doesn't include a 'spinbox' widget, \
-this demo doesn't work. Please use later version of Tk \
-which supports a 'spinbox' widget.
-EOL
-
-TkFrame.new(base_frame){|f|
-  pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
-
-  TkButton.new(f, :text=>'Dismiss', :width=>15, :command=>proc{
-                 $spin_demo.destroy
-                 $spin_demo = nil
-               }).pack(:side=>:left, :expand=>true)
-
-  TkButton.new(f, :text=>'See Code', :width=>15, :command=>proc{
-                 showCode 'spin'
-               }).pack(:side=>:left, :expand=>true)
-}
-
-australianCities = [
-    'Canberra', 'Sydney', 'Melbourne', 'Perth', 'Adelaide', 
-    'Brisbane', 'Hobart', 'Darwin', 'Alice Springs'
-]
-
-[
-  TkSpinbox.new(base_frame, :from=>1, :to=>10, :width=>10, :validate=>:key, 
-                :validatecommand=>[
-                  proc{|s| s == '' || /^[+-]?\d+$/ =~ s }, '%P'
-                ]), 
-  TkSpinbox.new(base_frame, :from=>0, :to=>3, :increment=>0.5, 
-                :format=>'%05.2f', :width=>10), 
-  TkSpinbox.new(base_frame, :values=>australianCities, :width=>10)
-].each{|sbox| sbox.pack(:side=>:top, :pady=>5, :padx=>10)}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/square b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/square
deleted file mode 100644 (file)
index 00bfde5..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/usr/bin/env ruby
-
-# square --
-# This script generates a demo application containing only 
-# a "square" widget.  It's only usable if Tk has been compiled 
-# with tkSquare.c and with the -DSQUARE_DEMO compiler switch. 
-# This demo arranges the following bindings for the widget: 
-#
-# Button-1 press/drag:          moves square to mouse
-# "a":                          toggle size animation on/off
-#
-
-require 'tk'
-require 'tkafter'
-
-class TkSquare<TkWindow
-  def create_self
-    begin
-      tk_call 'square', path
-    rescue
-      STDERR.print "\nSorry. Your Tk interpreter does not contain " +
-       'a "square" demonstration widget.' + 
-       "\n ( See documents included the Tcl/Tk source archive. )\n\n"
-      exit
-    end
-  end
-  def size(amount=nil)
-    if amount
-      tk_send 'size', amount
-    else
-      number(tk_send('size'))
-    end
-  end
-  def position(x,y)
-    tk_send 'position', x, y
-  end
-end
-
-$s = TkSquare.new{
-  pack('expand'=>'yes', 'fill'=>'both')
-  bind('1', proc{|x,y| center(x,y)}, '%s %y')
-  bind('B1-Motion', proc{|x,y| center(x,y)}, '%s %y')
-  bind('a', proc{animate})
-  focus
-}
-TkRoot.new.minsize(1,1)
-
-# The procedure below centers the square on a given position.
-
-def center(x,y)
-  a = $s.size
-  $s.position(x-(a/2), y-(a/2))
-end
-
-# The procedures below provide a simple form of animation where
-# the box changes size in a pulsing pattern: larger, smaller, larger, 
-# and so on.
-
-$inc = 0
-
-def timer_proc
-  a = $s.size
-  return if $inc == 0
-  $inc = -3 if a >= 40
-  $inc =  3 if a <= 10
-  $s.size(a+$inc)
-end
-
-$timer = TkAfter.new(30, -1, proc{timer_proc})
-
-def animate
-  if $inc == 0
-    $inc = 3
-    $timer.start
-  else
-    $inc = 0
-    $timer.stop
-  end
-end
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/states.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/states.rb
deleted file mode 100644 (file)
index add0e84..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-# states.rb
-#
-# This demonstration script creates a listbox widget that displays
-# the names of the 50 states in the United States of America.
-#
-# listbox widget demo 'states' (called by 'widget')
-#
-
-# toplevel widget
-if defined?($states_demo) && $states_demo
-  $states_demo.destroy 
-  $states_demo = nil
-end
-
-# demo toplevel widget
-$states_demo = TkToplevel.new {|w|
-  title("Listbox Demonstration (states)")
-  iconname("states")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($states_demo).pack(:fill=>:both, :expand=>true)
-
-# label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "A listbox containing the 50 states is displayed below, along with a scrollbar.  You can scan the list either using the scrollbar or by scanning.  To scan, press button 2 in the widget and drag up or down."
-}
-msg.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $states_demo
-      $states_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'states'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame
-states_lbox = nil
-TkFrame.new(base_frame, 'borderwidth'=>'.5c') {|w|
-  s = TkScrollbar.new(w)
-  states_lbox = TkListbox.new(w) {
-    setgrid 1
-    height 12
-    yscrollcommand proc{|first,last| s.set first,last}
-  }
-  s.command(proc{|*args| states_lbox.yview(*args)})
-  s.pack('side'=>'right', 'fill'=>'y')
-  states_lbox.pack('side'=>'left', 'expand'=>1, 'fill'=>'both')
-}.pack('side'=>'top', 'expand'=>'yes', 'fill'=>'y')
-
-ins_data = [
-  'Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 
-  'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 
-  'Hawaii', 'Idaho', 'Illinois', 
-  'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 
-  'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 
-  'Montana', 'Nebraska', 'Nevada', 'New_Hampshire', 'New_Jersey', 'New_Mexico', 
-  'New_York', 'North_Carolina', 'North_Dakota', 
-  'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode_Island', 
-  'South_Carolina', 'South_Dakota', 
-  'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 
-  'West_Virginia', 'Wisconsin', 'Wyoming'
-]
-
-states_lbox.insert(0, *ins_data)
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/style.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/style.rb
deleted file mode 100644 (file)
index c2fed23..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-# style.rb
-#
-# This demonstration script creates a text widget that illustrates the
-# various display styles that may be set for tags.
-#
-# text (display styles) widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($style_demo) && $style_demo
-  $style_demo.destroy 
-  $style_demo = nil
-end
-
-# demo toplevel widget
-$style_demo = TkToplevel.new {|w|
-  title("Text Demonstration - Display Styles")
-  iconname("style")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($style_demo).pack(:fill=>:both, :expand=>true)
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $style_demo
-      $style_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'style'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# text 
-txt = TkText.new(base_frame){|t|
-  # 
-  setgrid 'true'
-  #width  70
-  #height 32
-  wrap 'word'
-  font $font
-  TkScrollbar.new(base_frame) {|s|
-    pack('side'=>'right', 'fill'=>'y')
-    command proc{|*args| t.yview(*args)}
-    t.yscrollcommand proc{|first,last| s.set first,last}
-  }
-  pack('expand'=>'yes', 'fill'=>'both')
-
-  # 
-  family = 'Courier'
-
-  if $tk_version =~ /^4.*/
-    style_tag_bold = TkTextTag.new(t, 'font'=>'-*-Courier-Bold-O-Normal--*-120-*-*-*-*-*-*')
-    style_tag_big = TkTextTag.new(t, 'font'=>'-*-Courier-Bold-R-Normal--*-140-*-*-*-*-*-*', 'kanjifont'=>$msg_kanji_font)
-    style_tag_verybig = TkTextTag.new(t, 'font'=>'-*-Helvetica-Bold-R-Normal--*-240-*-*-*-*-*-*')
-    #    style_tag_small = TkTextTag.new(t, 'font'=>'-Adobe-Helvetica-Bold-R-Normal-*-100-*', 'kanjifont'=>$kanji_font)
-    style_tag_small = TkTextTag.new(t, 'font'=>'-Adobe-Helvetica-Bold-R-Normal-*-100-*')
-  else
-    style_tag_bold = TkTextTag.new(t, 'font'=>[family, 12, :bold, :italic])
-    style_tag_big = TkTextTag.new(t, 'font'=>[family, 14, :bold])
-    style_tag_verybig = TkTextTag.new(t, 'font'=>['Helvetica', 24, :bold])
-    style_tag_small = TkTextTag.new(t, 'font'=>'Times 8 bold')
-  end
-###
-#  case($tk_version)
-#  when /^4.*/
-#    style_tag_big = TkTextTag.new(t, 'font'=>'-*-Courier-Bold-R-Normal--*-140-*-*-*-*-*-*', 'kanjifont'=>$msg_kanji_font)
-#    style_tag_small = TkTextTag.new(t, 'font'=>'-Adobe-Helvetica-Bold-R-Normal-*-100-*', 'kanjifont'=>$kanji_font)
-#  when /^8.*/
-#    unless $style_demo_do_first
-#      $style_demo_do_first = true
-#      Tk.tk_call('font', 'create', '@bigascii', 
-#                '-copy', '-*-Courier-Bold-R-Normal--*-140-*-*-*-*-*-*')
-#      Tk.tk_call('font', 'create', '@smallascii', 
-#                '-copy', '-Adobe-Helvetica-Bold-R-Normal-*-100-*')
-#      Tk.tk_call('font', 'create', '@cBigFont', 
-#                '-compound', '@bigascii @msg_knj')
-#      Tk.tk_call('font', 'create', '@cSmallFont', 
-#                '-compound', '@smallascii @kanji')
-#    end
-#    style_tag_big = TkTextTag.new(t, 'font'=>'@cBigFont')
-#    style_tag_small = TkTextTag.new(t, 'font'=>'@cSmallFont')
-#  end
-
-  # 
-  if TkWinfo.depth($root).to_i > 1
-    style_tag_color1 = TkTextTag.new(t, 'background'=>'#a0b7ce')
-    style_tag_color2 = TkTextTag.new(t, 'foreground'=>'red')
-    style_tag_raised = TkTextTag.new(t, 'relief'=>'raised', 'borderwidth'=>1)
-    style_tag_sunken = TkTextTag.new(t, 'relief'=>'sunken', 'borderwidth'=>1)
-  else
-    style_tag_color1 = TkTextTag.new(t, 'background'=>'black', 
-                                     'foreground'=>'white')
-    style_tag_color2 = TkTextTag.new(t, 'background'=>'black', 
-                                     'foreground'=>'white')
-    style_tag_raised = TkTextTag.new(t, 'background'=>'white', 
-                                     'relief'=>'raised', 'borderwidth'=>1)
-    style_tag_sunken = TkTextTag.new(t, 'background'=>'white', 
-                                     'relief'=>'sunken', 'borderwidth'=>1)
-  end
-
-  # 
-  if $tk_version =~ /^4\.[01]/
-    style_tag_bgstipple = TkTextTag.new(t, 'background'=>'black', 
-                                        'borderwidth'=>0, 
-                                        'bgstipple'=>'gray25')
-  else
-    style_tag_bgstipple = TkTextTag.new(t, 'background'=>'black', 
-                                        'borderwidth'=>0, 
-                                        'bgstipple'=>'gray12')
-  end
-  style_tag_fgstipple = TkTextTag.new(t, 'fgstipple'=>'gray50')
-  style_tag_underline = TkTextTag.new(t, 'underline'=>'on')
-  style_tag_overstrike = TkTextTag.new(t, 'overstrike'=>'on')
-  style_tag_right  = TkTextTag.new(t, 'justify'=>'right')
-  style_tag_center = TkTextTag.new(t, 'justify'=>'center')
-  if $tk_version =~ /^4.*/
-    style_tag_super = TkTextTag.new(t, 'offset'=>'4p', 'font'=>'-Adobe-Courier-Medium-R-Normal--*-100-*-*-*-*-*-*')
-    style_tag_sub = TkTextTag.new(t, 'offset'=>'-2p', 'font'=>'-Adobe-Courier-Medium-R-Normal--*-100-*-*-*-*-*-*')
-  else
-    style_tag_super = TkTextTag.new(t, 'offset'=>'4p', 'font'=>[family, 10])
-    style_tag_sub = TkTextTag.new(t, 'offset'=>'-2p', 'font'=>[family, 10])
-  end
-  style_tag_margins = TkTextTag.new(t, 'lmargin1'=>'12m', 'lmargin2'=>'6m',
-                                    'rmargin'=>'10m')
-  style_tag_spacing = TkTextTag.new(t, 'spacing1'=>'10p', 'spacing2'=>'2p',
-                                    'lmargin1'=>'12m', 'lmargin2'=>'6m',
-                                    'rmargin'=>'10m')
-
-  # 
-  insert('end', 'Text widgets like this one allow you to display information in a
-variety of styles.  Display styles are controlled using a mechanism
-called ')
-  insert('end', 'tags', style_tag_big)
-  insert('end', '. Tags are just textual names that you can apply to one
-or more ranges of characters within a text widget.  You can configure
-tags with various display styles.  If you do this, then the tagged
-characters will be displayed with the styles you chose.  The
-available display styles are:
-')
-  insert('end', "\n1. Font.", style_tag_big)
-  insert('end', "  You can choose any X font, ")
-  insert('end', "large", style_tag_verybig)
-  insert('end', " or ")
-  insert('end', "small", style_tag_small)
-  insert('end', ".\n")
-  insert('end', "\n2. Color.", style_tag_big)
-  insert('end', "  You can change either the ")
-  insert('end', "background", style_tag_color1)
-  insert('end', " or ")
-  insert('end', "foreground", style_tag_color2)
-  insert('end', "\ncolor, or ")
-  insert('end', "both", style_tag_color1, style_tag_color2)
-  insert('end', ".\n")
-  insert('end', "\n3. Stippling.", style_tag_big)
-  insert('end', "  You can cause either the ")
-  insert('end', "background", style_tag_bgstipple)
-  insert('end', " or ")
-  insert('end', "foreground", style_tag_fgstipple)
-  insert('end', "\ninformation to be drawn with a stipple fill instead of a solid fill.\n")
-  insert('end', "\n4. Underlining.", style_tag_big)
-  insert('end', "  You can ")
-  insert('end', "underline", style_tag_underline)
-  insert('end', " ranges of text.\n")
-  insert('end', "\n5. Overstrikes.", style_tag_big)
-  insert('end', "  You can ")
-  insert('end', "draw lines through", style_tag_overstrike)
-  insert('end', " ranges of text.\n")
-  insert('end', "\n6. 3-D effects.", style_tag_big)
-  insert('end', "  You can arrange for the background to be drawn\nwith a border that makes characters appear either\n")
-  insert('end', "raised", style_tag_raised)
-  insert('end', " or ")
-  insert('end', "sunken", style_tag_sunken)
-  insert('end', ".\n")
-  insert('end', "\n7. Justification.", style_tag_big)
-  insert('end', " You can arrange for lines to be displayed\n")
-  insert('end', "left-justified,\n")
-  insert('end', "right-justified, or\n", style_tag_right)
-  insert('end', "centered.\n", style_tag_center)
-  insert('end', "\n8. Superscripts and subscripts.", style_tag_big)
-  insert('end', " You can control the vertical\n")
-  insert('end', "position of text to generate superscript effects like 10")
-  insert('end', "n", style_tag_super)
-  insert('end', " or\nsubscript effects like X")
-  insert('end', "i", style_tag_sub)
-  insert('end', ".\n")
-  insert('end', "\n9. Margins.", style_tag_big)
-  insert('end', " You can control the amount of extra space left")
-  insert('end', " on\neach side of the text:\n")
-  insert('end', "This paragraph is an example of the use of ", style_tag_margins)
-  insert('end', "margins.  It consists of a single line of text ", style_tag_margins)
-  insert('end', "that wraps around on the screen.  There are two ", style_tag_margins)
-  insert('end', "separate left margin values, one for the first ", style_tag_margins)
-  insert('end', "display line associated with the text line, ", style_tag_margins)
-  insert('end', "and one for the subsequent display lines, which ", style_tag_margins)
-  insert('end', "occur because of wrapping.  There is also a ", style_tag_margins)
-  insert('end', "separate specification for the right margin, ", style_tag_margins)
-  insert('end', "which is used to choose wrap points for lines.\n", style_tag_margins)
-  insert('end', "\n10. Spacing.", style_tag_big)
-  insert('end', " You can control the spacing of lines with three\n")
-  insert('end', "separate parameters.  \"Spacing1\" tells how much ")
-  insert('end', "extra space to leave\nabove a line, \"spacing3\" ")
-  insert('end', "tells how much space to leave below a line,\nand ")
-  insert('end', "if a text line wraps, \"spacing2\" tells how much ")
-  insert('end', "space to leave\nbetween the display lines that ")
-  insert('end', "make up the text line.\n")
-  insert('end', "These indented paragraphs illustrate how spacing ", style_tag_spacing)
-  insert('end', "can be used.  Each paragraph is actually a ", style_tag_spacing)
-  insert('end', "single line in the text widget, which is ", style_tag_spacing)
-  insert('end', "word-wrapped by the widget.\n", style_tag_spacing)
-  insert('end', "Spacing1 is set to 10 points for this text, ", style_tag_spacing)
-  insert('end', "which results in relatively large gaps between ", style_tag_spacing)
-  insert('end', "the paragraphs.  Spacing2 is set to 2 points, ", style_tag_spacing)
-  insert('end', "which results in just a bit of extra space ", style_tag_spacing)
-  insert('end', "within a pararaph.  Spacing3 isn't used ", style_tag_spacing)
-  insert('end', "in this example.\n", style_tag_spacing)
-  insert('end', "To see where the space is, select ranges of ", style_tag_spacing)
-  insert('end', "text within these paragraphs.  The selection ", style_tag_spacing)
-  insert('end', "highlight will cover the extra space.", style_tag_spacing)
-
-}
-
-txt.width 70
-txt.height 32
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/tcolor b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/tcolor
deleted file mode 100644 (file)
index 3c63d67..0000000
+++ /dev/null
@@ -1,526 +0,0 @@
-#!/usr/bin/env ruby
-#
-# tcolor --
-#   simple color editor which supports RGB, HSB and CYM color space
-#
-# Copyright (C) 1998 Takaaki Tateishi(ttate@jaist.ac.jp)
-# last update: Thu Jun 18 06:32:35 JST 1998
-#
-
-require "tk"
-
-
-# use TkVariable instance for the variable which is changed by Tk interpreter
-
-$colorSpace = TkVariable.new(:rgb)
-$master = nil
-$red = 65535
-$green = 0
-$blue = 0
-$color = "#ffff00000000"
-$updating = TkVariable.new(0)
-$autoUpdate = TkVariable.new(1)
-$name = TkVariable.new($color)
-$command = TkVariable.new("print(%%,\"\n\")")
-# $command = TkVariable.new("")
-$label1 = TkVariable.new("label1")
-$label2 = TkVariable.new("label2")
-$label3 = TkVariable.new("label3")
-
-
-# setup the entry of the resourc database
-if (TkVarAccess.new('tcl_platform')['platform'] == 'unix')
-  TkOptionDB.add('*Entry.background', 'white')
-end
-
-
-# methods for events
-
-def rgbToHsv(red,green,blue)
-
-  if ( red > green )
-    max = red
-    min = green
-  else
-    max = green
-    min = red
-  end
-
-  if ( blue > max )
-    max = blue
-  else
-    if ( blue < min )
-      min = blue
-    end
-  end
-
-  range = max - min
-
-  if ( max == 0 )
-    sat = 0.0
-  else
-    sat = (max-min)/max
-  end
-
-  if ( sat == 0 )
-    hue = 0.0
-  else
-    rc = (max-red)/range
-    gc = (max-green)/range
-    bc = (max-blue)/range
-    if ( red == max )
-      hue = 0.166667 * (bc - gc)
-    else
-      if ( green == max )
-       hue = 0.166667 * (2.0 + rc - bc)
-      else
-       hue = 0.166667 * (4.0 + gc - rc)
-      end
-    end
-    if ( hue < 0.0 )
-      hue = hue + 1.0
-    end
-  end
-
-  [hue,sat,max/65535]
-end
-
-
-def hsbToRgb(hue,sat,value)
-  v = 65535.0 * value
-  if( sat == 0 )
-    ans = [v,v,v]
-  else
-    hue = hue*6.0
-    if ( hue >= 6 )
-      hue = 0.0
-    end
-    i = hue.to_i
-    f = hue - i
-    p = 65535.0 * value * (1.0 - sat)
-    q = 65535.0 * value * (1.0 - (sat * f))
-    t = 65535.0 * value * (1.0 - (sat * (1.0 - f)))
-    case i
-    when 0
-      ans = [v,t,p]
-    when 1
-      ans = [q,v,p]
-    when 2
-      ans = [p,v,t]
-    when 3
-      ans = [p,q,v]
-    when 4
-      ans = [t,p,v]
-    when 5
-      ans = [v,p,q]
-    else
-      raise(eException,"i value #{i} is out of range")
-    end
-  end
-  return ans
-end
-
-
-def _null_binding
-  Module.new.instance_eval{binding}
-end
-private :_null_binding
-
-def doUpdate 
-  newCmd = $command.to_s.gsub("%%","\"#{$color}\"")
-  eval(newCmd, _null_binding)
-end
-
-
-def tc_scaleChanged
-  if( $updating.to_i == 1 )
-    return 
-  end
-
-  $master = :scale if $master == nil
-
-  scale1 = $root.middle.middle.scale1
-  scale2 = $root.middle.middle.scale2
-  scale3 = $root.middle.middle.scale3
-
-  case $colorSpace.value.intern
-  when :rgb
-    $red = (scale1.get * 65.535).to_i
-    $green = (scale2.get * 65.535).to_i
-    $blue = (scale3.get * 65.535).to_i
-  when :cmy
-    $red = (65535 - scale1.get * 65.535).to_i
-    $green = (65535 - scale2.get * 65.535).to_i
-    $blue = (65535 - scale3.get * 65.535).to_i        
-  when :hsb
-    list = hsbToRgb(scale1.get / 1000.0,
-                   scale2.get / 1000.0,
-                   scale3.get / 1000.0)
-    $red = list[0]
-    $green = list[1]
-    $blue = list[2]
-  else
-    raise(Exception,"unknown colorSpace")
-  end
-  $color = format("#%04x%04x%04x",$red.to_i,$green.to_i,$blue.to_i)
-  $name.value = $color if $master == :scale
-  $root.middle.right.set_color($color)
-  if( $autoUpdate.to_i == 1 )
-    doUpdate
-  end
-  Tk.update(true)
-  $master = nil if $master == :scale
-end
-
-
-def tc_setScales
-  $updating.value = 1
-
-  scale1 = $root.middle.middle.scale1
-  scale2 = $root.middle.middle.scale2
-  scale3 = $root.middle.middle.scale3
-  
-  case $colorSpace.value.intern
-  when :rgb
-    scale1.set($red / 65.535)
-    scale2.set($green / 65.535)
-    scale3.set($blue / 65.535)
-  when :cmy
-    scale1.set((65535 - $red) / 65.535)
-    scale2.set((65535 - $green) / 65.535)
-    scale3.set((65535 - $blue) / 65.535)
-  when :hsb
-    list = rgbToHsv($red,$green,$blue)
-    scale1.set( list[0] * 1000.0 )
-    scale2.set( list[1] * 1000.0 )
-    scale3.set( list[2] * 1000.0 )
-  else
-    raise(Exception,"unknown colorSpace")
-  end
-
-  $updating.value = 0
-end
-
-
-def tc_loadNamedColor(name)
-  $name.value = name
-  $master = :name if $master == nil
-  if name[0,1] != "#" 
-    list = TkWinfo.rgb($root.middle.right.swatch,name)
-    $red = list[0]
-    $green = list[1]
-    $blue = list[2]
-  else
-    case name.length
-    when 4
-      fmt = /#(.{1})(.{1})(.{1})/
-      shift = 12
-    when 7
-      fmt = /#(.{2})(.{2})(.{2})/
-      shift = 8
-    when 10
-      fmt = /#(.{3})(.{3})(.{3})/
-      shift = 4
-    when 13
-      fmt = /#(.{4})(.{4})(.{4})/
-      shift = 0
-    else
-      raise(eException,"syntax error in color name \"#{name}\"")
-    end
-    name.scan(fmt){|strlist|
-      if strlist.length != 3
-       raise(eException,"syntax error in color name \"#{name}\"")
-      end
-      $red = strlist[0].hex
-      $green = strlist[1].hex
-      $blue = strlist[2].hex
-    }
-    $red = $red << shift
-    $green = $green << shift
-    $blue = $blue << shift
-  end
-  
-  tc_setScales
-  $color = format("#%04x%04x%04x",$red,$green,$blue)
-  $root.middle.right.set_color($color)
-  if $autoUpdate.to_i == 1
-    doUpdate
-  end
-  Tk.update(true)
-  $master = nil if $master == :name
-end
-
-
-def changeColorSpace(space)
-  case space
-  when :rgb
-    $label1.value = "Red"
-    $label2.value = "Green"
-    $label3.value = "Blue"
-  when :cmy
-    $label1.value = "Cyan"
-    $label2.value = "Magenta"
-    $label3.value = "Yellow"
-  when :hsb
-    $label1.value = "Hue"
-    $label2.value = "Saturation"
-    $label3.value = "Brightness"
-  end
-  tc_setScales
-end
-
-
-# menu
-
-class TkColorMenuFrame<TkFrame
-  def initialize(parent)
-    super(parent,
-         "relief"=>"raised",
-         "borderwidth"=>"2")
-
-    # File menubutton
-    @file = TkMenubutton.new(self){|button|
-
-      # File menu
-      @file_menu = TkMenu.new(button){
-       add "radio",
-         "label" => "RGB color space",
-         "variable" => $colorSpace,
-         "value" => :rgb,
-         "underline" => "0",
-         "command" => proc{changeColorSpace(:rgb)}
-       add "radio",
-         "label" => "CMY color space",
-         "variable" => $colorSpace,
-         "value" => :cmy,
-         "underline" => "0",
-         "command" => proc{changeColorSpace(:cmy)}
-       add "radio",
-         "label" => "HSB color space",
-         "variable" => $colorSpace,
-         "value" => :hsb,
-         "underline" => "0",
-         "command" => proc{changeColorSpace(:hsb)}
-       add "separator"
-       add "radio",
-         "label" => "Automatic updates",
-         "variable" => $autoUpdate,
-         "value" => "1",
-         "underline" => "0"
-       add "radio",
-         "label" => "Manual updates",
-         "variable" => $autoUpdate,
-         "value" => "0",
-         "underline" => "0"
-       add "separator"
-       add "command",
-         "label" => "Exit program",
-         "underline" => "0",
-         "command" => proc{exit}
-      }
-      
-      # assign File menu to File button
-      menu @file_menu
-
-      text "File"
-      underline "0"
-    }.pack("side"=>"left")
-
-    self
-  end
-end
-
-
-# bottom frame
-class TkColorBotFrame<TkFrame
-  def initialize(parent)
-    super(parent,
-         "relief"=> "raised",
-         "borderwidth"=> 2)
-
-    @commandLabel = TkLabel.new(self,
-                               "text"=> "Command:")
-    @command = TkEntry.new(self,
-                          "relief"=> "sunken",
-                          "borderwidth"=> "2",
-                          "textvariable"=> $command,
-                          "font"=> "-Adobe-Courier-Medium-R-Normal--*-120-*-*-*-*-*-*")
-    @update = TkButton.new(self,
-                          "text"=> "Update",
-                          "command"=> proc{doUpdate})
-    @commandLabel.pack("side"=>"left")
-    @update.pack("side"=>"right","pady"=>".1c","padx"=>".25c")
-    @command.pack("expand"=>"yes","fill"=>"x","ipadx"=>".25c")
-
-    self
-  end
-end    
-
-
-# left side frame of middle level
-class TkColorMiddleLeftFrame<TkFrame
-  def initialize(parent)
-    super(parent)
-
-    for i in ["/usr/local/lib/X11rgb.txt","/usr/lib/X11/rgb.txt",
-       "/X11/R5/lib/X11/rgb.txt","/X11/R4/lib/rgb/rgb.txt",
-       "/usr/openwin/lib/X11/rgb.txt"]
-      if !File.readable?(i)
-       next
-      end
-      f = File.open(i)
-      @scroll = TkScrollbar.new(self,
-                               "orient"=>"vertical",
-                               "relief"=>"sunken",
-                               "borderwidth"=>"2")
-      @scroll.pack("side"=>"right","fill"=>"y")
-      @names = TkListbox.new(self,
-                            "width"=>"20",
-                            "height"=>"12",
-                            "yscrollcommand"=> proc{|first,last| @scroll.set first,last},
-                            "relief"=>"sunken",
-                            "borderwidth"=>"2",
-                            "exportselection"=>"false")
-      @scroll.command(proc{|*args| @names.yview(*args)})
-      @names.bind("Double-1",proc{
-                   tc_loadNamedColor(@names.get(@names.curselection))})
-      @names.pack("side"=>"left")
-      while (line = f.gets)
-       line.chop!
-       linelist = line.split(/[ \t]+/)
-       if linelist.length == 4
-         @names.insert("end",linelist[3])
-       end
-      end
-      f.close
-      break
-    end
-
-    self
-  end
-end
-
-
-# middle frame of middle level
-class TkColorMiddleMiddleFrame<TkFrame
-  attr_reader :scale1, :scale2, :scale3
-
-  def initialize(parent)
-    super(parent)
-
-    @f1 = TkFrame.new(self)
-    @f2 = TkFrame.new(self)
-    @f3 = TkFrame.new(self)
-    @f4 = TkFrame.new(self)
-
-    for f in [@f1,@f2,@f3]
-      f.pack("side"=>"top","expand"=>"yes")
-    end
-    @f4.pack("side"=>"top","expand"=>"yes","fill"=>"x")
-
-    @label1 = TkLabel.new(self,"textvariable"=>$label1)
-    @scale1 = TkScale.new(self,"from"=>"0","to"=>"1000","length"=>"6c",
-                         "orient"=>"horizontal",
-                         "command"=>proc{tc_scaleChanged})
-    @scale1.pack("side"=>"top","anchor"=>"w")
-    @label1.pack("side"=>"top","anchor"=>"w")
-
-    @label2 = TkLabel.new(self,"textvariable"=>$label2)
-    @scale2 = TkScale.new(self,"from"=>"0","to"=>"1000","length"=>"6c",
-                         "orient"=>"horizontal",
-                         "command"=>proc{tc_scaleChanged})
-    @scale2.pack("side"=>"top","anchor"=>"w")
-    @label2.pack("side"=>"top","anchor"=>"w")
-
-    @label3 = TkLabel.new(self,"textvariable"=>$label3)
-    @scale3 = TkScale.new(self,"from"=>"0","to"=>"1000","length"=>"6c",
-                         "orient"=>"horizontal",
-                         "command"=>proc{tc_scaleChanged})
-    @scale3.pack("side"=>"top","anchor"=>"w")
-    @label3.pack("side"=>"top","anchor"=>"w")
-
-    @nameLabel = TkLabel.new(self,"text"=>"Name:")
-    @name = TkEntry.new(self,"relief"=>"sunken","borderwidth"=>"2",
-                       "textvariable"=>$name,"width"=>"10",
-                       "font"=>"-Adobe-Courier-Medium-R-Normal--*-120-*-*-*-*-*-*")
-    @nameLabel.pack("side"=>"left")
-    @name.pack("side"=>"right", "expand"=>"1", "fill"=>"x")
-    @name.bind("Return",proc{tc_loadNamedColor $name.to_s})
-
-    self
-  end
-end
-
-
-class TkColorMiddleRightFrame<TkFrame
-  attr_reader :swatch
-
-  def initialize(parent)
-    super(parent)
-    @swatch = TkFrame.new(self, "width"=>"2c", "height"=>"5c",
-                         "background"=>$color)
-    @value = TkLabel.new(self, 
-                        "text"=>$color,
-                        "width"=>"13",
-                        "font"=>"-Adobe-Courier-Medium-R-Normal--*-120-*-*-*-*-*-*")
-    @swatch.pack("side"=>"top","expand"=>"yes","fill"=>"both")
-    @value.pack("side"=>"bottom","pady"=>".25c")
-
-    self
-  end
-
-  def set_color(color)
-    @swatch["background"] = color
-    @value["text"] = color
-  end
-end
-
-
-
-# middle level frame
-class TkColorMiddleFrame<TkFrame
-  attr_reader :left, :middle, :right
-
-  def initialize(parent)
-    super(parent,
-         "relief"=> "raised",
-         "borderwidth"=> "2")
-
-    @left = TkColorMiddleLeftFrame.new(self)
-    @left.pack("side"=>"left","padx"=>".25c","pady"=>".25c")
-
-    @middle = TkColorMiddleMiddleFrame.new(self)
-    @middle.pack("side"=>"left","expand"=>"yes","fill"=>"y")
-
-    @right = TkColorMiddleRightFrame.new(self)
-    @right.pack("side"=>"left","padx"=>".25c","pady"=>".25c","anchor"=>"s")
-
-    self
-  end
-end
-
-
-class TkColor<TkRoot
-  attr_reader :menu, :bottom, :middle
-
-  def initialize(*args)
-    super(*args)
-    @menu = TkColorMenuFrame.new(self)
-    @menu.pack("side"=>"top", "fill"=>"x")
-
-    @bottom = TkColorBotFrame.new(self)
-    @bottom.pack("side"=>"bottom","fill"=>"x")
-
-    @middle = TkColorMiddleFrame.new(self)
-    @middle.pack("side"=>"top","fill"=>"both")
-
-    self
-  end
-end
-
-
-$root = TkColor.new
-changeColorSpace :rgb
-
-# start eventloop
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/text.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/text.rb
deleted file mode 100644 (file)
index 3ce8cdf..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-# text.rb
-#
-# This demonstration script creates a text widget that describes
-# the basic editing functions.
-#
-# text (basic facilities) widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($text_demo) && $text_demo
-  $text_demo.destroy 
-  $text_demo = nil
-end
-
-# demo toplevel widget
-$text_demo = TkToplevel.new {|w|
-  title("Text Demonstration - Basic Facilities")
-  iconname("text")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($text_demo).pack(:fill=>:both, :expand=>true)
-
-# version check
-if ((Tk::TK_VERSION.split('.').collect{|n| n.to_i} <=> [8,4]) < 0)
-  undo_support = false
-else
-  undo_support = true
-end
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $text_demo
-      $text_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'text'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# text 
-TkText.new(base_frame){|t|
-  relief 'sunken'
-  bd 2
-  setgrid 1
-  height 30
-  if undo_support
-    undo true
-    autoseparators true
-  end
-  TkScrollbar.new(base_frame) {|s|
-    pack('side'=>'right', 'fill'=>'y')
-    command proc{|*args| t.yview(*args)}
-    t.yscrollcommand proc{|first,last| s.set first,last}
-  }
-  pack('expand'=>'yes', 'fill'=>'both')
-
-  # 
-  insert('0.0', <<EOT)
-This window is a text widget.  It displays one or more lines of text
-and allows you to edit the text.  Here is a summary of the things you
-can do to a text widget:
-
-1. Scrolling. Use the scrollbar to adjust the view in the text window.
-
-2. Scanning. Press mouse button 2 in the text window and drag up or down.
-This will drag the text at high speed to allow you to scan its contents.
-
-3. Insert text. Press mouse button 1 to set the insertion cursor, then
-type text.  What you type will be added to the widget.
-
-4. Select. Press mouse button 1 and drag to select a range of characters.
-Once you've released the button, you can adjust the selection by pressing
-button 1 with the shift key down.  This will reset the end of the
-selection nearest the mouse cursor and you can drag that end of the
-selection by dragging the mouse before releasing the mouse button.
-You can double-click to select whole words or triple-click to select
-whole lines.
-
-5. Delete and replace. To delete text, select the characters you'd like
-to delete and type Backspace or Delete.  Alternatively, you can type new
-text, in which case it will replace the selected text.
-
-6. Copy the selection. To copy the selection into this window, select
-what you want to copy (either here or in another application), then
-click button 2 to copy the selection to the point of the mouse cursor.
-
-7. Edit.  Text widgets support the standard Motif editing characters
-plus many Emacs editing characters.  Backspace and Control-h erase the
-character to the left of the insertion cursor.  Delete and Control-d
-erase the character to the right of the insertion cursor.  Meta-backspace
-deletes the word to the left of the insertion cursor, and Meta-d deletes
-the word to the right of the insertion cursor.  Control-k deletes from
-the insertion cursor to the end of the line, or it deletes the newline
-character if that is the only thing left on the line.  Control-o opens
-a new line by inserting a newline character to the right of the insertion
-cursor.  Control-t transposes the two characters on either side of the
-insertion cursor. #{
-      if undo_support
-        undo_text = "Control-z undoes the last editing action performed,\nand "
-        case $tk_platform['platform']
-        when "unix", "macintosh"
-          undo_text << "Control-Shift-z"
-        else # 'windows'
-          undo_text << "Control-y"
-        end
-        undo_text << "redoes undone edits."
-      else
-        ""
-      end
-}
-
-7. Resize the window.  This widget has been configured with the "setGrid"
-option on, so that if you resize the window it will always resize to an
-even number of characters high and wide.  Also, if you make the window
-narrow you can see that long lines automatically wrap around onto
-additional lines so that all the information is always visible.
-EOT
-
-  set_insert('0.0')
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/textpeer.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/textpeer.rb
deleted file mode 100644 (file)
index c25ce15..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# text widget peering demo (called by 'widget')
-#
-# based on Tcl/Tk8.5.0 widget demos
-
-if defined?($textpeer_demo) && $textpeer_demo
-  $textpeer_demo.destroy 
-  $textpeer_demo = nil
-end
-
-# demo toplevel widget
-$textpeer_demo = TkToplevel.new {|w|
-  title("Text Wdget Peering Demonstration")
-  iconname("textpeer")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($textpeer_demo).pack(:fill=>:both, :expand=>true)
-
-count = [0]
-
-## Define a widget that we peer from; it won't ever actually be shown though
-first = TkText.new(base_frame, :widgetname=>"text#{count[0] += 1}")
-first.insert :end,"This is a coupled pair of text widgets; they are peers to "
-first.insert :end,"each other. They have the same underlying data model, but "
-first.insert :end,"can show different locations, have different current edit "
-first.insert :end,"locations, and have different selections. You can also "
-first.insert :end,"create additional peers of any of these text widgets using "
-first.insert :end,"the Make Peer button beside the text widget to clone, and "
-first.insert :end,"delete a particular peer widget using the Delete Peer "
-first.insert :end,"button."
-
-Tk.update_idletasks  ## for 'first' widget
-
-## Procedures to make and kill clones; most of this is just so that the demo
-## looks nice...
-def makeClone(count, win, txt)
-  cnt = (count[0] += 1)
-  peer = TkText::Peer.new(txt, win, :widgetname=>"text#{cnt}")
-  sbar = TkScrollbar.new(win, :widgetname=>"sb#{cnt}")
-  peer.yscrollbar sbar
-  b1 = TkButton.new(win, :widgetname=>"clone#{cnt}", :text=>'Make Peer', 
-                    :command=>proc{makeClone(count, win, peer)})
-  b2 = TkButton.new(win, :widgetname=>"kill#{cnt}", :text=>'Delete Peer', 
-                    :command=>proc{killClone(win, cnt)})
-  row = cnt * 2
-  TkGrid.configure(peer, sbar, b1, :sticky=>'nsew', :row=>row)
-  TkGrid.configure('^',  '^',  b2, :sticky=>'nsew', :row=>(row+=1))
-  TkGrid.configure(b1,  b2, :sticky=>'new')
-  TkGrid.rowconfigure(win,  b2, :weight=>1)
-end
-
-def killClone(win, cnt)
-  Tk.destroy("#{win.path}.text#{cnt}",  "#{win.path}.sb#{cnt}", 
-             "#{win.path}.clone#{cnt}", "#{win.path}.kill#{cnt}")
-end
-
-## Now set up the GUI
-makeClone(count, base_frame, first)
-makeClone(count, base_frame, first)
-first.destroy
-
-## See Code / Dismiss buttons
-TkFrame.new(base_frame){|f|
-  TkButton.new(f, :text=>'Dismiss', :width=>15, :command=>proc{
-                 $textpeer_demo.destroy
-                 $textpeer_demo = nil
-               }).pack(:side=>:left, :expand=>true)
-
-  TkButton.new(f, :text=>'See Code', :width=>15, :command=>proc{
-                 showCode 'textpeer'
-               }).pack(:side=>:left, :expand=>true)
-
-  TkGrid.configure(f, '-', '-', :sticky=>'ew', :row=>5000)
-}
-TkGrid.columnconfigure(base_frame, 0, :weight=>1)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/timer b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/timer
deleted file mode 100644 (file)
index 58a41d0..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/usr/bin/env ruby
-#
-# timer --
-# This script generates a counter with start,stop and reset buttons.
-#
-# Copyright (C) 1998 Takaaki Tateishi (ttate@jaist.ac.jp)
-# last update: Sat Jun 27 12:24:14 JST 1998
-#
-
-require "tk"
-require "thread"
-require "tkafter"
-
-$time = "0.00"
-$m = Mutex.new
-$loop = false
-
-def timer_stop
-  $loop = false
-  $m.lock
-end
-
-def timer_start
-  $loop = true
-  $m.unlock
-end
-
-def timer_reset
-  $time = "0.00"
-  $root.countframe.counter['text'] = $time
-end
-
-def timer_loop
-  if $loop
-    $time = $time.succ
-    $root.countframe.counter['text'] = $time
-  end
-  Tk.after(10,proc{timer_loop})
-end
-
-
-#
-# thread version
-#
-def timer_loop2
-  while true
-    $m.lock
-    $time = $time.succ
-    $root.countframe.counter['text'] = $time
-    sleep(0.01)
-    $m.unlock
-  end
-end
-
-#
-# TkAfter
-#
-def timer_loop3
-  if $loop
-    $time = $time.succ
-    $root.countframe.counter['text'] = $time
-  end
-end
-
-
-class CountFrame < TkFrame
-  attr_reader :counter
-
-  def initialize(parent=nil,keys=nil)
-    super(parent,keys)
-    @counter = TkLabel.new(self,
-                          'text'=>$time, 
-                          'relief'=>'raised')
-    @counter.pack('fill'=>'both')
-    self
-  end
-end
-
-
-class ButtonFrame < TkFrame
-  def initialize(parent=nil,keys=nil)
-    super(parent,keys)
-=begin
-    @stop = TkButton.new(self,
-                        'text'=>'Stop',
-                        'command'=>proc{timer_stop})
-    @start = TkButton.new(self,
-                         'text'=>'Start',
-                         'command'=>proc{timer_start})
-=end
-    @stop  = TkButton.new(self, :text=>'Stop',  :state=>:disabled)
-    @start = TkButton.new(self, :text=>'Start', :state=>:normal)
-
-    @stop.command proc{
-      timer_stop
-      @start.state(:normal)
-      @stop.state(:disabled)
-    }
-    @start.command proc{
-      timer_start
-      @stop.state(:normal)
-      @start.state(:disabled)
-    }
-
-    @reset = TkButton.new(self,
-                         'text'=>'Reset',
-                         'command'=>proc{timer_reset})
-    for b in [@stop,@start,@reset]
-      b.pack('side'=>'left', 'fill'=>'both', 'expand'=>'yes')
-    end
-  end
-end
-
-
-class Timer < TkRoot
-  attr_reader :countframe
-
-  def initialize(*args)
-    super(*args)
-    @countframe = CountFrame.new(self)
-    @buttonframe = ButtonFrame.new(self)
-    for f in [@buttonframe,@countframe]
-      f.pack('side'=>'top', 'fill'=>'both')
-    end
-    self
-  end
-end
-
-
-$root = Timer.new
-
-#$thread = Thread.start{timer_loop2}
-#timer_loop
-TkAfter.new(10,-1,proc{timer_loop3}).start
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/tkencoding.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/tkencoding.rb
deleted file mode 100644 (file)
index 727491a..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-# -*- ruby -*-
-#
-# tkencoding.rb
-# written by ttate@jaist.ac.jp
-
-class TclTkIp
-  alias __eval _eval
-  alias __invoke _invoke
-  private :__eval
-  private :__invoke
-
-  attr_accessor :encoding
-
-  def _eval(cmd)
-    if( @encoding )
-      _fromUTF8(__eval(_toUTF8(cmd,@encoding)),@encoding)
-    else
-      __eval(cmd)
-    end
-  end
-
-  def _invoke(*cmds)
-    if( @encoding )
-      cmds = cmds.collect{|cmd| _toUTF8(cmd,@encoding)}
-      _fromUTF8(__invoke(*cmds),@encoding)
-    else
-      __invoke(*cmds)
-    end
-  end
-end
-
-module Tk
-  INTERP = TkCore::INTERP
-
-  def encoding=(name)
-    INTERP.encoding = name
-  end
-
-  def encoding
-    INTERP.encoding
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/toolbar.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/toolbar.rb
deleted file mode 100644 (file)
index 5cf8637..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-# toolbar.rb --
-#
-# This demonstration script creates a toolbar that can be torn off.
-#
-# based on "Id: toolbar.tcl,v 1.3 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($toolbar_demo) && $toolbar_demo
-  $toolbar_demo.destroy 
-  $toolbar_demo = nil
-end
-
-$toolbar_demo = TkToplevel.new {|w|
-  title("Ttk Menu Buttons")
-  iconname("toolbar")
-  positionWindow(w)
-}
-
-base_frame = Ttk::Frame.new($toolbar_demo).pack(:fill=>:both, :expand=>true)
-
-if Tk.windowingsystem != 'aqua'
-  msg = Ttk::Label.new(base_frame, :wraplength=>'4i', 
-                       :text=>Tk::UTF8_String.new(<<EOL))
-This is a demonstration of how to do \
-a toolbar that is styled correctly \
-and which can be torn off (this feature reqrires Tcl/Tk8.5). \
-The buttons are configured to be \\u201Ctoolbar style\\u201D buttons by \
-telling them that they are to use the Toolbutton style. At the left \
-end of the toolbar is a simple marker that the cursor changes to a \
-movement icon over; drag that away from the toolbar to tear off the \
-whole toolbar into a separate toplevel widget. When the dragged-off \
-toolbar is no longer needed, just close it like any normal toplevel \
-and it will reattach to the window it was torn off from.
-EOL
-else
-  msg = Ttk::Label.new(base_frame, :wraplength=>'4i', 
-                       :text=>Tk::UTF8_String.new(<<EOL))
-This is a demonstration of how to do \
-a toolbar that is styled correctly. The buttons are configured to \
-be \\u201Ctoolbar style\\u201D buttons by telling them that they are \
-to use the Toolbutton style.
-EOL
-end
-
-## Set up the toolbar hull
-tbar_base = Tk::Frame.new(base_frame, # Must be a starndard Tk frame!
-                          :widgetname=>'toolbar') # for window title
-sep = Ttk::Separator.new(base_frame)
-to_base = Ttk::Frame.new(tbar_base, :cursor=>'fleur')
-if Tk.windowingsystem != 'aqua'
-  to  = Ttk::Separator.new(to_base, :orient=>:vertical)
-  to2 = Ttk::Separator.new(to_base, :orient=>:vertical)
-  to.pack(:fill=>:y, :expand=>true, :padx=>2, :side=>:left)
-  to2.pack(:fill=>:y, :expand=>true, :side=>:left)
-end
-
-contents = Ttk::Frame.new(tbar_base)
-Tk.grid(to_base, contents, :sticky=>'nsew')
-tbar_base.grid_columnconfigure(contents, :weight=>1)
-contents.grid_columnconfigure(1000, :weight=>1)
-
-if Tk.windowingsystem != 'aqua'
-  ## Bindings so that the toolbar can be torn off and reattached
-  to_base.bind('B1-Motion', '%X %Y'){|x, y| tbar_base.tearoff(to_base, x, y)}
-  to.     bind('B1-Motion', '%X %Y'){|x, y| tbar_base.tearoff(to_base, x, y)}
-  to2.    bind('B1-Motion', '%X %Y'){|x, y| tbar_base.tearoff(to_base, x, y)}
-  def tbar_base.tearoff(w, x, y)
-    on_win = TkWinfo.containing(x, y)
-    return unless (on_win && on_win.path =~ /^#{@path}(\.|$)/)
-    self.grid_remove
-    w.grid_remove
-    self.wm_manage
-    # self.wm_title('Toolbar') # if you don't want to use its widget name as a window title.
-    self.wm_protocol('WM_DELETE_WINDOW'){ self.untearoff(self) }
-  end
-  def tbar_base.untearoff(w)
-    self.wm_forget
-    w.grid
-    self.grid
-  end
-end
-
-## Some content for the rest of the toplevel
-text = TkText.new(base_frame, :width=>40, :height=>10)
-
-## Toolbar contents
-tb_btn = Ttk::Button.new(tbar_base, :text=>'Button', :style=>'Toolbutton', 
-                         :command=>proc{text.insert(:end, "Button Pressed\n")})
-tb_chk = Ttk::Checkbutton.new(tbar_base, :text=>'Check', :style=>'Toolbutton', 
-                              :variable=>(check = TkVariable.new), 
-                              :command=>proc{
-                                text.insert(:end, "Check is #{check.value}\n")
-                              })
-tb_mbtn = Ttk::Menubutton.new(tbar_base, :text=>'Menu')
-tb_combo = Ttk::Combobox.new(tbar_base, :value=>TkFont.families, 
-                             :state=>:readonly)
-tb_mbtn.menu(menu = Tk::Menu.new(tb_mbtn))
-menu.add(:command, :label=>'Just', :command=>proc{text.insert(:end, "Just\n")})
-menu.add(:command, :label=>'An', :command=>proc{text.insert(:end, "An\n")})
-menu.add(:command, :label=>'Example', 
-         :command=>proc{text.insert(:end, "Example\n")})
-tb_combo.bind('<ComboboxSelected>'){ text.font.family = tb_combo.get }
-
-## Arrange contents
-Tk.grid(tb_btn, tb_chk, tb_mbtn, tb_combo, 
-        :in=>contents, :padx=>2, :sticky=>'ns')
-Tk.grid(tbar_base, :sticky=>'ew')
-Tk.grid(sep, :sticky=>'ew')
-Tk.grid(msg, :sticky=>'ew')
-Tk.grid(text, :sticky=>'nsew')
-base_frame.grid_rowconfigure(text, :weight=>1)
-base_frame.grid_columnconfigure(text, :weight=>1)
-
-## See Code / Dismiss buttons
-Ttk::Frame.new(base_frame) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'See Code', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'toolbar'}), 
-         Ttk::Button.new(frame, :text=>'Dismiss', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $toolbar_demo.destroy
-                           $toolbar_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  Tk.grid(frame, :sticky=>'ew')
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/tree.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/tree.rb
deleted file mode 100644 (file)
index 0c7f0e7..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-# tree.rb --
-#
-# This demonstration script creates a toplevel window containing a Ttk
-# tree widget.
-#
-# based on "Id: tree.tcl,v 1.4 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($tree_demo) && $tree_demo
-  $tree_demo.destroy 
-  $tree_demo = nil
-end
-
-$tree_demo = TkToplevel.new {|w|
-  title("Directory Browser")
-  iconname("tree")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($tree_demo).pack(:fill=>:both, :expand=>true)
-
-## Explanatory text
-Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', 
-               :justify=>:left, :anchor=>'n', :padding=>[10, 2, 10, 6], 
-               :text=><<EOL).pack(:fill=>:x)
-Ttk is the new Tk themed widget set. \
-One of the widgets it includes is a tree widget, \
-which allows the user to browse a hierarchical data-set such as a filesystem. \
-The tree widget not only allows for the tree part itself, \
-but it also supports an arbitrary number of additional columns \
-which can show additional data (in this case, the size of the files \
-found in your filesystem). \
-You can also change the width of the columns \
-by dragging the boundary between them.
-EOL
-
-## See Code / Dismiss
-Ttk::Frame.new(base_frame) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'See Code', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'tree'}), 
-         Ttk::Button.new(frame, :text=>'Dismiss', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $tree_demo.destroy
-                           $tree_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x)
-}
-
-## Code to populate the roots of the tree (can be more than one on Windows)
-def populate_roots(tree)
-  TkComm.simplelist(Tk.tk_call('file', 'volumes')).sort.each{|dir|
-    populate_tree(tree, tree.insert(nil, :end, :text=>dir, 
-                                    :values=>[dir, 'directory']))
-  }
-end
-
-## Code to populate a node of the tree
-def populate_tree(tree, node)
-  return if tree.get(node, :type) != 'directory'
-
-  path = tree.get(node, :fullpath)
-  tree.delete(tree.children(node))
-  Dir.glob("#{path}/*").sort.each{|f|
-    type = File.ftype(f)
-    id = tree.insert(node, :end, 
-                     :text=>File.basename(f), :values=>[f, type]).id
-    if type == 'directory'
-      ## Make it so that this node is openable
-      tree.insert(id, 0, :text=>'dummy')
-      tree.itemconfigure(id, :text=>File.basename(f))
-    elsif type == 'file'
-      size = File.size(f)
-      if size >= 1024*1024*1024
-        size = '%.1f GB' % (size.to_f/1024/1024/1024)
-      elsif size >= 1024*1024
-        size = '%.1f MB' % (size.to_f/1024/1024)
-      elsif size >= 1024
-        size = '%.1f KB' % (size.to_f/1024)
-      else
-        size = '%.1f bytes' % (size.to_f/1024)
-      end
-      tree.set(id, :size, size)
-    end
-  }
-
-  # Stop this code from rerunning on the current node
-  tree.set(node, :type, 'processed_directory')
-end
-
-## Create the tree and set it up
-tree = Ttk::Treeview.new(base_frame, :columns=>%w(fullpath type size), 
-                         :displaycolumns=>['size'])
-if Tk.windowingsystem != 'aqua'
-  vsb = tree.yscrollbar(Ttk::Scrollbar.new(base_frame))
-  hsb = tree.xscrollbar(Ttk::Scrollbar.new(base_frame))
-else
-  vsb = tree.yscrollbar(Tk::Scrollbar.new(base_frame))
-  hsb = tree.xscrollbar(Tk::Scrollbar.new(base_frame))
-end
-
-tree.heading_configure('#0', :text=>'Directory Structure')
-tree.heading_configure('size', :text=>'File Size')
-tree.column_configure('size', :stretch=>0, :width=>70)
-populate_roots(tree)
-tree.bind('<TreeviewOpen>', '%W'){|w| populate_tree(w, w.focus_item)}
-
-## Arrange the tree and its scrollbars in the toplevel
-container = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
-container.lower
-Tk.grid(tree, vsb, :in=>container, :sticky=>'nsew')
-Tk.grid(hsb,       :in=>container, :sticky=>'nsew')
-container.grid_columnconfigure(0, :weight=>1)
-container.grid_rowconfigure(0, :weight=>1)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttkbut.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttkbut.rb
deleted file mode 100644 (file)
index b5780f5..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-# ttkbut.rb
-#
-# This demonstration script creates a toplevel window containing several
-# simple Ttk widgets, such as labels, labelframes, buttons, checkbuttons and
-# radiobuttons.
-#
-# based on "Id: ttkbut.tcl,v 1.4 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($ttkbut_demo) && $ttkbut_demo
-  $ttkbut_demo.destroy 
-  $ttkbut_demo = nil
-end
-
-$ttkbut_demo = TkToplevel.new {|w|
-  title("Simple Ttk Widgets")
-  iconname("ttkbut")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($ttkbut_demo).pack(:fill=>:both, :expand=>true)
-
-Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', :justify=>:left, 
-               :text=><<EOL).pack(:side=>:top, :fill=>:x)
-Ttk is the new Tk themed widget set. This is a Ttk themed label, \
-and below are three groups of Ttk widgets in Ttk labelframes. \
-The first group are all buttons that set the current application theme \
-when pressed. The second group contains three sets of checkbuttons, \
-with a separator widget between the sets. Note that the "Enabled" \
-button controls whether all the other themed widgets in this toplevel are \
-in the disabled state. The third group has a collection of linked \
-radiobuttons.
-EOL
-
-## Add buttons for setting the theme
-buttons = Ttk::Labelframe.new(base_frame, :text=>'Buttons')
-# Ttk::Style.theme_names.each{|theme|
-#   Ttk::Button.new(buttons, :text=>theme, 
-#                   :command=>proc{Ttk::Style.theme_use theme}).pack(:pady=>2)
-# }
-Ttk.themes.each{|theme|
-  Ttk::Button.new(buttons, :text=>theme, 
-                  :command=>proc{Ttk.set_theme theme}).pack(:pady=>2)
-}
-
-## Helper procedure for the top checkbutton
-def setState(root, value, *excepts)
-  return if excepts.member?(root)
-
-  ## Non-Ttk widgets (e.g. the toplevel) will fail, so make it silent
-  begin
-    root.state = value
-  rescue
-  end
-
-  ## Recursively invoke on all children of this root that are in the same
-  ## toplevel widget
-  root.winfo_children.each{|w|
-    setState(w, value, *excepts) if w.winfo_toplevel == root.winfo_toplevel
-  }
-end
-
-## Set up the checkbutton group
-checks = Ttk::Labelframe.new(base_frame, :text=>'Checkbuttons')
-enabled = TkVariable.new(true)
-e = Ttk::Checkbutton.new(checks, :text=>'Enabled', :variable=>enabled, 
-                         :command=>proc{
-                           setState($ttkbut_demo, 
-                                    ((enabled.bool)? "!disabled" : "disabled"),
-                                    e)
-                         })
-
-## See ttk_widget(n) for other possible state flags
-sep1 = Ttk::Separator.new(checks)
-sep2 = Ttk::Separator.new(checks)
-
-cheese  = TkVariable.new
-tomato  = TkVariable.new
-basil   = TkVariable.new
-oregano = TkVariable.new
-
-c1 = Ttk::Checkbutton.new(checks, :text=>'Cheese',  :variable=>cheese)
-c2 = Ttk::Checkbutton.new(checks, :text=>'Tomato',  :variable=>tomato)
-c3 = Ttk::Checkbutton.new(checks, :text=>'Basil',   :variable=>basil)
-c4 = Ttk::Checkbutton.new(checks, :text=>'Oregano', :variable=>oregano)
-
-Tk.pack(e, sep1, c1, c2, sep2, c3, c4, :fill=>:x, :pady=>2)
-
-## Set up the radiobutton group
-radios = Ttk::Labelframe.new(base_frame, :text=>'Radiobuttons')
-
-happyness = TkVariable.new
-
-r1 = Ttk::Radiobutton.new(radios, :variable=>happyness, 
-                          :text=>'Great', :value=>'great')
-r2 = Ttk::Radiobutton.new(radios, :variable=>happyness, 
-                          :text=>'Good', :value=>'good')
-r3 = Ttk::Radiobutton.new(radios, :variable=>happyness, 
-                          :text=>'Ok', :value=>'ok')
-r4 = Ttk::Radiobutton.new(radios, :variable=>happyness, 
-                          :text=>'Poor', :value=>'poor')
-r5 = Ttk::Radiobutton.new(radios, :variable=>happyness, 
-                          :text=>'Awful', :value=>'awful')
-
-Tk.pack(r1, r2, r3, r4, r5, :fill=>:x, :padx=>3, :pady=>2)
-
-## See Code / Dismiss
-Ttk::Frame.new(base_frame) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'See Variables', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{
-                           showVars(base_frame, ['enabled', enabled], 
-                                    ['cheese', cheese], ['tomato', tomato], 
-                                    ['basil', basil], ['oregano', oregano], 
-                                    ['happyness', happyness])
-                         }), 
-         Ttk::Button.new(frame, :text=>'See Code', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'ttkbut'}), 
-         Ttk::Button.new(frame, :text=>'Dismiss', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           tmppath = $ttkbut_demo
-                           $ttkbut_demo = nil
-                           $showVarsWin[tmppath.path] = nil
-                           tmppath.destroy
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x, :expand=>true)
-}
-
-## Arrange things neatly
-f = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
-f.lower
-Tk.grid(buttons, checks, radios, :in=>f, :sticky=>'nwe', :pady=>2, :padx=>3)
-f.grid_columnconfigure([0, 1, 2], :weight=>1, :uniform=>:yes)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttkmenu.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttkmenu.rb
deleted file mode 100644 (file)
index 75ecdb0..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-# ttkmenu.rb --
-#
-# This demonstration script creates a toplevel window containing several Ttk
-# menubutton widgets.
-#
-# based on "Id: ttkmenu.tcl,v 1.3 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($ttkmenu_demo) && $ttkmenu_demo
-  $ttkmenu_demo.destroy 
-  $ttkmenu_demo = nil
-end
-
-$ttkmenu_demo = TkToplevel.new {|w|
-  title("Ttk Menu Buttons")
-  iconname("ttkmenu")
-  positionWindow(w)
-}
-
-base_frame = Ttk::Frame.new($ttkmenu_demo).pack(:fill=>:both, :expand=>true)
-
-Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', :justify=>:left, 
-               :text=><<EOL).pack(:side=>:top, :fill=>:x)
-Ttk is the new Tk themed widget set, \
-and one widget that is available in themed form is the menubutton. \
-Below are some themed menu buttons \
-that allow you to pick the current theme in use. \
-Notice how picking a theme changes the way \
-that the menu buttons themselves look, \
-and that the central menu button is styled differently \
-(in a way that is normally suitable for toolbars). \
-However, there are no themed menus; the standard Tk menus were judged \
-to have a sufficiently good look-and-feel on all platforms, \
-especially as they are implemented as native controls in many places.
-EOL
-
-Ttk::Separator.new(base_frame).pack(:side=>:top, :fill=>:x)
-
-## See Code / Dismiss
-Ttk::Frame.new($ttkmenu_demo) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'See Code', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'ttkmenu'}), 
-         Ttk::Button.new(frame, :text=>'Dismiss', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $ttkmenu_demo.destroy
-                           $ttkmenu_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x)
-}
-
-b1 = Ttk::Menubutton.new(base_frame,:text=>'Select a theme',:direction=>:above)
-b2 = Ttk::Menubutton.new(base_frame,:text=>'Select a theme',:direction=>:left)
-b3 = Ttk::Menubutton.new(base_frame,:text=>'Select a theme',:direction=>:right)
-b4 = Ttk::Menubutton.new(base_frame,:text=>'Select a theme',:direction=>:flush,
-                         :style=>Ttk::Menubutton.style('Toolbutton'))
-b5 = Ttk::Menubutton.new(base_frame,:text=>'Select a theme',:direction=>:below)
-
-b1.menu(m1 = Tk::Menu.new(b1, :tearoff=>false))
-b2.menu(m2 = Tk::Menu.new(b2, :tearoff=>false))
-b3.menu(m3 = Tk::Menu.new(b3, :tearoff=>false))
-b4.menu(m4 = Tk::Menu.new(b4, :tearoff=>false))
-b5.menu(m5 = Tk::Menu.new(b5, :tearoff=>false))
-
-Ttk.themes.each{|theme|
-  m1.add(:command, :label=>theme, :command=>proc{Ttk.set_theme theme})
-  m2.add(:command, :label=>theme, :command=>proc{Ttk.set_theme theme})
-  m3.add(:command, :label=>theme, :command=>proc{Ttk.set_theme theme})
-  m4.add(:command, :label=>theme, :command=>proc{Ttk.set_theme theme})
-  m5.add(:command, :label=>theme, :command=>proc{Ttk.set_theme theme})
-}
-
-f = Ttk::Frame.new(base_frame).pack(:fill=>:x)
-f1 = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
-f.lower
-
-f.grid_anchor(:center)
-TkGrid('x', b1, 'x', :in=>f, :padx=>3, :pady=>2)
-TkGrid(b2,  b4, b3,  :in=>f, :padx=>3, :pady=>2)
-TkGrid('x', b5, 'x', :in=>f, :padx=>3, :pady=>2)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttknote.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttknote.rb
deleted file mode 100644 (file)
index c2a22b4..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-# ttknote.rb --
-#
-# This demonstration script creates a toplevel window containing a Ttk
-# notebook widget.
-#
-# based on "Id: ttknote.tcl,v 1.5 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($ttknote_demo) && $ttknote_demo
-  $ttknote_demo.destroy 
-  $ttknote_demo = nil
-end
-
-$ttknote_demo = TkToplevel.new {|w|
-  title("Ttk Notebook Widget")
-  iconname("ttknote")
-  positionWindow(w)
-}
-
-## See Code / Dismiss
-Ttk::Frame.new($ttknote_demo) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'See Code', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'ttknote'}), 
-         Ttk::Button.new(frame, :text=>'Dismiss', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $ttknote_demo.destroy
-                           $ttknote_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x)
-}
-
-base_frame = Ttk::Frame.new($ttknote_demo).pack(:fill=>:both, :expand=>true)
-
-## Make the notebook and set up Ctrl+Tab traversal
-notebook = Ttk::Notebook.new(base_frame).pack(:fill=>:both, :expand=>true, 
-                                              :padx=>2, :pady=>3)
-notebook.enable_traversal
-
-## Popuplate the first pane
-f_msg = Ttk::Frame.new(notebook)
-msg_m = Ttk::Label.new(f_msg, :font=>$font, :wraplength=>'4i', 
-                       :justify=>:left, :anchor=>'n', :text=><<EOL)
-Ttk is the new Tk themed widget set. \
-One of the widgets it includes is the notebook widget, \
-which provides a set of tabs that allow the selection of a group of panels, \
-each with distinct content. \
-They are a feature of many modern user interfaces. \
-Not only can the tabs be selected with the mouse, \
-but they can also be switched between using Ctrl+Tab \
-when the notebook page heading itself is selected. \
-Note that the second tab is disabled, and cannot be selected.
-EOL
-neat = TkVariable.new
-after_id = nil
-msg_b = Ttk::Button.new(f_msg, :text=>'Neat!', :underline=>0, 
-                        :command=>proc{
-                          neat.value = 'Yeah, I know...'
-                          Tk.after_cancel(after_id) if after_id
-                          after_id = Tk.after(500){neat.value = ''}
-                        })
-msg_b.winfo_toplevel.bind('Alt-n'){ msg_b.focus; msg_b.invoke }
-msg_l = Ttk::Label.new(f_msg, :textvariable=>neat)
-notebook.add(f_msg, :text=>'Description', :underline=>0, :padding=>2)
-Tk.grid(msg_m, '-', :sticky=>'new', :pady=>2)
-Tk.grid(msg_b, msg_l, :pady=>[2, 4])
-f_msg.grid_rowconfigure(1, :weight=>1)
-f_msg.grid_columnconfigure([0, 1], :weight=>1, :uniform=>1)
-
-## Populate the second pane. Note that the content doesn't really matter
-f_disabled = Ttk::Frame.new(notebook)
-notebook.add(f_disabled, :text=>'Disabled', :state=>:disabled)
-
-## Popuplate the third pane
-f_editor = Ttk::Frame.new(notebook)
-notebook.add(f_editor, :text=>'Text Editor', :underline=>0)
-editor_t = Tk::Text.new(f_editor, :width=>40, :height=>10, :wrap=>:char)
-if Tk.windowingsystem != 'aqua'
-  editor_s = editor_t.yscrollbar(Ttk::Scrollbar.new(f_editor))
-else
-  editor_s = editor_t.yscrollbar(Tk::Scrollbar.new(f_editor))
-end
-editor_s.pack(:side=>:right, :fill=>:y, :padx=>[0,2], :pady=>2)
-editor_t.pack(:fill=>:both, :expand=>true, :padx=>[2,0], :pady=>2)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttkpane.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttkpane.rb
deleted file mode 100644 (file)
index 56df613..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-# ttkpane.rb --
-#
-# This demonstration script creates a Ttk pane with some content.
-#
-# based on "Id: ttkpane.tcl,v 1.3 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($ttkpane_demo) && $ttkpane_demo
-  $ttkpane_demo.destroy 
-  $ttkpane_demo = nil
-end
-
-$ttkpane_demo = TkToplevel.new {|w|
-  title("Themed Nested Panes")
-  iconname("ttkpane")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($ttkpane_demo).pack(:fill=>:both, :expand=>true)
-
-Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', :justify=>:left, 
-               :text=><<EOL).pack(:side=>:top, :fill=>:x)
-This demonstration shows off a nested set of themed paned windows. \
-Their sizes can be changed by grabbing the area \
-between each contained pane and dragging the divider.
-EOL
-
-Ttk::Separator.new(base_frame).pack(:side=>:top, :fill=>:x)
-
-## See Code / Dismiss
-Ttk::Frame.new(base_frame) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'See Code', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'ttkpane'}), 
-         Ttk::Button.new(frame, :text=>'Dismiss', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $ttkpane_demo.destroy
-                           $ttkpane_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x)
-}
-
-frame = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
-
-outer = Ttk::Panedwindow.new(frame, :orient=>:horizontal)
-outer.add(in_left = Ttk::Panedwindow.new(outer, :orient=>:vertical))
-outer.add(in_right = Ttk::Panedwindow.new(outer, :orient=>:vertical))
-in_left.add(left_top = Ttk::Labelframe.new(in_left, :text=>'Button'))
-in_left.add(left_bot = Ttk::Labelframe.new(in_left, :text=>'Clocks'))
-in_right.add(right_top = Ttk::Labelframe.new(in_right, :text=>'Progress'))
-in_right.add(right_bot = Ttk::Labelframe.new(in_right, :text=>'Text'))
-if Tk.windowingsystem == 'aqua'
-  [left_top, left_bot, right_top, right_bot].each{|w| w.padding(3) }
-end
-
-# Fill the button pane
-Ttk::Button.new(left_top, :text=>'Press Me', 
-                :command=>proc{
-                  Tk.messageBox(:type=>'ok', :icon=>'info', :message=>'Ouch!', 
-                                :detail=>'That hurt...', :parent=>base_frame, 
-                                :title=>'Button Pressed')
-                }).pack(:padx=>2, :pady=>5)
-
-
-zones_list = [
-  [':Europe/Berlin'], 
-  [':America/Argentina/Buenos_Aires', ':America/Buenos_Aires'], 
-  [':Africa/Johannesburg'], 
-  [':Europe/London'], 
-  [':America/Los_Angeles'], 
-  [':Europe/Moscow'],
-  [':America/New_York'], 
-  [':Asia/Singapore'], 
-  [':Australia/Sydney'], 
-  [':Asia/Tokyo'], 
-]
-
-zones = []
-
-# Check tzinfo support
-if $tk_major_ver > 8 || ($tk_major_ver == 8 && $tk_minor_ver >= 5)
-  tzinfo = :tcl
-
-  # Force a pre-load of all the timezones needed; otherwise can end up
-  # poor-looking synch problems!
-  zones_list.each{|list|
-    list.each{|zone|
-      begin
-        Tk.tk_call('clock', 'format', '0', '-timezone', zone)
-      rescue RuntimeError
-        # ignore
-      else
-        zones << [zone, zone[%r<[^/:]+$>].tr('_', ' ')]
-        break
-      end
-    }
-  }
-
-else
-  begin
-    require 'tzinfo'
-    tzinfo = :tzinfo
-  rescue Exception
-    begin
-      require 'tzfile'
-      tzinfo = :tzfile
-    rescue Exception
-      tzinfo = nil
-    end
-  end
-
-  case tzinfo
-  when :tzinfo
-    zones_list.each{|list|
-      list.each{|zone|
-        begin
-          tz = TZInfo::Timezone.get(zone[%r<[^:]+$>])
-        rescue Exception
-          # ignore
-        else
-          zones << [tz, zone[%r<[^/:]+$>].tr('_', ' ')]
-          break
-        end
-      }
-    }
-
-  when :tzfile
-    zones_list.each{|list|
-      list.each{|zone|
-        begin
-          tz = TZFile.create(zone[%r<[^:]+$>])
-        rescue Exception
-          # ignore
-        else
-          zones << [tz, zone[%r<[^/:]+$>].tr('_', ' ')]
-          break
-        end
-      }
-    }
-
-  else
-    [ -7, -4, -2, -1, 0, +1, +3, +8, +9, +10 ].each{|zone|
-      zones << [zone, 'UTC%+03d00' % zone]
-    }
-  end
-end
-
-time = TkVariable.new_hash
-
-case tzinfo
-when :tcl
-  update_proc = proc{|now, tz, label|
-    time[label] = Tk.tk_call('clock', 'format', now.tv_sec, 
-                             '-timezone', tz, '-format', '%T')
-  }
-when :tzinfo
-  update_proc = proc{|now, tz, label|
-    time[label] = tz.utc_to_local(now).strftime('%H:%M:%S')
-  }
-when :tzfile
-  update_proc = proc{|now, tz, label|
-    time[label] = tz.at(now.tv_sec).strftime('%H:%M:%S')
-  }
-else
-  update_proc = proc{|now, tz, label|
-    time[label] = (now + (tz * 3600)).strftime('%H:%M:%S')
-  }
-end
-
-# Fill the clocks pane
-zones.each_with_index{|(zone, label), idx|
-  Ttk::Separator.new(left_bot).pack(:fill=>:x) if idx > 0
-  Ttk::Label.new(left_bot, :text=>label, :anchor=>'w').pack(:fill=>:x)
-  Ttk::Label.new(left_bot, :textvariable=>time.ref(label), 
-                 :anchor=>'w').pack(:fill=>:x)
-}
-
-# Timer start
-every = proc{
-  now = Time.now.utc
-  zones.each{|zone, label| update_proc.call(now, zone, label) }
-}
-TkRTTimer.new(1000, -1, every).start(0, every)
-
-# Fill the progress pane
-Ttk::Progressbar.new(right_top, :mode=>:indeterminate).pack(:fill=>:both, :expand=>true).start
-
-# Fill the text pane
-if Tk.windowingsystem != 'aqua'
-  # The trick with the ttk::frame makes the text widget look like it fits with
-  # the current Ttk theme despite not being a themed widget itself. It is done
-  # by styling the frame like an entry, turning off the border in the text
-  # widget, and putting the text widget in the frame with enough space to allow
-  # the surrounding border to show through (2 pixels seems to be enough).
-  f = Ttk::Frame.new(right_bot, :style=>Ttk::Entry)
-  txt = TkText.new(frame, :wrap=>:word, :width=>30, :borderwidth=>0)
-  txt.pack(:fill=>:both, :expand=>true, :in=>f, :pady=>2, :padx=>2)
-  scr = txt.yscrollbar(Ttk::Scrollbar.new(frame))
-  scr.pack(:side=>:right, :fill=>:y, :in=>right_bot)
-  f.pack(:fill=>:both, :expand=>true)
-  outer.pack(:fill=>:both, :expand=>true)
-else
-  txt = TkText.new(frame, :wrap=>:word, :width=>30, :borderwidth=>0)
-  scr = txt.yscrollbar(TkScrollbar.new(frame))
-  scr.pack(:side=>:right, :fill=>:y, :in=>right_bot)
-  txt.pack(:fill=>:both, :expand=>true, :in=>right_bot)
-  outer.pack(:fill=>:both, :expand=>true, :padx=>10, :pady=>[6, 10])
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttkprogress.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/ttkprogress.rb
deleted file mode 100644 (file)
index 3eb9a64..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-# ttkprogress.rb --
-#
-# This demonstration script creates several progress bar widgets.
-#
-# based on "Id: ttkprogress.tcl,v 1.3 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($ttkprogress_demo) && $ttkprogress_demo
-  $ttkprogress_demo.destroy 
-  $ttkprogress_demo = nil
-end
-
-$ttkprogress_demo = TkToplevel.new {|w|
-  title("Progress Bar Demonstration")
-  iconname("ttkprogress")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($ttkprogress_demo).pack(:fill=>:both, :expand=>true)
-
-Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', :justify=>:left, 
-               :text=>Tk::UTF8_String.new(<<EOL)).pack(:side=>:top, :fill=>:x)
-Below are two progress bars. \
-The top one is a \\u201Cdeterminate\\u201D progress bar, \
-which is used for showing how far through a defined task the program has got. \
-The bottom one is an \\u201Cindeterminate\\u201D progress bar, \
-which is used to show that the program is busy \
-but does not know how long for. Both are run here in self-animated mode, \
-which can be turned on and off using the buttons underneath.
-EOL
-
-## See Code / Dismiss buttons
-Ttk::Frame.new(base_frame) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'See Code', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'ttkprogress'}), 
-         Ttk::Button.new(frame, :text=>'Dismiss', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $ttkprogress_demo.destroy
-                           $ttkprogress_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x)
-}
-
-frame = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
-
-p1 = Ttk::Progressbar.new(frame, :mode=>:determinate)
-p2 = Ttk::Progressbar.new(frame, :mode=>:indeterminate)
-
-start = Ttk::Button.new(frame, :text=>'Start Progress', 
-                        :command=>proc{ p1.start; p2.start })
-stop  = Ttk::Button.new(frame, :text=>'Stop Progress', 
-                        :command=>proc{ p1.stop; p2.stop })
-
-Tk.grid(p1, '-', :pady=>5, :padx=>10)
-Tk.grid(p2, '-', :pady=>5, :padx=>10)
-Tk.grid(start, stop, :padx=>10, :pady=>5)
-start.grid_configure(:sticky=>'e')
-stop.grid_configure(:sticky=>'w')
-frame.grid_columnconfigure(:all, :weight=>1)
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/twind.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/twind.rb
deleted file mode 100644 (file)
index 65ee712..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-# twind.rb
-#
-# This demonstration script creates a text widget with a bunch of
-# embedded windows.
-#
-# text (embedded windows) widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($twind_demo) && $twind_demo
-  $twind_demo.destroy 
-  $twind_demo = nil
-end
-
-# demo toplevel widget
-$twind_demo = TkToplevel.new {|w|
-  title("Text Demonstration - Embedded Windows")
-  iconname("Embedded Windows")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($twind_demo).pack(:fill=>:both, :expand=>true)
-
-# frame
-$twind_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc{
-      tmppath = $twind_demo
-      $twind_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc{showCode 'twind'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$twind_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame
-$twind_text = nil
-TkFrame.new(base_frame, 'highlightthickness'=>2, 'borderwidth'=>2, 
-            'relief'=>'sunken') {|f|
-  $twind_text = TkText.new(f, 'setgrid'=>'true', 'font'=>$font, 
-                          'width'=>'70', 'height'=>35, 'wrap'=>'word', 
-                          'highlightthickness'=>0, 'borderwidth'=>0 ){|t|
-    TkScrollbar.new(f) {|s|
-      command proc{|*args| t.yview(*args)}
-      t.yscrollcommand proc{|first,last| s.set first,last}
-    }.pack('side'=>'right', 'fill'=>'y')
-  }.pack('expand'=>'yes', 'fill'=>'both')
-}.pack('expand'=>'yes', 'fill'=>'both')
-
-# 
-$tag_center = TkTextTag.new($twind_text, 
-                            'justify' =>'center',
-                            'spacing1'=>'5m',
-                            'spacing3'=>'5m'  )
-$tag_buttons = TkTextTag.new($twind_text, 
-                             'lmargin1'=>'1c',
-                             'lmargin2'=>'1c',
-                             'rmargin' =>'1c',
-                             'spacing1'=>'3m',
-                             'spacing2'=>0,
-                             'spacing3'=>0 )
-
-$twind_text.insert('end', "A text widget can contain other widgets embedded ")
-$twind_text.insert('end', "it.  These are called \"embedded windows\", ")
-$twind_text.insert('end', "and they can consist of arbitrary widgets.  ")
-$twind_text.insert('end', "For example, here are two embedded button ")
-$twind_text.insert('end', "widgets.  You can click on the first button to ")
-TkTextWindow.new($twind_text, 'end', 
-                 'window'=>TkButton.new($twind_text) {
-                   #text 'ON'
-                   text 'Turn On'
-                   command proc{textWindOn $twind_text,$twind_buttons}
-                   cursor 'top_left_arrow'
-                 })
-$twind_text.insert('end', " horizontal scrolling, which also turns off ")
-$twind_text.insert('end', "word wrapping.  Or, you can click on the second ")
-$twind_text.insert('end', "button to\n")
-TkTextWindow.new($twind_text, 'end', 
-                 'window'=>TkButton.new($twind_text) {
-                   #text 'OFF'
-                   text 'Turn Off'
-                   command proc{textWindOff $twind_text}
-                   cursor 'top_left_arrow'
-                 })
-
-$twind_text.insert('end', " horizontal scrolling and turn back on word wrapping.\n\n")
-$twind_text.insert('end', "Or, here is another example.  If you ")
-TkTextWindow.new($twind_text, 'end', 
-                 'window'=>TkButton.new($twind_text) {
-                   text 'Click Here'
-                   command proc{textWindPlot $twind_text}
-                   cursor 'top_left_arrow'
-                 })
-$twind_text.insert('end', " a canvas displaying an x-y plot will appear right here.")
-$mark_plot = TkTextMark.new($twind_text, 'insert')
-$mark_plot.gravity='left'
-$twind_text.insert('end', "  You can drag the data points around with the mouse, ")
-$twind_text.insert('end', "or you can click here to ")
-TkTextWindow.new($twind_text, 'end', 
-                 'window'=>TkButton.new($twind_text) {
-                   text 'Delete'
-                   command proc{textWindDel $twind_text}
-                   cursor 'top_left_arrow'
-                 })
-
-$twind_text.insert('end', " the plot again.\n\n")
-$twind_text.insert('end', "You may also find it useful to put embedded windows in ")
-$twind_text.insert('end', "a text without any actual text.  In this case the ")
-$twind_text.insert('end', "text widget acts like a geometry manager.  For ")
-$twind_text.insert('end', "example, here is a collection of buttons laid out ")
-$twind_text.insert('end', "neatly into rows by the text widget.  These buttons ")
-$twind_text.insert('end', "can be used to change the background color of the ")
-$twind_text.insert('end', "text widget (\"Default\" restores the color to ")
-$twind_text.insert('end', "its default).  If you click on the button labeled ")
-$twind_text.insert('end', "\"Short\", it changes to a longer string so that ")
-$twind_text.insert('end', "you can see how the text widget automatically ")
-$twind_text.insert('end', "changes the layout.  Click on the button again ")
-$twind_text.insert('end', "to restore the short string.\n")
-
-
-TkTextWindow.new($twind_text, 'end', 
-                 'window'=>TkButton.new($twind_text) {|b|
-                   text 'Default'
-                   command proc{embDefBg $twind_text}
-                   cursor 'top_left_arrow'
-                   $tag_buttons.add('end')
-                 },
-                 'padx'=>3 )
-embToggle = TkVariable.new('Short')
-TkTextWindow.new($twind_text, 'end', 
-                 'window'=>TkCheckButton.new($twind_text) {
-                   textvariable embToggle
-                   indicatoron 0
-                   variable embToggle
-                   onvalue 'A much longer string'
-                   offvalue 'Short'
-                   cursor 'top_left_arrow'
-                   pady 5
-                   padx 2
-                 },
-                 'padx'=>3, 
-                 'pady'=>2 )
-
-[ 'AntiqueWhite3', 'Bisque1', 'Bisque2', 'Bisque3', 'Bisque4', 
-  'SlateBlue3', 'RoyalBlue1', 'SteelBlue2', 'DeepSkyBlue3', 'LightBlue1', 
-  'DarkSlateGray1', 'Aquamarine2', 'DarkSeaGreen2', 'SeaGreen1', 
-  'Yellow1', 'IndianRed1', 'IndianRed2', 'Tan1', 'Tan4' 
-].each{|twind_color|
-  TkTextWindow.new($twind_text, 'end', 
-                   'window'=>TkButton.new($twind_text) {
-                     text twind_color
-                     cursor 'top_left_arrow'
-                     command proc{$twind_text.bg twind_color}
-                   },
-                   'padx'=>3, 
-                   'pady'=>2 )
-}
-
-# 
-def textWindOn (w,f)
-  if defined? $twind_scroll
-    begin
-      $twind_scroll.destroy
-    rescue
-    end
-    $twind_scroll = nil
-  end
-
-  base = TkWinfo.parent( TkWinfo.parent(w) )
-  $twind_scroll = TkScrollbar.new(base) {|s|
-    orient 'horizontal'
-    command proc{|*args| w.xview(*args)}
-    w.xscrollcommand proc{|first,last| s.set first,last}
-    w.wrap 'none'
-    pack('after'=>f, 'side'=>'bottom', 'fill'=>'x')
-  }
-
-  return nil
-end
-
-def textWindOff (w)
-  if defined? $twind_scroll
-    begin
-      $twind_scroll.destroy
-    rescue
-    end
-    $twind_scroll = nil
-  end
-  w.xscrollcommand ''
-  w.wrap 'word'
-end
-
-def textWindPlot (t)
-  if (defined? $twind_plot) && TkWinfo.exist?($twind_plot)
-    return
-  end
-
-  $twind_plot = TkCanvas.new(t) {
-    relief 'sunken'
-    width  450
-    height 300
-    cursor 'top_left_arrow'
-  }
-
-  if $tk_version =~ /^4.*/
-    font = '-Adobe-Helvetica-Medium-R-Normal--*-180-*-*-*-*-*-*'
-  else
-    font = 'Helvetica 18'
-  end
-
-  TkcLine.new($twind_plot, 100, 250, 400, 250, 'width'=>2)
-  TkcLine.new($twind_plot, 100, 250, 100,  50, 'width'=>2)
-  TkcText.new($twind_plot, 225, 20, 
-              'text'=>"A Simple Plot", 'font'=>font, 'fill'=>'brown')
-
-  (0..10).each {|i|
-    x = 100 + (i * 30)
-    TkcLine.new($twind_plot, x, 250, x, 245, 'width'=>2)
-    TkcText.new($twind_plot, x, 254, 
-                'text'=>10*i, 'font'=>font, 'anchor'=>'n')
-  }
-  (0..5).each {|i|
-    y = 250 - (i * 40)
-    TkcLine.new($twind_plot, 100, y, 105, y, 'width'=>2)
-    TkcText.new($twind_plot, 96, y, 
-                'text'=>"#{i*50}.0", 'font'=>font, 'anchor'=>'e')
-  }
-
-  for xx, yy in [[12,56],[20,94],[33,98],[32,120],[61,180],[75,160],[98,223]]
-    x = 100 + (3*xx)
-    y = 250 - (4*yy)/5
-    item = TkcOval.new($twind_plot, x-6, y-6, x+6, y+6, 
-                       'width'=>1, 'outline'=>'black', 'fill'=>'SkyBlue2')
-    item.addtag 'point'
-  end
-
-  $twind_plot.itembind('point', 'Any-Enter', 
-                        proc{$twind_plot.itemconfigure 'current', 'fill', 'red'})
-  $twind_plot.itembind('point', 'Any-Leave', 
-                        proc{$twind_plot.itemconfigure 'current', 'fill', 'SkyBlue2'})
-  $twind_plot.itembind('point', '1', 
-                        proc{|x,y| embPlotDown $twind_plot,x,y}, "%x %y")
-  $twind_plot.itembind('point', 'ButtonRelease-1', 
-                        proc{$twind_plot.dtag 'selected'})
-  $twind_plot.bind('B1-Motion', 
-                    proc{|x,y| embPlotMove $twind_plot,x,y}, "%x %y")
-  while ($twind_text.get($mark_plot) =~ /[ \t\n]/)
-    $twind_text.delete $mark_plot
-  end
-  $twind_text.insert $mark_plot,"\n"
-  TkTextWindow.new($twind_text, $mark_plot, 'window'=>$twind_plot)
-  $tag_center.add $mark_plot
-  $twind_text.insert $mark_plot,"\n"
-end
-
-$embPlot = {'lastX'=>0, 'lastY'=>0}
-
-def embPlotDown (w, x, y)
-  w.dtag 'selected'
-  w.addtag_withtag 'selected', 'current'
-  w.raise 'current'
-  $embPlot['lastX'] = x
-  $embPlot['lastY'] = y
-end
-
-def embPlotMove (w, x, y)
-  w.move 'selected', x - $embPlot['lastX'], y - $embPlot['lastY']
-  $embPlot['lastX'] = x
-  $embPlot['lastY'] = y
-end
-
-def textWindDel (w)
-  if (defined? $twind_text) && TkWinfo.exist?($twind_plot)
-    $twind_text.delete $twind_plot
-    $twind_plot = nil
-    while ($twind_text.get($mark_plot) =~ /[ \t\n]/)
-      $twind_text.delete $mark_plot
-    end
-    $twind_text.insert $mark_plot,"  "
-  end
-end
-
-def embDefBg (w)
-  w['background'] = w.configinfo('background')[3]
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/twind2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/twind2.rb
deleted file mode 100644 (file)
index 43990c1..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-#
-# text (embedded windows) widget demo 2 (called by 'widget')
-#
-
-# delete toplevel widget
-if defined?($twind2_demo) && $twind2_demo
-  $twind2_demo.destroy 
-  $twind2_demo = nil
-end
-
-# demo toplevel widget
-$twind2_demo = TkToplevel.new {|w|
-  title("Text Demonstration - Embedded Windows 2")
-  iconname("Embedded Windows")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($twind2_demo).pack(:fill=>:both, :expand=>true)
-
-# frame
-$twind2_buttons = TkFrame.new(base_frame) {|frame|
-  TkGrid(TkFrame.new(frame, :height=>2, :relief=>:sunken, :bd=>2), 
-         :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         TkButton.new(frame, :text=>'See Code', 
-                      :image=>$image['view'], :compound=>:left, 
-                      :command=>proc{showCode 'twind2'}), 
-         TkButton.new(frame, :text=>'Dismiss', 
-                      :image=>$image['delete'], :compound=>:left, 
-                      :command=>proc{
-                        tmppath = $twind2_demo
-                        $twind2_demo = nil
-                        $showVarsWin[tmppath.path] = nil
-                        tmppath.destroy
-                      }), 
-         :padx=>4, :pady=>4)
-  frame.grid_columnconfigure(0, :weight=>1)
-}
-$twind2_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame
-$twind2_text = nil
-TkFrame.new(base_frame, 'highlightthickness'=>2, 'borderwidth'=>2, 
-            'relief'=>'sunken') {|f|
-  $twind2_text = TkText.new(f, 'setgrid'=>true, 'font'=>$font,
-                            # 'width'=>'70', 'height'=>35, 'wrap'=>'word', 
-                            'width'=>'70', 'height'=>35, 'wrap'=>'char', 
-                            'highlightthickness'=>0, 'borderwidth'=>0 ){|t|
-    TkScrollbar.new(f) {|s|
-      command proc{|*args| t.yview(*args)}
-      t.yscrollcommand proc{|first,last| s.set first,last}
-    }.pack('side'=>'right', 'fill'=>'y')
-  }.pack('expand'=>'yes', 'fill'=>'both')
-}.pack('expand'=>'yes', 'fill'=>'both')
-
-# text tags
-$tag2_center = TkTextTag.new($twind2_text, 
-                            'justify' =>'center',
-                            'spacing1'=>'5m',
-                            'spacing3'=>'5m'  )
-$tag2_buttons = TkTextTag.new($twind2_text, 
-                             'lmargin1'=>'1c',
-                             'lmargin2'=>'1c',
-                             'rmargin' =>'1c',
-                             'spacing1'=>'3m',
-                             'spacing2'=>0,
-                             'spacing3'=>0 )
-
-# insert text
-$twind2_text.insert('end', 
-                  'A text widget can contain many different kinds of items, ')
-$twind2_text.insert('end',
-                  "both active and passive.  It can lay these out in various ")
-$twind2_text.insert('end',
-                   "ways, with wrapping, tabs, centering, etc.  In addition, ")
-$twind2_text.insert('end',
-                    "when the contents are too big for the window, smooth ")
-$twind2_text.insert('end', "scrolling in all directions is provided.\n\n")
-
-$twind2_text.insert('end', "A text widget can contain other widgets embedded ")
-$twind2_text.insert('end', "it.  These are called \"embedded windows\", ")
-$twind2_text.insert('end', "and they can consist of arbitrary widgets.  ")
-$twind2_text.insert('end', "For example, here are two embedded button ")
-$twind2_text.insert('end', "widgets.  You can click on the first button to ")
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text) {
-                   text 'ON'
-                   command proc{textWindOn2 $twind2_text,$twind2_buttons}
-                   cursor 'top_left_arrow'
-                 })
-$twind2_text.insert('end', " horizontal scrolling, which also turns off ")
-$twind2_text.insert('end', "word wrapping.  Or, you can click on the second ")
-$twind2_text.insert('end', "button to\n")
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text) {
-                   text 'OFF'
-                   command proc{textWindOff2 $twind2_text}
-                   cursor 'top_left_arrow'
-                 })
-$twind2_text.insert('end', 
-                   " horizontal scrolling and turn back on word wrapping.\n\n")
-
-$twind2_text.insert('end', "Or, here is another example.  If you ")
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text) {
-                   text 'Click Here'
-                   command proc{textWindPlot2 $twind2_text}
-                   cursor 'top_left_arrow'
-                 })
-$twind2_text.insert('end', 
-                    " a canvas displaying an x-y plot will appear right here.")
-$mark2_plot = TkTextMark.new($twind2_text, 'insert')
-$mark2_plot.gravity='left'
-$twind2_text.insert('end', 
-                    "  You can drag the data points around with the mouse, ")
-$twind2_text.insert('end', "or you can click here to ")
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text) {
-                   text 'Delete'
-                   command proc{textWindDel2 $twind2_text}
-                   cursor 'top_left_arrow'
-                 })
-$twind2_text.insert('end', " the plot again.\n\n")
-
-$twind2_text.insert('end', 
-                    "You may also find it useful to put embedded windows in ")
-$twind2_text.insert('end', 
-                    "a text without any actual text.  In this case the ")
-$twind2_text.insert('end', "text widget acts like a geometry manager.  For ")
-$twind2_text.insert('end', 
-                    "example, here is a collection of buttons laid out ")
-$twind2_text.insert('end', 
-                    "neatly into rows by the text widget.  These buttons ")
-$twind2_text.insert('end', 
-                    "can be used to change the background color of the ")
-$twind2_text.insert('end', "text widget (\"Default\" restores the color to ")
-$twind2_text.insert('end', 
-                    "its default).  If you click on the button labeled ")
-$twind2_text.insert('end', "\"Short\", it changes to a longer string so that ")
-$twind2_text.insert('end', "you can see how the text widget automatically ")
-$twind2_text.insert('end', "changes the layout.  Click on the button again ")
-$twind2_text.insert('end', "to restore the short string.\n")
-
-btn_default = TkButton.new($twind2_text) {|b|
-  text 'Default'
-  command proc{embDefBg2 $twind2_text}
-  cursor 'top_left_arrow'
-}
-TkTextWindow.new($twind2_text, 'end', 'window'=>btn_default, 'padx'=>3)
-embToggle = TkVariable.new('Short')
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkCheckButton.new($twind2_text) {
-                   textvariable embToggle
-                   indicatoron 0
-                   variable embToggle
-                   onvalue 'A much longer string'
-                   offvalue 'Short'
-                   cursor 'top_left_arrow'
-                   pady 5
-                   padx 2
-                 },
-                 'padx'=>3, 
-                 'pady'=>2 )
-
-[ 'AntiqueWhite3', 'Bisque1', 'Bisque2', 'Bisque3', 'Bisque4', 
-  'SlateBlue3', 'RoyalBlue1', 'SteelBlue2', 'DeepSkyBlue3', 'LightBlue1', 
-  'DarkSlateGray1', 'Aquamarine2', 'DarkSeaGreen2', 'SeaGreen1', 
-  'Yellow1', 'IndianRed1', 'IndianRed2', 'Tan1', 'Tan4' 
-].each{|twind_color|
-  TkTextWindow.new($twind2_text, 'end', 
-                   'window'=>TkButton.new($twind2_text) {
-                     text twind_color
-                     cursor 'top_left_arrow'
-                     command proc{$twind2_text.bg twind_color}
-                   },
-                   'padx'=>3, 
-                   'pady'=>2 )
-}
-
-$tag2_buttons.add(btn_default, 'end')
-
-$text_normal2 = {}
-$text_normal2['border'] = $twind2_text.cget('borderwidth')
-$text_normal2['highlight'] = $twind2_text.cget('highlightthickness')
-$text_normal2['pad'] = $twind2_text.cget('padx')
-
-$twind2_text.insert('end', "\nYou can also change the usual border width and ")
-$twind2_text.insert('end', "highlightthickness and padding.\n")
-
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text, :text=>"Big borders", 
-                                        :cursor=>'top_left_arrow', 
-                                        'command'=>proc{
-                                          textWinBigB2 $twind2_text
-                                        }))
-
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text, :text=>"Small borders", 
-                                        :cursor=>'top_left_arrow', 
-                                        'command'=>proc{
-                                          textWinSmallB2 $twind2_text
-                                        }))
-
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text, :text=>"Big highlight", 
-                                        :cursor=>'top_left_arrow', 
-                                        'command'=>proc{
-                                          textWinBigH2 $twind2_text
-                                        }))
-
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text, :text=>"Small highlight",
-                                        :cursor=>'top_left_arrow', 
-                                        'command'=>proc{
-                                          textWinSmallH2 $twind2_text
-                                        }))
-
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text, :text=>"Big pad", 
-                                        :cursor=>'top_left_arrow', 
-                                        'command'=>proc{
-                                          textWinBigP2 $twind2_text
-                                        }))
-
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text, :text=>"Small pad", 
-                                        :cursor=>'top_left_arrow', 
-                                        'command'=>proc{
-                                          textWinSmallP2 $twind2_text
-                                        }))
-
-$twind2_text.insert('end', 
-                    "\n\nFinally, images fit comfortably in text widgets too:")
-
-TkTextImage.new($twind2_text, 'end', 
-                'image'=>TkBitmapImage.new(:file=>[
-                                             $demo_dir, '..', 
-                                             'images', 'face.xbm'
-                                           ].join(File::Separator)))
-
-# methods
-def textWinBigB2(w)
-  w.borderwidth 15
-end
-def textWinSmallB2(w)
-  w.borderwidth $text_normal2['border']
-end
-def textWinBigH2(w)
-  w.highlightthickness 15
-end
-def textWinSmallH2(w)
-  w.highlightthickness $text_normal2['highlight']
-end
-def textWinBigP2(w)
-  w.configure(:padx=>15, :pady=>15)
-end
-def textWinSmallP2(w)
-  w.configure(:padx=>$text_normal2['pad'], :pady=>$text_normal2['pad'])
-end
-
-def textWindOn2 (w,f)
-  if defined? $twind2_scroll
-    begin
-      $twind2_scroll.destroy
-    rescue
-    end
-    $twind2_scroll = nil
-  end
-
-  base = TkWinfo.parent( TkWinfo.parent(w) )
-  $twind2_scroll = TkScrollbar.new(base) {|s|
-    orient 'horizontal'
-    command proc{|*args| w.xview(*args)}
-    w.xscrollcommand proc{|first,last| s.set first,last}
-    w.wrap 'none'
-    pack('after'=>f, 'side'=>'bottom', 'fill'=>'x')
-  }
-
-  return nil
-end
-
-def textWindOff2 (w)
-  if defined? $twind2_scroll
-    begin
-      $twind2_scroll.destroy
-    rescue
-    end
-    $twind2_scroll = nil
-  end
-  w.xscrollcommand ''
-  #w.wrap 'word'
-  w.wrap 'char'
-end
-
-def textWindPlot2 (t)
-  if (defined? $twind2_plot) && (TkWinfo.exist?($twind2_plot))
-    return
-  end
-
-  $twind2_plot = TkCanvas.new(t) {
-    relief 'sunken'
-    width  450
-    height 300
-    cursor 'top_left_arrow'
-  }
-
-  #font = '-Adobe-Helvetica-Medium-R-Normal--*-180-*-*-*-*-*-*'
-  font = 'Helvetica 18'
-
-  TkcLine.new($twind2_plot, 100, 250, 400, 250, 'width'=>2)
-  TkcLine.new($twind2_plot, 100, 250, 100,  50, 'width'=>2)
-  TkcText.new($twind2_plot, 225, 20, 
-              'text'=>"A Simple Plot", 'font'=>font, 'fill'=>'brown')
-
-  (0..10).each {|i|
-    x = 100 + (i * 30)
-    TkcLine.new($twind2_plot, x, 250, x, 245, 'width'=>2)
-    TkcText.new($twind2_plot, x, 254, 
-                'text'=>10*i, 'font'=>font, 'anchor'=>'n')
-  }
-  (0..5).each {|i|
-    y = 250 - (i * 40)
-    TkcLine.new($twind2_plot, 100, y, 105, y, 'width'=>2)
-    TkcText.new($twind2_plot, 96, y, 
-                'text'=>"#{i*50}.0", 'font'=>font, 'anchor'=>'e')
-  }
-
-  for xx, yy in [[12,56],[20,94],[33,98],[32,120],[61,180],[75,160],[98,223]]
-    x = 100 + (3*xx)
-    y = 250 - (4*yy)/5
-    item = TkcOval.new($twind2_plot, x-6, y-6, x+6, y+6, 
-                       'width'=>1, 'outline'=>'black', 'fill'=>'SkyBlue2')
-    item.addtag 'point'
-  end
-
-  $twind2_plot.itembind('point', 'Any-Enter', 
-                        proc{$twind2_plot.itemconfigure 'current', 'fill', 'red'})
-  $twind2_plot.itembind('point', 'Any-Leave', 
-                        proc{$twind2_plot.itemconfigure 'current', 'fill', 'SkyBlue2'})
-  $twind2_plot.itembind('point', '1', 
-                        proc{|x,y| embPlotDown2 $twind2_plot,x,y}, "%x %y")
-  $twind2_plot.itembind('point', 'ButtonRelease-1', 
-                        proc{$twind2_plot.dtag 'selected'})
-  $twind2_plot.bind('B1-Motion', 
-                    proc{|x,y| embPlotMove2 $twind2_plot,x,y}, "%x %y")
-  while ($twind2_text.get($mark2_plot) =~ /[ \t\n]/)
-    $twind2_text.delete $mark2_plot
-  end
-  $twind2_text.insert $mark2_plot,"\n"
-  TkTextWindow.new($twind2_text, $mark2_plot, 'window'=>$twind2_plot)
-  $tag2_center.add $mark2_plot
-  $twind2_text.insert $mark2_plot,"\n"
-end
-
-$embPlot2 = {'lastX'=>0, 'lastY'=>0}
-
-def embPlotDown2 (w, x, y)
-  w.dtag 'selected'
-  w.addtag_withtag 'selected', 'current'
-  w.raise 'current'
-  $embPlot2['lastX'] = x
-  $embPlot2['lastY'] = y
-end
-
-def embPlotMove2 (w, x, y)
-  w.move 'selected', x - $embPlot2['lastX'], y - $embPlot2['lastY']
-  $embPlot2['lastX'] = x
-  $embPlot2['lastY'] = y
-end
-
-def textWindDel2 (w)
-  if (defined? $twind2_text) && TkWinfo.exist?($twind2_plot)
-    $twind2_text.delete $twind2_plot
-    $twind2_plot = nil
-    while ($twind2_text.get($mark2_plot) =~ /[ \t\n]/)
-      $twind2_text.delete $mark2_plot
-    end
-    $twind2_text.insert $mark2_plot,"  "
-  end
-end
-
-def embDefBg2 (w)
-  w['background'] = w.configinfo('background')[3]
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/unicodeout.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/unicodeout.rb
deleted file mode 100644 (file)
index 9c230a2..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-# unicodeout.rb --
-#
-# This demonstration script shows how you can produce output (in label
-# widgets) using many different alphabets.
-#
-# based on Tcl/Tk8.4.4 widget demos
-
-if defined?($unicodeout_demo) && $unicodeout_demo
-  $unicodeout_demo.destroy 
-  $unicodeout_demo = nil
-end
-
-$unicodeout_demo = TkToplevel.new {|w|
-  title("Unicode Label Demonstration")
-  iconname("unicodeout")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($unicodeout_demo).pack(:fill=>:both, :expand=>true)
-
-TkLabel.new(base_frame, 
-            :font=>$font, :wraplength=>'5.4i', :justify=>:left, 
-            :text=><<EOL).pack(:side=>:top)
-This is a sample of Tk's support for languages that use non-Western \
-character sets.  However, what you will actually see below depends \
-largely on what character sets you have installed, and what you see \
-for characters that are not present varies greatly between platforms as well. \
-Please try to click the 'See Code' button, \
-and click the 'Rerun Demo' button after editing \
-(the source file is not changed) \
-the definition of @@font on the Unicodeout_SampleFrame class.
-The strings are written in Tcl using UNICODE characters \
-using the \\uXXXX escape so as to do so in a portable fashion.
-
-ATTENTION: 
-The strings are converted to the encoded string objects \
-(completed to rewrite Tcl's escapes) by Tk::UTF8_String method. \
-And the Tk::UTF8_String objects are passed to the label widgets. 
-EOL
-
-TkFrame.new(base_frame){|f|
-  pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
-
-  TkButton.new(f, :text=>'Dismiss', :width=>15, :command=>proc{
-                 $unicodeout_demo.destroy
-                 $unicodeout_demo = nil
-               }).pack(:side=>:left, :expand=>true)
-
-  TkButton.new(f, :text=>'See Code', :width=>15, :command=>proc{
-                 showCode 'unicodeout'
-               }).pack(:side=>:left, :expand=>true)
-}
-
-wait_msg = TkLabel.new(base_frame, 
-                       :text=>"Please wait while loading fonts...", 
-                       :font=>"Helvetica 12 italic").pack
-
-class Unicodeout_SampleFrame < TkFrame
-  @@font = $font
-  # @@font = 'Helvetica 14'
-  # @@font = 'Courier 12'
-  # @@font = 'clearlyu 16'
-  # @@font = 'fixed 12'
-  # @@font = 'Times 12'
-  # @@font = 'Newspaper 12'
-  # @@font = '{New century schoolbook} 12'
-
-  def initialize(base)
-    super(base)
-    grid_columnconfig(1, :weight=>1)
-  end
-
-  def add_sample(lang, *args)
-    sample_txt = Tk::UTF8_String(args.join(''))
-    l = TkLabel.new(self, :font=>@@font, :text=>lang+':', 
-                    :anchor=>:nw, :pady=>0)
-    #s = TkLabel.new(self, :font=>@@font, :text=>sample_txt, 
-    s = TkLabel.new(self, :font=>TkFont.new(@@font), :text=>sample_txt, 
-                    :anchor=>:nw, :width=>30, :pady=>0)
-    Tk.grid(l, s, :sticky=>:ew, :pady=>0)
-    l.grid_config(:padx, '1m')
-  end
-end
-f = Unicodeout_SampleFrame.new(base_frame)
-f.pack(:expand=>true, :fill=>:both, :padx=>'2m', :pady=>'1m')
-
-# Processing when some characters are missing might take a while, so make
-# sure we're displaying something in the meantime...
-
-oldCursor = $unicodeout_demo.cursor
-$unicodeout_demo.cursor('watch')
-Tk.update
-
-f.add_sample('Arabic', 
-             '\uFE94\uFEF4\uFE91\uFEAE\uFECC\uFEDF\uFE8D\uFE94', 
-             '\uFEE4\uFEE0\uFEDC\uFEDF\uFE8D')
-f.add_sample('Trad. Chinese', '\u4E2D\u570B\u7684\u6F22\u5B57')
-f.add_sample('Simpl. Chinese', '\u6C49\u8BED')
-f.add_sample('Greek', 
-             '\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AE ', 
-             '\u03B3\u03BB\u03CE\u03C3\u03C3\u03B1')
-f.add_sample('Hebrew', 
-             '\u05DD\u05D9\u05DC\u05E9\u05D5\u05E8\u05D9 ', 
-             '\u05DC\u05D9\u05D0\u05E8\u05E9\u05D9')
-f.add_sample('Japanese', 
-             '\u65E5\u672C\u8A9E\u306E\u3072\u3089\u304C\u306A, ', 
-             '\u6F22\u5B57\u3068\u30AB\u30BF\u30AB\u30CA')
-f.add_sample('Korean', '\uB300\uD55C\uBBFC\uAD6D\uC758 \uD55C\uAE00')
-f.add_sample('Russian', 
-             '\u0420\u0443\u0441\u0441\u043A\u0438\u0439 ', 
-             '\u044F\u0437\u044B\u043A')
-
-wait_msg.destroy
-$unicodeout_demo.cursor(oldCursor)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/vscale.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/vscale.rb
deleted file mode 100644 (file)
index b05ed12..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-# vscale.rb
-#
-# This demonstration script shows an example with a vertical scale.
-
-require "tkcanvas"
-
-if defined?($vscale_demo) && $vscale_demo
-  $vscale_demo.destroy
-  $vscale_demo = nil
-end
-
-$vscale_demo = TkToplevel.new {|w|
-  title("Vertical Scale Demonstration")
-  iconname("vscale")
-}
-positionWindow($vscale_demo)
-
-base_frame = TkFrame.new($vscale_demo).pack(:fill=>:both, :expand=>true)
-
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '3.5i'
-  justify 'left'
-  text "An arrow and a vertical scale are displayed below.  If you click or drag mouse button 1 in the scale, you can change the size of the arrow."
-}
-msg.pack('side'=>'top', 'padx'=>'.5c')
-
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    text 'Dismiss'
-    command proc {
-      tmppath = $vscale_demo
-      $vscale_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'Show Code'
-    command proc { showCode 'vscale' }
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-def setHeight(w, height)
-  height = height + 21
-  y2 = height - 30
-  if y2 < 21
-    y2 = 21
-  end
-  w.coords 'poly',15,20,35,20,35,y2,45,y2,25,height,5,y2,15,y2,15,20
-  w.coords 'line',15,20,35,20,35,y2,45,y2,25,height,5,y2,15,y2,15,20
-end
-
-TkFrame.new(base_frame) {|frame|
-  borderwidth 10
-  canvas = TkCanvas.new(frame) {|c|
-    width 50
-    height 50
-    bd 0
-    highlightthickness 0
-    TkcPolygon.new(c, 0, 0, 1, 1, 2, 2) {
-      fill 'SeaGreen3'
-      tags 'poly'
-    }
-    TkcLine.new(c, 0, 0, 1, 1, 2, 2, 0, 0) {
-      fill 'black'
-      tags 'line'
-    }
-  }.pack('side'=>'left',  'anchor'=>'nw', 'fill'=>'y')
-  scale = TkScale.new(frame) {
-    orient 'vertical'
-    length 284
-    from 0
-    to 250
-    command proc{|value| setHeight(canvas, value)}
-    tickinterval 50
-  }.pack('side'=>'left', 'anchor'=>'ne')
-  scale.set 75
-}.pack
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/widget b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-en/widget
deleted file mode 100644 (file)
index 9a0605d..0000000
+++ /dev/null
@@ -1,1084 +0,0 @@
-#!/usr/bin/env ruby
-
-# widget --
-# This script demonstrates the various widgets provided by Tk,
-# along with many of the features of the Tk toolkit.  This file
-# only contains code to generate the main window for the
-# application, which invokes individual demonstrations.  The
-# code for the actual demonstrations is contained in separate
-# ".rb" files is this directory, which are sourced by this script
-# as needed.
-
-require 'tk'
-# require 'tkafter'
-
-### $DEBUG=1 ##########
-
-$RubyTk_WidgetDemo = true
-
-#----------------------------------------------------------------
-# The code below create the main window, consisting of a menu bar
-# and a text widget that explains how to use the program, plus lists
-# all of the demos as hypertext items.
-#----------------------------------------------------------------
-
-# widget demo directory
-# $demo_dir = File.dirname($0)
-$demo_dir = File.dirname(__FILE__)
-
-# root 
-$root = TkRoot.new{title "Ruby/Tk Widget Demonstration"}
-
-# tk 
-$tk_version = Tk::TK_VERSION
-$tk_major_ver, $tk_minor_ver = $tk_version.split('.').map{|n| n.to_i}
-$tk_patchlevel = Tk::TK_PATCHLEVEL
-
-# tcl_platform 
-$tk_platform = TkVarAccess.new('tcl_platform')
-
-#
-case($tk_version)
-when /^4.*/
-  $font = TkFont.new('-*-Helvetica-Medium-R-Normal--*-140-*-*-*-*-*-*', nil)
-else
-  $font = TkFont.new('Helvetica -12')
-end
-
-# images
-$image = {}
-
-if $tk_major_ver >= 8
-$image['refresh'] = TkPhotoImage.new(:height=>16, :format=>'GIF', :data=><<EOD)
-    R0lGODlhEAAQAPMAAMz/zCpnKdb/1z9mPypbKBtLGy9NMPL/9Or+6+P+4j1Y
-    PwQKBP7//xMLFAYBCAEBASH5BAEAAAAALAAAAAAQABAAAwR0EAD3Gn0Vyw0e
-    ++CncU7IIAezMA/nhUqSLJizvSdCEEjy2ZIV46AwDAoDHwPYGSoEiUJAAGJ6
-    EDHBNCFINW5OqABKSFk/B9lUa94IDwIFgewFMwQDQwCZQCztTgM9Sl8SOEMG
-    KSAthiaOjBMPDhQONBiXABEAOw==
-EOD
-end
-
-if $tk_major_ver >= 8
-$image['view'] = TkPhotoImage.new(:height=>16, :format=>'GIF', :data=><<EOD)
-    R0lGODlhEAAQAPMAAMz/zP///8DAwICAgH9/fwAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAwRIcMhJB7h3hM33
-    KFjWdQQYap1QrCaGBmrRrS4nj5b53jOgbwXBKGACoYLDIuAoHCmZyYvR1rT5
-    RMAq8LqcIYGsrjPsW1XOmFUEADs=
-EOD
-end
-
-if $tk_major_ver >= 8
-$image['delete'] = TkPhotoImage.new(:height=>16, :format=>'GIF', :data=><<EOD)
-    R0lGODlhEAAOAKEAAIQAAO/n3v///////yH5BAEKAAIALAAAAAAQAA4AAAIm
-    lI9pAKHbIHNoVhYhTdjlJ2AWKG2g+CldmB6rxo2uybYhbS80eRQAOw==
-EOD
-end
-
-if $tk_major_ver >= 8
-$image['print'] = TkPhotoImage.new(:height=>19, :format=>'GIF', :data=><<EOD)
-    R0lGODlhGgATAPcAACEQOTEpQjEpUkIpc0IxY0I5c0oxjEo5SlJCY1JCe1JK
-    UlpChFpCjFpGkFpSc1paa2NKc2NKnGNja2tapWtjc29KnHNanHNjc3NjrXNr
-    jHNrnHNzc3tjpXtrtXtzhICAgIRzvYSEjIZzqox7tYyEnIyMjJSEtZSEvZSM
-    lJyMtZyMvZyUlJyUrZyUvZycnKWctaWlpa2czq2lzrWtvbWtzrW1tb21xr21
-    1sa9zs693s7OztbO3tbO597W1t7W7+fe7+fn5////+/n7+/v7+/v9////wAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAACH5BAEAAEEALAAAAAAaABMAQAj/AIMIHBhkg0GC
-    CBMGIQEiQgseQT4oeCBBAokgRYYQ0JBixg8hRIiUUEBBYYmTByBwiCBCRYwH
-    CxY8cKFw4AogRXLqLAJkQ80gCBBg3BkxZswTNGh4MGqgQQUMJRHCwMkTSE+D
-    Pn8eCKBhxIMhO3ei2OHDBw6sWSlMMMoWgwwfMDZI8GBjx44NARZwEGGi5MkS
-    PcIWKRGz5YgLbAco+KkQBQoJIRgjdGEVq+SaJajqtNrzMgsPCmoIzqmDgmWE
-    KOBuUKAAwYabYTfs4OHjY0giGyhk4MAWRI4eKyRQqPgggYUXPH4A+XBAgwoK
-    DiIsCFxjA9sFEVQQCRJCAYAFDJxiKhAxvMTonEFimrhhYinTBgWiCvxLNX3M
-    DkkpsKV5OYhjBxCMYAICAigUEAA7
-EOD
-end
-
-# 
-if $tk_major_ver >= 8
-  $root.add_menubar([[['File', 0], 
-                        ['About ... ', proc{aboutBox}, 0, '<F1>'],
-                        '---', 
-                        ['Quit', proc{exit}, 0, 'Ctrl-Q']
-                      ]])
-else
-  TkMenubar.new($root, 
-                [[['File', 0], 
-                    ['About ... ', proc{aboutBox}, 0, '<F1>'],
-                    '---', 
-                    ['Quit', proc{exit}, 0, 'Ctrl-Q']
-                  ]]).pack('side'=>'top', 'fill'=>'x')
-end
-$root.bind('F1', proc{aboutBox})
-$root.bind('Control-q', proc{exit})
-
-=begin
-TkFrame.new($root){|frame|
-  TkMenubutton.new(frame){|button|
-    m = TkMenu.new(button) {
-      add 'command', 'label'=>'Quit', 'command'=>proc{exit}, 'underline'=>0
-    }
-    menu m
-    text 'File'
-    underline 0
-  }.pack('side'=>'left')
-}.pack('side'=>'top', 'fill'=>'x')
-=end
-
-# 
-if $tk_version =~ /^4\.[01]/
-  scr = TkScrollbar.new($root, 'orient'=>'vertical')
-  txt = TkText.new($root) {
-    wrap 'word'
-    width 70
-    height 30
-    font $font
-    setgrid 'yes'
-    yscrollcommand proc{|first,last| scr.set first,last}
-  }
-  scr.command(proc{|*args| txt.yview(*args)})
-  scr.pack('side'=>'right', 'fill'=>'y')
-  txt.pack('expand'=>'yes', 'fill'=>'both')
-else
-  textFrame = TkFrame.new($root)
-  scr = TkScrollbar.new($root, 'orient'=>'vertical', 
-                        'highlightthickness'=>0, 'takefocus'=>1) {
-    pack('in'=>textFrame, 'side'=>'right', 'fill'=>'y', 'padx'=>1)
-  }
-  txt = TkText.new($root) {
-    wrap 'word'
-    width 70
-    height 30
-    font $font
-    setgrid 'yes'
-    highlightthickness 0
-    padx 4
-    pady 2
-    takefocus 0
-    bd 1
-    yscrollcommand proc{|first,last| scr.set first,last}
-  }
-  scr.command(proc{|*args| txt.yview(*args)})
-#  txt.pack('in'=>textFrame, 'expand'=>'yes', 'fill'=>'both', 'padx'=>1)
-  txt.pack('in'=>textFrame, 'expand'=>'yes', 'fill'=>'both')
-#  textFrame.pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>2)
-  textFrame.pack('expand'=>'yes', 'fill'=>'both')
-
-  statusBar = TkFrame.new($root) {|f|
-    if $tk_version =~ /^4.*/
-      statusfont = '-*-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*'
-    else
-      statusfont = 'Helvetica 10'
-    end
-    $statusBarLabel = \
-    TkLabel.new(f, 'text'=>"   ", 'relief'=>'sunken', 'bd'=>1, 'anchor'=>'w', 
-                'font'=>statusfont) \
-        .pack('side'=>'left', 'padx'=>2, 'expand'=>'yes', 'fill'=>'both')
-    TkLabel.new(f, 'width'=>8, 'relief'=>'sunken', 'bd'=>1, 'anchor'=>'w', 
-                'font'=>statusfont) \
-        .pack('side'=>'left', 'padx'=>2)
-  }.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>2)
-end
-
-# Create a bunch of tags to use in the text widget, such as those for
-# section titles and demo descriptions.  Also define the bindings for
-# tags.
-  
-if $tk_version =~ /^4.*/
-  tag_title = TkTextTag.new(txt, 'font'=>'-*-Helvetica-Bold-R-Normal--*-180-*-*-*-*-*-*')
-else
-  tag_title = TkTextTag.new(txt, 'font'=>'Helvetica 18 bold')
-end
-
-# We put some "space" characters to the left and right of each demo description
-# so that the descriptions are highlighted only when the mouse cursor
-# is right over them (but not when the cursor is to their left or right)
-
-tag_demospace = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c')
-
-if TkWinfo.depth($root) == 1
-  tag_demo = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c', 
-                           'underline'=>1)
-  $tag_visited = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c', 
-                              'underline'=>1)
-  tag_hot = TkTextTag.new(txt, 'background'=>'black', 'foreground'=>'white')
-else
-  tag_demo = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c', 
-                           'foreground'=>'blue', 'underline'=>1)
-  $tag_visited = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c', 
-                              'foreground'=>'#303080', 'underline'=>1)
-#  tag_hot = TkTextTag.new(txt, 'relief'=>'raised', 'borderwidth'=>1, 
-#                         'background'=>'SeaGreen3')
-  tag_hot = TkTextTag.new(txt, 'borderwidth'=>1, 'foreground'=>'red')
-end
-
-#tag_demo.bind('Button-1', proc{invoke txt, txt.index('current')})
-tag_demo.bind('ButtonRelease-1', 
-              proc{|x,y|invoke txt, txt.index("@#{x},#{y}")}, '%x %y')
-
-lastLine = TkVariable.new("")
-newLine  = TkVariable.new("")
-tag_demo.bind('Enter', proc{|x,y|
-                lastLine.value = txt.index("@#{x},#{y} linestart")
-                tag_hot.add(lastLine.value, "#{lastLine.value} lineend")
-                showStatus txt, txt.index("@#{x},#{y}")
-              },
-              '%x %y')
-tag_demo.bind('Leave', 
-              proc{
-                tag_hot.remove('1.0','end')
-                txt.configure('cursor','xterm')
-                $statusBarLabel.configure('text'=>"")
-              })
-tag_demo.bind('Motion', proc{|x, y|
-                newLine.value = txt.index("@#{x},#{y} linestart")
-                if newLine.value != lastLine.value
-                  tag_hot.remove('1.0','end')
-                  lastLine.value = newLine.value
-                  if ( txt.tag_names("@#{x},#{y}").find{|t| 
-                        t.kind_of?(String) && t =~ /^demo-/
-                      } )
-                    tag_hot.add(lastLine.value, 
-                                "#{lastLine.value} lineend -1 chars")
-                  end
-                end
-                showStatus txt, txt.index("@#{x},#{y}")
-              },
-              '%x %y')
-
-# Create the text for the text widget.
-
-txt.insert('end', "Ruby/Tk Widget Demonstrations\n\n", tag_title)
-txt.insert('end', <<EOT)
-This application provides a front end for several short scripts that \
-demonstrate what you can do with Tk widgets.  Each of the numbered \
-lines below describes a demonstration;  you can click on it to invoke \
-the demonstration.  Once the demonstration window appears, you can \
-click the "See Code" button to see the Ruby/Tk code that created the \
-demonstration.  If you wish, you can edit the code and click the \
-"Rerun Demo" button in the code window to reinvoke the demonstration \
-with the modified code. \
-Don't worry about breaking the source code. \
-Your modifications are not reflected on the original file. \
-Please try many kind of changes. 
-
-Some demo scripts require the recent version of Tk library \
-(e.g. Tk8.4 or later) \
-If your Tk library linked to Ruby doesn't support the functions \
-required by the demo script, the demo doesn't work. \
-In such a case, please re-compile tcltklib with the later Tk library \
-which supports the required functions.
-
-If your Tk supports Ttk (Tile) extension (included or installed), \
-please try the demo of Ttk extension (sample/tkextlib/tile/demo.rb) too.
-( Probably, Ttk extension \
-#{
-begin
-  require 'tkextlib/tile'
-  "is already installed on your environment"
-rescue
-  "is not installed on your environment yet"
-end
-}\
-. )
-Ttk extension is a standard feature of Tk8.5 or later.
-
-
-EOT
-
-txt.insert('end', "Labels, buttons, checkbuttons, and radiobuttons.\n", tag_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. Labels (text and bitmaps).\n", tag_demo, "demo-label")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. Labels and UNICODE text. (if supported)\n", tag_demo, "demo-unicodeout")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. Buttons.\n", tag_demo, "demo-button")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. Checkbuttons (select any of a group).\n", tag_demo, "demo-check")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. Checkbuttons (if supported).\n", tag_demo, "demo-check2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "6. Radiobuttons (select one of a group).\n", tag_demo, "demo-radio")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "7. Radiobuttons (if supported 'compound' option).\n", tag_demo, "demo-radio2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "8. Radiobuttons (if supported).\n", tag_demo, "demo-radio3")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "9. A 15-puzzle game made out of buttons.\n", tag_demo, "demo-puzzle")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "10. Iconic buttons that use bitmaps.\n", tag_demo, "demo-icon")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "11. Two labels displaying images.\n", tag_demo, "demo-image1")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "12. A simple user interface for viewing images.\n", tag_demo, "demo-image2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "13. A simple user interface for viewing images. (if supported)\n", tag_demo, "demo-image3")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "14. Labelled frames (if supported)\n", tag_demo, "demo-labelframe")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "15. The simple Themed Tk widgets (require Tile/Ttk extension)\n", tag_demo, "demo-ttkbut")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-txt.insert('end', "Listboxes\n", tag_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. 50 states.\n", tag_demo, "demo-states")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. Colors: change the color scheme for the application.\n", "#{tag_demo.id} demo-colors")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. A collection of famous sayings.\n", tag_demo, "demo-sayings")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. A multi-column list of contries. (require Tile/Ttk extension)\n", tag_demo, "demo-mclist")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. A directory browser tree. (require Tile/Ttk extension)\n", tag_demo, "demo-tree")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-txt.insert('end', "Entries and Spin-boxes\n", tag_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. Without scrollbars.\n", tag_demo, "demo-entry1")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. With scrollbars.\n", tag_demo, "demo-entry2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', 
-           "3. Validated entries and password fields. (if supported)\n", 
-           tag_demo, "demo-entry3")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. Spin-boxes. (if supported)\n", tag_demo, "demo-spin")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. Combo-boxes. (require Tile/Ttk extension)\n", tag_demo, "demo-combo")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "6. Simple Rolodex-like form.\n", tag_demo, "demo-form")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-txt.insert('end', "Text\n", tag_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. Basic editable text.\n", tag_demo, "demo-text")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. Text display styles.\n", tag_demo, "demo-style")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. Hypertext (tag bindings).\n", tag_demo, "demo-bind")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. A text widget with embedded windows.\n", tag_demo, "demo-twind")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. A text widget with embedded windows. (if supported)\n", tag_demo, "demo-twind2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "6. A search tool built with a text widget.\n", tag_demo, "demo-search")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "7. Peering text widgets. (if supported)\n", tag_demo, "demo-textpeer")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-txt.insert('end', "Canvases\n", tag_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. The canvas item types.\n", tag_demo, "demo-items")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. A simple 2-D plot.\n", tag_demo, "demo-plot")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. Text items in canvases.\n", tag_demo, "demo-ctext")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. An editor for arrowheads on canvas lines.\n", tag_demo, "demo-arrow")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. A ruler with adjustable tab stops.\n", tag_demo, "demo-ruler")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "6. A building floor plan.\n", tag_demo, "demo-floor")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "7. A building floor plan. (another way to create canvas items)\n", tag_demo, "demo-floor2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "8. A simple scrollable canvas.\n", tag_demo, "demo-cscroll")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "9. A Knight's tour of the chess board. (require Tile/Ttk extension)\n", tag_demo, "demo-knightstour")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-txt.insert('end', "Scales and Progress Bars\n", tag_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. Vertical scale.\n", tag_demo.id, "demo-vscale")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. Horizontal scale.\n", tag_demo.id, "demo-hscale")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. Progress bar. (require Tile/Ttk extension)\n", tag_demo.id, "demo-ttkprogress")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-txt.insert('end', "Paned Windows and Notebooks\n", tag_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. Horizontal paned window. (if supported)\n", tag_demo.id, "demo-paned1")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. Vertical paned window. (if supported)\n", tag_demo.id, "demo-paned2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. Themed nested panes. (require Tile/Ttk extension)\n", tag_demo.id, "demo-ttkpane")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. Notebook widget. (require Tile/Ttk extension)\n", tag_demo.id, "demo-ttknote")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-txt.insert('end', "Menus and Toolbars\n", tag_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. Menus and cascades.\n", tag_demo, "demo-menu")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. Menus and cascades. (if supported)\n", tag_demo, "demo-menu84")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. Menubuttons.\n", tag_demo, "demo-menubu")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. Themed menu buttons. (require Tile/Ttk extension)\n", tag_demo, "demo-ttkmenu")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. Themed toolbar. (require Tile/Ttk extension)\n", tag_demo, "demo-toolbar")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-txt.insert('end', "Common Dialogs\n", tag_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. Message boxes.\n", tag_demo, "demo-msgbox")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. Message boxes with detail text. (if supported)\n", tag_demo, "demo-msgbox2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. File selection dialog.\n", tag_demo, "demo-filebox")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. Color picker.\n", tag_demo, "demo-clrpick")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-txt.insert('end', "Animation\n", tag_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. Animated labels (if supported)\n", tag_demo, "demo-anilabel")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. Animated wave (if supported)\n", tag_demo, "demo-aniwave")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. Pendulum simulation (if supported)\n", tag_demo, "demo-pendulum")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. A celebration of Rube Goldberg (if supported)\n", tag_demo, "demo-goldberg")
-
-txt.insert('end', "\n")
-txt.insert('end', "Miscellaneous\n", tag_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. The built-in bitmaps.\n", tag_demo, "demo-bitmap")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. A dialog box with a local grab.\n", tag_demo, "demo-dialog1")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. A dialog box with a global grab.\n", tag_demo, "demo-dialog2")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.state('disabled')
-scr.focus
-
-# positionWindow --
-# This procedure is invoked by most of the demos to position a
-# new demo window.
-#
-# Arguments:
-# w -           The name of the window to position.
-
-def positionWindow(w)
-  w.geometry('+300+300')
-end
-
-# showVars --
-# Displays the values of one or more variables in a window, and
-# updates the display whenever any of the variables changes.
-#
-# Arguments:
-# w -           Name of new window to create for display.
-# args -        Any number of names of variables.
-
-$showVarsWin = {}
-def showVars1(parent, *args)
-  if $showVarsWin[parent.path]
-    begin
-      $showVarsWin[parent.path].destroy 
-    rescue
-    end
-  end
-  w = TkToplevel.new(parent) {|w|
-    title "Variable values"
-    base = TkFrame.new(w).pack(:fill=>:both, :expand=>true)
-    TkLabel.new(base) {
-      text "Variable values:"
-      width 20
-      anchor 'center'
-      if $tk_version =~ /^4.*/
-        font '-Adobe-helvetica-medium-r-normal--*-180-*-*-*-*-*-*'
-      else
-        font 'Helvetica 14'
-      end
-    }.pack('side'=>'top', 'fill'=>'x')
-    len = 1
-    args.each{|vnam,vbody|
-      len = vnam.to_s.length if vnam.to_s.length > len
-    }
-    args.each{|vnam,vbody|
-      TkFrame.new(w){|f|
-        #TkLabel.new(f, 'text'=>"#{vnam}: ").pack('side'=>'left')
-        TkLabel.new(f, 'text'=>"#{vnam}: ",'width'=>len+2).pack('side'=>'left')
-        TkLabel.new(f, 'textvariable'=>vbody, 'anchor'=>'w')\
-                   .pack('side'=>'left', 'expand'=>'yes', 'fill'=>'x')
-      }.pack('side'=>'top', 'anchor'=>'w', 'fill'=>'x')
-    }
-    TkButton.new(base) {
-      text "OK"
-      command proc{w.destroy}
-    }.pack('side'=>'bottom', 'pady'=>2)
-  }
-  $showVarsWin[parent.path] = w
-end
-
-def showVars2(parent, *args)
-  if $showVarsWin[parent.path]
-    begin
-      $showVarsWin[parent.path].destroy 
-    rescue
-    end
-  end
-  $showVarsWin[parent.path] = TkToplevel.new(parent) {|top|
-    title "Variable values"
-
-    base = TkFrame.new(top).pack(:fill=>:both, :expand=>true)
-
-    TkLabelFrame.new(base, :text=>"Variable values:", 
-                     :font=>{:family=>'Helvetica', :size=>14}){|f|
-      args.each{|vnam,vbody|
-        TkGrid(TkLabel.new(f, :text=>"#{vnam}: ", :anchor=>'w'), 
-               TkLabel.new(f, :textvariable=>vbody, :anchor=>'w'), 
-               :padx=>2, :pady=>2, :sticky=>'w')
-      }
-
-      f.grid(:sticky=>'news', :padx=>4)
-      f.grid_columnconfig(1, :weight=>1)
-      f.grid_rowconfig(100, :weight=>1)
-    }
-    TkButton.new(base, :text=>"OK", :width=>8, :default=>:active, 
-                 :command=>proc{top.destroy}){|b|
-      top.bind('Return', proc{b.invoke})
-      top.bind('Escape', proc{b.invoke})
-
-      b.grid(:sticky=>'e', :padx=>4, :pady=>[6, 4])
-    }
-    base.grid_columnconfig(0, :weight=>1)
-    base.grid_rowconfig(0, :weight=>1)
-  }
-end
-
-if $tk_major_ver < 8
-  alias showVars showVars1
-elsif $tk_major_ver == 8 && $tk_minor_ver < 4
-  alias showVars showVars1
-else # ver >= 8.4
-  alias showVars showVars2
-end
-
-# Pseudo-Toplevel support
-module PseudoToplevel_Evaluable
-  def pseudo_toplevel_eval(body = Proc.new)
-    Thread.current[:TOPLEVEL] = self
-    begin
-      body.call
-    ensure
-      Thread.current[:TOPLEVEL] = nil
-    end
-  end
-
-  def pseudo_toplevel_evaluable?
-    @pseudo_toplevel_evaluable
-  end
-  def pseudo_toplevel_evaluable=(mode)
-    @pseudo_toplevel_evaluable = (mode)? true: false
-  end
-
-  def self.extended(mod)
-    mod.__send__(:extend_object, mod)
-    mod.instance_variable_set('@pseudo_toplevel_evaluable', true)
-  end
-end
-
-class Object
-  alias __method_missing__ method_missing
-  private :__method_missing__
-
-  def method_missing(id, *args)
-    begin
-      has_top = (top = Thread.current[:TOPLEVEL]) && 
-                   top.respond_to?(:pseudo_toplevel_evaluable?) && 
-                   top.pseudo_toplevel_evaluable? && 
-                   top.respond_to?(id)
-    rescue Exception => e
-      has_top = false
-    end
-
-    if has_top
-      top.__send__(id, *args)
-    else
-      __method_missing__(id, *args)
-    end
-  end
-end
-
-class Proc
-  def initialize(*args, &b)
-    super
-    @__pseudo_toplevel__ = Thread.current[:TOPLEVEL]
-  end
-
-  alias __call__ call
-  def call(*args, &b)
-    if top = @__pseudo_toplevel__
-      orig_top = Thread.current[:TOPLEVEL]
-      Thread.current[:TOPLEVEL] = top
-      begin
-        __call__(*args, &b)
-      ensure
-        Thread.current[:TOPLEVEL] = orig_top
-      end
-    else
-      __call__(*args, &b)
-    end
-  end
-end
-
-def proc(&b)
-  Proc.new(&b)
-end
-def lambda(&b)
-  Proc.new(&b)
-end
-
-def _null_binding
-  Module.new.instance_eval{extend PseudoToplevel_Evaluable}
-  # binding
-  # Module.new.instance_eval{binding}
-end
-private :_null_binding
-
-def eval_samplecode(code, file=nil)
-  #eval(code)
-  #_null_binding.pseudo_toplevel_eval{ eval(code) }
-  #Thread.new{ _null_binding.pseudo_toplevel_eval{ eval(code) } }
-  Thread.new{
-    _null_binding.pseudo_toplevel_eval{
-      begin
-        if file
-          eval(code, binding, "(eval:#{file})")
-        else
-          eval(code)
-        end
-      rescue Exception=>e
-        #p e
-        TkBgError.show(e.class.inspect + ': ' + e.message + "\n" +
-                         "\n---< backtrace of Ruby side >-----\n" +
-                         e.backtrace.join("\n") +
-                         "\n---< backtrace of Tk side >-------")
-      end
-    }
-  }
-  Tk.update
-end
-
-# invoke --
-# This procedure is called when the user clicks on a demo description.
-# It is responsible for invoking the demonstration.
-#
-# Arguments:
-# txt -         Name of text widget
-# index -       The index of the character that the user clicked on.
-def invoke(txt, idx)
-  tag = txt.tag_names(idx).find{|t| t.kind_of?(String) && t =~ /^demo-/}
-  return unless tag
-
-  cursor = txt.cget('cursor')
-  txt.cursor('watch')
-  Tk.update
-  # eval(IO.readlines("#{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb").join, _null_binding)
-  # Tk.update
-  eval_samplecode(IO.readlines("#{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb").join, tag[5..-1] + '.rb')
-  txt.cursor(cursor)
-
-  $tag_visited.add("#{idx} linestart +1 chars", "#{idx} lineend +1 chars")
-end
-=begin
-def invoke (txt, idx)
-  tag = txt.tag_names(idx).find{|t| t.kind_of?(String) && t =~ /^demo-/}
-  return unless tag
-  current_cursor = txt.cget('cursor')
-  txt.cursor('watch')
-  Tk.update
-#  eval `cat #{tag[5..-1]}.rb`
-#  eval `cat #{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb`
-  eval IO.readlines("#{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb").join
-  Tk.update
-#  txt.cursor('xterm')
-  txt.cursor(current_cursor)
-
-  $tag_visited.add("#{idx} linestart +1 chars", "#{idx} lineend +1 chars")
-end
-=end
-# showStatus --
-#
-#       Show the name of the demo program in the status bar. This procedure
-#       is called when the user moves the cursor over a demo description.
-#
-
-def showStatus (txt, index)
-  tag = txt.tag_names(index).find{|t| t.kind_of?(String) && t =~ /^demo-/}
-  cursor = txt.cget('cursor')
-  unless tag
-    $statusBarLabel.configure('text', " ")
-    newcursor = 'xterm'
-  else
-    demoname = tag[5..-1]
-    $statusBarLabel.configure('text', 
-                             "Run the \"#{demoname}\" sample program")
-    newcursor = 'hand2'
-  end
-  txt.configure('cursor'=>newcursor) if cursor != newcursor
-end
-
-# showCode --
-# This procedure creates a toplevel window that displays the code for
-# a demonstration and allows it to be edited and reinvoked.
-#
-# Arguments:
-# demo -        The name of the demonstration's window, which can be
-#               used to derive the name of the file containing its code.
-
-def showCode1(demo)
-  file = "#{demo}.rb"
-  $code_window = nil unless defined? $code_window
-  if $code_window == nil || TkWinfo.exist?($code_window) == false
-    $code_window = TkToplevel.new(nil)
-    f = TkFrame.new($code_window)
-
-    TkButton.new(f) {
-      text "Dismiss"
-      command proc{
-        $code_window.destroy
-        $code_window = nil
-      }
-    }.pack('side'=>'right', 'expand'=>'false', 'pady'=>2, 'padx'=>25)
-    TkButton.new(f) {
-      text "Rerun Demo"
-      # command proc{eval($code_text.get('1.0','end'), _null_binding)}
-      command proc{eval_samplecode($code_text.get('1.0','end'), '<viewer>')}
-    }.pack('side'=>'right', 'expand'=>'false', 'pady'=>2)
-
-    TkLabel.new(f,'text'=>'line:').pack('side'=>'left')
-    linenum =TkLabel.new(f,'text'=>'').pack('side'=>'left')
-    TkLabel.new(f,'text'=>'  pos:').pack('side'=>'left')
-    posnum =TkLabel.new(f,'text'=>'').pack('side'=>'left')
-
-    $set_linenum = proc{|w|
-      line, pos = w.index('insert').split('.')
-      linenum.text = line
-      posnum.text  = pos
-    }
-
-    f.pack('side'=>'bottom', 'expand'=>'true', 'fill'=>'x')
-
-    if $tk_version =~ /^4\.[01]/
-      s = TkScrollbar.new($code_window, 'orient'=>'vertical')
-      $code_text = TkText.new($code_window) {
-        height 40
-        setgrid 'yes'
-        yscrollcommand proc{|first,last| s.set first,last}
-      }
-      s.command(proc{|*args| $code_text.yview(*args)})
-      s.pack('side'=>'right', 'fill'=>'y')
-      $code_text.pack('side'=>'left', 'expand'=>'yes', 'fill'=>'both')
-    else
-      TkFrame.new($code_window) {|f|
-        pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>1)
-
-        hs = TkScrollbar.new($code_window, 'highlightthickness'=>0, 
-                             'orient'=>'horizontal')
-        vs = TkScrollbar.new($code_window, 'highlightthickness'=>0, 
-                             'orient'=>'vertical')
-        $code_text = TkText.new($code_window) {|t|
-          height 40
-          wrap 'word'
-          xscrollcommand proc{|first,last| hs.set first,last}
-          yscrollcommand proc{|first,last| vs.set first,last}
-          setgrid 'yes'
-          highlightthickness 0
-          pady 2
-          padx 3
-          hs.command(proc{|*args| $code_text.xview(*args)})
-          vs.command(proc{|*args| $code_text.yview(*args)})
-        }
-
-        $code_text.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>0, 
-                        'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-        vs.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>1, 
-                'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-#       xs.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>1, 'column'=>0, 
-#               'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-
-# JKC 2001-07-26: segfaults under 1.7.1 (2001-06-19) [i686-linux]
-        TkGrid.rowconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
-        TkGrid.columnconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
-      }
-    end
-
-    btag = TkBindTag.new
-
-    btag.bind('Key', $set_linenum, '%W')
-    btag.bind('Button', $set_linenum, '%W')
-
-    btags = $code_text.bindtags
-    btags.insert(btags.index($code_text.class) + 1, btag)
-    $code_text.bindtags = btags
-
-  else
-    $code_window.deiconify
-    $code_window.raise
-  end
-
-  $code_window.title("Demo code: #{file}")
-  $code_window.iconname(file)
-#  fid = open(file, 'r')
-  fid = open([$demo_dir, file].join(File::Separator), 'r')
-  $code_text.delete('1.0', 'end')
-  #$code_text.insert('1.0', `cat #{file}`)
-  $code_text.insert('1.0', fid.read)
-  #$code_mark = TkTextMark.new($code_text, '1.0')
-  #$code_text.set_insert('1.0')
-  TkTextMarkInsert.new($code_text,'1.0')
-
-  $set_linenum.call($code_text)
-
-  fid.close
-end
-
-def showCode2(demo)
-  file = "#{demo}.rb"
-  $code_window = nil unless defined? $code_window
-  if $code_window == nil || TkWinfo.exist?($code_window) == false
-    $code_window = TkToplevel.new(nil)
-    tf = TkFrame.new($code_window)
-    $code_text = TkText.new(tf, :font=>'Courier 10', :height=>30, 
-                            :wrap=>'word', :bd=>1, :setgrid=>true, 
-                            :highlightthickness=>0, :pady=>2, :padx=>3)
-    xscr = TkScrollbar.new(tf, :bd=>1){assign($code_text)}
-    yscr = TkScrollbar.new(tf, :bd=>1){assign($code_text)}
-    TkGrid($code_text, yscr, :sticky=>'news')
-    #TkGrid(xscr)
-    tf.grid_rowconfigure(0, :weight=>1)
-    tf.grid_columnconfigure(0, :weight=>1)
-
-    bf = TkFrame.new($code_window)
-
-    lf = TkFrame.new(bf)
-    TkLabel.new(lf, :text=>'line:').pack(:side=>:left)
-    linenum =TkLabel.new(lf, :text=>'').pack(:side=>:left)
-    TkLabel.new(lf, :text=>'  pos:').pack(:side=>:left)
-    posnum =TkLabel.new(lf, :text=>'').pack(:side=>:left)
-
-    $set_linenum = proc{|w|
-      line, pos = w.index('insert').split('.')
-      linenum.text = line
-      posnum.text  = pos
-    }
-
-    b_dis = TkButton.new(bf, :text=>'Dismiss', :default=>:active, 
-                         :command=>proc{
-                           $code_window.destroy
-                           $code_window = nil
-                         }, 
-                         :image=>$image['delete'], :compound=>:left)
-    b_prn = TkButton.new(bf, :text=>'Print Code', 
-                         :command=>proc{printCode($code_text, file)}, 
-                         :image=>$image['print'], :compound=>:left)
-    b_run = TkButton.new(bf, :text=>'Rerun Demo', 
-                         :command=>proc{
-                           # eval($code_text.get('1.0','end'), _null_binding)
-                           eval_samplecode($code_text.get('1.0','end'), '<viewer>')
-                         }, 
-                         :image=>$image['refresh'], :compound=>:left)
-
-    TkGrid(lf, 'x', b_run, b_prn, b_dis, :padx=>4, :pady=>[6,4])
-    bf.grid_columnconfigure(1, :weight=>1)
-
-    TkGrid(tf, :sticky=>'news')
-    TkGrid(bf, :sticky=>'ew')
-    $code_window.grid_columnconfigure(0, :weight=>1)
-    $code_window.grid_rowconfigure(0, :weight=>1)
-
-    $code_window.bind('Return', proc{|win|
-                        b_dis.invoke unless win.kind_of?(TkText)
-                      }, '%W')
-    $code_window.bindinfo('Return').each{|cmd, arg|
-      $code_window.bind_append('Escape', cmd, arg)
-    }
-
-    btag = TkBindTag.new
-
-    btag.bind('Key', $set_linenum, '%W')
-    btag.bind('Button', $set_linenum, '%W')
-    btag.bind('Configure', $set_linenum, '%W')
-
-    btags = $code_text.bindtags
-    btags.insert(btags.index($code_text.class) + 1, btag)
-    $code_text.bindtags = btags
-
-  else
-    $code_window.deiconify
-    $code_window.raise
-  end
-
-  $code_window.title("Demo code: #{file}")
-  $code_window.iconname(file)
-  fid = open([$demo_dir, file].join(File::Separator), 'r')
-  $code_text.delete('1.0', 'end')
-  $code_text.insert('1.0', fid.read)
-  TkTextMarkInsert.new($code_text,'1.0')
-
-  $set_linenum.call($code_text)
-
-  fid.close
-end
-
-if $tk_major_ver < 8
-  alias showCode showCode1
-elsif $tk_major_ver == 8 && $tk_minor_ver < 4
-  alias showCode showCode1
-else # ver >= 8.4
-  alias showCode showCode2
-end
-
-
-# printCode --
-# Prints the source code currently displayed in the See Code dialog.
-# Much thanks to Arjen Markus for this.
-#
-# Arguments:
-# txt -         Name of text widget containing code to print
-# file -        Name of the original file (implicitly for title)
-
-def printCode(txt, file)
-  code = txt.get('1.0', 'end - 1c')
-  dir = '.'
-  dir = ENV['HOME'] if ENV['HOME']
-  dir = ENV['TMP'] if ENV['TMP']
-  dir = ENV['TEMP'] if ENV['TEMP']
-
-  fname = [dir, 'tkdemo-' + file].join(File::Separator)
-  open(fname, 'w'){|fid| fid.print(code)}
-  begin
-    case Tk::TCL_PLATFORM('platform')
-    when 'unix'
-      msg = `lp -c #{fname}`
-      unless $?.exitstatus == 0
-        Tk.messageBox(:title=>'Print spooling failure', 
-                      :message=>'Print spooling probably failed: ' + msg)
-      end
-    when 'windows'
-      begin
-        printTextWin32(fname)
-      rescue => e
-        Tk.messageBox(:title=>'Print spooling failure', 
-                      :message=>'Print spooling probably failed: ' + 
-                      e.message)
-      end      
-    when 'macintosh'
-      Tk.messageBox(:title=>'Operation not Implemented', 
-                    :message=>'Oops, sorry: not implemented yet!')
-    else
-      Tk.messageBox(:title=>'Operation not Implemented', 
-                    :message=>'Wow! Unknown platform: ' + 
-                    Tk::TCL_PLATFORM('platform'))
-    end
-  ensure
-    File.delete(fname)
-  end
-end
-
-# printTextWin32 --
-#    Print a file under Windows
-#
-# Arguments:
-# filename -            Name of the file
-#
-def printTextWin32(fname)
-  require 'win32/registry'
-  begin
-    app = Win32::Registry::HKEY_CLASSES_ROOT['.txt']
-    pcmd = nil
-    Win32::Registry::HKEY_CLASSES_ROOT.open("#{app}\\shell\\print"){|reg|
-      pcmd = reg['command']
-    }
-  rescue
-    app = Tk.tk_call('auto_execok', 'notepad.exe')
-    pcmd = "#{app} /p %1"
-  end
-
-  pcmd.gsub!('%1', fname)
-  puts pcmd
-  cmd = Tk.tk_call('auto_execok', 'start') + ' /min ' + pcmd
-  
-  msg = `#{cmd}`
-  unless $?.exitstatus == 0
-    fail RuntimeError, msg
-  end
-end
-
-# aboutBox
-#
-#      Pops up a message box with an "about" message
-#
-def aboutBox
-  Tk.messageBox('icon'=>'info', 'type'=>'ok', 'title'=>'About Widget Demo', 
-                'message'=>"Ruby/Tk widget demonstration Ver.1.7.0-en\n\n" + 
-                           "based on demos of Tk8.1 -- 8.5  " + 
-                           "( Copyright of Tcl/Tk demos:: " + 
-                           "(c) 1996-1997 Sun Microsystems, Inc. / " + 
-                           "(c) 1997-2000 Ajuba Solutions, Inc. / " + 
-                           "(c) 2001-2007 Donal K. Fellows / " + 
-                           "(c) 2002-2007 Daniel A. Steffen )\n\n" +
-                           "Your Ruby & Tk Version ::\n" + 
-                           "Ruby#{RUBY_VERSION}(#{RUBY_RELEASE_DATE})[#{RUBY_PLATFORM}] / Tk#{$tk_patchlevel}#{(Tk::JAPANIZED_TK)? '-jp': ''}\n\n" + 
-                           "Ruby/Tk release date :: tcltklib #{TclTkLib::RELEASE_DATE}; tk #{Tk::RELEASE_DATE}")
-end
-
-#########################################
-# start demos if given at command line
-no_launcher = false
-if ARGV[0] == '-n'
-  ARGV.shift
-  no_launcher = true if ARGV.size > 0
-else
-  # show the root widget to make it lower then demo windows
-  Tk.update
-end
-ARGV.each{|cmd| 
-  if cmd =~ /(.*).rb/
-    cmd = $1
-  end
-  #eval(IO.readlines("#{[$demo_dir, cmd].join(File::Separator)}.rb").join, 
-  #     _null_binding)
-  eval_samplecode(IO.readlines("#{[$demo_dir, cmd].join(File::Separator)}.rb").join, cmd + '.rb')
-}
-if no_launcher
-  $root.withdraw  # hide root window
-  Thread.start{
-    loop do
-      count = 0
-      $root.winfo_children.each{|w|
-        count += 1 if w.kind_of?(TkToplevel)
-      }
-      $root.destroy if count == 0
-    end
-  }
-end
-
-#########################################
-# start eventloop
-Tk.mainloop
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/README b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/README
deleted file mode 100644 (file)
index 42bec16..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-
-  Ruby/Tk widget-demo 
-                              version 1.2 ( 2000/04/08 )
-                              ±Ê°æ¡÷ÃÎǽ¡¥¶å¹©Âç (nagai@ai.kyutech.ac.jp)
-
-ɸ½àÇÛÉۤΠTcl/Tk ³ÈÄ¥¥Ñ¥Ã¥±¡¼¥¸¤ò¼è¤ê¹þ¤ó¤À Ruby (°Ê²¼ Ruby/Tk ¤È¸Æ¤Ó¤Þ¤¹) 
-¤Ç¤Ï¡¤Tk widget ¤òÍѤ¤¤¿ GUI ¤ÎºîÀ®¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥¼ÂºÝ¤Ë GUI ¤òºîÀ®
-¤·¤Æ¤¤¤¯¾ì¹ç¤Ë¤ÏÍÍ¡¹¤Ê¼ÂÎ㤬¥µ¥ó¥×¥ë¤È¤·¤Æ¸ºß¤¹¤ë¤ÈÊØÍø¤Ê¤Î¤Ç¤¹¤¬¡¤Ruby/Tk 
-¤Ë¤Ï¤½¤Î¤è¤¦¤ÊŬÅö¤Ê¥µ¥ó¥×¥ë¥¹¥¯¥ê¥×¥È½¸¹ç¤Ï¸ºß¤·¤Þ¤»¤ó¤Ç¤·¤¿¡¥¤½¤ì¤ËÂФ·¡¤
-³ÈÄ¥¥Ñ¥Ã¥±¡¼¥¸¤Î¸µ¤Ç¤¢¤ë Tcl/Tk ¤Ë¤Ï¡¤Tk widget ¤òÍѤ¤¤Æ¤É¤Î¤è¤¦¤Ê¤³¤È¤¬¤Ç
-¤­¤ë¤«¤ò¼¨¤¹¤â¤Î¤È¤·¤Æ widget-demo ¤¬Â¸ºß¤·¤ª¤ê¡¤Tcl/Tk ¤òÍѤ¤¤¿ GUI ¤ÎºîÀ®
-¤ò½¬ÆÀ¤¹¤ëºÝ¤ÎÂåɽŪ¥µ¥ó¥×¥ë¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥ËÜ¥¢¡¼¥«¥¤¥Ö¤Ï¡¤Ruby/Tk ¤Î½¬ÆÀ¤Î
-¤¿¤á¤ÎÂåɽŪ¤Ê¥µ¥ó¥×¥ë¥¹¥¯¥ê¥×¥È¤È¤¹¤Ù¤¯¡¤Tcl/Tk ¤Î widget-demo ¤ò°Ü¿¢¤·¤¿¤â
-¤Î¤Ç¤¹¡¥
-
-º£²ó¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï ruby-1.4.x ¤ËÂбþ¤È¤·¤Æ¤ª¤­¤Þ¤¹¤¬¡¤µì¥Ð¡¼¥¸¥ç¥ó¤ËÈæ¤Ù¤Æ¡¤
-¤Û¤È¤ó¤ÉÊѹ¹¤Ï¤¢¤ê¤Þ¤»¤ó¡¥ruby-1.1c2 °Ê¾å¤Ê¤éÆ°¤¯¤È»×¤¤¤Þ¤¹¡¥ruby-1.5.x ¤Ë¤Ä
-¤¤¤Æ¤Ï¥Æ¥¹¥È¤·¤Æ¤¤¤Þ¤»¤ó¡¥¤½¤Î¤¿¤á¡¤Èó¸ß´¹¤Î±Æ¶Á¤¬½Ð¤ë¤³¤È¤¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»
-¤ó¤¬¡¤¤½¤Î¾ì¹ç¤Ç¤â¾¯¤·¤Î½¤Àµ¤ÇÆ°¤«¤»¤ë¤È»×¤¤¤Þ¤¹¡¥ÁȤ߹þ¤à Tk ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï¡¤
-4.2 ¤Ç¤â 8.0 ¤Ç¤â½¤Àµ¤Ê¤¯Æ°¤«¤»¤ë¤Ï¤º¤Ç¤¹¡¥¤¿¤À¤·¡¤ÆüËܸìÈǤǤΰܿ¢¤È¤Ê¤Ã¤Æ
-¤¤¤ë¤¿¤á¡¤ÆüËܸ첽¤µ¤ì¤¿ Tk ¤ò¤´ÍøÍѤ¯¤À¤µ¤¤¡¥¥¹¥¯¥ê¥×¥È¤Î¥Æ¥¹¥È¤Ï¡¤µì¥Ð¡¼¥¸¥ç
-¥ó¤ÎºÝ¤Ë Tk4.2jp ¤È Tk8.0jp ¤Î¾å¤Ç¹Ô¤Ã¤Æ¤¤¤Þ¤¹ (´°àú¤Ë¤Ç¤Ï¤Ê¤¤¤Ç¤¹¤¬)¡¥º£²ó
-¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï ruby-1.4.x + Tk8.0jp ¾å¤Ç¤Î´Êñ¤Ê¥Æ¥¹¥È¤·¤«¹Ô¤Ã¤Æ¤¤¤Þ¤»¤ó¤¬¡¤
-½¤Àµ¤È¤¤¤¦¤Û¤É¤Î½¤Àµ¤Ï¤·¤Æ¤¤¤Þ¤»¤ó¤Î¤ÇÌäÂê¤Ï¤Ê¤¤¤È¹Í¤¨¤Æ¤¤¤Þ¤¹¡¥
-
-ËÜ¥¢¡¼¥«¥¤¥Ö¤Ë´Þ¤Þ¤ì¤ë¥¹¥¯¥ê¥×¥È¤Î¿¤¯¤Ï¡¤¸µ¤È¤Ê¤Ã¤Æ¤¤¤ë Tcl/Tk ÈǤËÈæ³ÓŪ¶á
-¤¤¥¹¥¯¥ê¥×¥Èµ­½Ò¤È¤Ê¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡¥¤½¤Î¤¿¤á¡¤Ruby/Tk ¤Î¥µ¥ó¥×¥ë¤È¸À¤¦¤Ë
-¤Ï¡¤¤¢¤Þ¤ê Ruby ¤é¤·¤¯¤Ê¤¤¤È¤â¸À¤¨¤ë¤Ç¤·¤ç¤¦¡¥¤Ë¤â¤«¤«¤ï¤é¤º¡¤¤½¤Î¤è¤¦¤Êµ­½Ò
-¤ò¼è¤Ã¤Æ¤¤¤ëÍýͳ¤Ï¡¤Ruby/Tk ¤Î¥É¥­¥å¥á¥ó¥ÈÉÔ­¤Ë¤¢¤ê¤Þ¤¹¡¥
-
-Tcl/Tk ¤Ë¤ÏŬÅö¤Ê»²¹Í½ñ¤¬²¿ºý¤«Â¸ºß¤·¤Æ¤¤¤Þ¤¹¤«¤é¡¤Ruby/Tk ¥¹¥¯¥ê¥×¥È¤òºîÀ®
-¤¹¤ëºÝ¤Ï¡¤¤½¤Î¤è¤¦¤Ê Tcl/Tk ¤Î»²¹Í½ñ¤Ç¾ðÊó¤òÊ䤤¤Ê¤¬¤éºîÀ®¤¹¤ë¤³¤È¤Ë¤Ê¤ë¤È»×
-¤¤¤Þ¤¹¡¥³Æ widget ¤Î»ÈÍÑÎã¤È¤·¤Æ¡¤Tcl/Tk ¤Î widget-demo ¤ò»²¾È¤¹¤ë¤³¤È¤â¤¢¤ë
-¤Ç¤·¤ç¤¦¡¥Ruby/Tk ÈǤε­½Ò¤ò widget-demo ¤ò Tcl/Tk ÈǤε­½Ò¤Ë¶á¤¤¤â¤Î¤Ë¤·¤Æ
-¤ª¤±¤Ð¡¤¤½¤ÎÂÐÈæ¤Ë¤è¤Ã¤Æ¡¤Ruby/Tk ¤ÎÍý²ò¤òÁá¤á¤ë¤³¤È¤¬¤Ç¤­¤ë¤È¹Í¤¨¤é¤ì¤Þ¤¹¡¥
-°ìö Ruby/Tk ¤Ç¤Î ³Æ widget ¤Î»ÈÍÑÊýË¡¤ò½¬ÆÀ¤·¤Æ¤·¤Þ¤¨¤Ð¡¤Ruby ¤é¤·¤¤¥¹¥¯¥ê
-¥×¥È¤òºîÀ®¤¹¤ë¤³¤È¤ÏÆñ¤·¤¯¤Ê¤¤¤Ç¤·¤ç¤¦¡¥ËÜ¥¢¡¼¥«¥¤¥Ö¤Î¥¹¥¯¥ê¥×¥È¤Ï¡¤Ruby/Tk 
-¤òºÇ½é¤Ë½¬ÆÀ¤¹¤ë¤Þ¤Ç¤ÎƧÂæ¤È¤·¤ÆÍøÍѤ·¤Æ¤¤¤¿¤À¤±¤ì¤Ð¹¬¤¤¤Ç¤¹¡¥
-
-widget-demo ¤Î°Ü¿¢¤Ë¤¢¤¿¤Ã¤Æ¤Ï¡¤¼¡¤ÎÊý¤Ë¤â°Ü¿¢¤·¤¿¥¹¥¯¥ê¥×¥È¤òÄ󶡤·¤Æ¤¤¤¿¤À
-¤­¤Þ¤·¤¿¡¥¤³¤³¤Ë´¶¼Õ¤Î°Õ¤òɽ¤·¤Þ¤¹¡¥
-
-    Î©ÀС÷JAIST (ttate@jaist.ac.jp) ¤µ¤ó 
-    Ê¿¾¾¾Í»Ë (hiramatu@cdrom.co.jp) ¤µ¤ó
-
-Ê¿¾¾¤µ¤ó¤Ë¤è¤ë Ruby/Tk ÆþÌç¤Î Web page (http://www.cdrom.co.jp/~hiramatu/) 
-¤â Ruby/Tk ¤Î½¬ÆÀ¤ËÍ­ÍѤȻפ¨¤Þ¤¹¤Î¤Ç¡¤¤¼¤Ò¤´»²¾È¤¯¤À¤µ¤¤¡¥
-
-¤Þ¤¿¡¤Á°¶¶ (maebashi@iij.ad.jp) ¤µ¤ó¤ò¤Ï¤¸¤á¤È¤·¤Æ¡¤widget-demo ¤Î°Ü¿¢¤ËºÝ¤·
-¤ÆɬÍפȤʤä¿ Ruby ¤Î Tk ´ØÏ¢¥é¥¤¥Ö¥é¥ê½¤Àµ¤Ë¤Ä¤¤¤Æ¡¤ÌäÂêÅÀ¡¤¥Ð¥°¤Î»ØŦ¤ò¤·
-¤Æ¤¤¤¿¤À¤¤¤¿Êý¡¹¤Ë¤â´¶¼ÕÃפ·¤Þ¤¹¡¥
-
-¤½¤·¤ÆºÇ¸å¤ËºÇÂç¤Î´¶¼Õ¤ò Ruby À߷׼ԤΠ¤Þ¤Ä¤â¤È ¤æ¤­¤Ò¤í (matz@netlab.co.jp) 
-¤µ¤ó¤ËÊû¤²¤¿¤¤¤È»×¤¤¤Þ¤¹¡¥
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/README.1st b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/README.1st
deleted file mode 100644 (file)
index 60b278d..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ï Ruby/Tk ¤Î¥Ç¥â¥¹¥¯¥ê¥×¥È¤¬¼ý¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡¥
-
-'.rb' ¤È¤¤¤¦³ÈÄ¥»Ò¤ò»ý¤Ã¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Ï¡¤¥é¥ó¥Á¥ã¨¡¥¹¥¯¥ê¥×¥È¤Ç
-¤¢¤ë 'widget' ¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤ë¥µ¥Ö¥¹¥¯¥ê¥×¥È¤Ç¤¹¡¥¤½¤ì¤¾¤ìÆÈΩ¤Ë
-¤ÏÆ°¤­¤Þ¤»¤ó¡¥'widget' ¥¹¥¯¥ê¥×¥È¤«¤é¸Æ¤Ó½Ð¤·¤Æ¤¯¤À¤µ¤¤¡¥
-
-¤â¤·¥é¥ó¥Á¥ã¨¡¥¹¥¯¥ê¥×¥È 'widget' ¤Îµ¯Æ°¤ÈƱ»þ¤Ë¤¤¤¯¤Ä¤«¤Î¥µ¥Ö¥¹
-¥¯¥ê¥×¥È¤òµ¯Æ°¤·¤¿¤±¤ì¤Ð¡¤¤½¤Î¥µ¥Ö¥¹¥¯¥ê¥×¥È¤Î̾Á°¤ò°ú¿ô¤È¤·¤ÆÍ¿
-¤¨¤Æ¤¯¤À¤µ¤¤¡¥
-( Îã: /usr/local/bin/ruby widget button.rb entry1.rb text.rb )
-¥µ¥Ö¥¹¥¯¥ê¥×¥È¤Î³ÈÄ¥»Ò '.rb' ¤Ï¾Êά¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡¥
-( Îã: /usr/local/bin/ruby widget button entry1 text )
-
-¤â¤·¥é¥ó¥Á¥ã¨¡¥¹¥¯¥ê¥×¥È¤Î¥¦¥£¥ó¥É¥¦¤¬É¬Íפʤ¤¾ì¹ç¤Ë¤Ï¡¤'-n' ¥ª
-¥×¥·¥ç¥ó¤òÍ¿¤¨¤Æ¤¯¤À¤µ¤¤¡¥
-( Îã: /usr/local/bin/ruby widget -n button.rb entry1.rb text.rb )
-
-¾¤Î¥Õ¥¡¥¤¥ë (browse1 ¤ä hello ¤Ê¤É) ¤ÏñÆȤÇÆ°¤«¤¹¤³¤È¤¬²Äǽ¤Ç¤¹¡¥
-
-          2004/04/14  Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/anilabel.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/anilabel.rb
deleted file mode 100644 (file)
index aee57f9..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# animated label widget demo (called by 'widget')
-#
-# based on Tcl/Tk8.5a2 widget demos
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($anilabel_demo) && $anilabel_demo
-  $anilabel_demo.destroy 
-  $anilabel_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$anilabel_demo = TkToplevel.new {|w|
-  title("Animated Label Demonstration")
-  iconname("anilabel")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($anilabel_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "²¼¤Ë¤Ï4¤Ä¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¥é¥Ù¥ë¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£º¸Â¦¤Ë¤¢¤ë¥é¥Ù¥ë¤Ï¡¢ÆâÉô¤Î¥Æ¥­¥¹¥È¥á¥Ã¥»¡¼¥¸¤ò¥¹¥¯¥í¡¼¥ë¤·¤¿¤è¤¦¤Ë¸«¤»¤ë¤³¤È¤ÇÆ°¤­¤òÉÕ¤±¤Æ¤¤¤Þ¤¹¡£±¦Â¦¤Î¥é¥Ù¥ë¤Ï¡¢É½¼¨¤¹¤ë¥¤¥á¡¼¥¸¤òÊѲ½¤µ¤»¤ë¤³¤È¤ÇÆ°¤­¤òÍ¿¤¨¤Æ¤¤¤Þ¤¹¡£"
-}
-msg.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $anilabel_demo
-      $anilabel_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'anilabel'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# label demo Íѥե졼¥àÀ¸À®
-f_left = TkLabelFrame.new(base_frame,  :text=>'Scrolling Texts')
-f_right = TkLabelFrame.new(base_frame, :text=>'GIF Image')
-Tk.pack(f_left, f_right, 'side'=>'left', 'expand'=>'yes', 'fill'=>'both', 
-        'padx'=>10, 'pady'=>10)
-
-# animated label
-class AnimatedTextLabel < TkLabel
-  def initialize(*args)
-    super(*args)
-    @timer = TkTimer.new{ _animation_callback }
-    @timer.loop_exec = -1
-    # bind('Destroy'){ @timer.stop }
-    @btag = TkBindTag.new('Destroy'){ @timer.stop }
-    self.bindtags_unshift(@btag)
-  end
-
-  def _animation_callback()
-    txt = self.text
-    self.text = (txt[1..-1] << txt[0])
-  end
-  private :_animation_callback
-
-  def start(interval)
-    @timer.set_interval(interval)
-    @timer.start
-  end
-
-  def stop
-    @timer.stop
-  end
-end
-
-# animated image
-class AnimatedImageLabel < AnimatedTextLabel
-  def initialize(*args)
-    super(*args)
-    @destroy_image = false
-    @btag.bind_append('Destroy'){
-      if @destroy_image
-        begin
-          self.image.delete 
-        rescue
-        end
-      end
-    }
-  end
-  attr_accessor :destroy_image
-
-  def _animation_callback()
-    img = self.image
-
-    fmt = img.format
-    if fmt.kind_of?(Array)
-      if fmt[1].kind_of?(Hash)
-        # fmt == ['GIF', {'index'=>idx}]
-        idx = fmt[1]['index']
-      else
-        # fmt == ['GIF', '-index', idx]  :: Ruby1.8.2 returns this.
-        idx = fmt[2]
-      end
-    elsif fmt.kind_of?(String) && fmt =~ /GIF -index (\d+)/
-      idx = $1.to_i
-    else
-      idx = -1
-    end
-
-    begin
-      img.format("GIF -index #{idx + 1}")
-    rescue => e
-      img.format("GIF -index 0")
-    end
-  end
-  private :_animation_callback
-end
-
-# label À¸À®
-l1 = AnimatedTextLabel.new(f_left, :borderwidth=>4, :relief=>:ridge, 
-                           :font=>{:family=>'Courier', :size=>10})
-l2 = AnimatedTextLabel.new(f_left, :borderwidth=>4, :relief=>:groove, 
-                           :font=>{:family=>'Courier', :size=>10})
-l3 = AnimatedTextLabel.new(f_left, :borderwidth=>4, :relief=>:flat, 
-                           :font=>{:family=>'Courier', :size=>10}, :width=>18)
-Tk.pack(l1, l2, l3, 
-        :side=>:top, :expand=>true, :anchor=>:w, :padx=>10, :pady=>10)
-
-limg = AnimatedImageLabel.new(f_right, :borderwidth=>0)
-limg.pack(:side=>:top, :expand=>true, :padx=>10, :pady=>10)
-
-# base64-encoded animated GIF file
-tclPowerdData = <<EOD
-    R0lGODlhKgBAAPQAAP//////zP//AP/MzP/Mmf/MAP+Zmf+ZZv+ZAMz//8zM
-    zMyZmcyZZsxmZsxmAMwzAJnMzJmZzJmZmZlmmZlmZplmM5kzM2aZzGZmzGZm
-    mWZmZmYzZmYzMzNmzDMzZgAzmSH+IE1hZGUgd2l0aCBHSU1QIGJ5IExARGVt
-    YWlsbHkuY29tACH5BAVkAAEALAAAAAAqAEAAAAX+YCCOZEkyTKM2jOm66yPP
-    dF03bx7YcuHIDkGBR7SZeIyhTID4FZ+4Es8nQyCe2EeUNJ0peY2s9mi7PhAM
-    ngEAMGRbUpvzSxskLh1J+Hkg134OdDIDEB+GHxtYMEQMTjMGEYeGFoomezaC
-    DZGSHFmLXTQKkh8eNQVpZ2afmDQGHaOYSoEyhhcklzVmMpuHnaZmDqiGJbg0
-    qFqvh6UNAwB7VA+OwydEjgujkgrPNhbTI8dFvNgEYcHcHx0lB1kX2IYeA2G6
-    NN0YfkXJ2BsAMuAzHB9cZMk3qoEbRzUACsRCUBK5JxsC3iMiKd8GN088SIyT
-    0RAFSROyeEg38caDiB/+JEgqxsODrZJ1BkT0oHKSmI0ceQxo94HDpg0qsuDk
-    UmRAMgu8OgwQ+uIJgUMVeGXA+IQkzEeHGvD8cIGlDXsLiRjQ+EHroQhea7xY
-    8IQBSgYYDi1IS+OFBCgaDMGVS3fGi5BPJpBaENdQ0EomKGD56IHwO39EXiSC
-    Ysgxor5+Xfgq0qByYUpiXmwuoredB2aYH4gWWda0B7SeNENpEJHC1ghi+pS4
-    AJpIAwWvKPBi+8YEht5EriEqpFfMlhEdkBNpx0HUhwypx5T4IB1MBg/Ws2sn
-    wV3MSQOkzI8fUd48Aw3dOZto71x85hHtHijYv18Gf/3GqCdDCXHNoICBobSo
-    IqBqJLyCoH8JPrLgdh88CKCFD0CGmAiGYPgffwceZh6FC2ohIIklnkhehTNY
-    4CIHHGzgwYw01ujBBhvAqKOLLq5AAk9kuSPkkKO40NB+h1gnypJIIvkBf09a
-    N5QIRz5p5ZJXJpmlIVhOGQA2TmIJZZhKKmmll2BqyWSXWUrZpQtpatlmk1c2
-    KaWRHeTZEJF8SqLDn/hhsOeQgBbqAh6DGqronxeARUIIACH5BAUeAAAALAUA
-    LgAFAAUAAAUM4CeKz/OV5YmqaRkCACH5BAUeAAEALAUALgAKAAUAAAUUICCK
-    z/OdJVCaa7p+7aOWcDvTZwgAIfkEBR4AAQAsCwAuAAkABQAABRPgA4zP95zA
-    eZqoWqqpyqLkZ38hACH5BAUKAAEALAcALgANAA4AAAU7ICA+jwiUJEqeKau+
-    r+vGaTmac63v/GP9HM7GQyx+jsgkkoRUHJ3Qx0cK/VQVTKtWwbVKn9suNunc
-    WkMAIfkEBQoAAAAsBwA3AAcABQAABRGgIHzk842j+Yjlt5KuO8JmCAAh+QQF
-    CgAAACwLADcABwAFAAAFEeAnfN9TjqP5oOWziq05lmUIACH5BAUKAAAALA8A
-    NwAHAAUAAAUPoPCJTymS3yiQj4qOcPmEACH5BAUKAAAALBMANwAHAAUAAAUR
-    oCB+z/MJX2o+I2miKimiawgAIfkEBQoAAAAsFwA3AAcABQAABRGgIHzfY47j
-    Q4qk+aHl+pZmCAAh+QQFCgAAACwbADcABwAFAAAFEaAgfs/zCV9qPiNJouo7
-    ll8IACH5BAUKAAAALB8ANwADAAUAAAUIoCB8o0iWZggAOw==
-EOD
-
-l1.text('* Slow Animation *').start(300)
-l2.text('* Fast Animation *').start(80)
-l3.text('This is a longer scrolling text in a widget that will not show the whole message at once. ').start(150)
-
-limg.destroy_image = true
-limg.image(TkPhotoImage.new(:format=>'GIF', :data=>tclPowerdData)).start(100)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/aniwave.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/aniwave.rb
deleted file mode 100644 (file)
index 8fa14f6..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# animated wave demo (called by 'widget')
-#
-# based on Tcl/Tk8.5a2 widget demos
-
-# destroy toplevel widget for this demo script
-if defined?($aniwave_demo) && $aniwave_demo
-  $aniwave_demo.destroy 
-  $aniwave_demo = nil
-end
-
-# create toplevel widget
-$aniwave_demo = TkToplevel.new {|w|
-  title("Animated Wave Demonstration")
-  iconname("aniwave")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($aniwave_demo).pack(:fill=>:both, :expand=>true)
-
-# create label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text '¤³¤Î¥Ç¥â¤Ç¤Ï¡¢¥é¥¤¥ó¥¢¥¤¥Æ¥à¤¬°ì¤Ä¤À¤±ÉÁ¤«¤ì¤¿¥­¥ã¥ó¥Ð¥¹¥¦¥£¥¸¥§¥Ã¥È¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥¢¥Ë¥á¡¼¥·¥ç¥ó½èÍý¤Ï¡¢¤½¤Î¥é¥¤¥ó¥¢¥¤¥Æ¥à¤ÎºÂɸÃͤòÊѹ¹¤¹¤ë¤³¤È¤Ç¼Â¸½¤·¤Æ¤¤¤Þ¤¹¡£'
-}
-msg.pack('side'=>'top')
-
-# create frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $aniwave_demo
-      $aniwave_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'aniwave'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# animated wave
-class AnimatedWaveDemo
-  def initialize(frame, dir=:left)
-    @direction = dir
-
-    # create canvas widget
-    @c = TkCanvas.new(frame, :width=>300, :height=>200, 
-                      :background=>'black')
-    @c.pack(:padx=>10, :pady=>10, :expand=>true)
-
-    # Creates a coordinates list of a wave. 
-    @waveCoords = []
-    @backupCoords = []
-    n = 0
-    (-10..300).step(5){|n| @waveCoords << [n, 100]; @backupCoords << [n, 100] }
-    n = 305
-    @waveCoords << [n, 0]; @backupCoords << [n, 0]
-    @waveCoords << [n+5, 200]; @backupCoords << [n+5, 200]
-    @coordsLen = @waveCoords.length
-
-    # Create a smoothed line and arrange for its coordinates to be the
-    # contents of the variable waveCoords.
-    @line = TkcLine.new(@c, @waveCoords, 
-                        :width=>1, :fill=>'green', :smooth=>true)
-
-    # Main animation "loop". 
-    # Theoretically 100 frames-per-second (==10ms between frames)
-    @timer = TkTimer.new(10){ basicMotion; reverser }
-
-    # Arrange for the animation loop to stop when the canvas is deleted
-    @c.bindtags_unshift(TkBindTag.new('Destroy'){ @timer.stop })
-  end
-
-  # Basic motion handler. Given what direction the wave is travelling
-  # in, it advances the y coordinates in the coordinate-list one step in
-  # that direction.
-  def basicMotion
-    @backupCoords, @waveCoords = @waveCoords, @backupCoords
-    (0...@coordsLen).each{|idx|
-      if @direction == :left
-        @waveCoords[idx][1] = @backupCoords[(idx+1 == @coordsLen)? 0: idx+1][1]
-      else
-        @waveCoords[idx][1] = @backupCoords[(idx == 0)? -1: idx-1][1]
-      end
-    }
-    @line.coords(@waveCoords)
-  end
-
-  # Oscillation handler. This detects whether to reverse the direction
-  # of the wave by checking to see if the peak of the wave has moved off
-  # the screen (whose size we know already.)
-  def reverser
-    if @waveCoords[0][1] < 10
-      @direction = :right
-    elsif @waveCoords[-1][1] < 10
-      @direction = :left
-    end
-  end
-
-  # animation control
-  def move
-    @timer.start
-  end
-
-  def stop
-    @timer.stop
-  end
-end
-
-# Start the animation processing
-AnimatedWaveDemo.new(base_frame, :left).move
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/arrow.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/arrow.rb
deleted file mode 100644 (file)
index 3c49e67..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# arrowhead widget demo (called by 'widget')
-#
-
-# arrowSetup --
-# This method regenerates all the text and graphics in the canvas
-# window.  It's called when the canvas is initially created, and also
-# whenever any of the parameters of the arrow head are changed
-# interactively.
-#
-# Arguments:
-# c -           Name of the canvas widget.
-
-def arrowSetup(c)
-  v = $demo_arrowInfo
-
-  # Remember the current box, if there is one.
-  tags = c.gettags('current')
-  if tags != []
-    cur = tags.find{|t| t.kind_of?(String) && t =~ /^box[1-3]$/ }
-  else
-    cur = nil
-  end
-
-  # Create the arrow and outline.
-  c.delete('all')
-  TkcLine.new(c, v.x1, v.y, v.x2, v.y, 
-              { 'width'=>10 * v.width, 
-                'arrowshape'=>[10*v.a, 10*v.b, 10*v.c], 
-                'arrow'=>'last' 
-              }.update(v.bigLineStyle) )
-  xtip = v.x2 - 10*v.b
-  deltaY = 10*v.c + 5*v.width
-  TkcLine.new(c, v.x2, v.y, xtip, v.y + deltaY, 
-              v.x2 - 10*v.a, v.y, xtip, v.y - deltaY, v.x2, v.y, 
-              'width'=>2, 'capstyle'=>'round', 'joinstyle'=>'round')
-
-  # Create the boxes for reshaping the line and arrowhead.
-  TkcRectangle.new(c, v.x2-10*v.a-5, v.y-5, v.x2-10*v.a+5, v.y+5, 
-                   {'tags'=>['box1', $arrowTag_box]}.update(v.boxStyle) )
-  TkcRectangle.new(c, xtip-5, v.y-deltaY-5, xtip+5, v.y-deltaY+5, 
-                   {'tags'=>['box2', $arrowTag_box]}.update(v.boxStyle) )
-  TkcRectangle.new(c, v.x1-5, v.y-5*v.width-5, v.x1+5, v.y-5*v.width+5, 
-                   {'tags'=>['box3', $arrowTag_box]}.update(v.boxStyle) )
-  c.itemconfigure cur, v.activeStyle if cur
-
-  # Create three arrows in actual size with the same parameters
-  TkcLine.new(c, v.x2+50, 0, v.x2+50, 1000, 'width'=>2)
-  tmp = v.x2+100
-  TkcLine.new(c, tmp, v.y-125, tmp, v.y-75, 'width'=>v.width, 
-              'arrow'=>'both', 'arrowshape'=>[v.a, v.b, v.c])
-  TkcLine.new(c, tmp-25, v.y, tmp+25, v.y, 'width'=>v.width, 
-              'arrow'=>'both', 'arrowshape'=>[v.a, v.b, v.c])
-  TkcLine.new(c, tmp-25, v.y+75, tmp+25, v.y+125, 'width'=>v.width, 
-              'arrow'=>'both', 'arrowshape'=>[v.a, v.b, v.c])
-
-  # Create a bunch of other arrows and text items showing the 
-  # current dimensions.
-  tmp = v.x2+10
-  TkcLine.new(c, tmp, v.y-5*v.width, tmp, v.y-deltaY, 
-              'arrow'=>'both', 'arrowshape'=>v.smallTips)
-  TkcText.new(c, v.x2+15, v.y-deltaY+5*v.c, 'text'=>v.c, 'anchor'=>'w')
-  tmp = v.x1-10
-  TkcLine.new(c, tmp, v.y-5*v.width, tmp, v.y+5*v.width, 
-              'arrow'=>'both', 'arrowshape'=>v.smallTips)
-  TkcText.new(c, v.x1-15, v.y, 'text'=>v.width, 'anchor'=>'e')
-  tmp = v.y+5*v.width+10*v.c+10
-  TkcLine.new(c, v.x2-10*v.a, tmp, v.x2, tmp, 
-              'arrow'=>'both', 'arrowshape'=>v.smallTips)
-  TkcText.new(c, v.x2-5*v.a, tmp+5, 'text'=>v.a, 'anchor'=>'n')
-  tmp = tmp+25
-  TkcLine.new(c, v.x2-10*v.b, tmp, v.x2, tmp, 
-              'arrow'=>'both', 'arrowshape'=>v.smallTips)
-  TkcText.new(c, v.x2-5*v.b, tmp+5, 'text'=>v.b, 'anchor'=>'n')
-
-  if $tk_version =~ /^4.*/
-    TkcText.new(c, v.x1, 310, 'text'=>"'width'=>#{v.width}", 'anchor'=>'w', 
-                'font'=>'-*-Helvetica-Medium-R-Normal--*-180-*-*-*-*-*-*')
-    TkcText.new(c, v.x1, 330, 
-                'text'=>"'arrowshape'=>[#{v.a}, #{v.b}, #{v.c}]",'anchor'=>'w',
-                'font'=>'-*-Helvetica-Medium-R-Normal--*-180-*-*-*-*-*-*')
-  else
-    TkcText.new(c, v.x1, 310, 'text'=>"'width'=>#{v.width}", 'anchor'=>'w', 
-                'font'=>'Helvetica 18')
-    TkcText.new(c, v.x1, 330, 
-                'text'=>"'arrowshape'=>[#{v.a}, #{v.b}, #{v.c}]",
-                'anchor'=>'w', 'font'=>'Helvetica 18')
-  end
-
-  v.count += 1
-end
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($arrow_demo) && $arrow_demo
-  $arrow_demo.destroy 
-  $arrow_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$arrow_demo = TkToplevel.new {|w|
-  title("Arrowhead Editor Demonstration")
-  iconname("arrow")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($arrow_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'5i', 'justify'=>'left', 
-            'text'=>"¤³¤Î widget ¤Ç¡¢¥­¥ã¥ó¥Ð¥¹¤Ç»È¤ï¤ì¤ë¥é¥¤¥ó¤Ë¤Ä¤¤¤ÆÍÍ¡¹¤ÊÉý¤äÌð°õ¤ÎƬ¤Î·Á¤ò»î¤·¤Æ¤ß¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Àþ¤ÎÉý¤äÌð°õ¤Î·Á¤òÊѤ¨¤ë¤Ë¤Ï¡¢³ÈÂ礵¤ì¤¿Ìð°õ¤Ë¤Ä¤¤¤Æ¤¤¤ë 3¤Ä¤Î»Í³Ñ¤ò¥É¥é¥Ã¥°¤·¤Æ¤¯¤À¤µ¤¤¡£±¦Â¦¤ÎÌð°õ¤ÏÉáÄ̤ÎÂ礭¤µ¤Ç¤Î¥µ¥ó¥×¥ë¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£²¼¤Î¥Æ¥­¥¹¥È¤Ï¥é¥¤¥ó¥¢¥¤¥Æ¥à¤ËÂФ¹¤ëÀßÄꥪ¥×¥·¥ç¥ó¤Ç¤¹¡£"){
-  pack('side'=>'top')
-}
-
-# frame À¸À®
-$arrow_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $arrow_demo
-      $arrow_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'arrow'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$arrow_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# canvas ÀßÄê
-$arrow_canvas = TkCanvas.new(base_frame, 'width'=>500, 'height'=>350, 
-                             'relief'=>'sunken', 'borderwidth'=>2)
-$arrow_canvas.pack('expand'=>'yes', 'fill'=>'both')
-
-# ÃÍÀßÄê
-unless Struct.const_defined?("ArrowInfo")
-  $demo_arrowInfo = Struct.new("ArrowInfo", :a, :b, :c, :width, :motionProc, 
-                               :x1, :x2, :y, :smallTips, :count, 
-                               :bigLineStyle, :boxStyle, :activeStyle).new
-end
-$demo_arrowInfo.a = 8
-$demo_arrowInfo.b = 10
-$demo_arrowInfo.c = 3
-$demo_arrowInfo.width = 2
-$demo_arrowInfo.motionProc = proc{}
-$demo_arrowInfo.x1 = 40
-$demo_arrowInfo.x2 = 350
-$demo_arrowInfo.y = 150
-$demo_arrowInfo.smallTips = [5, 5, 2]
-$demo_arrowInfo.count = 0
-if TkWinfo.depth($arrow_canvas) > 1
-  $demo_arrowInfo.bigLineStyle = {'fill'=>'SkyBlue1'}
-  $demo_arrowInfo.boxStyle = {'fill'=>'', 'outline'=>'black', 'width'=>1}
-  $demo_arrowInfo.activeStyle = {'fill'=>'red', 'outline'=>'black', 'width'=>1}
-else
-  $demo_arrowInfo.bigLineStyle = {'fill'=>'black', 
-    'stipple'=>'@'+[$demo_dir,'..','images','grey.25'].join(File::Separator)}
-  $demo_arrowInfo.boxStyle = {'fill'=>'', 'outline'=>'black', 'width'=>1}
-  $demo_arrowInfo.activeStyle = {'fill'=>'black','outline'=>'black','width'=>1}
-end
-$arrowTag_box = TkcTag.new($arrow_canvas)
-arrowSetup $arrow_canvas
-$arrowTag_box.bind('Enter', proc{$arrow_canvas.itemconfigure('current', $demo_arrowInfo.activeStyle)})
-$arrowTag_box.bind('Leave', proc{$arrow_canvas.itemconfigure('current', $demo_arrowInfo.boxStyle)})
-$arrowTag_box.bind('B1-Enter', proc{})
-$arrowTag_box.bind('B1-Leave', proc{})
-$arrow_canvas.itembind('box1', '1', 
-                       proc{$demo_arrowInfo.motionProc \
-                         = proc{|x,y| arrowMove1 $arrow_canvas, x, y}})
-$arrow_canvas.itembind('box2', '1', 
-                       proc{$demo_arrowInfo.motionProc \
-                         = proc{|x,y| arrowMove2 $arrow_canvas, x, y}})
-$arrow_canvas.itembind('box3', '1', 
-                       proc{$demo_arrowInfo.motionProc \
-                         = proc{|x,y| arrowMove3 $arrow_canvas, x, y}})
-$arrowTag_box.bind('B1-Motion', 
-                  proc{|x,y| $demo_arrowInfo.motionProc.call(x,y)}, "%x %y")
-$arrow_canvas.bind('Any-ButtonRelease-1', proc{arrowSetup $arrow_canvas})
-
-# arrowMove1 --
-# This method is called for each mouse motion event on box1 (the
-# one at the vertex of the arrow).  It updates the controlling parameters
-# for the line and arrowhead.
-#
-# Arguments:
-# c -           The name of the canvas window.
-# x, y -        The coordinates of the mouse.
-
-def arrowMove1(c,x,y)
-  v = $demo_arrowInfo
-  newA = (v.x2+5-c.canvasx(x).round)/10
-  newA = 0 if newA < 0
-  newA = 25 if newA > 25
-  if newA != v.a
-    c.move('box1', 10*(v.a-newA), 0)
-    v.a = newA
-  end
-end
-
-# arrowMove2 --
-# This method is called for each mouse motion event on box2 (the
-# one at the trailing tip of the arrowhead).  It updates the controlling
-# parameters for the line and arrowhead.
-#
-# Arguments:
-# c -           The name of the canvas window.
-# x, y -        The coordinates of the mouse.
-
-def arrowMove2(c,x,y)
-  v = $demo_arrowInfo
-  newB = (v.x2+5-c.canvasx(x).round)/10
-  newB = 0 if newB < 0
-  newB = 25 if newB > 25
-  newC = (v.y+5-c.canvasy(y).round-5*v.width)/10
-  newC = 0 if newC < 0
-  newC = 20 if newC > 20
-  if newB != v.b || newC != v.c
-    c.move('box2', 10*(v.b-newB), 10*(v.c-newC))
-    v.b = newB
-    v.c = newC
-  end
-end
-
-# arrowMove3 --
-# This method is called for each mouse motion event on box3 (the
-# one that controls the thickness of the line).  It updates the
-# controlling parameters for the line and arrowhead.
-#
-# Arguments:
-# c -           The name of the canvas window.
-# x, y -        The coordinates of the mouse.
-
-def arrowMove3(c,x,y)
-  v = $demo_arrowInfo
-  newWidth = (v.y+2-c.canvasy(y).round)/5
-  newWidth = 0 if newWidth < 0
-  newWidth = 20 if newWidth > 20
-  if newWidth != v.width
-    c.move('box3', 0, 5*(v.width-newWidth))
-    v.width = newWidth
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/bind.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/bind.rb
deleted file mode 100644 (file)
index a1bcfdd..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# text (tag bindings) widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($bind_demo) && $bind_demo
-  $bind_demo.destroy 
-  $bind_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$bind_demo = TkToplevel.new {|w|
-  title("Text Demonstration - Tag Bindings")
-  iconname("bind")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($bind_demo).pack(:fill=>:both, :expand=>true)
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $bind_demo
-      $bind_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'bind'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# bind Íѥ᥽¥Ã¥É
-def tag_binding_for_bind_demo(tag, enter_style, leave_style)
-  tag.bind('Any-Enter', proc{tag.configure enter_style})
-  tag.bind('Any-Leave', proc{tag.configure leave_style})
-end
-
-# text À¸À®
-txt = TkText.new(base_frame){|t|
-  # À¸À®
-  setgrid 'true'
-  #width  60
-  #height 24
-  font $font
-  wrap 'word'
-  TkScrollbar.new(base_frame) {|s|
-    pack('side'=>'right', 'fill'=>'y')
-    command proc{|*args| t.yview(*args)}
-    t.yscrollcommand proc{|first,last| s.set first,last}
-  }
-  pack('expand'=>'yes', 'fill'=>'both')
-
-  # ¥¹¥¿¥¤¥ëÀßÄê
-  if TkWinfo.depth($root).to_i > 1
-    tagstyle_bold = {'background'=>'#43ce80', 'relief'=>'raised', 
-                     'borderwidth'=>1}
-    tagstyle_normal = {'background'=>'', 'relief'=>'flat'}
-  else
-    tagstyle_bold = {'foreground'=>'white', 'background'=>'black'}
-    tagstyle_normal = {'foreground'=>'', 'background'=>''}
-  end
-
-  # ¥Æ¥­¥¹¥ÈÁÞÆþ
-  insert 'insert', "¥Æ¥­¥¹¥Èwidget¤Îɽ¼¨¥¹¥¿¥¤¥ë¤òÀ©¸æ¤¹¤ë¤Î¤ÈƱ¤¸¥¿¥°¤Î¥á¥«¥Ë¥º¥à¤ò»È¤Ã¤Æ¡¢¥Æ¥­¥¹¥È¤ËTcl¤Î¥³¥Þ¥ó¥É¤ò³ä¤êÅö¤Æ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥Þ¥¦¥¹¤ä¥­¡¼¥Ü¡¼¥É¤Î¥¢¥¯¥·¥ç¥ó¤ÇÆÃÄê¤ÎTcl¤Î¥³¥Þ¥ó¥É¤¬¼Â¹Ô¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£Î㤨¤Ð¡¢²¼¤Î¥­¥ã¥ó¥Ð¥¹¤Î¥Ç¥â¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤Æ¤ÎÀâÌÀʸ¤Ë¤Ï¤½¤Î¤è¤¦¤Ê¥¿¥°¤¬¤Ä¤¤¤Æ¤¤¤Þ¤¹¡£¥Þ¥¦¥¹¤òÀâÌÀʸ¤Î¾å¤Ë»ý¤Ã¤Æ¤¤¤¯¤ÈÀâÌÀʸ¤¬¸÷¤ê¡¢¥Ü¥¿¥ó1¤ò²¡¤¹¤È¤½¤ÎÀâÌÀ¤Î¥Ç¥â¤¬»Ï¤Þ¤ê¤Þ¤¹¡£
-
-"
-  insert('end', '1. ¥­¥ã¥ó¥Ð¥¹ widget ¤Ëºî¤ë¤³¤È¤Î¤Ç¤­¤ë¥¢¥¤¥Æ¥à¤Î¼ïÎàÁ´¤Æ¤Ë´Ø¤¹¤ë¥µ¥ó¥×¥ë¡£', (d1 = TkTextTag.new(t)) )
-  insert('end', "\n\n")
-  insert('end', '2. ´Êñ¤Ê 2¼¡¸µ¤Î¥×¥í¥Ã¥È¡£¥Ç¡¼¥¿¤òɽ¤¹ÅÀ¤òÆ°¤«¤¹¤³¤È¤¬¤Ç¤­¤ë¡£', (d2 = TkTextTag.new(t)) )
-  insert('end', "\n\n")
-  insert('end', '3. ¥Æ¥­¥¹¥È¥¢¥¤¥Æ¥à¤Î¥¢¥ó¥«¡¼¤È¹Ô·¤¨¡£', 
-         (d3 = TkTextTag.new(t)) )
-  insert('end', "\n\n")
-  insert('end', '4. ¥é¥¤¥ó¥¢¥¤¥Æ¥à¤Î¤¿¤á¤ÎÌð°õ¤ÎƬ¤Î·Á¤Î¥¨¥Ç¥£¥¿¡£', 
-         (d4 = TkTextTag.new(t)) )
-  insert('end', "\n\n")
-  insert('end', '5. ¥¿¥Ö¥¹¥È¥Ã¥×¤òÊѹ¹¤¹¤ë¤¿¤á¤Îµ¡Ç½¤Ä¤­¤Î¥ë¡¼¥é¡¼¡£', 
-         (d5 = TkTextTag.new(t)) )
-  insert('end', "\n\n")
-  insert('end', 
-         '6. ¥­¥ã¥ó¥Ð¥¹¤¬¤É¤¦¤ä¤Ã¤Æ¥¹¥¯¥í¡¼¥ë¤¹¤ë¤Î¤«¤ò¼¨¤¹¥°¥ê¥Ã¥É¡£', 
-         (d6 = TkTextTag.new(t)) )
-
-  # binding
-  [d1, d2, d3, d4, d5, d6].each{|tag|
-    tag_binding_for_bind_demo(tag, tagstyle_bold, tagstyle_normal)
-  }
-  d1.bind('1', 
-          proc{
-            eval_samplecode(`cat #{[$demo_dir,'items.rb'].join(File::Separator)}`, 'items.rb')
-          })
-  d2.bind('1', 
-          proc{
-            eval_samplecode(`cat #{[$demo_dir,'plot.rb'].join(File::Separator)}`, 'plot.rb')
-          })
-  d3.bind('1', 
-          proc{
-            eval_samplecode(`cat #{[$demo_dir,'ctext.rb'].join(File::Separator)}`, 'ctext.rb')
-          })
-  d4.bind('1', 
-          proc{
-            eval_samplecode(`cat #{[$demo_dir,'arrow.rb'].join(File::Separator)}`, 'arrow.rb')
-          })
-  d5.bind('1', 
-          proc{
-            eval_samplecode(`cat #{[$demo_dir,'ruler.rb'].join(File::Separator)}`, 'ruler.rb')
-          })
-  d6.bind('1', 
-          proc{
-            eval_samplecode(`cat #{[$demo_dir,'cscroll.rb'].join(File::Separator)}`, 'cscroll.rb')
-          })
-
-  TkTextMarkInsert.new(t, '0.0')
-  configure('state','disabled')
-}
-
-txt.width  60
-txt.height 24
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/bitmap.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/bitmap.rb
deleted file mode 100644 (file)
index b6b0e54..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# bitmap widget demo (called by 'widget')
-#
-
-# bitmapRow --
-# Create a row of bitmap items in a window.
-#
-# Arguments:
-# w -           The parent window that is to contain the row.
-# args -        The names of one or more bitmaps, which will be displayed
-#               in a new row across the bottom of w along with their
-#               names.
-
-def bitmapRow(w,*args)
-  TkFrame.new(w){|row|
-    pack('side'=>'top', 'fill'=>'both')
-    for bitmap in args 
-      TkFrame.new(row){|base|
-        pack('side'=>'left', 'fill'=>'both', 'pady'=>'.25c', 'padx'=>'.25c')
-        TkLabel.new(base, 'text'=>bitmap, 'width'=>9).pack('side'=>'bottom')
-        Tk::Label.new(base, 'bitmap'=>bitmap).pack('side'=>'bottom')
-      }
-    end
-  }
-end
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($bitmap_demo) && $bitmap_demo
-  $bitmap_demo.destroy 
-  $bitmap_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$bitmap_demo = TkToplevel.new {|w|
-  title("Bitmap Demonstration")
-  iconname("bitmap")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($bitmap_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left', 
-            'text'=>"¤³¤Î¥¦¥£¥ó¥É¥¦¤Ë¤Ï¡¢Tk ¤ËÁȤ߹þ¤Þ¤ì¤¿¤¹¤Ù¤Æ¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×¤¬¡¢¤½¤ì¤é¤Î̾Á°¤È¶¦¤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Tcl ¤Î¥¹¥¯¥ê¥×¥ÈÃæ¤Ç¤Ï¡¢¤½¤ì¤¾¤ì¤Î̾Á°¤òÍѤ¤¤Æ»²¾È¤·¤Þ¤¹¡£"){
-  pack('side'=>'top')
-}
-
-# frame À¸À®
-$bitmap_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $bitmap_demo
-      $bitmap_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'bitmap'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$bitmap_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame ÀßÄê
-TkFrame.new(base_frame){|f|
-  bitmapRow(f,'error','gray25','gray50','hourglass')
-  bitmapRow(f,'info','question','questhead','warning')
-  pack('side'=>'top', 'expand'=>'yes', 'fill'=>'both')
-}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/browse1 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/browse1
deleted file mode 100644 (file)
index 03e2510..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/env ruby
-
-# browse --
-# This script generates a directory browser, which lists the working 
-# directory and allow you to open files or subdirectories by 
-# double-clicking. 
-
-require 'tk'
-
-# Create a scrollbar on the right side of the main window and a listbox 
-# on the left side.
-
-listbox = TkListbox.new(nil, 'relief'=>'sunken', 
-                       'width'=>20, 'height'=>20, 'setgrid'=>'yes') {|l|
-  TkScrollbar.new(nil, 'command'=>proc{|*args| l.yview *args}) {|s|
-    pack('side'=>'right', 'fill'=>'y')
-    l.yscrollcommand(proc{|first,last| s.set(first,last)})
-  }
-
-  pack('side'=>'left', 'fill'=>'both', 'expand'=>'yes')
-}
-
-root = TkRoot.new
-root.minsize(1,1)
-
-# The procedure below is invoked to open a browser on a given file;  if the 
-# file is a directory then another instance of this program is invoked; if 
-# the file is a regular file then the Mx editor is invoked to display 
-# the file. 
-
-def browse (dir, file)
-  file = dir + File::Separator + file if dir != '.'
-  type = File.ftype(file)
-  if type == 'directory'
-    system($0 + ' ' + file + ' &')
-  else
-    if type == 'file'
-      if ENV['EDITOR']
-       system(ENV['EDITOR'] + ' ' + file + ' &')
-      else
-       system('xedit ' + file + ' &')
-      end
-    else
-      STDOUT.print "\"#{file}\" isn't a directory or regular file"
-    end
-  end
-end
-
-# Fill the listbox with a list of all the files in the directory (run 
-# the "ls" command to get that information).
-
-dir = ARGV[0] ?  ARGV[0] : '.'
-open("|ls -a #{dir}", 'r'){|fid| fid.readlines}.each{|fname|
-  listbox.insert('end', fname.chomp)
-}
-
-# Set up bindings for the browser.
-
-Tk.bind_all('Control-c', proc{root.destroy})
-listbox.bind('Double-Button-1', 
-            proc{TkSelection.get.each{|f| browse dir, f}})
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/browse2 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/browse2
deleted file mode 100644 (file)
index edad04d..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/usr/bin/env ruby
-
-# browse --
-# This script generates a directory browser, which lists the working 
-# directory and allow you to open files or subdirectories by 
-# double-clicking. 
-
-require 'tk'
-
-class Browse
-  BROWSE_WIN_COUNTER = TkVariable.new(0)
-
-  def initialize(dir)
-    BROWSE_WIN_COUNTER.value = BROWSE_WIN_COUNTER.to_i + 1
-
-    # create base frame
-    base = TkToplevel.new {
-      minsize(1,1)
-      title('Browse : ' + dir)
-    }
-
-    # Create a scrollbar on the right side of the main window and a listbox 
-    # on the left side.
-    list = TkListbox.new(base, 'relief'=>'sunken', 
-                        'width'=>20, 'height'=>20, 'setgrid'=>'yes') {|l|
-      TkScrollbar.new(base, 'command'=>proc{|*args| l.yview *args}) {|s|
-       pack('side'=>'right', 'fill'=>'y')
-       l.yscrollcommand(proc{|first,last| s.set(first,last)})
-      }
-
-      pack('side'=>'left', 'fill'=>'both', 'expand'=>'yes')
-
-      # Fill the listbox with a list of all the files in the directory (run 
-      # the "ls" command to get that information).
-      open("|ls -a #{dir}", 'r'){|fid| fid.readlines}.each{|fname|
-       l.insert('end', fname.chomp)
-      }
-
-    }
-
-    # Set up bindings for the browser.
-    base.bind('Destroy', proc{
-               Browse::BROWSE_WIN_COUNTER.value = \
-                               Browse::BROWSE_WIN_COUNTER.to_i - 1
-             })
-    base.bind('Control-c', proc{base.destroy})
-    list.bind('Double-Button-1', 
-        proc{TkSelection.get.each{|f| self.browse dir, f}})
-  end
-
-  # The method below is invoked to open a browser on a given file;  if the 
-  # file is a directory then another instance of this program is invoked; if 
-  # the file is a regular file then the Mx editor is invoked to display 
-  # the file. 
-  def browse (dir, file)
-    file = dir + File::Separator + file if dir != '.'
-    type = File.ftype(file)
-    if type == 'directory'
-      Browse.new(file)
-    else
-      if type == 'file'
-       if ENV['EDITOR']
-         system(ENV['EDITOR'] + ' ' + file + ' &')
-       else
-         system('xedit ' + file + ' &')
-       end
-      else
-       STDOUT.print "\"#{file}\" isn't a directory or regular file"
-      end
-    end
-  end
-
-end
-
-Browse.new(ARGV[0] ? ARGV[0] : '.')
-
-TkRoot.new {
-  withdraw
-  Browse::BROWSE_WIN_COUNTER.trace('w', proc{exit if Browse::BROWSE_WIN_COUNTER.to_i == 0})
-}
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/button.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/button.rb
deleted file mode 100644 (file)
index 18e4200..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# button widget demo (called by 'widget')
-#
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($button_demo) && $button_demo
-  $button_demo.destroy 
-  $button_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$button_demo = TkToplevel.new {|w|
-  title("Button Demonstration")
-  iconname("button")
-  positionWindow(w)
-}
-
-# label À¸À®
-msg = TkLabel.new($button_demo) {
-  font $kanji_font
-  wraplength '4i'
-  justify 'left'
-  text "¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¥Ü¥¿¥ó¤ÎÇØ·Ê¿§¤¬¤½¤Î¥Ü¥¿¥ó¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¿§¤Ë¤Ê¤ê¤Þ¤¹¡£¥Ü¥¿¥ó¤«¤é¥Ü¥¿¥ó¤Ø¤Î°ÜÆ°¤Ï¥¿¥Ö¤ò²¡¤¹¤³¤È¤Ç¤â²Äǽ¤Ç¤¹¡£¤Þ¤¿¥¹¥Ú¡¼¥¹¤Ç¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£"
-}
-msg.pack('side'=>'top')
-
-# frame À¸À®
-$button_buttons = Tk::Frame.new($button_demo) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $button_demo
-      $button_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'button'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# button À¸À®
-TkButton.new($button_demo){
-  text "Peach Puff"
-  width 10
-  command proc{
-    $button_demo.configure('bg','PeachPuff1')
-    $button_buttons.configure('bg','PeachPuff1')
-  }
-}.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2)
-
-TkButton.new($button_demo){
-  text "Light Blue"
-  width 10
-  command proc{
-    $button_demo.configure('bg','LightBlue1')
-    $button_buttons.configure('bg','LightBlue1')
-  }
-}.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2)
-
-TkButton.new($button_demo){
-  text "Sea Green"
-  width 10
-  command proc{
-    $button_demo.configure('bg','SeaGreen2')
-    $button_buttons.configure('bg','SeaGreen2')
-  }
-}.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2)
-
-TkButton.new($button_demo){
-  text "Yellow"
-  width 10
-  command proc{
-    $button_demo.configure('bg','Yellow1')
-    $button_buttons.configure('bg','Yellow1')
-  }
-}.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/check.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/check.rb
deleted file mode 100644 (file)
index b953e7f..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# checkbutton widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($check_demo) && $check_demo
-  $check_demo.destroy 
-  $check_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$check_demo = TkToplevel.new {|w|
-  title("Checkbutton Demonstration")
-  iconname("check")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($check_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "²¼¤Ë¤Ï 3 ¤Ä¤Î¥Á¥§¥Ã¥¯¥Ü¥¿¥ó¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥¯¥ê¥Ã¥¯¤¹¤ë¤È¥Ü¥¿¥ó¤ÎÁªÂò¾õÂÖ¤¬ÊѤï¤ê¡¢Tcl ÊÑ¿ô ( TkVariable ¥ª¥Ö¥¸¥§¥¯¥È¤Ç¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤¹ ) ¤Ë¤½¤Î¥Ü¥¿¥ó¤Î¾õÂÖ¤ò¼¨¤¹ÃͤòÀßÄꤷ¤Þ¤¹¡£¸½ºß¤ÎÊÑ¿ô¤ÎÃͤò¸«¤ë¤Ë¤Ï¡ÖÊÑ¿ô»²¾È¡×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£"
-}
-msg.pack('side'=>'top')
-
-# ÊÑ¿ôÀ¸À®
-wipers = TkVariable.new(0)
-brakes = TkVariable.new(0)
-sober  = TkVariable.new(0)
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $check_demo
-      $check_demo = nil
-      $showVarsWin[tmppath.path] = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'check'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-
-  TkButton.new(frame) {
-    text 'ÊÑ¿ô»²¾È'
-    command proc{
-      showVars(base_frame, 
-               ['wipers', wipers], ['brakes', brakes], ['sober', sober])
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-
-# checkbutton À¸À®
-[ TkCheckButton.new(base_frame, 'text'=>'¥ï¥¤¥Ñ¡¼ OK', 'variable'=>wipers),
-  TkCheckButton.new(base_frame, 'text'=>'¥Ö¥ì¡¼¥­ OK', 'variable'=>brakes),
-  TkCheckButton.new(base_frame, 'text'=>'±¿Å¾¼ê ÁÇÌÌ', 'variable'=>sober)
-].each{|w| w.relief('flat'); w.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w')}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/check2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/check2.rb
deleted file mode 100644 (file)
index 7f7cb9e..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# checkbutton widget demo2 (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($check2_demo) && $check2_demo
-  $check2_demo.destroy 
-  $check2_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$check2_demo = TkToplevel.new {|w|
-  title("Checkbutton Demonstration 2")
-  iconname("check2")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($check2_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "²¼¤Ë¤Ï£´¤Ä¤Î¥Á¥§¥Ã¥¯¥Ü¥¿¥ó¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥¯¥ê¥Ã¥¯¤¹¤ë¤È¥Ü¥¿¥ó¤ÎÁªÂò¾õÂÖ¤¬ÊѤï¤ê¡¢TclÊÑ¿ô¡ÊTkVariable¥ª¥Ö¥¸¥§¥¯¥È¤Ç¥¢¥¯¥»¥¹¤Ç¤­¤Þ¤¹¡Ë¤Ë¤½¤Î¥Ü¥¿¥ó¤Î¾õÂÖ¤ò¼¨¤¹ÃͤòÀßÄꤷ¤Þ¤¹¡£ºÇ½é¤Î¥Ü¥¿¥ó¤Î¾õÂ֤Ͼ¤Î£³¤Ä¤Î¥Ü¥¿¥ó¤Î¾õÂ֤ˤâ°Í¸¤·¤ÆÊѲ½¤·¤Þ¤¹¡£¤â¤·£³¤Ä¤Î¥Ü¥¿¥ó¤Î°ìÉô¤À¤±¤Ë¥Á¥§¥Ã¥¯¤¬ÉÕ¤±¤é¤ì¤Æ¤¤¤ë¾ì¹ç¡¢ºÇ½é¤Î¥Ü¥¿¥ó¤Ï¥È¥é¥¤¥¹¥Æ¡¼¥È¡Ê£³¾õÂ֡˥⡼¥É¤Ç¤Îɽ¼¨¤ò¹Ô¤¤¤Þ¤¹¡£¸½ºß¤ÎÊÑ¿ô¤ÎÃͤò¸«¤ë¤Ë¤Ï¡ÖÊÑ¿ô»²¾È¡×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£"
-}
-msg.pack('side'=>'top')
-
-# ÊÑ¿ôÀ¸À®
-safety = TkVariable.new(0)
-wipers = TkVariable.new(0)
-brakes = TkVariable.new(0)
-sober  = TkVariable.new(0)
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkGrid(TkFrame.new(frame, :height=>2, :relief=>:sunken, :bd=>2), 
-         :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         TkButton.new(frame, :text=>'ÊÑ¿ô»²¾È', 
-                      :image=>$image['view'], :compound=>:left, 
-                      :command=>proc{
-                        showVars($check2_demo, 
-                                 ['safety', safety], ['wipers', wipers], 
-                                 ['brakes', brakes], ['sober', sober])
-                      }), 
-         TkButton.new(frame, :text=>'¥³¡¼¥É»²¾È', 
-                      :image=>$image['view'], :compound=>:left, 
-                      :command=>proc{showCode 'check2'}), 
-         TkButton.new(frame, :text=>'ÊĤ¸¤ë', 
-                      :image=>$image['delete'], :compound=>:left, 
-                      :command=>proc{
-                        tmppath = $check2_demo
-                        $check2_demo = nil
-                        $showVarsWin[tmppath.path] = nil
-                        tmppath.destroy
-                      }), 
-         :padx=>4, :pady=>4)
-  frame.grid_columnconfigure(0, :weight=>1)
-}.pack('side'=>'bottom', 'fill'=>'x')
-
-
-# checkbutton À¸À®
-TkCheckButton.new(base_frame, :text=>'°ÂÁ´À­¸¡ºº', :variable=>safety, 
-                  :relief=>:flat, :onvalue=>'all', :offvalue=>'none', 
-                  :tristatevalue=>'partial'){
-  pack('side'=>'top', 'pady'=>2, 'anchor'=>'w')
-}
-
-[ TkCheckButton.new(base_frame, 'text'=>'¥ï¥¤¥Ñ¡¼ OK', 'variable'=>wipers),
-  TkCheckButton.new(base_frame, 'text'=>'¥Ö¥ì¡¼¥­ OK', 'variable'=>brakes),
-  TkCheckButton.new(base_frame, 'text'=>'±¿Å¾¼ê ÁÇÌÌ', 'variable'=>sober)
-].each{|w| 
-  w.relief('flat')
-  w.pack('side'=>'top', 'padx'=>15, 'pady'=>2, 'anchor'=>'w')
-}
-
-# tristate check
-in_check = false
-tristate_check = proc{|n1,n2,op|
-  unless in_check
-    in_check = true
-    begin
-      if n1 == safety
-        if safety == 'none'
-          wipers.value = 0
-          brakes.value = 0
-          sober.value  = 0
-        elsif safety == 'all'
-          wipers.value = 1
-          brakes.value = 1
-          sober.value  = 1
-        end
-      else
-        if wipers == 1 && brakes == 1 && sober == 1
-          safety.value = 'all'
-        elsif wipers == 1 || brakes == 1 || sober == 1
-          safety.value = 'partial'
-        else
-          safety.value = 'none'
-        end
-      end
-    ensure
-      in_check = false
-    end
-  end
-}
-
-[wipers, brakes, sober, safety].each{|v| v.trace('w', tristate_check)}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/clrpick.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/clrpick.rb
deleted file mode 100644 (file)
index ce6b99a..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# widget demo prompts the user to select a color (called by 'widget')
-#
-#  Note: don't support ttk_wrapper. work with standard widgets only.
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($clrpick_demo) && $clrpick_demo
-  $clrpick_demo.destroy 
-  $clrpick_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$clrpick_demo = TkToplevel.new {|w|
-  title("Color Selection Dialogs")
-  iconname("colors")
-  positionWindow(w)
-}
-
-# label À¸À®
-#TkLabel.new($clrpick_demo,'font'=>$font,'wraplength'=>'4i','justify'=>'left',
-Tk::Label.new($clrpick_demo,'font'=>$font,'wraplength'=>'4i','justify'=>'left',
-            'text'=>"°Ê²¼¤Î¥Ü¥¿¥ó¤ò²¡¤·¤Æ¡¢¤³¤Î¥¦¥£¥ó¥É¥¦¾å¤Ë¤¢¤ë¥¦¥£¥¸¥§¥Ã¥È¤ÎÁ°·Ê¿§¤ÈÇØ·Ê¿§¤òÁªÂò¤·¤Æ²¼¤µ¤¤¡£").pack('side'=>'top')
-
-# frame À¸À®
-# TkFrame.new($clrpick_demo) {|frame|
-Tk::Frame.new($clrpick_demo) {|frame|
-  # TkButton.new(frame) {
-  Tk::Button.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $clrpick_demo
-      $clrpick_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  # TkButton.new(frame) {
-  Tk::Button.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'clrpick'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# button À¸À®
-# TkButton.new($clrpick_demo, 'text'=>'ÇØ·Ê¿§¤òÀßÄê ...') {|b|
-Tk::Button.new($clrpick_demo, 'text'=>'ÇØ·Ê¿§¤òÀßÄê ...') {|b|
-  command(proc{setColor $clrpick_demo, b, 'background', 
-              ['background', 'highlightbackground']})
-  pack('side'=>'top', 'anchor'=>'c', 'pady'=>'2m')
-}
-
-# TkButton.new($clrpick_demo, 'text'=>'Á°·Ê¿§¤òÀßÄê ...') {|b|
-Tk::Button.new($clrpick_demo, 'text'=>'Á°·Ê¿§¤òÀßÄê ...') {|b|
-  command(proc{setColor $clrpick_demo, b, 'foreground', ['foreground']})
-  pack('side'=>'top', 'anchor'=>'c', 'pady'=>'2m')
-}
-
-def setColor(w,button,name,options)
-  w.grab
-  initialColor = button[name]
-  color = Tk.chooseColor('title'=>"Choose a #{name} color", 'parent'=>w, 
-                         'initialcolor'=>initialColor)
-  if color != ""
-    setColor_helper(w,options,color)
-  end
-
-  w.grab('release')
-end
-
-def setColor_helper(w, options, color)
-  options.each{|opt|
-    begin
-      w[opt] = color
-    rescue
-    end
-  }
-  TkWinfo.children(w).each{|child|
-    setColor_helper child, options, color
-  }
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/colors.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/colors.rb
deleted file mode 100644 (file)
index 91817a9..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# listbox widget demo 'colors' (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($colors_demo) && $colors_demo
-  $colors_demo.destroy 
-  $colors_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$colors_demo = TkToplevel.new {|w|
-  title("Listbox Demonstration (colors)")
-  iconname("colors")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($colors_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "²¼¤Ë¤Ï¿§¤Î̾Á°¤¬Æþ¤Ã¤¿¥¹¥¯¥í¡¼¥ë¥Ð¡¼ÉդΥꥹ¥È¥Ü¥Ã¥¯¥¹¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥ê¥¹¥È¤ò¥¹¥¯¥í¡¼¥ë¤µ¤»¤ë¤Î¤Ï¥¹¥¯¥í¡¼¥ë¥Ð¡¼¤Ç¤â¤Ç¤­¤Þ¤¹¤·¡¢¥ê¥¹¥È¥Ü¥Ã¥¯¥¹¤ÎÃæ¤Ç¥Þ¥¦¥¹¤Î¥Ü¥¿¥ó2(Ãæ¥Ü¥¿¥ó)¤ò²¡¤·¤¿¤Þ¤Þ¥É¥é¥Ã¥°¤·¤Æ¤â¤Ç¤­¤Þ¤¹¡£¤¢¤ë¿§¤ò¥Ü¥¿¥ó1(º¸¥Ü¥¿¥ó)¤Ç¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤¹¤ë¤È¥¢¥×¥ê¥±¡¼¥·¥ç¥óÁ´ÂΤ¬¤½¤Î¿§¤Ë¤Ê¤ê¤Þ¤¹¡£"
-}
-msg.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $colors_demo
-      $colors_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'colors'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame À¸À®
-colors_lbox = nil
-TkFrame.new(base_frame, 'borderwidth'=>10) {|w|
-  s = TkScrollbar.new(w)
-  colors_lbox = TkListbox.new(w) {
-    setgrid 1
-    width  10
-    height 12
-    yscrollcommand proc{|first,last| s.set first,last}
-  }
-  s.command(proc{|*args| colors_lbox.yview(*args)})
-  s.pack('side'=>'right', 'fill'=>'y')
-  colors_lbox.pack('side'=>'left', 'expand'=>1, 'fill'=>'both')
-}.pack('side'=>'top', 'expand'=>'yes', 'fill'=>'y')
-
-#colors_lbox.bind('Double-1', proc{TkPalette.setPalette TkSelection.get})
-colors_lbox.bind('Double-1', proc{
-                   begin
-                     TkPalette.setPalette TkSelection.get
-                   rescue => e
-                     p e
-                     Tk.tk_call_without_enc('destroy', '.___tk_set_palette')
-                   end
-                   })
-
-ins_data = [
-  'gray60','gray70','gray80','gray85','gray90','gray95',
-  'snow1','snow2','snow3','snow4','seashell1','seashell2',
-  'seashell3','seashell4','AntiqueWhite1','AntiqueWhite2',
-  'AntiqueWhite3','AntiqueWhite4','bisque1','bisque2',
-  'bisque3','bisque4','PeachPuff1','PeachPuff2',
-  'PeachPuff3','PeachPuff4','NavajoWhite1','NavajoWhite2',
-  'NavajoWhite3','NavajoWhite4','LemonChiffon1',
-  'LemonChiffon2','LemonChiffon3','LemonChiffon4',
-  'cornsilk1','cornsilk2','cornsilk3','cornsilk4',
-  'ivory1','ivory2','ivory3','ivory4','honeydew1',
-  'honeydew2','honeydew3','honeydew4','LavenderBlush1',
-  'LavenderBlush2','LavenderBlush3','LavenderBlush4',
-  'MistyRose1','MistyRose2','MistyRose3','MistyRose4',
-  'azure1','azure2','azure3','azure4','SlateBlue1',
-  'SlateBlue2','SlateBlue3','SlateBlue4','RoyalBlue1',
-  'RoyalBlue2','RoyalBlue3','RoyalBlue4','blue1','blue2',
-  'blue3','blue4','DodgerBlue1','DodgerBlue2',
-  'DodgerBlue3','DodgerBlue4','SteelBlue1','SteelBlue2',
-  'SteelBlue3','SteelBlue4','DeepSkyBlue1','DeepSkyBlue2',
-  'DeepSkyBlue3','DeepSkyBlue4','SkyBlue1','SkyBlue2',
-  'SkyBlue3','SkyBlue4','LightSkyBlue1','LightSkyBlue2',
-  'LightSkyBlue3','LightSkyBlue4','SlateGray1',
-  'SlateGray2','SlateGray3','SlateGray4',
-  'LightSteelBlue1','LightSteelBlue2','LightSteelBlue3',
-  'LightSteelBlue4','LightBlue1','LightBlue2',
-  'LightBlue3','LightBlue4','LightCyan1','LightCyan2',
-  'LightCyan3','LightCyan4','PaleTurquoise1',
-  'PaleTurquoise2','PaleTurquoise3','PaleTurquoise4',
-  'CadetBlue1','CadetBlue2','CadetBlue3','CadetBlue4',
-  'turquoise1','turquoise2','turquoise3','turquoise4',
-  'cyan1','cyan2','cyan3','cyan4','DarkSlateGray1',
-  'DarkSlateGray2','DarkSlateGray3','DarkSlateGray4',
-  'aquamarine1','aquamarine2','aquamarine3','aquamarine4',
-  'DarkSeaGreen1','DarkSeaGreen2','DarkSeaGreen3',
-  'DarkSeaGreen4','SeaGreen1','SeaGreen2','SeaGreen3',
-  'SeaGreen4','PaleGreen1','PaleGreen2','PaleGreen3',
-  'PaleGreen4','SpringGreen1','SpringGreen2',
-  'SpringGreen3','SpringGreen4','green1','green2',
-  'green3','green4','chartreuse1','chartreuse2',
-  'chartreuse3','chartreuse4','OliveDrab1','OliveDrab2',
-  'OliveDrab3','OliveDrab4','DarkOliveGreen1',
-  'DarkOliveGreen2','DarkOliveGreen3','DarkOliveGreen4',
-  'khaki1','khaki2','khaki3','khaki4','LightGoldenrod1',
-  'LightGoldenrod2','LightGoldenrod3','LightGoldenrod4',
-  'LightYellow1','LightYellow2','LightYellow3',
-  'LightYellow4','yellow1','yellow2','yellow3','yellow4',
-  'gold1','gold2','gold3','gold4','goldenrod1',
-  'goldenrod2','goldenrod3','goldenrod4','DarkGoldenrod1',
-  'DarkGoldenrod2','DarkGoldenrod3','DarkGoldenrod4',
-  'RosyBrown1','RosyBrown2','RosyBrown3','RosyBrown4',
-  'IndianRed1','IndianRed2','IndianRed3','IndianRed4',
-  'sienna1','sienna2','sienna3','sienna4','burlywood1',
-  'burlywood2','burlywood3','burlywood4','wheat1',
-  'wheat2','wheat3','wheat4','tan1','tan2','tan3','tan4',
-  'chocolate1','chocolate2','chocolate3','chocolate4',
-  'firebrick1','firebrick2','firebrick3','firebrick4',
-  'brown1','brown2','brown3','brown4','salmon1','salmon2',
-  'salmon3','salmon4','LightSalmon1','LightSalmon2',
-  'LightSalmon3','LightSalmon4','orange1','orange2',
-  'orange3','orange4','DarkOrange1','DarkOrange2',
-  'DarkOrange3','DarkOrange4','coral1','coral2','coral3',
-  'coral4','tomato1','tomato2','tomato3','tomato4',
-  'OrangeRed1','OrangeRed2','OrangeRed3','OrangeRed4',
-  'red1','red2','red3','red4','DeepPink1','DeepPink2',
-  'DeepPink3','DeepPink4','HotPink1','HotPink2',
-  'HotPink3','HotPink4','pink1','pink2','pink3','pink4',
-  'LightPink1','LightPink2','LightPink3','LightPink4',
-  'PaleVioletRed1','PaleVioletRed2','PaleVioletRed3',
-  'PaleVioletRed4','maroon1','maroon2','maroon3',
-  'maroon4','VioletRed1','VioletRed2','VioletRed3',
-  'VioletRed4','magenta1','magenta2','magenta3',
-  'magenta4','orchid1','orchid2','orchid3','orchid4',
-  'plum1','plum2','plum3','plum4','MediumOrchid1',
-  'MediumOrchid2','MediumOrchid3','MediumOrchid4',
-  'DarkOrchid1','DarkOrchid2','DarkOrchid3',
-  'DarkOrchid4','purple1','purple2','purple3','purple4',
-  'MediumPurple1','MediumPurple2','MediumPurple3',
-  'MediumPurple4','thistle1','thistle2','thistle3', 'thistle4'
-]
-
-colors_lbox.insert(0, *ins_data)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/combo.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/combo.rb
deleted file mode 100644 (file)
index da00d71..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# combo.rb --
-#
-# This demonstration script creates several combobox widgets.
-#
-# based on "Id: combo.tcl,v 1.3 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($combo_demo) && $combo_demo
-  $combo_demo.destroy 
-  $combo_demo = nil
-end
-
-$combo_demo = TkToplevel.new {|w|
-  title("Combobox Demonstration")
-  iconname("combo")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($combo_demo).pack(:fill=>:both, :expand=>true)
-
-Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'5i', :justify=>:left, 
-               :text=><<EOL).pack(:side=>:top, :fill=>:x)
-°Ê²¼¤Ç¤Ï3¼ïÎà¤Î¥³¥ó¥Ü¥Ü¥Ã¥¯¥¹¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥\
-ºÇ½é¤Î¤â¤Î¤Ï¡¤¥¨¥ó¥È¥ê¥¦¥£¥¸¥§¥Ã¥È¤ÈƱ¤¸Íͤˡ¤\
-¥Ý¥¤¥ó¥È¤·¤¿¤ê¡¤¥¯¥ê¥Ã¥¯¤·¤¿¤ê¡¤¥¿¥¤¥×¤·¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥\
-¤Þ¤¿¡¤Return¥­¡¼¤òÆþÎϤ¹¤ì¤Ð¸½ºß¤ÎÃͤ¬¥ê¥¹¥È¤ËÄɲ䵤졤\
-¥É¥í¥Ã¥×¥À¥¦¥ó¥ê¥¹¥È¤«¤éÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥\
-¢­(²¼¸þ¤­Ìð°õ)¥­¡¼¤ò²¡¤·¤Æɽ¼¨¤µ¤ì¤¿¥ê¥¹¥È¤«¤é\
-Ìð°õ¥­¡¼¤Ç¾¤Î¸õÊä¤òÁª¤ó¤ÇReturn¥­¡¼¤ò²¡¤»¤Ð¡¤ÃͤòÁªÂò¤Ç¤­¤Þ¤¹¡¥\
-2ÈÖÌܤΥ³¥ó¥Ü¥Ü¥Ã¥¯¥¹¤ÏÆÃÄê¤ÎÃͤ˸ÇÄꤵ¤ì¤Æ¤ª¤ê¡¤°ìÀÚÊѹ¹¤Ç¤­¤Þ¤»¤ó¡¥\
-3ÈÖÌܤΤâ¤Î¤Ï¥ª¡¼¥¹¥È¥é¥ê¥¢¤ÎÅԻԤΥɥí¥Ã¥×¥À¥¦¥ó¥ê¥¹¥È¤«¤é\
-ÁªÂò¤¹¤ë¤³¤È¤À¤±¤¬²Äǽ¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥
-EOL
-
-## variables
-firstValue  = TkVariable.new
-secondValue = TkVariable.new
-ozCity      = TkVariable.new
-
-## See Code / Dismiss buttons
-Ttk::Frame.new(base_frame) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'ÊÑ¿ô»²¾È', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{
-                           showVars(base_frame, 
-                                    ['firstVariable', firstValue], 
-                                    ['secondVariable', secondValue], 
-                                    ['ozCity', ozCity])
-                         }), 
-         Ttk::Button.new(frame, :text=>'¥³¡¼¥É»²¾È', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'combo'}), 
-         Ttk::Button.new(frame, :text=>'ÊĤ¸¤ë', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $combo_demo.destroy
-                           $combo_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x)
-}
-
-frame = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
-
-australianCities = [
-  '¥­¥ã¥ó¥Ù¥é', '¥·¥É¥Ë¡¼', '¥á¥ë¥Ü¥ë¥ó', '¥Ñ¡¼¥¹', '¥¢¥Ç¥ì¡¼¥É', 
-  '¥Ö¥ê¥¹¥Ù¡¼¥ó', '¥Û¥Ð¡¼¥È', '¥À¡¼¥¦¥£¥ó', '¥¢¥ê¥¹ ¥¹¥×¥ê¥ó¥°¥¹'
-]
-
-
-secondValue.value = 'Êѹ¹ÉÔ²Ä'
-ozCity.value = '¥·¥É¥Ë¡¼'
-
-Tk.pack(Ttk::Labelframe.new(frame, :text=>'Fully Editable'){|f|
-          Ttk::Combobox.new(f, :textvariable=>firstValue){|b|
-            b.bind('Return', '%W'){|w|
-              w.values <<= w.value unless w.values.include?(w.value)
-            }
-          }.pack(:pady=>5, :padx=>10)
-        }, 
-
-        Ttk::LabelFrame.new(frame, :text=>'Disabled'){|f|
-          Ttk::Combobox.new(f, :textvariable=>secondValue, :state=>:disabled) .
-            pack(:pady=>5, :padx=>10)
-        }, 
-
-        Ttk::LabelFrame.new(frame, :text=>'Defined List Only'){|f|
-          Ttk::Combobox.new(f, :textvariable=>ozCity, :state=>:readonly, 
-                            :values=>australianCities) .
-            pack(:pady=>5, :padx=>10)
-        }, 
-
-        :side=>:top, :pady=>5, :padx=>10)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/cscroll.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/cscroll.rb
deleted file mode 100644 (file)
index 8459526..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# simple scrollable canvas widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($cscroll_demo) && $cscroll_demo
-  $cscroll_demo.destroy 
-  $cscroll_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$cscroll_demo = TkToplevel.new {|w|
-  title("Scrollable Canvas Demonstration")
-  iconname("cscroll")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($cscroll_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'4i', 
-            'justify'=>'left', 'text'=>"¤³¤Î¥¦¥£¥ó¥É¥¦¤Ë¤Ï¥¹¥¯¥í¡¼¥ë¥Ð¡¼¤ä¥Þ¥¦¥¹¤Î¥Ü¥¿¥ó2 ¤Ç¥¹¥¯¥í¡¼¥ë¤Ç¤­¤ë¥­¥ã¥ó¥Ð¥¹ widget ¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£»Í³Ñ¤Î¾å¤Ç¥Ü¥¿¥ó1 ¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¤½¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬É¸½à½ÐÎϤ˽ÐÎϤµ¤ì¤Þ¤¹¡£"){
-  pack('side'=>'top')
-}
-
-# frame À¸À®
-$cscroll_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $cscroll_demo
-      $cscroll_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'cscroll'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$cscroll_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame ÀßÄê
-unless $tk_version =~ /^4\.[01]/
-  $cscroll_grid = TkFrame.new(base_frame) {
-    pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>1)
-  }
-  TkGrid.rowconfigure($cscroll_grid, 0, 'weight'=>1, 'minsize'=>0)
-  TkGrid.columnconfigure($cscroll_grid, 0, 'weight'=>1, 'minsize'=>0)
-end
-
-# canvas ÀßÄê
-$cscroll_canvas = TkCanvas.new(base_frame, 
-                               'relief'=>'sunken', 'borderwidth'=>2,
-                               'scrollregion'=>['-11c', '-11c', '50c', '20c']
-                               ) {|c|
-  if $tk_version =~ /^4\.[01]/
-    pack('expand'=>'yes', 'fill'=>'both') 
-  else
-    grid('in'=>$cscroll_grid, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>0, 
-         'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-  end
-
-  TkScrollbar.new(base_frame, 'command'=>proc{|*args| c.yview(*args)}) {|vs|
-    c.yscrollcommand(proc{|first,last| vs.set first,last})
-    if $tk_version =~ /^4\.[01]/
-      pack('side'=>'right', 'fill'=>'y')
-    else
-      grid('in'=>$cscroll_grid, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>1, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    end
-  }
-
-  TkScrollbar.new(base_frame, 'orient'=>'horiz', 
-                  'command'=>proc{|*args| c.xview(*args)}) {|hs|
-    c.xscrollcommand(proc{|first,last| hs.set first,last})
-    if $tk_version =~ /^4\.[01]/
-      pack('side'=>'bottom', 'fill'=>'x') 
-    else
-      grid('in'=>$cscroll_grid, 'padx'=>1, 'pady'=>1, 'row'=>1, 'column'=>0, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    end
-  }
-}
-
-bg = $cscroll_canvas.configinfo('bg')[4]
-(0..19).each{|i|
-  x = -10+3*i
-  y = -10
-  (0..9).each{|j|
-    TkcRectangle.new($cscroll_canvas, "#{x}c", "#{y}c", "#{x+2}c", "#{y+2}c", 
-                     'outline'=>'black', 'fill'=>bg, 'tags'=>'rect')
-    TkcText.new($cscroll_canvas, "#{x+1}c", "#{y+1}c", 
-                'text'=>"#{i},#{j}", 'anchor'=>'center', 'tags'=>'text')
-    y += 3
-  }
-}
-
-$cscroll_canvas.itembind('all', 'Any-Enter', proc{scrollEnter $cscroll_canvas})
-$cscroll_canvas.itembind('all', 'Any-Leave', proc{scrollLeave $cscroll_canvas})
-$cscroll_canvas.itembind('all', '1', proc{scrollButton $cscroll_canvas})
-$cscroll_canvas.itembind('all', 'Any-Enter', proc{scrollEnter $cscroll_canvas})
-$cscroll_canvas.bind('2', proc{|x,y| $cscroll_canvas.scan_mark(x,y)}, '%x %y')
-$cscroll_canvas.bind('B2-Motion', 
-                     proc{|x,y| $cscroll_canvas.scan_dragto(x,y)}, '%x %y')
-
-def scrollEnter(c)
-  id = c.find_withtag('current')[0].id
-  id -= 1 if c.gettags('current').include?('text')
-  $oldFill = c.itemconfiginfo(id, 'fill')[4]
-  if TkWinfo.depth(c) > 1
-    c.itemconfigure(id, 'fill'=>'SeaGreen1')
-  else
-    c.itemconfigure(id, 'fill'=>'black')
-    c.itemconfigure(id+1, 'fill'=>'white')
-  end
-end
-
-def scrollLeave(c)
-  id = c.find_withtag('current')[0].id
-  id -= 1 if c.gettags('current').include?('text')
-  c.itemconfigure(id, 'fill'=>$oldFill)
-  c.itemconfigure(id+1, 'fill'=>'black')
-end
-
-def scrollButton(c)
-  id = c.find_withtag('current')[0].id
-  id += 1 unless c.gettags('current').include?('text')
-  print "You buttoned at #{c.itemconfiginfo(id,'text')[4]}\n"
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ctext.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ctext.rb
deleted file mode 100644 (file)
index 05ca732..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# Canvas Text widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($ctext_demo) && $ctext_demo
-  $ctext_demo.destroy 
-  $ctext_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$ctext_demo = TkToplevel.new {|w|
-  title("Canvas Text Demonstration")
-  iconname("Text")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($ctext_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'5i', 'justify'=>'left', 
-            'text'=>"¤³¤Î¥¦¥£¥ó¥É¥¦¤Ë¤Ï¥­¥ã¥ó¥Ð¥¹widget¤Î¥Æ¥­¥¹¥Èµ¡Ç½¤ò¥Ç¥â¤¹¤ë¤¿¤á¤Î¥Æ¥­¥¹¥Èʸ»úÎó¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥Þ¥¦¥¹¤ò»Í³Ñ¤ÎÃæ¤Ë»ý¤Ã¤Æ¤¤¤­¡¢¥¯¥ê¥Ã¥¯¤¹¤ë¤È°ÌÃÖ¤®¤áÍѤÎÅÀ¤«¤é¤ÎÁêÂаÌÃÖ¤òÊѤ¨¤¿¤ê¡¢¹Ô·¤¨¤òÊѤ¨¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿°Ê²¼¤Î¤è¤¦¤ÊÊÔ½¸¤Î¤¿¤á¤Î´Êñ¤Ê¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£
-
-  1. ¥Þ¥¦¥¹¤ò»ý¤Ã¤Æ¤¤¤­¡¢¥¯¥ê¥Ã¥¯¤·¡¢ÆþÎϤǤ­¤Þ¤¹¡£
-  2. ¥Ü¥¿¥ó1¤ÇÁªÂò¤Ç¤­¤Þ¤¹¡£
-  3. ¥Þ¥¦¥¹¤Î°ÌÃ֤˥ܥ¿¥ó2¤ÇÁªÂò¤·¤¿¥Æ¥­¥¹¥È¤ò¥³¥Ô¡¼¤Ç¤­¤Þ¤¹¡£
-  4.¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹¤ò¥³¥ó¥È¥í¡¼¥ë-H¤ÇÁÞÆþ¥«¡¼¥½¥ë¤ÎľÁ°¤Îʸ»ú¤òºï½ü¤·¤Þ¤¹¡£
-  5. Delete¥­¡¼¤ÏÁÞÆþ¥«¡¼¥½¥ë¤Îľ¸å¤Îʸ»ú¤òºï½ü¤·¤Þ¤¹¡£"){
-  pack('side'=>'top')
-}
-
-# frame À¸À®
-$ctext_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $ctext_demo
-      $ctext_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'ctext'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$ctext_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# canvas À¸À®
-$ctext_canvas = TkCanvas.new(base_frame, 'relief'=>'flat', 
-                             'borderwidth'=>0, 'width'=>500, 'height'=>350)
-$ctext_canvas.pack('side'=>'top', 'expand'=>'yes', 'fill'=>'both')
-
-# font ÀßÄê
-if $tk_version =~ /^4.*/
-  textFont = '-*-Helvetica-Medium-R-Normal--*-240-*-*-*-*-*-*'
-else
-  textFont = 'Helvetica 24'
-end
-
-# canvas ÀßÄê
-TkcRectangle.new($ctext_canvas, 245, 195, 255, 205, 
-                 'outline'=>'black', 'fill'=>'red')
-
-ctag_text_param = {
-  'text'=>"¤³¤ì¤Ï¥­¥ã¥ó¥Ð¥¹widget¤Î¥Æ¥­¥¹¥Èµ¡Ç½¤ò¥Ç¥â¤¹¤ë¤¿¤á¤Îʸ»úÎó¤Ç¤¹¡£\n¾å¤Ç½Ò¤Ù¤¿¤è¤¦¤ÊÊÔ½¸¤ò²Äǽ¤È¤¹¤ë¤¿¤á¤Î¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤ò»Ü¤·¤Æ¤¤¤Þ¤¹¡£",
-  'width'=>440, 'anchor'=>'n', 'justify'=>'left'
-}
-if $tk_version =~ /^4.*/
-  ctag_text_param['font'] = '-*-Helvetica-Medium-R-Normal--*-240-*-*-*-*-*-*'
-  ctag_text_param['kanjifont'] = '-*-r-*--24-*-jisx0208.1983-0'
-else
-  ctag_text_param['font'] = 'Helvetica 24'
-end
-$ctag_text = TkcTag.new($ctext_canvas)
-$ctag_text.withtag(TkcText.new($ctext_canvas, 250, 200, ctag_text_param))
-
-$ctag_text.bind('1', proc{|x,y| textB1Press $ctext_canvas,x,y}, "%x %y")
-$ctag_text.bind('B1-Motion', proc{|x,y| textB1Move $ctext_canvas,x,y}, "%x %y")
-$ctag_text.bind('Shift-1', 
-        proc{|x,y| $ctext_canvas.seleect_adjust 'current', "@#{x},#{y}"}, 
-        "%x %y")
-$ctag_text.bind('Shift-B1-Motion', 
-                proc{|x,y| textB1Move $ctext_canvas,x,y}, "%x %y")
-$ctag_text.bind('KeyPress', proc{|a| textInsert $ctext_canvas,a}, "%A")
-$ctag_text.bind('Return', proc{textInsert $ctext_canvas,"\n"})
-$ctag_text.bind('Control-h', proc{textBs $ctext_canvas})
-$ctag_text.bind('BackSpace', proc{textBs $ctext_canvas})
-$ctag_text.bind('Delete', proc{textDel $ctext_canvas})
-$ctag_text.bind('2', proc{|x,y| textPaste $ctext_canvas, "@#{x},#{y}"}, 
-                "%x %y")
-
-# Next, create some items that allow the text's anchor position 
-# to be edited.
-
-def mkTextConfig(w,x,y,option,value,color)
-  item = TkcRectangle.new(w, x, y, x+30, y+30, 
-                          'outline'=>'black', 'fill'=>color, 'width'=>1)
-  item.bind('1', proc{$ctag_text.configure option, value})
-  w.addtag_withtag('config', item)
-end
-
-x = 50
-y = 50
-color = 'LightSkyBlue1'
-mkTextConfig $ctext_canvas, x, y, 'anchor', 'se', color
-mkTextConfig $ctext_canvas, x+30, y, 'anchor', 's', color
-mkTextConfig $ctext_canvas, x+60, y, 'anchor', 'sw', color
-mkTextConfig $ctext_canvas, x, y+30, 'anchor', 'e', color
-mkTextConfig $ctext_canvas, x+30, y+30, 'anchor', 'center', color
-mkTextConfig $ctext_canvas, x+60, y+30, 'anchor', 'w', color
-mkTextConfig $ctext_canvas, x, y+60, 'anchor', 'ne', color
-mkTextConfig $ctext_canvas, x+30, y+60, 'anchor', 'n', color
-mkTextConfig $ctext_canvas, x+60, y+60, 'anchor', 'nw', color
-item = TkcRectangle.new($ctext_canvas, x+40, y+40, x+50, y+50, 
-                        'outline'=>'black', 'fill'=>'red')
-item.bind('1', proc{$ctag_text.configure 'anchor', 'center'})
-if $tk_version =~ /^4.*/
-  TkcText.new($ctext_canvas, x+45, y-5, 'text'=>'Text Position', 
-              'font'=>'-*-times-medium-r-normal--*-240-*-*-*-*-*-*', 
-              'anchor'=>'s', 'fill'=>'brown')
-else
-  TkcText.new($ctext_canvas, x+45, y-5, 'text'=>'Text Position', 
-              'font'=>'Times 24', 'anchor'=>'s', 'fill'=>'brown')
-end
-
-# Lastly, create some items that allow the text's justification to be
-# changed.
-
-x = 350
-y = 50
-color = 'SeaGreen2'
-mkTextConfig $ctext_canvas, x, y, 'justify', 'left', color
-mkTextConfig $ctext_canvas, x+30, y, 'justify', 'center', color
-mkTextConfig $ctext_canvas, x+60, y, 'justify', 'right', color
-if $tk_version =~ /^4.*/
-  TkcText.new($ctext_canvas, x+45, y-5, 'text'=>'Justification', 
-              'font'=>'-*-times-medium-r-normal--*-240-*-*-*-*-*-*', 
-              'anchor'=>'s', 'fill'=>'brown')
-else
-  TkcText.new($ctext_canvas, x+45, y-5, 'text'=>'Justification', 
-              'font'=>'Times 24', 'anchor'=>'s', 'fill'=>'brown')
-end
-
-$ctext_canvas.itembind('config', 'Enter', proc{textEnter $ctext_canvas})
-$ctext_canvas.itembind('config', 'Leave', 
-                       proc{$ctext_canvas\
-                             .itemconfigure('current', 
-                                            'fill'=>$textConfigFill)})
-
-$textConfigFill = ''
-
-def textEnter(w)
-  $textConfigFill = (w.itemconfiginfo 'current', 'fill')[4]
-  w.itemconfigure 'current', 'fill', 'black'
-end
-
-def textInsert(w, string)
-  return if string == ""
-  begin
-    $ctag_text.dchars 'sel.first', 'sel.last'
-  rescue
-  end
-  $ctag_text.insert 'insert', string
-end
-
-def textPaste(w, pos)
-  begin
-    $ctag_text.insert pos, TkSelection.get
-  rescue
-  end
-end
-
-def textB1Press(w,x,y)
-  w.icursor 'current', "@#{x},#{y}"
-  w.itemfocus 'current'
-  w.focus
-  w.select_from 'current', "@#{x},#{y}"
-end
-
-def textB1Move(w,x,y)
-  w.select_to 'current', "@#{x},#{y}"
-end
-
-def textBs(w)
-  begin
-    $ctag_text.dchars 'sel.first', 'sel.last'
-  rescue
-    char = $ctag_text.index('insert').to_i - 1
-    $ctag_text.dchars(char) if char >= 0
-  end
-end
-
-def textDel(w)
-  begin
-    $ctag_text.dchars 'sel.first', 'sel.last'
-  rescue
-    $ctag_text.dchars 'insert'
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/dialog1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/dialog1.rb
deleted file mode 100644 (file)
index 07e5030..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# a dialog box with a local grab (called by 'widget')
-#
-class TkDialog_Demo1 < TkDialog
-  ###############
-  private
-  ###############
-  def title
-    "Dialog with local grab"
-  end
-
-  def message
-    '¥â¡¼¥À¥ë¥À¥¤¥¢¥í¥°¥Ü¥Ã¥¯¥¹¤Ç¤¹¡£Tk ¤Î "grab" ¥³¥Þ¥ó¥É¤ò»ÈÍѤ·¤Æ¥À¥¤¥¢¥í¥°¥Ü¥Ã¥¯¥¹¤Ç¡Ö¥í¡¼¥«¥ë¥°¥é¥Ö¡×¤·¤Æ¤¤¤Þ¤¹¡£²¼¤Î¤¤¤º¤ì¤«¤Î¥Ü¥¿¥ó¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤³¤Î¥À¥¤¥¢¥í¥°¤ËÅú¤¨¤ë¤Þ¤Ç¡¢¤³¤Î¥°¥é¥Ö¤Ë¤è¤Ã¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¾¤Î¥¦¥£¥ó¥É¥¦¤Ç¤Ï¡¢¥Ý¥¤¥ó¥¿´Ø·¸¤Î¥¤¥Ù¥ó¥È¤ò¼õ¤±¼è¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£'
-  end
-
-  def bitmap
-    'info'
-  end
-
-  def default_button
-    0
-  end
-
-  def buttons
-#    "λ²ò ¥­¥ã¥ó¥»¥ë ¥³¡¼¥É»²¾È"
-    ["λ²ò", "¥­¥ã¥ó¥»¥ë", "¥³¡¼¥É»²¾È"]
-  end
-end
-
-ret =  TkDialog_Demo1.new('message_config'=>{'wraplength'=>'4i'}).value
-case ret
-when 0
-  print "¤¢¤Ê¤¿¤Ï¡Öλ²ò¡×¤ò²¡¤·¤Þ¤·¤¿¤Í¡£\n"
-when 1
-  print "¤¢¤Ê¤¿¤Ï¡Ö¥­¥ã¥ó¥»¥ë¡×¤ò²¡¤·¤Þ¤·¤¿¤Í¡£\n"
-when 2
-  showCode 'dialog1'
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/dialog2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/dialog2.rb
deleted file mode 100644 (file)
index f747f8d..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# a dialog box with a global grab (called by 'widget')
-#
-class TkDialog_Demo2 < TkDialog
-  ###############
-  private
-  ###############
-  def title
-    "Dialog with global grab"
-  end
-
-  def message
-    '¤³¤Î¥À¥¤¥¢¥í¥°¥Ü¥Ã¥¯¥¹¤Ï¥°¥í¡¼¥Ð¥ë¥°¥é¥Ö¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£²¼¤Î¥Ü¥¿¥ó¤ò¼Â¹Ô¤¹¤ë¤Þ¤Ç¡¢¥Ç¥£¥¹¥×¥ì¥¤¾å¤Î¤¤¤«¤Ê¤ë¤â¤Î¤È¤âÂÐÏäǤ­¤Þ¤»¤ó¡£¥°¥í¡¼¥Ð¥ë¥°¥é¥Ö¤ò»ÈÍѤ¹¤ë¤³¤È¤Ï¡¢¤Þ¤ºÎɤ¤¹Í¤¨¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤É¤¦¤·¤Æ¤âɬÍפˤʤë¤Þ¤Ç»È¤ª¤¦¤È»×¤ï¤Ê¤¤¤Ç²¼¤µ¤¤¡£'
-  end
-
-  def bitmap
-    'info'
-  end
-
-  def default_button
-    0
-  end
-
-  def buttons
-#    "λ²ò ¥­¥ã¥ó¥»¥ë ¥³¡¼¥É»²¾È"
-    ["λ²ò", "¥­¥ã¥ó¥»¥ë", "¥³¡¼¥É»²¾È"]
-  end
-end
-
-ret =  TkDialog_Demo2.new('message_config'=>{'wraplength'=>'4i'},
-                          'prev_command'=>proc{|dialog|
-                            Tk.after 100, proc{dialog.grab('global')}
-                          }).value
-case ret
-when 0
-  print "¤¢¤Ê¤¿¤Ï¡Öλ²ò¡×¤ò²¡¤·¤Þ¤·¤¿¤Í¡£\n"
-when 1
-  print "¤¢¤Ê¤¿¤Ï¡Ö¥­¥ã¥ó¥»¥ë¡×¤ò²¡¤·¤Þ¤·¤¿¤Í¡£\n"
-when 2
-  showCode 'dialog2'
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/README b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/README
deleted file mode 100644 (file)
index 90677d3..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-This directory contains a collection of demonstration programs that
-are translated into Japanese.  You need to use a Japanized "wish" to
-see these Japanese-translated demonstration programs.  You also need
-to put this directory ("demos.jp") at the next to "demos" since some
-of the programs refer to the image files at "demos".
-
-Please refer to the README file at "demos" for more detail.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/README.JP b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/README.JP
deleted file mode 100644 (file)
index 42b4929..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-This directory contains "widget" demo for the Japanized Tcl7.6/Tk4.2.
-Most of the messages in the original are translated to Japanese.
-But other tools in this directory are not translated.
-
-Following 2 kanji fonts are defined at the beginning of the file "widget."
-
-       -*--24-*-jisx0208.1983-0
-       -*--16-*-jisx0208.1983-0
-
-These fonts are all part of the core distribution of X11R5, so
-if you are running X11R5, you don't have to modify the file.
-
-But if you don't have these fonts, replace them with appropriate ones.
-"-*--14-*-jisx0208.1983-0" will be a good choice.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/README.tk80 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/README.tk80
deleted file mode 100644 (file)
index c71f977..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-This directory contains a collection of programs to demonstrate
-the features of the Tk toolkit.  The programs are all scripts for
-"wish", a windowing shell.  If wish has been installed in /usr/local
-then you can invoke any of the programs in this directory just
-by typing its file name to your command shell.  Otherwise invoke
-wish with the file as its first argument, e.g., "wish hello".
-The rest of this file contains a brief description of each program.
-Files with names ending in ".tcl" are procedure packages used by one
-or more of the demo programs;  they can't be used as programs by
-themselves so they aren't described below.
-
-hello -                Creates a single button;  if you click on it, a message
-               is typed and the application terminates.
-
-widget -       Contains a collection of demonstrations of the widgets
-               currently available in the Tk library.  Most of the .tcl
-               files are scripts for individual demos available through
-               the "widget" program.
-
-ixset -                A simple Tk-based wrapper for the "xset" program, which
-               allows you to interactively query and set various X options
-               such as mouse acceleration and bell volume.  Thanks to
-               Pierre David for contributing this example.
-
-rolodex -      A mock-up of a simple rolodex application.  It has much of
-               the user interface for such an application but no back-end
-               database.  This program was written in response to Tom
-               LaStrange's toolkit benchmark challenge.
-
-tcolor -       A color editor.  Allows you to edit colors in several
-               different ways, and will also perform automatic updates
-               using "send".
-
-rmt -          Allows you to "hook-up" remotely to any Tk application
-               on the display.  Select an application with the menu,
-               then just type commands:  they'll go to that application.
-
-timer -                Displays a seconds timer with start and stop buttons.
-               Control-c and control-q cause it to exit.
-
-browse -       A simple directory browser.  Invoke it with and argument
-               giving the name of the directory you'd like to browse.
-               Double-click on files or subdirectories to browse them.
-               Control-c and control-q cause the program to exit.
-
-sccs id = SCCS: @(#) README 1.3 96/02/16 10:49:14
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/license.terms b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/license.terms
deleted file mode 100644 (file)
index 03ca6fc..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-This software is copyrighted by the Regents of the University of
-California, Sun Microsystems, Inc., and other parties.  The following
-terms apply to all files associated with the software unless explicitly
-disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-GOVERNMENT USE: If you are acquiring this software on behalf of the
-U.S. government, the Government shall have only "Restricted Rights"
-in the software and related documentation as defined in the Federal 
-Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
-are acquiring the software on behalf of the Department of Defense, the
-software shall be classified as "Commercial Computer Software" and the
-Government shall have only "Restricted Rights" as defined in Clause
-252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
-authors grant the U.S. Government and others acting in its behalf
-permission to use and distribute the software in accordance with the
-terms specified in this license.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/license.terms.tk80 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/doc.org/license.terms.tk80
deleted file mode 100644 (file)
index 03ca6fc..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-This software is copyrighted by the Regents of the University of
-California, Sun Microsystems, Inc., and other parties.  The following
-terms apply to all files associated with the software unless explicitly
-disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-GOVERNMENT USE: If you are acquiring this software on behalf of the
-U.S. government, the Government shall have only "Restricted Rights"
-in the software and related documentation as defined in the Federal 
-Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
-are acquiring the software on behalf of the Department of Defense, the
-software shall be classified as "Commercial Computer Software" and the
-Government shall have only "Restricted Rights" as defined in Clause
-252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
-authors grant the U.S. Government and others acting in its behalf
-permission to use and distribute the software in accordance with the
-terms specified in this license.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/entry1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/entry1.rb
deleted file mode 100644 (file)
index 2be29c1..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# entry (no scrollbars) widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($entry1_demo) && $entry1_demo
-  $entry1_demo.destroy 
-  $entry1_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$entry1_demo = TkToplevel.new {|w|
-  title("Entry Demonstration (no scrollbars)")
-  iconname("entry1")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($entry1_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '5i'
-  justify 'left'
-  text "3¼ïÎà¤Î°Û¤Ê¤ë¥¨¥ó¥È¥ê¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Ê¸»ú¤òÆþÎϤ¹¤ë¤Ë¤Ï¥Ý¥¤¥ó¥¿¤ò»ý¤Ã¤Æ¹Ô¤­¡¢¥¯¥ê¥Ã¥¯¤·¤Æ¤«¤é¥¿¥¤¥×¤·¤Æ¤¯¤À¤µ¤¤¡£É¸½àŪ¤ÊMotif¤ÎÊÔ½¸µ¡Ç½¤¬¡¢Emacs¤Î¥­¡¼¥Ð¥¤¥ó¥É¤È¤È¤â¤Ë¡¢¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Î㤨¤Ð¡¢¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹¤È¥³¥ó¥È¥í¡¼¥ë-H¤Ï¥«¡¼¥½¥ë¤Îº¸¤Îʸ»ú¤òºï½ü¤·¡¢¥Ç¥ê¡¼¥È¥­¡¼¤È¥³¥ó¥È¥í¡¼¥ë-D¤Ï¥«¡¼¥½¥ë¤Î±¦Â¦¤Îʸ»ú¤òºï½ü¤·¤Þ¤¹¡£Ä¹²á¤®¤Æ¥¦¥£¥ó¥É¥¦¤ËÆþ¤êÀÚ¤é¤Ê¤¤¤â¤Î¤Ï¡¢¥Þ¥¦¥¹¤Î¥Ü¥¿¥ó2¤ò²¡¤·¤¿¤Þ¤Þ¥É¥é¥Ã¥°¤¹¤ë¤³¤È¤Ç¥¹¥¯¥í¡¼¥ë¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ÆüËܸì¤òÆþÎϤ¹¤ë¤Î¤Ï¥³¥ó¥È¥í¡¼¥ë-¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ç¤¹¡£kinput2¤¬Æ°¤¤¤Æ¤¤¤ì¤ÐÆþÎϤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£"
-}
-msg.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $entry1_demo
-      $entry1_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'entry1'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# entry À¸À®
-e1 = TkEntry.new(base_frame, 'relief'=>'sunken')
-e2 = TkEntry.new(base_frame, 'relief'=>'sunken')
-e3 = TkEntry.new(base_frame, 'relief'=>'sunken')
-[e1,e2,e3].each{|w| w.pack('side'=>'top', 'padx'=>10, 'pady'=>5, 'fill'=>'x')}
-
-# ½é´üÃÍÁÞÆþ
-e1.insert(0, '½é´üÃÍ')
-e2.insert('end', "¤³¤Î¥¨¥ó¥È¥ê¤Ë¤ÏŤ¤Ê¸»úÎó¤¬Æþ¤Ã¤Æ¤¤¤Æ¡¢")
-e2.insert('end', "Ť¹¤®¤Æ¥¦¥£¥ó¥É¥¦¤Ë¤ÏÆþ¤êÀÚ¤é¤Ê¤¤¤Î¤Ç¡¢")
-e2.insert('end', "¼ÂºÝ¤Î½ê½ª¤ê¤Þ¤Ç¸«¤ë¤Ë¤Ï¥¹¥¯¥í¡¼¥ë¤µ¤»¤Ê¤±¤ì¤Ð")
-e2.insert('end', "¤Ê¤é¤Ê¤¤¤Ç¤·¤ç¤¦¡£")
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/entry2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/entry2.rb
deleted file mode 100644 (file)
index 2675b5d..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# entry (with scrollbars) widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($entry2_demo) && $entry2_demo
-  $entry2_demo.destroy 
-  $entry2_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$entry2_demo = TkToplevel.new {|w|
-  title("Entry Demonstration (with scrollbars)")
-  iconname("entry2")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($entry2_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '5i'
-  justify 'left'
-  text "3¼ïÎà¤Î°Û¤Ê¤ë¥¨¥ó¥È¥ê¤¬³Æ¡¹¥¹¥¯¥í¡¼¥ë¥Ð¡¼ÉÕ¤Çɽ¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Ê¸»ú¤òÆþÎϤ¹¤ë¤Ë¤Ï¥Ý¥¤¥ó¥¿¤ò»ý¤Ã¤Æ¹Ô¤­¡¢¥¯¥ê¥Ã¥¯¤·¤Æ¤«¤é¥¿¥¤¥×¤·¤Æ¤¯¤À¤µ¤¤¡£É¸½àŪ¤ÊMotif¤ÎÊÔ½¸µ¡Ç½¤¬¡¢Emacs¤Î¥­¡¼¥Ð¥¤¥ó¥É¤È¤È¤â¤Ë¡¢¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Î㤨¤Ð¡¢¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹¤È¥³¥ó¥È¥í¡¼¥ë-H¤Ï¥«¡¼¥½¥ë¤Îº¸¤Îʸ»ú¤òºï½ü¤·¡¢¥Ç¥ê¡¼¥È¥­¡¼¤È¥³¥ó¥È¥í¡¼¥ë-D¤Ï¥«¡¼¥½¥ë¤Î±¦Â¦¤Îʸ»ú¤òºï½ü¤·¤Þ¤¹¡£Ä¹²á¤®¤Æ¥¦¥£¥ó¥É¥¦¤ËÆþ¤êÀÚ¤é¤Ê¤¤¤â¤Î¤Ï¡¢¥Þ¥¦¥¹¤Î¥Ü¥¿¥ó2¤ò²¡¤·¤¿¤Þ¤Þ¥É¥é¥Ã¥°¤¹¤ë¤³¤È¤Ç¥¹¥¯¥í¡¼¥ë¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ÆüËܸì¤òÆþÎϤ¹¤ë¤Î¤Ï¥³¥ó¥È¥í¡¼¥ë-¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ç¤¹¡£kinput2¤¬Æ°¤¤¤Æ¤¤¤ì¤ÐÆþÎϤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£"
-}
-msg.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $entry2_demo
-      $entry2_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'entry2'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame À¸À®
-TkFrame.new(base_frame, 'borderwidth'=>10) {|w|
-  # entry 1
-  s1 = TkScrollbar.new(w, 'relief'=>'sunken', 'orient'=>'horiz')
-  e1 = TkEntry.new(w, 'relief'=>'sunken') {
-    xscrollcommand proc{|first,last| s1.set first,last}
-  }
-  s1.command(proc{|*args| e1.xview(*args)})
-  e1.pack('side'=>'top', 'fill'=>'x')
-  s1.pack('side'=>'top', 'fill'=>'x')
-
-  # spacer
-  TkFrame.new(w, 'width'=>20, 'height'=>10).pack('side'=>'top', 'fill'=>'x')
-
-  # entry 2
-  s2 = TkScrollbar.new(w, 'relief'=>'sunken', 'orient'=>'horiz')
-  e2 = TkEntry.new(w, 'relief'=>'sunken') {
-    xscrollcommand proc{|first,last| s2.set first,last}
-  }
-  s2.command(proc{|*args| e2.xview(*args)})
-  e2.pack('side'=>'top', 'fill'=>'x')
-  s2.pack('side'=>'top', 'fill'=>'x')
-
-  # spacer
-  TkFrame.new(w, 'width'=>20, 'height'=>10).pack('side'=>'top', 'fill'=>'x')
-
-  # entry 3
-  s3 = TkScrollbar.new(w, 'relief'=>'sunken', 'orient'=>'horiz')
-  e3 = TkEntry.new(w, 'relief'=>'sunken') {
-    xscrollcommand proc{|first,last| s3.set first,last}
-  }
-  s3.command(proc{|*args| e3.xview(*args)})
-  e3.pack('side'=>'top', 'fill'=>'x')
-  s3.pack('side'=>'top', 'fill'=>'x')
-
-  # ½é´üÃÍÁÞÆþ
-  e1.insert(0, '½é´üÃÍ')
-  e2.insert('end', "¤³¤Î¥¨¥ó¥È¥ê¤Ë¤ÏŤ¤Ê¸»úÎó¤¬Æþ¤Ã¤Æ¤¤¤Æ¡¢")
-  e2.insert('end', "Ť¹¤®¤Æ¥¦¥£¥ó¥É¥¦¤Ë¤ÏÆþ¤êÀÚ¤é¤Ê¤¤¤Î¤Ç¡¢")
-  e2.insert('end', "¼ÂºÝ¤Î½ê½ª¤ê¤Þ¤Ç¸«¤ë¤Ë¤Ï¥¹¥¯¥í¡¼¥ë¤µ¤»¤Ê¤±¤ì¤Ð")
-  e2.insert('end', "¤Ê¤é¤Ê¤¤¤Ç¤·¤ç¤¦¡£")
-
-}.pack('side'=>'top', 'fill'=>'x', 'expand'=>'yes')
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/entry3.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/entry3.rb
deleted file mode 100644 (file)
index 6b9cd4c..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-# -*- coding: euc-jp -*-
-# entry3.rb --
-#
-# This demonstration script creates several entry widgets whose
-# permitted input is constrained in some way.  It also shows off a
-# password entry.
-#
-# based on Tcl/Tk8.4.4 widget demos
-
-if defined?($entry3_demo) && $entry3_demo
-  $entry3_demo.destroy 
-  $entry3_demo = nil
-end
-
-$entry3_demo = TkToplevel.new {|w|
-  title("Constrained Entry Demonstration")
-  iconname("entry3")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($entry3_demo).pack(:fill=>:both, :expand=>true)
-
-TkLabel.new(base_frame, 
-            :font=>$font, :wraplength=>'5i', :justify=>:left, 
-            :text=><<EOL).pack(:side=>:top)
-°Ê²¼¤Ë¤Ï£´¼ïÎà¤Î¥¨¥ó¥È¥ê¥Ü¥Ã¥¯¥¹¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥³Æ¥¨¥ó¥È¥ê¥Ü¥Ã¥¯¥¹¤Ï¡¤\
-¥Þ¥¦¥¹¥¯¥ê¥Ã¥¯¤ÇÁªÂò¤·Ê¸»ú¤òÂǤÁ¹þ¤à¤³¤È¤¬²Äǽ¤Ç¤¹¤¬¡¤¤½¤ì¤¾¤ì¤¬¤É¤Î¤è¤¦¤Ê\
-ÆþÎϤò¼õ¤±ÉÕ¤±¤ë¤³¤È¤¬¤Ç¤­¤ë¤«¤Ë¤ÏÀ©Ìó¤¬Àߤ±¤é¤ì¤Æ¤¤¤Þ¤¹¡¥\
-°ì¤Ä¤á¤Î¥¨¥ó¥È¥ê¥Ü¥Ã¥¯¥¹¤ÏÀ°¿ô¤È¸«¤Ê¤µ¤ì¤ëʸ»úÎó¤«ÆþÎÏʸ»ú¤¬¤Ê¤¤¶õ¤Î¾õÂÖ¤«\
-¤Î¾ì¹ç¤À¤±¤ò¼õ¤±ÉÕ¤±¡¤ÌäÂ꤬¤¢¤ë¾ì¹ç¤Ï¥¨¥ó¥È¥ê¥Ü¥Ã¥¯¥¹¤¬ÅÀÌǤ·¤Þ¤¹\
-¡Ê¥Õ¥©¡¼¥«¥¹¤¬µî¤ë»þ¤Ë¥Á¥§¥Ã¥¯¤µ¤ì¤Þ¤¹¡Ë¡¥\
-Æó¤Ä¤á¤Î¥¨¥ó¥È¥ê¥Ü¥Ã¥¯¥¹¤Ï¡¤ÆþÎϤµ¤ì¤¿Ê¸»úÎó¤ÎŤµ¤¬\
-£±£°Ê¸»ṳ́Ëþ¤Î¾ì¹ç¤À¤±¤ò¼õ¤±ÉÕ¤±¡¤À©¸Â¤ò±Û¤¨¤Æ½ñ¤­¹þ¤â¤¦¤È¤·¤¿¤È¤­¤Ë¤Ï\
-¥Ù¥ë¤òÌĤ餷¤ÆÃΤ餻¤Þ¤¹¡¥\
-»°¤Ä¤á¤ÏÊƹñ¤ÎÅÅÏÃÈÖ¹æ¤ò¼õ¤±ÉÕ¤±¤ë¥¨¥ó¥È¥ê¥Ü¥Ã¥¯¥¹¤Ç¤¹¡¥\
-¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤Ï¡¤ÅÅÏõ¡¤Î¥À¥¤¥ä¥ë¾å¤ÇÂбþ¤Å¤±¤é¤ì¤Æ¤¤¤ë¿ô»ú¤ËÊÑ´¹¤µ¤ì¤Þ¤¹¡¥\
-ÉÔŬÀÚ¤Êʸ»ú¤¬ÆþÎϤµ¤ì¤¿¤ê¿ô»ú°Ê³°¤Îʸ»ú¤Î°ÌÃ֤˿ô»ú¤òÆþÎϤ·¤è¤¦¤È¤·¤¿¤ê\
-¤·¤¿¾ì¹ç¤Ë¤Ï·Ù¹ð¤Î¥Ù¥ë¤¬ÌĤê¤Þ¤¹¡¥\
-»Í¤Ä¤á¤Î¥¨¥ó¥È¥ê¥Ü¥Ã¥¯¥¹¤Ï¡¤£¸Ê¸»ú¤Þ¤Ç¤ÎÆþÎϤò¼õ¤±ÉÕ¤±¤ë\
-¥Ñ¥¹¥ï¡¼¥É¥Õ¥£¡¼¥ë¥É¤Ç¤¹¡Ê£¸Ê¸»ú°Ê¾å¤ÏÆä˷ٹð¤ò½Ð¤¹¤³¤È¤Ê¤¯Ìµ»ë¤µ¤ì¤Þ¤¹¡Ë¡¥\
-ÆþÎϤµ¤ì¤¿Ê¸»ú¤Ï¥¢¥¹¥¿¥ê¥¹¥¯µ­¹æ¤ËÃÖ¤­´¹¤¨¤Æɽ¼¨¤µ¤ì¤Þ¤¹¡¥
-EOL
-
-TkFrame.new(base_frame){|f|
-  pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
-
-  TkButton.new(f, :text=>'ÊĤ¸¤ë', :width=>15, :command=>proc{
-                 $entry3_demo.destroy
-                 $entry3_demo = nil
-               }).pack(:side=>:left, :expand=>true)
-
-  TkButton.new(f, :text=>'¥³¡¼¥É»²¾È', :width=>15, :command=>proc{
-                 showCode 'entry3'
-               }).pack(:side=>:left, :expand=>true)
-}
-
-# focusAndFlash --
-# Error handler for entry widgets that forces the focus onto the
-# widget and makes the widget flash by exchanging the foreground and
-# background colours at intervals of 200ms (i.e. at approximately
-# 2.5Hz).
-#
-# Arguments:
-# widget -      entry widget to flash
-# fg -          Initial foreground colour
-# bg -          Initial background colour
-# count -       Counter to control the number of times flashed
-def focusAndFlash(widget, fg, bg, count=5)
-  return if count <= 0
-  if fg && !fg.empty? && bg && !bg.empty?
-    TkTimer.new(200, count, 
-                proc{widget.configure(:foreground=>bg, :background=>fg)}, 
-                proc{widget.configure(:foreground=>fg, :background=>bg)}
-                ).start
-  else
-    # TkTimer.new(150, 3){Tk.bell}.start
-    Tk.bell
-    TkTimer.new(200, count, 
-                proc{widget.configure(:foreground=>'white', 
-                                      :background=>'black')}, 
-                proc{widget.configure(:foreground=>'black', 
-                                      :background=>'white')}
-                ).at_end{begin
-                           widget.configure(:foreground=>fg, 
-                                            :background=>bg)
-                         rescue
-                           # ignore
-                         end}.start
-  end
-  widget.focus(true)
-end
-
-l1 = TkLabelFrame.new(base_frame, :text=>"À°¿ô¥¨¥ó¥È¥ê")
-TkEntry.new(l1, :validate=>:focus, 
-            :vcmd=>[
-              proc{|s| s == '' || /^[+-]?\d+$/ =~ s }, '%P'
-            ]) {|e|
-  fg = e.foreground
-  bg = e.background
-  invalidcommand [proc{|w| focusAndFlash(w, fg, bg)}, '%W']
-  pack(:fill=>:x, :expand=>true, :padx=>'1m', :pady=>'1m')
-}
-
-l2 = TkLabelFrame.new(base_frame, :text=>"ŤµÀ©ÌóÉÕ¤­¥¨¥ó¥È¥ê")
-TkEntry.new(l2, :validate=>:key, :invcmd=>proc{Tk.bell}, 
-            :vcmd=>[proc{|s| s.length < 10}, '%P']
-            ).pack(:fill=>:x, :expand=>true, :padx=>'1m', :pady=>'1m')
-
-### PHONE NUMBER ENTRY ###
-# Note that the source to this is quite a bit longer as the behaviour
-# demonstrated is a lot more ambitious than with the others.
-
-# Initial content for the third entry widget
-entry3content = TkVariable.new("1-(000)-000-0000")
-
-# Mapping from alphabetic characters to numbers.
-$phoneNumberMap = {}
-Hash[*(%w(abc 2 def 3 ghi 4 jkl 5 mno 6 pqrs 7 tuv 8 wxyz 9))].each{|chars, n|
-  chars.split('').each{|c|
-    $phoneNumberMap[c] = n
-    $phoneNumberMap[c.upcase] = n
-  }
-}
-
-# phoneSkipLeft --
-# Skip over fixed characters in a phone-number string when moving left.
-#
-# Arguments:
-# widget -      The entry widget containing the phone-number.
-def phoneSkipLeft(widget)
-  idx = widget.index('insert')
-  if idx == 8
-    # Skip back two extra characters
-    widget.cursor = idx - 2
-  elsif idx == 7 || idx == 12
-    # Skip back one extra character
-    widget.cursor = idx - 1
-  elsif idx <= 3
-    # Can't move any further
-    Tk.bell
-    Tk.callback_break
-  end
-end
-
-# phoneSkipRight --
-# Skip over fixed characters in a phone-number string when moving right.
-#
-# Arguments:
-# widget -      The entry widget containing the phone-number.
-# add - Offset to add to index before calculation (used by validation.)
-def phoneSkipRight(widget, add = 0)
-  idx = widget.index('insert')
-  if (idx + add == 5)
-    # Skip forward two extra characters
-    widget.cursor = idx + 2
-  elsif (idx + add == 6 || idx + add == 10)
-    # Skip forward one extra character
-    widget.cursor = idx + 1
-  elsif (idx + add == 15 && add == 0)
-    # Can't move any further
-    Tk.bell
-    Tk.callback_break
-  end
-end
-
-# validatePhoneChange --
-# Checks that the replacement (mapped to a digit) of the given
-# character in an entry widget at the given position will leave a
-# valid phone number in the widget.
-#
-# widget - entry widget to validate
-# vmode -  The widget's validation mode
-# idx -    The index where replacement is to occur
-# char -   The character (or string, though that will always be
-#          refused) to be overwritten at that point.
-
-def validatePhoneChange(widget, vmode, idx, char)
-  return true if idx == nil
-  Tk.after_idle(proc{widget.configure(:validate=>vmode, 
-                                      :invcmd=>proc{Tk.bell})})
-  if !(idx<3 || idx==6 || idx==7 || idx==11 || idx>15) && char =~ /[0-9A-Za-z]/
-    widget.delete(idx)
-    widget.insert(idx, $phoneNumberMap[char] || char)
-    Tk.after_idle(proc{phoneSkipRight(widget, -1)})
-    # Tk.update(true)  # <- Don't work 'update' inter validation callback.
-                       #    It depends on Tcl/Tk side (tested on Tcl/Tk8.5a1).
-    return true
-  end
-  return false
-end
-
-
-l3 = TkLabelFrame.new(base_frame, :text=>"ÊƹñÅÅÏÃÈֹ楨¥ó¥È¥ê")
-TkEntry.new(l3, :validate=>:key, :invcmd=>proc{Tk.bell}, 
-            :textvariable=>entry3content, 
-            :vcmd=>[
-              proc{|w,v,i,s| validatePhoneChange(w,v,i,s)}, 
-              "%W %v %i %S"
-            ]){|e|
-  # Click to focus goes to the first editable character...
-  bind('FocusIn', proc{|d,w|
-         if d != "NotifyAncestor"
-           w.cursor = 3
-           Tk.after_idle(proc{w.selection_clear})
-         end
-       }, '%d %W')
-  bind('Left',  proc{|w| phoneSkipLeft(w)},  '%W')
-  bind('Right', proc{|w| phoneSkipRight(w)}, '%W')
-  pack(:fill=>:x, :expand=>true, :padx=>'1m', :pady=>'1m')
-}
-
-l4 = TkLabelFrame.new(base_frame, :text=>"¥Ñ¥¹¥ï¡¼¥É¥¨¥ó¥È¥ê")
-TkEntry.new(l4, :validate=>:key, :show=>'*', 
-            :vcmd=>[
-              proc{|s| s.length <= 8}, 
-              '%P'
-            ]).pack(:fill=>:x, :expand=>true, :padx=>'1m', :pady=>'1m')
-
-TkFrame.new(base_frame){|f|
-  lower
-  TkGrid.configure(l1, l2, :in=>f, :padx=>'3m', :pady=>'1m', :sticky=>:ew)
-  TkGrid.configure(l3, l4, :in=>f, :padx=>'3m', :pady=>'1m', :sticky=>:ew)
-  TkGrid.columnconfigure(f, [0,1], :uniform=>1)
-  pack(:fill=>:both, :expand=>true)
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/filebox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/filebox.rb
deleted file mode 100644 (file)
index b8846d0..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# widget demo prompts the user to select a file (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($filebox_demo) && $entry2_demo
-  $filebox_demo.destroy 
-  $filebox_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$filebox_demo = TkToplevel.new {|w|
-  title("File Selection Dialogs")
-  iconname("filebox")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($filebox_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left',
-            'text'=>"¥¨¥ó¥È¥ê¤Ë¥Õ¥¡¥¤¥ë̾¤òľÀÜÆþÎϤ¹¤ë¤«¡¢\"Browse\" ¥Ü¥¿¥ó¤ò²¡¤·¤Æ¥Õ¥¡¥¤¥ëÁªÂò¥À¥¤¥¢¥í¥°¤«¤é¥Õ¥¡¥¤¥ë̾¤òÁª¤ó¤Ç²¼¤µ¤¤¡£").pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $filebox_demo
-      $filebox_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'filebox'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame À¸À®
-['³«¤¯', 'Êݸ'].each{|type|
-  TkFrame.new(base_frame) {|f|
-    TkLabel.new(f, 'text'=>"¥Õ¥¡¥¤¥ë¤ò#{type}: ", 'anchor'=>'e')\
-    .pack('side'=>'left')
-
-    TkEntry.new(f, 'width'=>20) {|e|
-      pack('side'=>'left', 'expand'=>'yes', 'fill'=>'x')
-
-      TkButton.new(f, 'text'=>'Browse ...', 
-                   'command'=>proc{fileDialog base_frame,e,type})\
-      .pack('side'=>'left')
-    }
-
-    pack('fill'=>'x', 'padx'=>'1c', 'pady'=>3)
-  }
-}
-
-$tk_strictMotif = TkVarAccess.new('tk_strictMotif')
-if ($tk_platform['platform'] == 'unix')
-  TkCheckButton.new(base_frame, 
-                    'text'=>'Motif¥¹¥¿¥¤¥ë¤Î¥À¥¤¥¢¥í¥°¤òÍѤ¤¤ë', 
-                    'variable'=>$tk_strictMotif, 
-                    'onvalue'=>1, 'offvalue'=>0 ).pack('anchor'=>'c')
-end
-
-def fileDialog(w,ent,operation)
-  #    Type names         Extension(s)             Mac File Type(s)
-  #
-  #--------------------------------------------------------
-  types = [
-    ['Text files',       ['.txt','.doc']          ], 
-    ['Text files',       [],                      'TEXT' ], 
-    ['Ruby Scripts',     ['.rb'],                 'TEXT' ], 
-    ['Tcl Scripts',      ['.tcl'],                'TEXT' ], 
-    ['C Source Files',   ['.c','.h']              ], 
-    ['All Source Files', ['.rb','.tcl','.c','.h'] ], 
-    ['Image Files',      ['.gif']                 ], 
-    ['Image Files',      ['.jpeg','.jpg']         ], 
-    ['Image Files',      [],                      ['GIFF','JPEG']], 
-    ['All files',        '*'                      ]
-  ]
-
-  if operation == '³«¤¯'
-    file = Tk.getOpenFile('filetypes'=>types, 'parent'=>w)
-  else
-    file = Tk.getSaveFile('filetypes'=>types, 'parent'=>w, 
-                          'initialfile'=>'Untitled', 
-                          'defaultextension'=>'.txt')
-  end
-  if file != ""
-    ent.delete 0, 'end'
-    ent.insert 0, file
-    # ent.xview 'end'
-    Tk.update_idletasks # need this for Tk::Tile::Entry
-                        # (to find right position of 'xview').
-    ent.xview(ent.index('end'))
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/floor.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/floor.rb
deleted file mode 100644 (file)
index a2ec2e9..0000000
+++ /dev/null
@@ -1,1721 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# floorDisplay widget demo (called by 'widget')
-#
-
-# floorDisplay --
-# Recreate the floorplan display in the canvas given by "w".  The
-# floor given by "active" is displayed on top with its office structure
-# visible.
-#
-# Arguments:
-# w -           Name of the canvas window.
-# active -      Number of active floor (1, 2, or 3).
-
-def floorDisplay(w,active)
-  return if $activeFloor == active
-
-  w.delete('all')
-  $activeFloor = active
-
-  # First go through the three floors, displaying the backgrounds for 
-  # each floor.
-
-  floor_bg1(w,$floor_colors['bg1'],$floor_colors['outline1'])
-  floor_bg2(w,$floor_colors['bg2'],$floor_colors['outline2'])
-  floor_bg3(w,$floor_colors['bg3'],$floor_colors['outline3'])
-
-  # Raise the background for the active floor so that it's on top.
-
-  w.raise("floor#{active}")
-
-  # Create a dummy item just to mark this point in the display list, 
-  # so we can insert highlights here.
-
-  TkcRectangle.new(w,0,100,1,101, 'fill'=>'', 'outline'=>'', 'tags'=>'marker')
-
-  # Add the walls and labels for the active floor, along with 
-  # transparent polygons that define the rooms on the floor.
-  # Make sure that the room polygons are on top.
-
-  $floorLabels.clear
-  $floorItems.clear
-  send("floor_fg#{active}", w, $floor_colors['offices'])
-  w.raise('room')
-
-  # Offset the floors diagonally from each other.
-
-  w.move('floor1', '2c', '2c')
-  w.move('floor2', '1c', '1c')
-
-  # Create items for the room entry and its label.
-  TkcWindow.new(w, 600, 100, 'anchor'=>'w', 'window'=>$floor_entry)
-  TkcText.new(w, 600, 100, 'anchor'=>'e', 'text'=>"Éô²°ÈÖ¹æ: ")
-  w['scrollregion'] = w.bbox('all')
-end
-
-# newRoom --
-# This method is invoked whenever the mouse enters a room
-# in the floorplan.  It changes tags so that the current room is
-# highlighted.
-#
-# Arguments:
-# w  -          The name of the canvas window.
-
-def newRoom(w)
-  id = w.find_withtag('current')[0]
-  $currentRoom.value = $floorLabels[id.id] if id != ""
-  Tk.update(true)
-end
-
-# roomChanged --
-# This method is invoked whenever the currentRoom variable changes.
-# It highlights the current room and unhighlights any previous room.
-#
-# Arguments:
-# w -           The canvas window displaying the floorplan.
-# args -        Not used.
-
-def roomChanged(w,*args)
-  w.delete('highlight')
-  item = $floorItems[$currentRoom.value]
-  return if item == nil
-  new = TkcPolygon.new(w, *(w.coords(item)))
-  new.configure('fill'=>$floor_colors['active'], 'tags'=>'highlight')
-  w.raise(new, 'marker')
-end
-
-# floor_bg1 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the background information for the first
-# floor.
-#
-# Arguments:
-# w -           The canvas window.
-# fill -        Fill color to use for the floor's background.
-# outline -     Color to use for the floor's outline.
-
-def floor_bg1(w,fill,outline)
-  TkcPolygon.new(w,347,80,349,82,351,84,353,85,363,92,375,99,386,104,
-                 386,129,398,129,398,162,484,162,484,129,559,129,559,133,725,
-                 133,725,129,802,129,802,389,644,389,644,391,559,391,559,327,
-                 508,327,508,311,484,311,484,278,395,278,395,288,400,288,404,
-                 288,409,290,413,292,418,297,421,302,422,309,421,318,417,325,
-                 411,330,405,332,397,333,344,333,340,334,336,336,335,338,332,
-                 342,331,347,332,351,334,354,336,357,341,359,340,360,335,363,
-                 331,365,326,366,304,366,304,355,258,355,258,387,60,387,60,391,
-                 0,391,0,337,3,337,3,114,8,114,8,25,30,25,30,5,93,5,98,5,104,7,
-                 110,10,116,16,119,20,122,28,123,32,123,68,220,68,220,34,221,
-                 22,223,17,227,13,231,8,236,4,242,2,246,0,260,0,283,1,300,5,
-                 321,14,335,22,348,25,365,29,363,39,358,48,352,56,337,70,
-                 344,76,347,80, 'tags'=>['floor1','bg'], 'fill'=>fill)
-  TkcLine.new(w,386,129,398,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,258,355,258,387, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,60,387,60,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,0,337,0,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,60,391,0,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,3,114,3,337, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,258,387,60,387, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,484,162,398,162, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,398,162,398,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,484,278,484,311, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,484,311,508,311, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,508,327,508,311, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,559,327,508,327, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,644,391,559,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,644,389,644,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,559,129,484,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,484,162,484,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,725,133,559,133, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,559,129,559,133, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,725,129,802,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,802,389,802,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,3,337,0,337, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,559,391,559,327, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,802,389,644,389, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,725,133,725,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,8,25,8,114, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,8,114,3,114, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,30,25,8,25, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,484,278,395,278, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,30,25,30,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,93,5,30,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,98,5,93,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,104,7,98,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,110,10,104,7, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,116,16,110,10, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,119,20,116,16, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,122,28,119,20, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,123,32,122,28, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,123,68,123,32, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,220,68,123,68, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,386,129,386,104, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,386,104,375,99, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,375,99,363,92, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,353,85,363,92, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,220,68,220,34, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,337,70,352,56, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,352,56,358,48, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,358,48,363,39, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,363,39,365,29, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,365,29,348,25, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,348,25,335,22, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,335,22,321,14, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,321,14,300,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,300,5,283,1, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,283,1,260,0, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,260,0,246,0, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,246,0,242,2, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,242,2,236,4, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,236,4,231,8, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,231,8,227,13, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,223,17,227,13, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,221,22,223,17, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,220,34,221,22, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,340,360,335,363, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,335,363,331,365, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,331,365,326,366, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,326,366,304,366, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,304,355,304,366, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,395,288,400,288, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,404,288,400,288, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,409,290,404,288, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,413,292,409,290, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,418,297,413,292, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,421,302,418,297, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,422,309,421,302, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,421,318,422,309, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,421,318,417,325, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,417,325,411,330, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,411,330,405,332, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,405,332,397,333, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,397,333,344,333, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,344,333,340,334, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,340,334,336,336, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,336,336,335,338, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,335,338,332,342, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,331,347,332,342, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,332,351,331,347, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,334,354,332,351, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,336,357,334,354, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,341,359,336,357, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,341,359,340,360, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,395,288,395,278, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,304,355,258,355, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,347,80,344,76, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,344,76,337,70, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,349,82,347,80, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,351,84,349,82, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  TkcLine.new(w,353,85,351,84, 'fill'=>outline, 'tags'=>['floor1','bg'])
-end
-
-# floor_bg2 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the background information for the first
-# floor.
-#
-# Arguments:
-# w -           The canvas window.
-# fill -        Fill color to use for the floor's background.
-# outline -     Color to use for the floor's outline.
-
-def floor_bg2(w,fill,outline)
-  TkcPolygon.new(w,559,129,484,129,484,162,398,162,398,129,315,129,
-                 315,133,176,133,176,129,96,129,96,133,3,133,3,339,0,339,0,391,
-                 60,391,60,387,258,387,258,329,350,329,350,311,395,311,395,280,
-                 484,280,484,311,508,311,508,327,558,327,558,391,644,391,644,
-                 367,802,367,802,129,725,129,725,133,559,133,559,129,
-                 'tags'=>['floor2','bg'], 'fill'=>fill)
-  TkcLine.new(w,350,311,350,329, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,398,129,398,162, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,802,367,802,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,802,129,725,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,725,133,725,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,559,129,559,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,559,133,725,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,484,162,484,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,559,129,484,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,802,367,644,367, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,644,367,644,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,644,391,558,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,558,327,558,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,558,327,508,327, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,508,327,508,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,484,311,508,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,484,280,484,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,398,162,484,162, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,484,280,395,280, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,395,280,395,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,258,387,60,387, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,3,133,3,339, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,3,339,0,339, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,60,391,0,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,0,339,0,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,60,387,60,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,258,329,258,387, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,350,329,258,329, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,395,311,350,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,398,129,315,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,176,133,315,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,176,129,96,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,3,133,96,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,315,133,315,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,176,133,176,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  TkcLine.new(w,96,133,96,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-end
-
-# floor_bg3 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the background information for the first
-# floor.
-#
-# Arguments:
-# w -           The canvas window.
-# fill -        Fill color to use for the floor's background.
-# outline -     Color to use for the floor's outline.
-
-def floor_bg3(w,fill,outline)
-  TkcPolygon.new(w,159,300,107,300,107,248,159,248,159,129,96,129,96,
-                 133,21,133,21,331,0,331,0,391,60,391,60,370,159,370,159,300,
-                 'tags'=>['floor3','bg'], 'fill'=>fill)
-  TkcPolygon.new(w,258,370,258,329,350,329,350,311,399,311,399,129,
-                 315,129,315,133,176,133,176,129,159,129,159,370,258,370,
-                 'tags'=>['floor3','bg'], 'fill'=>fill)
-  TkcLine.new(w,96,133,96,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,176,129,96,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,176,129,176,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,315,133,176,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,315,133,315,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,399,129,315,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,399,311,399,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,399,311,350,311, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,350,329,350,311, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,350,329,258,329, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,258,370,258,329, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,60,370,258,370, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,60,370,60,391, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,60,391,0,391, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,0,391,0,331, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,21,331,0,331, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,21,331,21,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,96,133,21,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  TkcLine.new(w,107,300,159,300,159,248,107,248,107,300, 
-              'fill'=>outline, 'tags'=>['floor3','bg'])
-end
-
-# floor_fg1 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the foreground information for the first
-# floor (office outlines and numbers).
-#
-# Arguments:
-# w -           The canvas window.
-# color -       Color to use for drawing foreground information.
-
-def floor_fg1(w,color)
-  i = TkcPolygon.new(w,375,246,375,172,341,172,341,246, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '101'
-  $floorItems['101'] = i
-  TkcText.new(w,358,209, 'text'=>'101', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,307,240,339,240,339,206,307,206, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'Pub Lift1'
-  $floorItems['Pub Lift1'] = i
-  TkcText.new(w,323,223, 'text'=>'Pub Lift1', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,339,205,307,205,307,171,339,171, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'Priv Lift1'
-  $floorItems['Priv Lift1'] = i
-  TkcText.new(w,323,188, 'text'=>'Priv Lift1', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,42,389,42,337,1,337,1,389, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '110'
-  $floorItems['110'] = i
-  TkcText.new(w,21.5,363, 'text'=>'110', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,59,389,59,385,90,385,90,337,44,337,44,389, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '109'
-  $floorItems['109'] = i
-  TkcText.new(w,67,363, 'text'=>'109', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,51,300,51,253,6,253,6,300, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '111'
-  $floorItems['111'] = i
-  TkcText.new(w,28.5,276.5, 'text'=>'111', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,98,248,98,309,79,309,79,248, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '117B'
-  $floorItems['117B'] = i
-  TkcText.new(w,88.5,278.5, 'text'=>'117B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,51,251,51,204,6,204,6,251, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '112'
-  $floorItems['112'] = i
-  TkcText.new(w,28.5,227.5, 'text'=>'112', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,6,156,51,156,51,203,6,203, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '113'
-  $floorItems['113'] = i
-  TkcText.new(w,28.5,179.5, 'text'=>'113', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,85,169,79,169,79,192,85,192, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '117A'
-  $floorItems['117A'] = i
-  TkcText.new(w,82,180.5, 'text'=>'117A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,77,302,77,168,53,168,53,302, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '117'
-  $floorItems['117'] = i
-  TkcText.new(w,65,235, 'text'=>'117', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,51,155,51,115,6,115,6,155, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '114'
-  $floorItems['114'] = i
-  TkcText.new(w,28.5,135, 'text'=>'114', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,95,115,53,115,53,168,95,168, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '115'
-  $floorItems['115'] = i
-  TkcText.new(w,74,141.5, 'text'=>'115', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,87,113,87,27,10,27,10,113, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '116'
-  $floorItems['116'] = i
-  TkcText.new(w,48.5,70, 'text'=>'116', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,89,91,128,91,128,113,89,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '118'
-  $floorItems['118'] = i
-  TkcText.new(w,108.5,102, 'text'=>'118', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,178,128,178,132,216,132,216,91,
-                     163,91,163,112,149,112,149,128, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '120'
-  $floorItems['120'] = i
-  TkcText.new(w,189.5,111.5, 'text'=>'120', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,79,193,87,193,87,169,136,169,136,192,
-                     156,192,156,169,175,169,175,246,79,246, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '122'
-  $floorItems['122'] = i
-  TkcText.new(w,131,207.5, 'text'=>'122', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,138,169,154,169,154,191,138,191, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '121'
-  $floorItems['121'] = i
-  TkcText.new(w,146,180, 'text'=>'121', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,99,300,126,300,126,309,99,309, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '106A'
-  $floorItems['106A'] = i
-  TkcText.new(w,112.5,304.5, 'text'=>'106A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,128,299,128,309,150,309,150,248,99,248,99,299, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '105'
-  $floorItems['105'] = i
-  TkcText.new(w,124.5,278.5, 'text'=>'105', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,174,309,174,300,152,300,152,309, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '106B'
-  $floorItems['106B'] = i
-  TkcText.new(w,163,304.5, 'text'=>'106B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,176,299,176,309,216,309,216,248,152,248,152,299, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '104'
-  $floorItems['104'] = i
-  TkcText.new(w,184,278.5, 'text'=>'104', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,138,385,138,337,91,337,91,385, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '108'
-  $floorItems['108'] = i
-  TkcText.new(w,114.5,361, 'text'=>'108', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,256,337,140,337,140,385,256,385, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '107'
-  $floorItems['107'] = i
-  TkcText.new(w,198,361, 'text'=>'107', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,300,353,300,329,260,329,260,353, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'Smoking'
-  $floorItems['Smoking'] = i
-  TkcText.new(w,280,341, 'text'=>'Smoking', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,314,135,314,170,306,170,306,246,177,246,177,135, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '123'
-  $floorItems['123'] = i
-  TkcText.new(w,245.5,190.5, 'text'=>'123', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,217,248,301,248,301,326,257,326,257,310,217,310, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '103'
-  $floorItems['103'] = i
-  TkcText.new(w,259,287, 'text'=>'103', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,396,188,377,188,377,169,316,169,316,131,396,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '124'
-  $floorItems['124'] = i
-  TkcText.new(w,356,150, 'text'=>'124', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,397,226,407,226,407,189,377,189,377,246,397,246, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '125'
-  $floorItems['125'] = i
-  TkcText.new(w,392,217.5, 'text'=>'125', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,399,187,409,187,409,207,474,207,474,164,399,164, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '126'
-  $floorItems['126'] = i
-  TkcText.new(w,436.5,185.5, 'text'=>'126', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,409,209,409,229,399,229,399,253,
-                     486,253,486,239,474,239,474,209, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '127'
-  $floorItems['127'] = i
-  TkcText.new(w,436.5,'231', 'text'=>'127', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,501,164,501,174,495,174,495,188,
-                     490,188,490,204,476,204,476,164, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'MShower'
-  $floorItems['MShower'] = i
-  TkcText.new(w,488.5,'184', 'text'=>'MShower', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,497,176,513,176,513,204,492,204,492,190,497,190, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'Closet'
-  $floorItems['Closet'] = i
-  TkcText.new(w,502.5,190, 'text'=>'Closet', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,476,237,476,206,513,206,513,254,488,254,488,237, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'WShower'
-  $floorItems['WShower'] = i
-  TkcText.new(w,494.5,230, 'text'=>'WShower', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,486,131,558,131,558,135,724,135,724,166,
-                     697,166,697,275,553,275,531,254,515,254,
-                     515,174,503,174,503,161,486,161, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '130'
-  $floorItems['130'] = i
-  TkcText.new(w,638.5,205, 'text'=>'130', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,308,242,339,242,339,248,342,248,
-                     342,246,397,246,397,276,393,276,
-                     393,309,300,309,300,248,308,248, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '102'
-  $floorItems['102'] = i
-  TkcText.new(w,367.5,278.5, 'text'=>'102', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,397,255,486,255,486,276,397,276, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '128'
-  $floorItems['128'] = i
-  TkcText.new(w,441.5,265.5, 'text'=>'128', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,510,309,486,309,486,255,530,255,
-                     552,277,561,277,561,325,510,325,
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '129'
-  $floorItems['129'] = i
-  TkcText.new(w,535.5,293, 'text'=>'129', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,696,281,740,281,740,387,642,387,
-                     642,389,561,389,561,277,696,277, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '133'
-  $floorItems['133'] = i
-  TkcText.new(w,628.5,335, 'text'=>'133', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,742,387,742,281,800,281,800,387, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '132'
-  $floorItems['132'] = i
-  TkcText.new(w,771,334, 'text'=>'132', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,800,168,800,280,699,280,699,168, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '134'
-  $floorItems['134'] = i
-  TkcText.new(w,749.5,224, 'text'=>'134', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,726,131,726,166,800,166,800,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '135'
-  $floorItems['135'] = i
-  TkcText.new(w,763,148.5, 'text'=>'135', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,340,360,335,363,331,365,326,366,304,366,
-                     304,312,396,312,396,288,400,288,404,288,
-                     409,290,413,292,418,297,421,302,422,309,
-                     421,318,417,325,411,330,405,332,397,333,
-                     344,333,340,334,336,336,335,338,332,342,
-                     331,347,332,351,334,354,336,357,341,359, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'Ramona Stair'
-  $floorItems['Ramona Stair'] = i
-  TkcText.new(w,368,323, 'text'=>'Ramona Stair', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,30,23,30,5,93,5,98,5,104,7,110,10,116,16,119,20,
-                     122,28,123,32,123,68,220,68,220,87,90,87,90,23, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'University Stair'
-  $floorItems['University Stair'] = i
-  TkcText.new(w,155,77.5, 'text'=>'University Stair', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,282,37,295,40,312,49,323,56,337,70,352,56,
-                     358,48,363,39,365,29,348,25,335,22,321,14,
-                     300,5,283,1,260,0,246,0,242,2,236,4,231,8,
-                     227,13,223,17,221,22,220,34,260,34, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'Plaza Stair'
-  $floorItems['Plaza Stair'] = i
-  TkcText.new(w,317.5,28.5, 'text'=>'Plaza Stair', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,220,34,260,34,282,37,295,40,312,49,
-                     323,56,337,70,350,83,365,94,377,100,
-                     386,104,386,128,220,128, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = 'Plaza Deck'
-  $floorItems['Plaza Deck'] = i
-  TkcText.new(w,303,81, 'text'=>'Plaza Deck', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,257,336,77,336,6,336,6,301,77,301,77,310,257,310,
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '106'
-  $floorItems['106'] = i
-  TkcText.new(w,131.5,318.5, 'text'=>'106', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,146,110,162,110,162,91,130,91,130,115,95,115,
-                     95,128,114,128,114,151,157,151,157,153,112,153,
-                     112,130,97,130,97,168,175,168,175,131,146,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels[i.id] = '119'
-  $floorItems['119'] = i
-  TkcText.new(w,143.5,133, 'text'=>'119', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  TkcLine.new(w,155,191,155,189, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,155,177,155,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,96,129,96,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,78,169,176,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,176,247,176,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,340,206,307,206, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,340,187,340,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,340,210,340,201, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,340,247,340,224, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,340,241,307,241, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,376,246,376,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,307,247,307,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,376,170,307,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,315,129,315,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,147,129,176,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,202,133,176,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,398,129,315,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,258,352,258,387, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,60,387,60,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,0,337,0,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,60,391,0,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,3,114,3,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,258,387,60,387, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,237,52,273, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,189,52,225, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,140,52,177, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,395,306,395,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,531,254,398,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,475,178,475,238, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,502,162,398,162, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,398,129,398,188, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,383,188,376,188, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,408,188,408,194, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,398,227,398,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,408,227,398,227, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,408,222,408,227, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,408,206,408,210, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,408,208,475,208, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,484,278,484,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,484,311,508,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,508,327,508,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,559,327,508,327, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,644,391,559,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,644,389,644,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,514,205,475,205, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,496,189,496,187, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,559,129,484,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,484,162,484,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,725,133,559,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,559,129,559,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,725,149,725,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,725,129,802,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,802,389,802,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,739,167,802,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,396,188,408,188, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,0,337,9,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,58,337,21,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,43,391,43,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,105,337,75,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,91,387,91,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,154,337,117,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,139,387,139,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,227,337,166,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,258,337,251,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,258,328,302,328, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,302,355,302,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,395,311,302,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,484,278,395,278, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,395,294,395,278, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,473,278,473,275, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,473,256,473,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,533,257,531,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,553,276,551,274, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,698,276,553,276, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,559,391,559,327, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,802,389,644,389, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,741,314,741,389, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,698,280,698,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,707,280,698,280, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,802,280,731,280, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,741,280,741,302, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,698,167,727,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,725,137,725,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,514,254,514,175, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,496,175,514,175, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,502,175,502,162, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,475,166,475,162, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,496,176,496,175, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,491,189,496,189, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,491,205,491,189, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,487,238,475,238, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,487,240,487,238, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,487,252,487,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,315,133,304,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,256,133,280,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,78,247,270,247, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,307,247,294,247, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,214,133,232,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,217,247,217,266, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,217,309,217,291, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,217,309,172,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,154,309,148,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,175,300,175,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,151,300,175,300, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,151,247,151,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,78,237,78,265, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,78,286,78,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,106,309,78,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,130,309,125,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,99,309,99,247, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,127,299,99,299, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,127,309,127,299, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,155,191,137,191, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,137,169,137,191, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,78,171,78,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,78,190,78,218, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,86,192,86,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,86,192,78,192, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,301,3,301, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,286,52,301, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,252,3,252, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,203,3,203, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,3,156,52,156, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,8,25,8,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,63,114,3,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,75,114,97,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,108,114,129,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,129,114,129,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,52,114,52,128, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,132,89,88,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,88,25,88,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,88,114,88,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,218,89,144,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,147,111,147,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,162,111,147,111, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,162,109,162,111, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,162,96,162,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,218,89,218,94, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,218,89,218,119, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,8,25,88,25, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,258,337,258,328, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,113,129,96,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,302,355,258,355, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,386,104,386,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,377,100,386,104, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,365,94,377,100, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,350,83,365,94, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,337,70,350,83, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,337,70,323,56, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,312,49,323,56, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,295,40,312,49, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,282,37,295,40, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,260,34,282,37, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,253,34,260,34, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,386,128,386,104, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,113,152,156,152, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,113,152,156,152, 'fill'=>color, 'tags'=>['floor1','wall'])
-  TkcLine.new(w,113,152,113,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-end
-
-# floor_fg2 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the foreground information for the second
-# floor (office outlines and numbers).
-#
-# Arguments:
-# w -           The canvas window.
-# color -       Color to use for drawing foreground information.
-
-def floor_fg2(w,color)
-  i = TkcPolygon.new(w,748,188,755,188,755,205,758,205,758,222,
-                     800,222,800,168,748,168, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '238'
-  $floorItems['238'] = i
-  TkcText.new(w,774,195, 'text'=>'238', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,726,188,746,188,746,166,800,166,800,131,726,131,
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '237'
-  $floorItems['237'] = i
-  TkcText.new(w,763,148.5, 'text'=>'237', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,497,187,497,204,559,204,559,324,641,324,
-                     643,324,643,291,641,291,641,205,696,205,
-                     696,291,694,291,694,314,715,314,715,291,
-                     715,205,755,205,755,190,724,190,724,187, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '246'
-  $floorItems['246'] = i
-  TkcText.new(w,600,264, 'text'=>'246', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,694,279,643,279,643,314,694,314, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '247'
-  $floorItems['247'] = i
-  TkcText.new(w,668.5,296.5, 'text'=>'247', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,232,250,308,250,308,242,339,242,339,246,
-                     397,246,397,255,476,255,476,250,482,250,559,250,
-                     559,274,482,274,482,278,396,278,396,274,232,274, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '202'
-  $floorItems['202'] = i
-  TkcText.new(w,285.5,260, 'text'=>'202', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,53,228,53,338,176,338,233,338,233,196,
-                     306,196,306,180,175,180,175,169,156,169,
-                     156,196,176,196,176,228, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '206'
-  $floorItems['206'] = i
-  TkcText.new(w,143,267, 'text'=>'206', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,277,6,277,6,338,51,338, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '212'
-  $floorItems['212'] = i
-  TkcText.new(w,28.5,307.5, 'text'=>'212', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,557,276,486,276,486,309,510,309,510,325,557,325, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '245'
-  $floorItems['245'] = i
-  TkcText.new(w,521.5,300.5, 'text'=>'245', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,560,389,599,389,599,326,560,326, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '244'
-  $floorItems['244'] = i
-  TkcText.new(w,579.5,357.5, 'text'=>'244', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,601,389,601,326,643,326,643,389, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '243'
-  $floorItems['243'] = i
-  TkcText.new(w,622,357.5, 'text'=>'243', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,688,316,645,316,645,365,688,365, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '242'
-  $floorItems['242'] = i
-  TkcText.new(w,666.5,340.5, 'text'=>'242', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,802,367,759,367,759,226,802,226, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = 'Barbecue Deck'
-  $floorItems['Barbecue Deck'] = i
-  TkcText.new(w,780.5,296.5, 'text'=>'Barbecue Deck', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,755,262,755,314,717,314,717,262, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '240'
-  $floorItems['240'] = i
-  TkcText.new(w,736,288, 'text'=>'240', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,755,316,689,316,689,365,755,365, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '241'
-  $floorItems['241'] = i
-  TkcText.new(w,722,340.5, 'text'=>'241', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,755,206,717,206,717,261,755,261, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '239'
-  $floorItems['239'] = i
-  TkcText.new(w,736,233.5, 'text'=>'239', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,695,277,643,277,643,206,695,206, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '248'
-  $floorItems['248'] = i
-  TkcText.new(w,669,241.5, 'text'=>'248', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,676,135,676,185,724,185,724,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '236'
-  $floorItems['236'] = i
-  TkcText.new(w,700,160, 'text'=>'236', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,675,135,635,135,635,145,628,145,628,185,675,185, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '235'
-  $floorItems['235'] = i
-  TkcText.new(w,651.5,160, 'text'=>'235', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,626,143,633,143,633,135,572,135,
-                     572,143,579,143,579,185,626,185, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '234'
-  $floorItems['234'] = i
-  TkcText.new(w,606,160, 'text'=>'234', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,557,135,571,135,571,145,578,145,
-                     578,185,527,185,527,131,557,131, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '233'
-  $floorItems['233'] = i
-  TkcText.new(w,552.5,158, 'text'=>'233', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,476,249,557,249,557,205,476,205,
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '230'
-  $floorItems['230'] = i
-  TkcText.new(w,516.5,227, 'text'=>'230', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,476,164,486,164,486,131,525,131,525,185,476,185, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '232'
-  $floorItems['232'] = i
-  TkcText.new(w,500.5,158, 'text'=>'232', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,476,186,495,186,495,204,476,204, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '229'
-  $floorItems['229'] = i
-  TkcText.new(w,485.5,195, 'text'=>'229', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,474,207,409,207,409,187,399,187,399,164,474,164, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '227'
-  $floorItems['227'] = i
-  TkcText.new(w,436.5,185.5, 'text'=>'227', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,399,228,399,253,474,253,474,209,409,209,409,228, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '228'
-  $floorItems['228'] = i
-  TkcText.new(w,436.5,231, 'text'=>'228', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,397,246,397,226,407,226,407,189,377,189,377,246, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '226'
-  $floorItems['226'] = i
-  TkcText.new(w,392,217.5, 'text'=>'226', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,377,169,316,169,316,131,397,131,397,188,377,188, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '225'
-  $floorItems['225'] = i
-  TkcText.new(w,356.5,150, 'text'=>'225', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,234,198,306,198,306,249,234,249, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '224'
-  $floorItems['224'] = i
-  TkcText.new(w,270,223.5, 'text'=>'224', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,270,179,306,179,306,170,314,170,314,135,270,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '223'
-  $floorItems['223'] = i
-  TkcText.new(w,292,157, 'text'=>'223', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,268,179,221,179,221,135,268,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '222'
-  $floorItems['222'] = i
-  TkcText.new(w,244.5,157, 'text'=>'222', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,177,179,219,179,219,135,177,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '221'
-  $floorItems['221'] = i
-  TkcText.new(w,198,157, 'text'=>'221', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,299,327,349,327,349,284,341,284,341,276,299,276, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '204'
-  $floorItems['204'] = i
-  TkcText.new(w,324,301.5, 'text'=>'204', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,234,276,297,276,297,327,257,327,257,338,234,338, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '205'
-  $floorItems['205'] = i
-  TkcText.new(w,265.5,307, 'text'=>'205', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,256,385,256,340,212,340,212,385,
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '207'
-  $floorItems['207'] = i
-  TkcText.new(w,234,362.5, 'text'=>'207', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,210,340,164,340,164,385,210,385, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '208'
-  $floorItems['208'] = i
-  TkcText.new(w,187,362.5, 'text'=>'208', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,115,340,162,340,162,385,115,385, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '209'
-  $floorItems['209'] = i
-  TkcText.new(w,138.5,362.5, 'text'=>'209', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,89,228,89,156,53,156,53,228, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '217'
-  $floorItems['217'] = i
-  TkcText.new(w,71,192, 'text'=>'217', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,89,169,97,169,97,190,89,190, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '217A'
-  $floorItems['217A'] = i
-  TkcText.new(w,93,179.5, 'text'=>'217A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,89,156,89,168,95,168,95,135,53,135,53,156, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '216'
-  $floorItems['216'] = i
-  TkcText.new(w,71,145.5, 'text'=>'216', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,179,51,135,6,135,6,179, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '215'
-  $floorItems['215'] = i
-  TkcText.new(w,28.5,157, 'text'=>'215', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,227,6,227,6,180,51,180, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '214'
-  $floorItems['214'] = i
-  TkcText.new(w,28.5,203.5, 'text'=>'214', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,275,6,275,6,229,51,229, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '213'
-  $floorItems['213'] = i
-  TkcText.new(w,28.5,252, 'text'=>'213', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,114,340,67,340,67,385,114,385, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '210'
-  $floorItems['210'] = i
-  TkcText.new(w,90.5,362.5, 'text'=>'210', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,59,389,59,385,65,385,65,340,1,340,1,389, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '211'
-  $floorItems['211'] = i
-  TkcText.new(w,33,364.5, 'text'=>'211', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,393,309,350,309,350,282,342,282,342,276,393,276, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '203'
-  $floorItems['203'] = i
-  TkcText.new(w,367.5,292.5, 'text'=>'203', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,99,191,91,191,91,226,174,226,174,198,
-                     154,198,154,192,109,192,109,169,99,169, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '220'
-  $floorItems['220'] = i
-  TkcText.new(w,132.5,208.5, 'text'=>'220', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,339,205,307,205,307,171,339,171, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = 'Priv Lift2'
-  $floorItems['Priv Lift2'] = i
-  TkcText.new(w,323,188, 'text'=>'Priv Lift2', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,307,240,339,240,339,206,307,206, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = 'Pub Lift 2'
-  $floorItems['Pub Lift 2'] = i
-  TkcText.new(w,323,223, 'text'=>'Pub Lift 2', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,175,168,97,168,97,131,175,131, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '218'
-  $floorItems['218'] = i
-  TkcText.new(w,136,149.5, 'text'=>'218', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,154,191,111,191,111,169,154,169, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '219'
-  $floorItems['219'] = i
-  TkcText.new(w,132.5,180, 'text'=>'219', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,375,246,375,172,341,172,341,246, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels[i.id] = '201'
-  $floorItems['201'] = i
-  TkcText.new(w,358,209, 'text'=>'201', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  TkcLine.new(w,641,186,678,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,350,757,367, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,634,133,634,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,634,144,627,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,572,133,572,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,572,144,579,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,398,129,398,162, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,174,197,175,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,175,197,175,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,206,757,221, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,396,188,408,188, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,727,189,725,189, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,747,167,802,167, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,747,167,747,189, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,755,189,739,189, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,769,224,757,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,802,224,802,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,802,129,725,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,725,189,725,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,725,186,690,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,676,133,676,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,627,144,627,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,629,186,593,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,579,144,579,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,559,129,559,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,725,133,559,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,484,162,484,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,559,129,484,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,526,129,526,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,540,186,581,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,528,186,523,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,511,186,475,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,496,190,496,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,496,205,496,202, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,475,205,527,205, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,558,205,539,205, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,558,205,558,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,558,249,475,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,662,206,642,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,695,206,675,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,695,278,642,278, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,642,291,642,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,695,291,695,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,716,208,716,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,206,716,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,221,757,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,793,224,802,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,262,716,262, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,716,220,716,264, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,716,315,716,276, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,315,703,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,325,757,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,757,367,644,367, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,689,367,689,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,647,315,644,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,659,315,691,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,600,325,600,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,627,325,644,325, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,644,391,644,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,615,325,575,325, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,644,391,558,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,563,325,558,325, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,558,391,558,314, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,558,327,508,327, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,558,275,484,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,558,302,558,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,508,327,508,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,484,311,508,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,484,275,484,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,475,208,408,208, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,408,206,408,210, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,408,222,408,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,408,227,398,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,398,227,398,254, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,408,188,408,194, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,383,188,376,188, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,398,188,398,162, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,398,162,484,162, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,475,162,475,254, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,398,254,475,254, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,484,280,395,280, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,395,311,395,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,307,197,293,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,278,197,233,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,233,197,233,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,307,179,284,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,233,249,278,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,269,179,269,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,220,179,220,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,155,191,110,191, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,90,190,98,190, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,98,169,98,190, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,52,133,52,165, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,52,214,52,177, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,52,226,52,262, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,52,274,52,276, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,234,275,234,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,226,339,258,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,211,387,211,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,214,339,177,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,258,387,60,387, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,3,133,3,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,165,339,129,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,117,339,80,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,68,339,59,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,0,339,46,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,60,391,0,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,0,339,0,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,60,387,60,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,258,329,258,387, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,350,329,258,329, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,395,311,350,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,398,129,315,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,176,133,315,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,176,129,96,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,3,133,96,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,66,387,66,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,115,387,115,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,163,387,163,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,234,275,276,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,288,275,309,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,298,275,298,329, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,341,283,350,283, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,321,275,341,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,375,275,395,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,315,129,315,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,376,170,307,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,307,250,307,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,376,245,376,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,340,241,307,241, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,340,245,340,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,340,210,340,201, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,340,187,340,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,340,206,307,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,293,250,307,250, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,271,179,238,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,226,179,195,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,176,129,176,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,182,179,176,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,174,169,176,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,162,169,90,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,96,169,96,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,175,227,90,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,90,190,90,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,52,179,3,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,52,228,3,228, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,52,276,3,276, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,155,177,155,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,110,191,110,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,155,189,155,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,350,283,350,329, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,162,197,155,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  TkcLine.new(w,341,275,341,283, 'fill'=>color, 'tags'=>['floor2','wall'])
-end
-
-# floor_fg3 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the foreground information for the third
-# floor (office outlines and numbers).
-#
-# Arguments:
-# w -           The canvas window.
-# color -       Color to use for drawing foreground information.
-
-def floor_fg3(w,color)
-  i = TkcPolygon.new(w,89,228,89,180,70,180,70,228,
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '316'
-  $floorItems['316'] = i
-  TkcText.new(w,79.5,204, 'text'=>'316', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,115,368,162,368,162,323,115,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '309'
-  $floorItems['309'] = i
-  TkcText.new(w,138.5,345.5, 'text'=>'309', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,164,323,164,368,211,368,211,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '308'
-  $floorItems['308'] = i
-  TkcText.new(w,187.5,345.5, 'text'=>'308', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,256,368,212,368,212,323,256,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '307'
-  $floorItems['307'] = i
-  TkcText.new(w,234,345.5, 'text'=>'307', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,244,276,297,276,297,327,260,327,260,321,244,321, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '305'
-  $floorItems['305'] = i
-  TkcText.new(w,270.5,301.5, 'text'=>'305', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,251,219,251,203,244,203,244,219,
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '324B'
-  $floorItems['324B'] = i
-  TkcText.new(w,247.5,211, 'text'=>'324B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,251,249,244,249,244,232,251,232, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '324A'
-  $floorItems['324A'] = i
-  TkcText.new(w,247.5,240.5, 'text'=>'324A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,223,135,223,179,177,179,177,135, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '320'
-  $floorItems['320'] = i
-  TkcText.new(w,200,157, 'text'=>'320', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,114,368,114,323,67,323,67,368, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '310'
-  $floorItems['310'] = i
-  TkcText.new(w,90.5,345.5, 'text'=>'310', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,23,277,23,321,68,321,68,277, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '312'
-  $floorItems['312'] = i
-  TkcText.new(w,45.5,299, 'text'=>'312', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,23,229,68,229,68,275,23,275, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '313'
-  $floorItems['313'] = i
-  TkcText.new(w,45.5,252, 'text'=>'313', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,68,227,23,227,23,180,68,180, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '314'
-  $floorItems['314'] = i
-  TkcText.new(w,40.5,203.5, 'text'=>'314', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,95,179,95,135,23,135,23,179, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '315'
-  $floorItems['315'] = i
-  TkcText.new(w,59,157, 'text'=>'315', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,99,226,99,204,91,204,91,226, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '316B'
-  $floorItems['316B'] = i
-  TkcText.new(w,95,215, 'text'=>'316B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,91,202,99,202,99,180,91,180, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '316A'
-  $floorItems['316A'] = i
-  TkcText.new(w,95,191, 'text'=>'316A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,97,169,109,169,109,192,154,192,154,198,
-                     174,198,174,226,101,226,101,179,97,179, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '319'
-  $floorItems['319'] = i
-  TkcText.new(w,141.5,209, 'text'=>'319', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,65,368,58,368,58,389,1,389,1,333,23,333,23,323,65,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '311'
-  $floorItems['311'] = i
-  TkcText.new(w,29.5,361, 'text'=>'311', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,154,191,111,191,111,169,154,169, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '318'
-  $floorItems['318'] = i
-  TkcText.new(w,132.5,180, 'text'=>'318', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,175,168,97,168,97,131,175,131, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '317'
-  $floorItems['317'] = i
-  TkcText.new(w,136,149.5, 'text'=>'317', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,274,194,274,221,306,221,306,194, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '323'
-  $floorItems['323'] = i
-  TkcText.new(w,290,207.5, 'text'=>'323', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,306,222,274,222,274,249,306,249, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '325'
-  $floorItems['325'] = i
-  TkcText.new(w,290,235.5, 'text'=>'325', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,263,179,224,179,224,135,263,135, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '321'
-  $floorItems['321'] = i
-  TkcText.new(w,243.5,157, 'text'=>'321', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,314,169,306,169,306,192,273,192,
-                     264,181,264,135,314,135, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '322'
-  $floorItems['322'] = i
-  TkcText.new(w,293.5,163.5, 'text'=>'322', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,307,240,339,240,339,206,307,206, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = 'Pub Lift3'
-  $floorItems['Pub Lift3'] = i
-  TkcText.new(w,323,223, 'text'=>'Pub Lift3', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,339,205,307,205,307,171,339,171, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = 'Priv Lift3'
-  $floorItems['Priv Lift3'] = i
-  TkcText.new(w,323,188, 'text'=>'Priv Lift3', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,350,284,376,284,376,276,397,276,397,309,350,309, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '303'
-  $floorItems['303'] = i
-  TkcText.new(w,373.5,292.5, 'text'=>'303', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,272,203,272,249,252,249,252,230,
-                     244,230,244,221,252,221,252,203, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '324'
-  $floorItems['324'] = i
-  TkcText.new(w,262,226, 'text'=>'324', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,299,276,299,327,349,327,349,284,341,284,341,276, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '304'
-  $floorItems['304'] = i
-  TkcText.new(w,324,301.5, 'text'=>'304', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,375,246,375,172,341,172,341,246, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '301'
-  $floorItems['301'] = i
-  TkcText.new(w,358,209, 'text'=>'301', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,397,246,377,246,377,185,397,185, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '327'
-  $floorItems['327'] = i
-  TkcText.new(w,387,215.5, 'text'=>'327', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,316,131,316,169,377,169,377,185,397,185,397,131, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '326'
-  $floorItems['326'] = i
-  TkcText.new(w,365.5,150, 'text'=>'326', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,308,251,242,251,242,274,342,274,342,282,375, 282,
-                     375,274,397,274,397,248,339,248,339,242,308,242, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '302'
-  $floorItems['302'] = i
-  TkcText.new(w,319.5,261, 'text'=>'302', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,70,321,242,321,242,200,259,200,259,203,272,203,
-                     272,193,263,180,242,180,175,180,175,169,156,169,
-                     156,196,177,196,177,228,107,228,70,228,70,275,107,275,
-                     107,248,160,248,160,301,107,301,107,275,70,275, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels[i.id] = '306'
-  $floorItems['306'] = i
-  TkcText.new(w,200.5,284.5, 'text'=>'306', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  TkcLine.new(w,341,275,341,283, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,162,197,155,197, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,396,247,399,247, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,399,129,399,311, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,258,202,243,202, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,350,283,350,329, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,251,231,243,231, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,243,220,251,220, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,243,250,243,202, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,155,197,155,190, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,110,192,110,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,155,192,110,192, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,155,177,155,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,176,197,176,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,69,280,69,274, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,21,276,69,276, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,69,262,69,226, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,21,228,69,228, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,21,179,75,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,69,179,69,214, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,90,220,90,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,90,204,90,202, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,90,203,100,203, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,90,187,90,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,90,227,176,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,100,179,100,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,100,179,87,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,96,179,96,129, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,162,169,96,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,173,169,176,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,182,179,176,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,176,129,176,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,195,179,226,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,224,133,224,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,264,179,264,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,238,179,264,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,273,207,273,193, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,273,235,273,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,273,224,273,219, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,273,193,307,193, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,273,222,307,222, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,273,250,307,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,384,247,376,247, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,340,206,307,206, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,340,187,340,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,340,210,340,201, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,340,247,340,224, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,340,241,307,241, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,376,247,376,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,307,250,307,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,376,170,307,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,315,129,315,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,376,283,366,283, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,376,283,376,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,399,275,376,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,341,275,320,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,341,283,350,283, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,298,275,298,329, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,308,275,298,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,243,322,243,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,243,275,284,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,258,322,226,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,212,370,212,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,214,322,177,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,163,370,163,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,165,322,129,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,84,322,117,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,71,322,64,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,115,322,115,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,66,322,66,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,52,322,21,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,21,331,0,331, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,21,331,21,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,96,133,21,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,176,129,96,129, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,315,133,176,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,315,129,399,129, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,399,311,350,311, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,350,329,258,329, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,258,322,258,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,60,370,258,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,60,370,60,391, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,0,391,0,331, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,60,391,0,391, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,307,250,307,242, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,273,250,307,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-  TkcLine.new(w,258,250,243,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-end
-
-# Below is the "main program" that creates the floorplan demonstration.
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($floor_demo) && $floor_demo
-  $floor_demo.destroy 
-  $floor_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$floor_demo = TkToplevel.new {|w|
-  title("Floorplan Canvas Demonstration")
-  iconname("Floorplan")
-  positionWindow(w)
-  geometry('+20+20')
-  minsize(100,100)
-}
-
-base_frame = TkFrame.new($floor_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'8i', 'justify'=>'left', 
-            'text'=>"¤³¤Î¥¦¥£¥ó¥É¥¦¤Ë¤Ï¥Ç¥£¥¸¥¿¥ë¥¨¥¯¥¤¥Ã¥×¥á¥ó¥È¼Ò¤Î¥¦¥§¥¹¥¿¥ó¥ê¥µ¡¼¥Á¥é¥Ü¥é¥È¥ê (DECWRL) ¤Î´Ö¼è¤ê¤¬½ñ¤«¤ì¤¿¥­¥ã¥ó¥Ð¥¹ widget ¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï 3³¬·ú¤Æ¤Ç¡¢¾ï¤Ë¤½¤Î¤¦¤Á¤Î1³¬Ê¬¤¬ÁªÂò¡¢¤Ä¤Þ¤ê¤½¤Î´Ö¼è¤ê¤¬É½¼¨¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤¢¤ë³¬¤òÁªÂò¤¹¤ë¤Ë¤Ï¡¢¤½¤Î¾å¤Ç¥Þ¥¦¥¹¤Îº¸¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£¥Þ¥¦¥¹¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë³¬¤Î¾å¤òÆ°¤¯¤È¡¢¤½¤Î²¼¤Ë¤¢¤ëÉô²°¤Î¿§¤¬ÊѤï¤ê¡¢Éô²°Èֹ椬¡ÖÉô²°ÈÖ¹æ:¡×¥¨¥ó¥È¥ê¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£¤Þ¤¿¡¢¥¨¥ó¥È¥ê¤ËÉô²°ÈÖ¹æ¤ò½ñ¤¯¤È¤½¤ÎÉô²°¤Î¿§¤¬ÊѤï¤ê¤Þ¤¹¡£"){
-  pack('side'=>'top')
-}
-
-# frame À¸À®
-$floor_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $floor_demo
-      $floor_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'floor'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$floor_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# ÊÑ¿ôÀßÄê
-$floorLabels = {}
-$floorItems = {}
-
-# canvas ÀßÄê
-if $tk_version =~ /^4\.[01]/
-  $floor_canvas_frame = TkFrame.new(base_frame,'bd'=>2,'relief'=>'sunken',
-                                    'highlightthickness'=>2)
-  $floor_canvas = TkCanvas.new($floor_canvas_frame, 
-                               'width'=>900, 'height'=>500, 'borderwidth'=>0, 
-                               'highlightthickness'=>0) {|c|
-    TkScrollbar.new(base_frame, 'orient'=>'horiz', 
-                    'command'=>proc{|*args| c.xview(*args)}){|hs|
-      c.xscrollcommand(proc{|first,last| hs.set first,last})
-      pack('side'=>'bottom', 'fill'=>'x')
-    }
-    TkScrollbar.new(base_frame, 'command'=>proc{|*args| c.yview(*args)}){|vs|
-      c.yscrollcommand(proc{|first,last| vs.set first,last})
-      pack('side'=>'right', 'fill'=>'y')
-    }
-  }
-  $floor_canvas_frame.pack('side'=>'top','fill'=>'both', 'expand'=>'yes')
-  $floor_canvas.pack('expand'=>'yes', 'fill'=>'both')
-
-else
-  TkFrame.new(base_frame) {|f|
-    pack('side'=>'top', 'fill'=>'both', 'expand'=>'yes')
-
-    h = TkScrollbar.new(f, 'highlightthickness'=>0, 'orient'=>'horizontal')
-    v = TkScrollbar.new(f, 'highlightthickness'=>0, 'orient'=>'vertical')
-
-    TkFrame.new(f, 'bd'=>2, 'relief'=>'sunken') {|f1|
-      $floor_canvas = TkCanvas.new(f1, 'width'=>900, 'height'=>500, 
-                                   'borderwidth'=>0, 
-                                   'highlightthickness'=>0) {
-        xscrollcommand(proc{|first,last| h.set first,last})
-        yscrollcommand(proc{|first,last| v.set first,last})
-        pack('expand'=>'yes', 'fill'=>'both')
-      }
-      grid('padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>0, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    }
-
-    v.grid('padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>1, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    h.grid('padx'=>1, 'pady'=>1, 'row'=>1, 'column'=>0, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-
-    TkGrid.rowconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
-    TkGrid.columnconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
-
-    pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>1)
-
-    v.command(proc{|*args| $floor_canvas.yview(*args)})
-    h.command(proc{|*args| $floor_canvas.xview(*args)})
-  }
-end
-
-
-# Create an entry for displaying and typing in current room.
-
-$currentRoom = TkVariable.new
-$floor_entry = TkEntry.new($floor_canvas, 'width'=>10, 'relief'=>'sunken', 
-                           'bd'=>2, 'textvariable'=>$currentRoom)
-
-# Choose colors, then fill in the floorplan.
-
-$floor_colors = {}
-if TkWinfo.depth($floor_canvas) > 1
-  $floor_colors['bg1'] = '#a9c1da'
-  $floor_colors['outline1'] = '#77889a'
-  $floor_colors['bg2'] = '#9ab0c6'
-  $floor_colors['outline2'] = '#687786'
-  $floor_colors['bg3'] = '#8ba0b3'
-  $floor_colors['outline3'] = '#596673'
-  $floor_colors['offices'] = 'Black'
-  $floor_colors['active'] = '#c4d1df'
-else
-  $floor_colors['bg1'] = 'white'
-  $floor_colors['outline1'] = 'black'
-  $floor_colors['bg2'] = 'white'
-  $floor_colors['outline2'] = 'black'
-  $floor_colors['bg3'] = 'white'
-  $floor_colors['outline3'] = 'black'
-  $floor_colors['offices'] = 'Black'
-  $floor_colors['active'] = 'black'
-end
-
-$activeFloor = ''
-floorDisplay $floor_canvas,3
-
-# Set up event bindings for canvas:
-
-$floor_canvas.itembind('floor1', '1', proc{floorDisplay $floor_canvas,1})
-$floor_canvas.itembind('floor2', '1', proc{floorDisplay $floor_canvas,2})
-$floor_canvas.itembind('floor3', '1', proc{floorDisplay $floor_canvas,3})
-$floor_canvas.itembind('room', 'Enter', proc{newRoom $floor_canvas})
-$floor_canvas.itembind('room', 'Leave', proc{$currentRoom.value = ''})
-$floor_canvas.bind('2', proc{|x,y| $floor_canvas.scan_mark x,y}, '%x %y')
-$floor_canvas.bind('B2-Motion', 
-                   proc{|x,y| $floor_canvas.scan_dragto x,y}, '%x %y')
-$floor_canvas.bind('Destroy', proc{$currentRoom.unset})
-$currentRoom.value = ''
-$currentRoom.trace('w',proc{roomChanged $floor_canvas})
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/floor2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/floor2.rb
deleted file mode 100644 (file)
index d4381c5..0000000
+++ /dev/null
@@ -1,1719 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# floorDisplay widget demo 2 (called by 'widget')
-#
-
-# floorDisplay2 --
-# Recreate the floorplan display in the canvas given by "w".  The
-# floor given by "active" is displayed on top with its office structure
-# visible.
-#
-# Arguments:
-# w -           Name of the canvas window.
-# active -      Number of active floor (1, 2, or 3).
-
-def floorDisplay2(w,active)
-  return if $activeFloor2 == active
-
-  w.delete('all')
-  $activeFloor2 = active
-
-  # First go through the three floors, displaying the backgrounds for 
-  # each floor.
-
-  floor2_bg1(w,$floor2_colors['bg1'],$floor2_colors['outline1'])
-  floor2_bg2(w,$floor2_colors['bg2'],$floor2_colors['outline2'])
-  floor2_bg3(w,$floor2_colors['bg3'],$floor2_colors['outline3'])
-
-  # Raise the background for the active floor so that it's on top.
-
-  w.raise("floor#{active}")
-
-  # Create a dummy item just to mark this point in the display list, 
-  # so we can insert highlights here.
-
-  w.create(TkcRectangle,0,100,1,101,'fill'=>'','outline'=>'','tags'=>'marker')
-
-  # Add the walls and labels for the active floor, along with 
-  # transparent polygons that define the rooms on the floor.
-  # Make sure that the room polygons are on top.
-
-  $floorLabels2.clear
-  $floorItems2.clear
-  send("floor2_fg#{active}", w, $floor2_colors['offices'])
-  w.raise('room')
-
-  # Offset the floors diagonally from each other.
-
-  w.move('floor1', '2c', '2c')
-  w.move('floor2', '1c', '1c')
-
-  # Create items for the room entry and its label.
-  w.create(TkcWindow, 600, 100, 'anchor'=>'w', 'window'=>$floor2_entry)
-  w.create(TkcText, 600, 100, 'anchor'=>'e', 'text'=>"Éô²°ÈÖ¹æ: ")
-  w['scrollregion'] = w.bbox('all')
-end
-
-# newRoom2 --
-# This method is invoked whenever the mouse enters a room
-# in the floorplan.  It changes tags so that the current room is
-# highlighted.
-#
-# Arguments:
-# w  -          The name of the canvas window.
-
-def newRoom2(w)
-  id = w.find_withtag('current')[0]
-  $currentRoom2.value = $floorLabels2[id.id] if id != ""
-  Tk.update(true)
-end
-
-# roomChanged2 --
-# This method is invoked whenever the currentRoom variable changes.
-# It highlights the current room and unhighlights any previous room.
-#
-# Arguments:
-# w -           The canvas window displaying the floorplan.
-# args -        Not used.
-
-def roomChanged2(w,*args)
-  w.delete('highlight')
-  item = $floorItems2[$currentRoom2.value]
-  return if item == nil
-  new = TkcPolygon.new(w, *(w.coords(item)))
-  new.configure('fill'=>$floor2_colors['active'], 'tags'=>'highlight')
-  w.raise(new, 'marker')
-end
-
-# floor2_bg1 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the background information for the first
-# floor.
-#
-# Arguments:
-# w -           The canvas window.
-# fill -        Fill color to use for the floor's background.
-# outline -     Color to use for the floor's outline.
-
-def floor2_bg1(w,fill,outline)
-  w.create(TkcPolygon,347,80,349,82,351,84,353,85,363,92,375,99,386,104,
-                 386,129,398,129,398,162,484,162,484,129,559,129,559,133,725,
-                 133,725,129,802,129,802,389,644,389,644,391,559,391,559,327,
-                 508,327,508,311,484,311,484,278,395,278,395,288,400,288,404,
-                 288,409,290,413,292,418,297,421,302,422,309,421,318,417,325,
-                 411,330,405,332,397,333,344,333,340,334,336,336,335,338,332,
-                 342,331,347,332,351,334,354,336,357,341,359,340,360,335,363,
-                 331,365,326,366,304,366,304,355,258,355,258,387,60,387,60,391,
-                 0,391,0,337,3,337,3,114,8,114,8,25,30,25,30,5,93,5,98,5,104,7,
-                 110,10,116,16,119,20,122,28,123,32,123,68,220,68,220,34,221,
-                 22,223,17,227,13,231,8,236,4,242,2,246,0,260,0,283,1,300,5,
-                 321,14,335,22,348,25,365,29,363,39,358,48,352,56,337,70,
-                 344,76,347,80, 'tags'=>['floor1','bg'], 'fill'=>fill)
-  w.create(TkcLine,386,129,398,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,258,355,258,387, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,60,387,60,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,0,337,0,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,60,391,0,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,3,114,3,337, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,258,387,60,387, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,484,162,398,162, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,398,162,398,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,484,278,484,311, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,484,311,508,311, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,508,327,508,311, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,559,327,508,327, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,644,391,559,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,644,389,644,391, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,559,129,484,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,484,162,484,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,725,133,559,133, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,559,129,559,133, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,725,129,802,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,802,389,802,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,3,337,0,337, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,559,391,559,327, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,802,389,644,389, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,725,133,725,129, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,8,25,8,114, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,8,114,3,114, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,30,25,8,25, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,484,278,395,278, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,30,25,30,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,93,5,30,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,98,5,93,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,104,7,98,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,110,10,104,7, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,116,16,110,10, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,119,20,116,16, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,122,28,119,20, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,123,32,122,28, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,123,68,123,32, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,220,68,123,68, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,386,129,386,104, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,386,104,375,99, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,375,99,363,92, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,353,85,363,92, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,220,68,220,34, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,337,70,352,56, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,352,56,358,48, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,358,48,363,39, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,363,39,365,29, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,365,29,348,25, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,348,25,335,22, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,335,22,321,14, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,321,14,300,5, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,300,5,283,1, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,283,1,260,0, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,260,0,246,0, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,246,0,242,2, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,242,2,236,4, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,236,4,231,8, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,231,8,227,13, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,223,17,227,13, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,221,22,223,17, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,220,34,221,22, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,340,360,335,363, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,335,363,331,365, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,331,365,326,366, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,326,366,304,366, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,304,355,304,366, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,395,288,400,288, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,404,288,400,288, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,409,290,404,288, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,413,292,409,290, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,418,297,413,292, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,421,302,418,297, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,422,309,421,302, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,421,318,422,309, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,421,318,417,325, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,417,325,411,330, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,411,330,405,332, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,405,332,397,333, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,397,333,344,333, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,344,333,340,334, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,340,334,336,336, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,336,336,335,338, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,335,338,332,342, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,331,347,332,342, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,332,351,331,347, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,334,354,332,351, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,336,357,334,354, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,341,359,336,357, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,341,359,340,360, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,395,288,395,278, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,304,355,258,355, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,347,80,344,76, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,344,76,337,70, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,349,82,347,80, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,351,84,349,82, 'fill'=>outline, 'tags'=>['floor1','bg'])
-  w.create(TkcLine,353,85,351,84, 'fill'=>outline, 'tags'=>['floor1','bg'])
-end
-
-# floor2_bg2 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the background information for the first
-# floor.
-#
-# Arguments:
-# w -           The canvas window.
-# fill -        Fill color to use for the floor's background.
-# outline -     Color to use for the floor's outline.
-
-def floor2_bg2(w,fill,outline)
-  w.create(TkcPolygon,559,129,484,129,484,162,398,162,398,129,315,129,
-                 315,133,176,133,176,129,96,129,96,133,3,133,3,339,0,339,0,391,
-                 60,391,60,387,258,387,258,329,350,329,350,311,395,311,395,280,
-                 484,280,484,311,508,311,508,327,558,327,558,391,644,391,644,
-                 367,802,367,802,129,725,129,725,133,559,133,559,129,
-                 'tags'=>['floor2','bg'], 'fill'=>fill)
-  w.create(TkcLine,350,311,350,329, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,398,129,398,162, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,802,367,802,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,802,129,725,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,725,133,725,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,559,129,559,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,559,133,725,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,484,162,484,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,559,129,484,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,802,367,644,367, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,644,367,644,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,644,391,558,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,558,327,558,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,558,327,508,327, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,508,327,508,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,484,311,508,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,484,280,484,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,398,162,484,162, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,484,280,395,280, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,395,280,395,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,258,387,60,387, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,3,133,3,339, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,3,339,0,339, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,60,391,0,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,0,339,0,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,60,387,60,391, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,258,329,258,387, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,350,329,258,329, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,395,311,350,311, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,398,129,315,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,176,133,315,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,176,129,96,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,3,133,96,133, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,315,133,315,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,176,133,176,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-  w.create(TkcLine,96,133,96,129, 'fill'=>outline, 'tags'=>['floor2','bg'])
-end
-
-# floor2_bg3 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the background information for the first
-# floor.
-#
-# Arguments:
-# w -           The canvas window.
-# fill -        Fill color to use for the floor's background.
-# outline -     Color to use for the floor's outline.
-
-def floor2_bg3(w,fill,outline)
-  w.create(TkcPolygon,159,300,107,300,107,248,159,248,159,129,96,129,96,
-                 133,21,133,21,331,0,331,0,391,60,391,60,370,159,370,159,300,
-                 'tags'=>['floor3','bg'], 'fill'=>fill)
-  w.create(TkcPolygon,258,370,258,329,350,329,350,311,399,311,399,129,
-                 315,129,315,133,176,133,176,129,159,129,159,370,258,370,
-                 'tags'=>['floor3','bg'], 'fill'=>fill)
-  w.create(TkcLine,96,133,96,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,176,129,96,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,176,129,176,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,315,133,176,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,315,133,315,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,399,129,315,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,399,311,399,129, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,399,311,350,311, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,350,329,350,311, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,350,329,258,329, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,258,370,258,329, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,60,370,258,370, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,60,370,60,391, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,60,391,0,391, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,0,391,0,331, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,21,331,0,331, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,21,331,21,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,96,133,21,133, 'fill'=>outline, 'tags'=>['floor3','bg'])
-  w.create(TkcLine,107,300,159,300,159,248,107,248,107,300, 
-              'fill'=>outline, 'tags'=>['floor3','bg'])
-end
-
-# floor2_fg1 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the foreground information for the first
-# floor (office outlines and numbers).
-#
-# Arguments:
-# w -           The canvas window.
-# color -       Color to use for drawing foreground information.
-
-def floor2_fg1(w,color)
-  i = TkcPolygon.new(w,375,246,375,172,341,172,341,246, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '101'
-  $floorItems2['101'] = i
-  w.create(TkcText,358,209, 'text'=>'101', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,307,240,339,240,339,206,307,206, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'Pub Lift1'
-  $floorItems2['Pub Lift1'] = i
-  w.create(TkcText,323,223, 'text'=>'Pub Lift1', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,339,205,307,205,307,171,339,171, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'Priv Lift1'
-  $floorItems2['Priv Lift1'] = i
-  w.create(TkcText,323,188, 'text'=>'Priv Lift1', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,42,389,42,337,1,337,1,389, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '110'
-  $floorItems2['110'] = i
-  w.create(TkcText,21.5,363, 'text'=>'110', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,59,389,59,385,90,385,90,337,44,337,44,389, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '109'
-  $floorItems2['109'] = i
-  w.create(TkcText,67,363, 'text'=>'109', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,51,300,51,253,6,253,6,300, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '111'
-  $floorItems2['111'] = i
-  w.create(TkcText,28.5,276.5, 'text'=>'111', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,98,248,98,309,79,309,79,248, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '117B'
-  $floorItems2['117B'] = i
-  w.create(TkcText,88.5,278.5, 'text'=>'117B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,51,251,51,204,6,204,6,251, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '112'
-  $floorItems2['112'] = i
-  w.create(TkcText,28.5,227.5, 'text'=>'112', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,6,156,51,156,51,203,6,203, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '113'
-  $floorItems2['113'] = i
-  w.create(TkcText,28.5,179.5, 'text'=>'113', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,85,169,79,169,79,192,85,192, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '117A'
-  $floorItems2['117A'] = i
-  w.create(TkcText,82,180.5, 'text'=>'117A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,77,302,77,168,53,168,53,302, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '117'
-  $floorItems2['117'] = i
-  w.create(TkcText,65,235, 'text'=>'117', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,51,155,51,115,6,115,6,155, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '114'
-  $floorItems2['114'] = i
-  w.create(TkcText,28.5,135, 'text'=>'114', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,95,115,53,115,53,168,95,168, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '115'
-  $floorItems2['115'] = i
-  w.create(TkcText,74,141.5, 'text'=>'115', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,87,113,87,27,10,27,10,113, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '116'
-  $floorItems2['116'] = i
-  w.create(TkcText,48.5,70, 'text'=>'116', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,89,91,128,91,128,113,89,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '118'
-  $floorItems2['118'] = i
-  w.create(TkcText,108.5,102, 'text'=>'118', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,178,128,178,132,216,132,216,91,
-                     163,91,163,112,149,112,149,128, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '120'
-  $floorItems2['120'] = i
-  w.create(TkcText,189.5,111.5, 'text'=>'120', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,79,193,87,193,87,169,136,169,136,192,
-                     156,192,156,169,175,169,175,246,79,246, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '122'
-  $floorItems2['122'] = i
-  w.create(TkcText,131,207.5, 'text'=>'122', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,138,169,154,169,154,191,138,191, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '121'
-  $floorItems2['121'] = i
-  w.create(TkcText,146,180, 'text'=>'121', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,99,300,126,300,126,309,99,309, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '106A'
-  $floorItems2['106A'] = i
-  w.create(TkcText,112.5,304.5, 'text'=>'106A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,128,299,128,309,150,309,150,248,99,248,99,299, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '105'
-  $floorItems2['105'] = i
-  w.create(TkcText,124.5,278.5, 'text'=>'105', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,174,309,174,300,152,300,152,309, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '106B'
-  $floorItems2['106B'] = i
-  w.create(TkcText,163,304.5, 'text'=>'106B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,176,299,176,309,216,309,216,248,152,248,152,299, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '104'
-  $floorItems2['104'] = i
-  w.create(TkcText,184,278.5, 'text'=>'104', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,138,385,138,337,91,337,91,385, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '108'
-  $floorItems2['108'] = i
-  w.create(TkcText,114.5,361, 'text'=>'108', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,256,337,140,337,140,385,256,385, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '107'
-  $floorItems2['107'] = i
-  w.create(TkcText,198,361, 'text'=>'107', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,300,353,300,329,260,329,260,353, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'Smoking'
-  $floorItems2['Smoking'] = i
-  w.create(TkcText,280,341, 'text'=>'Smoking', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,314,135,314,170,306,170,306,246,177,246,177,135, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '123'
-  $floorItems2['123'] = i
-  w.create(TkcText,245.5,190.5, 'text'=>'123', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,217,248,301,248,301,326,257,326,257,310,217,310, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '103'
-  $floorItems2['103'] = i
-  w.create(TkcText,259,287, 'text'=>'103', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,396,188,377,188,377,169,316,169,316,131,396,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '124'
-  $floorItems2['124'] = i
-  w.create(TkcText,356,150, 'text'=>'124', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,397,226,407,226,407,189,377,189,377,246,397,246, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '125'
-  $floorItems2['125'] = i
-  w.create(TkcText,392,217.5, 'text'=>'125', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,399,187,409,187,409,207,474,207,474,164,399,164, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '126'
-  $floorItems2['126'] = i
-  w.create(TkcText,436.5,185.5, 'text'=>'126', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,409,209,409,229,399,229,399,253,
-                     486,253,486,239,474,239,474,209, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '127'
-  $floorItems2['127'] = i
-  w.create(TkcText,436.5,'231', 'text'=>'127', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,501,164,501,174,495,174,495,188,
-                     490,188,490,204,476,204,476,164, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'MShower'
-  $floorItems2['MShower'] = i
-  w.create(TkcText,488.5,'184', 'text'=>'MShower', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,497,176,513,176,513,204,492,204,492,190,497,190, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'Closet'
-  $floorItems2['Closet'] = i
-  w.create(TkcText,502.5,190, 'text'=>'Closet', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,476,237,476,206,513,206,513,254,488,254,488,237, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'WShower'
-  $floorItems2['WShower'] = i
-  w.create(TkcText,494.5,230, 'text'=>'WShower', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,486,131,558,131,558,135,724,135,724,166,
-                     697,166,697,275,553,275,531,254,515,254,
-                     515,174,503,174,503,161,486,161, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '130'
-  $floorItems2['130'] = i
-  w.create(TkcText,638.5,205, 'text'=>'130', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,308,242,339,242,339,248,342,248,
-                     342,246,397,246,397,276,393,276,
-                     393,309,300,309,300,248,308,248, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '102'
-  $floorItems2['102'] = i
-  w.create(TkcText,367.5,278.5, 'text'=>'102', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,397,255,486,255,486,276,397,276, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '128'
-  $floorItems2['128'] = i
-  w.create(TkcText,441.5,265.5, 'text'=>'128', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,510,309,486,309,486,255,530,255,
-                     552,277,561,277,561,325,510,325,
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '129'
-  $floorItems2['129'] = i
-  w.create(TkcText,535.5,293, 'text'=>'129', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,696,281,740,281,740,387,642,387,
-                     642,389,561,389,561,277,696,277, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '133'
-  $floorItems2['133'] = i
-  w.create(TkcText,628.5,335, 'text'=>'133', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,742,387,742,281,800,281,800,387, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '132'
-  $floorItems2['132'] = i
-  w.create(TkcText,771,334, 'text'=>'132', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,800,168,800,280,699,280,699,168, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '134'
-  $floorItems2['134'] = i
-  w.create(TkcText,749.5,224, 'text'=>'134', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,726,131,726,166,800,166,800,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '135'
-  $floorItems2['135'] = i
-  w.create(TkcText,763,148.5, 'text'=>'135', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,340,360,335,363,331,365,326,366,304,366,
-                     304,312,396,312,396,288,400,288,404,288,
-                     409,290,413,292,418,297,421,302,422,309,
-                     421,318,417,325,411,330,405,332,397,333,
-                     344,333,340,334,336,336,335,338,332,342,
-                     331,347,332,351,334,354,336,357,341,359, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'Ramona Stair'
-  $floorItems2['Ramona Stair'] = i
-  w.create(TkcText,368,323, 'text'=>'Ramona Stair', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,30,23,30,5,93,5,98,5,104,7,110,10,116,16,119,20,
-                     122,28,123,32,123,68,220,68,220,87,90,87,90,23, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'University Stair'
-  $floorItems2['University Stair'] = i
-  w.create(TkcText,155,77.5, 'text'=>'University Stair', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,282,37,295,40,312,49,323,56,337,70,352,56,
-                     358,48,363,39,365,29,348,25,335,22,321,14,
-                     300,5,283,1,260,0,246,0,242,2,236,4,231,8,
-                     227,13,223,17,221,22,220,34,260,34, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'Plaza Stair'
-  $floorItems2['Plaza Stair'] = i
-  w.create(TkcText,317.5,28.5, 'text'=>'Plaza Stair', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,220,34,260,34,282,37,295,40,312,49,
-                     323,56,337,70,350,83,365,94,377,100,
-                     386,104,386,128,220,128, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = 'Plaza Deck'
-  $floorItems2['Plaza Deck'] = i
-  w.create(TkcText,303,81, 'text'=>'Plaza Deck', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,257,336,77,336,6,336,6,301,77,301,77,310,257,310,
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '106'
-  $floorItems2['106'] = i
-  w.create(TkcText,131.5,318.5, 'text'=>'106', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  i = TkcPolygon.new(w,146,110,162,110,162,91,130,91,130,115,95,115,
-                     95,128,114,128,114,151,157,151,157,153,112,153,
-                     112,130,97,130,97,168,175,168,175,131,146,131, 
-                     'fill'=>'', 'tags'=>['floor1','room'])
-  $floorLabels2[i.id] = '119'
-  $floorItems2['119'] = i
-  w.create(TkcText,143.5,133, 'text'=>'119', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor1','label'])
-  w.create(TkcLine,155,191,155,189, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,155,177,155,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,96,129,96,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,78,169,176,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,176,247,176,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,340,206,307,206, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,340,187,340,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,340,210,340,201, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,340,247,340,224, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,340,241,307,241, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,376,246,376,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,307,247,307,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,376,170,307,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,315,129,315,170, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,147,129,176,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,202,133,176,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,398,129,315,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,258,352,258,387, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,60,387,60,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,0,337,0,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,60,391,0,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,3,114,3,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,258,387,60,387, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,237,52,273, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,189,52,225, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,140,52,177, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,395,306,395,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,531,254,398,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,475,178,475,238, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,502,162,398,162, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,398,129,398,188, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,383,188,376,188, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,408,188,408,194, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,398,227,398,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,408,227,398,227, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,408,222,408,227, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,408,206,408,210, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,408,208,475,208, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,484,278,484,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,484,311,508,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,508,327,508,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,559,327,508,327, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,644,391,559,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,644,389,644,391, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,514,205,475,205, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,496,189,496,187, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,559,129,484,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,484,162,484,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,725,133,559,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,559,129,559,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,725,149,725,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,725,129,802,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,802,389,802,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,739,167,802,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,396,188,408,188, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,0,337,9,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,58,337,21,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,43,391,43,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,105,337,75,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,91,387,91,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,154,337,117,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,139,387,139,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,227,337,166,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,258,337,251,337, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,258,328,302,328, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,302,355,302,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,395,311,302,311, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,484,278,395,278, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,395,294,395,278, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,473,278,473,275, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,473,256,473,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,533,257,531,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,553,276,551,274, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,698,276,553,276, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,559,391,559,327, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,802,389,644,389, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,741,314,741,389, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,698,280,698,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,707,280,698,280, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,802,280,731,280, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,741,280,741,302, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,698,167,727,167, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,725,137,725,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,514,254,514,175, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,496,175,514,175, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,502,175,502,162, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,475,166,475,162, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,496,176,496,175, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,491,189,496,189, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,491,205,491,189, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,487,238,475,238, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,487,240,487,238, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,487,252,487,254, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,315,133,304,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,256,133,280,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,78,247,270,247, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,307,247,294,247, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,214,133,232,133, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,217,247,217,266, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,217,309,217,291, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,217,309,172,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,154,309,148,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,175,300,175,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,151,300,175,300, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,151,247,151,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,78,237,78,265, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,78,286,78,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,106,309,78,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,130,309,125,309, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,99,309,99,247, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,127,299,99,299, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,127,309,127,299, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,155,191,137,191, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,137,169,137,191, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,78,171,78,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,78,190,78,218, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,86,192,86,169, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,86,192,78,192, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,301,3,301, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,286,52,301, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,252,3,252, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,203,3,203, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,3,156,52,156, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,8,25,8,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,63,114,3,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,75,114,97,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,108,114,129,114, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,129,114,129,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,52,114,52,128, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,132,89,88,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,88,25,88,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,88,114,88,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,218,89,144,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,147,111,147,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,162,111,147,111, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,162,109,162,111, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,162,96,162,89, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,218,89,218,94, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,218,89,218,119, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,8,25,88,25, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,258,337,258,328, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,113,129,96,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,302,355,258,355, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,386,104,386,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,377,100,386,104, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,365,94,377,100, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,350,83,365,94, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,337,70,350,83, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,337,70,323,56, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,312,49,323,56, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,295,40,312,49, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,282,37,295,40, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,260,34,282,37, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,253,34,260,34, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,386,128,386,104, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,113,152,156,152, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,113,152,156,152, 'fill'=>color, 'tags'=>['floor1','wall'])
-  w.create(TkcLine,113,152,113,129, 'fill'=>color, 'tags'=>['floor1','wall'])
-end
-
-# floor2_fg2 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the foreground information for the second
-# floor (office outlines and numbers).
-#
-# Arguments:
-# w -           The canvas window.
-# color -       Color to use for drawing foreground information.
-
-def floor2_fg2(w,color)
-  i = TkcPolygon.new(w,748,188,755,188,755,205,758,205,758,222,
-                     800,222,800,168,748,168, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '238'
-  $floorItems2['238'] = i
-  w.create(TkcText,774,195, 'text'=>'238', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,726,188,746,188,746,166,800,166,800,131,726,131,
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '237'
-  $floorItems2['237'] = i
-  w.create(TkcText,763,148.5, 'text'=>'237', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,497,187,497,204,559,204,559,324,641,324,
-                     643,324,643,291,641,291,641,205,696,205,
-                     696,291,694,291,694,314,715,314,715,291,
-                     715,205,755,205,755,190,724,190,724,187, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '246'
-  $floorItems2['246'] = i
-  w.create(TkcText,600,264, 'text'=>'246', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,694,279,643,279,643,314,694,314, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '247'
-  $floorItems2['247'] = i
-  w.create(TkcText,668.5,296.5, 'text'=>'247', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,232,250,308,250,308,242,339,242,339,246,
-                     397,246,397,255,476,255,476,250,482,250,559,250,
-                     559,274,482,274,482,278,396,278,396,274,232,274, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '202'
-  $floorItems2['202'] = i
-  w.create(TkcText,285.5,260, 'text'=>'202', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,53,228,53,338,176,338,233,338,233,196,
-                     306,196,306,180,175,180,175,169,156,169,
-                     156,196,176,196,176,228, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '206'
-  $floorItems2['206'] = i
-  w.create(TkcText,143,267, 'text'=>'206', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,277,6,277,6,338,51,338, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '212'
-  $floorItems2['212'] = i
-  w.create(TkcText,28.5,307.5, 'text'=>'212', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,557,276,486,276,486,309,510,309,510,325,557,325, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '245'
-  $floorItems2['245'] = i
-  w.create(TkcText,521.5,300.5, 'text'=>'245', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,560,389,599,389,599,326,560,326, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '244'
-  $floorItems2['244'] = i
-  w.create(TkcText,579.5,357.5, 'text'=>'244', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,601,389,601,326,643,326,643,389, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '243'
-  $floorItems2['243'] = i
-  w.create(TkcText,622,357.5, 'text'=>'243', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,688,316,645,316,645,365,688,365, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '242'
-  $floorItems2['242'] = i
-  w.create(TkcText,666.5,340.5, 'text'=>'242', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,802,367,759,367,759,226,802,226, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = 'Barbecue Deck'
-  $floorItems2['Barbecue Deck'] = i
-  w.create(TkcText,780.5,296.5, 'text'=>'Barbecue Deck', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,755,262,755,314,717,314,717,262, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '240'
-  $floorItems2['240'] = i
-  w.create(TkcText,736,288, 'text'=>'240', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,755,316,689,316,689,365,755,365, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '241'
-  $floorItems2['241'] = i
-  w.create(TkcText,722,340.5, 'text'=>'241', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,755,206,717,206,717,261,755,261, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '239'
-  $floorItems2['239'] = i
-  w.create(TkcText,736,233.5, 'text'=>'239', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,695,277,643,277,643,206,695,206, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '248'
-  $floorItems2['248'] = i
-  w.create(TkcText,669,241.5, 'text'=>'248', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,676,135,676,185,724,185,724,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '236'
-  $floorItems2['236'] = i
-  w.create(TkcText,700,160, 'text'=>'236', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,675,135,635,135,635,145,628,145,628,185,675,185, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '235'
-  $floorItems2['235'] = i
-  w.create(TkcText,651.5,160, 'text'=>'235', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,626,143,633,143,633,135,572,135,
-                     572,143,579,143,579,185,626,185, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '234'
-  $floorItems2['234'] = i
-  w.create(TkcText,606,160, 'text'=>'234', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,557,135,571,135,571,145,578,145,
-                     578,185,527,185,527,131,557,131, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '233'
-  $floorItems2['233'] = i
-  w.create(TkcText,552.5,158, 'text'=>'233', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,476,249,557,249,557,205,476,205,
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '230'
-  $floorItems2['230'] = i
-  w.create(TkcText,516.5,227, 'text'=>'230', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,476,164,486,164,486,131,525,131,525,185,476,185, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '232'
-  $floorItems2['232'] = i
-  w.create(TkcText,500.5,158, 'text'=>'232', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,476,186,495,186,495,204,476,204, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '229'
-  $floorItems2['229'] = i
-  w.create(TkcText,485.5,195, 'text'=>'229', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,474,207,409,207,409,187,399,187,399,164,474,164, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '227'
-  $floorItems2['227'] = i
-  w.create(TkcText,436.5,185.5, 'text'=>'227', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,399,228,399,253,474,253,474,209,409,209,409,228, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '228'
-  $floorItems2['228'] = i
-  w.create(TkcText,436.5,231, 'text'=>'228', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,397,246,397,226,407,226,407,189,377,189,377,246, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '226'
-  $floorItems2['226'] = i
-  w.create(TkcText,392,217.5, 'text'=>'226', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,377,169,316,169,316,131,397,131,397,188,377,188, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '225'
-  $floorItems2['225'] = i
-  w.create(TkcText,356.5,150, 'text'=>'225', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,234,198,306,198,306,249,234,249, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '224'
-  $floorItems2['224'] = i
-  w.create(TkcText,270,223.5, 'text'=>'224', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,270,179,306,179,306,170,314,170,314,135,270,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '223'
-  $floorItems2['223'] = i
-  w.create(TkcText,292,157, 'text'=>'223', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,268,179,221,179,221,135,268,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '222'
-  $floorItems2['222'] = i
-  w.create(TkcText,244.5,157, 'text'=>'222', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,177,179,219,179,219,135,177,135, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '221'
-  $floorItems2['221'] = i
-  w.create(TkcText,198,157, 'text'=>'221', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,299,327,349,327,349,284,341,284,341,276,299,276, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '204'
-  $floorItems2['204'] = i
-  w.create(TkcText,324,301.5, 'text'=>'204', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,234,276,297,276,297,327,257,327,257,338,234,338, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '205'
-  $floorItems2['205'] = i
-  w.create(TkcText,265.5,307, 'text'=>'205', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,256,385,256,340,212,340,212,385,
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '207'
-  $floorItems2['207'] = i
-  w.create(TkcText,234,362.5, 'text'=>'207', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,210,340,164,340,164,385,210,385, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '208'
-  $floorItems2['208'] = i
-  w.create(TkcText,187,362.5, 'text'=>'208', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,115,340,162,340,162,385,115,385, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '209'
-  $floorItems2['209'] = i
-  w.create(TkcText,138.5,362.5, 'text'=>'209', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,89,228,89,156,53,156,53,228, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '217'
-  $floorItems2['217'] = i
-  w.create(TkcText,71,192, 'text'=>'217', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,89,169,97,169,97,190,89,190, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '217A'
-  $floorItems2['217A'] = i
-  w.create(TkcText,93,179.5, 'text'=>'217A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,89,156,89,168,95,168,95,135,53,135,53,156, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '216'
-  $floorItems2['216'] = i
-  w.create(TkcText,71,145.5, 'text'=>'216', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,179,51,135,6,135,6,179, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '215'
-  $floorItems2['215'] = i
-  w.create(TkcText,28.5,157, 'text'=>'215', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,227,6,227,6,180,51,180, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '214'
-  $floorItems2['214'] = i
-  w.create(TkcText,28.5,203.5, 'text'=>'214', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,51,275,6,275,6,229,51,229, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '213'
-  $floorItems2['213'] = i
-  w.create(TkcText,28.5,252, 'text'=>'213', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,114,340,67,340,67,385,114,385, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '210'
-  $floorItems2['210'] = i
-  w.create(TkcText,90.5,362.5, 'text'=>'210', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,59,389,59,385,65,385,65,340,1,340,1,389, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '211'
-  $floorItems2['211'] = i
-  w.create(TkcText,33,364.5, 'text'=>'211', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,393,309,350,309,350,282,342,282,342,276,393,276, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '203'
-  $floorItems2['203'] = i
-  w.create(TkcText,367.5,292.5, 'text'=>'203', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,99,191,91,191,91,226,174,226,174,198,
-                     154,198,154,192,109,192,109,169,99,169, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '220'
-  $floorItems2['220'] = i
-  w.create(TkcText,132.5,208.5, 'text'=>'220', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,339,205,307,205,307,171,339,171, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = 'Priv Lift2'
-  $floorItems2['Priv Lift2'] = i
-  w.create(TkcText,323,188, 'text'=>'Priv Lift2', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,307,240,339,240,339,206,307,206, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = 'Pub Lift 2'
-  $floorItems2['Pub Lift 2'] = i
-  w.create(TkcText,323,223, 'text'=>'Pub Lift 2', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,175,168,97,168,97,131,175,131, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '218'
-  $floorItems2['218'] = i
-  w.create(TkcText,136,149.5, 'text'=>'218', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,154,191,111,191,111,169,154,169, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '219'
-  $floorItems2['219'] = i
-  w.create(TkcText,132.5,180, 'text'=>'219', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  i = TkcPolygon.new(w,375,246,375,172,341,172,341,246, 
-                     'fill'=>'', 'tags'=>['floor2','room'])
-  $floorLabels2[i.id] = '201'
-  $floorItems2['201'] = i
-  w.create(TkcText,358,209, 'text'=>'201', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor2','label'])
-  w.create(TkcLine,641,186,678,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,350,757,367, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,634,133,634,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,634,144,627,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,572,133,572,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,572,144,579,144, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,398,129,398,162, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,174,197,175,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,175,197,175,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,206,757,221, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,396,188,408,188, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,727,189,725,189, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,747,167,802,167, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,747,167,747,189, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,755,189,739,189, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,769,224,757,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,802,224,802,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,802,129,725,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,725,189,725,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,725,186,690,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,676,133,676,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,627,144,627,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,629,186,593,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,579,144,579,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,559,129,559,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,725,133,559,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,484,162,484,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,559,129,484,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,526,129,526,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,540,186,581,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,528,186,523,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,511,186,475,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,496,190,496,186, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,496,205,496,202, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,475,205,527,205, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,558,205,539,205, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,558,205,558,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,558,249,475,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,662,206,642,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,695,206,675,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,695,278,642,278, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,642,291,642,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,695,291,695,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,716,208,716,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,206,716,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,221,757,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,793,224,802,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,262,716,262, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,716,220,716,264, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,716,315,716,276, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,315,703,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,325,757,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,757,367,644,367, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,689,367,689,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,647,315,644,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,659,315,691,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,600,325,600,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,627,325,644,325, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,644,391,644,315, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,615,325,575,325, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,644,391,558,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,563,325,558,325, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,558,391,558,314, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,558,327,508,327, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,558,275,484,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,558,302,558,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,508,327,508,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,484,311,508,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,484,275,484,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,475,208,408,208, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,408,206,408,210, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,408,222,408,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,408,227,398,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,398,227,398,254, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,408,188,408,194, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,383,188,376,188, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,398,188,398,162, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,398,162,484,162, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,475,162,475,254, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,398,254,475,254, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,484,280,395,280, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,395,311,395,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,307,197,293,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,278,197,233,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,233,197,233,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,307,179,284,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,233,249,278,249, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,269,179,269,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,220,179,220,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,155,191,110,191, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,90,190,98,190, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,98,169,98,190, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,52,133,52,165, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,52,214,52,177, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,52,226,52,262, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,52,274,52,276, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,234,275,234,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,226,339,258,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,211,387,211,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,214,339,177,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,258,387,60,387, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,3,133,3,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,165,339,129,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,117,339,80,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,68,339,59,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,0,339,46,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,60,391,0,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,0,339,0,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,60,387,60,391, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,258,329,258,387, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,350,329,258,329, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,395,311,350,311, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,398,129,315,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,176,133,315,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,176,129,96,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,3,133,96,133, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,66,387,66,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,115,387,115,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,163,387,163,339, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,234,275,276,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,288,275,309,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,298,275,298,329, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,341,283,350,283, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,321,275,341,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,375,275,395,275, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,315,129,315,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,376,170,307,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,307,250,307,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,376,245,376,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,340,241,307,241, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,340,245,340,224, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,340,210,340,201, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,340,187,340,170, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,340,206,307,206, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,293,250,307,250, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,271,179,238,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,226,179,195,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,176,129,176,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,182,179,176,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,174,169,176,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,162,169,90,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,96,169,96,129, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,175,227,90,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,90,190,90,227, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,52,179,3,179, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,52,228,3,228, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,52,276,3,276, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,155,177,155,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,110,191,110,169, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,155,189,155,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,350,283,350,329, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,162,197,155,197, 'fill'=>color, 'tags'=>['floor2','wall'])
-  w.create(TkcLine,341,275,341,283, 'fill'=>color, 'tags'=>['floor2','wall'])
-end
-
-# floor2_fg3 --
-# This method represents part of the floorplan database.  When
-# invoked, it instantiates the foreground information for the third
-# floor (office outlines and numbers).
-#
-# Arguments:
-# w -           The canvas window.
-# color -       Color to use for drawing foreground information.
-
-def floor2_fg3(w,color)
-  i = TkcPolygon.new(w,89,228,89,180,70,180,70,228,
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '316'
-  $floorItems2['316'] = i
-  w.create(TkcText,79.5,204, 'text'=>'316', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,115,368,162,368,162,323,115,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '309'
-  $floorItems2['309'] = i
-  w.create(TkcText,138.5,345.5, 'text'=>'309', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,164,323,164,368,211,368,211,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '308'
-  $floorItems2['308'] = i
-  w.create(TkcText,187.5,345.5, 'text'=>'308', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,256,368,212,368,212,323,256,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '307'
-  $floorItems2['307'] = i
-  w.create(TkcText,234,345.5, 'text'=>'307', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,244,276,297,276,297,327,260,327,260,321,244,321, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '305'
-  $floorItems2['305'] = i
-  w.create(TkcText,270.5,301.5, 'text'=>'305', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,251,219,251,203,244,203,244,219,
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '324B'
-  $floorItems2['324B'] = i
-  w.create(TkcText,247.5,211, 'text'=>'324B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,251,249,244,249,244,232,251,232, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '324A'
-  $floorItems2['324A'] = i
-  w.create(TkcText,247.5,240.5, 'text'=>'324A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,223,135,223,179,177,179,177,135, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '320'
-  $floorItems2['320'] = i
-  w.create(TkcText,200,157, 'text'=>'320', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,114,368,114,323,67,323,67,368, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '310'
-  $floorItems2['310'] = i
-  w.create(TkcText,90.5,345.5, 'text'=>'310', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,23,277,23,321,68,321,68,277, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '312'
-  $floorItems2['312'] = i
-  w.create(TkcText,45.5,299, 'text'=>'312', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,23,229,68,229,68,275,23,275, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '313'
-  $floorItems2['313'] = i
-  w.create(TkcText,45.5,252, 'text'=>'313', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,68,227,23,227,23,180,68,180, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '314'
-  $floorItems2['314'] = i
-  w.create(TkcText,40.5,203.5, 'text'=>'314', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,95,179,95,135,23,135,23,179, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '315'
-  $floorItems2['315'] = i
-  w.create(TkcText,59,157, 'text'=>'315', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,99,226,99,204,91,204,91,226, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '316B'
-  $floorItems2['316B'] = i
-  w.create(TkcText,95,215, 'text'=>'316B', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,91,202,99,202,99,180,91,180, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '316A'
-  $floorItems2['316A'] = i
-  w.create(TkcText,95,191, 'text'=>'316A', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,97,169,109,169,109,192,154,192,154,198,
-                     174,198,174,226,101,226,101,179,97,179, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '319'
-  $floorItems2['319'] = i
-  w.create(TkcText,141.5,209, 'text'=>'319', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,65,368,58,368,58,389,1,389,1,333,23,333,23,323,65,323, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '311'
-  $floorItems2['311'] = i
-  w.create(TkcText,29.5,361, 'text'=>'311', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,154,191,111,191,111,169,154,169, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '318'
-  $floorItems2['318'] = i
-  w.create(TkcText,132.5,180, 'text'=>'318', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,175,168,97,168,97,131,175,131, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '317'
-  $floorItems2['317'] = i
-  w.create(TkcText,136,149.5, 'text'=>'317', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,274,194,274,221,306,221,306,194, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '323'
-  $floorItems2['323'] = i
-  w.create(TkcText,290,207.5, 'text'=>'323', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,306,222,274,222,274,249,306,249, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '325'
-  $floorItems2['325'] = i
-  w.create(TkcText,290,235.5, 'text'=>'325', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,263,179,224,179,224,135,263,135, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '321'
-  $floorItems2['321'] = i
-  w.create(TkcText,243.5,157, 'text'=>'321', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,314,169,306,169,306,192,273,192,
-                     264,181,264,135,314,135, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '322'
-  $floorItems2['322'] = i
-  w.create(TkcText,293.5,163.5, 'text'=>'322', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,307,240,339,240,339,206,307,206, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = 'Pub Lift3'
-  $floorItems2['Pub Lift3'] = i
-  w.create(TkcText,323,223, 'text'=>'Pub Lift3', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,339,205,307,205,307,171,339,171, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = 'Priv Lift3'
-  $floorItems2['Priv Lift3'] = i
-  w.create(TkcText,323,188, 'text'=>'Priv Lift3', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,350,284,376,284,376,276,397,276,397,309,350,309, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '303'
-  $floorItems2['303'] = i
-  w.create(TkcText,373.5,292.5, 'text'=>'303', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,272,203,272,249,252,249,252,230,
-                     244,230,244,221,252,221,252,203, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '324'
-  $floorItems2['324'] = i
-  w.create(TkcText,262,226, 'text'=>'324', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,299,276,299,327,349,327,349,284,341,284,341,276, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '304'
-  $floorItems2['304'] = i
-  w.create(TkcText,324,301.5, 'text'=>'304', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,375,246,375,172,341,172,341,246, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '301'
-  $floorItems2['301'] = i
-  w.create(TkcText,358,209, 'text'=>'301', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,397,246,377,246,377,185,397,185, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '327'
-  $floorItems2['327'] = i
-  w.create(TkcText,387,215.5, 'text'=>'327', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,316,131,316,169,377,169,377,185,397,185,397,131, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '326'
-  $floorItems2['326'] = i
-  w.create(TkcText,365.5,150, 'text'=>'326', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,308,251,242,251,242,274,342,274,342,282,375, 282,
-                     375,274,397,274,397,248,339,248,339,242,308,242, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '302'
-  $floorItems2['302'] = i
-  w.create(TkcText,319.5,261, 'text'=>'302', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  i = TkcPolygon.new(w,70,321,242,321,242,200,259,200,259,203,272,203,
-                     272,193,263,180,242,180,175,180,175,169,156,169,
-                     156,196,177,196,177,228,107,228,70,228,70,275,107,275,
-                     107,248,160,248,160,301,107,301,107,275,70,275, 
-                     'fill'=>'', 'tags'=>['floor3','room'])
-  $floorLabels2[i.id] = '306'
-  $floorItems2['306'] = i
-  w.create(TkcText,200.5,284.5, 'text'=>'306', 'fill'=>color, 
-              'anchor'=>'c', 'tags'=>['floor3','label'])
-  w.create(TkcLine,341,275,341,283, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,162,197,155,197, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,396,247,399,247, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,399,129,399,311, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,258,202,243,202, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,350,283,350,329, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,251,231,243,231, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,243,220,251,220, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,243,250,243,202, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,155,197,155,190, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,110,192,110,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,155,192,110,192, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,155,177,155,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,176,197,176,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,69,280,69,274, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,21,276,69,276, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,69,262,69,226, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,21,228,69,228, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,21,179,75,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,69,179,69,214, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,90,220,90,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,90,204,90,202, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,90,203,100,203, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,90,187,90,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,90,227,176,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,100,179,100,227, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,100,179,87,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,96,179,96,129, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,162,169,96,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,173,169,176,169, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,182,179,176,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,176,129,176,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,195,179,226,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,224,133,224,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,264,179,264,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,238,179,264,179, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,273,207,273,193, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,273,235,273,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,273,224,273,219, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,273,193,307,193, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,273,222,307,222, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,273,250,307,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,384,247,376,247, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,340,206,307,206, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,340,187,340,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,340,210,340,201, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,340,247,340,224, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,340,241,307,241, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,376,247,376,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,307,250,307,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,376,170,307,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,315,129,315,170, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,376,283,366,283, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,376,283,376,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,399,275,376,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,341,275,320,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,341,283,350,283, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,298,275,298,329, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,308,275,298,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,243,322,243,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,243,275,284,275, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,258,322,226,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,212,370,212,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,214,322,177,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,163,370,163,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,165,322,129,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,84,322,117,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,71,322,64,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,115,322,115,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,66,322,66,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,52,322,21,322, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,21,331,0,331, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,21,331,21,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,96,133,21,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,176,129,96,129, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,315,133,176,133, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,315,129,399,129, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,399,311,350,311, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,350,329,258,329, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,258,322,258,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,60,370,258,370, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,60,370,60,391, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,0,391,0,331, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,60,391,0,391, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,307,250,307,242, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,273,250,307,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-  w.create(TkcLine,258,250,243,250, 'fill'=>color, 'tags'=>['floor3','wall'])
-end
-
-# Below is the "main program" that creates the floorplan demonstration.
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($floor2_demo) && $floor2_demo
-  $floor2_demo.destroy 
-  $floor2_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$floor2_demo = TkToplevel.new {|w|
-  title("Floorplan Canvas Demonstration 2")
-  iconname("Floorplan2")
-  positionWindow(w)
-  geometry('+20+20')
-  minsize(100,100)
-}
-
-base_frame = TkFrame.new($floor2_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'8i', 'justify'=>'left', 
-            'text'=>"¤³¤Î¥¦¥£¥ó¥É¥¦¤Ë¤Ï¥Ç¥£¥¸¥¿¥ë¥¨¥¯¥¤¥Ã¥×¥á¥ó¥È¼Ò¤Î¥¦¥§¥¹¥¿¥ó¥ê¥µ¡¼¥Á¥é¥Ü¥é¥È¥ê (DECWRL) ¤Î´Ö¼è¤ê¤¬½ñ¤«¤ì¤¿¥­¥ã¥ó¥Ð¥¹ widget ¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï 3³¬·ú¤Æ¤Ç¡¢¾ï¤Ë¤½¤Î¤¦¤Á¤Î1³¬Ê¬¤¬ÁªÂò¡¢¤Ä¤Þ¤ê¤½¤Î´Ö¼è¤ê¤¬É½¼¨¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤¢¤ë³¬¤òÁªÂò¤¹¤ë¤Ë¤Ï¡¢¤½¤Î¾å¤Ç¥Þ¥¦¥¹¤Îº¸¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£¥Þ¥¦¥¹¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë³¬¤Î¾å¤òÆ°¤¯¤È¡¢¤½¤Î²¼¤Ë¤¢¤ëÉô²°¤Î¿§¤¬ÊѤï¤ê¡¢Éô²°Èֹ椬¡ÖÉô²°ÈÖ¹æ:¡×¥¨¥ó¥È¥ê¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£¤Þ¤¿¡¢¥¨¥ó¥È¥ê¤ËÉô²°ÈÖ¹æ¤ò½ñ¤¯¤È¤½¤ÎÉô²°¤Î¿§¤¬ÊѤï¤ê¤Þ¤¹¡£"){
-  pack('side'=>'top')
-}
-
-# frame À¸À®
-$floor2_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $floor2_demo
-      $floor2_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'floor2'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$floor2_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# ÊÑ¿ôÀßÄê
-$floorLabels2 = {}
-$floorItems2 = {}
-
-# canvas ÀßÄê
-if $tk_version =~ /^4\.[01]/
-  $floor2_canvas_frame = TkFrame.new(base_frame,'bd'=>2,'relief'=>'sunken',
-                                    'highlightthickness'=>2)
-  $floor2_canvas = TkCanvas.new($floor2_canvas_frame, 
-                               'width'=>900, 'height'=>500, 'borderwidth'=>0, 
-                               'highlightthickness'=>0) {|c|
-    TkScrollbar.new(base_frame, 'orient'=>'horiz', 
-                    'command'=>proc{|*args| c.xview(*args)}){|hs|
-      c.xscrollcommand(proc{|first,last| hs.set first,last})
-      pack('side'=>'bottom', 'fill'=>'x')
-    }
-    TkScrollbar.new(base_frame, 'command'=>proc{|*args| c.yview(*args)}){|vs|
-      c.yscrollcommand(proc{|first,last| vs.set first,last})
-      pack('side'=>'right', 'fill'=>'y')
-    }
-  }
-  $floor2_canvas_frame.pack('side'=>'top','fill'=>'both', 'expand'=>'yes')
-  $floor2_canvas.pack('expand'=>'yes', 'fill'=>'both')
-
-else
-  TkFrame.new(base_frame) {|f|
-    pack('side'=>'top', 'fill'=>'both', 'expand'=>'yes')
-
-    h = TkScrollbar.new(f, 'highlightthickness'=>0, 'orient'=>'horizontal')
-    v = TkScrollbar.new(f, 'highlightthickness'=>0, 'orient'=>'vertical')
-
-    TkFrame.new(f, 'bd'=>2, 'relief'=>'sunken') {|f1|
-      $floor2_canvas = TkCanvas.new(f1, 'width'=>900, 'height'=>500, 
-                                   'borderwidth'=>0, 
-                                   'highlightthickness'=>0) {
-        xscrollcommand(proc{|first,last| h.set first,last})
-        yscrollcommand(proc{|first,last| v.set first,last})
-        pack('expand'=>'yes', 'fill'=>'both')
-      }
-      grid('padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>0, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    }
-
-    v.grid('padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>1, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    h.grid('padx'=>1, 'pady'=>1, 'row'=>1, 'column'=>0, 
-           'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-
-    TkGrid.rowconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
-    TkGrid.columnconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
-
-    pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>1)
-
-    v.command(proc{|*args| $floor2_canvas.yview(*args)})
-    h.command(proc{|*args| $floor2_canvas.xview(*args)})
-  }
-end
-
-# Create an entry for displaying and typing in current room.
-
-$currentRoom2 = TkVariable.new
-$floor2_entry = TkEntry.new($floor2_canvas, 'width'=>10, 'relief'=>'sunken', 
-                           'bd'=>2, 'textvariable'=>$currentRoom2)
-
-# Choose colors, then fill in the floorplan.
-
-$floor2_colors = {}
-if TkWinfo.depth($floor2_canvas) > 1
-  $floor2_colors['bg1'] = '#a9c1da'
-  $floor2_colors['outline1'] = '#77889a'
-  $floor2_colors['bg2'] = '#9ab0c6'
-  $floor2_colors['outline2'] = '#687786'
-  $floor2_colors['bg3'] = '#8ba0b3'
-  $floor2_colors['outline3'] = '#596673'
-  $floor2_colors['offices'] = 'Black'
-  $floor2_colors['active'] = '#c4d1df'
-else
-  $floor2_colors['bg1'] = 'white'
-  $floor2_colors['outline1'] = 'black'
-  $floor2_colors['bg2'] = 'white'
-  $floor2_colors['outline2'] = 'black'
-  $floor2_colors['bg3'] = 'white'
-  $floor2_colors['outline3'] = 'black'
-  $floor2_colors['offices'] = 'Black'
-  $floor2_colors['active'] = 'black'
-end
-
-$activeFloor2 = ''
-floorDisplay2 $floor2_canvas,3
-
-# Set up event bindings for canvas:
-
-$floor2_canvas.itembind('floor1', '1', proc{floorDisplay2 $floor2_canvas,1})
-$floor2_canvas.itembind('floor2', '1', proc{floorDisplay2 $floor2_canvas,2})
-$floor2_canvas.itembind('floor3', '1', proc{floorDisplay2 $floor2_canvas,3})
-$floor2_canvas.itembind('room', 'Enter', proc{newRoom2 $floor2_canvas})
-$floor2_canvas.itembind('room', 'Leave', proc{$currentRoom2.value = ''})
-$floor2_canvas.bind('2', proc{|x,y| $floor2_canvas.scan_mark x,y}, '%x %y')
-$floor2_canvas.bind('B2-Motion', 
-                   proc{|x,y| $floor2_canvas.scan_dragto x,y}, '%x %y')
-$floor2_canvas.bind('Destroy', proc{$currentRoom2.unset})
-$currentRoom2.value = ''
-$currentRoom2.trace('w',proc{roomChanged2 $floor2_canvas})
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/form.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/form.rb
deleted file mode 100644 (file)
index 4de7056..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# form widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($form_demo) && $form_demo
-  $form_demo.destroy 
-  $form_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$form_demo = TkToplevel.new {|w|
-  title("Form Demonstration")
-  iconname("form")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($form_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "¤³¤Î¥¦¥£¥ó¥É¥¦¤Ï´Êñ¤Ê¥Õ¥©¡¼¥àÆþÎÏÍѤˤʤäƤ¤¤Æ¡¢¤µ¤Þ¤¶¤Þ¤Ê¥¨¥ó¥È¥ê¤ËÆþÎϤ¬¤Ç¤­¤Þ¤¹¡£¥¿¥Ö¤Ç¥¨¥ó¥È¥ê¤ÎÀÚÂؤ¨¤¬¤Ç¤­¤Þ¤¹¡£"
-}
-msg.pack('side'=>'top', 'fill'=>'x')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $form_demo
-      $form_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'form'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# entry À¸À®
-form_data = []
-(1..5).each{|i|
-  f = TkFrame.new(base_frame, 'bd'=>2)
-  e = TkEntry.new(f, 'relief'=>'sunken', 'width'=>40)
-  l = TkLabel.new(f)
-  e.pack('side'=>'right')
-  l.pack('side'=>'left')
-  form_data[i] = {'frame'=>f, 'entry'=>e, 'label'=>l}
-}
-
-# Ê¸»úÎóÀßÄê
-form_data[1]['label'].text('̾Á°:')
-form_data[2]['label'].text('½»½ê:')
-form_data[5]['label'].text('ÅÅÏÃ:')
-
-# pack
-(1..5).each{|i| form_data[i]['frame'].pack('side'=>'top', 'fill'=>'x')}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/goldberg.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/goldberg.rb
deleted file mode 100644 (file)
index a81c7ec..0000000
+++ /dev/null
@@ -1,2011 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# Ruby/Tk Goldverg demo (called by 'widget')
-#
-# Based on Tcl/Tk8.5a2 widget demos.
-# The following is the original comment of TkGoldberg.tcl.
-#
-#>>##+#################################################################
-#>>#
-#>># TkGoldberg.tcl
-#>># by Keith Vetter, March 13, 2003
-#>>#
-#>># "Man will always find a difficult means to perform a simple task"
-#>># Rube Goldberg
-#>>#
-#>># Reproduced here with permission.
-#>>#
-#>>##+#################################################################
-#>>#
-#>># Keith Vetter 2003-03-21: this started out as a simple little program
-#>># but was so much fun that it grew and grew. So I apologize about the
-#>># size but I just couldn't resist sharing it.
-#>>#
-#>># This is a whizzlet that does a Rube Goldberg type animation, the
-#>># design of which comes from an New Years e-card from IncrediMail.
-#>># That version had nice sound effects which I eschewed. On the other
-#>># hand, that version was in black and white (actually dark blue and
-#>># light blue) and this one is fully colorized.
-#>>#
-#>># One thing I learned from this project is that drawing filled complex
-#>># objects on a canvas is really hard. More often than not I had to
-#>># draw each item twice--once with the desired fill color but no
-#>># outline, and once with no fill but with the outline. Another trick
-#>># is erasing by drawing with the background color. Having a flood fill
-#>># command would have been extremely helpful.
-#>>#
-#>># Two wiki pages were extremely helpful: Drawing rounded rectangles
-#>># which I generalized into Drawing rounded polygons, and regular
-#>># polygons which allowed me to convert ovals and arcs into polygons
-#>># which could then be rotated (see Canvas Rotation). I also wrote
-#>># Named Colors to aid in the color selection.
-#>>#
-#>># I could comment on the code, but it's just 26 state machines with
-#>># lots of canvas create and move calls.
-
-if defined?($goldberg_demo) && $goldberg_demo
-  $goldberg_demo.destroy 
-  $goldberg_demo = nil
-end
-
-# demo toplevel widget
-$goldberg_demo = TkToplevel.new {|w|
-  title("Tk Goldberg (demonstration)")
-  iconname("goldberg")
-#  positionWindow(w)
-}
-
-base_frame = TkFrame.new($goldberg_demo).pack(:fill=>:both, :expand=>true)
-
-=begin
-# label
-msg = TkLabel.new($goldberg_demo) {
-  font 'Arial 10'
-  wraplength '4i'
-  justify 'left'
-  text "¤³¤ì¤Ï¡¢¤¢¤Ê¤¿¤¬¼«Ê¬¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ò¤¤¤«¤ËÆþ¤êÁȤó¤À¤â¤Î¤Ë¤Ç¤­¤ë¤«¤ò¼¨¤¹¤È¤¤¤¦¤À¤±¤Î¤¿¤á¤Î¥Ç¥â¤Ç¤¹¡£¥Ü¡¼¥ë¤ò¥¯¥ê¥Ã¥¯¤¹¤ì¤Ðʪ¤¬Æ°¤­»Ï¤á¤Þ¤¹¡ª\n\n\"Man will always find a difficult means to perform a simple task\"\n - Rube Goldberg"
-}
-msg.pack('side'=>'top')
-=end
-
-=begin
-# frame
-TkFrame.new($goldberg_demo) {|frame|
-  TkButton.new(frame) {
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $goldberg_demo
-      $goldberg_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'goldberg'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-=end
-
-#########################################
-
-class TkGoldberg_Demo
-  def initialize(parent)
-    @parent = parent
-
-    @S = {}
-    @S['title']   = 'Tk Goldberg'
-    @S['speed']   = TkVariable.new(5)
-    @S['cnt']     = TkVariable.new(0)
-    # @S['message'] = TkVariable.new("\\nWelcome\\nto\\nRuby/Tk")
-    @S['message'] = TkVariable.new("\\n ¤è¤¦¤³¤½¡ª\\nRuby/Tk\\n¤Î\\nÀ¤³¦¤Ø")
-    @S['pause']   = TkVariable.new
-    @S['details'] = TkVariable.new(true)
-
-    @S['mode'] = TkVariable.new(:MSTART, :symbol) 
-    #            :MSTART, :MGO, :MPAUSE, :MSSTEP, :MBSTEP, :MDONE, :MDEBUG
-
-    #         0,  1,  2,  3,  4,  5,   6,   7,   8,   9,  10
-    @speed = [1, 10, 20, 50, 80, 100, 150, 200, 300, 400, 500]
-
-    # colors
-    @C = {}
-    @C['fg'] = 'black'
-    # @C['bg'] = 'gray75'
-    @C['bg'] = 'cornflowerblue'
-
-    @C['0'] = 'white';         @C['1a'] = 'darkgreen';   @C['1b'] = 'yellow'
-    @C['2'] = 'red';           @C['3a'] = 'green';       @C['3b'] = 'darkblue'
-    @C['4'] = @C['fg'];        @C['5a'] = 'brown';       @C['5b'] = 'white'
-    @C['6'] = 'magenta';       @C['7'] = 'green';        @C['8'] = @C['fg']
-    @C['9'] = 'blue4';         @C['10a'] = 'white';      @C['10b'] = 'cyan'
-    @C['11a'] = 'yellow';      @C['11b'] = 'mediumblue'; @C['12'] = 'tan2'
-    @C['13a'] = 'yellow';      @C['13b'] = 'red';        @C['14'] = 'white'
-    @C['15a'] = 'green';       @C['15b'] = 'yellow';     @C['16'] = 'gray65'
-    @C['17'] = '#A65353';     @C['18'] = @C['fg'];      @C['19'] = 'gray50'
-    @C['20'] = 'cyan';         @C['21'] = 'gray65';      @C['22'] = @C['20']
-    @C['23a'] = 'blue';        @C['23b'] = 'red';        @C['23c'] = 'yellow'
-    @C['24a'] = 'red';         @C['24b'] = 'white';
-
-    @STEP = TkVariable.new_hash
-    @STEP.default_value_type = :numeric
-
-    @XY = {}
-
-    @XY6 = {
-      '-1'=>[366, 207], '-2'=>[349, 204], '-3'=>[359, 193], '-4'=>[375, 192], 
-      '-5'=>[340, 190], '-6'=>[349, 177], '-7'=>[366, 177], '-8'=>[380, 176],
-      '-9'=>[332, 172], '-10'=>[342, 161], '-11'=>[357, 164], 
-      '-12'=>[372, 163], '-13'=>[381, 149], '-14'=>[364, 151], 
-      '-15'=>[349, 146], '-16'=>[333, 148], '0'=>[357, 219], 
-      '1'=>[359, 261], '2'=>[359, 291], '3'=>[359, 318], '4'=>[361, 324], 
-      '5'=>[365, 329], '6'=>[367, 334], '7'=>[367, 340], '8'=>[366, 346], 
-      '9'=>[364, 350], '10'=>[361, 355], '11'=>[359, 370], '12'=>[359, 391], 
-      '13,0'=>[360, 456], '13,1'=>[376, 456], '13,2'=>[346, 456], 
-      '13,3'=>[330, 456], '13,4'=>[353, 444], '13,5'=>[368, 443], 
-      '13,6'=>[339, 442], '13,7'=>[359, 431], '13,8'=>[380, 437], 
-      '13,9'=>[345, 428], '13,10'=>[328, 434], '13,11'=>[373, 424], 
-      '13,12'=>[331, 420], '13,13'=>[360, 417], '13,14'=>[345, 412], 
-      '13,15'=>[376, 410], '13,16'=>[360, 403]
-    }
-
-    @timer = TkTimer.new(@speed[@S['speed'].numeric]){|timer|
-      timer.set_interval(go)
-    }
-
-    do_display
-    reset
-
-    # Start everything going
-    @timer.start
-  end
-
-  def do_display()
-    @ctrl = TkFrame.new(@parent, :relief=>:ridge, :bd=>2, :padx=>5, :pady=>5)
-    @screen = TkFrame.new(@parent, :bd=>2, 
-                         :relief=>:raised).pack(:side=>:left, :fill=>:both, 
-                                                :expand=>true)
-
-    @canvas = TkCanvas.new(@parent, :width=>850, :height=>700, 
-                          :bg=>@C['bg'], :highlightthickness=>0){
-      scrollregion([0, 0, 1000, 1000]) # Kludge to move everything up
-      yview_moveto(0.05)
-    }.pack(:in=>@screen, :side=>:top, :fill=>:both, :expand=>true)
-
-    @canvas.bind('3'){ @pause.invoke }
-    @canvas.bind('Destroy'){ @timer.stop }
-
-    do_ctrl_frame
-    do_detail_frame
-
-    # msg = TkLabel.new(@parent, :bg=>@C['bg'], :fg=>'white') {
-    msg = Tk::Label.new(@parent, :bg=>@C['bg'], :fg=>'white') {
-      font 'Arial 10'
-      wraplength 600
-      justify 'left'
-      text "¤³¤ì¤Ï¡¢¤¢¤Ê¤¿¤¬¼«Ê¬¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ò¤¤¤«¤ËÆþ¤êÁȤó¤À¤â¤Î¤Ë¤Ç¤­¤ë¤«¤ò¼¨¤¹¤È¤¤¤¦¤À¤±¤Î¤¿¤á¤Î¥Ç¥â¤Ç¤¹¡£¥Ü¡¼¥ë¤ò¥¯¥ê¥Ã¥¯¤¹¤ì¤Ðʪ¤¬Æ°¤­»Ï¤á¤Þ¤¹¡ª\n\"Man will always find a difficult means to perform a simple task\" - Rube Goldberg"
-    }
-    msg.place(:in=>@canvas, :relx=>0, :rely=>0, :anchor=>:nw)
-
-    frame = TkFrame.new(@parent, :bg=>@C['bg'])
-
-    # TkButton.new(frame, :bg=>@C['bg'], :activebackground=>@C['bg']) {
-    Tk::Button.new(frame, :bg=>@C['bg'], :activebackground=>@C['bg']) {
-      text 'ÊĤ¸¤ë'
-      command proc{
-        tmppath = $goldberg_demo
-        $goldberg_demo = nil
-        tmppath.destroy
-      }
-    }.pack('side'=>'left')
-
-    # TkButton.new(frame, :bg=>@C['bg'], :activebackground=>@C['bg']) {
-    Tk::Button.new(frame, :bg=>@C['bg'], :activebackground=>@C['bg']) {
-      text '¥³¡¼¥É»²¾È'
-      command proc{showCode 'goldberg'}
-    }.pack('side'=>'left', 'padx'=>5)
-
-    # @show = TkButton.new(frame, :text=>'>>', :command=>proc{show_ctrl}, 
-    @show = Tk::Button.new(frame, :text=>'>>', :command=>proc{show_ctrl}, 
-                         :bg=>@C['bg'], :activebackground=>@C['bg'])
-    @show.pack('side'=>'left')
-    frame.place(:in=>@canvas, :relx=>1, :rely=>0, :anchor=>:ne)
-
-    Tk.update
-  end
-
-  def do_ctrl_frame
-    @start = Tk::Button.new(@parent, :text=>'Start', :bd=>6, 
-                          :command=>proc{do_button(0)})
-    if font = @start['font']
-      @start.font(font.weight('bold'))
-    end
-
-    @pause = TkCheckbutton.new(@parent, :text=>'Pause', :font=>font, 
-                               :command=>proc{do_button(1)}, :relief=>:raised, 
-                               :variable=>@S['pause'])
-
-    @step  = TkButton.new(@parent, :text=>'Single Step', :font=>font, 
-                          :command=>proc{do_button(2)})
-    @bstep = TkButton.new(@parent, :text=>'Big Step', :font=>font, 
-                          :command=>proc{do_button(4)})
-    @reset = TkButton.new(@parent, :text=>'Reset', :font=>font, 
-                          :command=>proc{do_button(3)})
-
-    @details = TkFrame.new(@parent, :bd=>2, :relief=>:ridge)
-    @detail = TkCheckbutton.new(@parent, :text=>'Details', :font=>font, 
-                               :relief=>:raised, :variable=>@S['details'])
-
-    @msg_entry = TkEntry.new(@parent, :textvariable=>@S['message'], 
-                             :justify=>:center)
-    @speed_scale = TkScale.new(@parent, :orient=>:horizontal, 
-                               :from=>1, :to=>10, :font=>font, 
-                               :variable=>@S['speed'], :bd=>2, 
-                               :relief=>:ridge, :showvalue=>false)
-    @about = TkButton.new(@parent, :text=>'About', 
-                          :command=>proc{about}, :font=>font)
-
-    Tk.grid(@start, :in=>@ctrl, :row=>0, :sticky=>:ew)
-    @ctrl.grid_rowconfigure(1, :minsize=>10)
-    Tk.grid(@pause, :in=>@ctrl, :row=>2, :sticky=>:ew)
-    Tk.grid(@step,  :in=>@ctrl, :sticky=>:ew)
-    Tk.grid(@bstep, :in=>@ctrl, :sticky=>:ew)
-    Tk.grid(@reset, :in=>@ctrl, :sticky=>:ew)
-    @ctrl.grid_rowconfigure(10, :minsize=>20)
-    Tk.grid(@details, :in=>@ctrl, :row=>11, :sticky=>:ew)
-    Tk.grid(@detail, :in=>@details, :row=>0, :sticky=>:ew)
-    @ctrl.grid_rowconfigure(50, :weight=>1)
-
-    @S['mode'].trace('w', proc{|*args| active_GUI(*args)})
-    @S['details'].trace('w', proc{|*args| active_GUI(*args)})
-    @S['speed'].trace('w', proc{|*args| active_GUI(*args)})
-
-    Tk.grid(@msg_entry, :in=>@ctrl, :row=>98, :sticky=>:ew, :pady=>5)
-    Tk.grid(@speed_scale, :in=>@ctrl, :row=>99, :sticky=>:ew)
-    Tk.grid(@about, :in=>@ctrl, :row=>100, :sticky=>:ew)
-
-    @reset.bind('3'){@S['mode'].value = -1}  # Debugging
-  end
-
-  def do_detail_frame
-    @f_details = TkFrame.new(@details)
-
-    @label = TkLabel.new(@f_details, :textvariable=>@S['cnt'], 
-                         :bd=>1, :relief=>:solid, :bg=>'white')
-    Tk.grid(@label, '-', '-', '-', :sticky=>:ew, :row=>0)
-
-    idx = 1
-    loop {
-      break unless respond_to?("move#{idx}")
-      l = TkLabel.new(@f_details, :text=>idx, :anchor=>:e, 
-                      :width=>2, :bd=>1, :relief=>:solid, :bg=>'white')
-      @STEP[idx] = 0
-      ll = TkLabel.new(@f_details, :textvariable=>@STEP.ref(idx), 
-                       :width=>5, :bd=>1, :relief=>:solid, :bg=>'white')
-      row = (idx + 1)/2
-      col = ((idx + 1) & 1) * 2
-      Tk.grid(l, :sticky=>:ew, :row=>row, :column=>col)
-      Tk.grid(ll, :sticky=>:ew, :row=>row, :column=>(col + 1))
-      idx += 1
-    }
-    @f_details.grid_columnconfigure(1, :weight=>1)
-  end
-
-  def show_ctrl
-    if @ctrl.winfo_mapped?
-      @ctrl.pack_forget
-      @show.text('>>')
-    else
-      @ctrl.pack(:side=>:right, :fill=>:both, :ipady=>5)
-      @show.text('<<')
-    end
-  end
-
-  def draw_all
-    reset_step
-    @canvas.delete(:all)
-    idx = 0
-    loop{
-      m = "draw#{idx}"
-      break unless respond_to?(m)
-      send(m)
-      idx += 1
-    }
-  end
-
-  def active_GUI(var1, var2, op)
-    st = {false=>:disabled, true=>:normal}
-
-    m = @S['mode'].to_sym
-    @S['pause'].value = (m == :MPAUSE)
-    @start.state(st[m != :MGO])
-    @pause.state(st[m != :MSTART && m != :MDONE])
-    @step.state(st[m != :MGO && m != :MDONE])
-    @bstep.state(st[m != :MGO && m != :MDONE])
-    @reset.state(st[m != :MSTART])
-
-    if @S['details'].bool
-      Tk.grid(@f_details, :in=>@details, :row=>2, :sticky=>:ew)
-    else
-      Tk.grid_forget(@f_details)
-    end
-    @speed_scale.label("Speed: #{@S['speed'].value}")
-  end
-
-  def start
-    @S['mode'].value = :MGO
-  end
-
-  def do_button(what)
-    case what
-    when 0  # Start
-      reset if @S['mode'].to_sym == :MDONE
-      @S['mode'].value = :MGO
-
-    when 1  # Pause
-      @S['mode'].value = ((@S['pause'].bool)? :MPAUSE: :MGO)
-
-    when 2  # Step
-      @S['mode'].value = :MSSTEP
-
-    when 3  # Reset
-      reset
-
-    when 4  # Big step
-      @S['mode'].value = :MBSTEP
-    end
-  end
-
-  def go(who = nil)
-    now = Tk::Clock.clicks(:miliseconds)
-    if who  # Start here for debugging
-      @S['active'] = [who]
-      @S['mode'].value = :MGO
-    end
-    return if @S['mode'].to_sym == :MDEBUG  # Debugging
-    # If not paused, do the next move
-    n = next_step if @S['mode'].to_sym != :MPAUSE
-    @S['mode'].value = :MPAUSE if @S['mode'].to_sym == :MSSTEP  # Single step
-    @S['mode'].value = :MSSTEP if @S['mode'].to_sym == :MBSTEP && n  # big step
-    elapsed = Tk::Clock.clicks(:miliseconds) - now
-    delay = @speed[@S['speed'].to_i] - elapsed
-    delay = 1 if delay <= 0
-    return delay
-  end
-
-  def next_step
-    retval = false   # Return value
-
-    if @S['mode'].to_sym != :MSTART && @S['mode'].to_sym != :MDONE
-      @S['cnt'].numeric += 1
-    end
-    alive = []
-    @S['active'].each{|who|
-      who = who.to_i
-      n = send("move#{who}")
-      if (n & 1).nonzero?          # This guy still alive
-        alive << who 
-      end
-      if (n & 2).nonzero?          # Next guy is active
-        alive << (who + 1)
-        retval = true
-      end
-      if (n & 4).nonzero?          # End of puzzle flag
-        @S['mode'].value = :MDONE  # Done mode
-        @S['active'] = []          # No more animation
-        return true
-      end
-    }
-    @S['active'] = alive
-    return retval
-  end
-
-  def about
-    msg = "Ruby/Tk Version ::\nby Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)\n\n"
-    msg += "Original Version ::\n"
-    msg += "#{@S['title']}\nby Keith Vetter, March 2003\n(Reproduced by kind permission of the author)\n\n"
-    msg += "Man will always find a difficult means to perform a simple task"
-    msg += "\nRube Goldberg"
-    Tk.messageBox(:message=>msg, :title=>'About')
-  end
-
-  ################################################################
-  #
-  # All the drawing and moving routines
-  #
-
-  # START HERE! banner
-  def draw0
-    color = @C['0']
-    TkcText.new(@canvas, 
-                # [579, 119], :text=>'START HERE!', 
-                [558, 119], :text=>'¤³¤³¤«¤é¥¹¥¿¡¼¥È¡ª', 
-                :fill=>color, :anchor=>:w, 
-                :tag=>'I0', :font=>['Times Roman', 12, :italic, :bold])
-    TkcLine.new(@canvas, [719, 119, 763, 119], :tag=>'I0', :fill=>color, 
-                :width=>5, :arrow=>:last, :arrowshape=>[18, 18, 5])
-    @canvas.itembind('I0', '1'){ start }
-  end
-
-  def move0(step = nil)
-    step = get_step(0, step)
-
-    if @S['mode'].to_sym != :MSTART    # Start the ball rolling
-      move_abs('I0', [-100, -100])     # Hide the banner
-      return 2
-    end
-
-    pos = [
-      [673, 119], [678, 119], [683, 119], [688, 119], 
-      [693, 119], [688, 119], [683, 119], [678, 119]
-    ]
-    step = step % pos.length
-    move_abs('I0', pos[step])
-    return 1
-  end
-
-  # Dropping ball
-  def draw1
-    color = @C['1a']
-    color2 = @C['1b']
-    TkcPolygon.new(@canvas, 
-                   [ 844, 133, 800, 133, 800, 346, 820, 346, 
-                     820, 168, 844, 168, 844, 133 ], 
-                   :width=>3, :fill=>color, :outline=>'')
-    TkcPolygon.new(@canvas, 
-                   [ 771, 133, 685, 133, 685, 168, 751, 168, 
-                     751, 346, 771, 346, 771, 133 ], 
-                   :width=>3, :fill=>color, :outline=>'')
-    TkcOval.new(@canvas, box(812, 122, 9), 
-                :tag=>'I1', :fill=>color2, :outline=>'')
-
-    @canvas.itembind('I1', '1'){ start }
-  end
-
-  def move1(step = nil)
-    step = get_step(1, step)
-    pos = [
-      [807, 122], [802, 122], [797, 123], [793, 124], [789, 129], [785, 153], 
-      [785, 203], [785, 278, :x], [785, 367], [810, 392], [816, 438], 
-      [821, 503], [824, 585, :y], [838, 587], [848, 593], [857, 601], 
-      [-100, -100]
-    ]
-    return 0 if step >= pos.length
-    where = pos[step]
-    move_abs('I1', where)
-    move15a if where[2] == :y
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  # Lighting the match
-  def draw2
-    color = @C['2']
-
-    # Fulcrum
-    TkcPolygon.new(@canvas, [750, 369, 740, 392, 760, 392], 
-                   :fill=>@C['fg'], :outline=>@C['fg'])
-
-    # Strike box
-    TkcRectangle.new(@canvas, [628, 335, 660, 383], 
-                     :fill=>'', :outline=>@C['fg'])
-    (0..2).each{|y|
-      yy = 335 + y*16
-      TkcBitmap.new(@canvas, [628, yy], :bitmap=>'gray25', 
-                    :anchor=>:nw, :foreground=>@C['fg'])
-      TkcBitmap.new(@canvas, [644, yy], :bitmap=>'gray25', 
-                    :anchor=>:nw, :foreground=>@C['fg'])
-    }
-
-    # Lever
-    TkcLine.new(@canvas, [702, 366, 798, 366], 
-                :fill=>@C['fg'], :width=>6, :tag=>'I2_0')
-
-    # R strap
-    TkcLine.new(@canvas, [712, 363, 712, 355], 
-                :fill=>@C['fg'], :width=>3, :tag=>'I2_1')
-
-    # L strap
-    TkcLine.new(@canvas, [705, 363, 705, 355], 
-                :fill=>@C['fg'], :width=>3, :tag=>'I2_2')
-
-    # Match stick
-    TkcLine.new(@canvas, [679, 356, 679, 360, 717, 360, 717, 356, 679, 356], 
-                :fill=>@C['fg'], :width=>3, :tag=>'I2_3')
-
-    # Match head
-    TkcPolygon.new(@canvas, 
-                   [ 671, 352, 677.4, 353.9, 680, 358.5, 677.4, 363.1, 
-                     671, 365, 664.6, 363.1, 662, 358.5, 664.6, 353.9 ], 
-                   :fill=>color, :outline=>color, :tag=>'I2_4')
-  end
-
-  def move2(step = nil)
-    step = get_step(2, step)
-
-    stages = [0, 0, 1, 2, 0, 2, 1, 0, 1, 2, 0, 2, 1]
-    xy = []
-    xy[0] = [
-      686, 333, 692, 323, 682, 316, 674, 309, 671, 295, 668, 307, 
-      662, 318, 662, 328, 671, 336
-    ]
-    xy[1] = [
-      687, 331, 698, 322, 703, 295, 680, 320, 668, 297, 663, 311, 
-      661, 327, 671, 335
-    ]
-    xy[2] = [
-      686, 331, 704, 322, 688, 300, 678, 283, 678, 283, 674, 298, 
-      666, 309, 660, 324, 672, 336
-    ]
-
-    if step >= stages.length
-      @canvas.delete('I2')
-      return 0
-    end
-
-    if step == 0  # Rotate the match
-      beta = 20
-      
-      ox, oy = anchor('I2_0', :s)  # Where to pivot
-
-      i = 0
-      until @canvas.find_withtag("I2_#{i}").empty?
-        rotate_item("I2_#{i}", ox, oy, beta)
-        i += 1
-      end
-
-      # For the flame
-      TkcPolygon.new(@canvas, [], :tag=>'I2', :smooth=>true, :fill=>@C['2'])
-
-      return 1
-    end
-    @canvas.coords('I2', xy[stages[step]])
-    return ((step == 7)? 3: 1)
-  end
-
-  # Weight and pulleys
-  def draw3
-    color = @C['3a']
-    color2 = @C['3b']
-
-    xy = [ [602, 296], [577, 174], [518, 174] ]
-    xy.each{|x, y| # 3 Pulleys
-      TkcOval.new(@canvas, box(x, y, 13), 
-                  :fill=>color, :outline=>@C['fg'], :width=>3)
-      TkcOval.new(@canvas, box(x, y, 2), :fill=>@C['fg'], :outline=>@C['fg'])
-    }
-
-    # Wall to flame
-    TkcLine.new(@canvas, [750, 309, 670, 309], :tag=>'I3_s', 
-                :width=>3, :fill=>@C['fg'], :smooth=>true)
-
-    # Flame to pulley 1
-    TkcLine.new(@canvas, [670, 309, 650, 309], :tag=>'I3_0', 
-                :width=>3, :fill=>@C['fg'], :smooth=>true)
-    TkcLine.new(@canvas, [650, 309, 600, 309], :tag=>'I3_1', 
-                :width=>3, :fill=>@C['fg'], :smooth=>true)
-
-    # Pulley 1 half way to 2
-    TkcLine.new(@canvas, [589, 296, 589, 235], :tag=>'I3_2', 
-                :width=>3, :fill=>@C['fg'])
-
-    # Pulley 1 other half to 2
-    TkcLine.new(@canvas, [589, 235, 589, 174], :width=>3, :fill=>@C['fg'])
-
-    # Across the top
-    TkcLine.new(@canvas, [577, 161, 518, 161], :width=>3, :fill=>@C['fg'])
-
-    # Down to weight
-    TkcLine.new(@canvas, [505, 174, 505, 205], :tag=>'I3_w', 
-                :width=>3, :fill=>@C['fg'])
-
-    # Draw the weight as 2 circles, two rectangles and 1 rounded rectangle
-    x1, y1, x2, y2 = [515, 207, 495, 207]
-    TkcOval.new(@canvas, box(x1, y1, 6), 
-                :tag=>'I3_', :fill=>color2, :outline=>color2)
-    TkcOval.new(@canvas, box(x2, y2, 6), 
-                :tag=>'I3_', :fill=>color2, :outline=>color2)
-    TkcRectangle.new(@canvas, x1, y1 - 6, x2, y2 + 6, 
-                     :tag=>'I3_', :fill=>color2, :outline=>color2)
-    
-    TkcPolygon.new(@canvas, round_rect([492, 220, 518, 263], 15), 
-                   :smooth=>true, :tag=>'I3_', :fill=>color2, :outline=>color2)
-
-    TkcLine.new(@canvas, [500, 217, 511, 217], 
-                :tag=>'I3_', :fill=>color2, :width=>10)
-
-    # Bottom weight target
-    TkcLine.new(@canvas, [502, 393, 522, 393, 522, 465], 
-                :tag=>'I3__', :fill=>@C['fg'], :joinstyle=>:miter, :width=>10)
-  end
-
-  def move3(step = nil)
-    step = get_step(3, step)
-
-    pos = [ [505, 247], [505, 297], [505, 386.5], [505, 386.5] ]
-    rope = []
-    rope[0] = [750, 309, 729, 301, 711, 324, 690, 300]
-    rope[1] = [750, 309, 737, 292, 736, 335, 717, 315, 712, 320]
-    rope[2] = [750, 309, 737, 309, 740, 343, 736, 351, 725, 340]
-    rope[3] = [750, 309, 738, 321, 746, 345, 742, 356]
-
-    return 0 if step >= pos.length
-
-    @canvas.delete("I3_#{step}")        # Delete part of the rope
-    move_abs('I3_', pos[step])          # Move weight down
-    @canvas.coords('I3_s', rope[step])  # Flapping rope end
-    @canvas.coords('I3_w', [505, 174].concat(pos[step]))
-    if step == 2
-      @canvas.move('I3__', 0, 30)
-      return 2
-    end
-    return 1
-  end
-
-  # Cage and door
-  def draw4
-    color = @C['4']
-    x0, y0, x1, y1 = [527, 356, 611, 464]
-
-    # Horizontal bars
-    y0.step(y1, 12){|y|
-      TkcLine.new(@canvas, [x0, y, x1, y], :fill=>color, :width=>1)
-    }
-
-    # Vertical bars
-    x0.step(x1, 12){|x|
-      TkcLine.new(@canvas, [x, y0, x, y1], :fill=>color, :width=>1)
-    }
-
-    # Swing gate
-    TkcLine.new(@canvas, [518, 464, 518, 428], 
-                :tag=>'I4', :fill=>color, :width=>1)
-  end
-
-  def move4(step = nil)
-    step = get_step(4, step)
-
-    angles = [-10, -20, -30, -30]
-    return 0 if step >= angles.length
-
-    rotate_item('I4', 518, 464, angles[step])
-    @canvas.raise('I4')
-
-    return((step == 3)? 3: 1)
-  end
-
-  # Mouse
-  def draw5
-    color  = @C['5a']
-    color2 = @C['5b']
-
-    xy = [377, 248, 410, 248, 410, 465, 518, 465]  # Mouse course
-    xy.concat [518, 428, 451, 428, 451, 212, 377, 212]
-
-    TkcPolygon.new(@canvas, xy, :fill=>color2, :outline=>@C['fg'], :width=>3)
-
-    xy = [
-      534.5, 445.5, 541, 440, 552, 436, 560, 436, 569, 440, 574, 446, 
-      575, 452, 574, 454, 566, 456, 554, 456, 545, 456, 537, 454, 530, 452
-    ]
-    TkcPolygon.new(@canvas, xy, :tag=>['I5', 'I5_0'], :fill=>color)
-
-    TkcLine.new(@canvas, [573, 452, 592, 458, 601, 460, 613, 456], # Tail
-                :tag=>['I5', 'I5_1'], :fill=>color, :smooth=>true, :width=>3)
-
-    xy = box(540, 446, 2)   # Eye
-    xy = [540, 444, 541, 445, 541, 447, 540, 448, 538, 447, 538, 445]
-    TkcPolygon.new(@canvas, xy, :tag=>['I5', 'I5_2'], :fill=>@C['bg'], 
-                   :outline=>'', :smooth=>true)
-
-    xy = [538, 454, 535, 461] # Front leg
-    TkcLine.new(@canvas, xy, :tag=>['I5', 'I5_3'], :fill=>color, :width=>2)
-
-    xy = [566, 455, 569, 462] # Back leg
-    TkcLine.new(@canvas, xy, :tag=>['I5', 'I5_4'], :fill=>color, :width=>2)
-
-    xy = [544, 455, 545, 460] # 2nd front leg
-    TkcLine.new(@canvas, xy, :tag=>['I5', 'I5_5'], :fill=>color, :width=>2)
-
-    xy = [560, 455, 558, 460] # 2nd back leg
-    TkcLine.new(@canvas, xy, :tag=>['I5', 'I5_6'], :fill=>color, :width=>2)
-  end
-
-  def move5(step = nil)
-    step = get_step(5, step)
-
-    pos = [
-      [553, 452], [533, 452], [513, 452], [493, 452], [473, 452], 
-      [463, 442, 30], [445.5, 441.5, 30], [425.5, 434.5, 30], [422, 414], 
-      [422, 394], [422, 374], [422, 354], [422, 334], [422, 314], [422, 294], 
-      [422, 274, -30], [422, 260.5, -30, :x], [422.5, 248.5, -28], [425, 237]
-    ]
-
-    return 0 if step >= pos.length
-
-    x, y, beta, nxt = pos[step]
-    move_abs('I5', [x, y])
-    if beta
-      ox, oy = centroid('I5_0')
-      (0..6).each{|id| rotate_item("I5_#{id}", ox, oy, beta) }
-    end
-    return 3 if nxt == :x
-    return 1
-  end
-
-  # Dropping gumballs
-  def draw6
-    color = @C['6']
-    xy = [324, 130, 391, 204] # Ball holder
-    xy = round_rect(xy, 10)
-    TkcPolygon.new(@canvas, xy, :smooth=>true, 
-                   :outline=>@C['fg'], :width=>3, :fill=>color)
-    xy = [339, 204, 376, 253] # Below the ball holder
-    TkcRectangle.new(@canvas, xy, :outline=>@C['fg'], :width=>3, 
-                     :fill=>color, :tag=>'I6c')
-    xy = box(346, 339, 28)
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>'') # Roter
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>2, :style=>:arc, 
-               :start=>80, :extent=>205)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>2, :style=>:arc, 
-               :start=>-41, :extent=>85)
-
-    xy = box(346, 339, 15) # Center of rotor
-    TkcOval.new(@canvas, xy, :outline=>@C['fg'], :fill=>@C['fg'], :tag=>'I6m')
-    xy = [352, 312, 352, 254, 368, 254, 368, 322] # Top drop to rotor
-    TkcPolygon.new(@canvas, xy, :fill=>color, :outline=>'')
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2)
-
-    xy = [353, 240, 367, 300] # Poke bottom hole
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>'')
-    xy = [341, 190, 375, 210] # Poke another hole
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>'')
-
-    xy = [
-      368, 356, 368, 403, 389, 403, 389, 464, 320, 464, 320, 403, 
-      352, 403, 352, 366
-    ]
-    TkcPolygon.new(@canvas, xy, :fill=>color, :outline=>'', 
-                   :width=>2) # Below rotor
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2)
-    xy = box(275, 342, 7) # On/off rotor
-    TkcOval.new(@canvas, xy, :outline=>@C['fg'], :fill=>@C['fg'])
-    xy = [276, 334, 342, 325] # Fan belt top
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-    xy = [276, 349, 342, 353] # Fan belt bottom
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-
-    xy = [337, 212, 337, 247] # What the mouse pushes
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I6_')
-    xy = [392, 212, 392, 247]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I6_')
-    xy = [337, 230, 392, 230]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>7, :tag=>'I6_')
-
-    who = -1 # All the balls
-    colors = %w(red cyan orange green blue darkblue)
-    colors *= 3
-
-    (0..16).each{|i|
-      loc = -i
-      color = colors[i]
-      x, y = @XY6["#{loc}"]
-      TkcOval.new(@canvas, box(x, y, 5), 
-                  :fill=>color, :outline=>color, :tag=>"I6_b#{i}")
-    }
-    draw6a(12) # The wheel
-  end
-
-  def draw6a(beta)
-    @canvas.delete('I6_0')
-    ox, oy = [346, 339]
-    (0..3).each{|i|
-      b = beta + i * 45
-      x, y = rotate_c(28, 0, 0, 0, b)
-      xy = [ox + x, oy + y, ox - x, oy - y]
-      TkcLine.new(@canvas, xy, :tag=>'I6_0', :fill=>@C['fg'], :width=>2)
-    }
-  end
-
-  def move6(step = nil)
-    step = get_step(6, step)
-
-    return 0 if step > 62
-
-    if step < 2  # Open gate for balls to drop
-      @canvas.move('I6_', -7, 0)
-      if step == 1  # Poke a hole
-        xy = [348, 226, 365, 240]
-        TkcRectangle.new(@canvas, xy, :fill=>@canvas.itemcget('I6c', :fill), 
-                         :outline=>'')
-      end
-      return 1
-    end
-
-    s = step - 1  # Do the gumball drop dance
-    (0..(((s - 1)/3).to_i)).each{|i|
-      tag = "I6_b#{i}"
-      break if @canvas.find_withtag(tag).empty?
-      loc = s - 3*i
-
-      if @XY6["#{loc},#{i}"]
-        move_abs(tag, @XY6["#{loc},#{i}"])
-      elsif @XY6["#{loc}"]
-        move_abs(tag, @XY6["#{loc}"])
-      end
-    }
-    if s % 3 == 1
-      first = (s + 2)/3
-      i = first
-      loop {
-        tag = "I6_b#{i}"
-        break if @canvas.find_withtag(tag).empty?
-        loc = first - i
-        move_abs(tag, @XY6["#{loc}"])
-        i += 1
-      }
-    end
-    if s >= 3  # Rotate the motor
-      idx = s % 3
-      draw6a(12 + s * 15)
-    end
-    return((s == 3)? 3 : 1)
-  end
-
-  # On/off switch
-  def draw7
-    color = @C['7']
-    xy = [198, 306, 277, 374]  # Box
-    TkcRectangle.new(@canvas, xy, :outline=>@C['fg'], :width=>2, 
-                     :fill=>color, :tag=>'I7z')
-    @canvas.lower('I7z')
-    xy = [275, 343, 230, 349]
-    TkcLine.new(@canvas, xy, :tag=>'I7', :fill=>@C['fg'], :arrow=>:last, 
-                :arrowshape=>[23, 23, 8], :width=>6)
-    xy = [225, 324]  # On button
-    x, y = xy
-    TkcOval.new(@canvas, box(x, y, 3), :fill=>@C['fg'], :outline=>@C['fg'])
-    xy = [218, 323]  # On text
-    font = ['Times Roman', 8]
-    TkcText.new(@canvas, xy, :text=>'on', :anchor=>:e, 
-                :fill=>@C['fg'], :font=>font)
-    xy = [225, 350]  # Off button
-    x, y = xy
-    TkcOval.new(@canvas, box(x, y, 3), :fill=>@C['fg'], :outline=>@C['fg'])
-    xy = [218, 349]  # Off text
-    TkcText.new(@canvas, xy, :text=>'off', :anchor=>:e, 
-                :fill=>@C['fg'], :font=>font)
-  end
-
-  def move7(step = nil)
-    step = get_step(7, step)
-
-    numsteps = 30
-    return 0 if step > numsteps
-    beta = 30.0 / numsteps
-    rotate_item('I7', 275, 343, beta)
-
-    return((step == numsteps)? 3: 1)
-  end
-
-  # Electricity to the fan
-  def draw8
-    sine([271, 248, 271, 306], 5, 8, :tag=>'I8_s', :fill=>@C['8'], :width=>3)
-  end
-
-  def move8(step = nil)
-    step = get_step(8, step)
-
-    return 0 if step > 3
-    if step == 0
-      sparkle(anchor('I8_s', :s), 'I8')
-      return 1
-    elsif step == 1
-      move_abs('I8', anchor('I8_s', :c))
-    elsif step == 2
-      move_abs('I8', anchor('I8_s', :n))
-    else
-      @canvas.delete('I8')
-    end
-    return((step == 2)? 3: 1)
-  end
-
-  # Fan
-  def draw9
-    color = @C['9']
-    xy = [266, 194, 310, 220]
-    TkcOval.new(@canvas, xy, :outline=>color, :fill=>color)
-    xy = [280, 209, 296, 248]
-    TkcOval.new(@canvas, xy, :outline=>color, :fill=>color)
-    xy = [
-      288, 249, 252, 249, 260, 240, 280, 234, 
-      296, 234, 316, 240, 324, 249, 288, 249
-    ]
-    TkcPolygon.new(@canvas, xy, :fill=>color, :smooth=>true)
-
-    xy = [248, 205, 265, 214, 264, 205, 265, 196]  # Spinner
-    TkcPolygon.new(@canvas, xy, :fill=>color)
-
-    xy = [255, 206, 265, 234]  # Fan blades
-    TkcOval.new(@canvas, xy, :fill=>'', :outline=>@C['fg'], 
-                :width=>3, :tag=>'I9_0')
-    xy = [255, 176, 265, 204]
-    TkcOval.new(@canvas, xy, :fill=>'', :outline=>@C['fg'], 
-                :width=>3, :tag=>'I9_0')
-    xy = [255, 206, 265, 220]
-    TkcOval.new(@canvas, xy, :fill=>'', :outline=>@C['fg'], 
-                :width=>1, :tag=>'I9_1')
-    xy = [255, 190, 265, 204]
-    TkcOval.new(@canvas, xy, :fill=>'', :outline=>@C['fg'], 
-                :width=>1, :tag=>'I9_1')
-  end
-
-  def move9(step = nil)
-    step = get_step(9, step)
-
-    if (step & 1).nonzero?
-      @canvas.itemconfigure('I9_0', :width=>4)
-      @canvas.itemconfigure('I9_1', :width=>1)
-      @canvas.lower('I9_1', 'I9_0')
-    else
-      @canvas.itemconfigure('I9_0', :width=>1)
-      @canvas.itemconfigure('I9_1', :width=>4)
-      @canvas.lower('I9_0', 'I9_1')
-    end
-    return 3 if step == 0
-    return 1
-  end
-
-  # Boat
-  def draw10
-    color  = @C['10a']
-    color2 = @C['10b']
-    xy = [191, 230, 233, 230, 233, 178, 191, 178]  # Sail
-    TkcPolygon.new(@canvas, xy, :fill=>color, :width=>3, :outline=>@C['fg'], 
-                   :tag=>'I10')
-    xy = box(209, 204, 31)  # Front
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>color, :style=>:pie, 
-               :start=>120, :extent=>120, :tag=>'I10')
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :style=>:arc, 
-               :start=>120, :extent=>120, :tag=>'I10')
-    xy = box(249, 204, 31)  # Back
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>@C['bg'], :width=>3, 
-               :style=>:pie, :start=>120, :extent=>120, :tag=>'I10')
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :style=>:arc, 
-               :start=>120, :extent=>120, :tag=>'I10')
-
-    xy = [200, 171, 200, 249]  # Mast
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I10')
-    xy = [159, 234, 182, 234]  # Bow sprit
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I10')
-    xy = [180, 234, 180, 251, 220, 251]  # Hull
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>6, :tag=>'I10')
-
-    xy = [92, 255, 221, 255]  # Waves
-    sine(xy, 2, 25, :fill=>color2, :width=>1, :tag=>'I10w')
-
-    xy = @canvas.coords('I10w')[4..-5]  # Water
-    xy.concat([222, 266, 222, 277, 99, 277])
-    TkcPolygon.new(@canvas, xy, :fill=>color2, :outline=>color2)
-    xy = [222, 266, 222, 277, 97, 277, 97, 266]  # Water bottom
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-
-    xy = box(239, 262, 17)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :style=>:arc, 
-               :start=>95, :extent=>103)
-    xy = box(76, 266, 21)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :style=>:arc, 
-               :extent=>190)
-  end
-
-  def move10(step = nil)
-    step = get_step(10, step)
-
-    pos = [
-      [195, 212], [193, 212], [190, 212], [186, 212], [181, 212], [176, 212], 
-      [171, 212], [166, 212], [161, 212], [156, 212], [151, 212], [147, 212], 
-      [142, 212], [137, 212], [132, 212, :x], [127, 212], [121, 212], 
-      [116, 212], [111, 212]
-    ]
-
-    return 0 if step >= pos.length
-
-    where = pos[step]
-    move_abs('I10', where)
-
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  # 2nd ball drop
-  def draw11
-    color  = @C['11a']
-    color2 = @C['11b']
-    xy = [23, 264, 55, 591]  # Color the down tube
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>'')
-    xy = box(71, 460, 48)    # Color the outer loop
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>'')
-
-    xy = [55, 264, 55, 458]  # Top right side
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-    xy = [55, 504, 55, 591]  # Bottom right side
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-    xy = box(71, 460, 48)    # Outer loop
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :style=>:arc, 
-               :start=>110, :extent=>-290, :tag=>'I11i')
-    xy = box(71, 460, 16)    # Inner loop
-    TkcOval.new(@canvas, xy, :outline=>@C['fg'], :fill=>'', 
-                :width=>3, :tag=>'I11i')
-    TkcOval.new(@canvas, xy, :outline=>@C['fg'], :fill=>@C['bg'], :width=>3)
-
-    xy = [23, 264, 23, 591]  # Left side
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-    xy = box(1, 266, 23)     # Top left curve
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, 
-               :style=>:arc, :extent=>90)
-
-    xy = box(75, 235, 9)     # The ball
-    TkcOval.new(@canvas, xy, :fill=>color2, :outline=>'', 
-                :width=>3, :tag=>'I11')
-  end
-
-  def move11(step = nil)
-    step = get_step(11, step)
-
-    pos = [
-      [75, 235], [70, 235], [65, 237], [56, 240], [46, 247], [38, 266], 
-      [38, 296], [38, 333], [38, 399], [38, 475], [74, 496], [105, 472], 
-      [100, 437], [65, 423], [-100, -100], [38, 505], [38, 527, :x], [38, 591]
-    ]
-
-    return 0 if step >= pos.length
-    where = pos[step]
-    move_abs('I11', where)
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  # Hand
-  def draw12
-    xy = [
-      20, 637, 20, 617, 20, 610, 20, 590, 40, 590, 40, 590, 
-      60, 590, 60, 610, 60, 610
-    ]
-    xy.concat([60, 610, 65, 620, 60, 631])  # Thumb
-    xy.concat([60, 631, 60, 637, 60, 662, 60, 669, 52, 669, 
-                56, 669, 50, 669, 50, 662, 50, 637])
-
-    y0 = 637  # Bumps for fingers
-    y1 = 645
-    50.step(21, -10){|x|
-      x1 = x - 5
-      x2 = x - 10
-      xy << x << y0 << x1 << y1 << x2 << y0
-    }
-    TkcPolygon.new(@canvas, xy, :fill=>@C['12'], :outline=>@C['fg'], 
-                   :smooth=>true, :tag=>'I12', :width=>3)
-  end
-
-  def move12(step = nil)
-    step = get_step(12, step)
-
-    pos = [[42.5, 641, :x]]
-    return 0 if step >= pos.length
-    where = pos[step]
-    move_abs('I12', where)
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  # Fax
-  def draw13
-    color = @C['13a']
-    xy = [86, 663, 149, 663, 149, 704, 50, 704, 50, 681, 64, 681, 86, 671]
-    xy2 = [
-      784, 663, 721, 663, 721, 704, 820, 704, 820, 681, 806, 681, 784, 671
-    ]
-    radii = [2, 9, 9, 8, 5, 5, 2]
-
-    round_poly(@canvas, xy, radii, :width=>3, 
-               :outline=>@C['fg'], :fill=>color)
-    round_poly(@canvas, xy2, radii, :width=>3, 
-               :outline=>@C['fg'], :fill=>color)
-
-    xy = [56, 677]
-    x, y = xy
-    TkcRectangle.new(@canvas, box(x, y, 4), :fill=>'', :outline=>@C['fg'], 
-                     :width=>3, :tag=>'I13')
-    xy = [809, 677]
-    x, y = xy
-    TkcRectangle.new(@canvas, box(x, y, 4), :fill=>'', :outline=>@C['fg'], 
-                     :width=>3, :tag=>'I13R')
-
-    xy = [112, 687]  # Label
-    TkcText.new(@canvas, xy, :text=>'FAX', :fill=>@C['fg'], 
-                :font=>['Times Roman', 12, :bold])
-    xy = [762, 687]
-    TkcText.new(@canvas, xy, :text=>'FAX', :fill=>@C['fg'], 
-                :font=>['Times Roman', 12, :bold])
-
-    xy = [138, 663, 148, 636, 178, 636]  # Paper guide
-    TkcLine.new(@canvas, xy, :smooth=>true, :fill=>@C['fg'], :width=>3)
-    xy = [732, 663, 722, 636, 692, 636]
-    TkcLine.new(@canvas, xy, :smooth=>true, :fill=>@C['fg'], :width=>3)
-
-    sine([149, 688, 720, 688], 5, 15, 
-         :tag=>'I13_s', :fill=>@C['fg'],  :width=>3)
-  end
-
-  def move13(step = nil)
-    step = get_step(13, step)
-
-    numsteps = 7
-
-    if step == numsteps + 2
-      move_abs('I13_star', [-100, -100])
-      @canvas.itemconfigure('I13R', :fill=>@C['13b'], :width=>2)
-      return 2
-    end
-    if step == 0  # Button down
-      @canvas.delete('I13')
-      sparkle([-100, -100], 'I13_star')  # Create off screen
-      return 1
-    end
-    x0, y0 = anchor('I13_s', :w)
-    x1, y1 = anchor('I13_s', :e)
-    x = x0 + (x1 - x0) * (step - 1) / numsteps.to_f
-    move_abs('I13_star', [x, y0])
-    return 1
-  end
-
-  # Paper in fax
-  def draw14
-    color = @C['14']
-    xy = [102, 661, 113, 632, 130, 618]  # Left paper edge
-    TkcLine.new(@canvas, xy, :smooth=>true, :fill=>color, 
-                :width=>3, :tag=>'I14L_0')
-    xy = [148, 629, 125, 640, 124, 662]  # Right paper edge
-    TkcLine.new(@canvas, xy, :smooth=>true, :fill=>color, 
-                :width=>3, :tag=>'I14L_1')
-    draw14a('L')
-
-    xy = [
-      768.0, 662.5, 767.991316225, 662.433786215, 767.926187912, 662.396880171
-    ]
-    TkcLine.new(@canvas, xy, :smooth=>true, :fill=>color, 
-                :width=>3, :tag=>'I14R_0')
-    @canvas.lower('I14R_0')
-    # NB. these numbers are VERY sensitive, you must start with final size
-    # and shrink down to get the values
-    xy = [
-      745.947897349, 662.428358855, 745.997829056, 662.452239237, 746.0, 662.5
-    ]
-    TkcLine.new(@canvas, xy, :smooth=>true, :fill=>color, 
-                :width=>3, :tag=>'I14R_1')
-    @canvas.lower('I14R_1')
-  end
-
-  def draw14a(side)
-    color = @C['14']
-    xy = @canvas.coords("I14#{side}_0")
-    xy2 = @canvas.coords("I14#{side}_1")
-    x0, y0, x1, y1, x2, y2 = xy
-    x3, y3, x4, y4, x5, y5 = xy2
-
-    zz = [
-      x0, y0, x0, y0, xy, x2, y2, x2, y2, 
-      x3, y3, x3, y3, xy2, x5, y5, x5, y5
-    ].flatten
-    @canvas.delete("I14#{side}")
-    TkcPolygon.new(@canvas, zz, :tag=>"I14#{side}", :smooth=>true, 
-                   :fill=>color, :outline=>color, :width=>3)
-    @canvas.lower("I14#{side}")
-  end
-
-  def move14(step = nil)
-    step = get_step(14, step)
-
-    # Paper going down
-    sc = 0.9 - 0.05*step
-    if sc < 0.3
-      @canvas.delete('I14L')
-      return 0
-    end
-
-    ox, oy = @canvas.coords('I14L_0')
-    @canvas.scale('I14L_0', ox, oy, sc, sc)
-    ox, oy = @canvas.coords('I14L_1')[-2..-1]
-    @canvas.scale('I14L_1', ox, oy, sc, sc)
-    draw14a('L')
-
-    # Paper going up
-    sc = 0.35 + 0.05*step
-    sc = 1/sc
-
-    ox, oy = @canvas.coords('I14R_0')
-    @canvas.scale('I14R_0', ox, oy, sc, sc)
-    ox, oy = @canvas.coords('I14R_1')[-2..-1]
-    @canvas.scale('I14R_1', ox, oy, sc, sc)
-    draw14a('R')
-
-    return((step == 10)? 3: 1)
-  end
-
-  # Light beam
-  def draw15
-    color = @C['15a']
-    xy = [824, 599, 824, 585, 820, 585, 829, 585]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I15a')
-    xy = [789, 599, 836, 643]
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>3)
-    xy = [778, 610, 788, 632]
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>3)
-    xy = [766, 617, 776, 625]
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>3)
-
-    xy = [633, 600, 681, 640]
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>3)
-    xy = [635, 567, 657, 599]
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>2)
-    xy = [765, 557, 784, 583]
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>2)
-
-    sine([658, 580, 765, 580], 3, 15, 
-         :tag=>'I15_s', :fill=>@C['fg'], :width=>3)
-  end
-
-  def move15a
-    color = @C['15b']
-    @canvas.scale('I15a', 824, 599, 1, 0.3)  # Button down
-    xy = [765, 621, 681, 621]
-    TkcLine.new(@canvas, xy, :dash=>'-', :width=>3, :fill=>color, :tag=>'I15')
-  end
-
-  def move15(step = nil)
-    step = get_step(15, step)
-
-    numsteps = 6
-
-    if step == numsteps + 2
-      move_abs('I15_star', [-100, -100])
-      return 2
-    end
-    if step == 0  # Break the light beam
-      sparkle([-100, -100], 'I15_star')
-      xy = [765, 621, 745, 621]
-      @canvas.coords('I15', xy)
-      return 1
-    end
-    x0, y0 = anchor('I15_s', :w)
-    x1, y1 = anchor('I15_s', :e)
-    x = x0 + (x1 - x0) * (step - 1) / numsteps.to_f
-    move_abs('I15_star', [x, y0])
-    return 1
-  end
-
-  # Bell
-  def draw16
-    color = @C['16']
-    xy = [722, 485, 791, 556]
-    TkcRectangle.new(@canvas, xy, :fill=>'', :outline=>@C['fg'], :width=>3)
-    xy = box(752, 515, 25)  # Bell
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>'black', 
-                :tag=>'I16b', :width=>2)
-    xy = box(752, 515, 5)   # Bell button
-    TkcOval.new(@canvas, xy, :fill=>'black', :outline=>'black', :tag=>'I16b')
-
-    xy = [784, 523, 764, 549]  # Clapper
-    TkcLine.new(@canvas, xy, :width=>3, :tag=>'I16c', :fill=>@C['fg'])
-    xy = box(784, 523, 4)
-    TkcOval.new(@canvas, xy, :fill=>@C['fg'], :outline=>@C['fg'], :tag=>'I16d')
-  end
-
-  def move16(step = nil)
-    step = get_step(16, step)
-
-    # Note: we never stop
-    ox, oy = [760, 553]
-    if (step & 1).nonzero?
-      beta = 12
-      @canvas.move('I16b', 3, 0)
-    else
-      beta = -12
-      @canvas.move('I16b', -3, 0)
-    end
-    rotate_item('I16c', ox, oy, beta)
-    rotate_item('I16d', ox, oy, beta)
-
-    return ((step == 1)? 3: 1)
-  end
-
-  # Cat
-  def draw17
-    color = @C['17']
-
-    xy = [584, 556, 722, 556]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-    xy = [584, 485, 722, 485]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3)
-
-    xy = [664, 523, 717, 549]  # Body
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :fill=>color, :width=>3, 
-               :style=>:chord, :start=>128, :extent=>260, :tag=>'I17')
-
-    xy = [709, 554, 690, 543]  # Paw
-    TkcOval.new(@canvas, xy, :outline=>@C['fg'], :fill=>color, 
-                :width=>3, :tag=>'I17')
-    xy = [657, 544, 676, 555]
-    TkcOval.new(@canvas, xy, :outline=>@C['fg'], :fill=>color, 
-                :width=>3, :tag=>'I17')
-
-    xy = box(660, 535, 15)     # Lower face
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :style=>:arc, 
-               :start=>150, :extent=>240, :tag=>'I17_')
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>color, :width=>1, 
-               :style=>:chord, :start=>150, :extent=>240, :tag=>'I17_')
-    xy = [674, 529, 670, 513, 662, 521, 658, 521, 650, 513, 647, 529]  # Ears
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-    TkcPolygon.new(@canvas, xy, :fill=>color, :outline=>'', :width=>1, 
-                   :tag=>['I17_', 'I17_c'])
-    xy = [652, 542, 628, 539]  # Whiskers
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-    xy = [652, 543, 632, 545]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-    xy = [652, 546, 632, 552]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-
-    xy = [668, 543, 687, 538]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, 
-                :tag=>['I17_', 'I17_w'])
-    xy = [668, 544, 688, 546]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, 
-                :tag=>['I17_', 'I17_w'])
-    xy = [668, 547, 688, 553]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, 
-                :tag=>['I17_', 'I17_w'])
-
-    xy = [649, 530, 654, 538, 659, 530]  # Left eye
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2, 
-                :smooth=>true, :tag=>'I17')
-    xy = [671, 530, 666, 538, 661, 530]  # Right eye
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2, 
-                :smooth=>true, :tag=>'I17')
-    xy = [655, 543, 660, 551, 665, 543]  # Mouth
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2, 
-                :smooth=>true, :tag=>'I17')
-  end
-
-  def move17(step = nil)
-    step = get_step(17, step)
-
-    if step == 0
-      @canvas.delete('I17')  # Delete most of the cat
-      xy = [655, 543, 660, 535, 665, 543]  # Mouth
-      TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3,
-                  :smooth=>true, :tag=>'I17_')
-      xy = box(654, 530, 4)  # Left eye
-      TkcOval.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :fill=>'', 
-                  :tag=>'I17_')
-      xy = box(666, 530, 4)  # Right eye
-      TkcOval.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :fill=>'', 
-                  :tag=>'I17_')
-
-      @canvas.move('I17_', 0, -20) # Move face up
-      xy = [652, 528, 652, 554]    # Front leg
-      TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-      xy = [670, 528, 670, 554]    # 2nd front leg
-      TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-
-      xy = [ # Body
-        675, 506, 694, 489, 715, 513, 715, 513, 715, 513, 716, 525, 
-        716, 525, 716, 525, 706, 530, 695, 530, 679, 535, 668, 527, 
-        668, 527, 668, 527, 675, 522, 676, 517, 677, 512
-      ]
-      TkcPolygon.new(@canvas, xy, :fill=>@canvas.itemcget('I17_c', :fill), 
-                     :outline=>@C['fg'], :width=>3, :smooth=>true, 
-                     :tag=>'I17_')
-      xy = [716, 514, 716, 554]  # Back leg
-      TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-      xy = [694, 532, 694, 554]  # 2nd back leg
-      TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I17_')
-      xy = [715, 514, 718, 506, 719, 495, 716, 488]  # Tail
-      TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, 
-                  :smooth=>true, :tag=>'I17_')
-
-      @canvas.raise('I17w')       # Make whiskers visible
-      @canvas.move('I17_', -5, 0) # Move away from the wall a bit
-      return 2
-    end
-    return 0
-  end
-
-  # Sling shot
-  def draw18
-    color = @C['18']
-    xy = [721, 506, 627, 506]  # Sling hold
-    TkcLine.new(@canvas, xy, :width=>4, :fill=>@C['fg'], :tag=>'I18')
-
-    xy = [607, 500, 628, 513]  # Sling rock
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>'', :tag=>'I18a')
-
-    xy = [526, 513, 606, 507, 494, 502]  # Sling band
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>4, :tag=>'I18b')
-    xy = [485, 490, 510, 540, 510, 575, 510, 540, 535, 491]  # Sling
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>6)
-  end
-
-  def move18(step = nil)
-    step = get_step(18, step)
-
-    pos = [
-      [587, 506], [537, 506], [466, 506], [376, 506], [266, 506, :x], 
-      [136, 506], [16, 506], [-100, -100]
-    ]
-
-    b = []
-    b[0] = [490, 502, 719, 507, 524, 512]  # Band collapsing
-    b[1] = [
-      491, 503, 524, 557, 563, 505, 559, 496, 546, 506, 551, 525, 
-      553, 536, 538, 534, 532, 519, 529, 499
-    ]
-    b[2] = [
-      491, 503, 508, 563, 542, 533, 551, 526, 561, 539, 549, 550, 530, 500
-    ]
-    b[3] = [
-      491, 503, 508, 563, 530, 554, 541, 562, 525, 568, 519, 544, 530, 501
-    ]
-
-    return 0 if step >= pos.length
-
-    if step == 0
-      @canvas.delete('I18')
-      @canvas.itemconfigure('I18b', :smooth=>true)
-    end
-    if b[step]
-      @canvas.coords('I18b', b[step])
-    end
-
-    where = pos[step]
-    move_abs('I18a', where)
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  # Water pipe
-  def draw19
-    color = @C['19']
-    xx = [[249, 181], [155, 118], [86, 55], [22, 0]]
-    xx.each{|x1, x2|
-      TkcRectangle.new(@canvas, x1, 453, x2, 467, 
-                       :fill=>color, :outline=>'', :tag=>'I19')
-      TkcLine.new(@canvas, x1, 453, x2, 453, 
-                  :fill=>@C['fg'], :width=>1) # Pipe top
-      TkcLine.new(@canvas, x1, 467, x2, 467, 
-                  :fill=>@C['fg'], :width=>1) # Pipe bottom
-    }
-    @canvas.raise('I11i')
-
-    xy = box(168, 460, 16)  # Bulge by the joint
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>'')
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, :style=>:arc, 
-               :start=>21, :extent=>136)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, :style=>:arc, 
-               :start=>-21, :extent=>-130)
-
-    xy = [249, 447, 255, 473]  # First joint 26x6
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>1)
-
-    xy = box(257, 433, 34)     # Bend up
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>color, :width=>1, 
-               :style=>:pie, :start=>0, :extent=>-91)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, 
-               :style=>:arc, :start=>0, :extent=>-90)
-    xy = box(257, 433, 20)
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>@C['bg'], :width=>1, 
-               :style=>:pie, :start=>0, :extent=>-92)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, 
-               :style=>:arc, :start=>0, :extent=>-90)
-    xy = box(257, 421, 34)     # Bend left
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>color, :width=>1, 
-               :style=>:pie, :start=>0, :extent=>91)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, 
-               :style=>:arc, :start=>0, :extent=>90)
-    xy = box(257, 421, 20)
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>@C['bg'], :width=>1, 
-               :style=>:pie, :start=>0, :extent=>90)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, 
-               :style=>:arc, :start=>0, :extent=>90)
-    xy = box(243, 421, 34)     # Bend down
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>color, :width=>1, 
-               :style=>:pie, :start=>90, :extent=>90)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, 
-               :style=>:arc, :start=>90, :extent=>90)
-    xy = box(243, 421, 20)
-    TkcArc.new(@canvas, xy, :outline=>'', :fill=>@C['bg'], :width=>1, 
-               :style=>:pie, :start=>90, :extent=>90)
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>1, 
-               :style=>:arc, :start=>90, :extent=>90)
-
-    xy = [270, 427, 296, 433]  # 2nd joint bottom
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>1)
-    xy = [270, 421, 296, 427]  # 2nd joint top
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>1)
-    xy = [249, 382, 255, 408]  # Third joint right
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>1)
-    xy = [243, 382, 249, 408]  # Third joint left
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>1)
-    xy = [203, 420, 229, 426]  # Last joint
-    TkcRectangle.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>1)
-
-    xy = box(168, 460, 6)      # Handle joint
-    TkcOval.new(@canvas, xy, :fill=>@C['fg'], :outline=>'', :tag=>'I19a')
-    xy = [168, 460, 168, 512]  # Handle bar
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>5, :tag=>'I19b')
-  end
-
-  def move19(step = nil)
-    step = get_step(19, step)
-
-     angles = [30, 30, 30]
-    return 2 if step == angles.length
-    ox, oy = centroid('I19a')
-    rotate_item('I19b', ox, oy, angles[step])
-
-    return 1
-  end
-
-  # Water pouring
-  def draw20
-    # do nothing
-  end
-
-  def move20(step = nil)
-    step = get_step(20, step)
-
-    pos  = [451, 462, 473, 484, 496, 504, 513, 523, 532]
-    freq  = [20,  40,  40,  40,  40,  40,  40,  40,  40]
-    pos = [
-      [451, 20], [462, 40], [473, 40], [484, 40], [496, 40], 
-      [504, 40], [513, 40], [523, 40], [532, 40, :x]
-    ]
-    return 0 if step >= pos.length
-
-    @canvas.delete('I20')
-    where = pos[step]
-    y, f = where
-    h20(y, f)
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  def h20(y, f)
-    color = @C['20']
-    @canvas.delete('I20')
-
-    sine([208, 428, 208, y], 4, f, :tag=>['I20', 'I20s'], 
-         :width=>3, :fill=>color, :smooth=>true)
-    TkcLine.new(@canvas, @canvas.coords('I20s'), :width=>3, 
-                :fill=>color, :smooth=>1, :tag=>['I20', 'I20a'])
-    TkcLine.new(@canvas, @canvas.coords('I20s'), :width=>3, 
-                :fill=>color, :smooth=>1, :tag=>['I20', 'I20b'])
-    @canvas.move('I20a', 8, 0)
-    @canvas.move('I20b', 16, 0)
-  end
-
-  # Bucket
-  def draw21
-    color = @C['21']
-    xy = [217, 451, 244, 490]  # Right handle
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2, :tag=>'I21_a')
-    xy = [201, 467, 182, 490]  # Left handle
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2, :tag=>'I21_a')
-
-    xy = [245, 490, 237, 535]  # Right side
-    xy2 = [189, 535, 181, 490] # Left side
-    TkcPolygon.new(@canvas, xy + xy2, :fill=>color, :outline=>'', 
-                   :tag=>['I21', 'I21f'])
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>2, :tag=>'I21')
-    TkcLine.new(@canvas, xy2, :fill=>@C['fg'], :width=>2, :tag=>'I21')
-
-    xy = [182, 486, 244, 498]  # Top
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>'', :width=>2, 
-                :tag=>['I21', 'I21f'])
-    TkcOval.new(@canvas, xy, :fill=>'', :outline=>@C['fg'], :width=>2, 
-                :tag=>['I21', 'I21t'])
-    xy = [189, 532, 237, 540]  # Bottom
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], :width=>2, 
-                :tag=>['I21', 'I21b'])
-  end
-
-  def move21(step = nil)
-    step = get_step(21, step)
-
-    numsteps = 30
-    return 0 if step >= numsteps
-
-    x1, y1, x2, y2 = @canvas.coords('I21b')
-    # lx1, ly1, lx2, ly2 = @canvas.coords('I21t')
-    lx1, ly1, lx2, ly2 = [183, 492, 243, 504]
-
-    f = step / numsteps.to_f
-    y2 = y2 - 3
-    xx1 = x1 + (lx1 - x1) * f
-    yy1 = y1 + (ly1 - y1) * f
-    xx2 = x2 + (lx2 - x2) * f
-    yy2 = y2 + (ly2 - y2) * f
-
-    @canvas.itemconfigure('I21b', :fill=>@C['20'])
-    @canvas.delete('I21w')
-    TkcPolygon.new(@canvas, x2, y2, x1, y1, xx1, yy1, xx2, yy1, 
-                   :tag=>['I21', 'I21w'], :outline=>'', :fill=>@C['20'])
-    @canvas.lower('I21w', 'I21')
-    @canvas.raise('I21b')
-    @canvas.lower('I21f')
-
-    return((step == numsteps - 1)? 3: 1)
-  end
-
-  # Bucket drop
-  def draw22
-    # do nothing
-  end
-
-  def move22(step = nil)
-    step = get_step(22, step)
-    pos = [[213, 513], [213, 523], [213, 543, :x], [213, 583], [213, 593]]
-
-    @canvas.itemconfigure('I21f', :fill=>@C['22']) if step == 0
-    return 0 if step >= pos.length
-    where = pos[step]
-    move_abs('I21', where)
-    h20(where[1], 40)
-    @canvas.delete('I21_a')  # Delete handles
-
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  # Blow dart
-  def draw23
-    color  = @C['23a']
-    color2 = @C['23b']
-    color3 = @C['23c']
-
-    xy = [185, 623, 253, 650]  # Block
-    TkcRectangle.new(@canvas, xy, :fill=>'black', :outline=>@C['fg'], 
-                     :width=>2, :tag=>'I23a')
-    xy = [187, 592, 241, 623]  # Balloon
-    TkcOval.new(@canvas, xy, :outline=>'', :fill=>color, :tag=>'I23b')
-    TkcArc.new(@canvas, xy, :outline=>@C['fg'], :width=>3, :tag=>'I23b', 
-               :style=>:arc, :start=>12, :extent=>336)
-    xy = [239, 604, 258, 589, 258, 625, 239, 610]  # Balloon nozzle
-    TkcPolygon.new(@canvas, xy, :outline=>'', :fill=>color, :tag=>'I23b')
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I23b')
-
-    xy = [285, 611, 250, 603]  # Dart body
-    TkcOval.new(@canvas, xy, :fill=>color2, :outline=>@C['fg'], 
-                :width=>3, :tag=>'I23d')
-    xy = [249, 596, 249, 618, 264, 607, 249, 596]  # Dart tail
-    TkcPolygon.new(@canvas, xy, :fill=>color3, :outline=>@C['fg'], 
-                   :width=>3, :tag=>'I23d')
-    xy = [249, 607, 268, 607]  # Dart detail
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I23d')
-    xy = [285, 607, 305, 607]  # Dart needle
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I23d')
-  end
-
-  def move23(step = nil)
-    step = get_step(23, step)
-
-    pos = [
-      [277, 607], [287, 607], [307, 607, :x], [347, 607], [407, 607], 
-      [487, 607], [587, 607], [687, 607], [787, 607], [-100, -100]
-    ]
-
-    return 0 if step >= pos.length
-    if step <= 1
-      ox, oy = anchor('I23a', :n)
-      @canvas.scale('I23b', ox, oy, 0.9, 0.5)
-    end
-    where = pos[step]
-    move_abs('I23d', where)
-
-    return 3 if where[2] == :x
-    return 1
-  end
-
-  # Balloon
-  def draw24
-    color = @C['24a']
-    xy = [366, 518, 462, 665]  # Balloon
-    TkcOval.new(@canvas, xy, :fill=>color, :outline=>@C['fg'], 
-                :width=>3, :tag=>'I24')
-    xy = [414, 666, 414, 729]  # String
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :width=>3, :tag=>'I24')
-    xy = [410, 666, 404, 673, 422, 673, 418, 666]  # Nozzle
-    TkcPolygon.new(@canvas, xy, :fill=>color, :outline=>@C['fg'],
-                   :width=>3, :tag=>'I24')
-
-    xy = [387, 567, 390, 549, 404, 542]  # Reflections
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :smooth=>true, 
-                :width=>2, :tag=>'I24')
-    xy = [395, 568, 399, 554, 413, 547]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :smooth=>true, 
-                :width=>2, :tag=>'I24')
-    xy = [403, 570, 396, 555, 381, 553]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :smooth=>true, 
-                :width=>2, :tag=>'I24')
-    xy = [408, 564, 402, 547, 386, 545]
-    TkcLine.new(@canvas, xy, :fill=>@C['fg'], :smooth=>true, 
-                :width=>2, :tag=>'I24')
-  end
-
-  def move24(step = nil)
-    step = get_step(24, step)
-
-    return 0 if step > 4
-    return 2 if step == 4
-
-    if step == 0
-      @canvas.delete('I24')  # Exploding balloon
-      xy = [
-        347, 465, 361, 557, 271, 503, 272, 503, 342, 574, 259, 594, 
-        259, 593, 362, 626, 320, 737, 320, 740, 398, 691, 436, 738, 
-        436, 739, 476, 679, 528, 701, 527, 702, 494, 627, 548, 613, 
-        548, 613, 480, 574, 577, 473, 577, 473, 474, 538, 445, 508, 
-        431, 441, 431, 440, 400, 502, 347, 465, 347, 465
-      ]
-      TkcPolygon.new(@canvas, xy, :tag=>'I24', :fill=>@C['24b'], 
-                     :outline=>@C['24a'], :width=>10, :smooth=>true)
-      msg = Tk.subst(@S['message'].value)
-      TkcText.new(@canvas, centroid('I24'), :text=>msg, :tag=>['I24', 'I24t'], 
-                  :justify=>:center, :font=>['Times Roman', 18, :bold])
-      return 1
-    end
-
-    @canvas.itemconfigure('I24t', :font=>['Times Roman', 18 + 6*step, :bold])
-    @canvas.move('I24', 0, -60)
-    ox, oy = centroid('I24')
-    @canvas.scale('I24', ox, oy, 1.25, 1.25)
-    return 1
-  end
-
-  # Displaying the message
-  def move25(step = nil)
-    step = get_step(25, step)
-
-    if step == 0
-      @XY['25'] = Tk::Clock.clicks(:miliseconds)
-      return 1
-    end
-    elapsed = Tk::Clock.clicks(:miliseconds) - @XY['25']
-    return 1 if elapsed < 5000
-    return 2
-  end
-
-  # Collapsing balloon
-  def move26(step = nil)
-    step = get_step(26, step)
-
-    if step >= 3
-      @canvas.delete('I24', 'I26')
-      TkcText.new(@canvas, 430, 735, :anchor=>:s, :tag=>'I26', 
-                  #:text=>'click to continue', 
-                  :text=>'¥¯¥ê¥Ã¥¯¤Ç¥ê¥»¥Ã¥È¤·¤Þ¤¹', 
-                  :font=>['Times Roman', 20, :bold])
-      @canvas.bind('1', proc{reset})
-      return 4
-    end
-
-    ox, oy = centroid('I24')
-    @canvas.scale('I24', ox, oy, 0.8, 0.8)
-    @canvas.move('I24', 0, 60)
-    @canvas.itemconfigure('I24t', :font=>['Times Roman', 30 - 6*step, :bold])
-    return 1
-  end
-
-  ################################################################
-  #
-  # Helper functions
-  #
-  def box(x, y, r)
-    [x - r, y - r, x + r, y + r]
-  end
-
-  def move_abs(item, xy)
-    x, y = xy
-    ox, oy = centroid(item)
-    dx = x - ox
-    dy = y - oy
-    @canvas.move(item, dx, dy)
-  end
-
-  def rotate_item(item, ox, oy, beta)
-    xy = @canvas.coords(item)
-    xy2 = []
-    0.step(xy.length - 1, 2){|idx|
-      x, y = xy[idx, 2]
-      xy2.concat(rotate_c(x, y, ox, oy, beta))
-    }
-    @canvas.coords(item, xy2)
-  end
-
-  def rotate_c(x, y, ox, oy, beta)
-    # rotates vector (ox,oy)->(x,y) by beta degrees clockwise
-
-    x -= ox    # Shift to origin
-    y -= oy
-
-    beta = beta * Math.atan(1) * 4 / 180.0        # Radians
-    xx = x * Math.cos(beta) - y * Math.sin(beta)  # Rotate
-    yy = x * Math.sin(beta) + y * Math.cos(beta)
-
-    xx += ox  # Shift back
-    yy += oy
-
-    [xx, yy]
-  end
-
-  def reset
-    draw_all
-    @canvas.bind_remove('1')
-    @S['mode'].value = :MSTART
-    @S['active'] = [0]
-  end
-
-  # Each Move## keeps its state info in STEP, this retrieves and increments it
-  def get_step(who, step)
-    if step
-      @STEP[who] = step
-    else
-      if !@STEP.exist?(who) || @STEP[who] == ""
-        @STEP[who] = 0
-      else
-        @STEP[who] += 1
-      end
-    end
-    @STEP[who]
-  end
-
-  def reset_step
-    @S['cnt'].value = 0
-    @STEP.keys.each{|k| @STEP[k] = ''}
-  end
-
-  def sine(xy0, amp, freq, opts = {})
-    x0, y0, x1, y1 = xy0
-    step = 2
-    xy = []
-    if y0 == y1  # Horizontal
-      x0.step(x1, step){|x|
-        beta = (x - x0) * 2 * Math::PI / freq
-        y = y0 + amp * Math.sin(beta)
-        xy << x << y
-      }
-    else
-      y0.step(y1, step){|y|
-        beta = (y - y0) * 2 * Math::PI / freq
-        x = x0 + amp * Math.sin(beta)
-        xy << x << y
-      }
-    end
-    TkcLine.new(@canvas, xy, opts)
-  end
-
-  def round_rect(xy, radius, opts={})
-    x0, y0, x3, y3 = xy
-    r = @canvas.winfo_pixels(radius)
-    d = 2 * r
-
-    # Make sure that the radius of the curve is less than 3/8 size of the box!
-    maxr = 0.75
-    if d > maxr * (x3 - x0)
-      d = maxr * (x3 - x0)
-    end
-    if d > maxr * (y3 - y0)
-      d = maxr * (y3 - y0)
-    end
-
-    x1 = x0 + d
-    x2 = x3 - d
-    y1 = y0 + d
-    y2 = y3 - d
-
-    xy = [x0, y0, x1, y0, x2, y0, x3, y0, x3, y1, x3, y2]
-    xy.concat([x3, y3, x2, y3, x1, y3, x0, y3, x0, y2, x0, y1])
-    return xy
-  end
-
-  def round_poly(canv, xy, radii, opts)
-    lenXY = xy.length
-    lenR = radii.length
-    if lenXY != 2*lenR
-      raise "wrong number of vertices and radii"
-    end
-
-    knots = []
-    x0 = xy[-2]; y0 = xy[-1]
-    x1 = xy[0];  y1 = xy[1]
-    xy << xy[0] << xy[1]
-
-    0.step(lenXY - 1, 2){|i|
-      radius = radii[i/2]
-      r = canv.winfo_pixels(radius)
-
-      x2 = xy[i+2];  y2 = xy[i+3]
-      z = _round_poly2(x0, y0, x1, y1, x2, y2, r)
-      knots.concat(z)
-
-      x0 = x1;  y0 = y1
-      x1 = x2;  y1 = y2
-    }
-    TkcPolygon.new(canv, knots, {:smooth=>true}.update(opts))
-  end
-
-  def _round_poly2(x0, y0, x1, y1, x2, y2, radius)
-    d = 2 * radius
-    maxr = 0.75
-
-    v1x = x0 - x1
-    v1y = y0 - y1
-    v2x = x2 - x1
-    v2y = y2 - y1
-
-    vlen1 = Math.sqrt(v1x*v1x + v1y*v1y)
-    vlen2 = Math.sqrt(v2x*v2x + v2y*v2y)
-
-    if d > maxr * vlen1
-      d = maxr * vlen1
-    end
-    if d > maxr * vlen2
-      d = maxr * vlen2
-    end
-
-    xy = []
-    xy << (x1 + d * v1x / vlen1) << (y1 + d * v1y / vlen1)
-    xy << x1 << y1
-    xy << (x1 + d * v2x / vlen2) << (y1 + d * v2y / vlen2)
-
-    return xy
-  end
-
-  def sparkle(oxy, tag)
-    xy = [
-      [299, 283], [298, 302], [295, 314], [271, 331], 
-      [239, 310], [242, 292], [256, 274], [281, 273]
-    ]
-    xy.each{|x, y|
-      TkcLine.new(@canvas, 271, 304, x, y, 
-                  :fill=>'white', :width=>3, :tag=>tag)
-    }
-    move_abs(tag, oxy)
-  end
-
-  def centroid(item)
-    anchor(item, :c)
-  end
-
-  def anchor(item, where)
-    x1, y1, x2, y2 = @canvas.bbox(item)
-    case(where)
-    when :n
-      y = y1
-    when :s
-      y = y2
-    else
-      y = (y1 + y2) / 2.0
-    end
-    case(where)
-    when :w
-      x = x1
-    when :e
-      x = x2
-    else
-      x = (x1 + x2) / 2.0
-    end
-    return [x, y]
-  end
-end
-
-TkGoldberg_Demo.new(base_frame)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/hello b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/hello
deleted file mode 100644 (file)
index 08f154d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env ruby
-# -*- coding: euc-jp -*-
-require 'tk'
-
-TkButton.new(nil,
-       'text'=>"¤³¤ó¤Ë¤Á¤Ï¡¢À¤³¦",
-       'command'=>proc{print "¤³¤ó¤Ë¤Á¤Ï¡¢À¤³¦\n"; exit}
-).pack
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/hscale.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/hscale.rb
deleted file mode 100644 (file)
index 5615aa5..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-# -*- coding: euc-jp -*-
-require "tkcanvas"
-
-if defined?($hscale_demo) && $hscale_deom
-  $hscale_demo.destroy
-  $hscale_demo = nil
-end
-
-$hscale_demo = TkToplevel.new {|w|
-  title("Horizontal Scale Demonstration")
-  iconname("hscale")
-}
-positionWindow($hscale_demo)
-
-base_frame = TkFrame.new($hscale_demo).pack(:fill=>:both, :expand=>true)
-
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '3.5i'
-  justify 'left'
-  text "²¼¤Ë¤ÏÌð°õ¤¬1¤Ä¤È¿åÊ¿¤Ê¥¹¥±¡¼¥ë¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£\
-¥¹¥±¡¼¥ë¾å¤Ç¥Þ¥¦¥¹¥Ü¥¿¥ó1¤ò¥¯¥ê¥Ã¥¯¡¢¤Þ¤¿¤Ï¥É¥é¥Ã¥°¤¹¤ë¤È\
-Ìð°õ¤ÎŤµ¤òÊѤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£"
-}
-msg.pack('side'=>'top')
-
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc {
-      tmppath = $hscale_demo
-      $hscale_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc { showCode 'hscale' }
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-def setWidth(w, width)
-  width = width + 21
-  x2 = width - 30
-  if x2 < 21
-    x2 = 21
-  end
-  w.coords 'poly',20,15,20,35,x2,35,x2,45,width,25,x2,5,x2,15,20,15
-  w.coords 'line',20,15,20,35,x2,35,x2,45,width,25,x2,5,x2,15,20,15
-end
-
-TkFrame.new(base_frame) {|frame|
-  canvas = TkCanvas.new(frame) {|c|
-    width 50
-    height 50
-    bd 0
-    highlightthickness 0
-    TkcPolygon.new(c, '0', '0', '1', '1', '2', '2') {
-      fill 'DeepSkyBlue'
-      tags 'poly'
-    }
-    TkcLine.new(c, '0', '0', '1', '1', '2', '2', '0', '0') {
-      fill 'black'
-      tags 'line'
-    }
-  }.pack('side'=>'top', 'expand'=>'yes', 'anchor'=>'s', 'fill'=>'x', 'padx'=>'15')
-  scale = TkScale.new(frame) {
-    orient 'horizontal'
-    length 284
-    from 0
-    to 250
-    command proc{|value| setWidth(canvas, value)}
-    tickinterval 50
-  }.pack('side'=>'bottom', 'expand'=>'yes', 'anchor'=>'n')
-  scale.set 75
-}.pack('side'=>'top', 'fill'=>'x')
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/icon.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/icon.rb
deleted file mode 100644 (file)
index a2ca665..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# iconic button widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($icon_demo) && $icon_demo
-  $icon_demo.destroy 
-  $icon_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$icon_demo = TkToplevel.new {|w|
-  title("Iconic Button Demonstration")
-  iconname("icon")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($icon_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '5i'
-  justify 'left'
-  text "¤³¤Î¥¦¥£¥ó¥É¥¦¤Ë¤Ï¥é¥¸¥ª¥Ü¥¿¥ó¤È¥Á¥§¥Ã¥¯¥Ü¥¿¥ó¾å¤Ë¥Ó¥Ã¥È¥Þ¥Ã¥×¤ä²èÁü¤òɽ¼¨¤¹¤ë 3 ¤Ä¤ÎÊýË¡¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£º¸¤Ë¤¢¤ë¤Î¤Ï2¤Ä¤Î¥é¥¸¥ª¥Ü¥¿¥ó¤Ç¡¢¤½¤ì¤¾¤ì¤¬¡¢¥Ó¥Ã¥È¥Þ¥Ã¥×¤ÈÁªÂò¤ò¼¨¤¹¥¤¥ó¥¸¥±¡¼¥¿¤Ç¤Ç¤­¤Æ¤¤¤Þ¤¹¡£Ãæ±û¤Ë¤¢¤ë¤Î¤Ï¡¢ÁªÂòºÑ¤ß¤«¤É¤¦¤«¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë²èÁü¤òɽ¼¨¤¹¤ë¥Á¥§¥Ã¥¯¥Ü¥¿¥ó¤Ç¤¹¡£±¦Â¦¤Ë¤¢¤ë¤Î¤ÏÁªÂòºÑ¤ß¤«¤É¤¦¤«¤Ë¤è¤Ã¤ÆÇØ·Ê¿§¤¬ÊѤï¤ë¥Ó¥Ã¥È¥Þ¥Ã¥×¤òɽ¼¨¤¹¤ë¥Á¥§¥Ã¥¯¥Ü¥¿¥ó¤Ç¤¹¡£"
-}
-msg.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $icon_demo
-      $icon_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'icon'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# image À¸À®
-flagup = \
-TkBitmapImage.new('file'=>[$demo_dir,'..',
-                           'images','flagup.xbm'].join(File::Separator),
-                  'maskfile'=>\
-                  [$demo_dir,'..','images','flagup.xbm'].join(File::Separator))
-flagdown = \
-TkBitmapImage.new('file'=>[$demo_dir,'..',
-                           'images','flagdown.xbm'].join(File::Separator),
-                  'maskfile'=>\
-                  [$demo_dir,'..',
-                    'images','flagdown.xbm'].join(File::Separator))
-
-# ÊÑ¿ôÀ¸À®
-letters = TkVariable.new
-
-# frame À¸À®
-TkFrame.new(base_frame, 'borderwidth'=>10){|w|
-  TkFrame.new(w) {|f|
-    # TkRadioButton.new(f){
-    Tk::RadioButton.new(f){
-      bitmap '@' + [$demo_dir,'..',
-                     'images','letters.xbm'].join(File::Separator)
-      variable letters
-      value 'full'
-    }.pack('side'=>'top', 'expand'=>'yes')
-
-    # TkRadioButton.new(f){
-    Tk::RadioButton.new(f){
-      bitmap '@' + [$demo_dir,'..',
-                     'images','noletter.xbm'].join(File::Separator)
-      variable letters
-      value 'empty'
-    }.pack('side'=>'top', 'expand'=>'yes')
-
-  }.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'5m')
-
-  # TkCheckButton.new(w) {
-  Tk::CheckButton.new(w) {
-    image flagdown
-    selectimage flagup
-    indicatoron 0
-    selectcolor self['background']
-  }.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'5m')
-
-  # TkCheckButton.new(w) {
-  Tk::CheckButton.new(w) {
-    bitmap '@' + [$demo_dir,'..',
-                   'images','letters.xbm'].join(File::Separator)
-    indicatoron 0
-    selectcolor 'SeaGreen1'
-  }.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'5m')
-
-}.pack('side'=>'top')
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/image1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/image1.rb
deleted file mode 100644 (file)
index d9435cc..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# two image widgets demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($image1_demo) && $image1_demo
-  $image1_demo.destroy 
-  $image1_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$image1_demo = TkToplevel.new {|w|
-  title('Image Demonstration #1')
-  iconname("Image1")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($image1_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "¤³¤Î¥Ç¥â¤Ç¤Ï2¤Ä¤Î¥é¥Ù¥ë¾å¤Ë²èÁü¤ò¤½¤ì¤¾¤ìɽ¼¨¤·¤Æ¤¤¤Þ¤¹¡£"
-}
-msg.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $image1_demo
-      $image1_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'image1'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# image À¸À®
-image1a = \
-TkPhotoImage.new('file'=>[$demo_dir,'..',
-                          'images','earth.gif'].join(File::Separator))
-image1b = \
-TkPhotoImage.new('file'=>[$demo_dir,'..',
-                          'images','earthris.gif'].join(File::Separator))
-
-# label À¸À®
-#[ TkLabel.new(base_frame, 'image'=>image1a, 'bd'=>1, 'relief'=>'sunken'),
-#  TkLabel.new(base_frame, 'image'=>image1b, 'bd'=>1, 'relief'=>'sunken')
-#].each{|w| w.pack('side'=>'top', 'padx'=>'.5m', 'pady'=>'.5m')}
-[ Tk::Label.new(base_frame, 'image'=>image1a, 'bd'=>1, 'relief'=>'sunken'),
-  Tk::Label.new(base_frame, 'image'=>image1b, 'bd'=>1, 'relief'=>'sunken')
-].each{|w| w.pack('side'=>'top', 'padx'=>'.5m', 'pady'=>'.5m')}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/image2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/image2.rb
deleted file mode 100644 (file)
index 1bb2c9e..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# widget demo 'load image' (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($image2_demo) && $image2_demo
-  $image2_demo.destroy 
-  $image2_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$image2_demo = TkToplevel.new {|w|
-  title('Image Demonstration #2')
-  iconname("Image2")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($image2_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "¤³¤Î¥Ç¥â¤Ç¤ÏTk¤Î photo image ¤ò»ÈÍѤ·¤Æ²èÁü¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ºÇ½é¤Ë¥¨¥ó¥È¥êÆâ¤Ë¤Ë¥Ç¥£¥ì¥¯¥È¥ê̾¤òÆþ¤ì¤Æ²¼¤µ¤¤¡£¼¡¤Ë²¼¤Î¥ê¥¹¥È¥Ü¥Ã¥¯¥¹¤Ë¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò¥í¡¼¥É¤¹¤ë¤¿¤á¡¢¥ê¥¿¡¼¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£¤½¤Î¸å¡¢²èÁü¤òÁªÂò¤¹¤ë¤¿¤á¤Ë¥ê¥¹¥È¥Ü¥Ã¥¯¥¹¤ÎÃæ¤Î¥Õ¥¡¥¤¥ë̾¤ò¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤·¤Æ²¼¤µ¤¤¡£"
-}
-msg.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $image2_demo
-      $image2_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'image2'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# ÊÑ¿ôÀ¸À®
-$dirName = TkVariable.new([$demo_dir,'..','images'].join(File::Separator))
-
-# image À¸À®
-$image2a = TkPhotoImage.new
-
-# ¥Õ¥¡¥¤¥ë̾ÆþÎÏÉô
-TkLabel.new(base_frame, 'text'=>'¥Ç¥£¥ì¥¯¥È¥ê:')\
-.pack('side'=>'top', 'anchor'=>'w')
-
-image2_e = TkEntry.new(base_frame) {
-  width 30
-  textvariable $dirName
-}.pack('side'=>'top', 'anchor'=>'w')
-
-TkFrame.new(base_frame, 'height'=>'3m', 'width'=>20)\
-.pack('side'=>'top', 'anchor'=>'w')
-
-TkLabel.new(base_frame, 'text'=>'¥Õ¥¡¥¤¥ë:')\
-.pack('side'=>'top', 'anchor'=>'w')
-
-TkFrame.new(base_frame){|w|
-  s = TkScrollbar.new(w)
-  l = TkListbox.new(w) {
-    width 20
-    height 10
-    yscrollcommand proc{|first,last| s.set first,last}
-  }
-  s.command(proc{|*args| l.yview(*args)})
-  l.pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y')
-  s.pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y')
-  #l.insert(0,'earth.gif', 'earthris.gif', 'mickey.gif', 'teapot.ppm')
-  l.insert(0,'earth.gif', 'earthris.gif', 'teapot.ppm')
-  l.bind('Double-1', proc{|x,y| loadImage $image2a,l,x,y}, '%x %y')
-
-  image2_e.bind 'Return', proc{loadDir l}
-
-}.pack('side'=>'top', 'anchor'=>'w')
-
-# image ÇÛÃÖ
-[ TkFrame.new(base_frame, 'height'=>'3m', 'width'=>20),
-  TkLabel.new(base_frame, 'text'=>'²èÁü:'),
-  # TkLabel.new(base_frame, 'image'=>$image2a)
-  Tk::Label.new(base_frame, 'image'=>$image2a)
-].each{|w| w.pack('side'=>'top', 'anchor'=>'w')}
-
-# ¥á¥½¥Ã¥ÉÄêµÁ
-def loadDir(w)
-  w.delete(0,'end')
-  Dir.glob([$dirName,'*'].join(File::Separator)).sort.each{|f|
-    w.insert('end',File.basename(f))
-  }
-end
-
-def loadImage(img,w,x,y)
-  img.file([$dirName, w.get("@#{x},#{y}")].join(File::Separator))
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/image3.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/image3.rb
deleted file mode 100644 (file)
index 12b8aaf..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-# -*- coding: euc-jp -*-
-# image3.rb
-#
-# This demonstration script creates a simple collection of widgets
-# that allow you to select and view images in a Tk label.
-#
-# widget demo 'load image' (called by 'widget')
-#
-
-# toplevel widget
-if defined?($image3_demo) && $image3_demo
-  $image3_demo.destroy 
-  $image3_demo = nil
-end
-
-# demo toplevel widget
-$image3_demo = TkToplevel.new {|w|
-  title('Image Demonstration #3')
-  iconname("Image3")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($image3_demo).pack(:fill=>:both, :expand=>true)
-
-# 
-def loadDir3(w)
-  w.delete(0,'end')
-  Dir.glob([$dirName,'*'].join(File::Separator)).sort.each{|f|
-    w.insert('end',File.basename(f))
-  }
-end
-
-# selectAndLoadDir3 --
-# This procedure pops up a dialog to ask for a directory to load into
-# the listobx and (if the user presses OK) reloads the directory
-# listbox from the directory named in the demo's entry.
-#
-# Arguments:
-# w -                   Name of the toplevel window of the demo.
-def selectAndLoadDir3(w, lbox)
-  dir = Tk.chooseDirectory(:initialdir=>$dirName.value, 
-                           :parent=>w, :mustexist=>true)
-  if dir.length > 0
-    $dirName.value = dir 
-    loadDir3(lbox)
-  end
-end
-
-def loadImage3(w,x,y)
-  $image3a.file([$dirName, w.get("@#{x},#{y}")].join(File::Separator))
-end
-
-
-# label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "¤³¤Î¥Ç¥â¤Ç¤ÏTk¤Î photo image ¤ò»ÈÍѤ·¤Æ²èÁü¤ò ¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ºÇ½é¤Ë¥¨¥ó¥È¥êÆâ¤Ë¤Ë¥Ç¥£¥ì¥¯¥È¥ê̾¤òÆþ¤ì¤Æ²¼¤µ¤¤¡£¼¡¤Ë²¼¤Î¥ê¥¹¥È¥Ü¥Ã¥¯¥¹¤Ë¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ò¥í¡¼¥É¤¹¤ë¤¿¤á¡¢¥ê¥¿¡¼¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£¤½¤Î¸å¡¢²èÁü¤òÁªÂò¤¹¤ë¤¿¤á¤Ë¥ê¥¹¥È¥Ü¥Ã¥¯¥¹¤ÎÃæ¤Î¥Õ¥¡¥¤¥ë̾¤ò¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤·¤Æ²¼¤µ¤¤¡£"
-}
-msg.pack('side'=>'top')
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $image3_demo
-      $image3_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'image3'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# variable
-$dirName = TkVariable.new([$demo_dir,'..','images'].join(File::Separator))
-
-# image
-begin
-  $image3a.delete
-rescue
-end
-$image3a = TkPhotoImage.new
-
-#
-image3_f = TkFrame.new(base_frame).pack(:fill=>:both, :expand=>true)
-
-image3_df = TkLabelFrame.new(base_frame, :text=>'¥Ç¥£¥ì¥¯¥È¥ê:')
-
-image3_ff = TkLabelFrame.new(base_frame, :text=>'¥Õ¥¡¥¤¥ë:', 
-                             :padx=>'2m', :pady=>'2m')
-image3_lbx = TkListbox.new(image3_ff, :width=>20, :height=>10) {
-  pack(:side=>:left, :fill=>:y, :expand=>true)
-  yscrollbar(TkScrollbar.new(image3_ff).pack(:side=>:left, :fill=>:y, 
-                                             :expand=>true))
-  insert(0, *(%w(earth.gif earthris.gif teapot.ppm)))
-  bind('Double-1', proc{|x,y| loadImage3(self, x, y)}, '%x %y')
-}
-
-image3_ent = TkEntry.new(image3_df, :width=>30, :textvariable=>$dirName){
-  pack(:side=>:left, :fill=>:both, :padx=>'2m', :pady=>'2m', :expand=>true)
-  bind('Return', proc{loadDir3(image3_lbx)})
-}
-
-TkButton.new(image3_df, :pady=>0, :padx=>'2m', :text=>"¥Ç¥£¥ì¥¯¥È¥êÁªÂò", 
-             :command=>proc{selectAndLoadDir3(image3_ent, image3_lbx)}) {
-  pack(:side=>:left, :fill=>:y, :padx=>[0, '2m'], :pady=>'2m')
-}
-
-image3_if = TkLabelFrame.new(base_frame, :text=>'¥¤¥á¡¼¥¸:') {|f|
-  # TkLabel.new(f, :image=>$image3a).pack(:padx=>'2m', :pady=>'2m')
-  Tk::Label.new(f, :image=>$image3a).pack(:padx=>'2m', :pady=>'2m')
-}
-
-Tk.grid(image3_df,  '-',
-        :sticky=>:ew, :padx=>'1m', :pady=>'1m', :in=>image3_f)
-Tk.grid(image3_ff, image3_if, 
-        :sticky=>:nw, :padx=>'1m', :pady=>'1m', :in=>image3_f)
-TkGrid.columnconfigure(image3_f, 1, :weight=>1)
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/items.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/items.rb
deleted file mode 100644 (file)
index 64ceeff..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# canvas item types widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($items_demo) && $items_demo
-  $items_demo.destroy 
-  $items_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$items_demo = TkToplevel.new {|w|
-  title("Canvas Item Demonstration")
-  iconname("Items")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($items_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-TkLabel.new(base_frame) {
-  font $font
-  wraplength '5i'
-  justify 'left'
-  text "¤³¤Î¥¦¥£¥ó¥É¥¦¤Ë¤Ï¥­¥ã¥ó¥Ð¥¹ widget ¤¬Æþ¤Ã¤Æ¤ª¤ê¡¢¤½¤ÎÃæ¤Ë¤Ï¥­¥ã¥ó¥Ð¥¹ widget ¤¬¥µ¥Ý¡¼¥È¤¹¤ëÍÍ¡¹¤Ê¥¿¥¤¥×¤Î¥¢¥¤¥Æ¥à¤ÎÎ㤬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£¼¡¤Î¤è¤¦¤ÊÁàºî¤¬¤Ç¤­¤Þ¤¹¡£\n  ¥Ü¥¿¥ó-1 ¥É¥é¥Ã¥°:\t¥¢¥¤¥Æ¥à¤òÆ°¤«¤¹¡£\n  ¥Ü¥¿¥ó-2 ¥É¥é¥Ã¥°:\t¸«¤¨¤Æ¤¤¤ëÉôʬ¤ò¤º¤é¤¹¡£\n  ¥Ü¥¿¥ó-3 ¥É¥é¥Ã¥°:\tÎΰè¤ò°Ï¤¦¡£\n  ¥³¥ó¥È¥í¡¼¥ë-F:\tÎΰè¤Î²¼¤Î¥¢¥¤¥Æ¥à¤òɽ¼¨¤¹¤ë¡£"
-}.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $items_demo
-      $items_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'items'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame À¸À®
-cvs = nil
-TkFrame.new(base_frame) {|cf|
-  # canvas À¸À®
-  cvs = TkCanvas.new(cf) {|c|
-    focus
-    scrollregion '0c 0c 30c 24c'
-    width  '15c'
-    height '10c'
-    relief 'sunken'
-    borderwidth 2
-
-    hs = TkScrollbar.new(cf) {|s|
-      orient 'horizontal'
-      command proc{|*args| c.xview(*args)}
-      c.xscrollcommand proc{|first,last| s.set first,last}
-    }
-
-    vs = TkScrollbar.new(cf) {|s|
-      command proc{|*args| c.yview(*args)}
-      c.yscrollcommand proc{|first,last| s.set first,last}
-    }
-
-    if $tk_version =~ /^4\.[01]/
-      hs.pack('side'=>'bottom', 'fill'=>'x')
-      vs.pack('side'=>'right', 'fill'=>'y')
-      c.pack('in'=>cf, 'expand'=>'yes', 'fill'=>'both')
-
-    else
-      c.grid('in'=>cf, 'row'=>0, 'column'=>0, 
-             'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-      vs.grid('row'=>0, 'column'=>1, 
-              'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-      hs.grid('row'=>1, 'column'=>0, 
-              'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-      TkGrid.rowconfigure(cf, 0, 'weight'=>1, 'minsize'=>0)
-      TkGrid.columnconfigure(cf, 0, 'weight'=>1, 'minsize'=>0)
-
-    end
-
-  }
-}.pack('side'=>'top', 'fill'=>'both', 'expand'=>'yes')
-
-# Display a 3x3 rectangular grid
-TkcRectangle.new(cvs, '0c', '0c', '30c', '24c', 'width'=>2)
-TkcLine.new(cvs, '0c', '8c', '30c', '8c', 'width'=>2)
-TkcLine.new(cvs, '0c', '16c', '30c', '16c', 'width'=>2)
-TkcLine.new(cvs, '10c', '0c', '10c', '24c', 'width'=>2)
-TkcLine.new(cvs, '20c', '0c', '20c', '24c', 'width'=>2)
-
-if $tk_version =~ /^4.*/
-  font1 = '-Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*'
-  font2 = '-Adobe-Helvetica-Bold-R-Normal--*-240-*-*-*-*-*-*'
-else
-  font1 = 'Helvetica 12'
-  font2 = 'Helvetica 24 bold'
-end
-if TkWinfo.depth($root).to_i > 1
-  blue   = 'DeepSkyBlue3'
-  red    = 'red'
-  bisque = 'bisque3'
-  green  = 'SeaGreen3'
-else
-  blue   = 'black'
-  red    = 'black'
-  bisque = 'black'
-  green  = 'black'
-end
-
-# tag ¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®
-$tag_item = TkcGroup.new(cvs)
-
-# Set up demos within each of the areas of the grid.
-TkcText.new(cvs, '5c', '.2c', 'text'=>'¥é¥¤¥ó', 'anchor'=>'n')
-TkcLine.new(cvs, '1c', '1c', '3c', '1c', '1c', '4c', '3c', '4c', 
-            'width'=>2, 'fill'=>blue, 'capstyle'=>'butt', 
-            'join'=>'miter', 'tags'=>$tag_item )
-TkcLine.new(cvs, '4.67c','1c','4.67c','4c', 'arrow'=>'last', 'tags'=>$tag_item)
-TkcLine.new(cvs, '6.33c','1c','6.33c','4c', 'arrow'=>'both', 'tags'=>$tag_item)
-TkcLine.new(cvs, '5c','6c','9c','6c','9c','1c','8c','1c','8c','4.8c','8.8c',
-            '4.8c','8.8c','1.2c','8.2c','1.2c','8.2c','4.6c','8.6c','4.6c',
-            '8.6c','1.4c','8.4c','1.4c','8.4c','4.4c',
-            'width'=>3, 'fill'=>red, 'tags'=>$tag_item )
-TkcLine.new(cvs, '1c','5c','7c','5c','7c','7c','9c','7c', 'width'=>'.5c', 
-            'stipple'=>'@'+[$demo_dir,'..',
-                            'images','gray25.xbm'].join(File::Separator), 
-            'arrow'=>'both', 'arrowshape'=>'15 15 7', 'tags'=>$tag_item )
-TkcLine.new(cvs, '1c','7c','1.75c','5.8c','2.5c','7c','3.25c','5.8c','4c','7c',
-            'width'=>'.5c', 'capstyle'=>'round', 'join'=>'round', 
-            'tags'=>$tag_item )
-
-TkcText.new(cvs, '15c', '.2c', 
-            'text'=>'¶ÊÀþ (³ê¤é¤«¤Ë¤Ä¤Ê¤¤¤ÀľÀþ)', 'anchor'=>'n')
-TkcLine.new(cvs, '11c','4c','11.5c','1c','13.5c','1c','14c','4c', 
-            'smooth'=>'on', 'fill'=>blue, 'tags'=>$tag_item )
-TkcLine.new(cvs, '15.5c','1c','19.5c','1.5c','15.5c','4.5c','19.5c','4c', 
-            'smooth'=>'on', 'arrow'=>'both', 'width'=>3, 'tags'=>$tag_item )
-TkcLine.new(cvs, '12c','6c','13.5c','4.5c','16.5c','7.5c','18c','6c', 
-            '16.5c','4.5c','13.5c','7.5c','12c','6c',
-            'smooth'=>'on', 'width'=>'3m', 'capstyle'=>'round', 
-            'stipple'=>'@'+[$demo_dir, '..',
-                            'images', 'gray25.xbm'].join(File::Separator), 
-            'fill'=>red, 'tags'=>$tag_item )
-
-TkcText.new(cvs, '25c', '.2c', 'text'=>'¿³Ñ·Á', 'anchor'=>'n')
-TkcPolygon.new(cvs, '21c','1.0c','22.5c','1.75c','24c','1.0c','23.25c','2.5c',
-               '24c','4.0c','22.5c','3.25c','21c','4.0c','21.75c','2.5c',
-               'fill'=>'green', 'outline'=>'black', 'width'=>4, 
-               'tags'=>$tag_item )
-TkcPolygon.new(cvs, '25c','4c','25c','4c','25c','1c','26c','1c','27c','4c',
-               '28c','1c','29c','1c','29c','4c','29c','4c',
-               'fill'=>red, 'smooth'=>'on', 'tags'=> $tag_item)
-TkcPolygon.new(cvs, '22c','4.5c','25c','4.5c','25c','6.75c','28c','6.75c',
-               '28c','5.25c','24c','5.25c','24c','6.0c','26c','6c','26c',
-               '7.5c','22c','7.5c', 
-               'stipple'=>'@' + [$demo_dir, '..',
-                                 'images', 'gray25.xbm'].join(File::Separator),
-               'outline'=>'black', 'tags'=>$tag_item )
-
-TkcText.new(cvs, '5c', '8.2c', 'text'=>'¶ë·Á', 'anchor'=>'n')
-TkcRectangle.new(cvs, '1c','9.5c','4c','12.5c',
-                 'outline'=>red, 'width'=>'3m', 'tags'=>$tag_item)
-TkcRectangle.new(cvs, '0.5c','13.5c','4.5c','15.5c', 
-                 'fill'=>green, 'tags'=>$tag_item )
-TkcRectangle.new(cvs, '6c','10c','9c','15c', 'outline'=>'',
-                 'stipple'=>'@'+[$demo_dir,'..',
-                                 'images','gray25.xbm'].join(File::Separator),
-                 'fill'=>blue, 'tags'=>$tag_item )
-
-TkcText.new(cvs, '15c', '8.2c', 'text'=>'Âʱß', 'anchor'=>'n')
-TkcOval.new(cvs, '11c','9.5c','14c','12.5c',
-                 'outline'=>red, 'width'=>'3m', 'tags'=>$tag_item)
-TkcOval.new(cvs, '10.5c','13.5c','14.5c','15.5c', 
-                 'fill'=>green, 'tags'=>$tag_item )
-TkcOval.new(cvs, '16c','10c','19c','15c', 'outline'=>'',
-                 'stipple'=>'@'+[$demo_dir,'..',
-                                 'images','gray25.xbm'].join(File::Separator),
-                 'fill'=>blue, 'tags'=>$tag_item )
-
-TkcText.new(cvs, '25c', '8.2c', 'text'=>'¥Æ¥­¥¹¥È', 'anchor'=>'n')
-TkcRectangle.new(cvs, '22.4c','8.9c','22.6c','9.1c')
-TkcText.new(cvs, '22.5c', '9c', 'anchor'=>'n', 'font'=>font1, 'width'=>'4c', 
-            'text'=>'û¤¤¥Æ¥­¥¹¥È¡£¥ï¡¼¥É¥é¥Ã¥×¡¢º¸Â·¤¨¡¢¥¢¥ó¥«¡¼¤ÏËÌ(¾å)¡£¢¢¤Ï³Æ¥Æ¥­¥¹¥È¤Î¥¢¥ó¥«¡¼¥Ý¥¤¥ó¥È¤ò¼¨¤¹¡£', 'tags'=>$tag_item )
-TkcRectangle.new(cvs, '25.4c','10.9c','25.6c','11.1c')
-TkcText.new(cvs, '25.5c', '11c', 'anchor'=>'w', 'font'=>font1, 'fill'=>blue, 
-            'text'=>"¤¤¤¯¤Ä¤«¤Î¹Ô¡£\n¤½¤ì¤¾¤ìÆÈΩ¤Ë\n¹Ô·¤¨¡£\nÁ´¤Æº¸Ã¼¤¬¥¢¥ó¥«¡¼¤µ¤ì¤Æ¤¤¤ë¡£", 'justify'=>'center', 'tags'=>$tag_item )
-TkcRectangle.new(cvs, '24.9c','13.9c','25.1c','14.1c')
-if $tk_version =~ /^4\.[01]/
-  TkcText.new(cvs, '25c', '14c', 'anchor'=>'c', 'font'=>font2, 'fill'=>red, 
-              'stipple'=>'@' + [$demo_dir, '..',
-                                'images', 'grey.5'].join(File::Separator),
-              'text'=>'Stippled characters', 'tags'=>$tag_item )
-else
-  TkcText.new(cvs, '25c', '14c', 'anchor'=>'c', 'font'=>font2, 'fill'=>red, 
-              'stipple'=>'gray50', 'text'=>'Stippled characters', 
-              'tags'=>$tag_item )
-end
-
-TkcText.new(cvs, '5c', '16.2c', 'text'=>'¸Ì', 'anchor'=>'n')
-TkcArc.new(cvs, '0.5c','17c','7c','20c', 'fill'=>green, 'outline'=>'black', 
-           'start'=>45, 'extent'=>270, 'style'=>'pieslice', 'tags'=>$tag_item)
-#TkcArc.new(cvs, '6.5c','17c','9.5c','20c', 'width'=>'4m', 'style'=>'arc', 
-#          'outline'=>blue, 'start'=>135, 'extent'=>270, 
-#          'outlinestipple'=>'@' + ['images', 'grey.25'].join(File::Separator),
-#          'tags'=>$tag_item)
-TkcArc.new(cvs, '6.5c','17c','9.5c','20c', 'width'=>'4m', 'style'=>'arc', 
-           'outline'=>blue, 'start'=>135, 'extent'=>270, 
-           'outlinestipple'=>'@'+[$demo_dir, '..',
-                                  'images','gray25.xbm'].join(File::Separator),
-           'tags'=>$tag_item)
-TkcArc.new(cvs, '0.5c','20c','9.5c','24c', 'width'=>'4m', 'style'=>'pieslice', 
-           'fill'=>'', 'outline'=>red, 'start'=>225, 'extent'=>90, 
-           'tags'=>$tag_item)
-TkcArc.new(cvs, '5.5c','20.5c','9.5c','23.5c', 'width'=>'4m', 'style'=>'chord',
-           'fill'=>blue, 'outline'=>'', 'start'=>45, 'extent'=>270, 
-           'tags'=>$tag_item)
-
-TkcText.new(cvs, '15c', '16.2c', 'text'=>'¥Ó¥Ã¥È¥Þ¥Ã¥×', 'anchor'=>'n')
-#TkcBitmap.new(cvs, '13c','20c',
-#             'bitmap'=>'@' + ['images', 'face'].join(File::Separator),
-#             'tags'=>$tag_item)
-TkcBitmap.new(cvs, '13c','20c',
-              'bitmap'=>'@' + [$demo_dir, '..',
-                               'images', 'face.xbm'].join(File::Separator),
-              'tags'=>$tag_item)
-#TkcBitmap.new(cvs, '17c','18.5c',
-#             'bitmap'=>'@' + ['images', 'noletters'].join(File::Separator),
-#             'tags'=>$tag_item)
-TkcBitmap.new(cvs, '17c','18.5c',
-              'bitmap'=>'@' + [$demo_dir, '..',
-                               'images', 'noletter.xbm'].join(File::Separator),
-              'tags'=>$tag_item)
-#TkcBitmap.new(cvs, '17c','21.5c',
-#             'bitmap'=>'@' + ['images', 'letters'].join(File::Separator),
-#             'tags'=>$tag_item)
-# ¢­¤Î·Á¼°¤Ç¤â²Äǽ
-TkcBitmap.new(cvs, '17c','21.5c') {
-  bitmap '@' + [$demo_dir, '..', 'images', 'letters.xbm'].join(File::Separator)
-  tags $tag_item
-}
-#TkcBitmap.new(cvs, '17c','21.5c') {
-#  bitmap '@' + ['images', 'letters'].join(File::Separator)
-#  tags $tag_item
-#}
-
-TkcText.new(cvs, '25c', '16.2c', 'text'=>'¥¦¥£¥ó¥É¥¦', 'anchor'=>'n')
-TkButton.new(cvs) {|b|
-  text '²¡¤·¤Æ¤Í'
-  command proc{butPress cvs, red}
-  TkcWindow.new(cvs, '21c','18c', 
-                'window'=>b, 'anchor'=>'nw', 'tags'=>$tag_item)
-}
-TkEntry.new(cvs, 'width'=>20, 'relief'=>'sunken') {|e|
-  insert 'end', 'ÊÔ½¸¤·¤Æ¤Í'
-  TkcWindow.new(cvs, '21c','21c', 
-                'window'=>e, 'anchor'=>'nw', 'tags'=>$tag_item)
-}
-TkScale.new(cvs, 'from'=>0, 'to'=>100, 'length'=>'6c', 'sliderlength'=>'.4c', 
-            'width'=>'.5c', 'tickinterval'=>0 ) {|scl|
-  TkcWindow.new(cvs, '28.5c','17.5c', 
-                'window'=>scl, 'anchor'=>'n', 'tags'=>$tag_item)
-}
-TkcText.new(cvs, '21c', '17.9c', 'text'=>'¥Ü¥¿¥ó:', 'anchor'=>'sw')
-TkcText.new(cvs, '21c', '20.9c', 'text'=>'¥¨¥ó¥È¥ê:', 'anchor'=>'sw')
-TkcText.new(cvs, '28.5c', '17.4c', 'text'=>'¥¹¥±¡¼¥ë:', 'anchor'=>'s')
-
-# Set up event bindings for canvas:
-cvs.itembind($tag_item, 'Any-Enter', proc{itemEnter cvs})
-cvs.itembind($tag_item, 'Any-Leave', proc{itemLeave cvs})
-cvs.bind('2', proc{|x,y| cvs.scan_mark x,y}, '%x %y')
-cvs.bind('B2-Motion', proc{|x,y| cvs.scan_dragto x,y}, '%x %y')
-cvs.bind('3', proc{|x,y| itemMark cvs,x,y}, '%x %y')
-cvs.bind('B3-Motion', proc{|x,y| itemStroke cvs,x,y}, '%x %y')
-cvs.bind('Control-f', proc{itemsUnderArea cvs})
-cvs.bind('1', proc{|x,y| itemStartDrag cvs,x,y}, '%x %y')
-cvs.bind('B1-Motion', proc{|x,y| itemDrag cvs,x,y}, '%x %y')
-# Utility methods for highlighting the item under the pointer
-
-$restoreCmd = nil
-def itemEnter (c)
-  if TkWinfo.depth(c).to_i == 1
-    $restoreCmd = nil
-    return
-  end
-  type = c.itemtype('current')
-  if type == TkcWindow
-    $restoreCmd = nil
-    return
-  end
-  if type == TkcBitmap
-    bg = (c.itemconfiginfo('current', 'background'))[4]
-    $restoreCmd = proc{c.itemconfigure 'current', 'background', bg}
-    c.itemconfigure 'current', 'background', 'SteelBlue2'
-    return
-  end
-  fill = (c.itemconfiginfo('current', 'fill'))[4]
-  if (type == TkcRectangle || type == TkcOval || type == TkcArc) && fill == []
-    outline = (c.itemconfiginfo('current', 'outline'))[4]
-    $restoreCmd = proc{c.itemconfigure 'current', 'outline', outline}
-    c.itemconfigure 'current', 'outline', 'SteelBlue2'
-  else
-    $restoreCmd = proc{c.itemconfigure 'current', 'fill', fill}
-    c.itemconfigure 'current', 'fill', 'SteelBlue2'
-  end
-end
-
-def itemLeave(c)
-  $restoreCmd.call if $restoreCmd
-end
-
-# Utility methods for stroking out a rectangle and printing what's 
-# underneath the rectangle's area.
-
-def itemMark(c,x,y)
-  $areaX1 = c.canvasx(x)
-  $areaY1 = c.canvasy(y)
-  c.delete 'area'
-end
-
-def itemStroke(c,x,y)
-  x = c.canvasx(x)
-  y = c.canvasy(y)
-  if $areaX1 != x && $areaY1 != y
-    c.delete 'area'
-    c.addtag_withtag 'area', TkcRectangle.new(c, $areaX1, $areaY1, x, y, 
-                                              '-outline', 'black')
-    $areaX2 = x
-    $areaY2 = y
-  end
-end
-
-def itemsUnderArea(c)
-  area = c.find_withtag('area')
-  items = []
-  c.find_enclosed($areaX1,$areaY1,$areaX2,$areaY2).each{|i|
-    items.push(i) if i.gettags.include?($tag_item)
-  }
-  print "Items enclosed by area: #{items.inspect}\n"; STDOUT.flush
-  items.clear
-  c.find_overlapping($areaX1,$areaY1,$areaX2,$areaY2).each{|i|
-    items.push(i) if i.gettags.include?($tag_item)
-  }
-  print "Items overlapping area: #{items.inspect}\n"; STDOUT.flush
-end
-
-$areaX1 = 0
-$areaY1 = 0
-$areaX2 = 0
-$areaY2 = 0
-
-# Utility methods to support dragging of items.
-
-def itemStartDrag(c,x,y)
-  $lastX = c.canvasx(x)
-  $lastY = c.canvasy(y)
-end
-
-def itemDrag(c,x,y)
-  x = c.canvasx(x)
-  y = c.canvasy(y)
-  c.move('current', x - $lastX, y - $lastY)
-  $lastX = x
-  $lastY = y
-end
-
-# Method that's invoked when the button embedded in the canvas 
-# is invoked.
-
-def butPress(w,color)
-  i = TkcText.new(w, '25c', '18.1c', 
-                  'text'=>'¤¤¤Æ¤Æ!!', 'fill'=>color, 'anchor'=>'n')
-  Tk.after(500, proc{w.delete i})
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ixset b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ixset
deleted file mode 100644 (file)
index 46c2378..0000000
+++ /dev/null
@@ -1,333 +0,0 @@
-#!/usr/bin/env ruby
-
-# ixset --
-# A nice interface to "xset" to change X server settings
-#
-
-require 'tk'
-
-class Xsettings
-  #
-  # Button actions
-  #
-  def quit
-    @root.destroy
-  end
-
-  def ok
-    writesettings
-    quit
-  end
-
-  def cancel
-    readsettings
-    dispsettings
-  end
-
-  # apply is just "writesettings"
-
-
-  #
-  # Read current settings
-  #
-  def readsettings
-    xfd = open("|xset q", 'r')
-    xfd.readlines.each{|line|
-      fields = line.chomp.strip.split(/\s+/)
-      case fields[0]
-      when "auto"
-       if fields[1] == 'repeat:'
-         @kbdrep = fields[2]
-         @w_kbdrep.set(@kbdrep)
-         @kbdcli = fields[6]
-       end
-
-      when "bell"
-       @bellvol = fields[2]
-       @bellpit = fields[5]
-       @belldur = fields[8]
-
-      when "acceleration:"
-       @mouseacc = fields[1]
-       @mousethr = fields[3]
-
-      when "prefer"
-       if fields[2] == 'yes'
-         @screenbla = 'blank'
-       else
-         @screenbla = 'noblank'
-       end
-       @w_screenbla.set(@screenbla)
-
-      when "timeout:"
-       @screentim = fields[1]
-       @screencyc = fields[3]
-
-      end
-    }
-
-    xfd.close
-  end
-
-  #
-  # Write settings into the X server
-  #
-  def writesettings
-    @bellvol = @w_bellvol.get
-    @bellpit = @w_bellpit.get
-    @belldur = @w_belldur.get
-
-    @kbdrep = @w_kbdrep.get
-    if @kbdrep == 'on'
-      @kbdcli = @w_kbdcli.get
-    else
-      @kbdcli = 'off'
-    end
-
-    @mouseacc = @w_mouseacc.get
-    @mousethr = @w_mousethr.get
-
-    @screentim = @w_screentim.get
-    @screencyc = @w_screencyc.get
-    @screenbla = @w_screenbla.get
-
-    system("xset \
-            b #{@bellvol} #{@bellpit} #{@belldur} \
-            c #{@kbdcli} \
-            r #{@kbdrep} \
-            m #{@mouseacc} #{@mousethr} \
-            s #{@screentim} #{@screencyc} \
-            s #{@screenbla}")
-  end
-
-  #
-  # Sends all settings to the window
-  #
-  def dispsettings
-    @w_bellvol.set(@bellvol)
-    @w_bellpit.set(@bellpit)
-    @w_belldur.set(@belldur)
-
-    @w_kbdonoff.set(@w_kbdrep.get)
-    @w_kbdcli.set(@kbdcli)
-
-    @w_mouseacc.set(@mouseacc)
-    @w_mousethr.set(@mousethr)
-
-    @w_screenblank.set(@w_screenbla.get)
-    @w_screenpat.set(@w_screenbla.get)
-
-    @w_screentim.set(@screentim)
-    @w_screencyc.set(@screencyc)
-  end
-
-  #
-  # Create all windows, and pack them
-  #
-  class LabelEntry
-    def initialize(parent, text, length)
-      @frame = TkFrame.new(parent)
-      TkLabel.new(@frame, 'text'=>text).pack('side'=>'left','expand'=>'y')
-      @entry = TkEntry.new(@frame, 'width'=>length, 'relief'=>'sunken') {
-       pack('side'=>'left','expand'=>'y')
-      }
-    end
-    def pack(keys)
-      @frame.pack(keys)
-    end
-    def get
-      @entry.value
-    end
-    def set(value)
-      @entry.delete(0,'end')
-      @entry.insert(0, value)
-    end
-  end
-
-  def createwindows
-    win = self
-
-    #
-    # Buttons
-    #
-    buttons = TkFrame.new(@root) {|f|
-      [ TkButton.new(f, 'command'=>proc{win.ok}, 'text'=>'Ok'),
-       TkButton.new(f, 'command'=>proc{win.writesettings}, 'text'=>'Apply'),
-       TkButton.new(f, 'command'=>proc{win.cancel}, 'text'=>'Cancel'),
-       TkButton.new(f, 'command'=>proc{win.quit}, 'text'=>'Quit') ].each{|b|
-       b.pack('side'=>'left', 'expand'=>'yes', 'pady'=>5)
-      }
-    }
-
-    #
-    # Bell settings
-    #
-    bell = TkFrame.new(@root, 'relief'=>'raised', 'borderwidth'=>2)
-    l = TkLabel.new(bell, 'text'=>'Bell Settings')
-    @w_bellvol = TkScale.new(bell, 'from'=>0, 'to'=>100, 'length'=>200, 
-                            'tickinterval'=>20, 'orient'=>'horizontal', 
-                            'label'=>"Volume (%)") 
-
-    f = TkFrame.new(bell)
-    @w_bellpit = LabelEntry.new(f, "Pitch (Hz)", 6)
-    @w_bellpit.pack('side'=>'left', 'padx'=>5)
-    @w_belldur = LabelEntry.new(f, "Duration (ms)", 6)
-    @w_belldur.pack('side'=>'right', 'padx'=>5)
-
-    l.pack('side'=>'top', 'expand'=>'yes')
-    @w_bellvol.pack('side'=>'top', 'expand'=>'yes')
-    f.pack('side'=>'top', 'expand'=>'yes')
-
-    #
-    # Keyboard settings
-    # 
-    kbdonoff = nil
-    kbdcli = nil
-    kbd = TkFrame.new(@root, 'relief'=>'raised', 'borderwidth'=>2)
-    l = TkLabel.new(kbd, 'text'=>'Keyboard Repeat Settings')
-    f = TkFrame.new(kbd)
-    @w_kbdonoff = TkCheckButton.new(f, 'text'=>'On', 'relief'=>'flat', 
-                                   'onvalue'=>'on', 'offvalue'=>'off',
-                                   'variable'=>@w_kbdrep ) {
-      def self.set(value)
-       if value == 'on'
-         self.select
-       else
-         self.deselect
-       end
-      end
-      pack('side'=>'left', 'expand'=>'yes', 'fill'=>'both')
-    }
-    @w_kbdcli = TkScale.new(f, 'from'=>0, 'to'=>100, 'length'=>200, 
-                        'tickinterval'=>20, 'orient'=>'horizontal', 
-                        'label'=>'Click Volume (%)')
-    @w_kbdcli.pack('side'=>'left', 'expand'=>'yes')
-    l.pack('side'=>'top', 'expand'=>'yes')
-    f.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2, 'fill'=>'x')
-
-    #
-    # Mouse settings
-    #
-    mouse = TkFrame.new(@root, 'relief'=>'raised', 'borderwidth'=>2)
-    l = TkLabel.new(mouse, 'text'=>'Mouse Settings')
-    f = TkFrame.new(mouse)
-    @w_mouseacc = LabelEntry.new(f, 'Acceleration', 3)
-    @w_mouseacc.pack('side'=>'left')
-    @w_mousethr = LabelEntry.new(f, 'Threshold (pixels)', 3)
-    @w_mousethr.pack('side'=>'right')
-    l.pack('side'=>'top')
-    f.pack('side'=>'top', 'expand'=>'yes')
-
-    #
-    # Screen Saver settings
-    #
-    screen = TkFrame.new(@root, 'relief'=>'raised', 'borderwidth'=>2)
-    l = TkLabel.new(screen, 'text'=>'Screen-saver Settings')
-    f = TkFrame.new(screen)
-    ff1 = TkFrame.new(f)
-    [ @w_screenblank = TkRadioButton.new(ff1, 'text'=>'Blank', 
-                                        'relief'=>'flat', 
-                                        'variable'=>@w_screenbla, 
-                                        'value'=>'blank') {
-       def self.set(value)
-         if value == 'blank'
-           self.select
-         else
-           self.deselect
-         end
-       end
-      }, 
-      @w_screenpat = TkRadioButton.new(ff1, 'text'=>'Pattern', 
-                                      'relief'=>'flat', 
-                                      'variable'=>@w_screenbla, 
-                                      'value'=>'noblank') {
-       def self.set(value)
-         if value != 'blank'
-           self.select
-         else
-           self.deselect
-         end
-       end
-      }
-    ].each {|w| w.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w') }
-
-    ff2 = TkFrame.new(f)
-    [ @w_screentim = LabelEntry.new(ff2, 'Timeout (s)', 5), 
-      @w_screencyc = LabelEntry.new(ff2, 'Cycle (s)', 5) ].each{|w|
-      w.pack('side'=>'top', 'pady'=>2, 'anchor'=>'e')
-    }
-
-    ff1.pack('side'=>'left')
-    ff2.pack('side'=>'left')
-
-    l.pack('side'=>'top')
-    f.pack('side'=>'top', 'expand'=>'yes')
-
-    #
-    # Main window
-    #
-    buttons.pack('side'=>'top', 'fill'=>'both')
-    bell.pack('side'=>'top', 'fill'=>'both', 'ipady'=>5, 'expand'=>'yes')
-    kbd.pack('side'=>'top', 'fill'=>'both', 'ipady'=>5, 'expand'=>'yes')
-    mouse.pack('side'=>'top', 'fill'=>'both', 'ipady'=>5, 'expand'=>'yes')
-    screen.pack('side'=>'top', 'fill'=>'both', 'ipady'=>5, 'expand'=>'yes')
-
-    #
-    # Let the user resize our window
-    #
-    @root.minsize(10,10)
-  end
-
-  def initialize
-    @root = TkRoot.new
-
-    @kbdrep = 'on'
-    @w_kbdrep = TkVariable.new(@kbdrep)
-    def @w_kbdrep.get
-      self.value
-    end
-    def @w_kbdrep.set(val)
-      self.value=val
-    end
-
-    @kbdcli = 0
-
-    @bellvol = 100
-    @bellpit = 440
-    @belldur = 100
-
-    @mouseacc = "3/1"
-    @mousethr = 4
-
-    @screenbla = "blank"
-    @w_screenbla = TkVariable.new(@screenbla)
-    def @w_screenbla.get
-      self.value
-    end
-    def @w_screenbla.set(val)
-      self.value=val
-    end
-
-    @screentim = 600
-    @screencyc = 600
-
-    #
-    # Listen what "xset" tells us...
-    #
-    readsettings
-
-    #
-    # Create all windows
-    #
-    createwindows
-
-    #
-    # Write xset parameters
-    #
-    dispsettings
-  end
-end
-
-Xsettings.new
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ixset2 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ixset2
deleted file mode 100644 (file)
index 5b816e4..0000000
+++ /dev/null
@@ -1,369 +0,0 @@
-#!/usr/bin/env ruby
-# -*- coding: euc-jp -*-
-#
-# ixset --
-# A nice interface to "xset" to change X server settings
-#
-
-require 'tk'
-
-class Xsettings
-  #
-  # Button actions
-  #
-  def quit
-    @root.destroy
-  end
-
-  def ok
-    writesettings
-    quit
-  end
-
-  def cancel
-    readsettings
-    dispsettings
-    @btn_APPLY.state(:disabled)
-    @btn_CANCEL.state(:disabled)
-  end
-
-  # apply is just "writesettings"
-  def apply
-    writesettings
-    @btn_APPLY.state(:disabled)
-    @btn_CANCEL.state(:disabled)
-  end
-
-  #
-  # Read current settings
-  #
-  def readsettings
-    xfd = open("|xset q", 'r')
-    xfd.readlines.each{|line|
-      fields = line.chomp.strip.split(/\s+/)
-      case fields[0]
-      when "auto"
-       if fields[1] == 'repeat:'
-         @kbdrep = fields[2]
-         @w_kbdrep.set(@kbdrep)
-         @kbdcli = fields[6]
-       end
-
-      when "bell"
-       @bellvol = fields[2]
-       @bellpit = fields[5]
-       @belldur = fields[8]
-
-      when "acceleration:"
-       @mouseacc = fields[1]
-       @mousethr = fields[3]
-
-      when "prefer"
-       if fields[2] == 'yes'
-         @screenbla = 'blank'
-       else
-         @screenbla = 'noblank'
-       end
-       @w_screenbla.set(@screenbla)
-
-      when "timeout:"
-       @screentim = fields[1]
-       @screencyc = fields[3]
-
-      end
-    }
-
-    xfd.close
-  end
-
-  #
-  # Write settings into the X server
-  #
-  def writesettings
-    @bellvol = @w_bellvol.get
-    @bellpit = @w_bellpit.get
-    @belldur = @w_belldur.get
-
-    @kbdrep = @w_kbdrep.get
-    if @kbdrep == 'on'
-      @kbdcli = @w_kbdcli.get
-    else
-      @kbdcli = 'off'
-    end
-
-    @mouseacc = @w_mouseacc.get
-    @mousethr = @w_mousethr.get
-
-    @screentim = @w_screentim.get
-    @screencyc = @w_screencyc.get
-    @screenbla = @w_screenbla.get
-
-    system("xset \
-            b #{@bellvol} #{@bellpit} #{@belldur} \
-            c #{@kbdcli} \
-            r #{@kbdrep} \
-            m #{@mouseacc} #{@mousethr} \
-            s #{@screentim} #{@screencyc} \
-            s #{@screenbla}")
-  end
-
-  #
-  # Sends all settings to the window
-  #
-  def dispsettings
-    @w_bellvol.set(@bellvol)
-    @w_bellpit.set(@bellpit)
-    @w_belldur.set(@belldur)
-
-    @w_kbdonoff.set(@w_kbdrep.get)
-    @w_kbdcli.set(@kbdcli)
-
-    @w_mouseacc.set(@mouseacc)
-    @w_mousethr.set(@mousethr)
-
-    @w_screenblank.set(@w_screenbla.get)
-    @w_screenpat.set(@w_screenbla.get)
-
-    @w_screentim.set(@screentim)
-    @w_screencyc.set(@screencyc)
-  end
-
-  #
-  # Create all windows, and pack them
-  #
-  class LabelEntry
-    def initialize(parent, text, length, range=[])
-      @frame = TkFrame.new(parent)
-      TkLabel.new(@frame, 'text'=>text).pack('side'=>'left')
-      if range.size > 0 
-       @entry = TkSpinbox.new(@frame, 'width'=>length, 'relief'=>'sunken', 
-                              'from'=>range[0], 'to'=>range[1])
-      else
-       @entry = TkEntry.new(@frame, 'width'=>length, 'relief'=>'sunken')
-      end
-      @entry.pack('side'=>'right','expand'=>'y', 'fill'=>'x')
-    end
-    def epath
-      @frame
-    end
-    def pack(keys)
-      @frame.pack(keys)
-    end
-    def get
-      @entry.value
-    end
-    def set(value)
-      @entry.delete(0,'end')
-      @entry.insert(0, value)
-    end
-  end
-
-  def createwindows
-    win = self
-
-    #
-    # Buttons
-    #
-    btn_frame = TkFrame.new(@root)
-    buttons = [ 
-      @btn_OK = TkButton.new(btn_frame, 'command'=>proc{win.ok}, 
-                            'default'=>'active', 'text'=>'λ²ò'),
-      @btn_APPLY = TkButton.new(btn_frame, 'command'=>proc{win.writesettings}, 
-                               'default'=>'normal', 'text'=>'ŬÍÑ', 
-                               'state'=>'disabled'),
-      @btn_CANCEL = TkButton.new(btn_frame, 'command'=>proc{win.cancel}, 
-                                'default'=>'normal', 'text'=>'¼è¾Ã', 
-                               'state'=>'disabled'),
-      @btn_QUIT = TkButton.new(btn_frame, 'command'=>proc{win.quit}, 
-                              'default'=>'normal', 'text'=>'Ãæ»ß')
-    ]
-    buttons.each{|b| b.pack('side'=>'left', 'expand'=>'yes', 'pady'=>5) }
-
-    @root.bind('Return', proc{@btn_OK.flash; @btn_OK.invoke})
-    @root.bind('Escape', proc{@btn_QUIT.flash; @btn_QUIT.invoke})
-    @root.bind('1', proc{|w|
-                unless buttons.index(w)
-                  @btn_APPLY.state(:normal)
-                  @btn_CANCEL.state(:normal)
-                end
-              }, '%W')
-    @root.bind('Key', proc{|w, k|
-                unless buttons.index(w)
-                  case k
-                  when 'Return', 'Escape', 'Tab', /.*Shift.*/
-                    # do nothing
-                  else
-                    @btn_APPLY.state(:normal)
-                    @btn_CANCEL.state(:normal)
-                  end
-                end
-              }, '%W %K')
-
-    #
-    # Bell settings
-    #
-    bell = TkLabelframe.new(@root, 'text'=>'¥Ù¥ëÀßÄê', 
-                           'padx'=>'1.5m', 'pady'=>'1.5m')
-    @w_bellvol = TkScale.new(bell, 'from'=>0, 'to'=>100, 'length'=>200, 
-                            'tickinterval'=>20, 'orient'=>'horizontal', 
-                            'label'=>"²»ÎÌ (%)")
-
-    f = TkFrame.new(bell)
-    @w_bellpit = LabelEntry.new(f, "²»Äø (Hz)", 6, [25, 20000])
-    @w_bellpit.pack('side'=>'left', 'padx'=>5)
-    @w_belldur = LabelEntry.new(f, "»ý³»þ´Ö (ms)", 6, [1, 10000])
-    @w_belldur.pack('side'=>'right', 'padx'=>5)
-
-    @w_bellvol.pack('side'=>'top', 'expand'=>'yes')
-    f.pack('side'=>'top', 'expand'=>'yes')
-
-    #
-    # Keyboard settings
-    # 
-    kbdonoff = nil
-    kbdcli = nil
-    kbd = TkLabelframe.new(@root, 'text'=>'¥­¡¼¥Ü¡¼¥É¥ê¥Ô¡¼¥ÈÀßÄê', 
-                          'padx'=>'1.5m', 'pady'=>'1.5m')
-    f = TkFrame.new(kbd)
-    @w_kbdonoff = TkCheckButton.new(f, 'text'=>'¥¯¥ê¥Ã¥¯²»¤¢¤ê', 
-                                   'relief'=>'flat', 
-                                   'onvalue'=>'on', 'offvalue'=>'off',
-                                   'variable'=>@w_kbdrep ) {
-      def self.set(value)
-       if value == 'on'
-         self.select
-       else
-         self.deselect
-       end
-      end
-      pack('side'=>'left', 'expand'=>'yes', 'fill'=>'x', 'padx'=>[0, '1m'])
-    }
-    @w_kbdcli = TkScale.new(f, 'from'=>0, 'to'=>100, 'length'=>200, 
-                        'tickinterval'=>20, 'orient'=>'horizontal', 
-                        'label'=>'¥¯¥ê¥Ã¥¯²»ÎÌ (%)')
-    @w_kbdcli.pack('side'=>'left', 'expand'=>'yes', 
-                  'fill'=>'x', 'padx'=>['1m', 0])
-    f.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2, 'fill'=>'x')
-
-    #
-    # Mouse settings
-    #
-    mouse = TkLabelframe.new(@root, 'text'=>'¥Þ¥¦¥¹ÀßÄê', 
-                            'padx'=>'1.5m', 'pady'=>'1.5m')
-    f = TkFrame.new(mouse)
-    @w_mouseacc = LabelEntry.new(f, '²Ã®ÎÌ', 5)
-    @w_mouseacc.pack('side'=>'left', 'padx'=>[0, '1m'])
-    @w_mousethr = LabelEntry.new(f, 'ïçÃÍ (pixels)', 3, [1, 2000])
-    @w_mousethr.pack('side'=>'right', 'padx'=>['1m', 0])
-    f.pack('side'=>'top', 'expand'=>'yes')
-
-    #
-    # Screen Saver settings
-    #
-    screen = TkLabelframe.new(@root, 'text'=>'¥¹¥¯¥ê¡¼¥ó¥»¡¼¥ÐÀßÄê', 
-                            'padx'=>'1.5m', 'pady'=>'1.5m')
-    @w_screenblank = TkRadioButton.new(screen, 'text'=>'¥Ö¥é¥ó¥¯É½¼¨', 
-                                      'relief'=>'flat', 'anchor'=>'w', 
-                                      'variable'=>@w_screenbla, 
-                                      'value'=>'blank') {
-      def self.set(value)
-       if value == 'blank'
-         self.select
-       else
-         self.deselect
-       end
-      end
-    }
-
-    @w_screenpat = TkRadioButton.new(screen, 'text'=>'¥Ñ¥¿¡¼¥óɽ¼¨', 
-                                    'relief'=>'flat', 'anchor'=>'w', 
-                                    'variable'=>@w_screenbla, 
-                                    'value'=>'noblank') {
-      def self.set(value)
-       if value != 'blank'
-         self.select
-       else
-         self.deselect
-       end
-      end
-    }
-
-    @w_screentim = LabelEntry.new(screen, '¥¿¥¤¥à¥¢¥¦¥È (s)', 5, [1, 100000])
-    @w_screencyc = LabelEntry.new(screen, '¼þ´ü (s)', 5, [1, 100000])
-
-    Tk.grid(@w_screenblank, @w_screentim, 'sticky'=>'e')
-    Tk.grid(@w_screenpat, @w_screencyc, 'sticky'=>'e')
-    TkGrid.configure(@w_screenblank, @w_screenpat, 'sticky'=>'ew')
-
-    #
-    # Main window
-    #
-    param = {
-      'side'=>'top', 'fill'=>'both', 'expand'=>'yes', 
-      'padx'=>'1m', 'pady'=>'1m'
-    }
-    btn_frame.pack('side'=>'top', 'fill'=>'both')
-    bell.pack(param)
-    kbd.pack(param)
-    mouse.pack(param)
-    screen.pack(param)
-
-    #
-    # Let the user resize our window
-    #
-    @root.minsize(10,10)
-  end
-
-  def initialize(title)
-    @root = TkRoot.new('title'=>title)
-
-    @kbdrep = 'on'
-    @w_kbdrep = TkVariable.new(@kbdrep)
-    def @w_kbdrep.get
-      self.value
-    end
-    def @w_kbdrep.set(val)
-      self.value=val
-    end
-
-    @kbdcli = 0
-
-    @bellvol = 100
-    @bellpit = 440
-    @belldur = 100
-
-    @mouseacc = "3/1"
-    @mousethr = 4
-
-    @screenbla = "blank"
-    @w_screenbla = TkVariable.new(@screenbla)
-    def @w_screenbla.get
-      self.value
-    end
-    def @w_screenbla.set(val)
-      self.value=val
-    end
-
-    @screentim = 600
-    @screencyc = 600
-
-    #
-    # Listen what "xset" tells us...
-    #
-    readsettings
-
-    #
-    # Create all windows
-    #
-    createwindows
-
-    #
-    # Write xset parameters
-    #
-    dispsettings
-  end
-end
-
-Xsettings.new(File.basename($0,'.rb'))
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/knightstour.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/knightstour.rb
deleted file mode 100644 (file)
index d4595ea..0000000
+++ /dev/null
@@ -1,273 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# Based on the widget demo of Tcl/Tk8.5.2
-# The following is the original copyright text.
-#----------------------------------------------------------------------------
-# Copyright (C) 2008 Pat Thoyts <patthoyts@users.sourceforge.net>
-#
-#      Calculate a Knight's tour of a chessboard.
-#
-#      This uses Warnsdorff's rule to calculate the next square each
-#      time. This specifies that the next square should be the one that
-#      has the least number of available moves.
-#
-#      Using this rule it is possible to get to a position where
-#      there are no squares available to move into. In this implementation
-#      this occurs when the starting square is d6.
-#
-#      To solve this fault an enhancement to the rule is that if we
-#      have a choice of squares with an equal score, we should choose
-#      the one nearest the edge of the board.
-#
-#      If the call to the Edgemost function is commented out you can see
-#      this occur.
-#
-#      You can drag the knight to a specific square to start if you wish.
-#      If you let it repeat then it will choose random start positions
-#      for each new tour.
-#----------------------------------------------------------------------------
-require 'tk'
-
-class Knights_Tour
-  # Return a list of accessible squares from a given square
-  def valid_moves(square)
-    moves = []
-    [
-      [-1,-2], [-2,-1], [-2,1], [-1,2], [1,2], [2,1], [2,-1], [1,-2]
-    ].each{|col_delta, row_delta|
-      col = (square % 8) + col_delta
-      row = (square.div(8)) + row_delta
-      moves << (row * 8 + col) if row > -1 && row < 8 && col > -1 && col < 8
-    }
-    moves
-  end
-
-  # Return the number of available moves for this square
-  def check_square(square)
-    valid_moves(square).find_all{|pos| ! @visited.include?(pos)}.length
-  end
-
-  # Select the next square to move to. Returns -1 if there are no available
-  # squares remaining that we can move to.
-  def next_square(square)
-    minimum = 9
-    nxt = -1
-    valid_moves(square).each{|pos|
-      unless @visited.include?(pos)
-        cnt = check_square(pos)
-        if cnt < minimum
-          minimum = cnt
-          nxt = pos
-        elsif cnt == minimum
-          nxt = edgemost(nxt, pos)
-        end
-      end
-    }
-    nxt
-  end
-
-  # Select the square nearest the edge of the board
-  def edgemost(nxt, pos)
-    col_A = 3 - ((3.5 - nxt % 8).abs.to_i)
-    col_B = 3 - ((3.5 - pos % 8).abs.to_i)
-    row_A = 3 - ((3.5 - nxt.div(8)).abs.to_i)
-    row_B = 3 - ((3.5 - pos.div(8)).abs.to_i)
-    (col_A * row_A < col_B * row_B)? nxt : pos
-  end
-
-  # Display a square number as a standard chess square notation.
-  def _N(square)
-    '%c%d' % [(97 + square % 8), (square.div(8) + 1)]
-  end
-
-  # Perform a Knight's move and schedule the next move.
-  def move_piece(last, square)
-    @log.insert(:end, "#{@visited.length}. #{_N last} -> #{_N square}\n", '')
-    @log.see(:end)
-    @board.itemconfigure(1+last, :state=>:normal, :outline=>'black')
-    @board.itemconfigure(1+square, :state=>:normal, :outline=>'red')
-    @knight.coords(@board.coords(1+square)[0..1])
-    @visited << square
-    if (nxt = next_square(square)) != -1
-      @after_id = Tk.after(@delay.numeric){move_piece(square, nxt) rescue nil}
-    else
-      @start_btn.state :normal
-      if @visited.length == 64
-        if @initial == square
-          @log.insert :end, '¼þÍ·(closed tour)À®¸ù¡ª'
-        else
-          @log.insert :end, "À®¸ù\n", {}
-          Tk.after(@delay.numeric * 2){tour(rand(64))} if @continuous.bool
-        end
-      else
-        @log.insert :end, "¼ºÇÔ¡ª\n", {}
-      end
-    end
-  end
-
-  # Begin a new tour of the board given a random start position
-  def tour(square = nil)
-    @visited.clear
-    @log.clear
-    @start_btn.state :disabled
-    1.upto(64){|n|
-      @board.itemconfigure(n, :state=>:disabled, :outline=>'black')
-    }
-    unless square
-      square = @board.find_closest(*(@knight.coords << 0 << 65))[0].to_i - 1
-    end
-    @initial = square
-    Tk.after_idle{ move_piece(@initial, @initial) rescue nil }
-  end
-
-  def _stop
-    Tk.after_cancel(@after_id) rescue nil
-  end
-
-  def _exit
-    _stop
-    $knightstour.destroy
-  end
-
-  def set_delay(new)
-    @delay.numeric = new.to_i
-  end
-
-  def drag_start(w, x, y)
-    w.dtag('selected')
-    w.addtag('selected', :withtag, 'current')
-    @dragging = [x, y]
-  end
-
-  def drag_motion(w, x, y)
-    return unless @dragging
-    w.move('selected', x - @dragging[0], y - @dragging[1])
-    @dragging = [x, y]
-  end
-
-  def drag_end(w, x, y)
-    square = w.find_closest(x, y, 0, 65)
-    w.coords('selected', w.coords(square)[0..1])
-    w.dtag('selected')
-    @dragging = nil
-  end
-
-  def make_SeeDismiss
-    ## See Code / Dismiss
-    frame = Ttk::Frame.new($knightstour)
-    sep = Ttk::Separator.new(frame)
-    Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-    TkGrid('x', 
-           Ttk::Button.new(frame, :text=>'¥³¡¼¥É»²¾È', 
-                           :image=>$image['view'], :compound=>:left, 
-                           :command=>proc{showCode 'knightstour'}), 
-           Ttk::Button.new(frame, :text=>'ÊĤ¸¤ë', 
-                           :image=>$image['delete'], :compound=>:left, 
-                           :command=>proc{
-                             $knightstour.destroy
-                             $knightstour = nil
-                           }), 
-           :padx=>4, :pady=>4)
-    frame.grid_columnconfigure(0, :weight=>1)
-    frame
-  end
-
-  def create_gui(parent = nil)
-    $knightstour.destroy rescue nil
-    $knightstour = Tk::Toplevel.new(parent, :title=>"Knight's tour")
-    $knightstour.withdraw
-    base_f = Ttk::Frame.new($knightstour)
-    @board = Tk::Canvas.new(base_f, :width=>240, :height=>240)
-    @log = Tk::Text.new(base_f, :width=>12, :height=>1, 
-                        :font=>'Arial 8', :background=>'white')
-    scr = @log.yscrollbar(Ttk::Scrollbar.new(base_f))
-
-    @visited = []
-    @delay = TkVariable.new(600)
-    @continuous = TkVariable.new(false)
-
-    tool_f = Ttk::Frame.new($knightstour)
-    label = Ttk::Label.new(tool_f, :text=>'¼Â¹Ô®ÅÙ')
-    scale = Ttk::Scale.new(tool_f, :from=>8, :to=>2000, :variable=>@delay, 
-                           :command=>proc{|n| set_delay(n)})
-    check = Ttk::Checkbutton.new(tool_f, :text=>'È¿Éü', 
-                                 :variable=>@continuous)
-    @start_btn = Ttk::Button.new(tool_f, :text=>'³«»Ï', 
-                                 :command=>proc{tour()})
-    @exit_btn = Ttk::Button.new(tool_f, :text=>'½ªÎ»', 
-                                :command=>proc{_exit()})
-
-    7.downto(0){|row|
-      0.upto(7){|col|
-        if ((col & 1) ^ (row & 1)).zero?
-          fill  = 'bisque'
-          dfill = 'bisque3'
-        else
-          fill  = 'tan3'
-          dfill = 'tan4'
-        end
-        coords = [col * 30 + 4, row * 30 + 4, col * 30 + 30, row * 30 + 30]
-        @board.create(TkcRectangle, coords, 
-                      :fill=>fill, :disabledfill=>dfill,
-                      :width=>2, :state=>:disabled)
-      }
-    }
-
-    @knight_font = TkFont.new(:size=>-24)
-    @knight = TkcText.new(@board, 0, 0, :font=>@knight_font, 
-                          :text=>Tk::UTF8_String.new('\u265e'), 
-                          :anchor=>'nw', # :tags=>'knight', 
-                          :fill=>'black', :activefill=>'#600000')
-    @knight.coords(@board.coords(rand(64)+1)[0..1])
-    @knight.bind('ButtonPress-1', '%W %x %y'){|w,x,y| drag_start(w,x,y)}
-    @knight.bind('Motion', '%W %x %y'){|w,x,y| drag_motion(w,x,y)}
-    @knight.bind('ButtonRelease-1', '%W %x %y'){|w,x,y| drag_end(w,x,y)}
-
-    Tk.grid(@board, @log, scr, :sticky=>'news')
-    base_f.grid_rowconfigure(0, :weight=>1)
-    base_f.grid_columnconfigure(0, :weight=>1)
-
-    Tk.grid(base_f, '-', '-', '-', '-', '-', :sticky=>'news')
-    widgets = [label, scale, check, @start_btn]
-    sg = nil
-    unless $RubyTk_WidgetDemo
-      widgets << @exit_btn
-      if Tk.windowingsystem != 'aqua'
-        #widgets.unshift(Ttk::SizeGrip.new(tool_f))
-        Ttk::SizeGrip.new(tool_f).pack(:side=>:right, :anchor=>'se')
-      end
-    end
-    Tk.pack(widgets, :side=>:right)
-    if Tk.windowingsystem == 'aqua'
-      TkPack.configure(widgets, :padx=>[4, 4], :pady=>[12, 12])
-      TkPack.configure(widgets[0], :padx=>[4, 24])
-      TkPack.configure(widgets[-1], :padx=>[16, 4])
-    end
-
-    Tk.grid(tool_f, '-', '-', '-', '-', '-', :sticky=>'ew')
-
-    if $RubyTk_WidgetDemo
-      Tk.grid(make_SeeDismiss(), '-', '-', '-', '-', '-', :sticky=>'ew')
-    end
-
-    $knightstour.grid_rowconfigure(0, :weight=>1)
-    $knightstour.grid_columnconfigure(0, :weight=>1)
-
-    $knightstour.bind('Control-F2'){TkConsole.show}
-    $knightstour.bind('Return'){@start_btn.invoke}
-    $knightstour.bind('Escape'){@exit_btn.invoke}
-    $knightstour.bind('Destroy'){ _stop }
-    $knightstour.protocol('WM_DELETE_WINDOW'){ _exit }
-
-    $knightstour.deiconify
-    $knightstour.tkwait_destroy
-  end
-
-  def initialize(parent = nil)
-    create_gui(parent)
-  end
-end
-
-Tk.root.withdraw unless $RubyTk_WidgetDemo
-Thread.new{Tk.mainloop} if __FILE__ == $0
-Knights_Tour.new
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/label.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/label.rb
deleted file mode 100644 (file)
index 2e6b3e7..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# label widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($label_demo) && $label_demo
-  $label_demo.destroy 
-  $label_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$label_demo = TkToplevel.new {|w|
-  title("Label Demonstration")
-  iconname("label")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($label_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "²¼¤Ë¤Ï5¤Ä¤Î¥é¥Ù¥ë¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£º¸Â¦¤Ë¤Ï¥Æ¥­¥¹¥È¥é¥Ù¥ë¤¬3¤Ä¤¢¤ê¡¢±¦Â¦¤Ë¤Ï¥Ó¥Ã¥È¥Þ¥Ã¥×¥é¥Ù¥ë¤È¥Æ¥­¥¹¥È¥é¥Ù¥ë¤¬¤¢¤ê¤Þ¤¹¡£¥é¥Ù¥ë¤È¤¤¤¦¤Î¤Ï¤¢¤Þ¤êÌÌÇò¤¤¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤Ê¤¼¤Ê¤éį¤á¤ë°Ê³°²¿¤â¤Ç¤­¤Ê¤¤¤«¤é¤Ç¤¹¡£"
-}
-msg.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $label_demo
-      $label_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'label'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# label demo Íѥե졼¥àÀ¸À®
-f_left = TkFrame.new(base_frame)
-f_right = TkFrame.new(base_frame)
-[f_left, f_right].each{|w| w.pack('side'=>'left', 'expand'=>'yes', 
-                                  'padx'=>10, 'pady'=>10, 'fill'=>'both')}
-
-# label À¸À®
-[ TkLabel.new(f_left, 'text'=>'ºÇ½é¤Î¥é¥Ù¥ë'),
-  TkLabel.new(f_left, 'text'=>'2 ÈÖÌÜ¡£¤Á¤ç¤Ã¤ÈÉ⤭¾å¤¬¤é¤»¤Æ¤ß¤Þ¤·¤¿', 
-              'relief'=>'raised'),
-  TkLabel.new(f_left, 'text'=>'3 ÈÖÌÜ¡£ÄÀ¤ó¤Ç¤¤¤Þ¤¹ ', 'relief'=>'sunken')
-].each{|w| w.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2, 'anchor'=>'w')}
-
-# TkLabel.new(f_right) {
-Tk::Label.new(f_right) {
-  bitmap('@' + [$demo_dir,'..','images','face.xbm'].join(File::Separator))
-  borderwidth 2
-  relief 'sunken'
-}.pack('side'=>'top')
-
-TkLabel.new(f_right) { text 'Tcl/Tk ½êÍ­¼Ô' }.pack('side'=>'top')
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/labelframe.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/labelframe.rb
deleted file mode 100644 (file)
index 11b0d27..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# labelframe.rb
-#
-# This demonstration script creates a toplevel window containing
-# several labelframe widgets.
-#
-# based on "Id: labelframe.tcl,v 1.2 2001/10/30 11:21:50 dkf Exp"
-
-
-if defined?($labelframe_demo) && $labelframe_demo
-  $labelframe_demo.destroy 
-  $labelframe_demo = nil
-end
-
-$labelframe_demo = TkToplevel.new {|w|
-  title("Labelframe Demonstration")
-  iconname("labelframe")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($labelframe_demo).pack(:fill=>:both, :expand=>true)
-
-# Some information
-TkLabel.new(base_frame, 
-            :font=>$font, :wraplength=>'4i', :justify=>:left, 
-            :text=><<EOL).pack(:side=>:top)
-TkLabelFrame ¥¦¥£¥¸¥§¥Ã¥È¤Ï´ØÏ¢¤¹¤ë widget 
-·²¤ò¤Þ¤È¤á¤Æ¼è¤ê°·¤¦¤¿¤á¤ËÍѤ¤¤é¤ì¤Þ¤¹¡£¥é
-¥Ù¥ë¤ÏÄ̾ï¤Îʸ»úÎó¤Ç¤â²¿¤é¤«¤Î¥¦¥£¥¸¥§¥Ã¥È
-¤Ç¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£¤â¤·¤¢¤Ê¤¿¤¬»È¤Ã¤Æ¤¤¤ë 
-Ruby ¤Ë¥ê¥ó¥¯¤µ¤ì¤Æ¤¤¤ë Tk ¥é¥¤¥Ö¥é¥ê¤¬ 
-labelframe ¥¦¥£¥¸¥§¥Ã¥È¤ò¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤
-¾ì¹ç¡¢¤³¤Î¥Ç¥â¤Ï¤¦¤Þ¤¯Æ°¤«¤Ê¤¤¤Ï¤º¤Ç¤¹¡£
-¤½¤Î¾ì¹ç¤Ë¤Ï labelframe ¥¦¥£¥¸¥§¥Ã¥È¤¬¼ÂÁõ
-¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ê¤è¤ê¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤Î Tk 
-¤òÁȤ߹ç¤ï¤»¤Æ»î¤¹¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
-EOL
-
-# The bottom buttons
-TkFrame.new(base_frame){|f|
-  pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
-
-  TkButton.new(f, :text=>'ÊĤ¸¤ë', :width=>15, :command=>proc{
-                 $labelframe_demo.destroy
-                 $labelframe_demo = nil
-               }).pack(:side=>:left, :expand=>true)
-
-  TkButton.new(f, :text=>'¥³¡¼¥É»²¾È', :width=>15, :command=>proc{
-                 showCode 'labelframe'
-               }).pack(:side=>:left, :expand=>true)
-}
-
-# Demo area
-w = TkFrame.new(base_frame).pack(:side=>:bottom, :fill=>:both, 
-                                       :expand=>true)
-
-# A group of radiobuttons in a labelframe
-TkLabelFrame.new(w, :text=>'ÁªÂòÃÍ', 
-                 :padx=>2, :pady=>2) {|f|
-  grid(:row=>0, :column=>0, :pady=>'2m', :padx=>'2m')
-
-  v = TkVariable.new
-  (1..4).each{|i|
-    TkRadiobutton.new(f, :text=>"This is value #{i}", 
-                      :variable=>v, :value=>i) {
-      pack(:side=>:top, :fill=>:x, :pady=>2)
-    }
-  }
-}
-
-
-# Using a label window to control a group of options.
-$lfdummy = TkVariable.new(0)
-
-def lfEnableButtons(w)
-  TkWinfo.children(w).each{|child|
-    next if child.path =~ /\.cb$/
-    if $lfdummy == 1
-      child.state(:normal)
-    else
-      child.state(:disabled)
-    end
-  }
-end
-
-TkLabelFrame.new(w, :pady=>2, :padx=>2){|f|
-  TkCheckButton.new(f, :widgetname=>'cb', :variable=>$lfdummy, 
-                    :text=>"¥ª¥×¥·¥ç¥ó¤ò»ÈÍÑ", :padx=>0) {|cb|
-    command proc{lfEnableButtons(f)}
-    f.labelwidget(cb)
-  }
-  grid(:row=>0, :column=>1, :pady=>'2m', :padx=>'2m')
-
-  %w(¥ª¥×¥·¥ç¥ó1 ¥ª¥×¥·¥ç¥ó2 ¥ª¥×¥·¥ç¥ó3).each{|str|
-    TkCheckbutton.new(f, :text=>str).pack(:side=>:top, :fill=>:x, :pady=>2)
-  }
-
-  lfEnableButtons(f)
-}
-
-TkGrid.columnconfigure(w, [0,1], :weight=>1)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/mclist.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/mclist.rb
deleted file mode 100644 (file)
index a7834d2..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# mclist.rb --
-#
-# This demonstration script creates a toplevel window containing a Ttk
-# tree widget configured as a multi-column listbox.
-#
-# based on "Id: mclist.tcl,v 1.3 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($mclist_demo) && $mclist_demo
-  $mclist_demo.destroy 
-  $mclist_demo = nil
-end
-
-$mclist_demo = TkToplevel.new {|w|
-  title("Multi-Column List")
-  iconname("mclist")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($mclist_demo).pack(:fill=>:both, :expand=>true)
-
-## Explanatory text
-Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', 
-               :justify=>:left, :anchor=>'n', :padding=>[10, 2, 10, 6], 
-               :text=><<EOL).pack(:fill=>:x)
-Ttk¤È¤Ï¡¤¥Æ¡¼¥Þ»ØÄê²Äǽ¤Ê¿·¤·¤¤¥¦¥£¥¸¥§¥Ã¥È½¸¹ç¤Ç¤¹¡¥\
-Ttk::Treeview¥¦¥£¥¸¥§¥Ã¥È¤Ï\
-Ttk¥¦¥£¥¸¥§¥Ã¥È¥»¥Ã¥È¤Ë´Þ¤Þ¤ì¤ë¥¦¥£¥¸¥§¥Ã¥È¤Î°ì¤Ä¤Ç¡¤\
-¤½¤ì¤¬ÊÝ»ý¤¹¤ëÌÚ¹½Â¤¤Î¥Ç¡¼¥¿¤½¤Î¤â¤Î¤Þ¤Ç¤Ïɽ¼¨¤¹¤ë¤³¤È¤Ê¤¯¡¤\
-¼¨¤·¤¿¤¤¾ðÊó¤ò¥Þ¥ë¥Á¥«¥é¥à¤Çɽ¼¨¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥
-¤³¤Î¥µ¥ó¥×¥ë¤Ï¡¤Ê£¿ô¤Î¥«¥é¥à¤ò»ý¤Ã¤¿¥ê¥¹¥È¥Ü¥Ã¥¯¥¹¤òºîÀ®¤¹¤ë´Êñ¤ÊÎã¤Ç¤¹¡¥
-³Æ¥«¥é¥à¤Î¥¿¥¤¥È¥ë(heading)¤ò¥¯¥ê¥Ã¥¯¤¹¤ì¤Ð¡¤\
-¤½¤Î¥«¥é¥à¤Î¾ðÊó¤Ë´ð¤Å¤¤¤Æ¥ê¥¹¥È¤ÎʤÙÂؤ¨¤¬¤Ê¤µ¤ì¤ë¤Ï¤º¤Ç¤¹¡¥\
-¤Þ¤¿¡¤¥«¥é¥à¤Î¥¿¥¤¥È¥ë´Ö¤Î¶èÀÚ¤êÉôʬ¤ò¥É¥é¥Ã¥°¤¹¤ë¤³¤È¤Ç¡¤\
-¥«¥é¥à¤ÎÉý¤òÊѹ¹¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡¥
-EOL
-
-## See Code / Dismiss
-Ttk::Frame.new(base_frame) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'¥³¡¼¥É»²¾È', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'mclist'}), 
-         Ttk::Button.new(frame, :text=>'ÊĤ¸¤ë', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $mclist_demo.destroy
-                           $mclist_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x)
-}
-
-container = Ttk::Frame.new(base_frame)
-tree = Ttk::Treeview.new(base_frame, :columns=>%w(country capital currency), 
-                          :show=>:headings)
-if Tk.windowingsystem != 'aquq'
-  vsb = tree.yscrollbar(Ttk::Scrollbar.new(base_frame))
-  hsb = tree.xscrollbar(Ttk::Scrollbar.new(base_frame))
-else
-  vsb = tree.yscrollbar(Tk::Scrollbar.new(base_frame))
-  hsb = tree.xscrollbar(Tk::Scrollbar.new(base_frame))
-end
-
-container.pack(:fill=>:both, :expand=>true)
-Tk.grid(tree, vsb, :in=>container, :sticky=>'nsew')
-Tk.grid(hsb,       :in=>container, :sticky=>'nsew')
-container.grid_columnconfigure(0, :weight=>1)
-container.grid_rowconfigure(0, :weight=>1)
-
-## The data we're going to insert
-data = [
-  ['¥¢¥ë¥¼¥ó¥Á¥ó',     '¥Ö¥¨¥Î¥¹¥¢¥¤¥ì¥¹',     'ARS'], 
-  ['¥ª¡¼¥¹¥È¥é¥ê¥¢',   '¥­¥ã¥ó¥Ù¥é',           'AUD'], 
-  ['¥Ö¥é¥¸¥ë',                 '¥Ö¥é¥¸¥ê¥¢',           'BRL'], 
-  ['¥«¥Ê¥À',           '¥ª¥¿¥ï',               'CAD'], 
-  ['Ãæ¹ñ',             'Ë̵þ',                 'CNY'], 
-  ['¥Õ¥é¥ó¥¹',         '¥Ñ¥ê',                 'EUR'], 
-  ['¥É¥¤¥Ä',           '¥Ù¥ë¥ê¥ó',             'EUR'], 
-  ['¥¤¥ó¥É',           '¥Ë¥å¡¼¥Ç¥ê¡¼',         'INR'], 
-  ['¥¤¥¿¥ê¥¢',                 '¥í¡¼¥Þ',               'EUR'], 
-  ['ÆüËÜ',             'Åìµþ',                 'JPY'], 
-  ['¥á¥­¥·¥³',                 '¥á¥­¥·¥³¥·¥Æ¥£',       'MXN'], 
-  ['¥í¥·¥¢',           '¥â¥¹¥¯¥ï',             'RUB'], 
-  ['Æ¥Õ¥ê¥«',       '¥×¥ì¥È¥ê¥¢',           'ZAR'], 
-  ['±Ñ¹ñ',             '¥í¥ó¥É¥ó',             'GBP'], 
-  ['¥¢¥á¥ê¥«',                 '¥ï¥·¥ó¥È¥ó D.C.',      'USD'],
-]
-
-## Code to insert the data nicely
-font = Ttk::Style.lookup(tree[:style], :font)
-cols = %w(country capital currency)
-cols.zip(%w(¹ñ̾ ¼óÅÔ Ä̲ß)).each{|col, name|
-  tree.heading_configure(col, :text=>name, 
-                         :command=>proc{sort_by(tree, col, false)})
-  tree.column_configure(col, :width=>TkFont.measure(font, name))
-}
-
-data.each{|country, capital, currency|
-  #tree.insert('', :end, :values=>[country, capital, currency])
-  tree.insert(nil, :end, :values=>[country, capital, currency])
-  cols.zip([country, capital, currency]).each{|col, val|
-    len = TkFont.measure(font, "#{val}  ")
-    if tree.column_cget(col, :width) < len
-      tree.column_configure(col, :width=>len)
-    end
-  }
-}
-
-## Code to do the sorting of the tree contents when clicked on
-def sort_by(tree, col, direction)
-  tree.children(nil).map!{|row| [tree.get(row, col), row.id]} . 
-    sort(&((direction)? proc{|x, y| y <=> x}: proc{|x, y| x <=> y})) . 
-    each_with_index{|info, idx| tree.move(info[1], nil, idx)}
-
-  tree.heading_configure(col, :command=>proc{sort_by(tree, col, ! direction)})
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/menu.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/menu.rb
deleted file mode 100644 (file)
index c3d9517..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# menus widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($menu_demo) && $menu_demo
-  $menu_demo.destroy 
-  $menu_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$menu_demo = TkToplevel.new {|w|
-  title("File Selection Dialogs")
-  iconname("menu")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($menu_demo).pack(:fill=>:both, :expand=>true)
-
-# menu frame À¸À®
-$menu_frame = TkFrame.new(base_frame, 'relief'=>'raised', 'bd'=>2)
-$menu_frame.pack('side'=>'top', 'fill'=>'x')
-
-begin
-  windowingsystem = Tk.windowingsystem()
-rescue
-  windowingsystem = ""
-end
-
-# label À¸À®
-TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left') {
-  if $tk_platform['platform'] == 'macintosh' ||
-      windowingsystem == "classic" || windowingsystem == "aqua"
-    text("¤³¤Î¥¦¥£¥ó¥É¥¦¤ÏÍÍ¡¹¤Ê¥á¥Ë¥å¡¼¤È¥«¥¹¥±¡¼¥É¥á¥Ë¥å¡¼¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Command-X ¤òÆþÎϤ¹¤ë¤È¡¢X¤¬¥³¥Þ¥ó¥É¥­¡¼µ­¹æ¤Ë³¤¤¤Æɽ¼¨¤µ¤ì¤Æ¤¤¤ëʸ»ú¤Ê¤é¤Ð¡¢¥¢¥¯¥»¥é¥ì¡¼¥¿¤ò»È¤Ã¤¿¹àÌܵ¯Æ°¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥á¥Ë¥å¡¼Í×ÁÇÃæ¡¢ºÇ¸å¤Î¤â¤Î¤Ï¡¢¤½¤Î¥á¥Ë¥å¡¼¤ÎºÇ½é¤Î¹àÌܤòÁªÂò¤¹¤ë¤³¤È¤ÇÆÈΩ¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£")
-  else
-    text("¤³¤Î¥¦¥£¥ó¥É¥¦¤ÏÍÍ¡¹¤Ê¥á¥Ë¥å¡¼¤È¥«¥¹¥±¡¼¥É¥á¥Ë¥å¡¼¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Alt-X ¤òÆþÎϤ¹¤ë¤È¡¢X¤¬¥á¥Ë¥å¡¼¤Ë¥¢¥ó¥À¡¼¥é¥¤¥óÉÕ¤­¤Çɽ¼¨¤µ¤ì¤Æ¤¤¤ëʸ»ú¤Ê¤é¤Ð¡¢¥­¡¼¥Ü¡¼¥É¤«¤é¤Î»ØÄ꤬¤Ç¤­¤Þ¤¹¡£Ìð°õ¥­¡¼¤Ç¥á¥Ë¥å¡¼¤Î¥È¥é¥Ð¡¼¥¹¤â²Äǽ¤Ç¤¹¡£¥á¥Ë¥å¡¼¤¬»ØÄꤵ¤ì¤¿ºÝ¤Ë¤Ï¡¢¥¹¥Ú¡¼¥¹¥­¡¼¤Ç¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤¢¤ë¤¤¤Ï¡¢¥¢¥ó¥À¡¼¥é¥¤¥óÉÕ¤­¤Îʸ»ú¤òÆþÎϤ¹¤ë¤³¤È¤Ç¤â¼Â¹Ô¤Ç¤­¤Þ¤¹¡£¥á¥Ë¥å¡¼¤Î¥¨¥ó¥È¥ê¤¬¥¢¥¯¥»¥é¥ì¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤½¤Î¥¢¥¯¥»¥é¥ì¡¼¥¿¤òÆþÎϤ¹¤ë¤³¤È¤Ç¥á¥Ë¥å¡¼¤ò»ØÄꤹ¤ë¤³¤È¤Ê¤·¤Ë¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥á¥Ë¥å¡¼Í×ÁÇÃæ¡¢ºÇ¸å¤Î¤â¤Î¤Ï¡¢¤½¤Î¥á¥Ë¥å¡¼¤ÎºÇ½é¤Î¹àÌܤòÁªÂò¤¹¤ë¤³¤È¤ÇÆÈΩ¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£")
-  end
-}.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $menu_demo
-      $menu_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'menu'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# menu À¸À®
-TkMenubutton.new($menu_frame, 'text'=>'File', 'underline'=>0) {|m|
-  pack('side'=>'left')
-  TkMenu.new(m, 'tearoff'=>false) {|file_menu|
-    m.configure('menu'=>file_menu)
-    add('command', 'label'=>'³«¤¯ ...', 'command'=>proc{fail '¤³¤ì¤Ï¡¢¥Ç¥â¤Ç¤¹¤Î¤Ç"³«¤¯ ..."¤ËÂФ¹¤ë¥¢¥¯¥·¥ç¥ó¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£'})
-    add('command', 'label'=>'¿·µ¬', 'command'=>proc{fail '¤³¤ì¤Ï¡¢¥Ç¥â¤Ç¤¹¤Î¤Ç"¿·µ¬"¤ËÂФ¹¤ë¥¢¥¯¥·¥ç¥ó¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£'})
-    add('command', 'label'=>'Êݸ', 'command'=>proc{fail '¤³¤ì¤Ï¡¢¥Ç¥â¤Ç¤¹¤Î¤Ç"Êݸ"¤ËÂФ¹¤ë¥¢¥¯¥·¥ç¥ó¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£'})
-    add('command', 'label'=>'Êݸ(»ØÄê) ...', 'command'=>proc{fail '¤³¤ì¤Ï¡¢¥Ç¥â¤Ç¤¹¤Î¤Ç"Êݸ(»ØÄê) ..."¤ËÂФ¹¤ë¥¢¥¯¥·¥ç¥ó¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£'})
-    add('separator')
-    add('command', 'label'=>'¥×¥ê¥ó¥ÈÀßÄê ...', 'command'=>proc{fail '¤³¤ì¤Ï¡¢¥Ç¥â¤Ç¤¹¤Î¤Ç"¥×¥ê¥ó¥ÈÀßÄê ..."¤ËÂФ¹¤ë¥¢¥¯¥·¥ç¥ó¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£'})
-    add('command', 'label'=>'¥×¥ê¥ó¥È ...', 'command'=>proc{fail '¤³¤ì¤Ï¡¢¥Ç¥â¤Ç¤¹¤Î¤Ç"¥×¥ê¥ó¥È ..."¤ËÂФ¹¤ë¥¢¥¯¥·¥ç¥ó¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£'})
-    add('separator')
-    add('command', 'label'=>'½ªÎ»', 'command'=>proc{$menu_demo.destroy})
-  }
-}
-
-if $tk_platform['platform'] == 'macintosh' ||
-    windowingsystem == "classic" || windowingsystem == "aqua"
-  modifier = 'Command'
-elsif $tk_platform['platform'] == 'windows'
-  modifier = 'Control'
-else
-  modifier = 'Meta'
-end
-
-TkMenubutton.new($menu_frame, 'text'=>'Basic', 'underline'=>0) {|m|
-  pack('side'=>'left')
-  TkMenu.new(m, 'tearoff'=>false) {|basic_menu|
-    m.configure('menu'=>basic_menu)
-    add('command', 'label'=>'²¿¤â¤·¤Ê¤¤Ä¹¤¤¥¨¥ó¥È¥ê')
-    ['A','B','C','D','E','F','G'].each{|c|
-      # add('command', 'label'=>"ʸ»ú \"#{c}\" ¤ò°õ»ú", 'underline'=>4, 
-      add('command', 'label'=>"Print letter \"#{c}\" (ʸ»ú \"#{c}\" ¤ò°õ»ú)", 
-          'underline'=>14, 'accelerator'=>"Meta+#{c}", 
-          'command'=>proc{print c,"\n"}, 'accelerator'=>"#{modifier}+#{c}")
-      $menu_demo.bind("#{modifier}-#{c.downcase}", proc{print c,"\n"})
-    }
-  }
-}
-
-TkMenubutton.new($menu_frame, 'text'=>'Cascades', 'underline'=>0) {|m|
-  pack('side'=>'left')
-  TkMenu.new(m, 'tearoff'=>false) {|cascade_menu|
-    m.configure('menu'=>cascade_menu)
-    add('command', 'label'=>'Print hello(¤³¤ó¤Ë¤Á¤Ï)', 
-        'command'=>proc{print "Hello(¤³¤ó¤Ë¤Á¤Ï)\n"}, 
-        'accelerator'=>"#{modifier}+H", 'underline'=>6)
-    $menu_demo.bind("#{modifier}-h", proc{print "Hello(¤³¤ó¤Ë¤Á¤Ï)\n"})
-    add('command', 'label'=>'Print goodbye(¤µ¤è¤¦¤Ê¤é)', 
-        'command'=>proc{print "Goodbye(¤µ¤è¤¦¤Ê¤é)\n"}, 
-        'accelerator'=>"#{modifier}+G", 'underline'=>6)
-    $menu_demo.bind("#{modifier}-g", proc{print "Goodbye(¤µ¤è¤¦¤Ê¤é)\n"})
-
-    # TkMenu.new(m, 'tearoff'=>false) {|cascade_check|
-    TkMenu.new(cascade_menu, 'tearoff'=>false) {|cascade_check|
-      cascade_menu.add('cascade', 'label'=>'Check buttons(¥Á¥§¥Ã¥¯¥Ü¥¿¥ó)', 
-                       'menu'=>cascade_check, 'underline'=>0)
-      oil = TkVariable.new(0)
-      add('check', 'label'=>'¥ª¥¤¥ëÅÀ¸¡', 'variable'=>oil)
-      trans = TkVariable.new(0)
-      add('check', 'label'=>'¥È¥é¥ó¥¹¥ß¥Ã¥·¥ç¥óÅÀ¸¡', 'variable'=>trans)
-      brakes = TkVariable.new(0)
-      add('check', 'label'=>'¥Ö¥ì¡¼¥­ÅÀ¸¡', 'variable'=>brakes)
-      lights = TkVariable.new(0)
-      add('check', 'label'=>'¥é¥¤¥ÈÅÀ¸¡', 'variable'=>lights)
-      add('separator')
-      add('command', 'label'=>'¸½ºß¤ÎÃͤòɽ¼¨', 
-          'command'=>proc{showVars($menu_demo, 
-                                   ['¥ª¥¤¥ëÅÀ¸¡', oil], 
-                                   ['¥È¥é¥ó¥¹¥ß¥Ã¥·¥ç¥óÅÀ¸¡', trans], 
-                                   ['¥Ö¥ì¡¼¥­ÅÀ¸¡', brakes], 
-                                   ['¥é¥¤¥ÈÅÀ¸¡', lights])} )
-      invoke 1
-      invoke 3
-    }
-
-    #TkMenu.new(m, 'tearoff'=>false) {|cascade_radio|
-    TkMenu.new(cascade_menu, 'tearoff'=>false) {|cascade_radio|
-      cascade_menu.add('cascade', 'label'=>'Radio buttons(¥é¥¸¥ª¥Ü¥¿¥ó)', 
-                       'menu'=>cascade_radio, 'underline'=>0)
-      pointSize = TkVariable.new
-      add('radio', 'label'=>'10 ¥Ý¥¤¥ó¥È', 'variable'=>pointSize, 'value'=>10)
-      add('radio', 'label'=>'14 ¥Ý¥¤¥ó¥È', 'variable'=>pointSize, 'value'=>14)
-      add('radio', 'label'=>'18 ¥Ý¥¤¥ó¥È', 'variable'=>pointSize, 'value'=>18)
-      add('radio', 'label'=>'24 ¥Ý¥¤¥ó¥È', 'variable'=>pointSize, 'value'=>24)
-      add('radio', 'label'=>'32 ¥Ý¥¤¥ó¥È', 'variable'=>pointSize, 'value'=>32)
-      add('separator')
-      style = TkVariable.new
-      add('radio', 'label'=>'¥í¡¼¥Þ¥ó', 'variable'=>style, 'value'=>'roman')
-      add('radio', 'label'=>'¥Ü¡¼¥ë¥É', 'variable'=>style, 'value'=>'bold')
-      add('radio', 'label'=>'¥¤¥¿¥ê¥Ã¥¯', 'variable'=>style, 'value'=>'italic')
-      add('separator')
-      add('command', 'label'=>'¸½ºß¤ÎÃͤòɽ¼¨', 
-          'command'=>proc{showVars($menu_demo, 
-                                   ['¥Ý¥¤¥ó¥È¥µ¥¤¥º', pointSize], 
-                                   ['¥¹¥¿¥¤¥ë', style])} )
-      invoke 1
-      invoke 7
-    }
-  }
-}
-
-TkMenubutton.new($menu_frame, 'text'=>'Icons', 'underline'=>0) {|m|
-  pack('side'=>'left')
-  TkMenu.new(m, 'tearoff'=>false) {|icon_menu|
-    m.configure('menu'=>icon_menu)
-    add('command', 
-        'bitmap'=>'@'+[$demo_dir,'..',
-                        'images','pattern.xbm'].join(File::Separator),
-        'command'=>proc{TkDialog.new('title'=>'Bitmap Menu Entry', 
-                                     'text'=>'º£¤¢¤Ê¤¿¤¬ÁªÂò¤·¤¿¥á¥Ë¥å¡¼¤Î¹àÌܤϥƥ­¥¹¥È¤Ç¤Ï¤Ê¤¯¥Ó¥Ã¥È¥Þ¥Ã¥×¤òɽ¼¨¤·¤Æ¤¤¤Þ¤·¤¿¡£¤½¤ì°Ê³°¤ÎÅÀ¤Ç¤Ï¾¤Î¥á¥Ë¥å¡¼¹àÌܤÈÊѤï¤ê¤Þ¤»¤ó¡£',
-                                     'bitmap'=>'', 'default'=>0, 
-                                     'buttons'=>'λ²ò')} )
-    ['info', 'questhead', 'error'].each{|icon|
-      add('command', 'bitmap'=>icon, 
-          'command'=>proc{print "You invoked the #{icon} bitmap\n"})
-    }
-  }
-}
-
-TkMenubutton.new($menu_frame, 'text'=>'More', 'underline'=>0) {|m|
-  pack('side'=>'left')
-  TkMenu.new(m, 'tearoff'=>false) {|more_menu|
-    m.configure('menu'=>more_menu)
-    [ '¥¨¥ó¥È¥ê','Ê̤Υ¨¥ó¥È¥ê','²¿¤â¤·¤Ê¤¤','¤Û¤È¤ó¤É²¿¤â¤·¤Ê¤¤',
-      '¿ÍÀ¸¤ò°ÕµÁ¤¢¤ë¤â¤Î¤Ë' ].each{|i|
-      add('command', 'label'=>i, 
-          'command'=>proc{print "You invoked \"#{i}\"\n"})
-    }
-  }
-}
-
-TkMenubutton.new($menu_frame, 'text'=>'Colors', 'underline'=>0) {|m|
-  pack('side'=>'left')
-  TkMenu.new(m) {|colors_menu|
-    m.configure('menu'=>colors_menu)
-    ['red', 'orange', 'yellow', 'green', 'blue'].each{|c|
-      add('command', 'label'=>c, 'background'=>c, 
-          'command'=>proc{print "You invoked \"#{c}\"\n"})
-    }
-  }
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/menu84.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/menu84.rb
deleted file mode 100644 (file)
index a631bac..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# menus widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($menu84_demo) && $menu84_demo
-  $menu84_demo.destroy 
-  $menu84_demo = nil
-end
-
-# demo toplevel widget
-$menu84_demo = TkToplevel.new {|w|
-  title("File Selection Dialogs")
-  iconname("menu84")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($menu84_demo).pack(:fill=>:both, :expand=>true)
-
-begin
-  windowingsystem = Tk.windowingsystem()
-rescue
-  windowingsystem = ""
-end
-
-# label
-TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left') {
-  if $tk_platform['platform'] == 'macintosh' ||
-      windowingsystem == "classic" || windowingsystem == "aqua"
-    text("¤³¤Î¥¦¥£¥ó¥É¥¦¤Ë¤Ï¥«¥¹¥±¡¼¥É¥á¥Ë¥å¡¼¤ò»ý¤Ä¥á¥Ë¥å¡¼¥Ð¡¼¤¬ÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤¹¡£Command+x ('x'¤Ï¥³¥Þ¥ó¥É¥­¡¼¥·¥ó¥Ü¥ë¤Ë³¤±¤Æɽ¼¨¤µ¤ì¤Æ¤¤¤ëʸ»ú¤Ç¤¹) ¤È¥¿¥¤¥×¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¤â¹àÌܤε¡Ç½¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ºÇ¸å¤Î¥á¥Ë¥å¡¼¤Ï¡¢¥Þ¥¦¥¹¤Ç¥¦¥£¥ó¥É¥¦¤Î³°¤Ë¥É¥é¥Ã¥°¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ÆÈΩ¤·¤¿¥Ñ¥ì¥Ã¥È¤È¤Ê¤ë¤è¤¦¤ËÀÚ¤êÊü¤¹¤³¤È¤¬²Äǽ¤Ç¤¹¡£")
-  else
-    text("¤³¤Î¥¦¥£¥ó¥É¥¦¤Ë¤Ï¥«¥¹¥±¡¼¥É¥á¥Ë¥å¡¼¤ò»ý¤Ä¥á¥Ë¥å¡¼¥Ð¡¼¤¬ÉÕ¤±¤é¤ì¤Æ¤¤¤Þ¤¹¡£Alt+x ('x'¤Ï¥á¥Ë¥å¡¼¾å¤Ç²¼Àþ¤¬°ú¤«¤ì¤¿Ê¸»ú¤Ç¤¹) ¤È¥¿¥¤¥×¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¤â¥á¥Ë¥å¡¼¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Ìð°õ¥­¡¼¤ò»È¤Ã¤Æ¡¢¥á¥Ë¥å¡¼´Ö¤ò°ÜÆ°¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£¥á¥Ë¥å¡¼¤¬É½¼¨¤µ¤ì¤Æ¤¤¤ë»þ¤Ë¤Ï¡¢¸½ºß°ÌÃ֤ιàÌܤò¥¹¥Ú¡¼¥¹¥­¡¼¤ÇÁªÂò¤·¤¿¤ê¡¢²¼Àþ¤¬°ú¤«¤ì¤¿Ê¸»ú¤òÆþÎϤ¹¤ë¤³¤È¤Ç¤½¤Î¹àÌܤòÁªÂò¤·¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤â¤·¹àÌܤ˥¢¥¯¥»¥é¥ì¡¼¥¿¤Î»ØÄ꤬¤Ê¤µ¤ì¤Æ¤¤¤¿¤Ê¤é¤Ð¡¢¤½¤Î»ØÄꤵ¤ì¤¿¥­¡¼ÆþÎϤò¹Ô¤¦¤³¤È¤Ç¡¢¥á¥Ë¥å¡¼¤òɽ¼¨¤µ¤»¤ë¤³¤È¤Ê¤¯Ä¾Àܤ½¤Î¹àÌܤε¡Ç½¤ò¸Æ¤Ó½Ð¤»¤Þ¤¹¡£ºÇ¸å¤Î¥á¥Ë¥å¡¼¤Ï¡¢¥á¥Ë¥å¡¼¤ÎºÇ½é¤Î¹àÌܤòÁªÂò¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ÆÈΩ¤·¤¿¥Ñ¥ì¥Ã¥È¤È¤Ê¤ë¤è¤¦¤ËÀÚ¤êÊü¤¹¤³¤È¤¬²Äǽ¤Ç¤¹¡£")
-  end
-}.pack('side'=>'top')
-
-
-menustatus = TkVariable.new("    ")
-TkFrame.new(base_frame) {|frame|
-  TkLabel.new(frame, 'textvariable'=>menustatus, 'relief'=>'sunken', 
-              'bd'=>1, 'font'=>['Helvetica', '10'], 
-              'anchor'=>'w').pack('side'=>'left', 'padx'=>2, 
-                                  'expand'=>true, 'fill'=>'both')
-  pack('side'=>'bottom', 'fill'=>'x', 'pady'=>2)
-}
-
-
-# frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $menu84_demo
-      $menu84_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'menu84'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-
-# create menu frame
-$menu84_frame = TkMenu.new($menu84_demo, 'tearoff'=>false)
-
-# menu
-TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
-  $menu84_frame.add('cascade', 'label'=>'File', 'menu'=>m, 'underline'=>0)
-  add('command', 'label'=>'Open...', 'command'=>proc{fail '¤³¤ì¤Ïñ¤Ê¤ë¥Ç¥â¤Ç¤¹¤«¤é¡¢"Open..." ¹àÌܤε¡Ç½¤ÏÆäËÄêµÁ¤µ¤ì¤Æ¤Ï¤¤¤Þ¤»¤ó¡£'})
-  add('command', 'label'=>'New', 'command'=>proc{fail '¤³¤ì¤Ïñ¤Ê¤ë¥Ç¥â¤Ç¤¹¤«¤é¡¢"New" ¹àÌܤε¡Ç½¤ÏÆäËÄêµÁ¤µ¤ì¤Æ¤Ï¤¤¤Þ¤»¤ó¡£'})
-  add('command', 'label'=>'Save', 'command'=>proc{fail '¤³¤ì¤Ïñ¤Ê¤ë¥Ç¥â¤Ç¤¹¤«¤é¡¢"Save" ¹àÌܤε¡Ç½¤ÏÆäËÄêµÁ¤µ¤ì¤Æ¤Ï¤¤¤Þ¤»¤ó¡£'})
-  add('command', 'label'=>'Save As...', 'command'=>proc{fail '¤³¤ì¤Ïñ¤Ê¤ë¥Ç¥â¤Ç¤¹¤«¤é¡¢"Save As..." ¹àÌܤε¡Ç½¤ÏÆäËÄêµÁ¤µ¤ì¤Æ¤Ï¤¤¤Þ¤»¤ó¡£'})
-  add('separator')
-  add('command', 'label'=>'Print Setup...', 'command'=>proc{fail '¤³¤ì¤Ïñ¤Ê¤ë¥Ç¥â¤Ç¤¹¤«¤é¡¢"Print Setup..." ¹àÌܤε¡Ç½¤ÏÆäËÄêµÁ¤µ¤ì¤Æ¤Ï¤¤¤Þ¤»¤ó¡£'})
-  add('command', 'label'=>'Print...', 'command'=>proc{fail '¤³¤ì¤Ïñ¤Ê¤ë¥Ç¥â¤Ç¤¹¤«¤é¡¢"Print..." ¹àÌܤε¡Ç½¤ÏÆäËÄêµÁ¤µ¤ì¤Æ¤Ï¤¤¤Þ¤»¤ó¡£'})
-  add('separator')
-  add('command', 'label'=>'Dismiss Menus Demo', 'command'=>proc{$menu84_demo.destroy})
-}
-
-if $tk_platform['platform'] == 'macintosh' ||
-    windowingsystem = "classic" || windowingsystem = "aqua"
-  modifier = 'Command'
-elsif $tk_platform['platform'] == 'windows'
-  modifier = 'Control'
-else
-  modifier = 'Meta'
-end
-
-TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
-  $menu84_frame.add('cascade', 'label'=>'Basic', 'menu'=>m, 'underline'=>0)
-  add('command', 'label'=>'Long entry that does nothing')
-  ['A','B','C','D','E','F','G'].each{|c|
-    add('command', 'label'=>"Print letter \"#{c}\"", 
-        'underline'=>14, 'accelerator'=>"Meta+#{c}", 
-        'command'=>proc{print c,"\n"}, 'accelerator'=>"#{modifier}+#{c}")
-    $menu84_demo.bind("#{modifier}-#{c.downcase}", proc{print c,"\n"})
-  }
-}
-
-TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
-  $menu84_frame.add('cascade', 'label'=>'Cascades', 'menu'=>m, 'underline'=>0)
-  add('command', 'label'=>'Print hello', 
-      'command'=>proc{print "Hello\n"}, 
-      'accelerator'=>"#{modifier}+H", 'underline'=>6)
-  $menu84_demo.bind("#{modifier}-h", proc{print "Hello\n"})
-  add('command', 'label'=>'Print goodbye', 
-      'command'=>proc{print "Goodbye\n"}, 
-      'accelerator'=>"#{modifier}+G", 'underline'=>6)
-  $menu84_demo.bind("#{modifier}-g", proc{print "Goodbye\n"})
-
-  TkMenu.new(m, 'tearoff'=>false) {|cascade_check|
-    m.add('cascade', 'label'=>'Check button', 
-          'menu'=>cascade_check, 'underline'=>0)
-    oil = TkVariable.new(0)
-    add('check', 'label'=>'¥ª¥¤¥ë¸¡ºº', 'variable'=>oil)
-    trans = TkVariable.new(0)
-    add('check', 'label'=>'¥È¥é¥ó¥¹¥ß¥Ã¥·¥ç¥ó¸¡ºº', 'variable'=>trans)
-    brakes = TkVariable.new(0)
-    add('check', 'label'=>'¥Ö¥ì¡¼¥­¸¡ºº', 'variable'=>brakes)
-    lights = TkVariable.new(0)
-    add('check', 'label'=>'¥é¥¤¥È¸¡ºº', 'variable'=>lights)
-    add('separator')
-    add('command', 'label'=>'Show current values', 
-        'command'=>proc{showVars($menu84_demo, 
-                                 ['¥ª¥¤¥ë', oil], 
-                                 ['¥È¥é¥ó¥¹¥ß¥Ã¥·¥ç¥ó', trans], 
-                                 ['¥Ö¥ì¡¼¥­', brakes], 
-                                 ['¥é¥¤¥È', lights])} )
-    invoke 1
-    invoke 3
-  }
-
-  TkMenu.new(m, 'tearoff'=>false) {|cascade_radio|
-    m.add('cascade', 'label'=>'Radio buttons', 
-          'menu'=>cascade_radio, 'underline'=>0)
-    pointSize = TkVariable.new
-    add('radio', 'label'=>'10 point', 'variable'=>pointSize, 'value'=>10)
-    add('radio', 'label'=>'14 point', 'variable'=>pointSize, 'value'=>14)
-    add('radio', 'label'=>'18 point', 'variable'=>pointSize, 'value'=>18)
-    add('radio', 'label'=>'24 point', 'variable'=>pointSize, 'value'=>24)
-    add('radio', 'label'=>'32 point', 'variable'=>pointSize, 'value'=>32)
-    add('separator')
-    style = TkVariable.new
-    add('radio', 'label'=>'Roman', 'variable'=>style, 'value'=>'roman')
-    add('radio', 'label'=>'Bold', 'variable'=>style, 'value'=>'bold')
-    add('radio', 'label'=>'Italic', 'variable'=>style, 'value'=>'italic')
-    add('separator')
-    add('command', 'label'=>'¸½ºßÃͤÎɽ¼¨', 
-        'command'=>proc{showVars($menu84_demo, 
-                                 ['pointSize', pointSize], 
-                                 ['style', style])} )
-    invoke 1
-    invoke 7
-  }
-}
-
-TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
-  $menu84_frame.add('cascade', 'label'=>'Icons', 'menu'=>m, 'underline'=>0)
-  add('command', 'hidemargin'=>1, 
-      'bitmap'=>'@'+[$demo_dir,'..',
-                      'images','pattern.xbm'].join(File::Separator),
-      'command'=>proc{TkDialog.new('title'=>'Bitmap Menu Entry', 
-                                   'text'=>'¤¢¤Ê¤¿¤¬ÁªÂò¤·¤¿¥á¥Ë¥å¡¼¹àÌܤϡ¢Ê¸»úÎó¤ÎÂå¤ï¤ê¤Ë¥Ó¥Ã¥È¥Þ¥Ã¥×¥¤¥á¡¼¥¸¤Ç¹àÌܤòɽ¼¨¤·¤¿¤â¤Î¤Ç¤¹¡£¤½¤ì°Ê³°¤ÎÅÀ¤Ç¤Ï¡¢¤Û¤«¤Î¥á¥Ë¥å¡¼¹àÌܤȤδ֤ÇÆä˰㤤¤¬¤¢¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£',
-                                   'bitmap'=>'', 'default'=>0, 
-                                   'buttons'=>'ÊĤ¸¤ë')} )
-  ['info', 'questhead', 'error'].each{|icon|
-    add('command', 'bitmap'=>icon, 'hidemargin'=>1, 
-        'command'=>proc{print "You invoked the #{icon} bitmap\n"})
-  }
-
-  entryconfigure(2, :columnbreak=>true)
-}
-
-TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
-  $menu84_frame.add('cascade', 'label'=>'More', 'menu'=>m, 'underline'=>0)
-  [ 'An entry','Another entry','Does nothing','Does almost nothing',
-    'Make life meaningful' ].each{|i|
-    add('command', 'label'=>i, 
-        'command'=>proc{print "You invoked \"#{i}\"\n"})
-  }
-
-  m.entryconfigure('Does almost nothing', 
-                   'bitmap'=>'questhead', 'compound'=>'left', 
-                   'command'=>proc{
-                     TkDialog.new('title'=>'Compound Menu Entry', 
-                                  'message'=>'¤¢¤Ê¤¿¤¬ÁªÂò¤·¤¿¥á¥Ë¥å¡¼¹àÌܤϡ¢¥Ó¥Ã¥È¥Þ¥Ã¥×¥¤¥á¡¼¥¸¤Èʸ»úÎó¤È¤òƱ»þ¤Ë°ì¤Ä¤Î¹àÌܤËɽ¼¨¤¹¤ë¤è¤¦¤Ë¤·¤¿¤â¤Î¤Ç¤¹¡£¤½¤ì°Ê³°¤ÎÅÀ¤Ç¤Ï¡¢¤Û¤«¤Î¥á¥Ë¥å¡¼¹àÌܤȤδ֤ÇÆä˰㤤¤¬¤¢¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£',
-                                  'buttons'=>['λ²ò'], 'bitmap'=>'')
-                   })
-}
-
-TkMenu.new($menu84_frame) {|m|
-  $menu84_frame.add('cascade', 'label'=>'Colors', 'menu'=>m, 'underline'=>0)
-  ['red', 'orange', 'yellow', 'green', 'blue'].each{|c|
-    add('command', 'label'=>c, 'background'=>c, 
-        'command'=>proc{print "You invoked \"#{c}\"\n"})
-  }
-}
-
-$menu84_demo.menu($menu84_frame)
-
-TkMenu.bind('<MenuSelect>', proc{|w|
-              begin
-                label = w.entrycget('active', 'label')
-              rescue
-                label = "    "
-              end
-              menustatus.value = label
-              Tk.update(true)
-            }, '%W')
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/menu8x.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/menu8x.rb
deleted file mode 100644 (file)
index 9249f24..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# menus widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($menu8x_demo) && $menu8x_demo
-  $menu8x_demo.destroy 
-  $menu8x_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$menu8x_demo = TkToplevel.new {|w|
-  title("Menu Demonstration (Tk8.x)")
-  iconname("menu")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($menu8x_demo).pack(:fill=>:both, :expand=>true)
-
-# version check
-if $tk_version.to_f < 8.0
-
-# label À¸À®
-TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left') {
-    text("¼Â¹Ô¤·¤è¤¦¤È¤·¤¿¥¹¥¯¥ê¥×¥È¤Ï Tk8.0 °Ê¾å¤ÇÍøÍѤǤ­¤ëµ¡Ç½¤òÍøÍѤ·¤Æ¤¤¤ë¤¿¤á¡¢¤¢¤Ê¤¿¤Î Ruby#{VERSION}/Tk#{$tk_version}#{(Tk::JAPANIZED_TK)? 'jp': ''} ¤Ç¤ÏÀµ¾ï¤Ë¼Â¹Ô¤Ç¤­¤Þ¤»¤ó¡£¤è¤Ã¤Æ¥Ç¥â¤Î¼Â¹Ô¤òÃæ»ß¤·¤Þ¤·¤¿¡£¤¿¤À¤·¡¢²¼¤Î¥³¡¼¥É»²¾È¥Ü¥¿¥ó¤ò²¡¤¹¤³¤È¤Ç¡¢¼Â¹Ô¤¬Ãæ»ß¤µ¤ì¤¿¥¹¥¯¥ê¥×¥È¤Î¥½¡¼¥¹¤ò»²¾È¤¹¤ë¤³¤È¤Ï²Äǽ¤Ç¤¹¡£")
-}.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $menu8x_demo
-      $menu8x_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'menu8x'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-else ; # Tk8.x
-
-begin
-  windowingsystem = Tk.windowingsystem()
-rescue
-  windowingsystem = ""
-end
-
-# label À¸À®
-TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left') {
-  if $tk_platform['platform'] == 'macintosh' ||
-      windowingsystem == "classic" || windowingsystem == "aqua"
-    text("¤³¤Î¥¦¥£¥ó¥É¥¦¤ÏÍÍ¡¹¤Ê¥á¥Ë¥å¡¼¤È¥«¥¹¥±¡¼¥É¥á¥Ë¥å¡¼¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Command-X ¤òÆþÎϤ¹¤ë¤È¡¢X¤¬¥³¥Þ¥ó¥É¥­¡¼µ­¹æ¤Ë³¤¤¤Æɽ¼¨¤µ¤ì¤Æ¤¤¤ëʸ»ú¤Ê¤é¤Ð¡¢¥¢¥¯¥»¥é¥ì¡¼¥¿¤ò»È¤Ã¤¿¹àÌܵ¯Æ°¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥á¥Ë¥å¡¼Í×ÁÇÃæ¡¢ºÇ¸å¤Î¤â¤Î¤Ï¡¢¤½¤Î¥á¥Ë¥å¡¼¤ÎºÇ½é¤Î¹àÌܤòÁªÂò¤¹¤ë¤³¤È¤ÇÆÈΩ¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£")
-  else
-    text("¤³¤Î¥¦¥£¥ó¥É¥¦¤ÏÍÍ¡¹¤Ê¥á¥Ë¥å¡¼¤È¥«¥¹¥±¡¼¥É¥á¥Ë¥å¡¼¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Alt-X ¤òÆþÎϤ¹¤ë¤È¡¢X¤¬¥á¥Ë¥å¡¼¤Ë¥¢¥ó¥À¡¼¥é¥¤¥óÉÕ¤­¤Çɽ¼¨¤µ¤ì¤Æ¤¤¤ëʸ»ú¤Ê¤é¤Ð¡¢¥­¡¼¥Ü¡¼¥É¤«¤é¤Î»ØÄ꤬¤Ç¤­¤Þ¤¹¡£Ìð°õ¥­¡¼¤Ç¥á¥Ë¥å¡¼¤Î¥È¥é¥Ð¡¼¥¹¤â²Äǽ¤Ç¤¹¡£¥á¥Ë¥å¡¼¤¬»ØÄꤵ¤ì¤¿ºÝ¤Ë¤Ï¡¢¥¹¥Ú¡¼¥¹¥­¡¼¤Ç¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤¢¤ë¤¤¤Ï¡¢¥¢¥ó¥À¡¼¥é¥¤¥óÉÕ¤­¤Îʸ»ú¤òÆþÎϤ¹¤ë¤³¤È¤Ç¤â¼Â¹Ô¤Ç¤­¤Þ¤¹¡£¥á¥Ë¥å¡¼¤Î¥¨¥ó¥È¥ê¤¬¥¢¥¯¥»¥é¥ì¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¤½¤Î¥¢¥¯¥»¥é¥ì¡¼¥¿¤òÆþÎϤ¹¤ë¤³¤È¤Ç¥á¥Ë¥å¡¼¤ò»ØÄꤹ¤ë¤³¤È¤Ê¤·¤Ë¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥á¥Ë¥å¡¼Í×ÁÇÃæ¡¢ºÇ¸å¤Î¤â¤Î¤Ï¡¢¤½¤Î¥á¥Ë¥å¡¼¤ÎºÇ½é¤Î¹àÌܤòÁªÂò¤¹¤ë¤³¤È¤ÇÆÈΩ¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£")
-  end
-}.pack('side'=>'top')
-
-# ¾õÂÖɽ¼¨¤ÎÀ¸À®
-$menu8xstatus = TkVariable.new("    ")
-TkFrame.new(base_frame) {|frame|
-  TkLabel.new(frame, 'textvariable'=>$menu8xstatus, 'relief'=>'sunken', 
-              'bd'=>1, 'font'=>['Helvetica', '10'], 'anchor'=>'w')\
-  .pack('side'=>'left', 'padx'=>2, 'expand'=>'yes', 'fill'=>'both')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>2)
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $menu8x_demo
-      $menu8x_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'menu8x'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# menu À¸À®
-TkMenu.new($menu8x_demo, 'tearoff'=>false) {|m|
-  TkMenu.new(m, 'tearoff'=>false) {|file_menu|
-    m.add('cascade', 'label'=>'File', 'menu'=>file_menu, 'underline'=>0)
-    add('command', 'label'=>'³«¤¯ ...', 'command'=>proc{fail '¤³¤ì¤Ï¡¢¥Ç¥â¤Ç¤¹¤Î¤Ç"³«¤¯ ..."¤ËÂФ¹¤ë¥¢¥¯¥·¥ç¥ó¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£'})
-    add('command', 'label'=>'¿·µ¬', 'command'=>proc{fail '¤³¤ì¤Ï¡¢¥Ç¥â¤Ç¤¹¤Î¤Ç"¿·µ¬"¤ËÂФ¹¤ë¥¢¥¯¥·¥ç¥ó¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£'})
-    add('command', 'label'=>'Êݸ', 'command'=>proc{fail '¤³¤ì¤Ï¡¢¥Ç¥â¤Ç¤¹¤Î¤Ç"Êݸ"¤ËÂФ¹¤ë¥¢¥¯¥·¥ç¥ó¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£'})
-    add('command', 'label'=>'Êݸ(»ØÄê) ...', 'command'=>proc{fail '¤³¤ì¤Ï¡¢¥Ç¥â¤Ç¤¹¤Î¤Ç"Êݸ(»ØÄê) ..."¤ËÂФ¹¤ë¥¢¥¯¥·¥ç¥ó¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£'})
-    add('separator')
-    add('command', 'label'=>'¥×¥ê¥ó¥ÈÀßÄê ...', 'command'=>proc{fail '¤³¤ì¤Ï¡¢¥Ç¥â¤Ç¤¹¤Î¤Ç"¥×¥ê¥ó¥ÈÀßÄê ..."¤ËÂФ¹¤ë¥¢¥¯¥·¥ç¥ó¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£'})
-    add('command', 'label'=>'¥×¥ê¥ó¥È ...', 'command'=>proc{fail '¤³¤ì¤Ï¡¢¥Ç¥â¤Ç¤¹¤Î¤Ç"¥×¥ê¥ó¥È ..."¤ËÂФ¹¤ë¥¢¥¯¥·¥ç¥ó¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£'})
-    add('separator')
-    add('command', 'label'=>'½ªÎ»', 'command'=>proc{$menu8x_demo.destroy})
-  }
-
-  if $tk_platform['platform'] == 'macintosh' ||
-      windowingsystem == "classic" || windowingsystem == "aqua"
-    modifier = 'Command'
-  elsif $tk_platform['platform'] == 'windows'
-    modifier = 'Control'
-  else
-    modifier = 'Meta'
-  end
-
-  TkMenu.new(m, 'tearoff'=>false) {|basic_menu|
-    m.add('cascade', 'label'=>'Basic', 'menu'=>basic_menu, 'underline'=>0)
-    add('command', 'label'=>'²¿¤â¤·¤Ê¤¤Ä¹¤¤¥¨¥ó¥È¥ê')
-    ['A','B','C','D','E','F','G'].each{|c|
-      # add('command', 'label'=>"ʸ»ú \"#{c}\" ¤ò°õ»ú", 'underline'=>4, 
-      add('command', 'label'=>"Print letter \"#{c}\" (ʸ»ú \"#{c}\" ¤ò°õ»ú)", 
-          'underline'=>14, 'accelerator'=>"Meta+#{c}", 
-          'command'=>proc{print c,"\n"}, 'accelerator'=>"#{modifier}+#{c}")
-      $menu8x_demo.bind("#{modifier}-#{c.downcase}", proc{print c,"\n"})
-    }
-  }
-
-  TkMenu.new(m, 'tearoff'=>false) {|cascade_menu|
-    m.add('cascade', 'label'=>'Cascades', 'menu'=>cascade_menu, 'underline'=>0)
-    add('command', 'label'=>'Print hello(¤³¤ó¤Ë¤Á¤Ï)', 
-        'command'=>proc{print "Hello(¤³¤ó¤Ë¤Á¤Ï)\n"}, 
-        'accelerator'=>"#{modifier}+H", 'underline'=>6)
-    $menu8x_demo.bind("#{modifier}-h", proc{print "Hello(¤³¤ó¤Ë¤Á¤Ï)\n"})
-    add('command', 'label'=>'Print goodbye(¤µ¤è¤¦¤Ê¤é)', 
-        'command'=>proc{print "Goodbye(¤µ¤è¤¦¤Ê¤é)\n"}, 
-        'accelerator'=>"#{modifier}+G", 'underline'=>6)
-    $menu8x_demo.bind("#{modifier}-g", proc{print "Goodbye(¤µ¤è¤¦¤Ê¤é)\n"})
-
-    TkMenu.new(m, 'tearoff'=>false) {|cascade_check|
-      cascade_menu.add('cascade', 'label'=>'Check buttons(¥Á¥§¥Ã¥¯¥Ü¥¿¥ó)', 
-                       'menu'=>cascade_check, 'underline'=>0)
-      oil = TkVariable.new(0)
-      add('check', 'label'=>'¥ª¥¤¥ëÅÀ¸¡', 'variable'=>oil)
-      trans = TkVariable.new(0)
-      add('check', 'label'=>'¥È¥é¥ó¥¹¥ß¥Ã¥·¥ç¥óÅÀ¸¡', 'variable'=>trans)
-      brakes = TkVariable.new(0)
-      add('check', 'label'=>'¥Ö¥ì¡¼¥­ÅÀ¸¡', 'variable'=>brakes)
-      lights = TkVariable.new(0)
-      add('check', 'label'=>'¥é¥¤¥ÈÅÀ¸¡', 'variable'=>lights)
-      add('separator')
-      add('command', 'label'=>'¸½ºß¤ÎÃͤòɽ¼¨', 
-          'command'=>proc{showVars($menu8x_demo, 
-                                   ['¥ª¥¤¥ëÅÀ¸¡', oil], 
-                                   ['¥È¥é¥ó¥¹¥ß¥Ã¥·¥ç¥óÅÀ¸¡', trans], 
-                                   ['¥Ö¥ì¡¼¥­ÅÀ¸¡', brakes], 
-                                   ['¥é¥¤¥ÈÅÀ¸¡', lights])} )
-      invoke 1
-      invoke 3
-    }
-
-    TkMenu.new(m, 'tearoff'=>false) {|cascade_radio|
-      cascade_menu.add('cascade', 'label'=>'Radio buttons(¥é¥¸¥ª¥Ü¥¿¥ó)', 
-                       'menu'=>cascade_radio, 'underline'=>0)
-      pointSize = TkVariable.new
-      add('radio', 'label'=>'10 ¥Ý¥¤¥ó¥È', 'variable'=>pointSize, 'value'=>10)
-      add('radio', 'label'=>'14 ¥Ý¥¤¥ó¥È', 'variable'=>pointSize, 'value'=>14)
-      add('radio', 'label'=>'18 ¥Ý¥¤¥ó¥È', 'variable'=>pointSize, 'value'=>18)
-      add('radio', 'label'=>'24 ¥Ý¥¤¥ó¥È', 'variable'=>pointSize, 'value'=>24)
-      add('radio', 'label'=>'32 ¥Ý¥¤¥ó¥È', 'variable'=>pointSize, 'value'=>32)
-      add('separator')
-      style = TkVariable.new
-      add('radio', 'label'=>'¥í¡¼¥Þ¥ó', 'variable'=>style, 'value'=>'roman')
-      add('radio', 'label'=>'¥Ü¡¼¥ë¥É', 'variable'=>style, 'value'=>'bold')
-      add('radio', 'label'=>'¥¤¥¿¥ê¥Ã¥¯', 'variable'=>style, 'value'=>'italic')
-      add('separator')
-      add('command', 'label'=>'¸½ºß¤ÎÃͤòɽ¼¨', 
-          'command'=>proc{showVars($menu8x_demo, 
-                                   ['¥Ý¥¤¥ó¥È¥µ¥¤¥º', pointSize], 
-                                   ['¥¹¥¿¥¤¥ë', style])} )
-      invoke 1
-      invoke 7
-    }
-  }
-
-  TkMenu.new(m, 'tearoff'=>false) {|icon_menu|
-    m.add('cascade', 'label'=>'Icons', 'menu'=>icon_menu, 'underline'=>0)
-    add('command', 
-        'bitmap'=>'@'+[$demo_dir,'..',
-                        'images','pattern.xbm'].join(File::Separator),
-        'hidemargin'=>1, 
-        'command'=>proc{TkDialog.new('title'=>'Bitmap Menu Entry', 
-                                     'text'=>'º£¤¢¤Ê¤¿¤¬ÁªÂò¤·¤¿¥á¥Ë¥å¡¼¤Î¹àÌܤϥƥ­¥¹¥È¤Ç¤Ï¤Ê¤¯¥Ó¥Ã¥È¥Þ¥Ã¥×¤òɽ¼¨¤·¤Æ¤¤¤Þ¤·¤¿¡£¤½¤ì°Ê³°¤ÎÅÀ¤Ç¤Ï¾¤Î¥á¥Ë¥å¡¼¹àÌܤÈÊѤï¤ê¤Þ¤»¤ó¡£',
-                                     'bitmap'=>'', 'default'=>0, 
-                                     'buttons'=>'λ²ò')} )
-    ['info', 'questhead', 'error'].each{|icon|
-      add('command', 'bitmap'=>icon, 'hidemargin'=>1, 
-          'command'=>proc{print "You invoked the #{icon} bitmap\n"})
-    }
-
-    entryconfigure(2, 'columnbreak'=>1)
-  }
-
-  TkMenu.new(m, 'tearoff'=>false) {|more_menu|
-    m.add('cascade', 'label'=>'More', 'menu'=>more_menu, 'underline'=>0)
-    [ '¥¨¥ó¥È¥ê','Ê̤Υ¨¥ó¥È¥ê','²¿¤â¤·¤Ê¤¤','¤Û¤È¤ó¤É²¿¤â¤·¤Ê¤¤',
-      '¿ÍÀ¸¤ò°ÕµÁ¤¢¤ë¤â¤Î¤Ë' ].each{|i|
-      add('command', 'label'=>i, 
-          'command'=>proc{print "You invoked \"#{i}\"\n"})
-    }
-  }
-
-  TkMenu.new(m) {|colors_menu|
-    m.add('cascade', 'label'=>'Colors', 'menu'=>colors_menu, 'underline'=>1)
-    ['red', 'orange', 'yellow', 'green', 'blue'].each{|c|
-      add('command', 'label'=>c, 'background'=>c, 
-          'command'=>proc{print "You invoked \"#{c}\"\n"})
-    }
-  }
-
-  $menu8x_demo.configure('menu'=>m)
-}
-
-TkMenu.bind('<MenuSelect>', 
-            proc{|w| 
-              begin
-                label = w.entrycget('active', 'label')
-              rescue
-                label = '    '
-              end
-              $menu8xstatus.value = label
-              Tk.update('idletasks')
-            }, '%W')
-
-end ; # Tk 8.x
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/menubu.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/menubu.rb
deleted file mode 100644 (file)
index 90dc367..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-# -*- coding: euc-jp -*-
-require "tkcanvas"
-
-def optionMenu(menubutton, varName, firstValue, *rest)
-  varName.value = firstValue
-  configoptions = {'textvariable'=>varName,'indicatoron'=>'on',
-    'relief'=>'raised','borderwidth'=>2,'highlightthickness'=>2,
-    'anchor'=>'c','direction'=>'flush'}
-  configoptions.each {|key, value|
-    menubutton.configure(key, value)
-  }
-  menu = TkMenu.new(menubutton) {
-    tearoff 'off'
-    add 'radio', 'label'=>firstValue, 'variable'=>varName
-  }
-  menubutton.menu(menu)
-  for i in rest
-    menu.add 'radio', 'label'=>i, 'variable'=>varName
-  end
-  
-  return menu
-end
-
-if defined?($menubu_demo) && $menubu_demo
-  $menubu_demo.destroy
-  $menubu_demo = nil
-end
-
-$menubu_demo = TkToplevel.new {|w|
-  title("Menu Button Demonstration")
-  iconname("menubutton")
-}
-
-positionWindow($menubu_demo)
-
-base_frame = TkFrame.new($menubu_demo).pack(:fill=>:both, :expand=>true)
-
-# version check
-if $tk_version.to_f < 8.0
-
-# label À¸À®
-TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left') {
-    text("¼Â¹Ô¤·¤è¤¦¤È¤·¤¿¥¹¥¯¥ê¥×¥È¤Ï Tk8.0 °Ê¾å¤ÇÍøÍѤǤ­¤ëµ¡Ç½¤òÍøÍѤ·¤Æ¤¤¤ë¤¿¤á¡¢¤¢¤Ê¤¿¤Î Ruby#{VERSION}/Tk#{$tk_version}#{(Tk::JAPANIZED_TK)? 'jp': ''} ¤Ç¤ÏÀµ¾ï¤Ë¼Â¹Ô¤Ç¤­¤Þ¤»¤ó¡£¤è¤Ã¤Æ¥Ç¥â¤Î¼Â¹Ô¤òÃæ»ß¤·¤Þ¤·¤¿¡£¤¿¤À¤·¡¢²¼¤Î¥³¡¼¥É»²¾È¥Ü¥¿¥ó¤ò²¡¤¹¤³¤È¤Ç¡¢¼Â¹Ô¤¬Ãæ»ß¤µ¤ì¤¿¥¹¥¯¥ê¥×¥È¤Î¥½¡¼¥¹¤ò»²¾È¤¹¤ë¤³¤È¤Ï²Äǽ¤Ç¤¹¡£")
-}.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $menubu_demo
-      $menubu_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'menubu'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-else ; # Tk8.x
-
-body = TkFrame.new(base_frame)
-body.pack('expand'=>'yes', 'fill'=>'both')
-
-below = TkMenubutton.new(body) {
-  text "Below"
-  underline 0
-  direction 'below'
-  relief 'raised'
-}
-belowMenu = TkMenu.new(below) {
-  tearoff 0
-  add 'command', 'label'=>"Below menu: first item", 'command'=>proc {puts "\"You have selected the first item from the Below menu.\""}
-  add 'command', 'label'=>"Below menu: second item", 'command'=>proc {puts "\"You have selected the second item from the Below menu.\""}
-}
-below.menu(belowMenu)
-below.grid('row'=>0, 'column'=>1, 'sticky'=>'n')
-
-below = TkMenubutton.new(body) {
-  text "Below"
-  underline 0
-  direction 'below'
-  relief 'raised'
-}
-belowMenu = TkMenu.new(below) {
-  tearoff 0
-  add 'command', 'label'=>"Below menu: first item", 'command'=>proc {puts "\"You have selected the first item from the Below menu.\""}
-  add 'command', 'label'=>"Below menu: second item", 'command'=>proc {puts "\"You have selected the second item from the Below menu.\""}
-}
-below.menu(belowMenu)
-below.grid('row'=>0, 'column'=>1, 'sticky'=>'n')
-
-below = TkMenubutton.new(body) {
-  text "Below"
-  underline 0
-  direction 'below'
-  relief 'raised'
-}
-belowMenu = TkMenu.new(below) {
-  tearoff 0
-  add 'command', 'label'=>"Below menu: first item", 'command'=>proc {puts "\"You have selected the first item from the Below menu.\""}
-  add 'command', 'label'=>"Below menu: second item", 'command'=>proc {puts "\"You have selected the second item from the Below menu.\""}
-}
-below.menu(belowMenu)
-below.grid('row'=>0, 'column'=>1, 'sticky'=>'n')
-
-right = TkMenubutton.new(body) {
-  text "Right"
-  underline 0
-  direction 'right'
-  relief 'raised'
-}
-rightMenu = TkMenu.new(right) {
-  tearoff 0
-  add 'command', 'label'=>"Right menu: first item", 'command'=>proc {puts "\"You have selected the first item from the Left menu.\""}
-  add 'command', 'label'=>"Right menu: second item", 'command'=>proc {puts "\"You have selected the second item from the Right menu.\""}
-}
-right.menu(rightMenu)
-right.grid('row'=>1, 'column'=>0, 'sticky'=>'w')
-
-left = TkMenubutton.new(body) {
-  text "Left"
-  underline 0
-  direction 'left'
-  relief 'raised'
-}
-leftMenu = TkMenu.new(left) {
-  tearoff 0
-  add 'command', 'label'=>"Left menu: first item", 'command'=>proc {puts "\"You have selected the first item from the Left menu.\""}
-  add 'command', 'label'=>"Left menu: second item", 'command'=>proc {puts "\"You have selected the second item from the Left menu.\""}
-}
-left.menu(leftMenu)
-left.grid('row'=>1, 'column'=>2, 'sticky'=>'e')
-
-center = TkFrame.new(body) {
-  grid('row'=>1, 'column'=>1, 'sticky'=>'news')
-}
-
-above = TkMenubutton.new(body) {
-  text "Above"
-  underline 0
-  direction 'above'
-  relief 'raised'
-}
-aboveMenu = TkMenu.new(above) {
-  tearoff 0
-  add 'command', 'label'=>"Above menu: first item", 'command'=>proc {puts "\"You have selected the first item from the Above menu.\""}
-  add 'command', 'label'=>"Above menu: second item", 'command'=>proc {puts "\"You have selected the second item from the Above menu.\""}
-}
-above.menu(aboveMenu)
-above.grid('row'=>2, 'column'=>1, 'sticky'=>'s')
-
-center = TkFrame.new(body) {
-  grid('row'=>1, 'column'=>1, 'sticky'=>'news')
-}
-
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc {
-      tmppath = $menubu_demo
-      $menubu_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc { showCode 'menubu' }
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'expand'=>'yes', 'fill'=>'x', 'pady'=>'2m')
-
-msg = TkLabel.new(center) {
-#  font $font
-  wraplength '4i'
-  justify 'left'
-  text "¤³¤ì¤Ï¥á¥Ë¥å¡¼¥Ü¥¿¥ó¤Î¥Ç¥â¤Ç¤¹¡£\"Below\"¤Î¥Ü¥¿¥ó¤Ï\
-²¼¤Ë¥á¥Ë¥å¡¼¤ò½Ð¤·¡¢\"Right\"¤Î¥Ü¥¿¥ó¤Ï±¦¤Ë¥á¥Ë¥å¡¼¤ò½Ð¤·¤Æ¡¢\
-¡Ä¡Ä¤È¤Ê¤ê¤Þ¤¹¡£¤³¤Îʸ¾Ï¤Î²¼¤Ë¤Ï2¤Ä¤Î¥ª¥×¥·¥ç¥ó¥á¥Ë¥å¡¼¤¬¤¢¤ê¤Þ¤¹¡£\
-1¤Ä¤ÏÉáÄ̤Υá¥Ë¥å¡¼¤Ç¡¢¤â¤¦1¤Ä¤Ï16¿§¤Î¥Ñ¥ì¥Ã¥È¤Ç¤¹¡£"
-}
-msg.pack('side'=>'top', 'padx'=>25, 'pady'=>25)
-
-TkFrame.new(center) {|f|
-  menubuttonoptions = TkVariable.new
-  mbutton = TkMenubutton.new(f)
-  options = optionMenu(mbutton, menubuttonoptions, 
-                       'one', 'two', 'three')
-  mbutton.pack('side'=>'left', 'padx'=>25, 'pady'=>25)
-  paletteColor = TkVariable.new
-  colors = ['Black','red4','DarkGreen','NavyBlue', 'gray75',
-    'Red','Green','Blue','gray50','Yellow','Cyan','Magenta',
-    'White','Brown','DarkSeaGreen','DarkViolet']
-  colorMenuButton = TkMenubutton.new(f)
-  m = optionMenu(colorMenuButton, paletteColor, *colors)
-  begin
-    windowingsystem = Tk.windowingsystem()
-  rescue
-    windowingsystem = ""
-  end
-  if windowingsystem == "classic" || windowingsystem == "aqua"
-    topBorderColor = 'Black'
-    bottomBorderColor = 'Black'
-  else
-    topBorderColor = 'gray50'
-    bottomBorderColor = 'gray75'
-  end
-  for i in 0..15
-    image = TkPhotoImage.new('height'=>16, 'width'=>16)
-    image.put(topBorderColor, 0, 0, 16, 1)
-    image.put(topBorderColor, 0, 1, 1, 16)
-    image.put(bottomBorderColor, 0, 15, 16, 16)
-    image.put(bottomBorderColor, 15, 1, 16, 16)
-    image.put(colors[i], 1, 1, 15, 15)
-
-    selectimage = TkPhotoImage.new('height'=>16, 'width'=>16)
-    selectimage.put('Black', 0, 0, 16, 2)
-    selectimage.put('Black', 0, 2, 2, 16)
-    selectimage.put('Black', 2, 14, 16, 16)
-    selectimage.put('Black', 14, 2, 16, 14)
-    selectimage.put(colors[i], 2, 2, 14, 14)
-
-    m.entryconfigure(i, 'image'=>image, 'selectimage'=>selectimage, 'hidemargin'=>'on')
-  end
-  m.configure('tearoff', 'on')
-  for c in ['Black', 'gray75', 'gray50', 'White']
-    m.entryconfigure(c, 'columnbreak'=>1)
-  end
-  colorMenuButton.pack('side'=>'left', 'padx'=>25, 'pady'=>25)
-  pack 'padx'=>25, 'pady'=>25
-}
-
-end ; # Tk8.x
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/msgbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/msgbox.rb
deleted file mode 100644 (file)
index 88380e0..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# message boxes widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($msgbox_demo) && $msgbox_demo
-  $msgbox_demo.destroy 
-  $msgbox_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$msgbox_demo = TkToplevel.new {|w|
-  title("Message Box Demonstration")
-  iconname("messagebox")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($msgbox_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'4i', 'justify'=>'left',
-            'text'=>"¤Þ¤ºÉ½¼¨¤¹¤ë¥¢¥¤¥³¥ó¤È¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹¤Î¼ïÎà¤òÁª¤ó¤Ç²¼¤µ¤¤¡£¤½¤Î¸å¤Ë\"¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹\"¥Ü¥¿¥ó¤ò²¡¤¹¤È¡¢»ØÄꤷ¤¿¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£").pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $msgbox_demo
-      $msgbox_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'msgbox'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹'
-    command proc{showMessageBox $msgbox_demo}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame À¸À®
-$msgbox_leftframe  = TkFrame.new(base_frame)
-$msgbox_rightframe = TkFrame.new(base_frame)
-$msgbox_leftframe .pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y', 
-                        'pady'=>'.5c', 'padx'=>'.5c')
-$msgbox_rightframe.pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y', 
-                        'pady'=>'.5c', 'padx'=>'.5c')
-
-TkLabel.new($msgbox_leftframe, 'text'=>'¥¢¥¤¥³¥ó').pack('side'=>'top')
-TkFrame.new($msgbox_leftframe, 'relief'=>'ridge', 'bd'=>1, 'height'=>2)\
-.pack('side'=>'top', 'fill'=>'x', 'expand'=>'no')
-
-$msgboxIcon = TkVariable.new('info')
-['error', 'info', 'question', 'warning'].each {|icon|
-  TkRadioButton.new($msgbox_leftframe, 'text'=>icon, 'variable'=>$msgboxIcon, 
-                    'relief'=>'flat', 'value'=>icon, 'width'=>16, 
-                    'anchor'=>'w').pack('side'=>'top', 'pady'=>2, 
-                                        'anchor'=>'w', 'fill'=>'x')
-}
-
-TkLabel.new($msgbox_rightframe, 'text'=>'¼ïÎà').pack('side'=>'top')
-TkFrame.new($msgbox_rightframe, 'relief'=>'ridge', 'bd'=>1, 'height'=>2)\
-.pack('side'=>'top', 'fill'=>'x', 'expand'=>'no')
-
-$msgboxType = TkVariable.new('ok')
-['abortretryignore', 'ok', 'okcancel', 
-  'retrycancel', 'yesno', 'yesnocancel'].each {|type|
-  TkRadioButton.new($msgbox_rightframe, 'text'=>type, 'variable'=>$msgboxType, 
-                    'relief'=>'flat', 'value'=>type, 'width'=>16, 
-                    'anchor'=>'w').pack('side'=>'top', 'pady'=>2, 
-                                        'anchor'=>'w', 'fill'=>'x')
-}
-
-def showMessageBox(w)
-  button = Tk.messageBox('icon'=>$msgboxIcon.value, 'type'=>$msgboxType.value, 
-                         'title'=>'Message', 'parent'=>w,
-                         'message'=>"¤³¤ì¤Ï\"#{$msgboxType.value}\"¤È¤¤¤¦¼ïÎà¤Î¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹¤Ç¡¢\"#{$msgboxIcon.value}\"¤Î¥¢¥¤¥³¥ó¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£")
-
-  Tk.messageBox('icon'=>'info', 'type'=>'ok', 'parent'=>w, 
-                'message'=>"¤¢¤Ê¤¿¤Ï \"#{button}\" ¤ò²¡¤·¤Þ¤·¤¿¤Í¡£")
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/msgbox2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/msgbox2.rb
deleted file mode 100644 (file)
index d61f251..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# message boxes widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($msgbox2_demo) && $msgbox2_demo
-  $msgbox2_demo.destroy 
-  $msgbox2_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$msgbox2_demo = TkToplevel.new {|w|
-  title("Message Box Demonstration")
-  iconname("messagebox")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($msgbox2_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'4i', 'justify'=>'left',
-            'text'=>"¤Þ¤ºÉ½¼¨¤¹¤ë¥¢¥¤¥³¥ó¤È¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹¤Î¼ïÎà¤òÁª¤ó¤Ç²¼¤µ¤¤¡£¤½¤Î¸å¤Ë\"¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹\"¥Ü¥¿¥ó¤ò²¡¤¹¤È¡¢»ØÄꤵ¤ì¤¿·Á¼°¤Ç¡¢¥á¥Ã¥»¡¼¥¸¤È¾ÜºÙ¥Æ¥­¥¹¥È¤È¤ò»ý¤Ã¤¿¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£").pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $msgbox2_demo
-      $msgbox2_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'msgbox2'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹'
-    command proc{showMessageBox $msgbox2_demo}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame À¸À®
-$msgbox_leftframe  = TkFrame.new(base_frame)
-$msgbox_rightframe = TkFrame.new(base_frame)
-$msgbox_leftframe .pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y', 
-                        'pady'=>'.5c', 'padx'=>'.5c')
-$msgbox_rightframe.pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y', 
-                        'pady'=>'.5c', 'padx'=>'.5c')
-
-TkLabel.new($msgbox_leftframe, 'text'=>'¥¢¥¤¥³¥ó').pack('side'=>'top')
-TkFrame.new($msgbox_leftframe, 'relief'=>'ridge', 'bd'=>1, 'height'=>2)\
-.pack('side'=>'top', 'fill'=>'x', 'expand'=>'no')
-
-$msgboxIcon = TkVariable.new('info')
-['error', 'info', 'question', 'warning'].each {|icon|
-  TkRadioButton.new($msgbox_leftframe, 'text'=>icon, 'variable'=>$msgboxIcon, 
-                    'relief'=>'flat', 'value'=>icon, 'width'=>16, 
-                    'anchor'=>'w').pack('side'=>'top', 'pady'=>2, 
-                                        'anchor'=>'w', 'fill'=>'x')
-}
-
-TkLabel.new($msgbox_rightframe, 'text'=>'¼ïÎà').pack('side'=>'top')
-TkFrame.new($msgbox_rightframe, 'relief'=>'ridge', 'bd'=>1, 'height'=>2)\
-.pack('side'=>'top', 'fill'=>'x', 'expand'=>'no')
-
-$msgboxType = TkVariable.new('ok')
-['abortretryignore', 'ok', 'okcancel', 
-  'retrycancel', 'yesno', 'yesnocancel'].each {|type|
-  TkRadioButton.new($msgbox_rightframe, 'text'=>type, 'variable'=>$msgboxType, 
-                    'relief'=>'flat', 'value'=>type, 'width'=>16, 
-                    'anchor'=>'w').pack('side'=>'top', 'pady'=>2, 
-                                        'anchor'=>'w', 'fill'=>'x')
-}
-
-def showMessageBox(w)
-  button = Tk.messageBox('icon'=>$msgboxIcon.value, 'type'=>$msgboxType.value, 
-                         'title'=>'Message', 'parent'=>w,
-                         'message'=>"\"#{$msgboxType.value}\"¥¿¥¤¥×¤Î¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹", 
-                         'detail'=>"¤³¤ì¤Ï\"#{$msgboxType.value}\"¤È¤¤¤¦¼ïÎà¤Î¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹¤Ç¡¢\"#{$msgboxIcon.value}\"¤Î¥¢¥¤¥³¥ó¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£²¼¤Î¥Ü¥¿¥ó¤Î¤¤¤º¤ì¤«¤òÁªÂò¤·¤Æ¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£")
-
-  Tk.messageBox('icon'=>'info', 'type'=>'ok', 'parent'=>w, 
-                'message'=>"¤¢¤Ê¤¿¤Ï \"#{button}\" ¤ò²¡¤·¤Þ¤·¤¿¤Í¡£")
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/paned1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/paned1.rb
deleted file mode 100644 (file)
index f994e83..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# paned1.rb
-#
-# This demonstration script creates a toplevel window containing
-# a paned window that separates two windows horizontally.
-#
-# based on "Id: paned1.tcl,v 1.1 2002/02/22 14:07:01 dkf Exp"
-
-if defined?($paned1_demo) && $paned1_demo
-  $paned1_demo.destroy 
-  $paned1_demo = nil
-end
-
-$paned1_demo = TkToplevel.new {|w|
-  title("Horizontal Paned Window Demonstration")
-  iconname("paned1")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($paned1_demo).pack(:fill=>:both, :expand=>true)
-
-TkLabel.new(base_frame, 
-            :font=>$font, :wraplength=>'4i', :justify=>:left, 
-            :text=><<EOL).pack(:side=>:top)
-²¼¤Î¿§ÉÕ¤±¤µ¤ì¤¿Æó¤Ä¤Î¥¦¥£¥ó¥É¥¦¤Î´Ö¤Î»ÅÀÚ¤êÏȤϡ¢°ì¤Ä¤ÎÎΰè¤ò¤½¤ì¤¾¤ì¤Î¥¦¥£¥ó¥É¥¦¤Î¤¿¤á¤Ëʬ³ä¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£º¸¥Ü¥¿¥ó¤Ç»ÅÀÚ¤ê¤òÁàºî¤¹¤ë¤È¡¢Ê¬³ä¥µ¥¤¥ºÊѹ¹¤ÎÁàºîÅÓÃæ¤Ç¤ÏºÆɽ¼¨¤Ï¤Ê¤µ¤ì¤º¡¢³ÎÄꤵ¤»¤¿¤È¤­¤Ëɽ¼¨¤¬¹¹¿·¤µ¤ì¤Þ¤¹¡£¥Þ¥¦¥¹¤Ë¤è¤ë»ÅÀÚ¤ê¤ÎÁàºî¤ËÄɿ路¤Æ¥µ¥¤¥º¤òÊѹ¹¤·¤¿É½¼¨¤¬¤Ê¤ï¤ì¤ë¤è¤¦¤Ë¤·¤¿¤¤¾ì¹ç¤Ï¡¢¥Þ¥¦¥¹¤ÎÃæ±û¥Ü¥¿¥ó¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£
-¤â¤·¤¢¤Ê¤¿¤¬»È¤Ã¤Æ¤¤¤ë Ruby ¤Ë¥ê¥ó¥¯¤µ¤ì¤Æ¤¤¤ë Tk ¥é¥¤¥Ö¥é¥ê¤¬ panedwindow ¤ò¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤
-¾ì¹ç¡¢¤³¤Î¥Ç¥â¤Ï¤¦¤Þ¤¯Æ°¤«¤Ê¤¤¤Ï¤º¤Ç¤¹¡£¤½¤Î¾ì¹ç¤Ë¤Ï panedwindow ¤¬¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ê
-¤è¤ê¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤Î Tk ¤òÁȤ߹ç¤ï¤»¤Æ»î¤¹
-¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
-EOL
-
-# The bottom buttons
-TkFrame.new(base_frame){|f|
-  pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
-
-  TkButton.new(f, :text=>'ÊĤ¸¤ë', :width=>15, :command=>proc{
-                 $paned1_demo.destroy
-                 $paned1_demo = nil
-               }).pack(:side=>:left, :expand=>true)
-
-  TkButton.new(f, :text=>'¥³¡¼¥É»²¾È', :width=>15, :command=>proc{
-                 showCode 'paned1'
-               }).pack(:side=>:left, :expand=>true)
-}
-
-TkPanedwindow.new(base_frame, :orient=>:horizontal){|f|
-  add(Tk::Label.new(f, :text=>"This is the\nleft side", :bg=>'yellow'), 
-      Tk::Label.new(f, :text=>"This is the\nright side", :bg=>'cyan'))
-
-  pack(:side=>:top, :expand=>true, :fill=>:both, :pady=>2, :padx=>'2m')
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/paned2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/paned2.rb
deleted file mode 100644 (file)
index cdc8253..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# paned2.rb --
-#
-# This demonstration script creates a toplevel window containing
-# a paned window that separates two windows vertically.
-#
-# based on "Id: paned2.tcl,v 1.1 2002/02/22 14:07:01 dkf Exp"
-
-if defined?($paned2_demo) && $paned2_demo
-  $paned2_demo.destroy 
-  $paned2_demo = nil
-end
-
-$paned2_demo = TkToplevel.new {|w|
-  title("Vertical Paned Window Demonstration")
-  iconname("paned2")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($paned2_demo).pack(:fill=>:both, :expand=>true)
-
-TkLabel.new(base_frame, 
-            :font=>$font, :wraplength=>'4i', :justify=>:left, 
-            :text=><<EOL).pack(:side=>:top)
-²¼¤Î¥¹¥¯¥í¡¼¥ë¥Ð¡¼ÉÕ¤­¤Î¥¦¥£¥¸¥§¥Ã¥È¤¬ÃÖ¤«¤ì¤¿Æó¤Ä¤Î¥¦¥£¥ó¥É¥¦¤Î´Ö¤Î»ÅÀÚ¤êÏȤϡ¢°ì¤Ä¤ÎÎΰè¤ò¤½¤ì¤¾¤ì¤Î¥¦¥£¥ó¥É¥¦¤Î¤¿¤á¤Ëʬ³ä¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£º¸¥Ü¥¿¥ó¤Ç»ÅÀÚ¤ê¤òÁàºî¤¹¤ë¤È¡¢Ê¬³ä¥µ¥¤¥ºÊѹ¹¤ÎÁàºîÅÓÃæ¤Ç¤ÏºÆɽ¼¨¤Ï¤Ê¤µ¤ì¤º¡¢³ÎÄꤵ¤»¤¿¤È¤­¤Ëɽ¼¨¤¬¹¹¿·¤µ¤ì¤Þ¤¹¡£¥Þ¥¦¥¹¤Ë¤è¤ë»ÅÀÚ¤ê¤ÎÁàºî¤ËÄɿ路¤Æ¥µ¥¤¥º¤òÊѹ¹¤·¤¿É½¼¨¤¬¤Ê¤ï¤ì¤ë¤è¤¦¤Ë¤·¤¿¤¤¾ì¹ç¤Ï¡¢¥Þ¥¦¥¹¤ÎÃæ±û¥Ü¥¿¥ó¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£
-¤â¤·¤¢¤Ê¤¿¤¬»È¤Ã¤Æ¤¤¤ë Ruby ¤Ë¥ê¥ó¥¯¤µ¤ì¤Æ¤¤¤ë Tk ¥é¥¤¥Ö¥é¥ê¤¬ panedwindow ¤ò¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤
-¾ì¹ç¡¢¤³¤Î¥Ç¥â¤Ï¤¦¤Þ¤¯Æ°¤«¤Ê¤¤¤Ï¤º¤Ç¤¹¡£¤½¤Î¾ì¹ç¤Ë¤Ï panedwindow ¤¬¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ê
-¤è¤ê¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤Î Tk ¤òÁȤ߹ç¤ï¤»¤Æ»î¤¹
-¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
-EOL
-
-# The bottom buttons
-TkFrame.new(base_frame){|f|
-  pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
-
-  TkButton.new(f, :text=>'ÊĤ¸¤ë', :width=>15, :command=>proc{
-                 $paned2_demo.destroy
-                 $paned2_demo = nil
-               }).pack(:side=>:left, :expand=>true)
-
-  TkButton.new(f, :text=>'¥³¡¼¥É»²¾È', :width=>15, :command=>proc{
-                 showCode 'paned2'
-               }).pack(:side=>:left, :expand=>true)
-}
-
-paneList = TkVariable.new  # define as normal variable (not array)
-paneList.value = [         # ruby's array --> tcl's list
-    'Ruby/Tk ¤Î¥¦¥£¥¸¥§¥Ã¥È°ìÍ÷',
-    'TkButton', 
-    'TkCanvas', 
-    'TkCheckbutton', 
-    'TkEntry', 
-    'TkFrame', 
-    'TkLabel', 
-    'TkLabelframe', 
-    'TkListbox', 
-    'TkMenu', 
-    'TkMenubutton', 
-    'TkMessage', 
-    'TkPanedwindow', 
-    'TkRadiobutton', 
-    'TkScale', 
-    'TkScrollbar', 
-    'TkSpinbox', 
-    'TkText', 
-    'TkToplevel'
-]
-
-# Create the pane itself
-TkPanedwindow.new(base_frame, :orient=>:vertical){|f|
-  pack(:side=>:top, :expand=>true, :fill=>:both, :pady=>2, :padx=>'2m')
-
-  add(TkFrame.new(f){|paned2_top|
-        TkListbox.new(paned2_top, :listvariable=>paneList) {
-          # Invert the first item to highlight it
-          itemconfigure(0, :background=>self.cget(:foreground), 
-                           :foreground=>self.cget(:background) )
-          yscrollbar(TkScrollbar.new(paned2_top).pack(:side=>:right, 
-                                                      :fill=>:y))
-          pack(:fill=>:both, :expand=>true)
-        }
-      }, 
-
-      TkFrame.new(f, :height=>120) {|paned2_bottom|
-        # The bottom window is a text widget with scrollbar
-        paned2_xscr = TkScrollbar.new(paned2_bottom)
-        paned2_yscr = TkScrollbar.new(paned2_bottom)
-        paned2_text = TkText.new(paned2_bottom, :width=>30, :wrap=>:non) {
-          insert('1.0', '¤³¤³¤ËÇÛÃÖ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ï¡¢' + 
-                        '¤´¤¯ÉáÄ̤Υƥ­¥¹¥È¥¦¥£¥¸¥§¥Ã¥È¤Ç¤¹¡£')
-          xscrollbar(paned2_xscr)
-          yscrollbar(paned2_yscr)
-        }
-        Tk.grid(paned2_text, paned2_yscr, :sticky=>'nsew')
-        Tk.grid(paned2_xscr, :sticky=>'nsew')
-        TkGrid.columnconfigure(paned2_bottom, 0, :weight=>1)
-        TkGrid.rowconfigure(paned2_bottom, 0, :weight=>1)
-      } )
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/pendulum.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/pendulum.rb
deleted file mode 100644 (file)
index b115f5b..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# This demonstration illustrates how Tcl/Tk can be used to construct
-# simulations of physical systems.
-# (called by 'widget')
-#
-# based on Tcl/Tk8.5a2 widget demos
-
-# destroy toplevel widget for this demo script
-if defined?($pendulum_demo) && $pendulum_demo
-  $pendulum_demo.destroy 
-  $pendulum_demo = nil
-end
-
-# create toplevel widget
-$pendulum_demo = TkToplevel.new {|w|
-  title("Pendulum Animation Demonstration")
-  iconname("pendulum")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($pendulum_demo).pack(:fill=>:both, :expand=>true)
-
-# create label
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text '¤³¤Î¥Ç¥â¤Ï¡¢ÊªÍý·Ï¤Î¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Ë´Ø¤ï¤ë¤è¤¦¤Ê¥¢¥Ë¥á¡¼¥·¥ç¥ó¼Â¹Ô¤¹¤ë¤¿¤á¤Ë Ruby/Tk ¤ò¤É¤Î¤è¤¦¤ËÍѤ¤¤ë¤³¤È¤¬¤Ç¤­¤ë¤«¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£º¸Â¦¤Î¥­¥ã¥ó¥Ð¥¹¤Ïñ½ã¤Ê¿¶¤ê»Ò¤Ç¤¢¤ëʪÍý·Ï¼«ÂΤΥ°¥é¥Õ¥£¥«¥ëɽ¸½¤Ç¤¢¤ë¤Î¤ËÂФ·¡¢±¦Â¦¤Î¥­¥ã¥ó¥Ð¥¹¤Ï·Ï¤Î°ÌÁê¶õ´Ö¤Î¥°¥é¥Õ¡Ê³Ñ®Å٤ȳÑÅ٤Ȥò¥×¥í¥Ã¥È¤·¤¿¤â¤Î¡Ë¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£º¸Â¦¤Î¥­¥ã¥ó¥Ð¥¹¾å¤Ç¥¯¥ê¥Ã¥¯¤ª¤è¤Ó¥É¥é¥Ã¥°¤ò¹Ô¤Ã¤Æ¿¶¤ê»Ò¤Î½Å¤ê¤Î°ÌÃÖ¤òÊѤ¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£'
-}
-msg.pack('side'=>'top')
-
-# create frame
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $pendulum_demo
-      $pendulum_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'pendulum'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# animated wave
-class PendulumAnimationDemo
-  def initialize(frame)
-    # Create some structural widgets
-    @pane = TkPanedWindow.new(frame, :orient=>:horizontal).pack(:fill=>:both, :expand=>true)
-#    @pane.add(@lf1 = TkLabelFrame.new(@pane, :text=>'Pendulum Simulation'))
-#    @pane.add(@lf2 = TkLabelFrame.new(@pane, :text=>'Phase Space'))
-    @lf1 = TkLabelFrame.new(@pane, :text=>'Pendulum Simulation')
-    @lf2 = TkLabelFrame.new(@pane, :text=>'Phase Space')
-
-    # Create the canvas containing the graphical representation of the
-    # simulated system.
-    @c = TkCanvas.new(@lf1, :width=>320, :height=>200, :background=>'white', 
-                      :borderwidth=>2, :relief=>:sunken)
-    TkcText.new(@c, 5, 5, :anchor=>:nw, 
-                :text=>'Click to Adjust Bob Start Position')
-    # Coordinates of these items don't matter; they will be set properly below
-    @plate = TkcLine.new(@c, 0, 25, 320, 25, :width=>2, :fill=>'grey50')
-    @rod = TkcLine.new(@c, 1, 1, 1, 1, :width=>3, :fill=>'black')
-    @bob = TkcOval.new(@c, 1, 1, 2, 2, 
-                       :width=>3, :fill=>'yellow', :outline=>'black')
-    TkcOval.new(@c, 155, 20, 165, 30, :fill=>'grey50', :outline=>'')
-
-    # pack
-    @c.pack(:fill=>:both, :expand=>true)
-
-    # Create the canvas containing the phase space graph; this consists of
-    # a line that gets gradually paler as it ages, which is an extremely
-    # effective visual trick.
-    @k = TkCanvas.new(@lf2, :width=>320, :height=>200, :background=>'white', 
-                      :borderwidth=>2, :relief=>:sunken)
-    @y_axis = TkcLine.new(@k, 160, 200, 160, 0, :fill=>'grey75', :arrow=>:last)
-    @x_axis = TkcLine.new(@k, 0, 100, 320, 100, :fill=>'grey75', :arrow=>:last)
-
-    @graph = {}
-    90.step(0, -10){|i|
-      # Coordinates of these items don't matter; 
-      # they will be set properly below
-      @graph[i] = TkcLine.new(@k, 0, 0, 1, 1, :smooth=>true, :fill=>"grey#{i}")
-    }
-
-    # labels
-    @label_theta = TkcText.new(@k, 0, 0, :anchor=>:ne, 
-                               :text=>'q', :font=>'Symbol 8')
-    @label_dtheta = TkcText.new(@k, 0, 0, :anchor=>:ne, 
-                               :text=>'dq', :font=>'Symbol 8')
-
-    # pack
-    @k.pack(:fill=>:both, :expand=>true)
-
-    # Initialize some variables
-    @points = []
-    @theta = 45.0
-    @dTheta = 0.0
-    @length = 150
-
-    # animation loop
-    @timer = TkTimer.new(15){ repeat }
-
-    # binding
-    @c.bindtags_unshift(btag = TkBindTag.new)
-    btag.bind('Destroy'){ @timer.stop }
-    btag.bind('1', proc{|x, y| @timer.stop; showPendulum(x.to_i, y.to_i)}, 
-              '%x %y')
-    btag.bind('B1-Motion', proc{|x, y| showPendulum(x.to_i, y.to_i)}, '%x %y')
-    btag.bind('ButtonRelease-1', 
-              proc{|x, y| showPendulum(x.to_i, y.to_i); @timer.start }, 
-              '%x %y')
-
-    btag.bind('Configure', proc{|w| @plate.coords(0, 25, w.to_i, 25)}, '%w')
-
-    @k.bind('Configure', proc{|h, w| 
-              h = h.to_i
-              w = w.to_i
-              @psh = h/2; 
-              @psw = w/2
-              @x_axis.coords(2, @psh, w-2, @psh)
-              @y_axis.coords(@psw, h-2, @psw, 2)
-              @label_theta.coords(@psw-4, 6)
-              @label_dtheta.coords(w-6, @psh+4)
-            }, '%h %w')
-
-    # add
-    Tk.update
-    @pane.add(@lf1)
-    @pane.add(@lf2)
-
-    # init display
-    showPendulum
-
-    # animation start
-    @timer.start(500)
-  end
-
-  # This procedure makes the pendulum appear at the correct place on the
-  # canvas. If the additional arguments x, y are passed instead of computing 
-  # the position of the pendulum from the length of the pendulum rod and its 
-  # angle, the length and angle are computed in reverse from the given 
-  # location (which is taken to be the centre of the pendulum bob.)
-  def showPendulum(x=nil, y=nil)
-    if x && y && (x != 160 || y != 25)
-      @dTheta = 0.0
-      x2 = x - 160
-      y2 = y - 25
-      @length = Math.hypot(x2, y2)
-      @theta = Math.atan2(x2,y2)*180/Math::PI
-    else
-      angle = @theta*Math::PI/180
-      x = 160 + @length*Math.sin(angle)
-      y = 25 + @length*Math.cos(angle)
-    end
-
-    @rod.coords(160, 25, x, y)
-    @bob.coords(x-15, y-15, x+15, y+15)
-  end
-
-  # Update the phase-space graph according to the current angle and the
-  # rate at which the angle is changing (the first derivative with
-  # respect to time.)
-  def showPhase
-    unless @psw && @psh
-      @psw = @k.width/2
-      @psh = @k.height/2
-    end
-    @points << @theta + @psw << -20*@dTheta + @psh
-    if @points.length > 100
-      @points = @points[-100..-1]
-    end
-    (0...100).step(10){|i|
-      first = - i
-      last = 11 - i
-      last = -1 if last >= 0
-      next if first > last
-      lst = @points[first..last]
-      @graph[i].coords(lst) if lst && lst.length >= 4
-    }
-  end
-
-  # This procedure is the "business" part of the simulation that does
-  # simple numerical integration of the formula for a simple rotational
-  # pendulum.
-  def recomputeAngle
-    scaling = 3000.0/@length/@length
-
-    # To estimate the integration accurately, we really need to
-    # compute the end-point of our time-step.  But to do *that*, we
-    # need to estimate the integration accurately!  So we try this
-    # technique, which is inaccurate, but better than doing it in a
-    # single step.  What we really want is bound up in the
-    # differential equation:
-    #       ..             - sin theta
-    #      theta + theta = -----------
-    #                         length
-    # But my math skills are not good enough to solve this!
-
-    # first estimate
-    firstDDTheta = -Math.sin(@theta * Math::PI/180) * scaling
-    midDTheta = @dTheta + firstDDTheta
-    midTheta = @theta + (@dTheta + midDTheta)/2
-    # second estimate
-    midDDTheta = -Math.sin(midTheta * Math::PI/180) * scaling
-    midDTheta = @dTheta + (firstDDTheta + midDDTheta)/2
-    midTheta = @theta + (@dTheta + midDTheta)/2
-    # Now we do a double-estimate approach for getting the final value
-    # first estimate
-    midDDTheta = -Math.sin(midTheta * Math::PI/180) * scaling
-    lastDTheta = midDTheta + midDDTheta
-    lastTheta = midTheta + (midDTheta+ lastDTheta)/2
-    # second estimate
-    lastDDTheta = -Math.sin(lastTheta * Math::PI/180) * scaling
-    lastDTheta = midDTheta + (midDDTheta + lastDDTheta)/2
-    lastTheta = midTheta + (midDTheta + lastDTheta)/2
-    # Now put the values back in our globals
-    @dTheta = lastDTheta
-    @theta = lastTheta
-  end
-
-  # This method ties together the simulation engine and the graphical
-  # display code that visualizes it.
-  def repeat
-    # Simulate
-    recomputeAngle
-
-    # Update the display
-    showPendulum
-    showPhase
-  end
-end
-
-# Start the animation processing
-PendulumAnimationDemo.new(base_frame)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/plot.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/plot.rb
deleted file mode 100644 (file)
index 9ff7190..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# 2-D plot widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($plot_demo) && $plot_demo
-  $plot_demo.destroy 
-  $plot_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$plot_demo = TkToplevel.new {|w|
-  title("Plot Demonstration")
-  iconname("Plot")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($plot_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'4i', 'justify'=>'left', 
-            'text'=>"¤³¤Î¥¦¥£¥ó¥É¥¦¤Ï´Êñ¤Ê2¼¡¸µ¤Î¥×¥í¥Ã¥È¤ò´Þ¤ó¤À¥­¥ã¥ó¥Ð¥¹ widget¤Ç¤¹¡£É½¼¨¤µ¤ì¤¿ÅÀ¤ò¥Þ¥¦¥¹¥Ü¥¿¥ó1¤Ç¥É¥é¥Ã¥°¤·¤Æ¥Ç¡¼¥¿¤ò¤¤¤¸¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£"){
-  pack('side'=>'top')
-}
-
-# frame À¸À®
-$plot_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $plot_demo
-      $plot_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'plot'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$plot_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# font ÀßÄê
-  if $tk_version =~ /^4.*/
-    plotFont = '-*-Helvetica-Medium-R-Normal--*-180-*-*-*-*-*-*'
-  else
-    font = 'Helvetica 18'
-  end
-
-# canvas ÀßÄê
-$plot_canvas = TkCanvas.new(base_frame,'relief'=>'raised','width'=>450,'height'=>300)
-$plot_canvas.pack('side'=>'top', 'fill'=>'x')
-
-# plot À¸À®
-TkcLine.new($plot_canvas, 100, 250, 400, 250, 'width'=>2)
-TkcLine.new($plot_canvas, 100, 250, 100,  50, 'width'=>2)
-TkcText.new($plot_canvas, 225, 20, 
-            'text'=>"´Êñ¤Ê¥×¥í¥Ã¥È", 'font'=>plotFont, 'fill'=>'brown')
-
-(0..10).each {|i|
-  x = 100 + (i * 30)
-  TkcLine.new($plot_canvas, x, 250, x, 245, 'width'=>2)
-  TkcText.new($plot_canvas, x, 254, 
-              'text'=>10*i, 'font'=>plotFont, 'anchor'=>'n')
-}
-(0..5).each {|i|
-  y = 250 - (i * 40)
-  TkcLine.new($plot_canvas, 100, y, 105, y, 'width'=>2)
-  TkcText.new($plot_canvas, 96, y, 
-              'text'=>"#{i*50}.0", 'font'=>plotFont, 'anchor'=>'e')
-}
-
-for xx, yy in [[12,56],[20,94],[33,98],[32,120],[61,180],[75,160],[98,223]]
-  x = 100 + (3*xx)
-  y = 250 - (4*yy)/5
-  item = TkcOval.new($plot_canvas, x-6, y-6, x+6, y+6, 
-                     'width'=>1, 'outline'=>'black', 'fill'=>'SkyBlue2')
-  item.addtag 'point'
-end
-
-$plot_canvas.itembind('point', 'Any-Enter', 
-                      proc{$plot_canvas.itemconfigure 'current','fill','red'})
-$plot_canvas.itembind('point', 'Any-Leave', 
-                      proc{$plot_canvas.itemconfigure 'current','fill','SkyBlue2'})
-$plot_canvas.itembind('point', '1', 
-                      proc{|x,y| plotDown $plot_canvas,x,y}, "%x %y")
-$plot_canvas.itembind('point', 'ButtonRelease-1', 
-                      proc{$plot_canvas.dtag 'selected'})
-$plot_canvas.bind('B1-Motion', 
-                  proc{|x,y| plotMove $plot_canvas,x,y}, "%x %y")
-
-$plot = {'lastX'=>0, 'lastY'=>0}
-
-# plotDown --
-# This method is invoked when the mouse is pressed over one of the 
-# data points.  It sets up state to allow the point to be dragged.
-#
-# Arguments:
-# w -           The canvas window.
-# x, y -        The coordinates of the mouse press.
-
-def plotDown (w, x, y)
-  w.dtag 'selected'
-  w.addtag_withtag 'selected', 'current'
-  w.raise 'current'
-  $plot['lastX'] = x
-  $plot['lastY'] = y
-end
-
-# plotMove --
-# This method is invoked during mouse motion events.  It drags the
-# current item.
-#
-# Arguments:
-# w -           The canvas window.
-# x, y -        The coordinates of the mouse.
-
-def plotMove (w, x, y)
-  w.move 'selected', x - $plot['lastX'], y - $plot['lastY']
-  $plot['lastX'] = x
-  $plot['lastY'] = y
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/puzzle.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/puzzle.rb
deleted file mode 100644 (file)
index 2febc2c..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# widet demo 'puzzle' (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($puzzle_demo) && $puzzle_demo
-  $puzzle_demo.destroy 
-  $puzzle_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$puzzle_demo = TkToplevel.new {|w|
-  title("15-Puzzle Demonstration")
-  iconname("15-Puzzle")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($puzzle_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "²¼¤Î15-¥Ñ¥º¥ë¤Ï¥Ü¥¿¥ó¤ò½¸¤á¤Æ¤Ç¤­¤Æ¤¤¤Þ¤¹¡£¶õ¤¤¤Æ¤¤¤ë½ê¤ÎÎ٤Υԡ¼¥¹¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¤½¤Î¥Ô¡¼¥¹¤¬¤½¤Î¶õ¤¤¤Æ¤¤¤ë¾ì½ê¤Ë¥¹¥é¥¤¥É¤·¤Þ¤¹¡£¤³¤ÎÁàºî¤ò³¤±¡¢¥Ô¡¼¥¹¤¬¤½¤Î¿ô¤Î½ç¤Ë¾å¤«¤é²¼¡¢º¸¤«¤é±¦¤Ëʤ֤褦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£"
-}
-msg.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $puzzle_demo
-      $puzzle_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'puzzle'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame À¸À®
-#
-# Special trick: scrollbar widget ¤òÀ¸À®¤·¤Æ¤½¤Î trough color ¤òÍѤ¤¤ë¤³¤È¤Ç
-#                ¶õÇòÉôʬ¤Î¤¿¤á¤Î°Å¿§¤òÁªÂò¤·¡¤ÀßÄꤹ¤ë 
-#
-begin
-  if Tk.windowingsystem() == 'aqua'
-    frameWidth  = 168
-    frameHeight = 168
-  elsif Tk.default_widget_set == :Ttk
-    frameWidth  = 148
-    frameHeight = 124
-  else
-    frameWidth  = 120
-    frameHeight = 120
-  end
-rescue
-  frameWidth  = 120
-  frameHeight = 120
-end
-
-# depend_on_button_width = true
-depend_on_button_width = false
-s = TkScrollbar.new(base_frame)
-base = TkFrame.new(base_frame) {
-  width  frameWidth
-  height frameHeight
-  borderwidth 2
-  relief 'sunken'
-  bg s['troughcolor']
-}
-s.destroy
-base.pack('side'=>'top', 'padx'=>'1c', 'pady'=>'1c')
-
-# proc ¤Î¥¹¥³¡¼¥×¤òÊĤ¸¤ë¤¿¤á¡¤proc À¸À®¥á¥½¥Ã¥É¤òÍÑ°Õ
-# ¤³¤¦¤·¤Æ¤ª¤«¤Í¤Ð¡¤¥ë¡¼¥×Ãæ¤ÇÃͤ¬ÊѲ½¤¹¤ë num ¤Î±Æ¶Á¤ò¼õ¤±¤Æ
-# puzzleSwitch ¤ÎÂè 2 °ú¿ô¤¬ÊѲ½¤·¤Æ¤·¤Þ¤¤¡¤´üÂÔÄ̤ê¤Ë¤Ï¤Ê¤é¤Ê¤¤¡¥
-def def_puzzleswitch_proc(w, num)
-  proc{puzzleSwitch w, num}
-end
-
-$xpos = {}
-$ypos = {}
-order = [3,1,6,2,5,7,15,13,4,11,8,9,14,10,12]
-(0..14).each{|i|
-  num = order[i]
-  $xpos[num] = (i % 4) * 0.25
-  $ypos[num] = (i / 4) * 0.25
-  TkButton.new(base) {|w|
-    relief 'raised'
-    text num
-    highlightthickness 0
-    command def_puzzleswitch_proc(w, num)
-    if depend_on_button_width && (w.winfo_reqwidth * 4 > base.width)
-      base.width = w.winfo_reqwidth * 4
-    end
-  }.place('relx'=>$xpos[num], 'rely'=>$ypos[num], 
-          'relwidth'=>0.25, 'relheight'=>0.25)
-}
-$xpos['space'] = 0.75
-$ypos['space'] = 0.75
-
-############
-def puzzleSwitch(w, num)
-  if ( ($ypos[num] >= ($ypos['space'] - 0.01))     \
-      && ($ypos[num] <= ($ypos['space'] + 0.01))   \
-      && ($xpos[num] >= ($xpos['space'] - 0.26))   \
-      && ($xpos[num] <= ($xpos['space'] + 0.26)))  \
-    || (($xpos[num] >= ($xpos['space'] - 0.01))    \
-        && ($xpos[num] <= ($xpos['space'] + 0.01)) \
-        && ($ypos[num] >= ($ypos['space'] - 0.26)) \
-        && ($ypos[num] <= ($ypos['space'] + 0.26)))
-    tmp = $xpos['space']
-    $xpos['space'] = $xpos[num]
-    $xpos[num] = tmp
-    tmp = $ypos['space']
-    $ypos['space'] = $ypos[num]
-    $ypos[num] = tmp
-    w.place('relx'=>$xpos[num], 'rely'=>$ypos[num])
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/radio.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/radio.rb
deleted file mode 100644 (file)
index a61ad46..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# radiobutton widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($radio_demo) && $radio_demo
-  $radio_demo.destroy 
-  $radio_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$radio_demo = TkToplevel.new {|w|
-  title("Radiobutton Demonstration")
-  iconname("radio")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($radio_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "²¼¤Ë¤Ï2¤Ä¤Î¥é¥¸¥ª¥Ü¥¿¥ó¥°¥ë¡¼¥×¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¤½¤Î¥Ü¥¿¥ó¤À¤±¤¬¤½¤Î¥°¥ë¡¼¥×¤ÎÃæ¤ÇÁªÂò¤µ¤ì¤Þ¤¹¡£³Æ¥°¥ë¡¼¥×¤ËÂФ·¤Æ¤½¤Î¥°¥ë¡¼¥×¤ÎÃæ¤Î¤É¤Î¥Ü¥¿¥ó¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë¤«¤ò¼¨¤¹ÊÑ¿ô¤¬³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤Þ¤¹¡£¸½ºß¤ÎÊÑ¿ô¤ÎÃͤò¸«¤ë¤Ë¤Ï¡ÖÊÑ¿ô»²¾È¡×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£"
-}
-msg.pack('side'=>'top')
-
-# ÊÑ¿ôÀ¸À®
-size = TkVariable.new
-color = TkVariable.new
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $radio_demo
-      $radio_demo = nil
-      $showVarsWin[tmppath.path] = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'radio'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'ÊÑ¿ô»²¾È'
-    command proc{
-      showVars(base_frame, ['size', size], ['color', color])
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame À¸À®
-f_left = TkFrame.new(base_frame)
-f_right = TkFrame.new(base_frame)
-f_left.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
-f_right.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
-
-# radiobutton À¸À®
-[10, 12, 18, 24].each {|sz|
-  TkRadioButton.new(f_left) {
-    text "¥Ý¥¤¥ó¥È¥µ¥¤¥º #{sz}"
-    variable size
-    relief 'flat'
-    value sz
-  }.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w')
-}
-
-['ÀÖ', 'ÎÐ', 'ÀÄ', '²«', 'Üô', '»ç'].each {|col|
-  TkRadioButton.new(f_right) {
-    text col
-    variable color
-    relief 'flat'
-    value col.downcase
-  }.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w')
-}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/radio2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/radio2.rb
deleted file mode 100644 (file)
index cf53e3e..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# radio2.rb
-#
-# This demonstration script creates a toplevel window containing
-# several radiobutton widgets.
-#
-# radiobutton widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($radio2_demo) && $radio2_demo
-  $radio2_demo.destroy 
-  $radio2_demo = nil
-end
-
-# demo toplevel widget
-$radio2_demo = TkToplevel.new {|w|
-  title("Radiobutton Demonstration 2")
-  iconname("radio2")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($radio2_demo).pack(:fill=>:both, :expand=>true)
-
-# label 
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '5i'
-  justify 'left'
-  text "²¼¤Ë¤Ï3¤Ä¤Î¥é¥¸¥ª¥Ü¥¿¥ó¥°¥ë¡¼¥×¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¤½¤Î¥Ü¥¿¥ó¤À¤±¤¬¤½¤Î¥°¥ë¡¼¥×¤ÎÃæ¤ÇÁªÂò¤µ¤ì¤Þ¤¹¡£³Æ¥°¥ë¡¼¥×¤ËÂФ·¤Æ¤½¤Î¥°¥ë¡¼¥×¤ÎÃæ¤Î¤É¤Î¥Ü¥¿¥ó¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë¤«¤ò¼¨¤¹ÊÑ¿ô¤¬³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤Þ¤¹¡£¸½ºß¤ÎÊÑ¿ô¤ÎÃͤò¸«¤ë¤Ë¤Ï¡ÖÊÑ¿ô»²¾È¡×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£"
-}
-msg.pack('side'=>'top')
-
-# 
-size = TkVariable.new
-color = TkVariable.new
-align = TkVariable.new
-
-# frame 
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $radio2_demo
-      $radio2_demo = nil
-      $showVarsWin[tmppath.path] = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'radio2'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text 'ÊÑ¿ô»²¾È'
-    command proc{
-      showVars(base_frame, 
-               ['size', size], ['color', color], ['compound', align])
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame 
-f_left  = TkLabelFrame.new(base_frame, 'text'=>'ʸ»ú¥µ¥¤¥º', 
-                           'pady'=>2, 'padx'=>2)
-f_mid   = TkLabelFrame.new(base_frame, 'text'=>'¿§', 
-                           'pady'=>2, 'padx'=>2)
-f_right = TkLabelFrame.new(base_frame, 'text'=>'¥Ó¥Ã¥È¥Þ¥Ã¥×ÇÛÃÖ', 
-                           'pady'=>2, 'padx'=>2)
-f_left.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
-f_mid.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
-f_right.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
-
-# radiobutton 
-[10, 12, 18, 24].each {|sz|
-  TkRadioButton.new(f_left) {
-    text "¥Ý¥¤¥ó¥È¥µ¥¤¥º #{sz}"
-    variable size
-    relief 'flat'
-    value sz
-  }.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w', 'fill'=>'x')
-}
-
-['ÀÖ', 'ÎÐ', 'ÀÄ', '²«', 'Üô', '»ç'].each {|col|
-  TkRadioButton.new(f_mid) {
-    text col
-    variable color
-    relief 'flat'
-    value col.downcase
-    anchor 'w'
-  }.pack('side'=>'top', 'pady'=>2, 'fill'=>'x')
-}
-
-# label = TkLabel.new(f_right, 'text'=>'¥é¥Ù¥ë', 'bitmap'=>'questhead', 
-label = Tk::Label.new(f_right, 'text'=>'¥é¥Ù¥ë', 'bitmap'=>'questhead', 
-                    'compound'=>'left')
-label.configure('width'=>TkWinfo.reqwidth(label), 'compound'=>'top')
-label.height(TkWinfo.reqheight(label))
-abtn = ['Top', 'Left', 'Right', 'Bottom'].collect{|a|
-  lower = a.downcase
-  TkRadioButton.new(f_right, 'text'=>a, 'variable'=>align, 'relief'=>'flat', 
-                    'value'=>lower, 'indicatoron'=>0, 'width'=>7, 
-                    'command'=>proc{label.compound(align.value)})
-}
-
-Tk.grid('x', abtn[0])
-Tk.grid(abtn[1], label, abtn[2])
-Tk.grid('x', abtn[3])
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/radio3.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/radio3.rb
deleted file mode 100644 (file)
index 4bbc1b3..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# radio3.rb
-#
-# This demonstration script creates a toplevel window containing
-# several radiobutton widgets.
-#
-# radiobutton widget demo (called by 'widget')
-#
-
-# toplevel widget
-if defined?($radio3_demo) && $radio3_demo
-  $radio3_demo.destroy 
-  $radio3_demo = nil
-end
-
-# demo toplevel widget
-$radio3_demo = TkToplevel.new {|w|
-  title("Radiobutton Demonstration 3")
-  iconname("radio3")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($radio3_demo).pack(:fill=>:both, :expand=>true)
-
-# label 
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '5i'
-  justify 'left'
-  text '²¼¤Ë¤Ï3¤Ä¤Î¥é¥¸¥ª¥Ü¥¿¥ó¥°¥ë¡¼¥×¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¤½¤Î¥°¥ë¡¼¥×¤Ë°¤¹¤ë¤¹¤Ù¤Æ¤Î¥Ü¥¿¥ó¤ÎÃæ¤Ç¥¯¥ê¥Ã¥¯¤·¤¿¥Ü¥¿¥ó¤À¤±¤¬ÁªÂò¤µ¤ì¤¿¾õÂ֤ˤʤê¤Þ¤¹¡£³Æ¥°¥ë¡¼¥×¤Ë¤Ï¡¢¤½¤Î¥°¥ë¡¼¥×¤ÎÃæ¤Î¤É¤Î¥Ü¥¿¥ó¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë¤«¤ò¼¨¤¹ÊÑ¿ô¤¬³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤Þ¤¹¡£¡Ö¥È¥é¥¤¥¹¥Æ¡¼¥È¡×¥Ü¥¿¥ó¤¬²¡¤µ¤ì¤¿¤È¤­¤Ë¤Ï¡¢¥é¥¸¥ª¥Ü¥¿¥ó¤Îɽ¼¨¤¬¥È¥é¥¤¥¹¥Æ¡¼¥È¥â¡¼¥É¤Ë¤Ê¤ê¤Þ¤¹¡£¤¤¤º¤ì¤«¤Î¥Ü¥¿¥ó¤òÁªÂò¤¹¤ì¤Ð¡¢¥Ü¥¿¥ó¤Î¾õÂ֤ϸµ¤Î¤è¤¦¤Ë¸Ä¡¹¤Î¥Ü¥¿¥ó¤Îon/off¾õÂÖ¤ò¼¨¤¹¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¸½ºß¤ÎÊÑ¿ô¤ÎÃͤò¸«¤ë¤Ë¤Ï¡ÖÊÑ¿ô»²¾È¡×¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£'
-}
-msg.grid(:row=>0, :column=>0, :columnspan=>3, :sticky=>'nsew')
-
-# variable
-size = TkVariable.new
-color = TkVariable.new
-align = TkVariable.new
-
-# frame 
-TkFrame.new(base_frame) {|frame|
-  TkGrid(TkFrame.new(frame, :height=>2, :relief=>:sunken, :bd=>2), 
-         :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         TkButton.new(frame, :text=>'ÊÑ¿ô»²¾È', 
-                      :image=>$image['view'], :compound=>:left, 
-                      :command=>proc{
-                        showVars(base_frame, ['size', size], 
-                                 ['color', color], ['compound', align])
-                      }), 
-         TkButton.new(frame, :text=>'¥³¡¼¥É»²¾È', 
-                      :image=>$image['view'], :compound=>:left, 
-                      :command=>proc{showCode 'radio3'}), 
-         TkButton.new(frame, :text=>'ÊĤ¸¤ë', 
-                      :image=>$image['delete'], :compound=>:left, 
-                      :command=>proc{
-                        tmppath = $radio3_demo
-                        $radio3_demo = nil
-                        $showVarsWin[tmppath.path] = nil
-                        tmppath.destroy
-                      }), 
-         :padx=>4, :pady=>4)
-  frame.grid_columnconfigure(0, :weight=>1)
-  TkGrid(frame, :row=>3, :column=>0, :columnspan=>3, :sticky=>'nsew')
-}
-
-# frame 
-f_left  = TkLabelFrame.new(base_frame, 'text'=>'ʸ»ú¥µ¥¤¥º', 
-                           'pady'=>2, 'padx'=>2)
-f_mid   = TkLabelFrame.new(base_frame, 'text'=>'¿§', 
-                           'pady'=>2, 'padx'=>2)
-f_right = TkLabelFrame.new(base_frame, 'text'=>'¥Ó¥Ã¥È¥Þ¥Ã¥×ÇÛÃÖ', 
-                           'pady'=>2, 'padx'=>2)
-f_left .grid('column'=>0, 'row'=>1, 'pady'=>'.5c', 'padx'=>'.5c', 'rowspan'=>2)
-f_mid  .grid('column'=>1, 'row'=>1, 'pady'=>'.5c', 'padx'=>'.5c', 'rowspan'=>2)
-f_right.grid('column'=>2, 'row'=>1, 'pady'=>'.5c', 'padx'=>'.5c')
-
-TkButton.new(base_frame, 'text'=>'¥È¥é¥¤¥¹¥Æ¡¼¥È', 
-             'command'=>proc{size.value = 'multi'; color.value = 'multi'}){
-  grid('column'=>2, 'row'=>2, 'pady'=>'.5c', 'padx'=>'.5c')
-}
-
-# radiobutton 
-[10, 12, 14, 18, 24].each {|sz|
-  TkRadioButton.new(f_left) {
-    text "¥Ý¥¤¥ó¥È¥µ¥¤¥º #{sz}"
-    variable size
-    relief 'flat'
-    value sz
-    tristatevalue 'multi'
-  }.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w', 'fill'=>'x')
-}
-
-['Red', 'Green', 'Blue', 'Yellow', 'Orange', 'Purple'].each {|col|
-  TkRadioButton.new(f_mid) {
-    text col
-    variable color
-    relief 'flat'
-    value col.downcase
-    anchor 'w'
-    tristatevalue 'multi'
-    command proc{f_mid.fg(color.value)}
-  }.pack('side'=>'top', 'pady'=>2, 'fill'=>'x')
-}
-
-# label = TkLabel.new(f_right, 'text'=>'¥é¥Ù¥ë', 'bitmap'=>'questhead', 
-label = Tk::Label.new(f_right, 'text'=>'¥é¥Ù¥ë', 'bitmap'=>'questhead', 
-                    'compound'=>'left')
-label.configure('width'=>TkWinfo.reqwidth(label), 'compound'=>'top')
-label.height(TkWinfo.reqheight(label))
-a_btn = ['Top', 'Left', 'Right', 'Bottom'].collect{|a|
-  TkRadioButton.new(f_right, 'text'=>a, 'variable'=>align, 'relief'=>'flat', 
-                    'value'=>a.downcase, 'indicatoron'=>0, 'width'=>7, 
-                    'command'=>proc{label.compound(align.value)})
-}
-
-Tk.grid('x', a_btn[0])
-Tk.grid(a_btn[1], label, a_btn[2])
-Tk.grid('x', a_btn[3])
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/rmt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/rmt
deleted file mode 100644 (file)
index 73f6311..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-#!/usr/bin/env ruby
-
-# rmt -- 
-# This script implements a simple remote-control mechanism for 
-# Tk applications.  It allows you to select an application and 
-# then type commands to that application. 
-
-require 'tk'
-
-class Rmt
-  def initialize(parent=nil)
-    win = self
-
-    unless parent
-      parent = TkRoot.new
-    end
-    root = TkWinfo.toplevel(parent)
-    root.minsize(1,1)
-
-    # The instance variable below keeps track of the remote application 
-    # that we're sending to.  If it's an empty string then we execute 
-    # the commands locally. 
-    @app = 'local'
-    @mode = 'Ruby'
-
-    # The instance variable below keeps track of whether we're in the 
-    # middle of executing a command entered via the text. 
-    @executing = 0
-
-    # The instance variable below keeps track of the last command executed, 
-    # so it can be re-executed in response to !! commands. 
-    @lastCommand = ""
-
-    # Create menu bar.  Arrange to recreate all the information in the 
-    # applications sub-menu whenever it is cascaded to. 
-
-    TkFrame.new(root, 'relief'=>'raised', 'bd'=>2) {|f|
-      pack('side'=>'top', 'fill'=>'x')
-      TkMenubutton.new(f, 'text'=>'File', 'underline'=>0) {|mb|
-       TkMenu.new(mb) {|mf|
-         mb.menu(mf)
-         TkMenu.new(mf) {|ma| 
-           postcommand proc{win.fillAppsMenu ma}
-           mf.add('cascade', 'label'=>'Select Application', 
-                  'menu'=>ma, 'underline'=>0)
-         }
-         add('command', 'label'=>'Quit', 
-             'command'=>proc{root.destroy}, 'underline'=>0)
-       }
-       pack('side'=>'left')
-      }
-    }
-
-    # Create text window and scrollbar. 
-
-    @txt = TkText.new(root, 'relief'=>'sunken', 'bd'=>2, 'setgrid'=>true) {
-      yscrollbar(TkScrollbar.new(root){pack('side'=>'right', 'fill'=>'y')})
-      pack('side'=>'left')
-    }
-
-    @promptEnd = TkTextMark.new(@txt, 'insert')
-
-    # Create a binding to forward commands to the target application, 
-    # plus modify many of the built-in bindings so that only information 
-    # in the current command can be deleted (can still set the cursor 
-    # earlier in the text and select and insert;  just can't delete).
-
-    @txt.bindtags([@txt, TkText, root, 'all'])
-    @txt.bind('Return', proc{
-               @txt.set_insert('end - 1c')
-               @txt.insert('insert', "\n")
-               win.invoke
-               Tk.callback_break
-             })
-    @txt.bind('Delete', proc{
-               begin
-                 @txt.tag_remove('sel', 'sel.first', @promptEnd)
-               rescue
-               end
-               if @txt.tag_nextrange('sel', '1.0', 'end') == []
-                 if @txt.compare('insert', '<', @promptEnd)
-                   Tk.callback_break
-                 end
-               end
-             })
-    @txt.bind('BackSpace', proc{
-               begin
-                 @txt.tag_remove('sel', 'sel.first', @promptEnd)
-               rescue
-               end
-               if @txt.tag_nextrange('sel', '1.0', 'end') == []
-                 if @txt.compare('insert', '<', @promptEnd)
-                   Tk.callback_break
-                 end
-               end
-             })
-    @txt.bind('Control-d', proc{
-               if @txt.compare('insert', '<', @promptEnd)
-                 Tk.callback_break
-               end
-             })
-    @txt.bind('Control-k', proc{
-               if @txt.compare('insert', '<', @promptEnd)
-                 @txt.set_insert(@promptEnd)
-               end
-             })
-    @txt.bind('Control-t', proc{
-               if @txt.compare('insert', '<', @promptEnd)
-                 Tk.callback_break
-               end
-             })
-    @txt.bind('Meta-d', proc{
-               if @txt.compare('insert', '<', @promptEnd)
-                 Tk.callback_break
-               end
-             })
-    @txt.bind('Meta-BackSpace', proc{
-               if @txt.compare('insert', '<=', @promptEnd)
-                 Tk.callback_break
-               end
-             })
-    @txt.bind('Control-h', proc{
-               if @txt.compare('insert', '<=', @promptEnd)
-                 Tk.callback_break
-               end
-             })
-
-    @txt.tag_configure('bold', 'font'=>['Courier', 12, 'bold'])
-
-    @app = Tk.appname('rmt')
-    if (@app =~ /^rmt(.*)$/)
-      root.title("Tk Remote Controller#{$1}")
-      root.iconname("Tk Remote#{$1}")
-    end
-    prompt
-    @txt.focus
-    #@app = TkWinfo.appname(TkRoot.new)
-  end
-
-  def tkTextInsert(w,s)
-    return if s == ""
-    begin
-      if w.compare('sel.first','<=','insert') \
-       && w.compare('sel.last','>=','insert')
-       w.tag_remove('sel', 'sel.first', @promptEnd)
-       w.delete('sel.first', 'sel.last')
-      end
-    rescue
-    end
-    w.insert('insert', s)
-    w.see('insert')
-  end
-
-  # The method below is used to print out a prompt at the 
-  # insertion point (which should be at the beginning of a line 
-  # right now).
-
-  def prompt
-    @txt.insert('insert', "#{@app}: ")
-    @promptEnd.set('insert')
-    @promptEnd.gravity = 'left'
-    @txt.tag_add('bold', "#{@promptEnd.path} linestart", @promptEnd)
-  end
-
-  # The method below executes a command (it takes everything on the 
-  # current line after the prompt and either sends it to the remote 
-  # application or executes it locally, depending on "app".
-
-  def invoke
-    cmd = @txt.get(@promptEnd, 'insert')
-    @executing += 1
-    case (@mode)
-    when 'Tcl'
-      if Tk.info('complete', cmd)
-       if (cmd == "!!\n")
-         cmd = @lastCommand
-       else
-         @lastCommand = cmd
-       end
-       begin
-         msg = Tk.appsend(@app, false, cmd)
-       rescue
-         msg = "Error: #{$!}"
-       end
-       @txt.insert('insert', msg + "\n") if msg != ""
-       prompt
-       @promptEnd.set('insert')
-      end
-
-    when 'Ruby'
-      if (cmd == "!!\n")
-       cmd = @lastCommand
-      end
-      complete = true
-      begin
-       eval("proc{#{cmd}}")
-      rescue
-       complete = false
-      end
-      if complete
-       @lastCommand = cmd
-       begin
-#        msg = Tk.appsend(@app, false, 
-#                         'ruby', 
-#                         '"(' + cmd.gsub(/[][$"]/, '\\\\\&') + ').to_s"')
-         msg = Tk.rb_appsend(@app, false, cmd)
-       rescue
-         msg = "Error: #{$!}"
-       end
-       @txt.insert('insert', msg + "\n") if msg != ""
-       prompt
-       @promptEnd.set('insert')
-      end
-    end
-
-    @executing -= 1
-    @txt.yview_pickplace('insert')
-  end
-
-  # The following method is invoked to change the application that
-  # we're talking to.  It also updates the prompt for the current 
-  # command, unless we're in the middle of executing a command from 
-  # the text item (in which case a new prompt is about to be output 
-  # so there's no need to change the old one). 
-
-  def newApp(appName, mode)
-    @app = appName
-    @mode = mode
-    if @executing == 0
-      @promptEnd.gravity = 'right'
-      @txt.delete("#{@promptEnd.path} linestart", @promptEnd)
-      @txt.insert(@promptEnd, "#{appName}: ")
-      @txt.tag_add('bold', "#{@promptEnd.path} linestart", @promptEnd)
-      @promptEnd.gravity = 'left'
-    end
-  end
-
-  # The method below will fill in the applications sub-menu with a list
-  # of all the applications that currently exist. 
-
-  def fillAppsMenu(menu)
-    win = self
-    begin
-      menu.delete(0,'last')
-    rescue
-    end
-    TkWinfo.interps.sort.each{|ip|
-      begin
-       if Tk.appsend(ip, false, 'info commands ruby') == ""
-         mode = 'Tcl'
-       else
-         mode = 'Ruby'
-       end
-       menu.add('command', 'label'=>format("%s    (#{mode}/Tk)", ip), 
-                'command'=>proc{win.newApp ip, mode})
-      rescue
-       menu.add('command', 'label'=>format("%s (unknown Tk)", ip), 
-                'command'=>proc{win.newApp ip, mode}, 'state'=>'disabled')
-      end
-    }
-    menu.add('command', 'label'=>format("local    (Ruby/Tk)"), 
-            'command'=>proc{win.newApp 'local', 'Ruby'})
-  end
-end
-
-Rmt.new
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/rolodex b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/rolodex
deleted file mode 100644 (file)
index 9f87ae2..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-#!/usr/bin/env ruby
-#
-# rolodex --
-# This script is a part of Tom LaStrange's rolodex
-# 
-# Copyright (C) 1998 by Takaaki Tateishi <ttate@jaist.ac.jp>
-# Time-stamp: "03/08/02 12:45:21 nagai"
-#
-
-require "tk"
-
-
-def show_help(topic,x=0,y=0)
-  if( topic.is_a?(TkWindow) )
-    w = TkWinfo.containing(x,y)
-    if( TkWinfo.exist?(w) )
-      topic = w
-    end
-  end
-  
-  if( $helpTopics.include?(topic) )
-    msg = $helpTopics[topic]
-  else
-    msg = "Sorry, but no help is available for this topic"
-  end
-  TkDialog.new("title"=>"Rolodex Help",
-              "message"=>"Information on #{topic}:\n\n#{msg}",
-              "default_button"=>0,
-              "buttons"=>["OK"])
-end
-
-def fillCard
-  clearAction
-  $root.frame.entry[1].insert(0,"Takaaki Tateishi")
-  $root.frame.entry[2].insert(0,"Japan Advanced Institute of Science and Techonology")
-  $root.frame.entry[3].insert(0,"1-1 Asahidai, Tatsunokuchi")
-  $root.frame.entry[4].insert(0,"Ishikawa 923-1292, Japan")
-  $root.frame.entry[5].insert(0,"private")
-    $root.frame.entry[6].insert(0,"***-***-****")
-  $root.frame.entry[7].insert(0,"***-***-****")
-end
-
-def addAction
-  for i in 1..7
-    STDERR.print format("%-12s %s\n",
-                       RolodexFrame::LABEL[i],
-                       $root.frame.entry[i].value)
-  end
-end
-
-def clearAction
-  for i in 1..7
-    $root.frame.entry[i].delete(0,"end")
-  end
-end
-
-def fileAction
-  TkDialog.new("title"=>"File Selection",
-              "message"=>"This is a dummy file selection dialog box.\n",
-              "default_button"=>0,
-              "buttons"=>["OK"])
-  STDERR.print "dummy file name\n"
-end
-
-def deleteAction
-  result = TkDialog.new("title"=>"Confirm Action",
-                       "message"=>"Are you sure?",
-                       "default_button"=>0,
-                       "buttons"=>["Cancel"])
-  if( result.value == 0 )
-    clearAction
-  end
-end
-
-
-class RolodexFrame < TkFrame
-  attr_reader :entry, :label
-
-  LABEL = ["","Name:","Address:","","","Home Phone:","Work Phone:","Fax:"]
-
-  def initialize(parent=nil,keys=nil)
-    super(parent,keys)
-    self["relief"] = "flat"
-    
-    @i = []
-    @label = []
-    @entry = []
-    for i in 1..7
-      @i[i] = TkFrame.new(self)
-      @i[i].pack("side"=>"top",
-                "pady"=>2,
-                "anchor"=>"e")
-      @label[i] = TkLabel.new(@i[i],
-                             "text"=>LABEL[i],
-                             "anchor"=>"e")
-      @entry[i] = TkEntry.new(@i[i],
-                             "width"=>30,
-                             "relief"=>"sunken")
-      @entry[i].pack("side"=>"right")
-      @label[i].pack("side"=>"right")
-    end
-  end
-end
-
-class RolodexButtons < TkFrame
-  attr_reader :clear, :add, :search, :delete
-
-  def initialize(parent,keys=nil)
-    super(parent,keys)
-    @clear = TkButton.new(self,
-                         "text" => "Clear")
-    @add = TkButton.new(self,
-                       "text" => "Add")
-    @search = TkButton.new(self,
-                          "text" => "Search")
-    @delete = TkButton.new(self,
-                          "text" => "Delete")
-    for w in [@clear,@add,@search,@delete]
-      w.pack("side"=>"left", "padx"=>2)
-    end
-  end
-end
-
-class RolodexMenuFrame < TkFrame
-  attr_reader :file_menu, :help_menu, :file, :help
-
-  def initialize(parent,keys=nil)
-    super(parent,keys)
-    configure("relief"=>"raised",
-             "borderwidth"=>1)
-
-    @file = TkMenubutton.new(self,
-                            "text"=>"File",
-                            "underline"=>0)
-    @file_menu = TkMenu.new(@file)
-    @file_menu.add("command",
-                  "label" => "Load ...",
-                  "command" => proc{fileAction},
-                  "underline" => 0)
-    @file_menu.add("command",
-                  "label" => "Exit",
-                  "command" => proc{$root.destroy},
-                  "underline" => 0)
-    @file.menu(@file_menu)
-    @file.pack("side"=>"left")
-
-    @help = TkMenubutton.new(self,
-                            "text"=>"Help",
-                            "underline"=>0)
-    @help_menu = TkMenu.new(@help)
-    @help_menu.add("command",
-                  "label"=>"On Context...",
-                  "command"=>proc{show_help("context")},
-                  "underline"=>3)
-    @help_menu.add("command",
-                  "label"=>"On Help...",
-                  "command"=>proc{show_help("help")},
-                  "underline"=>3)
-    @help_menu.add("command",
-                  "label"=>"On Window...",
-                  "command"=>proc{show_help("window")},
-                  "underline"=>3)
-    @help_menu.add("command",
-                  "label"=>"On Keys...",
-                  "command"=>proc{show_help("keys")},
-                  "underline"=>3)
-    @help_menu.add("command",
-                  "label"=>"On version...",
-                  "command"=>proc{show_help("version")},
-                  "underline"=>3)
-    @help.menu(@help_menu)
-    @help.pack("side"=>"right")
-  end
-end
-
-class Rolodex < TkRoot
-  attr_reader :frame, :buttons, :menu
-
-  def initialize(*args)
-    super(*args)
-    @frame = RolodexFrame.new(self)
-    @frame.pack("side"=>"top",
-               "fill"=>"y",
-               "anchor"=>"center")
-    @buttons = RolodexButtons.new(self)
-    @buttons.pack("side"=>"bottom",
-                 "pady"=>2,
-                 "anchor"=>"center")
-    @menu = RolodexMenuFrame.new(self)
-    @menu.pack("before"=>@frame,
-              "side"=>"top",
-              "fill"=>"x")
-  end
-end
-
-$root = Rolodex.new
-
-$root.buttons.delete.configure("command"=>proc{deleteAction})
-$root.buttons.add.configure("command"=>proc{addAction})
-$root.buttons.clear.configure("command"=>proc{clearAction})
-$root.buttons.search.configure("command"=>proc{addAction; fillCard})
-
-$root.buttons.clear.configure("text"=>"Clear   Ctrl+C")
-$root.bind("Control-c",proc{clearAction})
-
-$root.buttons.add.configure("text"=>"Add   Ctrl+A")
-$root.bind("Control-a",proc{addAction})
-
-$root.buttons.search.configure("text"=>"Search   Ctrl+S")
-$root.bind("Control-s",proc{addAction; fillCard})
-
-$root.buttons.delete.configure("text"=>"Delete...   Ctrl+D")
-$root.bind("Control-d",proc{deleteAction})
-
-$root.menu.file_menu.entryconfigure(1, "accel"=>"Ctrl+F")
-$root.bind("Control-f",proc{fileAction})
-
-$root.menu.file_menu.entryconfigure(2, "accel"=>"Ctrl+Q")
-$root.bind("Control-q",proc{$root.destroy})
-
-$root.frame.entry[1].focus
-
-$root.bind("Any-F1",
-          proc{|event| show_help(event.widget, event.x_root, event.y_root)})
-$root.bind("Any-Help",
-          proc{|event| show_help(event.widget, event.x_root, event.y_root)})
-
-
-$helpTopics = {}
-
-$helpTopics[$root.menu.file] = <<EOF
-This is the "file" menu. It can be used to invoke\
-some overall operations on the rolodex applications,\
-such as loading a file or exiting.
-EOF
-
-$helpTopics[$root.menu.file_menu.index(0)] = <<EOF
-The "Load" entry in the "File" menu posts a dialog box\
-that you can use to select a rolodex file
-EOF
-
-$helpTopics[$root.menu.file_menu.index(1)] = <<EOF
-The "Exit" entry in the "File" menu causes the rolodex\
-application to terminate
-EOF
-
-$helpTopics[$root.frame.entry[1]] = <<EOF
-In this field of the rolodex entry you should\
-type the person's name
-EOF
-
-$helpTopics[$root.frame.entry[2]] = <<EOF
-In this field of the rolodex entry you should\
-type the first line of the person's address
-EOF
-
-$helpTopics[$root.frame.entry[3]] = <<EOF
-In this field of the rolodex entry you should\
-type the second line of the person's address
-EOF
-
-$helpTopics[$root.frame.entry[4]] = <<EOF
-In this field of the rolodex entry you should\
-type the third line of the person's address
-EOF
-
-$helpTopics[$root.frame.entry[5]] = <<EOF
-In this field of the rolodex entry you should\
-type the person's home phone number, or "private"\
-if the person doesn't want his or he number publicized
-EOF
-
-$helpTopics[$root.frame.entry[6]] = <<EOF
-In this field of the rolodex entry you should\
-type the person's work phone number
-EOF
-
-$helpTopics[$root.frame.entry[7]] = <<EOF
-In this field of the rolodex entry you should\
-type the phone number for the person's FAX machine
-EOF
-
-$helpTopics["context"] = <<EOF
-Unfortunately, this application doesn't support context-sensitive\
-help in the usual way, because when this demo was written Ruby/Tk\
-didn't have a grab mechanism and this is needed for context-sensitive\
-help. Instead, you can achive much the same effect by simply moving\
-the mouse over the window you're curious about and pressing the\
-Help or F1 keys. You can do this anytime.
-EOF
-
-$helpTopics["help"] = <<EOF
-This application provides only very crude help. Besides the\
-entries in this menu, you can get help on individual windows\
-by moving the mouse cursor over the window and pressing the\
-Help or F1 keys.
-EOF
-
-$helpTopics["window"] = <<EOF
-This window is a dummy rolodex application created as part of\
-Tom LaStrange's toolkit benchmark. It doesn't really do anything\
-useful except to demonstrate a few features of the Ruby/Tk.
-EOF
-
-$helpTopics["keys"] = <<EOF
-The following accelerator keys are defined for this application\
-(in addition to those already available for the entry windows):
-Ctrl+A:                Add
-Ctrl+C:                Clear
-Ctrl+D:                Delete
-Ctrl+F:                Enter file name
-Ctrl+Q:                Exit application (quit)
-Ctrl+S:                Search (dummy operation)
-EOF
-
-$helpTopics["version"] = <<EOF
-This is version 1.0.1.
-EOF
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/rolodex-j b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/rolodex-j
deleted file mode 100644 (file)
index 6c3ea7a..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-#!/usr/bin/env ruby
-# -*- coding: euc-jp -*-
-#
-# rolodex --
-# ¤³¤Î¥¹¥¯¥ê¥×¥È¤Ï Tom LaStrange ¤Î rolodex ¤Î°ìÉô¤Ç¤¹¡£
-# 
-# Copyright (C) 1998 by Takaaki Tateishi <ttate@jaist.ac.jp>
-# Time-stamp: "04/04/09 00:32:12 nagai"
-#
-
-require "tk"
-Tk.encoding = "euc-jp"
-
-def show_help(topic,x=0,y=0)
-  if( topic.is_a?(TkWindow) )
-    w = TkWinfo.containing(x,y)
-    if( w.is_a?(TkWindow) )
-      if( TkWinfo.exist?(w) )
-       topic = w
-      end
-    end
-  end
-  
-  if( $helpTopics.include?(topic) )
-    msg = $helpTopics[topic]
-  else
-    msg = "¤³¤Î¥È¥Ô¥Ã¥¯¤Ë¤Ä¤¤¤Æ¤Î¥Ø¥ë¥×¤Ï¤Þ¤À»ÈÍѤǤ­¤Þ¤»¤ó"
-  end
-  TkDialog.new("title"=>"Rolodex Help",
-              "message"=>"¡Ö#{topic}¡×\n\n#{msg}",
-              "default_button"=>0,
-              "buttons"=>["OK"])
-end
-
-def fillCard
-  clearAction
-  $root.frame.entry[1].insert(0, "ΩÀР¹§¾´")
-  $root.frame.entry[2].insert(0, "923-1292 ÀÐÀ")
-  $root.frame.entry[3].insert(0, "ä¸ýÄ® °°Âæ 1-1")
-  $root.frame.entry[4].insert(0, "ËÌΦÀèü²Ê³Øµ»½ÑÂç³Ø±¡Âç³Ø")
-  $root.frame.entry[5].insert(0,"private")
-  $root.frame.entry[6].insert(0,"***-***-****")
-  $root.frame.entry[7].insert(0,"***-***-****")
-end
-
-def addAction
-  for i in 1..7
-    STDERR.print format("%-12s %s\n",
-                       RolodexFrame::LABEL[i],
-                       $root.frame.entry[i].value)
-  end
-end
-
-def clearAction
-  for i in 1..7
-    $root.frame.entry[i].delete(0,"end")
-  end
-end
-
-def fileAction
-  TkDialog.new("title"=>"File Selection",
-              "message"=>"¤³¤ì¤Ï¥Õ¥¡¥¤¥ëÁªÂò¥À¥¤¥¢¥í¥°¤Î¥À¥ß¡¼¤Ç¤¹¡£\n",
-              "default_button"=>0,
-              "buttons"=>["OK"])
-  STDERR.print "dummy file name\n"
-end
-
-def deleteAction
-  result = TkDialog.new("title"=>"Confirm Action",
-                       "message"=>"¤è¤í¤·¤¤¤Ç¤¹¤«¡©",
-                       "default_button"=>0,
-                       "buttons"=>["¥­¥ã¥ó¥»¥ë"])
-  if( result.value == 0 )
-    clearAction
-  end
-end
-
-
-class RolodexFrame < TkFrame
-  attr_reader :entry, :label
-
-  LABEL = ["","̾Á°:","½»½ê","","","ÅÅÏÃ(¼«Âð):","ÅÅÏÃ(²ñ¼Ò):","Fax:"]
-
-  def initialize(parent=nil,keys=nil)
-    super(parent,keys)
-    self["relief"] = "flat"
-    @i = []
-    @label = []
-    @entry = []
-    for i in 1..7
-      @i[i] = TkFrame.new(self)
-      @i[i].pack("side"=>"top",
-                "pady"=>2,
-                "anchor"=>"e")
-      @label[i] = TkLabel.new(@i[i],
-                             "text"=>LABEL[i],
-                             "anchor"=>"e")
-      @entry[i] = TkEntry.new(@i[i],
-                             "width"=>30,
-                             "relief"=>"sunken")
-      @entry[i].pack("side"=>"right")
-      @label[i].pack("side"=>"right")
-    end
-  end
-end
-
-class RolodexButtons < TkFrame
-  attr_reader :clear, :add, :search, :delete
-
-  def initialize(parent,keys=nil)
-    super(parent,keys)
-    @clear = TkButton.new(self,"text" => "¥¯¥ê¥¢¡¼")
-    @add = TkButton.new(self,  "text" => "ÄɲÃ")
-    @search = TkButton.new(self, "text" => "¸¡º÷")
-    @delete = TkButton.new(self,  "text" => "¾Ãµî")
-    for w in [@clear,@add,@search,@delete]
-      w.pack("side"=>"left", "padx"=>2)
-    end
-  end
-end
-
-class RolodexMenuFrame < TkFrame
-  attr_reader :file_menu, :help_menu, :file, :help
-
-  def initialize(parent,keys=nil)
-    super(parent,keys)
-    configure("relief"=>"raised",
-             "borderwidth"=>1)
-
-    @file = TkMenubutton.new(self,
-                            "text"=> "¥Õ¥¡¥¤¥ë",
-                            "underline"=>0)
-    @file_menu = TkMenu.new(@file)
-    @file_menu.add("command",
-                  "label" => "Æɤ߹þ¤ß ...",
-                  "command" => proc{fileAction},
-                  "underline" => 0)
-    @file_menu.add("command",
-                  "label" => "½ªÎ»",
-                  "command" => proc{$root.destroy},
-                  "underline" => 0)
-    @file.menu(@file_menu)
-    @file.pack("side"=>"left")
-
-    @help = TkMenubutton.new(self,
-                            "text"=> "¥Ø¥ë¥×",
-                            "underline"=>0)
-    @help_menu = TkMenu.new(@help)
-    @help_menu.add("command",
-                  "label"=> "¥³¥ó¥Æ¥­¥¹¥È¤Ë¤Ä¤¤¤Æ",
-                  "command"=>proc{show_help("¥³¥ó¥Æ¥­¥¹¥È")},
-                  "underline"=>3)
-    @help_menu.add("command",
-                  "label"=> "¥Ø¥ë¥×¤Ë¤Ä¤¤¤Æ",
-                  "command"=>proc{show_help("¥Ø¥ë¥×")},
-                  "underline"=>3)
-    @help_menu.add("command",
-                  "label"=> "¥¦¥£¥ó¥É¥¦¤Ë¤Ä¤¤¤Æ",
-                  "command"=>proc{show_help("¥¦¥£¥ó¥É¥¦")},
-                  "underline"=>3)
-    @help_menu.add("command",
-                  "label"=> "¥­¡¼Áàºî¤Ë¤Ä¤¤¤Æ",
-                  "command"=>proc{show_help("¥­¡¼Áàºî")},
-                  "underline"=>3)
-    @help_menu.add("command",
-                  "label"=> "¥Ð¡¼¥¸¥ç¥ó¾ðÊó",
-                  "command"=>proc{show_help("¥Ð¡¼¥¸¥ç¥ó¾ðÊó")},
-                  "underline"=>3)
-    @help.menu(@help_menu)
-    @help.pack("side"=>"right")
-  end
-end
-
-class Rolodex < TkRoot
-  attr_reader :frame, :buttons, :menu
-
-  def initialize(*args)
-    super(*args)
-    @frame = RolodexFrame.new(self)
-    @frame.pack("side"=>"top",
-               "fill"=>"y",
-               "anchor"=>"center")
-    @buttons = RolodexButtons.new(self)
-    @buttons.pack("side"=>"bottom",
-                 "pady"=>2,
-                 "anchor"=>"center")
-    @menu = RolodexMenuFrame.new(self)
-    @menu.pack("before"=>@frame,
-              "side"=>"top",
-              "fill"=>"x")
-  end
-end
-
-$root = Rolodex.new
-
-$root.buttons.delete.configure("command"=>proc{deleteAction})
-$root.buttons.add.configure("command"=>proc{addAction})
-$root.buttons.clear.configure("command"=>proc{clearAction})
-$root.buttons.search.configure("command"=>proc{addAction; fillCard})
-
-$root.buttons.clear.configure("text"=> "¥¯¥ê¥¢¡¼   Ctrl+C")
-$root.bind("Control-c",proc{clearAction})
-
-$root.buttons.add.configure("text"=> "Äɲà  Ctrl+A")
-$root.bind("Control-a",proc{addAction})
-
-$root.buttons.search.configure("text"=> "¸¡º÷   Ctrl+S")
-$root.bind("Control-s",proc{addAction; fillCard})
-
-$root.buttons.delete.configure("text"=> "¾Ãµî   Ctrl+D")
-$root.bind("Control-d",proc{deleteAction})
-
-$root.menu.file_menu.entryconfigure(1, "accel"=>"Ctrl+F")
-$root.bind("Control-f",proc{fileAction})
-
-$root.menu.file_menu.entryconfigure(2, "accel"=>"Ctrl+Q")
-$root.bind("Control-q",proc{$root.destroy})
-
-$root.frame.entry[1].focus
-
-$root.bind("Any-F1",
-          proc{|event| show_help(event.widget, event.x_root, event.y_root)})
-$root.bind("Any-Help",
-          proc{|event| show_help(event.widget, event.x_root, event.y_root)})
-
-
-$helpTopics = {}
-
-$helpTopics[$root.menu.file] = <<EOF
-¤³¤ì¤Ï¡Ö¥Õ¥¡¥¤¥ë¡×¥á¥Ë¥å¡¼¤Ç¤¹¡£¡ÖÆɤ߹þ¤ß¡×¤ä¡Ö½ªÎ»¡×¤Ê¤É¤ò
-¹Ô¤Ê¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-EOF
-
-$helpTopics[$root.menu.file_menu.index(0)] = <<EOF
-¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ß¤ò¹Ô¤Ê¤¦¤È¤­¤Ë»È¤¤¤Þ¤¹¡£
-EOF
-
-$helpTopics[$root.menu.file_menu.index(1)] = <<EOF
-¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò½ªÎ»¤¹¤ë¤È¤­¤Ë»È¤¤¤Þ¤¹¡£
-EOF
-
-$helpTopics[$root.frame.entry[1]] = <<EOF
-̾Á°¤òµ­Æþ¤¹¤ë¥¨¥ó¥È¥ê¤Ç¤¹¡£
-EOF
-
-$helpTopics[$root.frame.entry[2]] = <<EOF
-½»½ê¤òµ­Æþ¤¹¤ë¥¨¥ó¥È¥ê¤Ç¤¹¡£
-EOF
-
-$helpTopics[$root.frame.entry[3]] = <<EOF
-½»½ê¤òµ­Æþ¤¹¤ë¥¨¥ó¥È¥ê¤Ç¤¹¡£
-EOF
-
-$helpTopics[$root.frame.entry[4]] = <<EOF
-½»½ê¤òµ­Æþ¤¹¤ë¥¨¥ó¥È¥ê¤Ç¤¹¡£
-EOF
-
-$helpTopics[$root.frame.entry[5]] = <<EOF
-¼«Âð¤ÎÅÅÏÃÈÖ¹æ¤òµ­Æþ¤¹¤ë¥¨¥ó¥È¥ê¤Ç¤¹¡£¸ø³«\
-¤·¤¿¤¯¤Ê¤¤¤È¤­¤Ï private ¤Èµ­Æþ¤·¤Þ¤¹¡£
-EOF
-
-$helpTopics[$root.frame.entry[6]] = <<EOF
-²ñ¼Ò¤ÎÅÅÏÃÈÖ¹æ¤òµ­Æþ¤¹¤ë¥¨¥ó¥È¥ê¤Ç¤¹¡£
-EOF
-
-$helpTopics[$root.frame.entry[7]] = <<EOF
-FAXÈÖ¹æ¤òµ­Æþ¤¹¤ë¥¨¥ó¥È¥ê¤Ç¤¹¡£
-EOF
-
-$helpTopics["¥³¥ó¥Æ¥­¥¹¥È"] = <<EOF
-Ruby/Tk¤Ç¤Ïgrab¤Îµ¡¹½¤¬¤Ê¤¤¤¿¤á¤³¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï\
-¥³¥ó¥Æ¥­¥¹¥È¥Ø¥ë¥×¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£
-¤·¤«¤·Æ±¤¸¤è¤¦¤Ê¸ú²Ì¤òbind¤È¥Þ¥¦¥¹¤Î°ÌÃÖ¤ÎWedget¤òÃΤë\
-¤³¤È¤ÇÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-EOF
-
-$helpTopics["¥Ø¥ë¥×"] = <<EOF
-¥Þ¥¦¥¹¤ò¥¦¥£¥ó¥É¥¦¤Ë¤¢¤ï¤»¤ÆF1¥­¡¼¤ò²¡¤¹¤³¤È¤Ë¤è¤Ã¤Æ\
-¤½¤Î¥Ø¥ë¥×¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-EOF
-
-$helpTopics["¥¦¥£¥ó¥É¥¦"] = <<EOF
-¤³¤Î¥¦¥£¥ó¥É¥¦¤Ï¥À¥ß¡¼¤Ç¤¹¡£
-EOF
-
-$helpTopics["¥­¡¼Áàºî"] = <<EOF
-Ctrl+A:                ÄɲÃ
-Ctrl+C:                ¥¯¥ê¥¢¡¼
-Ctrl+D:                ¾Ãµî
-Ctrl+F:                ¥Õ¥¡¥¤¥ëÁªÂò
-Ctrl+Q:                ½ªÎ»
-Ctrl+S:                ¸¡º÷
-EOF
-
-$helpTopics["¥Ð¡¼¥¸¥ç¥ó¾ðÊó"] = <<EOF
-¥Ð¡¼¥¸¥ç¥ó¤Ï 1.0.1j ¤Ç¤¹¡£
-EOF
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ruler.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ruler.rb
deleted file mode 100644 (file)
index d6bc9e7..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# ruler widget demo (called by 'widget')
-#
-
-# rulerMkTab --
-# This method creates a new triangular polygon in a canvas to
-# represent a tab stop.
-#
-# Arguments:
-# c -           The canvas window.
-# x, y -        Coordinates at which to create the tab stop.
-
-def rulerMkTab(c,x,y)
-  v = $demo_rulerInfo
-  TkcPolygon.new(c, x, y, x+v.size, y+v.size, x-v.size, y+v.size)
-end
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($ruler_demo) && $ruler_demo
-  $ruler_demo.destroy 
-  $ruler_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$ruler_demo = TkToplevel.new {|w|
-  title("Ruler Demonstration")
-  iconname("ruler")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($ruler_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'5i', 'justify'=>'left', 
-            'text'=>"¤³¤Î¥­¥ã¥ó¥Ð¥¹widget¤Ï¥ë¡¼¥é¡¼¤ÎÌÏ·¿¤Ç¤¹¡£¥ë¡¼¥é¡¼¤Î±¦¤Ë¤¢¤ë¤Î¤Ï¥¿¥Ö¥¹¥È¥Ã¥×¤Î°æ¸Í¤Ç¡¢¤³¤³¤«¤é°ú¤ÃÄ¥¤Ã¤Æ¤¯¤ë¤³¤È¤Ë¤è¤Ã¤Æ¥¿¥Ö¥¹¥È¥Ã¥×¤òºî¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢¤¹¤Ç¤Ë¤¢¤ë¥¿¥Ö¥¹¥È¥Ã¥×¤òÆ°¤«¤¹¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¥¿¥Ö¥¹¥È¥Ã¥×¤ò¾åÊý¤Þ¤¿¤Ï²¼Êý¤Ë¤«¤¹¤ì¤Æɽ¼¨¤µ¤ì¤ë¤Þ¤Ç¥É¥é¥Ã¥°¤¹¤ë¤È¡¢¥Þ¥¦¥¹¥Ü¥¿¥ó¤òÎ¥¤·¤¿»þ¤Ë¤½¤Î¥¿¥Ö¥¹¥È¥Ã¥×¤Ï¾Ã¤¨¤Þ¤¹¡£"){
-  pack('side'=>'top')
-}
-
-# frame À¸À®
-$ruler_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $ruler_demo
-      $ruler_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'ruler'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$ruler_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# canvas ÀßÄê
-$ruler_canvas = TkCanvas.new(base_frame, 'width'=>'14.8c', 'height'=>'2.5c')
-$ruler_canvas.pack('side'=>'top', 'fill'=>'x')
-
-# ÃÍÀßÄê
-unless Struct.const_defined?("RulerInfo")
-  $demo_rulerInfo = Struct.new("RulerInfo", :grid, :left, :right, :x, :y, 
-                               :top, :bottom, :size, :normalStyle, 
-                               :activeStyle, :deleteStyle).new
-end
-$demo_rulerInfo.grid = '.25c'
-$demo_rulerInfo.left = TkWinfo.fpixels($ruler_canvas, '1c')
-$demo_rulerInfo.right = TkWinfo.fpixels($ruler_canvas, '13c')
-$demo_rulerInfo.top = TkWinfo.fpixels($ruler_canvas, '1c')
-$demo_rulerInfo.bottom = TkWinfo.fpixels($ruler_canvas, '1.5c')
-$demo_rulerInfo.size = TkWinfo.fpixels($ruler_canvas, '.2c')
-$demo_rulerInfo.normalStyle = {'fill'=>'black'}
-if TkWinfo.depth($ruler_canvas) > 1
-  $demo_rulerInfo.activeStyle = {'fill'=>'red', 'stipple'=>''}
-  $demo_rulerInfo.deleteStyle = {'fill'=>'red', 
-    'stipple'=>'@'+[$demo_dir, '..', 
-                     'images', 'gray25.xbm'].join(File::Separator)}
-else
-  $demo_rulerInfo.activeStyle = {'fill'=>'black', 'stipple'=>''}
-  $demo_rulerInfo.deleteStyle = {'fill'=>'black', 
-    'stipple'=>'@'+[$demo_dir, '..', 
-                     'images', 'gray25.xbm'].join(File::Separator)}
-end
-
-TkcLine.new($ruler_canvas, 
-            '1c', '0.5c', '1c', '1c', '13c', '1c', '13c', '0.5c', 'width'=>1)
-(0..11).each{|i|
-  x = i+1
-  TkcLine.new($ruler_canvas, "#{x}c", '1c', "#{x}c", '0.6c', 'width'=>1)
-  TkcLine.new($ruler_canvas, "#{x}.25c", '1c', "#{x}.25c", '0.8c', 'width'=>1)
-  TkcLine.new($ruler_canvas, "#{x}.5c", '1c', "#{x}.5c", '0.7c', 'width'=>1)
-  TkcLine.new($ruler_canvas, "#{x}.75c", '1c', "#{x}.75c", '0.8c', 'width'=>1)
-  TkcText.new($ruler_canvas, "#{x}.15c", '0.75c', 'text'=>i, 'anchor'=>'sw')
-}
-
-$rulerTag_well = TkcTag.new($ruler_canvas)
-$ruler_canvas\
-.addtag_withtag($rulerTag_well,
-                TkcRectangle.new($ruler_canvas, 
-                                 '13.2c', '1c', '13.8c', '0.5c', 
-                                 'outline'=>'black', 
-                                 'fill'=>($ruler_canvas\
-                                          .configinfo('background'))[4]) )
-$ruler_canvas\
-.addtag_withtag($rulerTag_well,
-                rulerMkTab($ruler_canvas, 
-                           TkWinfo.pixels($ruler_canvas, '13.5c'), 
-                           TkWinfo.pixels($ruler_canvas, '.65c') ) )
-
-$rulerTag_well.bind('1', proc{|x,y| rulerNewTab($ruler_canvas,x,y)}, '%x %y')
-$ruler_canvas.itembind('tab', '1', 
-                       proc{|x,y| rulerSelectTab($ruler_canvas,x,y)}, '%x %y')
-$ruler_canvas.bind('B1-Motion', 
-                   proc{|x,y| rulerMoveTab($ruler_canvas,x,y)}, '%x %y')
-$ruler_canvas.bind('Any-ButtonRelease-1', proc{rulerReleaseTab($ruler_canvas)})
-
-# rulerNewTab --
-# Does all the work of creating a tab stop, including creating the
-# triangle object and adding tags to it to give it tab behavior.
-#
-# Arguments:
-# c -           The canvas window.
-# x, y -        The coordinates of the tab stop.
-
-def rulerNewTab(c,x,y)
-  v = $demo_rulerInfo
-  c.addtag_withtag('active', rulerMkTab(c,x,y))
-  c.addtag_withtag('tab', 'active')
-  v.x = x
-  v.y = y
-  rulerMoveTab(c,x,y)
-end
-
-# rulerSelectTab --
-# This method is invoked when mouse button 1 is pressed over
-# a tab.  It remembers information about the tab so that it can
-# be dragged interactively.
-#
-# Arguments:
-# c -           The canvas widget.
-# x, y -        The coordinates of the mouse (identifies the point by
-#               which the tab was picked up for dragging).
-
-def rulerSelectTab(c,x,y)
-  v = $demo_rulerInfo
-  v.x = c.canvasx(x, v.grid)
-  v.y = v.top+2
-  c.addtag_withtag('active', 'current')
-  c.itemconfigure('active', v.activeStyle)
-  c.raise('active')
-end
-
-# rulerMoveTab --
-# This method is invoked during mouse motion events to drag a tab.
-# It adjusts the position of the tab, and changes its appearance if
-# it is about to be dragged out of the ruler.
-#
-# Arguments:
-# c -           The canvas widget.
-# x, y -        The coordinates of the mouse.
-
-def rulerMoveTab(c,x,y)
-  v = $demo_rulerInfo
-  return if c.find_withtag('active') == []
-  cx = c.canvasx(x,v.grid)
-  cy = c.canvasy(y)
-  cx = v.left if cx < v.left
-  cx = v.right if cx > v.right
-  if (cy >= v.top && cy <= v.bottom)
-    cy = v.top+2
-    c.itemconfigure('active', v.activeStyle)
-  else
-    cy = cy-v.size-2
-    c.itemconfigure('active', v.deleteStyle)
-  end
-  c.move('active', cx-v.x, cy-v.y)
-  v.x = cx
-  v.y = cy
-end
-
-# rulerReleaseTab --
-# This method is invoked during button release events that end
-# a tab drag operation.  It deselects the tab and deletes the tab if
-# it was dragged out of the ruler.
-#
-# Arguments:
-# c -           The canvas widget.
-# x, y -        The coordinates of the mouse.
-
-def rulerReleaseTab(c)
-  v = $demo_rulerInfo
-  return if c.find_withtag('active') == []
-  if v.y != v.top+2
-    c.delete('active')
-  else
-    c.itemconfigure('active', v.normalStyle)
-    c.dtag('active')
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/sayings.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/sayings.rb
deleted file mode 100644 (file)
index aa24b3a..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# listbox widget demo 'sayings' (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($sayings_demo) && $sayings_demo
-  $sayings_demo.destroy 
-  $sayings_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$sayings_demo = TkToplevel.new {|w|
-  title("Listbox Demonstration (well-known sayings)")
-  iconname("sayings")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($sayings_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "²¼¤Î¥ê¥¹¥È¥Ü¥Ã¥¯¥¹¤Ë¤Ï¤¤¤í¤¤¤í¤Ê³Ê¸À¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£¥ê¥¹¥È¤ò¥¹¥¯¥í¡¼¥ë¤µ¤»¤ë¤Î¤Ï¥¹¥¯¥í¡¼¥ë¥Ð¡¼¤Ç¤â¤Ç¤­¤Þ¤¹¤·¡¢¥ê¥¹¥È¥Ü¥Ã¥¯¥¹¤ÎÃæ¤Ç¥Þ¥¦¥¹¤Î¥Ü¥¿¥ó2(Ãæ¥Ü¥¿¥ó)¤ò²¡¤·¤¿¤Þ¤Þ¥É¥é¥Ã¥°¤·¤Æ¤â¤Ç¤­¤Þ¤¹¡£"
-}
-msg.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $sayings_demo
-      $sayings_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'sayings'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame À¸À®
-sayings_lbox = nil
-TkFrame.new(base_frame, 'borderwidth'=>10) {|w|
-  sv = TkScrollbar.new(w)
-  sh = TkScrollbar.new(w, 'orient'=>'horizontal')
-  sayings_lbox = TkListbox.new(w) {
-    setgrid 1
-    width  20
-    height 10
-    yscrollcommand proc{|first,last| sv.set first,last}
-    xscrollcommand proc{|first,last| sh.set first,last}
-  }
-  sv.command(proc{|*args| sayings_lbox.yview(*args)})
-  sh.command(proc{|*args| sayings_lbox.xview(*args)})
-
-  if $tk_version =~ /^4\.[01]/
-    sv.pack('side'=>'right', 'fill'=>'y')
-    sh.pack('side'=>'bottom', 'fill'=>'x')
-    sayings_lbox.pack('expand'=>'yes', 'fill'=>'y')
-
-  else
-    sayings_lbox.grid('row'=>0, 'column'=>0, 
-                      'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    sv.grid('row'=>0, 'column'=>1, 
-            'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    sh.grid('row'=>1, 'column'=>0, 
-            'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-    TkGrid.rowconfigure(w, 0, 'weight'=>1, 'minsize'=>0)
-    TkGrid.columnconfigure(w, 0, 'weight'=>1, 'minsize'=>0)
-  end
-
-}.pack('side'=>'top', 'expand'=>'yes', 'fill'=>'y')
-
-sayings_lbox.insert(0,
-"Waste not, want not",
-"Early to bed and early to rise makes a man healthy, wealthy, and wise",
-"Ask not what your country can do for you, ask what you can do for your country",
-"I shall return",
-"NOT",
-"A picture is worth a thousand words",
-"User interfaces are hard to build",
-"Thou shalt not steal",
-"A penny for your thoughts",
-"Fool me once, shame on you;  fool me twice, shame on me",
-"Every cloud has a silver lining",
-"Where there's smoke there's fire",
-"It takes one to know one",
-"Curiosity killed the cat",
-"Take this job and shove it",
-"Up a creek without a paddle",
-"I'm mad as hell and I'm not going to take it any more",
-"An apple a day keeps the doctor away",
-"Don't look a gift horse in the mouth"
-)
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/search.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/search.rb
deleted file mode 100644 (file)
index 9838ff5..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# Text Search widget demo (called by 'widget')
-#
-
-# textLoadFile --
-# This method below loads a file into a text widget, discarding
-# the previous contents of the widget. Tags for the old widget are
-# not affected, however.
-#
-# Arguments:
-# w -           The window into which to load the file.  Must be a
-#               text widget.
-# file -        The name of the file to load.  Must be readable.
-
-def textLoadFile(w,file)
-  w.delete('1.0', 'end')
-  f = open(file, 'r')
-  while(!f.eof?)
-    w.insert('end', f.read(1000))
-  end
-  f.close
-end
-
-# textSearch --
-# Search for all instances of a given string in a text widget and
-# apply a given tag to each instance found.
-#
-# Arguments:
-# w -           The window in which to search.  Must be a text widget.
-# string -      The string to search for.  The search is done using
-#               exact matching only;  no special characters.
-# tag -         Tag to apply to each instance of a matching string.
-
-def textSearch(w, string, tag)
-  tag.remove('0.0', 'end')
-  return if string == ""
-  cur = '1.0'
-  loop {
-    cur, len = w.search_with_length(string, cur, 'end')
-    break if cur == ""
-    tag.add(cur, "#{cur} + #{len} char")
-    cur = w.index("#{cur} + #{len} char")
-  }
-end
-
-# textToggle --
-# This method is invoked repeatedly to invoke two commands at
-# periodic intervals.  It normally reschedules itself after each
-# execution but if an error occurs (e.g. because the window was
-# deleted) then it doesn't reschedule itself.
-#
-# Arguments:
-# cmd1 -        Command to execute when method is called.
-# sleep1 -      Ms to sleep after executing cmd1 before executing cmd2.
-# cmd2 -        Command to execute in the *next* invocation of this method.
-# sleep2 -      Ms to sleep after executing cmd2 before executing cmd1 again.
-
-def textToggle(cmd1,sleep1,cmd2,sleep2)
-  sleep_list = [sleep2, sleep1]
-  TkAfter.new(proc{sleep = sleep_list.shift; sleep_list.push(sleep); sleep}, 
-              -1, cmd1, cmd2).start(sleep1)
-end
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($search_demo) && $search_demo
-  $search_demo.destroy 
-  $search_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$search_demo = TkToplevel.new {|w|
-  title("Text Demonstration - Search and Highlight")
-  iconname("search")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($search_demo).pack(:fill=>:both, :expand=>true)
-
-# frame À¸À®
-$search_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $search_demo
-      $search_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'search'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$search_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|f|
-  TkLabel.new(f, 'text'=>'¥Õ¥¡¥¤¥ë̾:', 
-              'width'=>13, 'anchor'=>'w').pack('side'=>'left')
-  $search_fileName = TkVariable.new
-  TkEntry.new(f, 'width'=>40, 
-              'textvariable'=>$search_fileName) {
-    pack('side'=>'left')
-    bind('Return', proc{textLoadFile($search_text, $search_fileName.value)
-                        $search_string_entry.focus})
-    focus
-  }
-  TkButton.new(f, 'text'=>'Æɤ߹þ¤ß', 
-               'command'=>proc{textLoadFile($search_text, 
-                                            $search_fileName.value)})\
-  .pack('side'=>'left', 'pady'=>5, 'padx'=>10)
-}.pack('side'=>'top', 'fill'=>'x')
-
-TkFrame.new(base_frame) {|f|
-  TkLabel.new(f, 'text'=>'¸¡º÷ʸ»úÎó:', 
-              'width'=>13, 'anchor'=>'w').pack('side'=>'left')
-  $search_searchString = TkVariable.new
-  $search_string_entry = TkEntry.new(f, 'width'=>40, 
-                                     'textvariable'=>$search_searchString) {
-    pack('side'=>'left')
-    bind('Return', proc{textSearch($search_text, $search_searchString.value, 
-                                   $search_Tag)})
-  }
-  TkButton.new(f, 'text'=>'ȿž', 
-               'command'=>proc{textSearch($search_text, 
-                                          $search_searchString.value, 
-                                          $search_Tag)}) {
-    pack('side'=>'left', 'pady'=>5, 'padx'=>10)
-  }
-}.pack('side'=>'top', 'fill'=>'x')
-
-$search_text = TkText.new(base_frame, 'setgrid'=>true) {|t|
-  $search_Tag = TkTextTag.new(t)
-  TkScrollbar.new(base_frame, 'command'=>proc{|*args| t.yview(*args)}) {|sc|
-    t.yscrollcommand(proc{|first,last| sc.set first,last})
-    pack('side'=>'right', 'fill'=>'y')
-  }
-  pack('expand'=>'yes', 'fill'=>'both')
-}  
-
-# Set up display styles for text highlighting.
-
-if TkWinfo.depth($search_demo) > 1
-  textToggle(proc{
-               $search_Tag.configure('background'=>'#ce5555', 
-                                     'foreground'=>'white')
-             },
-             800, 
-             proc{
-               $search_Tag.configure('background'=>'', 'foreground'=>'')
-             },
-             200 )
-else
-  textToggle(proc{
-               $search_Tag.configure('background'=>'black', 
-                                     'foreground'=>'white')
-             },
-             800, 
-             proc{
-               $search_Tag.configure('background'=>'', 'foreground'=>'')
-             },
-             200 )
-end
-$search_text.insert('1.0', "\
-¤³¤Î¥¦¥£¥ó¥É¥¦¤Ï¸¡º÷µ¡¹½¤ò¼Â¸½¤¹¤ë¤Î¤Ë¥Æ¥­¥¹¥È widget ¤Î¥¿¥°µ¡Ç½¤¬¤É¤Î \
-¤è¤¦¤Ë»È¤ï¤ì¤ë¤Î¤«¤ò¥Ç¥â¤¹¤ë¤â¤Î¤Ç¤¹¡£¤Þ¤º¾å¤Î¥¨¥ó¥È¥ê¤Ë¥Õ¥¡¥¤¥ë̾¤òÆþ \
-¤ì¡¢<¥ê¥¿¡¼¥ó> ¤ò²¡¤¹¤«¡Ö¥í¡¼¥É¡×¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£¼¡¤Ë¤½¤Î²¼¤Î \
-¥¨¥ó¥È¥ê¤Ëʸ»úÎó¤òÆþÎϤ·¡¢<¥ê¥¿¡¼¥ó> ¤ò²¡¤¹¤«¡Öȿž¡×¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯ \
-¤À¤µ¤¤¡£¤¹¤ë¤È¥Õ¥¡¥¤¥ëÃæ¤Î¡¢¸¡º÷ʸ»úÎó¤È°ìÃפ¹¤ëÉôʬ¤ËÁ´¤Æ \"search_Tag\" \
-¤È¤¤¤¦¥¿¥°¤¬¤Ä¤±¤é¤ì¡¢¥¿¥°¤Îɽ¼¨Â°À­¤È¤·¤Æ¤½¤Îʸ»úÎó¤¬ÅÀÌǤ¹¤ë¤è¤¦¤Ë \
-ÀßÄꤵ¤ì¤Þ¤¹¡£\n")
-$search_text.insert('end', "\
-¥Õ¥¡¥¤¥ëÆɤ߹þ¤ß¤Î¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Ï \"#{Dir.pwd}\" ¤Ç¤¹¡£\
-")
-$search_text.set_insert '0.0'
-
-$search_fileName.value = ''
-$search_searchString.value = ''
-
-$search_text.width = 60
-$search_text.height = 20
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/spin.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/spin.rb
deleted file mode 100644 (file)
index 8d4e33c..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# spin.rb --
-#
-# This demonstration script creates several spinbox widgets.
-#
-# based on Tcl/Tk8.4.4 widget demos
-
-if defined?($spin_demo) && $spin_demo
-  $spin_demo.destroy 
-  $spin_demo = nil
-end
-
-$spin_demo = TkToplevel.new {|w|
-  title("Spinbox Demonstration")
-  iconname("spin")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($spin_demo).pack(:fill=>:both, :expand=>true)
-
-TkLabel.new(base_frame, 
-            :font=>$font, :wraplength=>'5i', :justify=>:left, 
-            :text=><<EOL).pack(:side=>:top)
-²¼¤Ë¤Ï£³¼ïÎà¤Î¥¹¥Ô¥ó¥Ü¥Ã¥¯¥¹¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
-¤½¤ì¤¾¤ì¡¢¥Þ¥¦¥¹¤ÇÁªÂò¤·¤Æʸ»ú¤òÆþÎϤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-ÊÔ½¸Áàºî¤È¤·¤Æ¤Ï¡¢Emacs ·Á¼°¤Î¿¤¯¤Ë²Ã¤¨¤Æ¡¢°ìÈÌŪ¤Ê
-Motif ·Á¼°¤Î¥­¡¼Áàºî¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢
-Backspace ¤È Control-h ¤È¤ÏÆþÎÏ¥«¡¼¥½¥ë¤Îº¸Â¦¤Îʸ»ú¤ò
-ºï½ü¤·¡¢Delete ¤È Control-d ¤È¤Ï±¦Â¦¤Îʸ»ú¤òºï½ü¤·¤Þ¤¹¡£
-ÆþÎÏÏȤÎŤµ¤ò±Û¤¨¤ë¤è¤¦¤ÊŤ¤Ê¸»úÎó¤òÆþÎϤ·¤¿¾ì¹ç¤Ë¤Ï¡¢
-¥Þ¥¦¥¹¤Î¥Ü¥¿¥ó£²¤ò²¡¤·¤Æ¥É¥é¥Ã¥°¤¹¤ë¤³¤È¤Ç¡¢ÆþÎÏʸ»úÎó
-¤ò¥¹¥­¥ã¥ó¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£
-¤Ê¤ª¡¢ºÇ½é¤Î¥¹¥Ô¥ó¥Ü¥Ã¥¯¥¹¤Ï¡¢À°¿ôÃͤȤߤʤµ¤ì¤ë¤è¤¦¤Ê
-ʸ»úÎó¤·¤«ÆþÎϤ¬µö¤µ¤ì¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤¿¡¢
-£³ÈÖÌܤΥ¹¥Ô¥ó¥Ü¥Ã¥¯¥¹¤ÇÁªÂò¸õÊä¤Ë¸½¤ì¤ë¤Î¤Ï¥ª¡¼¥¹¥È¥é
-¥ê¥¢¤ÎÅÔ»Ô̾¤Î¥ê¥¹¥È¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
-¤â¤·¤¢¤Ê¤¿¤¬»È¤Ã¤Æ¤¤¤ë Ruby ¤Ë¥ê¥ó¥¯¤µ¤ì¤Æ¤¤¤ë Tk ¥é¥¤
-¥Ö¥é¥ê¤¬ spinbox ¥¦¥£¥¸¥§¥Ã¥È¤ò¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¤³¤Î
-¥Ç¥â¤Ï¤¦¤Þ¤¯Æ°¤«¤Ê¤¤¤Ï¤º¤Ç¤¹¡£¤½¤Î¾ì¹ç¤Ë¤Ï spinbox ¥¦¥£
-¥¸¥§¥Ã¥È¤¬¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ê¤è¤ê¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤Î Tk 
-¤òÁȤ߹ç¤ï¤»¤Æ»î¤¹¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
-EOL
-
-TkFrame.new(base_frame){|f|
-  pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
-
-  TkButton.new(f, :text=>'ÊĤ¸¤ë', :width=>15, :command=>proc{
-                 $spin_demo.destroy
-                 $spin_demo = nil
-               }).pack(:side=>:left, :expand=>true)
-
-  TkButton.new(f, :text=>'¥³¡¼¥É»²¾È', :width=>15, :command=>proc{
-                 showCode 'spin'
-               }).pack(:side=>:left, :expand=>true)
-}
-
-australianCities = [
-    'Canberra', 'Sydney', 'Melbourne', 'Perth', 'Adelaide', 
-    'Brisbane', 'Hobart', 'Darwin', 'Alice Springs'
-]
-
-[
-  TkSpinbox.new(base_frame, :from=>1, :to=>10, :width=>10, :validate=>:key, 
-                :validatecommand=>[
-                  proc{|s| s == '' || /^[+-]?\d+$/ =~ s }, '%P'
-                ]), 
-  TkSpinbox.new(base_frame, :from=>0, :to=>3, :increment=>0.5, 
-                :format=>'%05.2f', :width=>10), 
-  TkSpinbox.new(base_frame, :values=>australianCities, :width=>10)
-].each{|sbox| sbox.pack(:side=>:top, :pady=>5, :padx=>10)}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/square b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/square
deleted file mode 100644 (file)
index 00bfde5..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/usr/bin/env ruby
-
-# square --
-# This script generates a demo application containing only 
-# a "square" widget.  It's only usable if Tk has been compiled 
-# with tkSquare.c and with the -DSQUARE_DEMO compiler switch. 
-# This demo arranges the following bindings for the widget: 
-#
-# Button-1 press/drag:          moves square to mouse
-# "a":                          toggle size animation on/off
-#
-
-require 'tk'
-require 'tkafter'
-
-class TkSquare<TkWindow
-  def create_self
-    begin
-      tk_call 'square', path
-    rescue
-      STDERR.print "\nSorry. Your Tk interpreter does not contain " +
-       'a "square" demonstration widget.' + 
-       "\n ( See documents included the Tcl/Tk source archive. )\n\n"
-      exit
-    end
-  end
-  def size(amount=nil)
-    if amount
-      tk_send 'size', amount
-    else
-      number(tk_send('size'))
-    end
-  end
-  def position(x,y)
-    tk_send 'position', x, y
-  end
-end
-
-$s = TkSquare.new{
-  pack('expand'=>'yes', 'fill'=>'both')
-  bind('1', proc{|x,y| center(x,y)}, '%s %y')
-  bind('B1-Motion', proc{|x,y| center(x,y)}, '%s %y')
-  bind('a', proc{animate})
-  focus
-}
-TkRoot.new.minsize(1,1)
-
-# The procedure below centers the square on a given position.
-
-def center(x,y)
-  a = $s.size
-  $s.position(x-(a/2), y-(a/2))
-end
-
-# The procedures below provide a simple form of animation where
-# the box changes size in a pulsing pattern: larger, smaller, larger, 
-# and so on.
-
-$inc = 0
-
-def timer_proc
-  a = $s.size
-  return if $inc == 0
-  $inc = -3 if a >= 40
-  $inc =  3 if a <= 10
-  $s.size(a+$inc)
-end
-
-$timer = TkAfter.new(30, -1, proc{timer_proc})
-
-def animate
-  if $inc == 0
-    $inc = 3
-    $timer.start
-  else
-    $inc = 0
-    $timer.stop
-  end
-end
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/states.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/states.rb
deleted file mode 100644 (file)
index 5e242b7..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# listbox widget demo 'states' (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($states_demo) && $states_demo
-  $states_demo.destroy 
-  $states_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$states_demo = TkToplevel.new {|w|
-  title("Listbox Demonstration (states)")
-  iconname("states")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($states_demo).pack(:fill=>:both, :expand=>true)
-
-# label À¸À®
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '4i'
-  justify 'left'
-  text "²¼¤Ë¤¢¤ë¤Î¤ÏÅÔÆ»Éܸ©Ì¾¤¬Æþ¤Ã¤¿¥¹¥¯¥í¡¼¥ë¥Ð¡¼ÉդΥꥹ¥È¥Ü¥Ã¥¯¥¹¤Ç¤¹¡£¥ê¥¹¥È¤ò¥¹¥¯¥í¡¼¥ë¤µ¤»¤ë¤Î¤Ï¥¹¥¯¥í¡¼¥ë¥Ð¡¼¤Ç¤â¤Ç¤­¤Þ¤¹¤·¡¢¥ê¥¹¥È¥Ü¥Ã¥¯¥¹¤ÎÃæ¤Ç¥Þ¥¦¥¹¤Î¥Ü¥¿¥ó2(Ãæ¥Ü¥¿¥ó)¤ò²¡¤·¤¿¤Þ¤Þ¥É¥é¥Ã¥°¤·¤Æ¤â¤Ç¤­¤Þ¤¹¡£"
-}
-msg.pack('side'=>'top')
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $states_demo
-      $states_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'states'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame À¸À®
-states_lbox = nil
-TkFrame.new(base_frame, 'borderwidth'=>'.5c') {|w|
-  s = TkScrollbar.new(w)
-  states_lbox = TkListbox.new(w) {
-    setgrid 1
-    height 12
-    yscrollcommand proc{|first,last| s.set first,last}
-  }
-  s.command(proc{|*args| states_lbox.yview(*args)})
-  s.pack('side'=>'right', 'fill'=>'y')
-  states_lbox.pack('side'=>'left', 'expand'=>1, 'fill'=>'both')
-}.pack('side'=>'top', 'expand'=>'yes', 'fill'=>'y')
-
-ins_data = [
-  '°¦ÃÎ','ÀÄ¿¹','½©ÅÄ','ÀÐÀî','°ñ¾ë','´ä¼ê','°¦É²',
-  'Âçʬ','Âçºå','²¬»³','²­Æì','¹áÀî','¼¯»ùÅç','¿ÀÆàÀî',
-  '´ôÉì','µþÅÔ','·§ËÜ','·²ÇÏ','¹âÃÎ','ºë¶Ì','º´²ì',
-  '¼¢²ì','ÀŲ¬','Å纬','ÀéÍÕ','Åìµþ','ÆÁÅç','ÆÊÌÚ',
-  'Ä»¼è','ÉÙ»³','Ĺºê','ĹÌî','ÆàÎÉ','¿·³ã','ʼ¸Ë',
-  '¹­Åç','Ê¡°æ','Ê¡²¬','Ê¡Åç','Ë̳¤Æ»','»°½Å','µÜ¾ë',
-  'µÜºê','»³·Á','»³¸ý','»³Íü','ϲλ³'
-]
-
-states_lbox.insert(0, *ins_data)
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/style.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/style.rb
deleted file mode 100644 (file)
index 66b6de0..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# text (display styles) widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($style_demo) && $style_demo
-  $style_demo.destroy 
-  $style_demo = nil
-end
-
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$style_demo = TkToplevel.new {|w|
-  title("Text Demonstration - Display Styles")
-  iconname("style")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($style_demo).pack(:fill=>:both, :expand=>true)
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $style_demo
-      $style_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'style'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-
-# text À¸À®
-txt = TkText.new(base_frame){|t|
-  # À¸À®
-  setgrid 'true'
-  #width  70
-  #height 32
-  wrap 'word'
-  font $font
-  TkScrollbar.new(base_frame) {|s|
-    pack('side'=>'right', 'fill'=>'y')
-    command proc{|*args| t.yview(*args)}
-    t.yscrollcommand proc{|first,last| s.set first,last}
-  }
-  pack('expand'=>'yes', 'fill'=>'both')
-
-  # ¥Æ¥­¥¹¥È¥¿¥°ÀßÄê (¥Õ¥©¥ó¥È´ØÏ¢)
-  family = 'Courier'
-
-  if $tk_version =~ /^4.*/
-    style_tag_bold = TkTextTag.new(t, 'font'=>'-*-Courier-Bold-O-Normal--*-120-*-*-*-*-*-*')
-    style_tag_big = TkTextTag.new(t, 'font'=>'-*-Courier-Bold-R-Normal--*-140-*-*-*-*-*-*', 'kanjifont'=>$msg_kanji_font)
-    style_tag_verybig = TkTextTag.new(t, 'font'=>'-*-Helvetica-Bold-R-Normal--*-240-*-*-*-*-*-*')
-    # style_tag_small = TkTextTag.new(t, 'font'=>'-Adobe-Helvetica-Bold-R-Normal-*-100-*', 'kanjifont'=>$kanji_font)
-    style_tag_small = TkTextTag.new(t, 'font'=>'-Adobe-Helvetica-Bold-R-Normal-*-100-*')
-  else
-    style_tag_bold = TkTextTag.new(t, 'font'=>[family, 12, :bold, :italic])
-    style_tag_big = TkTextTag.new(t, 'font'=>[family, 14, :bold])
-    style_tag_verybig = TkTextTag.new(t, 'font'=>['Helvetica', 24, :bold])
-    style_tag_small = TkTextTag.new(t, 'font'=>'Times 8 bold')
-  end
-###
-#  case($tk_version)
-#  when /^4.*/
-#    style_tag_big = TkTextTag.new(t, 'font'=>'-*-Courier-Bold-R-Normal--*-140-*-*-*-*-*-*', 'kanjifont'=>$msg_kanji_font)
-#    style_tag_small = TkTextTag.new(t, 'font'=>'-Adobe-Helvetica-Bold-R-Normal-*-100-*', 'kanjifont'=>$kanji_font)
-#  when /^8.*/
-#    unless $style_demo_do_first
-#      $style_demo_do_first = true
-#      Tk.tk_call('font', 'create', '@bigascii', 
-#                '-copy', '-*-Courier-Bold-R-Normal--*-140-*-*-*-*-*-*')
-#      Tk.tk_call('font', 'create', '@smallascii', 
-#                '-copy', '-Adobe-Helvetica-Bold-R-Normal-*-100-*')
-#      Tk.tk_call('font', 'create', '@cBigFont', 
-#                '-compound', '@bigascii @msg_knj')
-#      Tk.tk_call('font', 'create', '@cSmallFont', 
-#                '-compound', '@smallascii @kanji')
-#    end
-#    style_tag_big = TkTextTag.new(t, 'font'=>'@cBigFont')
-#    style_tag_small = TkTextTag.new(t, 'font'=>'@cSmallFont')
-#  end
-
-  # ¥Æ¥­¥¹¥È¥¿¥°ÀßÄê (¿§¡¤¥ì¥ê¡¼¥Õ´ØÏ¢)
-  if TkWinfo.depth($root).to_i > 1
-    style_tag_color1 = TkTextTag.new(t, 'background'=>'#a0b7ce')
-    style_tag_color2 = TkTextTag.new(t, 'foreground'=>'red')
-    style_tag_raised = TkTextTag.new(t, 'relief'=>'raised', 'borderwidth'=>1)
-    style_tag_sunken = TkTextTag.new(t, 'relief'=>'sunken', 'borderwidth'=>1)
-  else
-    style_tag_color1 = TkTextTag.new(t, 'background'=>'black', 
-                                     'foreground'=>'white')
-    style_tag_color2 = TkTextTag.new(t, 'background'=>'black', 
-                                     'foreground'=>'white')
-    style_tag_raised = TkTextTag.new(t, 'background'=>'white', 
-                                     'relief'=>'raised', 'borderwidth'=>1)
-    style_tag_sunken = TkTextTag.new(t, 'background'=>'white', 
-                                     'relief'=>'sunken', 'borderwidth'=>1)
-  end
-
-  # ¥Æ¥­¥¹¥È¥¿¥°ÀßÄê (¤½¤Î¾)
-  if $tk_version =~ /^4\.[01]/
-    style_tag_bgstipple = TkTextTag.new(t, 'background'=>'black', 
-                                        'borderwidth'=>0, 
-                                        'bgstipple'=>'gray25')
-  else
-    style_tag_bgstipple = TkTextTag.new(t, 'background'=>'black', 
-                                        'borderwidth'=>0, 
-                                        'bgstipple'=>'gray12')
-  end
-  style_tag_fgstipple = TkTextTag.new(t, 'fgstipple'=>'gray50')
-  style_tag_underline = TkTextTag.new(t, 'underline'=>'on')
-  style_tag_overstrike = TkTextTag.new(t, 'overstrike'=>'on')
-  style_tag_right  = TkTextTag.new(t, 'justify'=>'right')
-  style_tag_center = TkTextTag.new(t, 'justify'=>'center')
-  if $tk_version =~ /^4.*/
-    style_tag_super = TkTextTag.new(t, 'offset'=>'4p', 'font'=>'-Adobe-Courier-Medium-R-Normal--*-100-*-*-*-*-*-*')
-    style_tag_sub = TkTextTag.new(t, 'offset'=>'-2p', 'font'=>'-Adobe-Courier-Medium-R-Normal--*-100-*-*-*-*-*-*')
-  else
-    style_tag_super = TkTextTag.new(t, 'offset'=>'4p', 'font'=>[family, 10])
-    style_tag_sub = TkTextTag.new(t, 'offset'=>'-2p', 'font'=>[family, 10])
-  end
-  style_tag_margins = TkTextTag.new(t, 'lmargin1'=>'12m', 'lmargin2'=>'6m',
-                                    'rmargin'=>'10m')
-  style_tag_spacing = TkTextTag.new(t, 'spacing1'=>'10p', 'spacing2'=>'2p',
-                                    'lmargin1'=>'12m', 'lmargin2'=>'6m',
-                                    'rmargin'=>'10m')
-
-  # ¥Æ¥­¥¹¥ÈÁÞÆþ
-  insert('end', '¤³¤Î¤è¤¦¤Ë¥Æ¥­¥¹¥È widget ¤Ï¾ðÊó¤òÍÍ¡¹¤Ê¥¹¥¿¥¤¥ë¤Çɽ¼¨¤¹¤ë¤³¤È
-¤¬¤Ç¤­¤Þ¤¹¡£')
-  insert('end', '¥¿¥°', style_tag_big)
-  insert('end', '¤È¤¤¤¦¥á¥«¥Ë¥º¥à¤Ç¥³¥ó¥È¥í¡¼¥ë¤µ¤ì¤Þ¤¹¡£
-¥¿¥°¤È¤Ï¥Æ¥­¥¹¥È widget Æâ¤Î¤¢¤ëʸ»ú (¤ÎÈÏ°Ï)¤ËÂФ·¤ÆŬÍѤǤ­¤ë
-ñ¤Ê¤ë̾Á°¤Î¤³¤È¤Ç¤¹¡£¥¿¥°¤ÏÍÍ¡¹¤Êɽ¼¨¥¹¥¿¥¤¥ë¤ËÀßÄê¤Ç¤­¤Þ¤¹¡£
-ÀßÄꤹ¤ë¤È¡¢¤½¤Î¥¿¥°¤Î¤Ä¤¤¤¿Ê¸»ú¤Ï»ØÄꤷ¤¿¥¹¥¿¥¤¥ë¤Çɽ¼¨¤µ¤ì¤ë
-¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£»ÈÍѤǤ­¤ëɽ¼¨¥¹¥¿¥¤¥ë¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£
-')
-  insert('end', '
-1. ¥Õ¥©¥ó¥È', style_tag_big)
-  insert('end', '    ¤É¤ó¤Ê X ¤Î¥Õ¥©¥ó¥È¤Ç¤â»È¤¨¤Þ¤¹¡£')
-  insert('end', 'large', style_tag_verybig)
-  insert('end', '
-¤È¤«')
-#  insert('end', '¾®¤µ¤¤', style_tag_small)
-  insert('end', 'small', style_tag_small)
-  insert('end', '¤È¤«¡£
-')
-  insert('end', '
-2. ¿§', style_tag_big)
-  insert('end', '  ')
-  insert('end', 'ÇØ·Ê¿§', style_tag_color1)
-  insert('end', '¤â')
-  insert('end', 'Á°·Ê¿§', style_tag_color2)
-  insert('end', '¤â')
-  insert('end', 'ξÊý', style_tag_color1, style_tag_color2)
-  insert('end', '¤È¤âÊѤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-')
-  insert('end', '
-3. ÌÖ¤«¤±', style_tag_big)
-  insert('end', '  ¤³¤Î¤è¤¦¤ËÉÁ²è¤ÎºÝ¤Ë')
-  insert('end', 'Çطʤâ', style_tag_bgstipple)
-  insert('end', 'ʸ»ú¤â', style_tag_fgstipple)
-  insert('end', 'ñ¤Ê¤ëÅɤê¤Ä¤Ö¤·
-¤Ç¤Ê¤¯¡¢ÌÖ¤«¤±¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-')
-  insert('end', '
-4. ²¼Àþ', style_tag_big)
-  insert('end', '  ¤³¤Î¤è¤¦¤Ë')
-  insert('end', 'ʸ»ú¤Ë²¼Àþ¤ò°ú¤¯', style_tag_underline)
-  insert('end', '¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-')
-  insert('end', '
-5. ÂǤÁ¾Ã¤·Àþ', style_tag_big)
-  insert('end', '  ¤³¤Î¤è¤¦¤Ë')
-  insert('end', 'ʸ»ú¤Ë½Å¤Í¤ÆÀþ¤ò°ú¤¯', style_tag_overstrike)
-  insert('end', '¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-')
-  insert('end', '
-6. 3D ¸ú²Ì', style_tag_big)
-  insert('end', '  ÇطʤËÏȤò¤Ä¤±¤Æ¡¢Ê¸»ú¤ò')
-  insert('end', 'Èô¤Ó½Ð¤¹', style_tag_raised)
-  insert('end', '¤è¤¦¤Ë¤·¤¿¤ê')
-  insert('end', 'ÄÀ¤à', style_tag_sunken)
-  insert('end', '
-¤è¤¦¤Ë¤Ç¤­¤Þ¤¹¡£
-')
-  insert('end', '
-7. ¹Ô·¤¨', style_tag_big)
-  insert('end', ' ¤³¤Î¤è¤¦¤Ë¹Ô¤ò
-')
-  insert('end', 'º¸¤Ë·¤¨¤¿¤ê
-')
-  insert('end', '±¦¤Ë·¤¨¤¿¤ê
-', style_tag_right)
-  insert('end', '¿¿Ãæ¤Ë·¤¨¤¿¤ê¤Ç¤­¤Þ¤¹¡£
-', style_tag_center)
-  insert('end', '
-8. ¸ªÉÕ¤­Ê¸»ú¤Èź»ú', style_tag_big)
-  insert('end', '  10')
-  insert('end', 'n', style_tag_super)
-  insert('end', ' ¤Î¤è¤¦¤Ë¸ªÉÕ¤­Ê¸»ú¤Î¸ú²Ì¤ä¡¢')
-  insert('end', '
-X')
-  insert('end', 'i', style_tag_sub)
-  insert('end', '¤Î¤è¤¦¤Ëź»ú¤Î¸ú²Ì¤ò½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-')
-  insert('end', '
-9. ¥Þ¡¼¥¸¥ó', style_tag_big)
-  insert('end', '¥Æ¥­¥¹¥È¤Îº¸Â¦¤Ë;ʬ¤Ê¶õÇò¤òÃÖ¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹:
-')
-  insert('end', '¤³¤ÎÃÊÍî¤Ï¥Þ¡¼¥¸¥ó¤Î»ÈÍÑÎã¤Ç¤¹¡£¥¹¥¯¥ê¡¼¥ó', 
-         style_tag_margins)
-  insert('end', '¾å¤ÇÀÞ¤êÊÖ¤µ¤ì¤Æɽ¼¨¤µ¤ì¤Æ¤¤¤ë1¹Ô¤Î¥Æ¥­¥¹¥È¤Ç¤¹¡£', 
-         style_tag_margins)
-  insert('end', 'º¸Â¦¤Ë¤Ï2¼ïÎà¤Î¥Þ¡¼¥¸¥ó¤ò»ý¤Á¤Þ¤¹¡£', style_tag_margins)
-  insert('end', '1¹ÔÌܤËÂФ¹¤ë¤â¤Î¤È¡¢', style_tag_margins)
-  insert('end', '2¹ÔÌܰʹߤÎϢ³¤·¤¿¥Þ¡¼¥¸¥ó', style_tag_margins)
-  insert('end', '¤Ç¤¹¡£¤Þ¤¿±¦Â¦¤Ë¤â¥Þ¡¼¥¸¥ó¤¬¤¢¤ê¤Þ¤¹¡£', style_tag_margins)
-  insert('end', '¹Ô¤ÎÀÞ¤êÊÖ¤·°ÌÃÖ¤ò·è¤á¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-', style_tag_margins)
-  insert('end', '
-10. ¥¹¥Ú¡¼¥·¥ó¥°', style_tag_big)
-  insert('end', '3¤Ä¤Î¥Ñ¥é¥á¡¼¥¿¤Ç¹Ô¤Î¥¹¥Ú¡¼¥·¥ó¥°¤ò')
-  insert('end', 'À©¸æ¤¹
-¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Spacing1¤Ç¡¢¹Ô¤Î')
-  insert('end', '¾å¤Ë¤É¤Î¤¯¤é¤¤¤Î¶õ´Ö¤òÃÖ¤¯¤«¡¢
-spacing3')
-  insert('end', '¤Ç¹Ô¤Î²¼¤Ë¤É¤Î¤¯¤é¤¤¤Î¶õ´Ö¤òÃÖ¤¯¤«¡¢')
-  insert('end', '¹Ô¤¬ÀÞ¤êÊÖ¤µ¤ì¤Æ¤¤¤ë¤Ê¤é
-¤Ð¡¢spacing2¤Ç¡¢')
-  insert('end', '¥Æ¥­¥¹¥È¹Ô¤òÀ¸À®¤·¤Æ¤¤¤ë¹Ô¤Î´Ö¤Ë¤É¤Î¤¯¤é¤¤')
-  insert('end', '¤Î¶õ´Ö¤òÃÖ
-¤¯¤«¤ò¼¨¤·¤Þ¤¹¡£
-')
-  insert('end', '¤³¤ì¤é¤Î¥¤¥ó¥Ç¥ó¥È¤µ¤ì¤¿ÃÊÍî¤Ï¤É¤Î¤è¤¦¤Ë', 
-         style_tag_spacing)
-  insert('end', '¥¹¥Ú¡¼¥·¥ó¥°¤¬¤¬¹Ô¤ï¤ì¤ë¤Î¤«¤ò¼¨¤·¤Þ¤¹¡£', 
-         style_tag_spacing)
-  insert('end', '³ÆÃÊÍî¤Ï¼ÂºÝ¤Ï¥Æ¥­¥¹¥Èwidget', style_tag_spacing)
-  insert('end', '¤Î1¹Ô¤Ç¡¢widget¤Ë¤è¤Ã¤ÆÀÞ¤ê¾ö¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£
-', style_tag_spacing)
-  insert('end', 'Spacing1¤Ï¤³¤Î¥Æ¥­¥¹¥È¤Ç¤Ï10point¤Ë', style_tag_spacing)
-  insert('end', 'ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£', style_tag_spacing)
-  insert('end', '¤³¤ì¤Ë¤è¤ê¡¢ÃÊÍî¤Î´Ö¤ËÂ礭¤Ê´Ö³Ö¤¬', style_tag_spacing)
-  insert('end', '¸ºß¤·¤Æ¤¤¤Þ¤¹¡£', style_tag_spacing)
-  insert('end', 'Spacing2¤Ï2point¤ËÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£', style_tag_spacing)
-  insert('end', '¤³¤ì¤ÇÃÊÍî¤ÎÃæ¤Ë¤Û¤ó¤Î¾¯¤·´Ö³Ö¤¬Â¸ºß¤·¤Æ¤¤¤Þ¤¹¡£', 
-         style_tag_spacing)
-  insert('end', 'Spacing3¤Ï¤³¤ÎÎã¤Ç¤Ï»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤»¤ó¡£
-', style_tag_spacing)
-  insert('end', '´Ö³Ö¤¬¤É¤³¤Ë¤¢¤ë¤«¤ò¸«¤¿¤±¤ì¤Ð¡¢¤³¤ì¤é¤ÎÃÊÍî¤Î', 
-         style_tag_spacing)
-  insert('end', '¤Ê¤«¤Ç¥Æ¥­¥¹¥È¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£ÁªÂò¤Î', style_tag_spacing)
-  insert('end', 'ȿž¤·¤¿Éôʬ¤Ë¤Ï;ʬ¤Ë¤È¤é¤ì¤¿´Ö³Ö¤¬', style_tag_spacing)
-  insert('end', '´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£
-', style_tag_spacing)
-
-}
-
-txt.width 70
-txt.height 32
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/tcolor b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/tcolor
deleted file mode 100644 (file)
index 17f7e13..0000000
+++ /dev/null
@@ -1,534 +0,0 @@
-#!/usr/bin/env ruby
-# -*- coding: euc-jp -*-
-#
-# tcolor --
-# ¤³¤Î¥¹¥¯¥ê¥×¥È¤ÏRGB,HSB,CYM·Á¼°¤ò¥µ¥Ý¡¼¥È¤¹¤ë
-# ´Ê°×¥«¥é¡¼¥¨¥Ç¥£¥¿¤Ç¤¹¡£
-#
-# Copyright (C) 1998 Takaaki Tateishi(ttate@jaist.ac.jp)
-# last update: Thu Jun 18 06:32:35 JST 1998
-#
-
-# ¤Þ¤º¤Ïtk.rb¤òÆɤ߹þ¤à¡£
-
-require "tk"
-
-
-# Tk¤Ë¤è¤Ã¤ÆÊѹ¹¤µ¤ì¤ëÊÑ¿ô¤ÏTkVariable¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò»È¤¦¡£
-
-$colorSpace = TkVariable.new(:rgb)
-$master = nil
-$red = 65535
-$green = 0
-$blue = 0
-$color = "#ffff00000000"
-$updating = TkVariable.new(0)
-$autoUpdate = TkVariable.new(1)
-$name = TkVariable.new($color)
-$command = TkVariable.new("print(%%,\"\n\")")
-# $command = TkVariable.new("")
-$label1 = TkVariable.new("label1")
-$label2 = TkVariable.new("label2")
-$label3 = TkVariable.new("label3")
-
-
-# ¥ê¥½¡¼¥¹¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎÀßÄê
-if (TkVarAccess.new('tcl_platform')['platform'] == 'unix')
-  TkOptionDB.add('*Entry.background', 'white')
-end
-
-
-# ³Æ¥¤¥Ù¥ó¥ÈÍѤΥ᥽¥Ã¥É
-
-def rgbToHsv(red,green,blue)
-
-  if ( red > green )
-    max = red
-    min = green
-  else
-    max = green
-    min = red
-  end
-
-  if ( blue > max )
-    max = blue
-  else
-    if ( blue < min )
-      min = blue
-    end
-  end
-
-  range = max - min
-
-  if ( max == 0 )
-    sat = 0.0
-  else
-    sat = (max-min)/max
-  end
-
-  if ( sat == 0 )
-    hue = 0.0
-  else
-    rc = (max-red)/range
-    gc = (max-green)/range
-    bc = (max-blue)/range
-    if ( red == max )
-      hue = 0.166667 * (bc - gc)
-    else
-      if ( green == max )
-       hue = 0.166667 * (2.0 + rc - bc)
-      else
-       hue = 0.166667 * (4.0 + gc - rc)
-      end
-    end
-    if ( hue < 0.0 )
-      hue = hue + 1.0
-    end
-  end
-
-  [hue,sat,max/65535]
-end
-
-
-def hsbToRgb(hue,sat,value)
-  v = 65535.0 * value
-  if( sat == 0 )
-    ans = [v,v,v]
-  else
-    hue = hue*6.0
-    if ( hue >= 6 )
-      hue = 0.0
-    end
-    i = hue.to_i
-    f = hue - i
-    p = 65535.0 * value * (1.0 - sat)
-    q = 65535.0 * value * (1.0 - (sat * f))
-    t = 65535.0 * value * (1.0 - (sat * (1.0 - f)))
-    case i
-    when 0
-      ans = [v,t,p]
-    when 1
-      ans = [q,v,p]
-    when 2
-      ans = [p,v,t]
-    when 3
-      ans = [p,q,v]
-    when 4
-      ans = [t,p,v]
-    when 5
-      ans = [v,p,q]
-    else
-      raise(eException,"i value #{i} is out of range")
-    end
-  end
-  return ans
-end
-
-
-def _null_binding
-  Module.new.instance_eval{binding}
-end
-private :_null_binding
-
-def doUpdate 
-  newCmd = $command.to_s.gsub("%%","\"#{$color}\"")
-  eval(newCmd, _null_binding)
-end
-
-
-def tc_scaleChanged
-  if( $updating.to_i == 1 )
-    return 
-  end
-
-  $master = :scale if $master == nil
-
-  scale1 = $root.middle.middle.scale1
-  scale2 = $root.middle.middle.scale2
-  scale3 = $root.middle.middle.scale3
-
-  case $colorSpace.value.intern
-  when :rgb
-    $red = (scale1.get * 65.535).to_i
-    $green = (scale2.get * 65.535).to_i
-    $blue = (scale3.get * 65.535).to_i
-  when :cmy
-    $red = (65535 - scale1.get * 65.535).to_i
-    $green = (65535 - scale2.get * 65.535).to_i
-    $blue = (65535 - scale3.get * 65.535).to_i        
-  when :hsb
-    list = hsbToRgb(scale1.get / 1000.0,
-                   scale2.get / 1000.0,
-                   scale3.get / 1000.0)
-    $red = list[0]
-    $green = list[1]
-    $blue = list[2]
-  else
-    raise(Exception,"unknown colorSpace")
-  end
-  $color = format("#%04x%04x%04x",$red.to_i,$green.to_i,$blue.to_i)
-  $name.value = $color if $master == :scale
-  $root.middle.right.set_color($color)
-  if( $autoUpdate.to_i == 1 )
-    doUpdate
-  end
-  Tk.update(true)
-  $master = nil if $master == :scale
-end
-
-
-def tc_setScales
-  $updating.value = 1
-
-  scale1 = $root.middle.middle.scale1
-  scale2 = $root.middle.middle.scale2
-  scale3 = $root.middle.middle.scale3
-  
-  case $colorSpace.value.intern
-  when :rgb
-    scale1.set($red / 65.535)
-    scale2.set($green / 65.535)
-    scale3.set($blue / 65.535)
-  when :cmy
-    scale1.set((65535 - $red) / 65.535)
-    scale2.set((65535 - $green) / 65.535)
-    scale3.set((65535 - $blue) / 65.535)
-  when :hsb
-    list = rgbToHsv($red,$green,$blue)
-    scale1.set( list[0] * 1000.0 )
-    scale2.set( list[1] * 1000.0 )
-    scale3.set( list[2] * 1000.0 )
-  else
-    raise(Exception,"unknown colorSpace")
-  end
-
-  $updating.value = 0
-end
-
-
-def tc_loadNamedColor(name)
-  $name.value = name
-  $master = :name if $master == nil
-  if name[0,1] != "#" 
-    list = TkWinfo.rgb($root.middle.right.swatch,name)
-    $red = list[0]
-    $green = list[1]
-    $blue = list[2]
-  else
-    case name.length
-    when 4
-      fmt = /#(.{1})(.{1})(.{1})/
-      shift = 12
-    when 7
-      fmt = /#(.{2})(.{2})(.{2})/
-      shift = 8
-    when 10
-      fmt = /#(.{3})(.{3})(.{3})/
-      shift = 4
-    when 13
-      fmt = /#(.{4})(.{4})(.{4})/
-      shift = 0
-    else
-      raise(eException,"syntax error in color name \"#{name}\"")
-    end
-    name.scan(fmt){|strlist|
-      if strlist.length != 3
-       raise(eException,"syntax error in color name \"#{name}\"")
-      end
-      $red = strlist[0].hex
-      $green = strlist[1].hex
-      $blue = strlist[2].hex
-    }
-    $red = $red << shift
-    $green = $green << shift
-    $blue = $blue << shift
-  end
-  
-  tc_setScales
-  $color = format("#%04x%04x%04x",$red,$green,$blue)
-  $root.middle.right.set_color($color)
-  if $autoUpdate.to_i == 1
-    doUpdate
-  end
-  Tk.update(true)
-  $master = nil if $master == :name
-end
-
-
-def changeColorSpace(space)
-  case space
-  when :rgb
-    $label1.value = "Red"
-    $label2.value = "Green"
-    $label3.value = "Blue"
-  when :cmy
-    $label1.value = "Cyan"
-    $label2.value = "Magenta"
-    $label3.value = "Yellow"
-  when :hsb
-    $label1.value = "Hue"
-    $label2.value = "Saturation"
-    $label3.value = "Brightness"
-  end
-  tc_setScales
-end
-
-
-
-
-
-# tcolorÍѤΥá¥Ë¥å¡¼
-
-class TkColorMenuFrame<TkFrame
-  def initialize(parent)
-    super(parent,
-         "relief"=>"raised",
-         "borderwidth"=>"2")
-
-    # File¥á¥Ë¥å¡¼¥Ü¥¿¥ó¤ÎÀ¸À®
-    @file = TkMenubutton.new(self){|button|
-
-      # File¥á¥Ë¥å¡¼¤ÎºîÀ®
-      @file_menu = TkMenu.new(button){
-       add "radio",
-         "label" => "RGB color space",
-         "variable" => $colorSpace,
-         "value" => :rgb,
-         "underline" => "0",
-         "command" => proc{changeColorSpace(:rgb)}
-       add "radio",
-         "label" => "CMY color space",
-         "variable" => $colorSpace,
-         "value" => :cmy,
-         "underline" => "0",
-         "command" => proc{changeColorSpace(:cmy)}
-       add "radio",
-         "label" => "HSB color space",
-         "variable" => $colorSpace,
-         "value" => :hsb,
-         "underline" => "0",
-         "command" => proc{changeColorSpace(:hsb)}
-       add "separator"
-       add "radio",
-         "label" => "Automatic updates",
-         "variable" => $autoUpdate,
-         "value" => "1",
-         "underline" => "0"
-       add "radio",
-         "label" => "Manual updates",
-         "variable" => $autoUpdate,
-         "value" => "0",
-         "underline" => "0"
-       add "separator"
-       add "command",
-         "label" => "Exit program",
-         "underline" => "0",
-         "command" => proc{exit}
-      }
-      
-      # File¥á¥Ë¥å¡¼¤ÈFile¥Ü¥¿¥ó¤ò´ØÏ¢ÉÕ¤±¤ë
-      menu @file_menu
-
-      text "File"
-      underline "0"
-    }.pack("side"=>"left")
-
-    self
-  end
-end
-
-
-# ²¼Éô¤Î¥Õ¥ì¡¼¥à¤Î¤¿¤á¤Î¥¯¥é¥¹
-class TkColorBotFrame<TkFrame
-  def initialize(parent)
-    super(parent,
-         "relief"=> "raised",
-         "borderwidth"=> 2)
-
-    @commandLabel = TkLabel.new(self,
-                               "text"=> "Command:")
-    @command = TkEntry.new(self,
-                          "relief"=> "sunken",
-                          "borderwidth"=> "2",
-                          "textvariable"=> $command,
-                          "font"=> "-Adobe-Courier-Medium-R-Normal--*-120-*-*-*-*-*-*")
-    @update = TkButton.new(self,
-                          "text"=> "Update",
-                          "command"=> proc{doUpdate})
-    @commandLabel.pack("side"=>"left")
-    @update.pack("side"=>"right","pady"=>".1c","padx"=>".25c")
-    @command.pack("expand"=>"yes","fill"=>"x","ipadx"=>".25c")
-
-    self
-  end
-end    
-
-
-# ÃæÃʺ¸¤Î¥Õ¥ì¡¼¥à
-class TkColorMiddleLeftFrame<TkFrame
-  def initialize(parent)
-    super(parent)
-
-    for i in ["/usr/local/lib/X11rgb.txt","/usr/lib/X11/rgb.txt",
-       "/X11/R5/lib/X11/rgb.txt","/X11/R4/lib/rgb/rgb.txt",
-       "/usr/openwin/lib/X11/rgb.txt"]
-      if !File.readable?(i)
-       next
-      end
-      f = File.open(i)
-      @scroll = TkScrollbar.new(self,
-                               "orient"=>"vertical",
-                               "relief"=>"sunken",
-                               "borderwidth"=>"2")
-      @scroll.pack("side"=>"right","fill"=>"y")
-      @names = TkListbox.new(self,
-                            "width"=>"20",
-                            "height"=>"12",
-                            "yscrollcommand"=> proc{|first,last| @scroll.set first,last},
-                            "relief"=>"sunken",
-                            "borderwidth"=>"2",
-                            "exportselection"=>"false")
-      @scroll.command(proc{|*args| @names.yview(*args)})
-      @names.bind("Double-1",proc{
-                   tc_loadNamedColor(@names.get(@names.curselection))})
-      @names.pack("side"=>"left")
-      while (line = f.gets)
-       line.chop!
-       linelist = line.split(/[ \t]+/)
-       if linelist.length == 4
-         @names.insert("end",linelist[3])
-       end
-      end
-      f.close
-      break
-    end
-
-    self
-  end
-end
-
-
-# ÃæÃÊÃæ±û¤Î¥Õ¥ì¡¼¥à
-class TkColorMiddleMiddleFrame<TkFrame
-  # @scale1,@scale2,@scale3¤ò³°Éô¤«¤é»²¾È¤Î¤ßµö²Ä¤¹¤ë¡£(Êѹ¹ÉÔ²Ä)
-  attr_reader :scale1, :scale2, :scale3
-
-  def initialize(parent)
-    super(parent)
-
-    @f1 = TkFrame.new(self)
-    @f2 = TkFrame.new(self)
-    @f3 = TkFrame.new(self)
-    @f4 = TkFrame.new(self)
-
-    for f in [@f1,@f2,@f3]
-      f.pack("side"=>"top","expand"=>"yes")
-    end
-    @f4.pack("side"=>"top","expand"=>"yes","fill"=>"x")
-
-    @label1 = TkLabel.new(self,"textvariable"=>$label1)
-    @scale1 = TkScale.new(self,"from"=>"0","to"=>"1000","length"=>"6c",
-                         "orient"=>"horizontal",
-                         "command"=>proc{tc_scaleChanged})
-    @scale1.pack("side"=>"top","anchor"=>"w")
-    @label1.pack("side"=>"top","anchor"=>"w")
-
-    @label2 = TkLabel.new(self,"textvariable"=>$label2)
-    @scale2 = TkScale.new(self,"from"=>"0","to"=>"1000","length"=>"6c",
-                         "orient"=>"horizontal",
-                         "command"=>proc{tc_scaleChanged})
-    @scale2.pack("side"=>"top","anchor"=>"w")
-    @label2.pack("side"=>"top","anchor"=>"w")
-
-    @label3 = TkLabel.new(self,"textvariable"=>$label3)
-    @scale3 = TkScale.new(self,"from"=>"0","to"=>"1000","length"=>"6c",
-                         "orient"=>"horizontal",
-                         "command"=>proc{tc_scaleChanged})
-    @scale3.pack("side"=>"top","anchor"=>"w")
-    @label3.pack("side"=>"top","anchor"=>"w")
-
-    @nameLabel = TkLabel.new(self,"text"=>"Name:")
-    @name = TkEntry.new(self,"relief"=>"sunken","borderwidth"=>"2",
-                       "textvariable"=>$name,"width"=>"10",
-                       "font"=>"-Adobe-Courier-Medium-R-Normal--*-120-*-*-*-*-*-*")
-    @nameLabel.pack("side"=>"left")
-    @name.pack("side"=>"right", "expand"=>"1", "fill"=>"x")
-    @name.bind("Return",proc{tc_loadNamedColor $name.to_s})
-
-    self
-  end
-end
-
-
-class TkColorMiddleRightFrame<TkFrame
-  attr_reader :swatch
-
-  def initialize(parent)
-    super(parent)
-    @swatch = TkFrame.new(self, "width"=>"2c", "height"=>"5c",
-                         "background"=>$color)
-    @value = TkLabel.new(self, 
-                        "text"=>$color,
-                        "width"=>"13",
-                        "font"=>"-Adobe-Courier-Medium-R-Normal--*-120-*-*-*-*-*-*")
-    @swatch.pack("side"=>"top","expand"=>"yes","fill"=>"both")
-    @value.pack("side"=>"bottom","pady"=>".25c")
-
-    self
-  end
-
-  def set_color(color)
-    @swatch["background"] = color
-    @value["text"] = color
-  end
-end
-
-
-
-# ÃæÃʤΥե졼¥à
-class TkColorMiddleFrame<TkFrame
-  attr_reader :left, :middle, :right
-
-  def initialize(parent)
-    super(parent,
-         "relief"=> "raised",
-         "borderwidth"=> "2")
-
-    @left = TkColorMiddleLeftFrame.new(self)
-    @left.pack("side"=>"left","padx"=>".25c","pady"=>".25c")
-
-    @middle = TkColorMiddleMiddleFrame.new(self)
-    @middle.pack("side"=>"left","expand"=>"yes","fill"=>"y")
-
-    @right = TkColorMiddleRightFrame.new(self)
-    @right.pack("side"=>"left","padx"=>".25c","pady"=>".25c","anchor"=>"s")
-
-    self
-  end
-end
-
-
-class TkColor<TkRoot
-  attr_reader :menu, :bottom, :middle
-
-  def initialize(*args)
-    super(*args)
-    @menu = TkColorMenuFrame.new(self)
-    @menu.pack("side"=>"top", "fill"=>"x")
-
-    @bottom = TkColorBotFrame.new(self)
-    @bottom.pack("side"=>"bottom","fill"=>"x")
-
-    @middle = TkColorMiddleFrame.new(self)
-    @middle.pack("side"=>"top","fill"=>"both")
-
-    self
-  end
-end
-
-
-$root = TkColor.new
-
-# ¥¤¥Ù¥ó¥È¤òÂԤİ٤˥롼¥×¤ËÆþ¤ë¡£
-changeColorSpace :rgb
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/text.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/text.rb
deleted file mode 100644 (file)
index 0ae480e..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# text (basic facilities) widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($text_demo) && $text_demo
-  $text_demo.destroy 
-  $text_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$text_demo = TkToplevel.new {|w|
-  title("Text Demonstration - Basic Facilities")
-  iconname("text")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($text_demo).pack(:fill=>:both, :expand=>true)
-
-# version check
-if ((Tk::TK_VERSION.split('.').collect{|n| n.to_i} <=> [8,4]) < 0)
-  undo_support = false
-else
-  undo_support = true
-end
-
-# frame À¸À®
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $text_demo
-      $text_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'text'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# text À¸À®
-TkText.new(base_frame){|t|
-  # À¸À®
-  relief 'sunken'
-  bd 2
-  setgrid 1
-  height 30
-  TkScrollbar.new(base_frame) {|s|
-    pack('side'=>'right', 'fill'=>'y')
-    command proc{|*args| t.yview(*args)}
-    t.yscrollcommand proc{|first,last| s.set first,last}
-  }
-  pack('expand'=>'yes', 'fill'=>'both')
-
-  # ¥Æ¥­¥¹¥ÈÁÞÆþ
-  insert('0.0', <<EOT)
-¤³¤Î¥¦¥£¥ó¥É¥¦¤Ï¥Æ¥­¥¹¥È widget ¤Ç¤¹¡£1¹Ô¤Þ¤¿¤Ï¤½¤ì°Ê¾å¤Î¥Æ¥­¥¹¥È¤òɽ
-¼¨¡¦ÊÔ½¸¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£°Ê²¼¤Ï¥Æ¥­¥¹¥È widget ¤Ç¤Ç¤­¤ëÁàºî¤Ë¤Ä¤¤¤Æ
-¤Þ¤È¤á¤¿¤â¤Î¤Ç¤¹¡£
-
-1. ¥¹¥¯¥í¡¼¥ë¡£¥¹¥¯¥í¡¼¥ë¥Ð¡¼¤Ç¥Æ¥­¥¹¥È¤Îɽ¼¨Éôʬ¤òÆ°¤«¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-
-2. ¥¹¥­¥ã¥Ë¥ó¥°¡£¥Æ¥­¥¹¥È¤Î¥¦¥£¥ó¥É¥¦¤Ç¥Þ¥¦¥¹¥Ü¥¿¥ó2 (Ãæ¥Ü¥¿¥ó¤ò) ¤ò²¡
-¤·¤Æ¾å²¼¤Ë¥É¥é¥Ã¥°¤·¤Æ¤¯¤À¤µ¤¤¡£¤½¤¦¤¹¤ë¤È¥Æ¥­¥¹¥È¤¬¹â®¤Ç¥É¥é¥Ã¥°¤µ¤ì¡¢
-ÆâÍƤò¤¶¤Ã¤Èį¤á¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-
-3. ¥Æ¥­¥¹¥È¤ÎÁÞÆþ¡£¥Þ¥¦¥¹¥Ü¥¿¥ó1 (º¸¥Ü¥¿¥ó) ¤ò²¡¤·¡¢ÁÞÆþ¥«¡¼¥½¥ë¤ò¥»¥Ã
-¥È¤·¤Æ¤«¤é¥Æ¥­¥¹¥È¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£ÆþÎϤ·¤¿¤â¤Î¤¬ widget ¤ËÆþ¤ê¤Þ¤¹¡£
-
-4. ÁªÂò¡£¤¢¤ëÈϰϤÎʸ»ú¤òÁªÂò¤¹¤ë¤Ë¤Ï¥Þ¥¦¥¹¥Ü¥¿¥ó1 ¤ò²¡¤·¡¢¥É¥é¥Ã¥°¤·
-¤Æ¤¯¤À¤µ¤¤¡£°ìÅ٥ܥ¿¥ó¤òÎ¥¤·¤¿¤é¡¢¥·¥Õ¥È¥­¡¼¤ò²¡¤·¤Ê¤¬¤é¥Ü¥¿¥ó1 ¤ò²¡¤¹
-¤³¤È¤ÇÁªÂòÈϰϤÎÄ´À°¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤ÏÁªÂòÈϰϤκǸå¤ò¥Þ¥¦¥¹¥«¡¼¥½¥ë¤Ë
-ºÇ¤â¶á¤¤°ÌÃ֤˥ꥻ¥Ã¥È¤·¡¢¥Ü¥¿¥ó¤òÎ¥¤¹Á°¤Ë¥Þ¥¦¥¹¤ò¥É¥é¥Ã¥°¤¹¤ë¤³¤È¤Ç¤µ
-¤é¤ËÁªÂòÈϰϤòÄ´À°¤Ç¤­¤Þ¤¹¡£¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤Ç¥ï¡¼¥É¤ò¡¢¤Þ¤¿¥È¥ê¥×¥ë¥¯¥ê¥Ã
-¥¯¤Ç¹ÔÁ´ÂΤòÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
-
-5. ¾Ãµî¤ÈÃÖ´¹¡£¥Æ¥­¥¹¥È¤ò¾Ãµî¤¹¤ë¤Ë¤Ï¡¢¾Ãµî¤·¤¿¤¤Ê¸»ú¤òÁªÂò¤·¤Æ¥Ð¥Ã¥¯
-¥¹¥Ú¡¼¥¹¤«¥Ç¥ê¡¼¥È¥­¡¼¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£¤¢¤ë¤¤¤Ï¡¢¿·¤·¤¤¥Æ¥­¥¹¥È¤ò
-ÆþÎϤ¹¤ë¤ÈÁªÂò¤µ¤ì¤¿¥Æ¥­¥¹¥È¤ÈÃÖ´¹¤µ¤ì¤Þ¤¹¡£
-
-6. ÁªÂòÉôʬ¤Î¥³¥Ô¡¼¡£ÁªÂòÉôʬ¤ò¤³¤Î¥¦¥£¥ó¥É¥¦¤ÎÃæ¤Î¤É¤³¤«¤Ë¥³¥Ô¡¼¤¹¤ë
-¤Ë¤Ï¡¢¤Þ¤º¥³¥Ô¡¼¤·¤¿¤¤½ê¤òÁªÂò(¤³¤³¤Ç¡¢¤¢¤ë¤¤¤ÏÊ̤Υ¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç)
-¤·¡¢¥Ü¥¿¥ó 2 ¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¡¢ÁÞÆþ¥«¡¼¥½¥ë¤Î°ÌÃ֤˥³¥Ô¡¼¤·¤Æ¤¯¤À¤µ¤¤¡£
-
-7. ÊÔ½¸¡£¥Æ¥­¥¹¥È widget ¤Ï Emacs ¤Î¥­¡¼¥Ð¥¤¥ó¥É¤Ë²Ã¤¨¤Æɸ½àŪ¤Ê¤Î Motif
-¤ÎÊÔ½¸µ¡Ç½¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹¤È¥³¥ó¥È¥í¡¼¥ë-H ¤ÏÁÞÆþ
-¥«¡¼¥½¥ë¤Îº¸Â¦¤Îʸ»ú¤òºï½ü¤·¤Þ¤¹¡£¥Ç¥ê¡¼¥È¥­¡¼¤È¥³¥ó¥È¥í¡¼¥ë-D ¤ÏÁÞÆþ
-¥«¡¼¥½¥ë¤Î±¦Â¦¤Îʸ»ú¤òºï½ü¤·¤Þ¤¹¡£Meta-¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹¤ÏÁÞÆþ¥«¡¼¥½¥ë¤Î
-±¦Â¦¤Îñ¸ì¤òºï½ü¤·¡¢Meta-D ¤ÏÁÞÆþ¥«¡¼¥½¥ë¤Îº¸Â¦¤Îñ¸ì¤òºï½ü¤·¤Þ¤¹¡£
-¥³¥ó¥È¥í¡¼¥ë-K ¤ÏÁÞÆþ¥«¡¼¥½¥ë¤«¤é¹ÔËö¤Þ¤Ç¤òºï½ü¤·¡¢¤½¤Î°ÌÃ֤˲þ¹Ô
-¤·¤«¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢²þ¹Ô¤òºï½ü¤·¤Þ¤¹¡£#{
-      if undo_support
-        undo_text = "Control-z ¤ÏºÇ¸å¤Ë¹Ô¤Ã¤¿Êѹ¹¤Î¼è¤ê¾Ã¤·(undo)¤ò¹Ô¤¤¡¢"
-        case $tk_platform['platform']
-        when "unix", "macintosh"
-          undo_text << "Control-Shift-z"
-        else # 'windows'
-          undo_text << "Control-y"
-        end
-        undo_text << "¤Ïundo¤·¤¿Êѹ¹¤ÎºÆŬÍÑ(redo)¤ò¹Ô¤¤¤Þ¤¹¡£"
-      else
-        ""
-      end
-}
-
-
-8. ¥¦¥£¥ó¥É¥¦¤Î¥ê¥µ¥¤¥º¡£¤³¤Î widget ¤Ï "setGrid" ¥ª¥×¥·¥ç¥ó¤ò¥ª¥ó¤Ë¤·
-¤Æ¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¥¦¥£¥ó¥É¥¦¤ò¥ê¥µ¥¤¥º¤¹¤ë»þ¤Ë¤Ï¹â¤µ¤ÈÉý¤Ï¾ï¤Ëʸ»ú¹â¤Èʸ
-»úÉý¤ÎÀ°¿ôÇܤˤʤê¤Þ¤¹¡£¤Þ¤¿¡¢¥¦¥£¥ó¥É¥¦¤ò¶¹¤¯¤·¤¿¾ì¹ç¤Ë¤ÏŤ¤¹Ô¤¬¼«Æ°
-Ū¤ËÀÞ¤êÊÖ¤µ¤ì¡¢¾ï¤ËÁ´¤Æ¤ÎÆâÍƤ¬¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
-EOT
-
-  set_insert('0.0')
-}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/textpeer.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/textpeer.rb
deleted file mode 100644 (file)
index 4967a99..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# text widget peering demo (called by 'widget')
-#
-# based on Tcl/Tk8.5.0 widget demos
-
-if defined?($textpeer_demo) && $textpeer_demo
-  $textpeer_demo.destroy 
-  $textpeer_demo = nil
-end
-
-# demo toplevel widget
-$textpeer_demo = TkToplevel.new {|w|
-  title("Text Wdget Peering Demonstration")
-  iconname("textpeer")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($textpeer_demo).pack(:fill=>:both, :expand=>true)
-
-count = [0]
-
-## Define a widget that we peer from; it won't ever actually be shown though
-first = TkText.new(base_frame, :widgetname=>"text#{count[0] += 1}")
-first.insert :end,"¤³¤Î¥Ç¥â¤Ï°ì¤Ä¤ÎÁȤòÀ®¤·¤¿¥Æ¥­¥¹¥È¥¦¥£¥¸¥§¥Ã¥È¤ò¼¨¤·¤Þ¤¹¡£"
-first.insert :end,"¤½¤ì¤é¤Î¥Æ¥­¥¹¥È¥¦¥£¥¸¥§¥Ã¥È¤ÏÂÐÅù(¥Ô¥¢;peer)¤Î´Ø·¸¤Ë"
-first.insert :end,"¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£"
-first.insert :end,"¤½¤ì¤é¤Ï¡¢´ðÈפȤʤë¥Ç¡¼¥¿¥â¥Ç¥ë¤Ï¶¦Ä̤Τâ¤Î¤ò»ý¤Á¤Þ¤¹¤¬¡¢"
-first.insert :end,"²èÌÌɽ¼¨°ÌÃÖ¡¢ÊÔ½¸°ÌÃÖ¡¢ÁªÂòÈÏ°Ï(selection)¤Ë¤Ä¤¤¤Æ¤Ï"
-first.insert :end,"ÆÈΩ¤Ë»ý¤Ä¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£"
-first.insert :end,"³Æ¥Æ¥­¥¹¥È¥¦¥£¥¸¥§¥Ã¥È¤ÎÏƤˤ¢¤ë"
-first.insert :end,"¡Ö¥Ô¥¢(peer)¤ÎºîÀ®¡×¥Ü¥¿¥ó¤ò»È¤¨¤Ð¡¢"
-first.insert :end,"¿·¤¿¤Ê¥Ô¥¢¤òÄɲ乤뤳¤È¤¬²Äǽ¤Ç¤¹¡£"
-first.insert :end,"¤Þ¤¿¡Ö¥Ô¥¢(peer)¤Î¾Ãµî¡×¥Ü¥¿¥ó¤ò»È¤¨¤Ð¡¢"
-first.insert :end,"ÆÃÄê¤Î¥Ô¥¢¥¦¥£¥¸¥§¥Ã¥È¤ò¾Ãµî¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£"
-
-Tk.update_idletasks  ## for 'first' widget
-
-## Procedures to make and kill clones; most of this is just so that the demo
-## looks nice...
-def makeClone(count, win, txt)
-  cnt = (count[0] += 1)
-  peer = TkText::Peer.new(txt, win, :widgetname=>"text#{cnt}")
-  sbar = TkScrollbar.new(win, :widgetname=>"sb#{cnt}")
-  peer.yscrollbar sbar
-  b1 = TkButton.new(win, :widgetname=>"clone#{cnt}", 
-                    :text=>'¥Ô¥¢(peer)¤ÎºîÀ®', 
-                    :command=>proc{makeClone(count, win, peer)})
-  b2 = TkButton.new(win, :widgetname=>"kill#{cnt}", 
-                    :text=>'¥Ô¥¢(peer)¤Î¾Ãµî', 
-                    :command=>proc{killClone(win, cnt)})
-  row = cnt * 2
-  TkGrid.configure(peer, sbar, b1, :sticky=>'nsew', :row=>row)
-  TkGrid.configure('^',  '^',  b2, :sticky=>'nsew', :row=>(row+=1))
-  TkGrid.configure(b1,  b2, :sticky=>'new')
-  TkGrid.rowconfigure(win,  b2, :weight=>1)
-end
-
-def killClone(win, cnt)
-  Tk.destroy("#{win.path}.text#{cnt}",  "#{win.path}.sb#{cnt}", 
-             "#{win.path}.clone#{cnt}", "#{win.path}.kill#{cnt}")
-end
-
-## Now set up the GUI
-makeClone(count, base_frame, first)
-makeClone(count, base_frame, first)
-first.destroy
-
-## See Code / Dismiss buttons
-TkFrame.new(base_frame){|f|
-  TkButton.new(f, :text=>'ÊĤ¸¤ë', :width=>15, :command=>proc{
-                 $textpeer_demo.destroy
-                 $textpeer_demo = nil
-               }).pack(:side=>:left, :expand=>true)
-
-  TkButton.new(f, :text=>'¥³¡¼¥É»²¾È', :width=>15, :command=>proc{
-                 showCode 'textpeer'
-               }).pack(:side=>:left, :expand=>true)
-
-  TkGrid.configure(f, '-', '-', :sticky=>'ew', :row=>5000)
-}
-TkGrid.columnconfigure(base_frame, 0, :weight=>1)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/timer b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/timer
deleted file mode 100644 (file)
index 58a41d0..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/usr/bin/env ruby
-#
-# timer --
-# This script generates a counter with start,stop and reset buttons.
-#
-# Copyright (C) 1998 Takaaki Tateishi (ttate@jaist.ac.jp)
-# last update: Sat Jun 27 12:24:14 JST 1998
-#
-
-require "tk"
-require "thread"
-require "tkafter"
-
-$time = "0.00"
-$m = Mutex.new
-$loop = false
-
-def timer_stop
-  $loop = false
-  $m.lock
-end
-
-def timer_start
-  $loop = true
-  $m.unlock
-end
-
-def timer_reset
-  $time = "0.00"
-  $root.countframe.counter['text'] = $time
-end
-
-def timer_loop
-  if $loop
-    $time = $time.succ
-    $root.countframe.counter['text'] = $time
-  end
-  Tk.after(10,proc{timer_loop})
-end
-
-
-#
-# thread version
-#
-def timer_loop2
-  while true
-    $m.lock
-    $time = $time.succ
-    $root.countframe.counter['text'] = $time
-    sleep(0.01)
-    $m.unlock
-  end
-end
-
-#
-# TkAfter
-#
-def timer_loop3
-  if $loop
-    $time = $time.succ
-    $root.countframe.counter['text'] = $time
-  end
-end
-
-
-class CountFrame < TkFrame
-  attr_reader :counter
-
-  def initialize(parent=nil,keys=nil)
-    super(parent,keys)
-    @counter = TkLabel.new(self,
-                          'text'=>$time, 
-                          'relief'=>'raised')
-    @counter.pack('fill'=>'both')
-    self
-  end
-end
-
-
-class ButtonFrame < TkFrame
-  def initialize(parent=nil,keys=nil)
-    super(parent,keys)
-=begin
-    @stop = TkButton.new(self,
-                        'text'=>'Stop',
-                        'command'=>proc{timer_stop})
-    @start = TkButton.new(self,
-                         'text'=>'Start',
-                         'command'=>proc{timer_start})
-=end
-    @stop  = TkButton.new(self, :text=>'Stop',  :state=>:disabled)
-    @start = TkButton.new(self, :text=>'Start', :state=>:normal)
-
-    @stop.command proc{
-      timer_stop
-      @start.state(:normal)
-      @stop.state(:disabled)
-    }
-    @start.command proc{
-      timer_start
-      @stop.state(:normal)
-      @start.state(:disabled)
-    }
-
-    @reset = TkButton.new(self,
-                         'text'=>'Reset',
-                         'command'=>proc{timer_reset})
-    for b in [@stop,@start,@reset]
-      b.pack('side'=>'left', 'fill'=>'both', 'expand'=>'yes')
-    end
-  end
-end
-
-
-class Timer < TkRoot
-  attr_reader :countframe
-
-  def initialize(*args)
-    super(*args)
-    @countframe = CountFrame.new(self)
-    @buttonframe = ButtonFrame.new(self)
-    for f in [@buttonframe,@countframe]
-      f.pack('side'=>'top', 'fill'=>'both')
-    end
-    self
-  end
-end
-
-
-$root = Timer.new
-
-#$thread = Thread.start{timer_loop2}
-#timer_loop
-TkAfter.new(10,-1,proc{timer_loop3}).start
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/toolbar.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/toolbar.rb
deleted file mode 100644 (file)
index 9cb3834..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# toolbar.rb --
-#
-# This demonstration script creates a toolbar that can be torn off.
-#
-# based on "Id: toolbar.tcl,v 1.3 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($toolbar_demo) && $toolbar_demo
-  $toolbar_demo.destroy 
-  $toolbar_demo = nil
-end
-
-$toolbar_demo = TkToplevel.new {|w|
-  title("Ttk Menu Buttons")
-  iconname("toolbar")
-  positionWindow(w)
-}
-
-base_frame = Ttk::Frame.new($toolbar_demo).pack(:fill=>:both, :expand=>true)
-
-if Tk.windowingsystem != 'aqua'
-  msg = Ttk::Label.new(base_frame, :wraplength=>'4i', :text=><<EOL)
-¤³¤Î¥Ç¥â¤Ç¤Ï¡¤¥Ä¡¼¥ë¥Ð¡¼¤ò¤É¤Î¤è¤¦¤Ë¤·¤ÆŬÀڤ˥ơ¼¥ÞÂбþ¤µ¤»¤ë¤«¡¤\
-¤Þ¤¿¡¤¤É¤Î¤è¤¦¤Ë¤·¤ÆÀÚ¤êÎ¥¤·²Äǽ¤Ë¤¹¤ë¤«¤ò¼¨¤·¤Æ¤¤¤Þ¤¹\
-¡Ê¤¿¤À¤·¡¤¥Ä¡¼¥ë¥Ð¡¼¤ÎÀÚ¤êÎ¥¤·¤Ë¤ÏTcl/Tk8.5°Ê¾å¤Îµ¡Ç½¤¬É¬ÍפǤ¹¡Ë¡¥\
-¥Ä¡¼¥ë¥Ð¡¼¤Î¥Ü¥¿¥ó¤Ï¡¤'Toolbutton'¥¹¥¿¥¤¥ë¤ò»ÈÍѤ¹¤ë¤è¤¦¤ËÌÀ¼¨¤¹¤ë¤³¤È¤Ç¡¤\
-"toolbar style"¥Ü¥¿¥ó¤È¤Ê¤ë¤è¤¦¤Ë°À­ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡¥\
-¥Ä¡¼¥ë¥Ð¡¼¤Îº¸Ã¼¤Ë¤Ï´Êñ¤Ê¥Þ¡¼¥«¡¼¤¬ÃÖ¤«¤ì¤Æ¤¤¤Þ¤¹¡¥\
-¥Þ¡¼¥«¡¼¾å¤Ë¥Þ¥¦¥¹¥«¡¼¥½¥ë¤¬Íè¤ë¤È°ÜÆ°¥¢¥¤¥³¥ó¤Ë¥«¡¼¥½¥ë¤¬ÊѲ½¤·¤Þ¤¹¡¥\
-¤½¤³¤Ç¥Ä¡¼¥ë¥Ð¡¼¤òÆ°¤«¤¹¤è¤¦¤Ë¥É¥é¥Ã¥°¤¹¤ë¤È¡¤\
-¥Ä¡¼¥ë¥Ð¡¼Á´ÂΤòÀÚ¤êÎ¥¤·¤ÆÆÈΩ¤·¤¿¥È¥Ã¥×¥ì¥Ù¥ë¥¦¥£¥¸¥§¥Ã¥È¤Ë\
-¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥\
-ÀÚ¤êÎ¥¤·¤¿¥Ä¡¼¥ë¥Ð¡¼¤¬ÉÔÍפȤʤä¿»þ¤Ë¤Ï¡¤\
-°ìÈÌŪ¤Ê¥È¥Ã¥×¥ì¥Ù¥ë¥¦¥£¥¸¥§¥Ã¥È¤ÈƱÍͤËñ½ã¤ËÊĤ¸¤ë¤³¤È¤Ç¡¤
-ºÆ¤Ó¸µ¤Î¥¦¥£¥ó¥É¥¦¤ËÄ¥¤êÉÕ¤±¤é¤ì¤ë¤Ç¤·¤ç¤¦¡¥
-EOL
-else
-  msg = Ttk::Label.new(base_frame, :wraplength=>'4i', :text=><<EOL)
-¤³¤Î¥Ç¥â¤Ç¤Ï¡¤¥Ä¡¼¥ë¥Ð¡¼¤ò¤É¤Î¤è¤¦¤Ë¤·¤ÆŬÀڤ˥ơ¼¥ÞÂбþ¤µ¤»¤ë¤«¤ò\
-¼¨¤·¤Æ¤¤¤Þ¤¹¡¥\
-¥Ä¡¼¥ë¥Ð¡¼¤Î¥Ü¥¿¥ó¤Ï¡¤'Toolbutton'¥¹¥¿¥¤¥ë¤ò»ÈÍѤ¹¤ë¤è¤¦¤ËÌÀ¼¨¤¹¤ë¤³¤È¤Ç¡¤\
-"toolbar style"¥Ü¥¿¥ó¤È¤Ê¤ë¤è¤¦¤Ë°À­ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡¥
-EOL
-end
-
-## Set up the toolbar hull
-tbar_base = Tk::Frame.new(base_frame,  # Tk É¸½à¤Î frame ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡¥
-                          :widgetname=>'toolbar') # ¥¦¥£¥ó¥É¥¦¥¿¥¤¥È¥ëʸ»úÎó¤È¤¹¤ë¤¿¤á¤Ë¡¤¥¦¥£¥¸¥§¥Ã¥È̾¤òÌÀ¼¨¤·¤Æ¤¤¤Þ¤¹¡¥
-sep = Ttk::Separator.new(base_frame)
-to_base = Ttk::Frame.new(tbar_base, :cursor=>'fleur')
-if Tk.windowingsystem != 'aqua'
-  to  = Ttk::Separator.new(to_base, :orient=>:vertical)
-  to2 = Ttk::Separator.new(to_base, :orient=>:vertical)
-  to.pack(:fill=>:y, :expand=>true, :padx=>2, :side=>:left)
-  to2.pack(:fill=>:y, :expand=>true, :side=>:left)
-end
-
-contents = Ttk::Frame.new(tbar_base)
-Tk.grid(to_base, contents, :sticky=>'nsew')
-tbar_base.grid_columnconfigure(contents, :weight=>1)
-contents.grid_columnconfigure(1000, :weight=>1)
-
-if Tk.windowingsystem != 'aqua'
-  ## Bindings so that the toolbar can be torn off and reattached
-  to_base.bind('B1-Motion', '%X %Y'){|x, y| tbar_base.tearoff(to_base, x, y)}
-  to.     bind('B1-Motion', '%X %Y'){|x, y| tbar_base.tearoff(to_base, x, y)}
-  to2.    bind('B1-Motion', '%X %Y'){|x, y| tbar_base.tearoff(to_base, x, y)}
-  def tbar_base.tearoff(w, x, y)
-    on_win = TkWinfo.containing(x, y)
-    return unless (on_win && on_win.path =~ /^#{@path}(\.|$)/)
-    self.grid_remove
-    w.grid_remove
-    self.wm_manage
-    # self.wm_title('Toolbar') # ¤â¤·¥¦¥£¥¸¥§¥Ã¥È̾¤ò¥¦¥£¥ó¥É¥¦¥¿¥¤¥È¥ë¤Ë¤·¤¿¤¯¤Ê¤¤¤Ê¤é¡¤¤³¤³¤ÇÀßÄꤷ¤Æ¤¯¤À¤µ¤¤
-    self.wm_protocol('WM_DELETE_WINDOW'){ self.untearoff(self) }
-  end
-  def tbar_base.untearoff(w)
-    self.wm_forget
-    w.grid
-    self.grid
-  end
-end
-
-## Some content for the rest of the toplevel
-text = TkText.new(base_frame, :width=>40, :height=>10)
-
-## Toolbar contents
-tb_btn = Ttk::Button.new(tbar_base, :text=>'¥Ü¥¿¥ó', :style=>'Toolbutton', 
-                         :command=>proc{
-                           text.insert(:end, "¥Ü¥¿¥ó¤¬²¡¤µ¤ì¤Þ¤·¤¿¡¥\n")
-                         })
-tb_chk = Ttk::Checkbutton.new(tbar_base, :text=>'¥Á¥§¥Ã¥¯¥Ü¥¿¥ó', 
-                              :style=>'Toolbutton', 
-                              :variable=>(check = TkVariable.new), 
-                              :command=>proc{
-                                text.insert(:end, "¥Á¥§¥Ã¥¯¥Ü¥¿¥ó¤ÎÃͤÏ#{check.value}¤Ç¤¹¡¥\n")
-                              })
-tb_mbtn = Ttk::Menubutton.new(tbar_base, :text=>'¥á¥Ë¥å¡¼')
-tb_combo = Ttk::Combobox.new(tbar_base, :value=>TkFont.families, 
-                             :state=>:readonly)
-tb_mbtn.menu(menu = Tk::Menu.new(tb_mbtn))
-menu.add(:command, :label=>'Just', :command=>proc{text.insert(:end, "Just\n")})
-menu.add(:command, :label=>'An', :command=>proc{text.insert(:end, "An\n")})
-menu.add(:command, :label=>'Example', 
-         :command=>proc{text.insert(:end, "Example\n")})
-tb_combo.bind('<ComboboxSelected>'){ text.font.family = tb_combo.get }
-
-## Arrange contents
-Tk.grid(tb_btn, tb_chk, tb_mbtn, tb_combo, 
-        :in=>contents, :padx=>2, :sticky=>'ns')
-Tk.grid(tbar_base, :sticky=>'ew')
-Tk.grid(sep, :sticky=>'ew')
-Tk.grid(msg, :sticky=>'ew')
-Tk.grid(text, :sticky=>'nsew')
-base_frame.grid_rowconfigure(text, :weight=>1)
-base_frame.grid_columnconfigure(text, :weight=>1)
-
-## See Code / Dismiss buttons
-Ttk::Frame.new(base_frame) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'¥³¡¼¥É»²¾È', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'toolbar'}), 
-         Ttk::Button.new(frame, :text=>'ÊĤ¸¤ë', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $toolbar_demo.destroy
-                           $toolbar_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  Tk.grid(frame, :sticky=>'ew')
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/tree.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/tree.rb
deleted file mode 100644 (file)
index c3b4191..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# tree.rb --
-#
-# This demonstration script creates a toplevel window containing a Ttk
-# tree widget.
-#
-# based on "Id: tree.tcl,v 1.4 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($tree_demo) && $tree_demo
-  $tree_demo.destroy 
-  $tree_demo = nil
-end
-
-$tree_demo = TkToplevel.new {|w|
-  title("Directory Browser")
-  iconname("tree")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($tree_demo).pack(:fill=>:both, :expand=>true)
-
-## Explanatory text
-Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', 
-               :justify=>:left, :anchor=>'n', :padding=>[10, 2, 10, 6], 
-               :text=><<EOL).pack(:fill=>:x)
-Ttk¤È¤Ï¡¤¥Æ¡¼¥Þ»ØÄê²Äǽ¤Ê¿·¤·¤¤¥¦¥£¥¸¥§¥Ã¥È½¸¹ç¤Ç¤¹¡¥\
-¤³¤Î¥µ¥ó¥×¥ë¤Ï¡¤¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¤è¤¦¤Ê³¬ÁØŪ¤Ê¥Ç¡¼¥¿½¸¹ç¤ò\
-»²¾È¤Ç¤­¤ë¤è¤¦¤Ë¤·¤¿Ttk::Treeview¥¦¥£¥¸¥§¥Ã¥È¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡¥\
-Ttk::Treeview¥¦¥£¥¸¥§¥Ã¥È¤Ï¡¤ÌÚ¹½Â¤¼«ÂΤÎɽ¼¨¤ò²Äǽ¤Ë¤¹¤ë¤À¤±¤Ç¤Ê¤¯¡¤\
-ÄɲþðÊó(¤³¤Î¥µ¥ó¥×¥ë¤Î¾ì¹ç¤Ï¥Õ¥¡¥¤¥ë¥µ¥¤¥º)¤òɽ¼¨¤¹¤ë¤¿¤á¤Ë\
-Ǥ°Õ¤Î¸Ä¿ô¤ÎÄɲå«¥é¥à¤â°·¤¦¤³¤È¤â¤Ç¤­¤Þ¤¹¡¥\
-¤Þ¤¿¡¤¥«¥é¥à¤Î¥¿¥¤¥È¥ë´Ö¤Î¶èÀÚ¤êÉôʬ¤ò¥É¥é¥Ã¥°¤¹¤ë¤³¤È¤Ç¡¤\
-¥«¥é¥à¤ÎÉý¤òÊѹ¹¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡¥
-EOL
-
-## See Code / Dismiss
-Ttk::Frame.new(base_frame) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'¥³¡¼¥É»²¾È', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'tree'}), 
-         Ttk::Button.new(frame, :text=>'ÊĤ¸¤ë', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $tree_demo.destroy
-                           $tree_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x)
-}
-
-## Code to populate the roots of the tree (can be more than one on Windows)
-def populate_roots(tree)
-  TkComm.simplelist(Tk.tk_call('file', 'volumes')).sort.each{|dir|
-    populate_tree(tree, tree.insert(nil, :end, :text=>dir, 
-                                    :values=>[dir, 'directory']))
-  }
-end
-
-## Code to populate a node of the tree
-def populate_tree(tree, node)
-  return if tree.get(node, :type) != 'directory'
-
-  path = tree.get(node, :fullpath)
-  tree.delete(tree.children(node))
-  Dir.glob("#{path}/*").sort.each{|f|
-    type = File.ftype(f)
-    id = tree.insert(node, :end, 
-                     :text=>File.basename(f), :values=>[f, type]).id
-    if type == 'directory'
-      ## Make it so that this node is openable
-      tree.insert(id, 0, :text=>'dummy')
-      tree.itemconfigure(id, :text=>File.basename(f))
-    elsif type == 'file'
-      size = File.size(f)
-      if size >= 1024*1024*1024
-        size = '%.1f GB' % (size.to_f/1024/1024/1024)
-      elsif size >= 1024*1024
-        size = '%.1f MB' % (size.to_f/1024/1024)
-      elsif size >= 1024
-        size = '%.1f KB' % (size.to_f/1024)
-      else
-        size = '%.1f bytes' % (size.to_f/1024)
-      end
-      tree.set(id, :size, size)
-    end
-  }
-
-  # Stop this code from rerunning on the current node
-  tree.set(node, :type, 'processed_directory')
-end
-
-## Create the tree and set it up
-tree = Ttk::Treeview.new(base_frame, :columns=>%w(fullpath type size), 
-                         :displaycolumns=>['size'])
-if Tk.windowingsystem != 'aqua'
-  vsb = tree.yscrollbar(Ttk::Scrollbar.new(base_frame))
-  hsb = tree.xscrollbar(Ttk::Scrollbar.new(base_frame))
-else
-  vsb = tree.yscrollbar(Tk::Scrollbar.new(base_frame))
-  hsb = tree.xscrollbar(Tk::Scrollbar.new(base_frame))
-end
-
-tree.heading_configure('#0', :text=>'Directory Structure')
-tree.heading_configure('size', :text=>'File Size')
-tree.column_configure('size', :stretch=>0, :width=>70)
-populate_roots(tree)
-tree.bind('<TreeviewOpen>', '%W'){|w| populate_tree(w, w.focus_item)}
-
-## Arrange the tree and its scrollbars in the toplevel
-container = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
-container.lower
-Tk.grid(tree, vsb, :in=>container, :sticky=>'nsew')
-Tk.grid(hsb,       :in=>container, :sticky=>'nsew')
-container.grid_columnconfigure(0, :weight=>1)
-container.grid_rowconfigure(0, :weight=>1)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttkbut.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttkbut.rb
deleted file mode 100644 (file)
index 4d57712..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# ttkbut.rb
-#
-# This demonstration script creates a toplevel window containing several
-# simple Ttk widgets, such as labels, labelframes, buttons, checkbuttons and
-# radiobuttons.
-#
-# based on "Id: ttkbut.tcl,v 1.4 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($ttkbut_demo) && $ttkbut_demo
-  $ttkbut_demo.destroy 
-  $ttkbut_demo = nil
-end
-
-$ttkbut_demo = TkToplevel.new {|w|
-  title("Simple Ttk Widgets")
-  iconname("ttkbut")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($ttkbut_demo).pack(:fill=>:both, :expand=>true)
-
-Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', :justify=>:left, 
-               :text=><<EOL).pack(:side=>:top, :fill=>:x)
-Ttk¤È¤Ï¡¤¥Æ¡¼¥Þ»ØÄê²Äǽ¤Ê¿·¤·¤¤¥¦¥£¥¸¥§¥Ã¥È½¸¹ç¤Ç¤¹¡¥\
-º£¡¤¤¢¤Ê¤¿¤¬Ìܤˤ·¤Æ¤¤¤ë¤Î¤ÏTtk¤Î¥Æ¡¼¥Þ²½¥é¥Ù¥ë¤Ç¡¤\
-²¼¤Ë¤ÏTtk¤Î¥é¥Ù¥ë¥Õ¥ì¡¼¥à¤ÎÃæ¤Ë»°¤Ä¤Î¥°¥ë¡¼¥×¤ÎTtk¥¦¥£¥¸¥§¥Ã¥È¤¬\
-ɽ¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥
-ºÇ½é¤Î¥°¥ë¡¼¥×¤ÏÁ´¤Æ¥Ü¥¿¥ó¤Ç¤¢¤ê¡¤\
-¤½¤ì¤¾¤ì¥¯¥ê¥Ã¥¯¤¹¤ì¤Ð¸½ºß¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥Æ¡¼¥Þ¤¬ÀßÄꤵ¤ì¤Þ¤¹¡¥
-£²ÈÖÌܤΥ°¥ë¡¼¥×¤Ï»°¤Ä¤Î¥Á¥§¥Ã¥¯¥Ü¥¿¥ó½¸¹ç¤Ç¤¹¡¥\
-³Æ½¸¹ç¤Î´Ö¤Ë¤Ï¡¤¥»¥Ñ¥ì¡¼¥¿¥¦¥£¥¸¥§¥Ã¥È¤¬ÃÖ¤«¤ì¤Æ¤¤¤Þ¤¹¡¥\
-¤Ê¤ª¡ÖÍ­¸ú²½¡×¥Ü¥¿¥ó¤Ï¡¤¤³¤Î¥È¥Ã¥×¥ì¥Ù¥ë¥¦¥£¥¸¥§¥Ã¥ÈÆâ¤Î\
-¾¤Î¤¹¤Ù¤Æ¤Î¥Æ¡¼¥Þ²½¥¦¥£¥¸¥§¥Ã¥È¤Î¾õÂÖ(state)¤¬"disabled"¤«¤É¤¦¤«¤ò\
-¥³¥ó¥È¥í¡¼¥ë¤¹¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥
-£³ÈÖÌܤΥ°¥ë¡¼¥×¤Ï´ØÏ¢ÉÕ¤±¤é¤ì¤¿¥é¥¸¥ª¥Ü¥¿¥ó½¸¹ç¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡¥
-EOL
-
-## Add buttons for setting the theme
-buttons = Ttk::Labelframe.new(base_frame, :text=>'¥Ü¥¿¥ó')
-# Ttk::Style.theme_names.each{|theme|
-#   Ttk::Button.new(buttons, :text=>theme, 
-#                   :command=>proc{Ttk::Style.theme_use theme}).pack(:pady=>2)
-# }
-Ttk.themes.each{|theme|
-  Ttk::Button.new(buttons, :text=>theme, 
-                  :command=>proc{Ttk.set_theme theme}).pack(:pady=>2)
-}
-
-## Helper procedure for the top checkbutton
-def setState(root, value, *excepts)
-  return if excepts.member?(root)
-
-  ## Non-Ttk widgets (e.g. the toplevel) will fail, so make it silent
-  begin
-    root.state = value
-  rescue
-  end
-
-  ## Recursively invoke on all children of this root that are in the same
-  ## toplevel widget
-  root.winfo_children.each{|w|
-    setState(w, value, *excepts) if w.winfo_toplevel == root.winfo_toplevel
-  }
-end
-
-## Set up the checkbutton group
-checks = Ttk::Labelframe.new(base_frame, :text=>'¥Á¥§¥Ã¥¯¥Ü¥¿¥ó')
-enabled = TkVariable.new(true)
-e = Ttk::Checkbutton.new(checks, :text=>'Í­¸ú²½', :variable=>enabled, 
-                         :command=>proc{
-                           setState($ttkbut_demo, 
-                                    ((enabled.bool)? "!disabled" : "disabled"),
-                                    e)
-                         })
-
-## See ttk_widget(n) for other possible state flags
-sep1 = Ttk::Separator.new(checks)
-sep2 = Ttk::Separator.new(checks)
-
-cheese  = TkVariable.new
-tomato  = TkVariable.new
-basil   = TkVariable.new
-oregano = TkVariable.new
-
-c1 = Ttk::Checkbutton.new(checks, :text=>'¥Á¡¼¥º',   :variable=>cheese)
-c2 = Ttk::Checkbutton.new(checks, :text=>'¥È¥Þ¥È',   :variable=>tomato)
-c3 = Ttk::Checkbutton.new(checks, :text=>'¥Ð¥¸¥ë',   :variable=>basil)
-c4 = Ttk::Checkbutton.new(checks, :text=>'¥ª¥ì¥¬¥Î', :variable=>oregano)
-
-Tk.pack(e, sep1, c1, c2, sep2, c3, c4, :fill=>:x, :pady=>2)
-
-## Set up the radiobutton group
-radios = Ttk::Labelframe.new(base_frame, :text=>'¥é¥¸¥ª¥Ü¥¿¥ó')
-
-happyness = TkVariable.new
-
-r1 = Ttk::Radiobutton.new(radios, :variable=>happyness, 
-                          :text=>'Great', :value=>'great')
-r2 = Ttk::Radiobutton.new(radios, :variable=>happyness, 
-                          :text=>'Good', :value=>'good')
-r3 = Ttk::Radiobutton.new(radios, :variable=>happyness, 
-                          :text=>'Ok', :value=>'ok')
-r4 = Ttk::Radiobutton.new(radios, :variable=>happyness, 
-                          :text=>'Poor', :value=>'poor')
-r5 = Ttk::Radiobutton.new(radios, :variable=>happyness, 
-                          :text=>'Awful', :value=>'awful')
-
-Tk.pack(r1, r2, r3, r4, r5, :fill=>:x, :padx=>3, :pady=>2)
-
-## See Code / Dismiss
-Ttk::Frame.new(base_frame) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'ÊÑ¿ô»²¾È', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{
-                           showVars(base_frame, ['Í­¸ú²½', enabled], 
-                                    ['¥Á¡¼¥º', cheese], ['¥È¥Þ¥È', tomato], 
-                                    ['¥Ð¥¸¥ë', basil], ['¥ª¥ì¥¬¥Î', oregano], 
-                                    ['¹¬Ê¡ÅÙ', happyness])
-                         }), 
-         Ttk::Button.new(frame, :text=>'¥³¡¼¥É»²¾È', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'ttkbut'}), 
-         Ttk::Button.new(frame, :text=>'ÊĤ¸¤ë', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           tmppath = $ttkbut_demo
-                           $ttkbut_demo = nil
-                           $showVarsWin[tmppath.path] = nil
-                           tmppath.destroy
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x, :expand=>true)
-}
-
-## Arrange things neatly
-f = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
-f.lower
-Tk.grid(buttons, checks, radios, :in=>f, :sticky=>'nwe', :pady=>2, :padx=>3)
-f.grid_columnconfigure([0, 1, 2], :weight=>1, :uniform=>:yes)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttkmenu.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttkmenu.rb
deleted file mode 100644 (file)
index d349b42..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# ttkmenu.rb --
-#
-# This demonstration script creates a toplevel window containing several Ttk
-# menubutton widgets.
-#
-# based on "Id: ttkmenu.tcl,v 1.3 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($ttkmenu_demo) && $ttkmenu_demo
-  $ttkmenu_demo.destroy 
-  $ttkmenu_demo = nil
-end
-
-$ttkmenu_demo = TkToplevel.new {|w|
-  title("Ttk Menu Buttons")
-  iconname("ttkmenu")
-  positionWindow(w)
-}
-
-base_frame = Ttk::Frame.new($ttkmenu_demo).pack(:fill=>:both, :expand=>true)
-
-Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', :justify=>:left, 
-               :text=><<EOL).pack(:side=>:top, :fill=>:x)
-Ttk¤È¤Ï¡¤¥Æ¡¼¥Þ»ØÄê²Äǽ¤Ê¿·¤·¤¤¥¦¥£¥¸¥§¥Ã¥È½¸¹ç¤Ç¤¹¡¥\
-¤³¤ì¤Ë¤è¤ê¥Æ¡¼¥Þ¤ËÂбþ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¥¦¥£¥¸¥§¥Ã¥È¤Î¤Ò¤È¤Ä¤Ë\
-¥á¥Ë¥å¡¼¥Ü¥¿¥ó¤¬¤¢¤ê¤Þ¤¹¡¥\
-°Ê²¼¤Ç¤Ï¡¤¥Æ¡¼¥Þ¤ËÂбþ¤·¤¿¥á¥Ë¥å¡¼¥Ü¥¿¥ó¤¬¤¤¤¯¤Ä¤«É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥\
-¤½¤ì¤é¤ò»È¤Ã¤Æ¡¤¸½ºß»ÈÍÑÃæ¤Î¥Æ¡¼¥Þ¤òÊѹ¹¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡¥\
-¥Æ¡¼¥Þ¤ÎÁªÂò¤¬¥á¥Ë¥å¡¼¥Ü¥¿¥ó¼«¿È¤Î¸«³Ý¤±¤òÊѲ½¤µ¤»¤ëÍͻҤ䡤\
-Ãæ±û¤Î¥á¥Ë¥å¡¼¥Ü¥¿¥ó¤À¤±¤¬°Û¤Ê¤ë¥¹¥¿¥¤¥ë\
-(¥Ä¡¼¥ë¥Ð¡¼¤Ç¤Î°ìÈÌŪ¤Êɽ¼¨¤ËŬ¤·¤¿¤â¤Î)¤Çɽ¼¨¤µ¤ì¤Æ¤¤¤ëÍͻҤË\
-ÃíÌܤ·¤Æ¤¯¤À¤µ¤¤¡¥\
-¤Ê¤ª¡¤¥á¥Ë¥å¡¼¥Ü¥¿¥ó¤Ë¤Ä¤¤¤Æ¤Ï¥Æ¡¼¥Þ¤ËÂбþ¤·¤¿¥¦¥£¥¸¥§¥Ã¥È¤¬¤¢¤ê¤Þ¤¹¤¬¡¤\
-¥á¥Ë¥å¡¼¤Ë¤Ä¤¤¤Æ¤Ï¥Æ¡¼¥Þ¤ËÂбþ¤·¤¿¥¦¥£¥¸¥§¥Ã¥È¤Ï´Þ¤Þ¤ì¤Æ¤¤¤Þ¤»¤ó¡¥\
-¤½¤ÎÍýͳ¤Ï¡¤É¸½à¤ÎTk¤Î¥á¥Ë¥å¡¼¥¦¥£¥¸¥§¥Ã¥È¤¬\
-¤¹¤Ù¤Æ¤Î¥×¥é¥Ã¥È¥Û¡¼¥à¤Ç½½Ê¬¤ËÎɹ¥¤Ê¸«³Ý¤±¤ÈÁàºîÀ­¤ò»ý¤Ã¤Æ¤¤¤ë¡¤\
-Æäˡ¤Â¿¤¯¤Î´Ä¶­¤Ç¤½¤Î´Ä¶­ËÜÍè¤ÎÁàºîÂηϤȤʤë¤è¤¦¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤È\
-ȽÃǤµ¤ì¤¿¤³¤È¤Ë¤è¤ê¤Þ¤¹¡¥
-EOL
-
-Ttk::Separator.new(base_frame).pack(:side=>:top, :fill=>:x)
-
-## See Code / Dismiss
-Ttk::Frame.new($ttkmenu_demo) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'¥³¡¼¥É»²¾È', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'ttkmenu'}), 
-         Ttk::Button.new(frame, :text=>'ÊĤ¸¤ë', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $ttkmenu_demo.destroy
-                           $ttkmenu_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x)
-}
-
-b1 = Ttk::Menubutton.new(base_frame,:text=>'¥Æ¡¼¥Þ¤òÁªÂò',:direction=>:above)
-b2 = Ttk::Menubutton.new(base_frame,:text=>'¥Æ¡¼¥Þ¤òÁªÂò',:direction=>:left)
-b3 = Ttk::Menubutton.new(base_frame,:text=>'¥Æ¡¼¥Þ¤òÁªÂò',:direction=>:right)
-b4 = Ttk::Menubutton.new(base_frame,:text=>'¥Æ¡¼¥Þ¤òÁªÂò',:direction=>:flush,
-                         :style=>Ttk::Menubutton.style('Toolbutton'))
-b5 = Ttk::Menubutton.new(base_frame,:text=>'¥Æ¡¼¥Þ¤òÁªÂò',:direction=>:below)
-
-b1.menu(m1 = Tk::Menu.new(b1, :tearoff=>false))
-b2.menu(m2 = Tk::Menu.new(b2, :tearoff=>false))
-b3.menu(m3 = Tk::Menu.new(b3, :tearoff=>false))
-b4.menu(m4 = Tk::Menu.new(b4, :tearoff=>false))
-b5.menu(m5 = Tk::Menu.new(b5, :tearoff=>false))
-
-Ttk.themes.each{|theme|
-  m1.add(:command, :label=>theme, :command=>proc{Ttk.set_theme theme})
-  m2.add(:command, :label=>theme, :command=>proc{Ttk.set_theme theme})
-  m3.add(:command, :label=>theme, :command=>proc{Ttk.set_theme theme})
-  m4.add(:command, :label=>theme, :command=>proc{Ttk.set_theme theme})
-  m5.add(:command, :label=>theme, :command=>proc{Ttk.set_theme theme})
-}
-
-f = Ttk::Frame.new(base_frame).pack(:fill=>:x)
-f1 = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
-f.lower
-
-f.grid_anchor(:center)
-TkGrid('x', b1, 'x', :in=>f, :padx=>3, :pady=>2)
-TkGrid(b2,  b4, b3,  :in=>f, :padx=>3, :pady=>2)
-TkGrid('x', b5, 'x', :in=>f, :padx=>3, :pady=>2)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttknote.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttknote.rb
deleted file mode 100644 (file)
index 09cc796..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# ttknote.rb --
-#
-# This demonstration script creates a toplevel window containing a Ttk
-# notebook widget.
-#
-# based on "Id: ttknote.tcl,v 1.5 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($ttknote_demo) && $ttknote_demo
-  $ttknote_demo.destroy 
-  $ttknote_demo = nil
-end
-
-$ttknote_demo = TkToplevel.new {|w|
-  title("Ttk Notebook Widget")
-  iconname("ttknote")
-  positionWindow(w)
-}
-
-## See Code / Dismiss
-Ttk::Frame.new($ttknote_demo) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'¥³¡¼¥É»²¾È', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'ttknote'}), 
-         Ttk::Button.new(frame, :text=>'ÊĤ¸¤ë', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $ttknote_demo.destroy
-                           $ttknote_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x)
-}
-
-base_frame = Ttk::Frame.new($ttknote_demo).pack(:fill=>:both, :expand=>true)
-
-## Make the notebook and set up Ctrl+Tab traversal
-notebook = Ttk::Notebook.new(base_frame).pack(:fill=>:both, :expand=>true, 
-                                              :padx=>2, :pady=>3)
-notebook.enable_traversal
-
-## Popuplate the first pane
-f_msg = Ttk::Frame.new(notebook)
-msg_m = Ttk::Label.new(f_msg, :font=>$font, :wraplength=>'5i', 
-                       :justify=>:left, :anchor=>'n', :text=><<EOL)
-Ttk¤È¤Ï¡¤¥Æ¡¼¥Þ»ØÄê²Äǽ¤Ê¿·¤·¤¤¥¦¥£¥¸¥§¥Ã¥È½¸¹ç¤Ç¤¹¡¥\
-¤½¤ÎÃæ¤Ë´Þ¤Þ¤ì¤ë¥¦¥£¥¸¥§¥Ã¥È¤Î¤Ò¤È¤Ä¤Ë¥Î¡¼¥È¥Ö¥Ã¥¯¥¦¥£¥¸¥§¥Ã¥È¤¬¤¢¤ê¤Þ¤¹¡¥\
-¥Î¡¼¥È¥Ö¥Ã¥¯¥¦¥£¥¸¥§¥Ã¥È¤Ï¡¤\
-¸ÄÊ̤ÎÆâÍƤò»ý¤Ã¤¿¥Ñ¥Í¥ë¤«¤é¤ÎÁªÂò¤ò²Äǽ¤Ë¤¹¤ë¤è¤¦¤Ê\
-¥¿¥Ö¤Î½¸¹ç¡Ê¥¿¥Ö¥»¥Ã¥È¡Ë¤òÄê¤á¤Þ¤¹¡¥\
-¥¿¥Ö¥»¥Ã¥È¤ÏºÇ¶á¤Î¿¤¯¤Î¥æ¡¼¥¶¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ç¸«¤é¤ì¤ëµ¡Ç½¤Ç¤¹¡¥\
-¥¿¥Ö¤ÎÁªÂò¤Ï¡¤¥Þ¥¦¥¹¤Ë¤è¤ë¤À¤±¤Ç¤Ê¤¯¡¤\
-¥Î¡¼¥È¥Ö¥Ã¥¯¥¦¥£¥¸¥§¥Ã¥È¤Î¥Ú¡¼¥¸¤Î¸«½Ð¤·¤¬ÁªÂò¤µ¤ì¤Æ¤¤¤ë»þ¤Ç¤¢¤ì¤Ð\
-Ctrl+Tab¥­¡¼¤ÎÆþÎϤˤè¤Ã¤Æ¤â¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥\
-¤³¤Î¥Ç¥â¤Ç¤Ï¡¤¸«½Ð¤·¤Ç²¼ÀþÉÕ¤­¤Îʸ»ú¤Î¥­¡¼¤ÈAlt¥­¡¼¤È¤òÁȤ߹ç¤ï¤»¤ë¤³¤È¤Ç\
-¥Ú¡¼¥¸¤òÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤âÀßÄꤷ¤Æ¤¤¤Þ¤¹¡¥\
-¤¿¤À¤·¡¤£²ÈÖÌܤΥ¿¥Ö¤Ï̵¸ú²½¤µ¤ì¤ÆÁªÂò¤Ç¤­¤Ê¤¤¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤Ë¤Ï\
-Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥
-EOL
-neat = TkVariable.new
-after_id = nil
-msg_b = Ttk::Button.new(f_msg, :text=>'¤¹¤Æ¤­¤À¡ª(Neat!)', :underline=>6, 
-                        :command=>proc{
-                          neat.value = '¤¢¤¡¡¤¤½¤Î¤È¤ª¤ê¤µ¡¥¡¥¡¥'
-                          Tk.after_cancel(after_id) if after_id
-                          after_id = Tk.after(500){neat.value = ''}
-                        })
-msg_b.winfo_toplevel.bind('Alt-n'){ msg_b.focus; msg_b.invoke }
-msg_l = Ttk::Label.new(f_msg, :textvariable=>neat)
-notebook.add(f_msg, :text=>'ÀâÌÀ(Description)', :underline=>3, :padding=>2)
-Tk.grid(msg_m, '-', :sticky=>'new', :pady=>2)
-Tk.grid(msg_b, msg_l, :pady=>[2, 4], :padx=>20)
-msg_b.grid_configure(:sticky=>'e')
-msg_l.grid_configure(:sticky=>'w')
-f_msg.grid_rowconfigure(1, :weight=>1)
-f_msg.grid_columnconfigure([0, 1], :weight=>1, :uniform=>1)
-
-## Populate the second pane. Note that the content doesn't really matter
-f_disabled = Ttk::Frame.new(notebook)
-notebook.add(f_disabled, :text=>'̵¸ú²½¤µ¤ì¤¿¥¿¥Ö', :state=>:disabled)
-
-## Popuplate the third pane
-f_editor = Ttk::Frame.new(notebook)
-notebook.add(f_editor, :text=>'¥Æ¥­¥¹¥È¥¨¥Ç¥£¥¿(Text Editor)', :underline=>9)
-editor_t = Tk::Text.new(f_editor, :width=>40, :height=>10, :wrap=>:char)
-if Tk.windowingsystem != 'aqua'
-  editor_s = editor_t.yscrollbar(Ttk::Scrollbar.new(f_editor))
-else
-  editor_s = editor_t.yscrollbar(Tk::Scrollbar.new(f_editor))
-end
-editor_s.pack(:side=>:right, :fill=>:y, :padx=>[0,2], :pady=>2)
-editor_t.pack(:fill=>:both, :expand=>true, :padx=>[2,0], :pady=>2)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttkpane.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttkpane.rb
deleted file mode 100644 (file)
index 96670c0..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# ttkpane.rb --
-#
-# This demonstration script creates a Ttk pane with some content.
-#
-# based on "Id: ttkpane.tcl,v 1.3 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($ttkpane_demo) && $ttkpane_demo
-  $ttkpane_demo.destroy 
-  $ttkpane_demo = nil
-end
-
-$ttkpane_demo = TkToplevel.new {|w|
-  title("Themed Nested Panes")
-  iconname("ttkpane")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($ttkpane_demo).pack(:fill=>:both, :expand=>true)
-
-Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', :justify=>:left, 
-               :text=><<EOL).pack(:side=>:top, :fill=>:x)
-¤³¤Î¥Ç¥â¤Ï¡¤Ëä¤á¹þ¤ß´Ø·¸¤Ë¤¢¤ë¥Æ¡¼¥ÞÉÕ¤­¥Ú¥¤¥ó¥É¥¦¥£¥ó¥É¥¦¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡¥\
-¤½¤ì¤¾¤ì¤ÎÂ礭¤µ¤Ï¡¤´Þ¤Þ¤ì¤Æ¤¤¤ë¥Ú¥¤¥ó¤Î´Ö¤Ë¤¢¤ë¥¨¥ê¥¢¤ò¤Ä¤«¤ó¤Ç\
-¶­³¦¤ò¥É¥é¥Ã¥°¤¹¤ë¤³¤È¤ÇÊѹ¹¤Ç¤­¤Þ¤¹¡¥
-EOL
-
-Ttk::Separator.new(base_frame).pack(:side=>:top, :fill=>:x)
-
-## See Code / Dismiss
-Ttk::Frame.new(base_frame) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'¥³¡¼¥É»²¾È', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'ttkpane'}), 
-         Ttk::Button.new(frame, :text=>'ÊĤ¸¤ë', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $ttkpane_demo.destroy
-                           $ttkpane_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x)
-}
-
-frame = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
-
-outer = Ttk::Panedwindow.new(frame, :orient=>:horizontal)
-outer.add(in_left = Ttk::Panedwindow.new(outer, :orient=>:vertical))
-outer.add(in_right = Ttk::Panedwindow.new(outer, :orient=>:vertical))
-in_left.add(left_top = Ttk::Labelframe.new(in_left, :text=>'¥Ü¥¿¥ó'))
-in_left.add(left_bot = Ttk::Labelframe.new(in_left, :text=>'»þ·×'))
-in_right.add(right_top = Ttk::Labelframe.new(in_right, :text=>'¥×¥í¥°¥ì¥¹'))
-in_right.add(right_bot = Ttk::Labelframe.new(in_right, :text=>'¥Æ¥­¥¹¥È'))
-if Tk.windowingsystem == 'aqua'
-  [left_top, left_bot, right_top, right_bot].each{|w| w.padding(3) }
-end
-
-# Fill the button pane
-Ttk::Button.new(left_top, :text=>'²¡¤·¤Æ¤Í', 
-                :command=>proc{
-                  Tk.messageBox(:type=>'ok', :icon=>'info', 
-                                :message=>'¤¤¤Æ¤Æ¡ª', 
-                                :detail=>'That hurt...', :parent=>base_frame, 
-                                :title=>'Button Pressed')
-                }).pack(:padx=>2, :pady=>5)
-
-
-zones_list = [
-  [':Europe/Berlin'], 
-  [':America/Argentina/Buenos_Aires', ':America/Buenos_Aires'], 
-  [':Africa/Johannesburg'], 
-  [':Europe/London'], 
-  [':America/Los_Angeles'], 
-  [':Europe/Moscow'],
-  [':America/New_York'], 
-  [':Asia/Singapore'], 
-  [':Australia/Sydney'], 
-  [':Asia/Tokyo'], 
-]
-
-zones = []
-
-# Check tzinfo support
-if $tk_major_ver > 8 || ($tk_major_ver == 8 && $tk_minor_ver >= 5)
-  tzinfo = :tcl
-
-  zones_list.each{|list|
-    list.each{|zone|
-      begin
-        # Force a pre-load of all the timezones needed; otherwise can end up
-        # poor-looking synch problems!
-        Tk.tk_call('clock', 'format', '0', '-timezone', zone)
-      rescue RuntimeError
-        # ignore
-      else
-        zones << [zone, zone[%r<[^/:]+$>].tr('_', ' ')]
-        break
-      end
-    }
-  }
-
-else
-  begin
-    require 'tzinfo'
-    tzinfo = :tzinfo
-  rescue Exception
-    begin
-      require 'tzfile'
-      tzinfo = :tzfile
-    rescue Exception
-      tzinfo = nil
-    end
-  end
-
-  case tzinfo
-  when :tzinfo
-    zones_list.each{|list|
-      list.each{|zone|
-        begin
-          tz = TZInfo::Timezone.get(zone[%r<[^:]+$>])
-        rescue Exception
-          # ignore
-        else
-          zones << [tz, zone[%r<[^/:]+$>].tr('_', ' ')]
-          break
-        end
-      }
-    }
-
-  when :tzfile
-    zones_list.each{|list|
-      list.each{|zone|
-        begin
-          tz = TZFile.create(zone[%r<[^:]+$>])
-        rescue Exception
-          # ignore
-        else
-          zones << [tz, zone[%r<[^/:]+$>].tr('_', ' ')]
-          break
-        end
-      }
-    }
-
-  else
-    [ -7, -4, -2, -1, 0, +1, +3, +8, +9, +10 ].each{|zone|
-      zones << [zone, 'UTC%+03d00' % zone]
-    }
-  end
-end
-
-time = TkVariable.new_hash
-
-case tzinfo
-when :tcl
-  update_proc = proc{|now, tz, label|
-    time[label] = Tk.tk_call('clock', 'format', now.tv_sec, 
-                             '-timezone', tz, '-format', '%T')
-  }
-when :tzinfo
-  update_proc = proc{|now, tz, label|
-    time[label] = tz.utc_to_local(now).strftime('%H:%M:%S')
-  }
-when :tzfile
-  update_proc = proc{|now, tz, label|
-    time[label] = tz.at(now.tv_sec).strftime('%H:%M:%S')
-  }
-else
-  update_proc = proc{|now, tz, label|
-    time[label] = (now + (tz * 3600)).strftime('%H:%M:%S')
-  }
-end
-
-# Fill the clocks pane
-zones.each_with_index{|(zone, label), idx|
-  Ttk::Separator.new(left_bot).pack(:fill=>:x) if idx > 0
-  Ttk::Label.new(left_bot, :text=>label, :anchor=>'w').pack(:fill=>:x)
-  Ttk::Label.new(left_bot, :textvariable=>time.ref(label), 
-                 :anchor=>'w').pack(:fill=>:x)
-}
-
-# Timer start
-every = proc{
-  now = Time.now.utc
-  zones.each{|zone, label| update_proc.call(now, zone, label) }
-}
-TkRTTimer.new(1000, -1, every).start(0, every)
-
-# Fill the progress pane
-Ttk::Progressbar.new(right_top, :mode=>:indeterminate).pack(:fill=>:both, :expand=>true).start
-
-# Fill the text pane
-if Tk.windowingsystem != 'aqua'
-  # The trick with the ttk::frame makes the text widget look like it fits with
-  # the current Ttk theme despite not being a themed widget itself. It is done
-  # by styling the frame like an entry, turning off the border in the text
-  # widget, and putting the text widget in the frame with enough space to allow
-  # the surrounding border to show through (2 pixels seems to be enough).
-  f = Ttk::Frame.new(right_bot, :style=>Ttk::Entry)
-  txt = TkText.new(frame, :wrap=>:word, :width=>30, :borderwidth=>0)
-  txt.pack(:fill=>:both, :expand=>true, :in=>f, :pady=>2, :padx=>2)
-  scr = txt.yscrollbar(Ttk::Scrollbar.new(frame))
-  scr.pack(:side=>:right, :fill=>:y, :in=>right_bot)
-  f.pack(:fill=>:both, :expand=>true)
-  outer.pack(:fill=>:both, :expand=>true)
-else
-  txt = TkText.new(frame, :wrap=>:word, :width=>30, :borderwidth=>0)
-  scr = txt.yscrollbar(TkScrollbar.new(frame))
-  scr.pack(:side=>:right, :fill=>:y, :in=>right_bot)
-  txt.pack(:fill=>:both, :expand=>true, :in=>right_bot)
-  outer.pack(:fill=>:both, :expand=>true, :padx=>10, :pady=>[6, 10])
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttkprogress.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/ttkprogress.rb
deleted file mode 100644 (file)
index 43a9cbc..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# ttkprogress.rb --
-#
-# This demonstration script creates several progress bar widgets.
-#
-# based on "Id: ttkprogress.tcl,v 1.3 2007/12/13 15:27:07 dgp Exp"
-
-if defined?($ttkprogress_demo) && $ttkprogress_demo
-  $ttkprogress_demo.destroy 
-  $ttkprogress_demo = nil
-end
-
-$ttkprogress_demo = TkToplevel.new {|w|
-  title("Progress Bar Demonstration")
-  iconname("ttkprogress")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($ttkprogress_demo).pack(:fill=>:both, :expand=>true)
-
-Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', :justify=>:left, 
-               :text=><<EOL).pack(:side=>:top, :fill=>:x)
-²¼¤Ë¤¢¤ë¤Î¤ÏÆó¤Ä¤Î¥×¥í¥°¥ì¥¹¥Ð¡¼¤Ç¤¹¡¥\
-¾å¤Î¤â¤Î¤Ï"determinate"¥¿¥¤¥×¤Î¥×¥í¥°¥ì¥¹¥Ð¡¼¤Ç¡¤\
-Î㤨¤Ð¥×¥í¥°¥é¥à¤¬Í¿¤¨¤é¤ì¤¿¥¿¥¹¥¯¤ò½ªÎ»¤¹¤ë¤Þ¤Ç¤Ë¤É¤Î¤¯¤é¤¤¤«¤«¤ë¤«¤ò\
-¼¨¤¹¤È¤­¤Ê¤É¤ËÍѤ¤¤é¤ì¤Þ¤¹¡¥\
-²¼¤Î¤â¤Î¤Ï"indeterminate"¥¿¥¤¥×¤Î¥×¥í¥°¥ì¥¹¥Ð¡¼¤Ç¡¤\
-Î㤨¤Ð¥×¥í¥°¥é¥à¤¬¼Â¹ÔÃæ(busy)¤Ç¤¢¤ë¤â¤Î¤Î\
-½ªÎ»¤Þ¤Ç¤Ë¤É¤ì¤¯¤é¤¤¤«¤«¤ë¤«¤Ïʬ¤«¤é¤Ê¤¤¤È¤¤¤¦¾õÂÖ¤ò\
-¼¨¤¹¤È¤­¤Ê¤É¤ËÍѤ¤¤é¤ì¤Þ¤¹¡¥\
-¤¤¤º¤ì¤Î¥×¥í¥°¥ì¥¹¥Ð¡¼¤â¡¤¤¹¤°²¼¤Ë¤¢¤ë¥Ü¥¿¥ó¤ò»È¤¦¤³¤È¤Ç\
-¼«Æ°¥¢¥Ë¥á¡¼¥·¥ç¥ó¥â¡¼¥É¤ÎON/OFF¤òÀÚÂؤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥
-EOL
-
-## See Code / Dismiss buttons
-Ttk::Frame.new(base_frame) {|frame|
-  sep = Ttk::Separator.new(frame)
-  Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         Ttk::Button.new(frame, :text=>'¥³¡¼¥É»²¾È', 
-                         :image=>$image['view'], :compound=>:left, 
-                         :command=>proc{showCode 'ttkprogress'}), 
-         Ttk::Button.new(frame, :text=>'ÊĤ¸¤ë', 
-                         :image=>$image['delete'], :compound=>:left, 
-                         :command=>proc{
-                           $ttkprogress_demo.destroy
-                           $ttkprogress_demo = nil
-                         }), 
-         :padx=>4, :pady=>4)
-  grid_columnconfigure(0, :weight=>1)
-  pack(:side=>:bottom, :fill=>:x)
-}
-
-frame = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
-
-p1 = Ttk::Progressbar.new(frame, :mode=>:determinate)
-p2 = Ttk::Progressbar.new(frame, :mode=>:indeterminate)
-
-start = Ttk::Button.new(frame, :text=>'Start Progress', 
-                        :command=>proc{ p1.start; p2.start })
-stop  = Ttk::Button.new(frame, :text=>'Stop Progress', 
-                        :command=>proc{ p1.stop; p2.stop })
-
-Tk.grid(p1, '-', :pady=>5, :padx=>10)
-Tk.grid(p2, '-', :pady=>5, :padx=>10)
-Tk.grid(start, stop, :padx=>10, :pady=>5)
-start.grid_configure(:sticky=>'e')
-stop.grid_configure(:sticky=>'w')
-frame.grid_columnconfigure(:all, :weight=>1)
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/twind.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/twind.rb
deleted file mode 100644 (file)
index faefaef..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# text (embedded windows) widget demo (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($twind_demo) && $twind_demo
-  $twind_demo.destroy 
-  $twind_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$twind_demo = TkToplevel.new {|w|
-  title("Text Demonstration - Embedded Windows")
-  iconname("Embedded Windows")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($twind_demo).pack(:fill=>:both, :expand=>true)
-
-# frame À¸À®
-$twind_buttons = TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc{
-      tmppath = $twind_demo
-      $twind_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc{showCode 'twind'}
-  }.pack('side'=>'left', 'expand'=>'yes')
-}
-$twind_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame À¸À®
-$twind_text = nil
-TkFrame.new(base_frame, 'highlightthickness'=>2, 'borderwidth'=>2, 
-            'relief'=>'sunken') {|f|
-  $twind_text = TkText.new(f, 'setgrid'=>'true', 'font'=>$font, 
-                          'width'=>'70', 'height'=>35, 'wrap'=>'word', 
-                          'highlightthickness'=>0, 'borderwidth'=>0 ){|t|
-    TkScrollbar.new(f) {|s|
-      command proc{|*args| t.yview(*args)}
-      t.yscrollcommand proc{|first,last| s.set first,last}
-    }.pack('side'=>'right', 'fill'=>'y')
-  }.pack('expand'=>'yes', 'fill'=>'both')
-}.pack('expand'=>'yes', 'fill'=>'both')
-
-# ¥¿¥°À¸À®
-$tag_center = TkTextTag.new($twind_text, 
-                            'justify' =>'center',
-                            'spacing1'=>'5m',
-                            'spacing3'=>'5m'  )
-$tag_buttons = TkTextTag.new($twind_text, 
-                             'lmargin1'=>'1c',
-                             'lmargin2'=>'1c',
-                             'rmargin' =>'1c',
-                             'spacing1'=>'3m',
-                             'spacing2'=>0,
-                             'spacing3'=>0 )
-
-# ¥Æ¥­¥¹¥È¤ÎÀ¸À®
-$twind_text.insert('end', 
-                  '¥Æ¥­¥¹¥Èwidget¾å¤Ë¾¤Îwidget¤òÁȤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£')
-$twind_text.insert('end',
-                  'ÁȤ߹þ¤ß¥¦¥£¥ó¥É¥¦¤È¸Æ¤Ð¤ì¡¢Ç¤°Õ¤Îwidget¤¬²Äǽ¤Ç¤¹¡£')
-$twind_text.insert('end',
-                  'Î㤨¤Ð¡¢¤³¤³¤Ë2¤Ä¤Î¥Ü¥¿¥ówidget¤¬ÁȤ߹þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£')
-$twind_text.insert('end', 'ºÇ½é¤Î¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤È¿åÊ¿Êý¸þ¤Î¥¹¥¯¥í¡¼¥ë¤ò')
-TkTextWindow.new($twind_text, 'end', 
-                 'window'=>TkButton.new($twind_text) {
-                   #text 'ON'
-                   text '¥ª¥ó'
-                   command proc{textWindOn $twind_text,$twind_buttons}
-                   cursor 'top_left_arrow'
-                 })
-$twind_text.insert('end', "¤Ë¤·¤Þ¤¹¡£¤Þ¤¿2¤Ä¤á¤Î¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È\n")
-$twind_text.insert('end', '¿åÊ¿Êý¸þ¤Î¥¹¥¯¥í¡¼¥ë¤ò')
-TkTextWindow.new($twind_text, 'end', 
-                 'window'=>TkButton.new($twind_text) {
-                   #text 'OFF'
-                   text '¥ª¥Õ'
-                   command proc{textWindOff $twind_text}
-                   cursor 'top_left_arrow'
-                 })
-$twind_text.insert('end', '¤Ë¤·¤Þ¤¹¡£')
-
-$twind_text.insert('end', '¤â¤¦¤Ò¤È¤Ä¤ÎÎã¤Ç¤¹¡£')
-TkTextWindow.new($twind_text, 'end', 
-                 'window'=>TkButton.new($twind_text) {
-                   text '¤³¤³¤ò¥¯¥ê¥Ã¥¯'
-                   command proc{textWindPlot $twind_text}
-                   cursor 'top_left_arrow'
-                 })
-$twind_text.insert('end', '¤¹¤ë¤È¡¢x-y¥×¥í¥Ã¥È¤¬¤³¤³¤Ë¸½¤ì¤Þ¤¹¡£')
-$mark_plot = TkTextMark.new($twind_text, 'insert')
-$mark_plot.gravity='left'
-$twind_text.insert('end', '¥Þ¥¦¥¹¤Ç¥Ç¡¼¥¿¤òÉÁ²è¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£')
-TkTextWindow.new($twind_text, 'end', 
-                 'window'=>TkButton.new($twind_text) {
-                   text '¾Ãµî'
-                   command proc{textWindDel $twind_text}
-                   cursor 'top_left_arrow'
-                 })
-$twind_text.insert('end', '¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¸µ¤ËÌá¤ê¤Þ¤¹¡£
-
-')
-
-$twind_text.insert('end', 'ÁȤ߹þ¤ß¥¦¥£¥ó¥É¥¦¤À¤±¤ò¥Æ¥­¥¹¥Èwidget¾å¤Ë¡¢¼ÂºÝ¤Î')
-$twind_text.insert('end', '¥Æ¥­¥¹¥È¤Ï¤Ê¤·¤ÇÁȤ߹þ¤à¤³¤È¤ÏÊØÍø¤Ç¤¹¡£')
-$twind_text.insert('end', '¤³¤Î¾ì¹ç¤Ï¡¢¥Æ¥­¥¹¥Èwidget¤Ï¥¦¥£¥ó¥É¥¦¥Þ¥Í¡¼¥¸¥ã¤Î')
-$twind_text.insert('end', '¤è¤¦¤ËÆ°ºî¤·¤Þ¤¹¡£Î㤨¤Ð¡¢¤³¤³¤Ë¤Ï¥Æ¥­¥¹¥Èwidget¤Ë')
-$twind_text.insert('end', '¤è¤Ã¤Æ¥Ü¥¿¥ó¤¬¤­¤ì¤¤¤Ëʤ٤é¤ì¤Æ¤¤¤Þ¤¹¡£')
-$twind_text.insert('end', '¤³¤ì¤é¤Î¥Ü¥¿¥ó¤ÇÇØ·Ê¿§¤òÊѤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹')
-$twind_text.insert('end', '("Default"¤Ç¸µ¤Î¿§¤ËÌ᤹¤³¤È¤¬¤Ç¤­¤Þ¤¹)¡£')
-$twind_text.insert('end', '"Short"¤È¤¤¤¦¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤Èʸ»úÎó¤ÎŤµ¤¬')
-$twind_text.insert('end', 'ÊѤï¤ê¤Þ¤¹¡£¤¹¤ë¤È¼«Æ°Åª¤Ë¥Æ¥­¥¹¥Èwidget¤¬')
-$twind_text.insert('end', '¥ì¥¤¥¢¥¦¥È¤òÀ°¤¨¤Æ¤¯¤ì¤Þ¤¹¡£')
-$twind_text.insert('end', '¤â¤¦°ìÅÙƱ¤¸¥Ü¥¿¥ó¤ò²¡¤¹¤È¸µ¤ËÌá¤ê¤Þ¤¹¡£
-
-')
-
-TkTextWindow.new($twind_text, 'end', 
-                 'window'=>TkButton.new($twind_text) {|b|
-                   text '¥Ç¥Õ¥©¥ë¥È'
-                   command proc{embDefBg $twind_text}
-                   cursor 'top_left_arrow'
-                   $tag_buttons.add('end')
-                 },
-                 'padx'=>3 )
-embToggle = TkVariable.new('Short')
-TkTextWindow.new($twind_text, 'end', 
-                 'window'=>TkCheckButton.new($twind_text) {
-                   textvariable embToggle
-                   indicatoron 0
-                   variable embToggle
-                   onvalue 'A much longer string'
-                   offvalue 'Short'
-                   cursor 'top_left_arrow'
-                   pady 5
-                   padx 2
-                 },
-                 'padx'=>3, 
-                 'pady'=>2 )
-
-[ 'AntiqueWhite3', 'Bisque1', 'Bisque2', 'Bisque3', 'Bisque4', 
-  'SlateBlue3', 'RoyalBlue1', 'SteelBlue2', 'DeepSkyBlue3', 'LightBlue1', 
-  'DarkSlateGray1', 'Aquamarine2', 'DarkSeaGreen2', 'SeaGreen1', 
-  'Yellow1', 'IndianRed1', 'IndianRed2', 'Tan1', 'Tan4' 
-].each{|twind_color|
-  TkTextWindow.new($twind_text, 'end', 
-                   'window'=>TkButton.new($twind_text) {
-                     text twind_color
-                     cursor 'top_left_arrow'
-                     command proc{$twind_text.bg twind_color}
-                   },
-                   'padx'=>3, 
-                   'pady'=>2 )
-}
-
-# ¥á¥½¥Ã¥ÉÄêµÁ
-def textWindOn (w,f)
-  if defined? $twind_scroll
-    begin
-      $twind_scroll.destroy
-    rescue
-    end
-    $twind_scroll = nil
-  end
-
-  base = TkWinfo.parent( TkWinfo.parent(w) )
-  $twind_scroll = TkScrollbar.new(base) {|s|
-    orient 'horizontal'
-    command proc{|*args| w.xview(*args)}
-    w.xscrollcommand proc{|first,last| s.set first,last}
-    w.wrap 'none'
-    pack('after'=>f, 'side'=>'bottom', 'fill'=>'x')
-  }
-
-  return nil
-end
-
-def textWindOff (w)
-  if defined? $twind_scroll
-    begin
-      $twind_scroll.destroy
-    rescue
-    end
-    $twind_scroll = nil
-  end
-  w.xscrollcommand ''
-  w.wrap 'word'
-end
-
-def textWindPlot (t)
-  if (defined? $twind_plot) && (TkWinfo.exist?($twind_plot))
-    return
-  end
-
-  $twind_plot = TkCanvas.new(t) {
-    relief 'sunken'
-    width  450
-    height 300
-    cursor 'top_left_arrow'
-  }
-
-  if $tk_version =~ /^4.*/
-    font = '-Adobe-Helvetica-Medium-R-Normal--*-180-*-*-*-*-*-*'
-  else
-    font = 'Helvetica 18'
-  end
-
-  TkcLine.new($twind_plot, 100, 250, 400, 250, 'width'=>2)
-  TkcLine.new($twind_plot, 100, 250, 100,  50, 'width'=>2)
-  TkcText.new($twind_plot, 225, 20, 
-              'text'=>"A Simple Plot", 'font'=>font, 'fill'=>'brown')
-
-  (0..10).each {|i|
-    x = 100 + (i * 30)
-    TkcLine.new($twind_plot, x, 250, x, 245, 'width'=>2)
-    TkcText.new($twind_plot, x, 254, 
-                'text'=>10*i, 'font'=>font, 'anchor'=>'n')
-  }
-  (0..5).each {|i|
-    y = 250 - (i * 40)
-    TkcLine.new($twind_plot, 100, y, 105, y, 'width'=>2)
-    TkcText.new($twind_plot, 96, y, 
-                'text'=>"#{i*50}.0", 'font'=>font, 'anchor'=>'e')
-  }
-
-  for xx, yy in [[12,56],[20,94],[33,98],[32,120],[61,180],[75,160],[98,223]]
-    x = 100 + (3*xx)
-    y = 250 - (4*yy)/5
-    item = TkcOval.new($twind_plot, x-6, y-6, x+6, y+6, 
-                       'width'=>1, 'outline'=>'black', 'fill'=>'SkyBlue2')
-    item.addtag 'point'
-  end
-
-  $twind_plot.itembind('point', 'Any-Enter', 
-                        proc{$twind_plot.itemconfigure 'current', 'fill', 'red'})
-  $twind_plot.itembind('point', 'Any-Leave', 
-                        proc{$twind_plot.itemconfigure 'current', 'fill', 'SkyBlue2'})
-  $twind_plot.itembind('point', '1', 
-                        proc{|x,y| embPlotDown $twind_plot,x,y}, "%x %y")
-  $twind_plot.itembind('point', 'ButtonRelease-1', 
-                        proc{$twind_plot.dtag 'selected'})
-  $twind_plot.bind('B1-Motion', 
-                    proc{|x,y| embPlotMove $twind_plot,x,y}, "%x %y")
-  while ($twind_text.get($mark_plot) =~ /[ \t\n]/)
-    $twind_text.delete $mark_plot
-  end
-  $twind_text.insert $mark_plot,"\n"
-  TkTextWindow.new($twind_text, $mark_plot, 'window'=>$twind_plot)
-  $tag_center.add $mark_plot
-  $twind_text.insert $mark_plot,"\n"
-end
-
-$embPlot = {'lastX'=>0, 'lastY'=>0}
-
-def embPlotDown (w, x, y)
-  w.dtag 'selected'
-  w.addtag_withtag 'selected', 'current'
-  w.raise 'current'
-  $embPlot['lastX'] = x
-  $embPlot['lastY'] = y
-end
-
-def embPlotMove (w, x, y)
-  w.move 'selected', x - $embPlot['lastX'], y - $embPlot['lastY']
-  $embPlot['lastX'] = x
-  $embPlot['lastY'] = y
-end
-
-def textWindDel (w)
-  if (defined? $twind_text) && TkWinfo.exist?($twind_plot)
-    $twind_text.delete $twind_plot
-    $twind_plot = nil
-    while ($twind_text.get($mark_plot) =~ /[ \t\n]/)
-      $twind_text.delete $mark_plot
-    end
-    $twind_text.insert $mark_plot,"  "
-  end
-end
-
-def embDefBg (w)
-  w['background'] = w.configinfo('background')[3]
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/twind2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/twind2.rb
deleted file mode 100644 (file)
index 2a26b28..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# text (embedded windows) widget demo 2 (called by 'widget')
-#
-
-# toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
-if defined?($twind2_demo) && $twind2_demo
-  $twind2_demo.destroy 
-  $twind2_demo = nil
-end
-
-# demo ÍѤΠtoplevel widget ¤òÀ¸À®
-$twind2_demo = TkToplevel.new {|w|
-  title("Text Demonstration - Embedded Windows 2")
-  iconname("Embedded Windows")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($twind2_demo).pack(:fill=>:both, :expand=>true)
-
-# frame À¸À®
-$twind2_buttons = TkFrame.new(base_frame) {|frame|
-  TkGrid(TkFrame.new(frame, :height=>2, :relief=>:sunken, :bd=>2), 
-         :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
-  TkGrid('x', 
-         TkButton.new(frame, :text=>'¥³¡¼¥É»²¾È', 
-                      :image=>$image['view'], :compound=>:left, 
-                      :command=>proc{showCode 'twind2'}), 
-         TkButton.new(frame, :text=>'ÊĤ¸¤ë', 
-                      :image=>$image['delete'], :compound=>:left, 
-                      :command=>proc{
-                        tmppath = $twind2_demo
-                        $twind2_demo = nil
-                        $showVarsWin[tmppath.path] = nil
-                        tmppath.destroy
-                      }), 
-         :padx=>4, :pady=>4)
-  frame.grid_columnconfigure(0, :weight=>1)
-}
-$twind2_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-# frame À¸À®
-$twind2_text = nil
-TkFrame.new(base_frame, 'highlightthickness'=>2, 'borderwidth'=>2, 
-            'relief'=>'sunken') {|f|
-  $twind2_text = TkText.new(f, 'setgrid'=>true, 'font'=>$font,
-                            # 'width'=>'70', 'height'=>35, 'wrap'=>'word', 
-                            'width'=>'70', 'height'=>35, 'wrap'=>'char', 
-                            'highlightthickness'=>0, 'borderwidth'=>0 ){|t|
-    TkScrollbar.new(f) {|s|
-      command proc{|*args| t.yview(*args)}
-      t.yscrollcommand proc{|first,last| s.set first,last}
-    }.pack('side'=>'right', 'fill'=>'y')
-  }.pack('expand'=>'yes', 'fill'=>'both')
-}.pack('expand'=>'yes', 'fill'=>'both')
-
-# ¥¿¥°À¸À®
-$tag2_center = TkTextTag.new($twind2_text, 
-                            'justify' =>'center',
-                            'spacing1'=>'5m',
-                            'spacing3'=>'5m'  )
-$tag2_buttons = TkTextTag.new($twind2_text, 
-                             'lmargin1'=>'1c',
-                             'lmargin2'=>'1c',
-                             'rmargin' =>'1c',
-                             'spacing1'=>'3m',
-                             'spacing2'=>0,
-                             'spacing3'=>0 )
-
-# ¥Æ¥­¥¹¥È¤ÎÀ¸À®
-$twind2_text.insert('end', '¥Æ¥­¥¹¥È¥¦¥£¥¸¥§¥Ã¥È¤Ë¤Ï¿§¡¹¤Ê¼ïÎà¤Î¥¢¥¤¥Æ¥à')
-$twind2_text.insert('end', '¡ÊưŪ¤Ê¤â¤Î¤äÀÅŪ¤Ê¤â¤Î¤ÎξÊý¤¬¤¢¤ê¤Þ¤¹¡Ë¤ò')
-$twind2_text.insert('end', '¿ô¿¤¯´Þ¤á¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤½¤¦¤·¤¿¥¢¥¤¥Æ¥à¤Ï')
-$twind2_text.insert('end', '¹ÔÂؤ¨¡¢¥¿¥Ö¡¢Ãæ±û·¤¨¤Ê¤É¤ÎÍÍ¡¹¤ÊÊýË¡¤Ç')
-$twind2_text.insert('end', 'ÇÛÃÖ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£')
-$twind2_text.insert('end', '²Ã¤¨¤Æ¡¢¥Æ¥­¥¹¥È¥¦¥£¥¸¥§¥Ã¥È¤ÎÆâÍÆʪ¤¬')
-$twind2_text.insert('end', '¥¦¥£¥ó¥É¥¦¥µ¥¤¥º¤ËÈæ¤Ù¤ÆÂ礭¤¹¤®¤ë¾ì¹ç¤Ç¤â')
-$twind2_text.insert('end', '¤¹¤Ù¤Æ¤ÎÊý¸þ¤Ë¥¹¥à¡¼¥º¤Ë¥¹¥¯¥í¡¼¥ë¤µ¤»¤Æ')
-$twind2_text.insert('end', '³Îǧ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£')
-$twind2_text.insert('end', "\n\n")
-$twind2_text.insert('end', '¥Æ¥­¥¹¥È¥¦¥£¥¸¥§¥Ã¥È¾å¤Ë¤Ï¾¤Î¥¦¥£¥¸¥§¥Ã¥È¤ò')
-$twind2_text.insert('end', '´Þ¤á¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£¤³¤¦¤·¤¿¤â¤Î¤Ï')
-$twind2_text.insert('end', '¡ÖËä¤á¹þ¤ß¥¦¥£¥ó¥É¥¦¡×¤È¸Æ¤Ð¤ì¡¢¤½¤ÎÃæ¤Ë')
-$twind2_text.insert('end', '¤¤¤«¤Ê¤ë¥¦¥£¥¸¥§¥Ã¥È¤Ç¤âµÍ¤á¹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£')
-$twind2_text.insert('end', 'Î㤨¤Ð¡¤¤³¤³¤Ë¤Ï£²¤Ä¤Î')
-$twind2_text.insert('end', '¥Ü¥¿¥ó¥¦¥£¥¸¥§¥Ã¥È¤¬Ëä¤á¹þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£')
-$twind2_text.insert('end', 'ºÇ½é¤Î¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢')
-$twind2_text.insert('end', '¿åÊ¿Êý¸þ¤Î¥¹¥¯¥í¡¼¥ë¤ò ')
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text) {
-                   #text 'ON'
-                   text '¥ª¥ó'
-                   command proc{textWindOn2 $twind2_text,$twind2_buttons}
-                   cursor 'top_left_arrow'
-                 })
-$twind2_text.insert('end', "¤Ë¤·¤Þ¤¹¡£¤Þ¤¿¡¢£²¤Ä¤á¤Î¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È\n")
-$twind2_text.insert('end', '¿åÊ¿Êý¸þ¤Î¥¹¥¯¥í¡¼¥ë¤ò')
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text) {
-                   #text 'OFF'
-                   text '¥ª¥Õ'
-                   command proc{textWindOff2 $twind2_text}
-                   cursor 'top_left_arrow'
-                 })
-$twind2_text.insert('end', "¤Ë¤·¤Þ¤¹¡£\n\n")
-
-$twind2_text.insert('end', '¼¡¤Ï¤â¤¦¤Ò¤È¤Ä¤ÎÎã¤Ç¤¹¡£')
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text) {
-                   text '¤³¤³¤ò¥¯¥ê¥Ã¥¯'
-                   command proc{textWindPlot2 $twind2_text}
-                   cursor 'top_left_arrow'
-                 })
-$twind2_text.insert('end', '¤¹¤ë¤È¡¢x-y¥×¥í¥Ã¥È¤¬¤³¤³¤Ë¸½¤ì¤Þ¤¹¡£')
-$mark2_plot = TkTextMark.new($twind2_text, 'insert')
-$mark2_plot.gravity='left'
-$twind2_text.insert('end', '¥Þ¥¦¥¹¤Ç¥É¥é¥Ã¥°¤¹¤ë¤³¤È¤Ç¡¢')
-$twind2_text.insert('end', '¥×¥í¥Ã¥È¾å¤Î¥Ç¡¼¥¿ÅÀ¤ò°ÜÆ°¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£')
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text) {
-                   text '¾Ãµî'
-                   command proc{textWindDel2 $twind2_text}
-                   cursor 'top_left_arrow'
-                 })
-$twind2_text.insert('end', '¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¸µ¤ËÌá¤ê¤Þ¤¹¡£')
-$twind2_text.insert('end', "\n\n")
-
-$twind2_text.insert('end', 'ɽ¼¨¤¹¤ë¥Æ¥­¥¹¥È¤Ê¤·¤ËËä¤á¹þ¤ß¥¦¥£¥ó¥É¥¦¤À¤±¤ò')
-$twind2_text.insert('end', '¥Æ¥­¥¹¥È¥¦¥£¥¸¥§¥Ã¥È¤Ë´Þ¤á¤ë¤³¤È¤âÍ­ÍѤǤ·¤ç¤¦¡£')
-$twind2_text.insert('end', '¤³¤Î¾ì¹ç¡¢¥Æ¥­¥¹¥È¥¦¥£¥¸¥§¥Ã¥È¤Ï')
-$twind2_text.insert('end', '¥¸¥ª¥á¥È¥ê¥Þ¥Í¡¼¥¸¥ã¤Î¤è¤¦¤ËƯ¤­¤Þ¤¹¡£')
-$twind2_text.insert('end', 'Î㤨¤Ð¡¢¤³¤³¤Ë¤Ï¥Æ¥­¥¹¥È¥¦¥£¥¸¥§¥Ã¥È¤Ë')
-$twind2_text.insert('end', '¤è¤Ã¤Æ¥Ü¥¿¥ó¤¬¤­¤ì¤¤¤ËÀ°Îó¤·¤ÆÇÛÃÖ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£')
-$twind2_text.insert('end', '¤³¤ì¤é¤Î¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤Ç¡¢')
-$twind2_text.insert('end', '¤³¤Î¥Æ¥­¥¹¥È¥¦¥£¥¸¥§¥Ã¥È¤ÎÇØ·Ê¿§¤ò')
-$twind2_text.insert('end', 'ÊѤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹("¥Ç¥Õ¥©¥ë¥È"¥Ü¥¿¥ó¤Ç')
-$twind2_text.insert('end', '¸µ¤Î¿§¤ËÌ᤹¤³¤È¤¬¤Ç¤­¤Þ¤¹)¡£')
-$twind2_text.insert('end', '"Short"¤È¤¤¤¦¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤Èʸ»úÎó¤ÎŤµ¤¬')
-$twind2_text.insert('end', 'ÊѤï¤ê¡¢¥Æ¥­¥¹¥È¥¦¥£¥¸¥§¥Ã¥È¤¬¼«Æ°Åª¤Ë')
-$twind2_text.insert('end', '¥ì¥¤¥¢¥¦¥È¤òÀ°¤¨¤ëÍͻҤò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£')
-$twind2_text.insert('end', '¤â¤¦°ìÅÙƱ¤¸¥Ü¥¿¥ó¤ò²¡¤¹¤È¸µ¤ËÌá¤ê¤Þ¤¹¡£')
-$twind2_text.insert('end', "\n")
-
-btn_default = TkButton.new($twind2_text) {|b|
-  text '¥Ç¥Õ¥©¥ë¥È'
-  command proc{embDefBg2 $twind2_text}
-  cursor 'top_left_arrow'
-}
-TkTextWindow.new($twind2_text, 'end', 'window'=>btn_default, 'padx'=>3)
-embToggle = TkVariable.new('Short')
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkCheckButton.new($twind2_text) {
-                   textvariable embToggle
-                   indicatoron 0
-                   variable embToggle
-                   onvalue 'A much longer string'
-                   offvalue 'Short'
-                   cursor 'top_left_arrow'
-                   pady 5
-                   padx 2
-                 },
-                 'padx'=>3, 
-                 'pady'=>2 )
-
-[ 'AntiqueWhite3', 'Bisque1', 'Bisque2', 'Bisque3', 'Bisque4', 
-  'SlateBlue3', 'RoyalBlue1', 'SteelBlue2', 'DeepSkyBlue3', 'LightBlue1', 
-  'DarkSlateGray1', 'Aquamarine2', 'DarkSeaGreen2', 'SeaGreen1', 
-  'Yellow1', 'IndianRed1', 'IndianRed2', 'Tan1', 'Tan4' 
-].each{|twind_color|
-  TkTextWindow.new($twind2_text, 'end', 
-                   'window'=>TkButton.new($twind2_text) {
-                     text twind_color
-                     cursor 'top_left_arrow'
-                     command proc{$twind2_text.bg twind_color}
-                   },
-                   'padx'=>3, 
-                   'pady'=>2 )
-}
-
-$tag2_buttons.add(btn_default, 'end')
-
-$text_normal2 = {}
-$text_normal2['border'] = $twind2_text.cget('borderwidth')
-$text_normal2['highlight'] = $twind2_text.cget('highlightthickness')
-$text_normal2['pad'] = $twind2_text.cget('padx')
-
-$twind2_text.insert('end', "\nborder width ¤ä highlightthickness, ")
-$twind2_text.insert('end', "padding ¤òÄ̾ï¤ÎÃͤ«¤éÊѹ¹¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£\n")
-
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text, :text=>"Big borders", 
-                                        :cursor=>'top_left_arrow', 
-                                        'command'=>proc{
-                                          textWinBigB2 $twind2_text
-                                        }))
-
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text, :text=>"Small borders", 
-                                        :cursor=>'top_left_arrow', 
-                                        'command'=>proc{
-                                          textWinSmallB2 $twind2_text
-                                        }))
-
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text, :text=>"Big highlight", 
-                                        :cursor=>'top_left_arrow', 
-                                        'command'=>proc{
-                                          textWinBigH2 $twind2_text
-                                        }))
-
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text, :text=>"Small highlight",
-                                        :cursor=>'top_left_arrow', 
-                                        'command'=>proc{
-                                          textWinSmallH2 $twind2_text
-                                        }))
-
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text, :text=>"Big pad", 
-                                        :cursor=>'top_left_arrow', 
-                                        'command'=>proc{
-                                          textWinBigP2 $twind2_text
-                                        }))
-
-TkTextWindow.new($twind2_text, 'end', 
-                 'window'=>TkButton.new($twind2_text, :text=>"Small pad", 
-                                        :cursor=>'top_left_arrow', 
-                                        'command'=>proc{
-                                          textWinSmallP2 $twind2_text
-                                        }))
-
-$twind2_text.insert('end', "\n\n¹¹¤Ë¥¤¥á¡¼¥¸¤â¥Æ¥­¥¹¥È¥¦¥£¥¸¥§¥Ã¥È¤Ë")
-$twind2_text.insert('end', "¤¦¤Þ¤¯ÇÛÃ֤Ǥ­¤Þ¤¹¡§")
-
-TkTextImage.new($twind2_text, 'end', 
-                'image'=>TkBitmapImage.new(:file=>[
-                                             $demo_dir, '..', 
-                                             'images', 'face.xbm'
-                                           ].join(File::Separator)))
-
-# ¥á¥½¥Ã¥ÉÄêµÁ
-def textWinBigB2(w)
-  w.borderwidth 15
-end
-def textWinSmallB2(w)
-  w.borderwidth $text_normal2['border']
-end
-def textWinBigH2(w)
-  w.highlightthickness 15
-end
-def textWinSmallH2(w)
-  w.highlightthickness $text_normal2['highlight']
-end
-def textWinBigP2(w)
-  w.configure(:padx=>15, :pady=>15)
-end
-def textWinSmallP2(w)
-  w.configure(:padx=>$text_normal2['pad'], :pady=>$text_normal2['pad'])
-end
-
-def textWindOn2 (w,f)
-  if defined? $twind2_scroll
-    begin
-      $twind2_scroll.destroy
-    rescue
-    end
-    $twind2_scroll = nil
-  end
-
-  base = TkWinfo.parent( TkWinfo.parent(w) )
-  $twind2_scroll = TkScrollbar.new(base) {|s|
-    orient 'horizontal'
-    command proc{|*args| w.xview(*args)}
-    w.xscrollcommand proc{|first,last| s.set first,last}
-    w.wrap 'none'
-    pack('after'=>f, 'side'=>'bottom', 'fill'=>'x')
-  }
-
-  return nil
-end
-
-def textWindOff2 (w)
-  if defined? $twind2_scroll
-    begin
-      $twind2_scroll.destroy
-    rescue
-    end
-    $twind2_scroll = nil
-  end
-  w.xscrollcommand ''
-  #w.wrap 'word'
-  w.wrap 'char'
-end
-
-def textWindPlot2 (t)
-  if (defined? $twind2_plot) && (TkWinfo.exist?($twind2_plot))
-    return
-  end
-
-  $twind2_plot = TkCanvas.new(t) {
-    relief 'sunken'
-    width  450
-    height 300
-    cursor 'top_left_arrow'
-  }
-
-  #font = '-Adobe-Helvetica-Medium-R-Normal--*-180-*-*-*-*-*-*'
-  font = 'Helvetica 18'
-
-  TkcLine.new($twind2_plot, 100, 250, 400, 250, 'width'=>2)
-  TkcLine.new($twind2_plot, 100, 250, 100,  50, 'width'=>2)
-  TkcText.new($twind2_plot, 225, 20, 
-              'text'=>"A Simple Plot", 'font'=>font, 'fill'=>'brown')
-
-  (0..10).each {|i|
-    x = 100 + (i * 30)
-    TkcLine.new($twind2_plot, x, 250, x, 245, 'width'=>2)
-    TkcText.new($twind2_plot, x, 254, 
-                'text'=>10*i, 'font'=>font, 'anchor'=>'n')
-  }
-  (0..5).each {|i|
-    y = 250 - (i * 40)
-    TkcLine.new($twind2_plot, 100, y, 105, y, 'width'=>2)
-    TkcText.new($twind2_plot, 96, y, 
-                'text'=>"#{i*50}.0", 'font'=>font, 'anchor'=>'e')
-  }
-
-  for xx, yy in [[12,56],[20,94],[33,98],[32,120],[61,180],[75,160],[98,223]]
-    x = 100 + (3*xx)
-    y = 250 - (4*yy)/5
-    item = TkcOval.new($twind2_plot, x-6, y-6, x+6, y+6, 
-                       'width'=>1, 'outline'=>'black', 'fill'=>'SkyBlue2')
-    item.addtag 'point'
-  end
-
-  $twind2_plot.itembind('point', 'Any-Enter', 
-                        proc{$twind2_plot.itemconfigure 'current', 'fill', 'red'})
-  $twind2_plot.itembind('point', 'Any-Leave', 
-                        proc{$twind2_plot.itemconfigure 'current', 'fill', 'SkyBlue2'})
-  $twind2_plot.itembind('point', '1', 
-                        proc{|x,y| embPlotDown2 $twind2_plot,x,y}, "%x %y")
-  $twind2_plot.itembind('point', 'ButtonRelease-1', 
-                        proc{$twind2_plot.dtag 'selected'})
-  $twind2_plot.bind('B1-Motion', 
-                    proc{|x,y| embPlotMove2 $twind2_plot,x,y}, "%x %y")
-  while ($twind2_text.get($mark2_plot) =~ /[ \t\n]/)
-    $twind2_text.delete $mark2_plot
-  end
-  $twind2_text.insert $mark2_plot,"\n"
-  TkTextWindow.new($twind2_text, $mark2_plot, 'window'=>$twind2_plot)
-  $tag2_center.add $mark2_plot
-  $twind2_text.insert $mark2_plot,"\n"
-end
-
-$embPlot2 = {'lastX'=>0, 'lastY'=>0}
-
-def embPlotDown2 (w, x, y)
-  w.dtag 'selected'
-  w.addtag_withtag 'selected', 'current'
-  w.raise 'current'
-  $embPlot2['lastX'] = x
-  $embPlot2['lastY'] = y
-end
-
-def embPlotMove2 (w, x, y)
-  w.move 'selected', x - $embPlot2['lastX'], y - $embPlot2['lastY']
-  $embPlot2['lastX'] = x
-  $embPlot2['lastY'] = y
-end
-
-def textWindDel2 (w)
-  if (defined? $twind2_text) && TkWinfo.exist?($twind2_plot)
-    $twind2_text.delete $twind2_plot
-    $twind2_plot = nil
-    while ($twind2_text.get($mark2_plot) =~ /[ \t\n]/)
-      $twind2_text.delete $mark2_plot
-    end
-    $twind2_text.insert $mark2_plot,"  "
-  end
-end
-
-def embDefBg2 (w)
-  w['background'] = w.configinfo('background')[3]
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/unicodeout.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/unicodeout.rb
deleted file mode 100644 (file)
index 178077e..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-# -*- coding: euc-jp -*-
-#
-# unicodeout.rb --
-#
-# This demonstration script shows how you can produce output (in label
-# widgets) using many different alphabets.
-#
-# based on Tcl/Tk8.4.4 widget demos
-
-if defined?($unicodeout_demo) && $unicodeout_demo
-  $unicodeout_demo.destroy 
-  $unicodeout_demo = nil
-end
-
-$unicodeout_demo = TkToplevel.new {|w|
-  title("Unicode Label Demonstration")
-  iconname("unicodeout")
-  positionWindow(w)
-}
-
-base_frame = TkFrame.new($unicodeout_demo).pack(:fill=>:both, :expand=>true)
-
-TkLabel.new(base_frame, 
-            :font=>$font, :wraplength=>'5.4i', :justify=>:left, 
-            :text=><<EOL).pack(:side=>:top)
-¤³¤ì¤Ï¡¤Tk¤Ë¤ª¤±¤ëÈó²¤ÊÆʸ»ú½¸¹ç¤òÍѤ¤¤ë¸À¸ì¤ËÂФ¹¤ë¥µ¥Ý¡¼¥È¤Ë¤Ä¤¤¤Æ¤Î\
-¥µ¥ó¥×¥ë¤Ç¤¹¡¥¤¿¤À¤·¡¤²¼¤Îɽ¼¨¤Ë¤ª¤¤¤Æ¤¢¤Ê¤¿¤¬¼ÂºÝ¤Ë¤É¤Î¤è¤¦¤Êɽ¼¨¤ò\
-Ìܤˤ¹¤ë¤«¤Ï¡¤¤¢¤Ê¤¿¤Î´Ä¶­¤Ë¤É¤Î¤è¤¦¤Êʸ»ú½¸¹ç¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤«¤Ë\
-Â礭¤¯°Í¸¤·¤Þ¤¹¡¥¤Þ¤¿¡¤ÂоݤȤʤëʸ»ú½¸¹ç¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë\
-¤É¤Î¤è¤¦¤Êɽ¼¨¤¬¤Ê¤µ¤ì¤ë¤«¤â¤¢¤Ê¤¿¤Î´Ä¶­¼¡Âè¤Ç¤¹¡¥\
-¡Ö¥³¡¼¥É»²¾È¡×¥Ü¥¿¥ó¤ò²¡¤·¤Æ¥½¡¼¥¹¤òɽ¼¨¤·¡¤\
-Unicodeout_SampleFrame¥¯¥é¥¹¤Î@@font¤ÎÄêµÁ¤ò½ñ¤­´¹¤¨¤Æ\
-(¥Õ¥¡¥¤¥ë¤ÎÆâÍƤÏÊѹ¹¤µ¤ì¤Þ¤»¤ó)\
-¡ÖºÆ¼Â¹Ô¡×¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¤ò»î¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡¥
-¥¹¥¯¥ê¥×¥È¤¬²ÄÈÂÀ­¤ò»ý¤Ä¤è¤¦¤Ë¡¤Ê¸»úÎó¤Ï\\uXXXX¤È¤¤¤¦\
-Tcl¤Î¥¨¥¹¥±¡¼¥×ɽ¸½¤òÍѤ¤¤¿UNICODEʸ»úÎó¤Ç½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡¥\
-ʸ»úÎó¤Ï¡¤Tk::UTF8_String¥á¥½¥Ã¥É¤Ë¤è¤Ã¤Æ¡¤\
-¡ÖUTF8·Á¼°¤Îʸ»úÎó¤Ç¤¢¤ë¡×¤È¤¤¤¦\
-¥¨¥ó¥³¡¼¥É¾ðÊóÉÕ¤­¤Îʸ»úÎ󥪥֥¸¥§¥¯¥È\
-(Tcl¤Î¥¨¥¹¥±¡¼¥×ɽ¸½¤ÎÊÑ´¹ºÑ¤ß)¤ËÊÑ´¹¤·¤Æ\
-¥é¥Ù¥ë¥¦¥£¥¸¥§¥Ã¥È¤ËÅϤ·¤Æ¤¤¤ëÅÀ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥
-EOL
-#'
-
-TkFrame.new(base_frame){|f|
-  pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
-
-  TkButton.new(f, :text=>'ÊĤ¸¤ë', :width=>15, :command=>proc{
-                 $unicodeout_demo.destroy
-                 $unicodeout_demo = nil
-               }).pack(:side=>:left, :expand=>true)
-
-  TkButton.new(f, :text=>'¥³¡¼¥É»²¾È', :width=>15, :command=>proc{
-                 showCode 'unicodeout'
-               }).pack(:side=>:left, :expand=>true)
-}
-
-wait_msg = TkLabel.new(base_frame, 
-                       :text=>"¥Õ¥©¥ó¥ÈÆɤ߹þ¤ß¤Î´°Î»¤Þ¤Ç" + 
-                              "¤·¤Ð¤é¤¯¤ªÂÔ¤Á²¼¤µ¤¤¡¥¡¥¡¥", 
-                       :font=>"Helvetica 12 italic").pack
-
-class Unicodeout_SampleFrame < TkFrame
-  @@font = $font
-  # @@font = 'Helvetica 14'
-  # @@font = 'Courier 12'
-  # @@font = 'clearlyu 16'
-  # @@font = 'fixed 12'
-  # @@font = 'Times 12'
-  # @@font = 'Newspaper 12'
-  # @@font = '{New century schoolbook} 12'
-
-  def initialize(base)
-    super(base)
-    grid_columnconfig(1, :weight=>1)
-  end
-
-  def add_sample(lang, *args)
-    sample_txt = Tk::UTF8_String(args.join(''))
-    l = TkLabel.new(self, :font=>@@font, :text=>lang+':', 
-                    :anchor=>:nw, :pady=>0)
-    #s = TkLabel.new(self, :font=>@@font, :text=>sample_txt, 
-    s = TkLabel.new(self, :font=>TkFont.new(@@font), :text=>sample_txt, 
-                    :anchor=>:nw, :width=>30, :pady=>0)
-    Tk.grid(l, s, :sticky=>:ew, :pady=>0)
-    l.grid_config(:padx, '1m')
-  end
-end
-f = Unicodeout_SampleFrame.new(base_frame)
-f.pack(:expand=>true, :fill=>:both, :padx=>'2m', :pady=>'1m')
-
-# Processing when some characters are missing might take a while, so make
-# sure we're displaying something in the meantime...
-
-oldCursor = $unicodeout_demo.cursor
-$unicodeout_demo.cursor('watch')
-Tk.update
-
-f.add_sample('Arabic', 
-             '\uFE94\uFEF4\uFE91\uFEAE\uFECC\uFEDF\uFE8D\uFE94', 
-             '\uFEE4\uFEE0\uFEDC\uFEDF\uFE8D')
-f.add_sample('Trad. Chinese', '\u4E2D\u570B\u7684\u6F22\u5B57')
-f.add_sample('Simpl. Chinese', '\u6C49\u8BED')
-f.add_sample('Greek', 
-             '\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AE ', 
-             '\u03B3\u03BB\u03CE\u03C3\u03C3\u03B1')
-f.add_sample('Hebrew', 
-             '\u05DD\u05D9\u05DC\u05E9\u05D5\u05E8\u05D9 ', 
-             '\u05DC\u05D9\u05D0\u05E8\u05E9\u05D9')
-f.add_sample('Japanese', 
-             '\u65E5\u672C\u8A9E\u306E\u3072\u3089\u304C\u306A, ', 
-             '\u6F22\u5B57\u3068\u30AB\u30BF\u30AB\u30CA')
-f.add_sample('Korean', '\uB300\uD55C\uBBFC\uAD6D\uC758 \uD55C\uAE00')
-f.add_sample('Russian', 
-             '\u0420\u0443\u0441\u0441\u043A\u0438\u0439 ', 
-             '\u044F\u0437\u044B\u043A')
-
-wait_msg.destroy
-$unicodeout_demo.cursor(oldCursor)
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/vscale.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/vscale.rb
deleted file mode 100644 (file)
index a1097fd..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-# -*- coding: euc-jp -*-
-require "tkcanvas"
-
-if defined?($vscale_demo) && $vscale_demo
-  $vscale_demo.destroy
-  $vscale_demo = nil
-end
-
-$vscale_demo = TkToplevel.new {|w|
-  title("Vertical Scale Demonstration")
-  iconname("vscale")
-}
-positionWindow($vscale_demo)
-
-base_frame = TkFrame.new($vscale_demo).pack(:fill=>:both, :expand=>true)
-
-msg = TkLabel.new(base_frame) {
-  font $font
-  wraplength '3.5i'
-  justify 'left'
-#  text "²¼¤Ë¤ÏÌð°õ¤¬1¤Ä¤È¾èľ¤Ê¥¹¥±¡¼¥ë¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£\
-#¥¹¥±¡¼¥ë¾å¤Ç¥Þ¥¦¥¹¥Ü¥¿¥ó1¤ò¥¯¥ê¥Ã¥¯¡¢¤Þ¤¿¤Ï¥É¥é¥Ã¥°¤¹¤ë¤È\
-#Ìð°õ¤ÎŤµ¤òÊѤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£"
-  text "¤Ë¤Ï¥Ð¡¼¤È½Ä·¿¤Î¥¹¥±¡¼¥ë¤¬É½¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥¹¥±¡¼¥ë¤Ç¥Þ¥¦¥¹¤Î¥Ü¥¿¥ó1 ¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤«¥É¥é¥Ã¥°¤·¤Æ¥Ð¡¼¤Î¹â¤µ¤òÊѤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£½ª¤Ã¤¿¤é¡Öλ²ò¡×¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£"
-}
-msg.pack('side'=>'top', 'padx'=>'.5c')
-
-TkFrame.new(base_frame) {|frame|
-  TkButton.new(frame) {
-    #text 'λ²ò'
-    text 'ÊĤ¸¤ë'
-    command proc {
-      tmppath = $vscale_demo
-      $vscale_demo = nil
-      tmppath.destroy
-    }
-  }.pack('side'=>'left', 'expand'=>'yes')
-
-  TkButton.new(frame) {
-    text '¥³¡¼¥É»²¾È'
-    command proc { showCode 'vscale' }
-  }.pack('side'=>'left', 'expand'=>'yes')
-}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-
-def setHeight(w, height)
-  height = height + 21
-  y2 = height - 30
-  if y2 < 21
-    y2 = 21
-  end
-  w.coords 'poly',15,20,35,20,35,y2,45,y2,25,height,5,y2,15,y2,15,20
-  w.coords 'line',15,20,35,20,35,y2,45,y2,25,height,5,y2,15,y2,15,20
-end
-
-TkFrame.new(base_frame) {|frame|
-  borderwidth 10
-  canvas = TkCanvas.new(frame) {|c|
-    width 50
-    height 50
-    bd 0
-    highlightthickness 0
-    TkcPolygon.new(c, 0, 0, 1, 1, 2, 2) {
-      fill 'SeaGreen3'
-      tags 'poly'
-    }
-    TkcLine.new(c, 0, 0, 1, 1, 2, 2, 0, 0) {
-      fill 'black'
-      tags 'line'
-    }
-  }.pack('side'=>'left',  'anchor'=>'nw', 'fill'=>'y')
-  scale = TkScale.new(frame) {
-    orient 'vertical'
-    length 284
-    from 0
-    to 250
-    command proc{|value| setHeight(canvas, value)}
-    tickinterval 50
-  }.pack('side'=>'left', 'anchor'=>'ne')
-  scale.set 75
-}.pack
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/widget b/ruby/doc/ruby/ruby-1.8.7/sample/tk/demos-jp/widget
deleted file mode 100644 (file)
index 8eb699e..0000000
+++ /dev/null
@@ -1,1125 +0,0 @@
-#!/usr/bin/env ruby
-# -*- coding: euc-jp -*-
-
-# ´Á»ú¥³¡¼¥ÉÀßÄê ( tk.rb ¤Î¥í¡¼¥É»þ¤Î encoding ¿äÄê/ÀßÄê¤Ë»È¤ï¤ì¤ë )
-if RUBY_VERSION < '1.9.0' ### !!!!!!!!!!!!!!
-  $KCODE = 'euc'
-else
-  DEFAULT_TK_ENCODING = 'EUC-JP'
-end
-
-# tk ´Ø·¸¥é¥¤¥Ö¥é¥ê¤ÎÆɤ߹þ¤ß
-require 'tk'
-# require 'tkafter'
-
-$RubyTk_WidgetDemo = true
-
-# widget demo directory °ÌÃ֤γÍÆÀ
-# $demo_dir = File.dirname($0)
-$demo_dir = File.dirname(__FILE__)
-
-# root ¤ÎÀ¸À®
-$root = TkRoot.new{title "Ruby/Tk Widget Demonstration"}
-
-# tk ¥Ð¡¼¥¸¥ç¥ó¤Î¼èÆÀ
-$tk_version = Tk::TK_VERSION
-$tk_major_ver, $tk_minor_ver = $tk_version.split('.').map{|n| n.to_i}
-$tk_patchlevel = Tk::TK_PATCHLEVEL
-
-# tcl_platform ¾ðÊó¤Ø¤Î¥¢¥¯¥»¥¹¥ª¥Ö¥¸¥§¥¯¥È
-$tk_platform = TkVarAccess.new('tcl_platform')
-
-# ¥Õ¥©¥ó¥ÈÀßÄê
-#######
-case($tk_version)
-when /^4.*/
-  $font = TkFont.new('-*-Helvetica-Medium-R-Normal--*-140-*-*-*-*-*-*', nil)
-  knjfont = '-*--16-*-jisx0208.1983-0'
-  $kanji_font = TkFont.new('-*-Helvetica-Medium-R-Normal--*-140-*-*-*-*-*-*',
-                           knjfont)
-  TkOption.add('*kanjiFont', knjfont, 'startupFile')
-  $msg_kanji_font=TkFont.new('-*-Helvetica-Medium-R-Normal--*-140-*-*-*-*-*-*',
-                             '-*--24-*-jisx0208.1983-0')
-
-#when '8.0'
-#  $font = TkFont.new('Helvetica -12')
-#  $kanji_font = TkFont.new('Helvetica -12', 'Mincho -12')
-#  TkOption.add('*kanjiFont', knjfont, 'startupFile')
-#  $msg_kanji_font=TkFont.new('Helvetica 16', 'Gothic 16 bold')
-
-when /^8.*/
-  $font = TkFont.new('Helvetica -12')
-  $kanji_font = TkFont.new('Helvetica -12', 'Mincho -12')
-  TkOption.add('*kanjiFont', knjfont, 'startupFile')
-  $msg_kanji_font=TkFont.new('Helvetica 14 bold', 'Gothic 14 bold')
-
-else
-  $font = TkFont.new('Helvetica 14', nil)
-  knjfont = '-*--16-*-jisx0208.1983-0'
-  $kanji_font = TkFont.new('Helvetic 14', knjfont)
-  TkOption.add('*kanjiFont', knjfont, 'startupFile')
-  $msg_kanji_font=TkFont.new('Helvetica 14',
-                             '-*--24-*-jisx0208.1983-0')
-end
-#######
-
-# ¥¤¥á¡¼¥¸ÀßÄê
-$image = {}
-
-if $tk_major_ver >= 8
-$image['refresh'] = TkPhotoImage.new(:height=>16, :format=>'GIF', :data=><<EOD)
-    R0lGODlhEAAQAPMAAMz/zCpnKdb/1z9mPypbKBtLGy9NMPL/9Or+6+P+4j1Y
-    PwQKBP7//xMLFAYBCAEBASH5BAEAAAAALAAAAAAQABAAAwR0EAD3Gn0Vyw0e
-    ++CncU7IIAezMA/nhUqSLJizvSdCEEjy2ZIV46AwDAoDHwPYGSoEiUJAAGJ6
-    EDHBNCFINW5OqABKSFk/B9lUa94IDwIFgewFMwQDQwCZQCztTgM9Sl8SOEMG
-    KSAthiaOjBMPDhQONBiXABEAOw==
-EOD
-end
-
-if $tk_major_ver >= 8
-$image['view'] = TkPhotoImage.new(:height=>16, :format=>'GIF', :data=><<EOD)
-    R0lGODlhEAAQAPMAAMz/zP///8DAwICAgH9/fwAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAwRIcMhJB7h3hM33
-    KFjWdQQYap1QrCaGBmrRrS4nj5b53jOgbwXBKGACoYLDIuAoHCmZyYvR1rT5
-    RMAq8LqcIYGsrjPsW1XOmFUEADs=
-EOD
-end
-
-if $tk_major_ver >= 8
-$image['delete'] = TkPhotoImage.new(:height=>16, :format=>'GIF', :data=><<EOD)
-    R0lGODlhEAAOAKEAAIQAAO/n3v///////yH5BAEKAAIALAAAAAAQAA4AAAIm
-    lI9pAKHbIHNoVhYhTdjlJ2AWKG2g+CldmB6rxo2uybYhbS80eRQAOw==
-EOD
-end
-
-if $tk_major_ver >= 8
-$image['print'] = TkPhotoImage.new(:height=>19, :format=>'GIF', :data=><<EOD)
-    R0lGODlhGgATAPcAACEQOTEpQjEpUkIpc0IxY0I5c0oxjEo5SlJCY1JCe1JK
-    UlpChFpCjFpGkFpSc1paa2NKc2NKnGNja2tapWtjc29KnHNanHNjc3NjrXNr
-    jHNrnHNzc3tjpXtrtXtzhICAgIRzvYSEjIZzqox7tYyEnIyMjJSEtZSEvZSM
-    lJyMtZyMvZyUlJyUrZyUvZycnKWctaWlpa2czq2lzrWtvbWtzrW1tb21xr21
-    1sa9zs693s7OztbO3tbO597W1t7W7+fe7+fn5////+/n7+/v7+/v9////wAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-    AAAAAAAAAAAAAAAAAAAAACH5BAEAAEEALAAAAAAaABMAQAj/AIMIHBhkg0GC
-    CBMGIQEiQgseQT4oeCBBAokgRYYQ0JBixg8hRIiUUEBBYYmTByBwiCBCRYwH
-    CxY8cKFw4AogRXLqLAJkQ80gCBBg3BkxZswTNGh4MGqgQQUMJRHCwMkTSE+D
-    Pn8eCKBhxIMhO3ei2OHDBw6sWSlMMMoWgwwfMDZI8GBjx44NARZwEGGi5MkS
-    PcIWKRGz5YgLbAco+KkQBQoJIRgjdGEVq+SaJajqtNrzMgsPCmoIzqmDgmWE
-    KOBuUKAAwYabYTfs4OHjY0giGyhk4MAWRI4eKyRQqPgggYUXPH4A+XBAgwoK
-    DiIsCFxjA9sFEVQQCRJCAYAFDJxiKhAxvMTonEFimrhhYinTBgWiCvxLNX3M
-    DkkpsKV5OYhjBxCMYAICAigUEAA7
-EOD
-end
-
-# ¥á¥Ë¥å¡¼ÀßÄê
-if $tk_major_ver >= 8
-  $root.add_menubar([[['File', 0], 
-                        ['About ... ', proc{aboutBox}, 0, '<F1>'],
-                        '---', 
-                        ['Quit', proc{exit}, 0, 'Ctrl-Q']
-                      ]])
-else
-  TkMenubar.new($root, 
-                [[['File', 0], 
-                    ['About ... ', proc{aboutBox}, 0, '<F1>'],
-                    '---', 
-                    ['Quit', proc{exit}, 0, 'Ctrl-Q']
-                  ]]).pack('side'=>'top', 'fill'=>'x')
-end
-$root.bind('F1', proc{aboutBox})
-$root.bind('Control-q', proc{exit})
-
-=begin
-TkFrame.new($root){|frame|
-  TkMenubutton.new(frame){|button|
-    m = TkMenu.new(button) {
-      add 'command', 'label'=>'Quit', 'command'=>proc{exit}, 'underline'=>0
-    }
-    menu m
-    text 'File'
-    underline 0
-  }.pack('side'=>'left')
-}.pack('side'=>'top', 'fill'=>'x')
-=end
-
-# ¥Æ¥­¥¹¥È¥Ü¥Ã¥¯¥¹¤ÎÀ¸À®
-if $tk_version =~ /^4\.[01]/
-  scr = TkScrollbar.new($root, 'orient'=>'vertical')
-  txt = TkText.new($root) {
-    #wrap 'word'
-    wrap 'char'
-    width 70
-    height 30
-    font $font
-    setgrid 'yes'
-    yscrollcommand proc{|first,last| scr.set first,last}
-  }
-  scr.command(proc{|*args| txt.yview(*args)})
-  scr.pack('side'=>'right', 'fill'=>'y')
-  txt.pack('expand'=>'yes', 'fill'=>'both')
-else
-  textFrame = TkFrame.new($root)
-  scr = TkScrollbar.new($root, 'orient'=>'vertical', 
-                        'highlightthickness'=>0, 'takefocus'=>1) {
-    pack('in'=>textFrame, 'side'=>'right', 'fill'=>'y', 'padx'=>1)
-  }
-  txt = TkText.new($root) {
-    #wrap 'word'
-    wrap 'char'
-    width 70
-    height 30
-    font $font
-    setgrid 'yes'
-    highlightthickness 0
-    padx 4
-    pady 2
-    takefocus 0
-    bd 1
-    yscrollcommand proc{|first,last| scr.set first,last}
-  }
-  scr.command(proc{|*args| txt.yview(*args)})
-#  txt.pack('in'=>textFrame, 'expand'=>'yes', 'fill'=>'both', 'padx'=>1)
-  txt.pack('in'=>textFrame, 'expand'=>'yes', 'fill'=>'both')
-#  textFrame.pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>2)
-  textFrame.pack('expand'=>'yes', 'fill'=>'both')
-
-  statusBar = TkFrame.new($root) {|f|
-    if $tk_version =~ /^4.*/
-      statusfont = '-*-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*'
-    else
-      statusfont = 'Helvetica 10'
-    end
-    $statusBarLabel = \
-    TkLabel.new(f, 'text'=>"   ", 'relief'=>'sunken', 'bd'=>1, 'anchor'=>'w', 
-                'font'=>statusfont) \
-    .pack('side'=>'left', 'padx'=>2, 'expand'=>'yes', 'fill'=>'both')
-    TkLabel.new(f, 'width'=>8, 'relief'=>'sunken', 'bd'=>1, 'anchor'=>'w', 
-                'font'=>statusfont) \
-    .pack('side'=>'left', 'padx'=>2)
-  }.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>2)
-end
-
-# ¥Æ¥­¥¹¥È¥¿¥°ÀßÄê
-if $tk_version =~ /^4.*/
-  tag_title = TkTextTag.new(txt, 'font'=>'-*-Helvetica-Bold-R-Normal--*-180-*-*-*-*-*-*')
-else
-  tag_title = TkTextTag.new(txt, 'font'=>'Helvetica 18 bold')
-end
-#tag_kanji_title = TkTextTag.new(txt, 'kanjifont'=>$msg_kanji_font)
-#tag_middle = TkTextTag.new(txt, 'kanjifont'=>$kanji_font)
-tag_kanji_title = TkTextTag.new(txt, 'font'=>$msg_kanji_font)
-tag_middle = TkTextTag.new(txt, 'font'=>$kanji_font)
-tag_demospace = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c')
-
-if TkWinfo.depth($root) == 1
-  tag_demo = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c', 
-                           'underline'=>1)
-  $tag_visited = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c', 
-                              'underline'=>1)
-  tag_hot = TkTextTag.new(txt, 'background'=>'black', 'foreground'=>'white')
-else
-  tag_demo = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c', 
-                           'foreground'=>'blue', 'underline'=>1)
-  $tag_visited = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c', 
-                              'foreground'=>'#303080', 'underline'=>1)
-#  tag_hot = TkTextTag.new(txt, 'relief'=>'raised', 'borderwidth'=>1, 
-#                         'background'=>'SeaGreen3')
-  tag_hot = TkTextTag.new(txt, 'borderwidth'=>1, 'foreground'=>'red')
-end
-
-#tag_demo.bind('Button-1', proc{invoke txt, txt.index('current')})
-tag_demo.bind('ButtonRelease-1', 
-              proc{|x,y|invoke txt, txt.index("@#{x},#{y}")}, '%x %y')
-
-lastLine = TkVariable.new("")
-newLine  = TkVariable.new("")
-tag_demo.bind('Enter', proc{|x,y|
-                lastLine.value = txt.index("@#{x},#{y} linestart")
-                tag_hot.add(lastLine.value, "#{lastLine.value} lineend")
-                showStatus txt, txt.index("@#{x},#{y}")
-              },
-              '%x %y')
-tag_demo.bind('Leave', 
-              proc{
-                tag_hot.remove('1.0','end')
-                txt.configure('cursor','xterm')
-                $statusBarLabel.configure('text'=>"")
-              })
-tag_demo.bind('Motion', proc{|x, y|
-                newLine.value = txt.index("@#{x},#{y} linestart")
-                if newLine.value != lastLine.value
-                  tag_hot.remove('1.0','end')
-                  lastLine.value = newLine.value
-                  if ( txt.tag_names("@#{x},#{y}").find{|t| 
-                        t.kind_of?(String) && t =~ /^demo-/
-                      } )
-                    tag_hot.add(lastLine.value, 
-                                "#{lastLine.value} lineend -1 chars")
-                  end
-                end
-                showStatus txt, txt.index("@#{x},#{y}")
-              },
-              '%x %y')
-
-# ¥Æ¥­¥¹¥ÈÀ¸À®
-txt.insert('end', 'Ruby/Tk : Widget', tag_title)
-#txt.insert('end', "  ¥Ç¥â¥ó¥¹¥È¥ì¡¼¥·¥ç¥ó\n", tag_middle)
-txt.insert('end', "  ¥Ç¥â¥ó¥¹¥È¥ì¡¼¥·¥ç¥ó\n", tag_kanji_title)
-txt.insert('end', <<"EOT")
-
-¤³¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¡¢Tk Widget ¤òÍѤ¤¤Æ¤É¤Î¤è¤¦¤Ê¤³¤È¤¬¤Ç¤­¤ë¤«\
-¤ò¼¨¤¹¤¿¤á¤Î¡¢¤¤¤¯¤Ä¤«¤Î¾®¤µ¤Ê¥¹¥¯¥ê¥×¥È¤ËÂФ¹¤ë¥Õ¥í¥ó¥È¥¨¥ó¥É¤òÄó\
-¶¡¤·¤Æ¤¤¤Þ¤¹¡£°Ê²¼¤Ë½çÈ֤˵󤲤é¤ì¤Æ¤¤¤ë¥Ç¥â¥ó¥¹¥È¥ì¡¼¥·¥ç¥ó¤ò¼Â¹Ô\
-¤¹¤ë¤Ë¤Ï¥Þ¥¦¥¹¤Ç¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£¥Ç¥â¥ó¥¹¥È¥ì¡¼¥·¥ç¥ó¤Î¥¦¥£¥ó\
-¥É¥¦¤¬¸½¤ì¤ë¤È¡¢¥Ç¥â¥ó¥¹¥È¥ì¡¼¥·¥ç¥ó¤òÀ¸À®¤·¤¿ Ruby/Tk ¤Î¥³¡¼¥É¤ò¸«\
-¤ë¤¿¤á¤Ë¡¢"¥³¡¼¥É»²¾È"¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤¢¤Ê¤¿¤¬\
-˾¤à¤Ê¤é¡¢¤½¤Î¥³¡¼¥É¤ò½¤Àµ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£½¤Àµ¤·¤¿¥³¡¼¥É¤Ç¥Ç¥â\
-¥ó¥¹¥È¥ì¡¼¥·¥ç¥ó¤òºÆ¼Â¹Ô¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¥³¡¼¥É¤¬½ñ¤«¤ì¤¿¥¦¥£¥ó¥É¥¦¤Ë\
-¤¢¤ë"¥Ç¥âºÆ¼Â¹Ô" ¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£\
-¥³¡¼¥É¤ò½¤Àµ¤·¤Æ¤â¥ª¥ê¥¸¥Ê¥ë¤Î¥Õ¥¡¥¤¥ë¤¬½ñ¤­´¹¤¨¤é¤ì¤ë¤³¤È¤Ï\
-¤¢¤ê¤Þ¤»¤ó¤«¤é¡¢¿´ÇÛ¤»¤º¤Ë¿§¡¹¤ÊÊѹ¹¤ò»î¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
-
-°ìÉô¤Î¥Ç¥â¤Ç¤Ï¡¢Èæ³ÓŪºÇ¶á¤Î¥Ð¡¼¥¸¥ç¥ó¤Î Tk ¤Ç¤Ê¤±¤ì¤Ð¥µ¥Ý¡¼¥È¤·¤Æ\
-¤¤¤Ê¤¤µ¡Ç½¤ò»È¤Ã¤Æ¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹(Î㤨¤Ð Tk8.4 °Ê¾å¤Ê¤É)¡£¤½¤Î¤¿¤á¡¢\
-¤½¤¦¤·¤¿µ¡Ç½¤ò»ý¤¿¤Ê¤¤ Tk ¥é¥¤¥Ö¥é¥ê¤ò»È¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤¦¤·¤¿\
-¥Ç¥â¤ÏÀµ¤·¤¯Æ°¤­¤Þ¤»¤ó¡£¤½¤Î¤è¤¦¤Êµ¡Ç½¤¬É¬ÍפǤ¢¤ì¤Ð¡¢¤½¤ì¤ò¥µ¥Ý¡¼¥È\
-¤·¤Æ¤¤¤ë Tk ¥é¥¤¥Ö¥é¥ê¤ò»È¤¦¤è¤¦¤Ë tcltklib ¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤ª¤·¤Æ\
-¤¯¤À¤µ¤¤¡£
-
-¤â¤·¤¢¤Ê¤¿¤Î Tk ¤¬ (ºÇ½é¤«¤é´Þ¤à¤«¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤«¤Ë¤è¤ê) \
-Ttk (Tile) ³ÈÄ¥¤òÍøÍѤǤ­¤ë¾õÂ֤Ǥ¢¤ë¤Ê¤é¡¢\
-Ttk ³ÈÄ¥¤Î¥Ç¥â (sample/tkextlib/tile/demo.rb) ¤â¤¼¤Ò»î¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
-( Â¿Ê¬¡¤¸½ºß¤Î¤¢¤Ê¤¿¤Î´Ä¶­¤Ë¤Ï Ttk ³ÈÄ¥¤Ï\
-#{
-begin
-  require 'tkextlib/tile'
-  "¤¹¤Ç¤ËƳÆþ¤µ¤ì¤Æ¤¤¤Þ¤¹"
-rescue
-  "¤Þ¤À¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Þ¤»¤ó"
-end
-}\
-¡£)
-Ttk ³ÈÄ¥¤Ï¡¢Tk8.5 °Ê¾å¤Ç¤Ïɸ½à¤Îµ¡Ç½¤È¤·¤ÆÁȤ߹þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£
-
-
-EOT
-
-#txt.insert('end',"¥é¥Ù¥ë, ¥Ü¥¿¥ó, ¥Á¥§¥Ã¥¯¥Ü¥¿¥ó, ¥é¥¸¥ª¥Ü¥¿¥ó\n",tag_middle)
-txt.insert('end', "¥é¥Ù¥ë, ¥Ü¥¿¥ó, ¥Á¥§¥Ã¥¯¥Ü¥¿¥ó, ¥é¥¸¥ª¥Ü¥¿¥ó\n", 
-           tag_kanji_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. ¥é¥Ù¥ë (¥Æ¥­¥¹¥È, ¥Ó¥Ã¥È¥Þ¥Ã¥×)\n", 
-           tag_demo, "demo-label")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. ¥é¥Ù¥ë¤ÈUNICODE¥Æ¥­¥¹¥È (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", tag_demo, "demo-unicodeout")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. ¥Ü¥¿¥ó \n", tag_demo, "demo-button")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. ¥Á¥§¥Ã¥¯¥Ü¥¿¥ó (Ê£¿ô¤òÁªÂò²Äǽ)\n", 
-           tag_demo, "demo-check")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. £³¾õÂÖ¥Á¥§¥Ã¥¯¥Ü¥¿¥ó (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", 
-           tag_demo, "demo-check2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "6. ¥é¥¸¥ª¥Ü¥¿¥ó (Ǥ°Õ¤Î°ì¤Ä¤òÁªÂò²Äǽ)\n", 
-           tag_demo, "demo-radio")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "7. ¥é¥¸¥ª¥Ü¥¿¥ó (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", 
-           tag_demo, "demo-radio2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "8. £³¾õÂ֥饸¥ª¥Ü¥¿¥ó (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", 
-           tag_demo, "demo-radio3")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "9. ¥Ü¥¿¥ó¤Çºî¤é¤ì¤¿15-¥Ñ¥º¥ë¥²¡¼¥à\n", 
-           tag_demo, "demo-puzzle")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "10. ¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò»ÈÍѤ·¤¿¥¢¥¤¥³¥ó¥Ü¥¿¥ó\n", 
-           tag_demo, "demo-icon")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "11. ²èÁü¤òɽ¼¨¤¹¤ëÆó¤Ä¤Î¥é¥Ù¥ë\n", 
-           tag_demo, "demo-image1")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "12. ²èÁü¤ò¸«¤ë¤¿¤á¤Î´Êñ¤Ê¥æ¡¼¥¶¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹\n", 
-           tag_demo, "demo-image2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "13. ²èÁü¤ò¸«¤ë¤¿¤á¤Î´Êñ¤Ê¥æ¡¼¥¶¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹ (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", 
-           tag_demo, "demo-image3")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "14. ¥é¥Ù¥ëÉÕ¤­¥Õ¥ì¡¼¥à (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", 
-           tag_demo, "demo-labelframe")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "15. ¥Æ¡¼¥Þ¤ËÂбþ¤·¤¿¥¦¥£¥¸¥§¥Ã¥È¤Î´Êñ¤ÊÎã (Tile/Ttk³ÈÄ¥¤Ø¤ÎÂбþ¤¬É¬Í×)\n", 
-           tag_demo, "demo-ttkbut")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-#txt.insert('end', "¥ê¥¹¥È¥Ü¥Ã¥¯¥¹\n", tag_middle)
-txt.insert('end', "¥ê¥¹¥È¥Ü¥Ã¥¯¥¹\n", tag_kanji_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. ÅÔÆ»Éܸ©.\n", tag_demo, "demo-states")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. ¿§: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¤¿¤á¤ÎÇÛ¿§¤òÊѤ¨¤ë\n", 
-           "#{tag_demo.id} demo-colors")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. ³Ê¸À½¸\n", tag_demo, "demo-sayings")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. ¹ñ¤Ë¤Ä¤¤¤Æ¤Î¥Þ¥ë¥Á¥«¥é¥à¥ê¥¹¥È (Tile/Ttk³ÈÄ¥¤Ø¤ÎÂбþ¤¬É¬Í×)\n", 
-           tag_demo, "demo-mclist")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. ¥Ç¥£¥ì¥¯¥È¥ê¥Ö¥é¥¦¥¶ (Tile/Ttk³ÈÄ¥¤Ø¤ÎÂбþ¤¬É¬Í×)\n", 
-           tag_demo, "demo-tree")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-#txt.insert('end', "¥¨¥ó¥È¥ê¤È¥¹¥Ô¥ó¥Ü¥Ã¥¯¥¹\n", tag_middle)
-txt.insert('end', "¥¨¥ó¥È¥ê\n", tag_kanji_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. ¥¹¥¯¥í¡¼¥ë¥Ð¡¼¤Ê¤·\n", tag_demo, "demo-entry1")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. ¥¹¥¯¥í¡¼¥ë¥Ð¡¼¤¢¤ê\n", tag_demo, "demo-entry2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. Ç§¾Ú½èÍýÉÕ¤­¤Î¥¨¥ó¥È¥ê¥Ü¥Ã¥¯¥¹¤È¥Ñ¥¹¥ï¡¼¥É¥Õ¥£¡¼¥ë¥É (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", 
-           tag_demo, "demo-entry3")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. ¥¹¥Ô¥ó¥Ü¥Ã¥¯¥¹ (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", 
-           tag_demo, "demo-spin")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. ¥³¥ó¥Ü¥Ü¥Ã¥¯¥¹ (Tile/Ttk³ÈÄ¥¤Ø¤ÎÂбþ¤¬É¬Í×)\n", 
-           tag_demo, "demo-combo")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "6. ´Êñ¤Ê¥Õ¥©¡¼¥à\n", tag_demo, "demo-form")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-#txt.insert('end', "¥Æ¥­¥¹¥È\n", tag_middle)
-txt.insert('end', "¥Æ¥­¥¹¥È\n", tag_kanji_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. ´ðËÜŪ¤Ê¥Æ¥­¥¹¥È\n", tag_demo, "demo-text")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. É½¼¨¥¹¥¿¥¤¥ë.\n", tag_demo, "demo-style")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. ¥Ï¥¤¥Ñ¡¼¥Æ¥­¥¹¥È(¥¿¥°¥Ð¥¤¥ó¥É).\n", 
-           tag_demo, "demo-bind")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. ¥¦¥£¥ó¥É¥¦¤òËä¤á¹þ¤ó¤À¥Æ¥­¥¹¥È\n", 
-           tag_demo, "demo-twind")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. ¥¦¥£¥ó¥É¥¦¤òËä¤á¹þ¤ó¤À¥Æ¥­¥¹¥È (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", 
-           tag_demo, "demo-twind2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "6. ¸¡º÷\n", tag_demo, "demo-search")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "7. ¥Æ¥­¥¹¥È¥¦¥£¥¸¥§¥Ã¥È¤ÎÂÐÅù²½(peering) (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", tag_demo, "demo-textpeer")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-#txt.insert('end', "¥­¥ã¥ó¥Ð¥¹\n", tag_middle)
-txt.insert('end', "¥­¥ã¥ó¥Ð¥¹\n", tag_kanji_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. ¥¢¥¤¥Æ¥à¤Î·¿\n", tag_demo, "demo-items")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. 2 ¼¡¸µ¤Î¥×¥í¥Ã¥È\n", tag_demo, "demo-plot")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. ¥Æ¥­¥¹¥È\n", tag_demo, "demo-ctext")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. Ìð°õ¤Î·Á\n", tag_demo, "demo-arrow")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. ¥ë¡¼¥é¡¼\n", tag_demo, "demo-ruler")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "6. ¥Õ¥í¥¢¥×¥é¥ó\n", tag_demo, "demo-floor")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "7. ¥Õ¥í¥¢¥×¥é¥ó (°Û¤Ê¤ë¥­¥ã¥ó¥Ð¥¹¥¢¥¤¥Æ¥àºîÀ®ÊýË¡¤ò»ÈÍÑ)\n", tag_demo, "demo-floor2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "8. ¥¹¥¯¥í¡¼¥ë²Äǽ¤Ê¥­¥ã¥ó¥Ð¥¹\n", 
-           tag_demo, "demo-cscroll")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "9. ¥Á¥§¥¹¥Ü¡¼¥É¾å¤Îµ³»Î¤Î½ä²ó (Tile/Ttk³ÈÄ¥¤Ø¤ÎÂбþ¤¬É¬Í×)\n", 
-           tag_demo, "demo-knightstour")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-#txt.insert('end', "¥¹¥±¡¼¥ë¤È¥×¥í¥°¥ì¥¹¥Ð¡¼\n", tag_middle)
-txt.insert('end', "¥¹¥±¡¼¥ë¤È¥×¥í¥°¥ì¥¹¥Ð¡¼\n", tag_kanji_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. ¿âľ¥¹¥±¡¼¥ë\n", tag_demo.id, "demo-vscale")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. ¿åÊ¿¥¹¥±¡¼¥ë\n", tag_demo.id, "demo-hscale")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. ¥×¥í¥°¥ì¥¹¥Ð¡¼ (Tile/Ttk³ÈÄ¥¤Ø¤ÎÂбþ¤¬É¬Í×)\n", tag_demo.id, "demo-ttkprogress")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-txt.insert('end', "¥Ú¥¤¥ó¥É¥¦¥£¥ó¥É¥¦¤È¥Î¡¼¥È¥Ö¥Ã¥¯\n", tag_kanji_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. ¿åÊ¿Êý¸þ (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", 
-           tag_demo.id, "demo-paned1")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. ¿âľÊý¸þ (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", 
-           tag_demo.id, "demo-paned2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. ¥Æ¡¼¥Þ¤ËÂбþ¤·¤¿Ëä¤á¹þ¤ß¥Ú¥¤¥ó (Tile/Ttk³ÈÄ¥¤Ø¤ÎÂбþ¤¬É¬Í×)\n", 
-           tag_demo.id, "demo-ttkpane")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. ¥Î¡¼¥È¥Ö¥Ã¥¯¥¦¥£¥¸¥§¥Ã¥È (Tile/Ttk³ÈÄ¥¤Ø¤ÎÂбþ¤¬É¬Í×)\n", 
-           tag_demo.id, "demo-ttknote")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-#txt.insert('end', "¥á¥Ë¥å¡¼¤È¥Ä¡¼¥ë¥Ð¡¼\n", tag_middle)
-txt.insert('end', "¥á¥Ë¥å¡¼¤È¥Ä¡¼¥ë¥Ð¡¼\n", tag_kanji_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. ¥á¥Ë¥å¡¼¤È¥«¥¹¥±¡¼¥É¤ò´Þ¤ó¤À¥¦¥£¥ó¥É¥¦\n", 
-           tag_demo, "demo-menu")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. ¥á¥Ë¥å¡¼¤È¥«¥¹¥±¡¼¥É¤ò´Þ¤ó¤À¥¦¥£¥ó¥É¥¦ (Tk8.x ÀìÍÑ)\n", 
-           tag_demo, "demo-menu8x")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3.                 ¡·                (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", 
-           tag_demo, "demo-menu84")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. ¥á¥Ë¥å¡¼¥Ü¥¿¥ó (Tk8.x ÀìÍÑ)\n", 
-           tag_demo, "demo-menubu")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. ¥Æ¡¼¥Þ¤ËÂбþ¤·¤¿¥á¥Ë¥å¡¼¥Ü¥¿¥ó (Tile/Ttk³ÈÄ¥¤Ø¤ÎÂбþ¤¬É¬Í×)\n", 
-           tag_demo.id, "demo-ttkmenu")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "6. ¥Æ¡¼¥Þ¤ËÂбþ¤·¤¿¥Ä¡¼¥ë¥Ð¡¼ (Tile/Ttk³ÈÄ¥¤Ø¤ÎÂбþ¤¬É¬Í×)\n", 
-           tag_demo.id, "demo-toolbar")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-#txt.insert('end', "¥À¥¤¥¢¥í¥°¥¦¥£¥ó¥É¥¦\n", tag_middle)
-txt.insert('end', "¥À¥¤¥¢¥í¥°¥¦¥£¥ó¥É¥¦\n", tag_kanji_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. ¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹\n", tag_demo, "demo-msgbox")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. ¾ÜºÙ¥Æ¥­¥¹¥ÈÉÕ¤­¤Î¥á¥Ã¥»¡¼¥¸¥Ü¥Ã¥¯¥¹ (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", tag_demo, "demo-msgbox2")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. ¥Õ¥¡¥¤¥ëÁªÂò¥À¥¤¥¢¥í¥°\n", tag_demo, "demo-filebox")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. ¿§ÁªÂò¥À¥¤¥¢¥í¥°\n", tag_demo, "demo-clrpick")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.insert('end', "\n")
-#txt.insert('end', "¥¢¥Ë¥á¡¼¥·¥ç¥ó\n", tag_middle)
-txt.insert('end', "¥¢¥Ë¥á¡¼¥·¥ç¥ó\n", tag_kanji_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. ¥¢¥Ë¥á¡¼¥·¥ç¥ó¥é¥Ù¥ë (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", tag_demo, "demo-anilabel")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. ÇÈ·Á¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", tag_demo, "demo-aniwave")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. ¿¶¤ê»Ò¤Î¥·¥ß¥å¥ì¡¼¥·¥ç¥ó (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", tag_demo, "demo-pendulum")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. A celebration of Rube Goldberg (µ¡Ç½¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤ÎTk¤¬É¬Í×)\n", tag_demo, "demo-goldberg")
-
-txt.insert('end', "\n")
-#txt.insert('end', "¤½¤Î¾\n", tag_middle)
-txt.insert('end', "¤½¤Î¾\n", tag_kanji_title)
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. ÁȤ߹þ¤ß¤Î¥Ó¥Ã¥È¥Þ¥Ã¥×\n", tag_demo, "demo-bitmap")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. ¥â¡¼¥À¥ë¥À¥¤¥¢¥í¥°(¥í¡¼¥«¥ë¥°¥é¥Ö)\n", 
-           tag_demo, "demo-dialog1")
-txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. ¥â¡¼¥À¥ë¥À¥¤¥¢¥í¥°(¥°¥í¡¼¥Ð¥ë¥°¥é¥Ö)\n", 
-           tag_demo, "demo-dialog2")
-txt.insert('end', " \n ", tag_demospace)
-
-txt.state('disabled')
-scr.focus
-
-################################
-# method ÄêµÁ
-################################
-def positionWindow(w)
-  w.geometry('+300+300')
-end
-
-# ¿Æ¥¦¥£¥¸¥§¥Ã¥È¤È¡¤ÊÑ¿ô̾¤È TkVariable ¤È¤ÎÁÈ(ÇÛÎó)¤ÎʤӤòÅϤ¹
-$showVarsWin = {}
-def showVars1(parent, *args)
-  if $showVarsWin[parent.path]
-    begin
-      $showVarsWin[parent.path].destroy 
-    rescue
-    end
-  end
-  top = TkToplevel.new(parent) {|w|
-    title "Variable values"
-    base = TkFrame.new(w).pack(:fill=>:both, :expand=>true)
-    TkLabel.new(base) {
-      text "ÊÑ¿ôÃÍ:"
-      width 20
-      anchor 'center'
-      if $tk_version =~ /^4.*/
-        font '-Adobe-helvetica-medium-r-normal--*-180-*-*-*-*-*-*'
-      else
-        font 'Helvetica 14'
-      end
-    }.pack('side'=>'top', 'fill'=>'x')
-    len = 1
-    args.each{|vnam,vbody|
-      len = vnam.to_s.length if vnam.to_s.length > len
-    }
-    args.each{|vnam,vbody|
-      TkFrame.new(base){|f|
-        #TkLabel.new(f, 'text'=>"#{vnam}: ").pack('side'=>'left')
-        TkLabel.new(f, 'text'=>"#{vnam}: ",'width'=>len+2).pack('side'=>'left')
-        TkLabel.new(f, 'textvariable'=>vbody, 'anchor'=>'w')\
-                   .pack('side'=>'left', 'expand'=>'yes', 'fill'=>'x')
-      }.pack('side'=>'top', 'anchor'=>'w', 'fill'=>'x')
-    }
-    TkButton.new(base) {
-      text "λ²ò"
-      command proc{w.destroy}
-    }.pack('side'=>'bottom', 'pady'=>2)
-  }
-  $showVarsWin[parent.path] = top
-end
-
-def showVars2(parent, *args)
-  if $showVarsWin[parent.path]
-    begin
-      $showVarsWin[parent.path].destroy 
-    rescue
-    end
-  end
-  $showVarsWin[parent.path] = TkToplevel.new(parent) {|top|
-    title "Variable values"
-
-    base = TkFrame.new(top).pack(:fill=>:both, :expand=>true)
-
-    TkLabelFrame.new(base, :text=>"ÊÑ¿ôÃÍ:", 
-                     :font=>{:family=>'Helvetica', :size=>14}){|f|
-      args.each{|vnam,vbody|
-        TkGrid(TkLabel.new(f, :text=>"#{vnam}: ", :anchor=>'w'), 
-               TkLabel.new(f, :textvariable=>vbody, :anchor=>'w'), 
-               :padx=>2, :pady=>2, :sticky=>'w')
-      }
-
-      f.grid(:sticky=>'news', :padx=>4)
-      f.grid_columnconfig(1, :weight=>1)
-      f.grid_rowconfig(100, :weight=>1)
-    }
-    TkButton.new(base, :text=>"λ²ò", :width=>8, :default=>:active, 
-                 :command=>proc{top.destroy}){|b|
-      top.bind('Return', proc{b.invoke})
-      top.bind('Escape', proc{b.invoke})
-
-      b.grid(:sticky=>'e', :padx=>4, :pady=>[6, 4])
-    }
-    base.grid_columnconfig(0, :weight=>1)
-    base.grid_rowconfig(0, :weight=>1)
-  }
-end
-
-if $tk_major_ver < 8
-  alias showVars showVars1
-elsif $tk_major_ver == 8 && $tk_minor_ver < 4
-  alias showVars showVars1
-else # ver >= 8.4
-  alias showVars showVars2
-end
-
-# µ¿»÷¥È¥Ã¥×¥ì¥Ù¥ë¥µ¥Ý¡¼¥È
-module PseudoToplevel_Evaluable
-  def pseudo_toplevel_eval(body = Proc.new)
-    Thread.current[:TOPLEVEL] = self
-    begin
-      body.call
-    ensure
-      Thread.current[:TOPLEVEL] = nil
-    end
-  end
-
-  def pseudo_toplevel_evaluable?
-    @pseudo_toplevel_evaluable
-  end
-  def pseudo_toplevel_evaluable=(mode)
-    @pseudo_toplevel_evaluable = (mode)? true: false
-  end
-
-  def self.extended(mod)
-    mod.__send__(:extend_object, mod)
-    mod.instance_variable_set('@pseudo_toplevel_evaluable', true)
-  end
-end
-
-class Object
-  alias __method_missing__ method_missing
-  private :__method_missing__
-
-  def method_missing(id, *args)
-    begin
-      has_top = (top = Thread.current[:TOPLEVEL]) && 
-                   top.respond_to?(:pseudo_toplevel_evaluable?) && 
-                   top.pseudo_toplevel_evaluable? && 
-                   top.respond_to?(id)
-    rescue Exception => e
-      has_top = false
-    end
-
-    if has_top
-      top.__send__(id, *args)
-    else
-      __method_missing__(id, *args)
-    end
-  end
-end
-
-class Proc
-  def initialize(*args, &b)
-    super
-    @__pseudo_toplevel__ = Thread.current[:TOPLEVEL]
-  end
-
-  alias __call__ call
-  def call(*args, &b)
-    if top = @__pseudo_toplevel__
-      orig_top = Thread.current[:TOPLEVEL]
-      Thread.current[:TOPLEVEL] = top
-      begin
-        __call__(*args, &b)
-      ensure
-        Thread.current[:TOPLEVEL] = orig_top
-      end
-    else
-      __call__(*args, &b)
-    end
-  end
-end
-
-def proc(&b)
-  Proc.new(&b)
-end
-def lambda(&b)
-  Proc.new(&b)
-end
-
-def _null_binding
-  Module.new.instance_eval{extend PseudoToplevel_Evaluable}
-  # binding
-  # Module.new.instance_eval{binding}
-end
-private :_null_binding
-
-def eval_samplecode(code, file=nil)
-  #eval(code)
-  #_null_binding.pseudo_toplevel_eval{ eval(code) }
-  #Thread.new{ _null_binding.pseudo_toplevel_eval{ eval(code) } }
-  Thread.new{
-    _null_binding.pseudo_toplevel_eval{
-      begin
-        if file
-          eval(code, binding, "(eval:#{file})")
-        else
-          eval(code)
-        end
-      rescue Exception=>e
-        #p e
-        TkBgError.show(e.message + "\n" + 
-                         "\n---< backtrace of Ruby side >-----\n" + 
-                         e.backtrace.join("\n") + 
-                         "\n---< backtrace of Tk side >-------")
-      end
-    }
-  }
-  Tk.update
-end
-
-# ¥Æ¥­¥¹¥È¾å¤Ç¤Î click ¤ËÂФ¹¤ëÆ°ºî
-def invoke(txt, idx)
-  tag = txt.tag_names(idx).find{|t| t.kind_of?(String) && t =~ /^demo-/}
-  return unless tag
-
-  cursor = txt.cget('cursor')
-  txt.cursor('watch')
-  Tk.update
-  # eval(IO.readlines("#{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb").join, _null_binding)
-  # Tk.update
-  eval_samplecode(IO.readlines("#{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb").join, tag[5..-1] + '.rb')
-  txt.cursor(cursor)
-
-  $tag_visited.add("#{idx} linestart +1 chars", "#{idx} lineend +1 chars")
-end
-=begin
-def invoke (txt, idx)
-  tag = txt.tag_names(idx).find{|t| t.kind_of?(String) && t =~ /^demo-/}
-  return unless tag
-  current_cursor = txt.cget('cursor')
-  txt.cursor('watch')
-  Tk.update
-#  eval `cat #{tag[5..-1]}.rb`
-#  eval `cat #{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb`
-  eval IO.readlines("#{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb").join
-  Tk.update
-#  txt.cursor('xterm')
-  txt.cursor(current_cursor)
-
-  $tag_visited.add("#{idx} linestart +1 chars", "#{idx} lineend +1 chars")
-end
-=end
-
-# ¾õÂÖɽ¼¨
-def showStatus (txt, index)
-  tag = txt.tag_names(index).find{|t| t.kind_of?(String) && t =~ /^demo-/}
-  cursor = txt.cget('cursor')
-  unless tag
-    $statusBarLabel.configure('text', " ")
-    newcursor = 'xterm'
-  else
-    demoname = tag[5..-1]
-    $statusBarLabel.configure('text', 
-                             "¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à \"#{demoname}\" ¤Î¼Â¹Ô ")
-    newcursor = 'hand2'
-  end
-  txt.configure('cursor'=>newcursor) if cursor != newcursor
-end
-
-# ¥½¡¼¥¹¥³¡¼¥É¤Îɽ¼¨
-def showCode1(demo)
-  file = "#{demo}.rb"
-  $code_window = nil unless defined? $code_window
-  if $code_window == nil || TkWinfo.exist?($code_window) == false
-    $code_window = TkToplevel.new(nil)
-    f = TkFrame.new($code_window)
-
-    TkButton.new(f) {
-      #text "λ²ò"
-      text "ÊĤ¸¤ë"
-      command proc{
-        $code_window.destroy
-        $code_window = nil
-      }
-    }.pack('side'=>'right', 'expand'=>'false', 'pady'=>2)
-    TkButton.new(f) {
-      text "ºÆ¼Â¹Ô"
-      # command proc{eval($code_text.get('1.0','end'), _null_binding)}
-      command proc{eval_samplecode($code_text.get('1.0','end'), '<viewer>')}
-    }.pack('side'=>'right', 'expand'=>'false', 'pady'=>2)
-
-    TkLabel.new(f,'text'=>'line:').pack('side'=>'left')
-    linenum =TkLabel.new(f,'text'=>'').pack('side'=>'left')
-    TkLabel.new(f,'text'=>'  pos:').pack('side'=>'left')
-    posnum =TkLabel.new(f,'text'=>'').pack('side'=>'left')
-
-    $set_linenum = proc{|w|
-      line, pos = w.index('insert').split('.')
-      linenum.text = line
-      posnum.text  = pos
-    }
-
-    f.pack('side'=>'bottom', 'expand'=>'true', 'fill'=>'x')
-
-    if $tk_version =~ /^4\.[01]/
-      s = TkScrollbar.new($code_window, 'orient'=>'vertical')
-      $code_text = TkText.new($code_window) {
-        height 40
-        setgrid 'yes'
-        yscrollcommand proc{|first,last| s.set first,last}
-      }
-      s.command(proc{|*args| $code_text.yview(*args)})
-      s.pack('side'=>'right', 'fill'=>'y')
-      $code_text.pack('side'=>'left', 'expand'=>'yes', 'fill'=>'both')
-    else
-      TkFrame.new($code_window) {|f|
-        pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>1)
-
-        hs = TkScrollbar.new($code_window, 'highlightthickness'=>0, 
-                             'orient'=>'horizontal')
-        vs = TkScrollbar.new($code_window, 'highlightthickness'=>0, 
-                             'orient'=>'vertical')
-        $code_text = TkText.new($code_window) {|t|
-          height 40
-          #wrap 'word'
-          wrap 'char'
-          xscrollcommand proc{|first,last| hs.set first,last}
-          yscrollcommand proc{|first,last| vs.set first,last}
-          setgrid 'yes'
-          highlightthickness 0
-          pady 2
-          padx 3
-          hs.command(proc{|*args| $code_text.xview(*args)})
-          vs.command(proc{|*args| $code_text.yview(*args)})
-        }
-
-        $code_text.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>0, 
-                        'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-        vs.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>1, 
-                'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-#       xs.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>1, 'column'=>0, 
-#               'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
-        TkGrid.rowconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
-        TkGrid.columnconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
-      }
-    end
-
-    btag = TkBindTag.new
-
-    btag.bind('Key', $set_linenum, '%W')
-    btag.bind('Button', $set_linenum, '%W')
-
-    btags = $code_text.bindtags
-    btags.insert(btags.index($code_text.class) + 1, btag)
-    $code_text.bindtags = btags
-
-  else
-    $code_window.deiconify
-    $code_window.raise
-  end
-
-  $code_window.title("Demo code: #{file}")
-  $code_window.iconname(file)
-#  fid = open(file, 'r')
-  fid = open([$demo_dir, file].join(File::Separator), 'r')
-  $code_text.delete('1.0', 'end')
-  #$code_text.insert('1.0', `cat #{file}`)
-  $code_text.insert('1.0', fid.read)
-  #$code_mark = TkTextMark.new($code_text, '1.0')
-  #$code_text.set_insert('1.0')
-  TkTextMarkInsert.new($code_text,'1.0')
-
-  $set_linenum.call($code_text)
-
-  fid.close
-end
-
-def showCode2(demo)
-  file = "#{demo}.rb"
-  $code_window = nil unless defined? $code_window
-  if $code_window == nil || TkWinfo.exist?($code_window) == false
-    $code_window = TkToplevel.new(nil)
-    tf = TkFrame.new($code_window)
-    $code_text = TkText.new(tf, :font=>'Courier 10', :height=>30, 
-                           :wrap=>'word', :bd=>1, :setgrid=>true, 
-                           :highlightthickness=>0, :pady=>2, :padx=>3)
-    xscr = TkScrollbar.new(tf, :bd=>1){assign($code_text)}
-    yscr = TkScrollbar.new(tf, :bd=>1){assign($code_text)}
-    TkGrid($code_text, yscr, :sticky=>'news')
-    #TkGrid(xscr)
-    tf.grid_rowconfigure(0, :weight=>1)
-    tf.grid_columnconfigure(0, :weight=>1)
-
-    bf = TkFrame.new($code_window)
-
-    lf = TkFrame.new(bf)
-    TkLabel.new(lf, :text=>'line:').pack(:side=>:left)
-    linenum =TkLabel.new(lf, :text=>'').pack(:side=>:left)
-    TkLabel.new(lf, :text=>'  pos:').pack(:side=>:left)
-    posnum =TkLabel.new(lf, :text=>'').pack(:side=>:left)
-
-    $set_linenum = proc{|w|
-      line, pos = w.index('insert').split('.')
-      linenum.text = line
-      posnum.text  = pos
-    }
-
-    #b_dis = TkButton.new(bf, :text=>'λ²ò', :default=>:active, 
-    b_dis = TkButton.new(bf, :text=>'ÊĤ¸¤ë', :default=>:active, 
-                         :command=>proc{
-                           $code_window.destroy
-                           $code_window = nil
-                         }, 
-                         :image=>$image['delete'], :compound=>:left)
-    b_prn = TkButton.new(bf, :text=>'°õºþ', 
-                         :command=>proc{printCode($code_text, file)}, 
-                         :image=>$image['print'], :compound=>:left)
-    b_run = TkButton.new(bf, :text=>'ºÆ¼Â¹Ô', 
-                         :command=>proc{
-                           # eval($code_text.get('1.0','end'), _null_binding)
-                           eval_samplecode($code_text.get('1.0','end'), '<viewer>')
-                         }, 
-                         :image=>$image['refresh'], :compound=>:left)
-
-    TkGrid(lf, 'x', b_run, b_prn, b_dis, :padx=>4, :pady=>[6,4])
-    bf.grid_columnconfigure(1, :weight=>1)
-
-    TkGrid(tf, :sticky=>'news')
-    TkGrid(bf, :sticky=>'ew')
-    $code_window.grid_columnconfigure(0, :weight=>1)
-    $code_window.grid_rowconfigure(0, :weight=>1)
-
-    $code_window.bind('Return', proc{|win|
-                        b_dis.invoke unless win.kind_of?(TkText)
-                      }, '%W')
-    $code_window.bindinfo('Return').each{|cmd, arg|
-      $code_window.bind_append('Escape', cmd, arg)
-    }
-
-    btag = TkBindTag.new
-
-    btag.bind('Key', $set_linenum, '%W')
-    btag.bind('Button', $set_linenum, '%W')
-
-    btags = $code_text.bindtags
-    btags.insert(btags.index($code_text.class) + 1, btag)
-    $code_text.bindtags = btags
-
-  else
-    $code_window.deiconify
-    $code_window.raise
-  end
-
-  $code_window.title("Demo code: #{file}")
-  $code_window.iconname(file)
-  fid = open([$demo_dir, file].join(File::Separator), 'r')
-  $code_text.delete('1.0', 'end')
-  $code_text.insert('1.0', fid.read)
-  TkTextMarkInsert.new($code_text,'1.0')
-
-  $set_linenum.call($code_text)
-
-  fid.close
-end
-
-if $tk_major_ver < 8
-  alias showCode showCode1
-elsif $tk_major_ver == 8 && $tk_minor_ver < 4
-  alias showCode showCode1
-else # ver >= 8.4
-  alias showCode showCode2
-end
-
-
-# printCode --
-# Prints the source code currently displayed in the See Code dialog.
-# Much thanks to Arjen Markus for this.
-#
-# Arguments:
-# txt -         Name of text widget containing code to print
-# file -        Name of the original file (implicitly for title)
-
-def printCode(txt, file)
-  code = txt.get('1.0', 'end - 1c')
-  dir = '.'
-  dir = ENV['HOME'] if ENV['HOME']
-  dir = ENV['TMP'] if ENV['TMP']
-  dir = ENV['TEMP'] if ENV['TEMP']
-
-  fname = [dir, 'tkdemo-' + file].join(File::Separator)
-  open(fname, 'w'){|fid| fid.print(code)}
-  begin
-    case Tk::TCL_PLATFORM('platform')
-    when 'unix'
-      msg = `lp -c #{fname}`
-      unless $?.exitstatus == 0
-        Tk.messageBox(:title=>'Print spooling failure', 
-                      :message=>'¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡¥' + 
-                                '°õºþ¤Ë¼ºÇÔ¤·¤¿¤â¤Î¤È»×¤ï¤ì¤Þ¤¹ : ' + msg)
-      end
-    when 'windows'
-      begin
-        printTextWin32(fname)
-      rescue => e
-        Tk.messageBox(:title=>'Print spooling failure', 
-                      :message=>'¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡¥' + 
-                                '°õºþ¤Ë¼ºÇÔ¤·¤¿¤â¤Î¤È»×¤ï¤ì¤Þ¤¹ : ' + 
-                                e.message)
-      end      
-    when 'macintosh'
-      Tk.messageBox(:title=>'Operation not Implemented', 
-                    :message=>'°õºþµ¡Ç½¤Ï¤Þ¤À¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó')
-    else
-      Tk.messageBox(:title=>'Operation not Implemented', 
-                    :message=>'¸¡½Ð¤µ¤ì¤¿´Ä¶­ ' + 
-                              Tk::TCL_PLATFORM('platform') + 
-                              ' ¤Ï̤ÃΤδĶ­¤Ç¤¢¤ë¤¿¤á¡¤' + 
-                              '°õºþµ¡Ç½¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó: ')
-    end
-  ensure
-    File.delete(fname)
-  end
-end
-
-# printTextWin32 --
-#    Print a file under Windows
-#
-# Arguments:
-# filename -            Name of the file
-#
-def printTextWin32(fname)
-  require 'win32/registry'
-  begin
-    app = Win32::Registry::HKEY_CLASSES_ROOT['.txt']
-    pcmd = nil
-    Win32::Registry::HKEY_CLASSES_ROOT.open("#{app}\\shell\\print"){|reg|
-      pcmd = reg['command']
-    }
-  rescue
-    app = Tk.tk_call('auto_execok', 'notepad.exe')
-    pcmd = "#{app} /p %1"
-  end
-
-  pcmd.gsub!('%1', fname)
-  puts pcmd
-  cmd = Tk.tk_call('auto_execok', 'start') + ' /min ' + pcmd
-  
-  msg = `#{cmd}`
-  unless $?.exitstatus == 0
-    fail RuntimeError, msg
-  end
-end
-
-# aboutBox
-#
-#      Pops up a message box with an "about" message
-#
-def aboutBox
-  Tk.messageBox('icon'=>'info', 'type'=>'ok', 'title'=>'About Widget Demo', 
-                'message'=>"Ruby/Tk ¥¦¥£¥¸¥§¥Ã¥È¥Ç¥â Ver.1.7.0-jp\n\n" + 
-                           "based on demos of Tk8.1 -- 8.5  " + 
-                           "( Copyright of Tcl/Tk demos:: " + 
-                           "(c) 1996-1997 Sun Microsystems, Inc. / " + 
-                           "(c) 1997-2000 Ajuba Solutions, Inc. / " + 
-                           "(c) 2001-2007 Donal K. Fellows / " + 
-                           "(c) 2002-2007 Daniel A. Steffen )\n\n" +
-                           "Your Ruby & Tk Version ::\n" + 
-                           "Ruby#{RUBY_VERSION}(#{RUBY_RELEASE_DATE})[#{RUBY_PLATFORM}] / Tk#{$tk_patchlevel}#{(Tk::JAPANIZED_TK)? '-jp': ''}\n\n" + 
-                           "Ruby/Tk release date :: tcltklib #{TclTkLib::RELEASE_DATE}; tk #{Tk::RELEASE_DATE}")
-end
-
-####################################
-# °ú¿ô¤Ç»ØÄꤵ¤ì¤¿¥Ç¥â¤òµ¯Æ°¤¹¤ë
-no_launcher = false
-if ARGV[0] == '-n'
-  ARGV.shift
-  no_launcher = true if ARGV.size > 0
-else
-  # show the root widget to make it lower then demo windows
-  Tk.update
-end
-ARGV.each{|cmd| 
-  if cmd =~ /(.*).rb/
-    cmd = $1
-  end
-  #eval(IO.readlines("#{[$demo_dir, cmd].join(File::Separator)}.rb").join, 
-  #     _null_binding)
-  eval_samplecode(IO.readlines("#{[$demo_dir, cmd].join(File::Separator)}.rb").join, cmd + '.rb')
-}
-if no_launcher
-  $root.withdraw  # hide root window
-  Thread.start{
-    loop do
-      count = 0
-      $root.winfo_children.each{|w|
-        count += 1 if w.kind_of?(TkToplevel)
-      }
-      $root.destroy if count == 0
-    end
-  }
-end
-
-################################
-# ¥¤¥Ù¥ó¥ÈÂÔ¤Á¤ËÆþ¤ë
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/editable_listbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/editable_listbox.rb
deleted file mode 100644 (file)
index 99345da..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#
-# Editable_TkListbox class
-#
-#   When "DoubleClick-1" on a listbox item, the entry box is opend on the
-#   item. And when hit "Return" key on the entry box after modifying the
-#   text, the entry box is closed and the item is changed. Or when hit 
-#   "Escape" key, the entry box is closed without modification.
-#
-#                              by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
-#
-require 'tk'
-
-class Editable_TkListbox < TkListbox
-  def _ebox_placer(coord_y)
-    idx = self.nearest(coord_y)
-    x, y, w, h = self.bbox(idx)
-    @ebox.place(:x => 0, :relwidth => 1.0, 
-                :y => y - self.selectborderwidth, 
-                :height => h + 2 * self.selectborderwidth)
-    @ebox.pos = idx
-    @ebox.value = self.listvariable.list[idx]
-    @ebox.focus
-  end
-  private :_ebox_placer
-
-
-  def create_self(keys)
-    super(keys)
-
-    unless self.listvariable
-      self.listvariable = TkVariable.new(self.get(0, :end))
-    end
-
-    @ebox = TkEntry.new(self){
-      @pos = -1
-      def self.pos; @pos; end
-      def self.pos=(idx); @pos = idx; end
-    }
-
-    @ebox.bind('Return'){
-      list = self.listvariable.list
-      list[@ebox.pos] = @ebox.value
-      self.listvariable.value = list
-      @ebox.place_forget
-      @ebox.pos = -1
-    }
-
-    @ebox.bind('Escape'){
-      @ebox.place_forget
-      @ebox.pos = -1
-    }
-
-    self.bind('Double-1', '%y'){|y| _ebox_placer(y) }
-  end
-end
-
-if $0 == __FILE__
-  scr = TkScrollbar.new.pack(:side=>:right, :fill=>:y)
-
-  lbox1 = Editable_TkListbox.new.pack(:side=>:left)
-  lbox2 = Editable_TkListbox.new.pack(:side=>:left)
-
-  scr.assign(lbox1, lbox2)
-
-  lbox1.insert(:end, *%w(a b c d e f g h i j k l m n))
-  lbox2.insert(:end,     0,1,2,3,4,5,6,7,8,9,0,1,2,3)
-
-  Tk.mainloop
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/encstr_usage.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/encstr_usage.rb
deleted file mode 100644 (file)
index b22c250..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'tk'
-
-TkMessage.new(:width=>400, :text=><<EOM).pack
-This sample shows how to use Tk::EncodedString class. \
-This reads 'iso2022-kr' text (from discription of \
-Korean language environment of GNU Emacs 20.7.2) \
-and inserts the text into the text widget.
-EOM
-
-t1 = TkText.new(:height=>5).pack
-t2 = TkText.new(:height=>5).pack
-t3 = TkText.new(:height=>5).pack
-
-src_str = IO.readlines(File.join(File.dirname(__FILE__),'iso2022-kr.txt')).join
-
-t1.insert('end', 
-          "use neither Tk::EncodedString class nor Tk.encoding= method\n\n")
-t1.insert('end', src_str)
-
-enc_str = Tk::EncodedString(src_str, 'iso2022-kr')
-t2.insert('end', 
-          "use Tk::EncodedString class (Tk.encoding => '#{Tk.encoding}')\n\n")
-t2.insert('end', enc_str)
-
-Tk.encoding = 'iso2022-kr'
-t3.insert('end', "use Tk.encoding = 'iso2022-kr' (Tk.force_default_encoding? == #{Tk.force_default_encoding?})\n\n")
-
-t3.insert('end', src_str)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/figmemo_sample.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/figmemo_sample.rb
deleted file mode 100644 (file)
index 1b6979d..0000000
+++ /dev/null
@@ -1,456 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-
-begin
-  # try to use Img extension
-  require 'tkextlib/tkimg'
-rescue Exception
-  # cannot use Img extention --> ignore
-end
-
-
-############################
-# scrolled_canvas
-class TkScrolledCanvas < TkCanvas
-  include TkComposite
-
-  def initialize_composite(keys={})
-    @h_scr = TkScrollbar.new(@frame)
-    @v_scr = TkScrollbar.new(@frame)
-
-    @canvas = TkCanvas.new(@frame)
-    @path = @canvas.path
-
-    @canvas.xscrollbar(@h_scr)
-    @canvas.yscrollbar(@v_scr)
-
-    TkGrid.rowconfigure(@frame, 0, :weight=>1, :minsize=>0)
-    TkGrid.columnconfigure(@frame, 0, :weight=>1, :minsize=>0)
-
-    @canvas.grid(:row=>0, :column=>0, :sticky=>'news')
-    @h_scr.grid(:row=>1, :column=>0, :sticky=>'ew')
-    @v_scr.grid(:row=>0, :column=>1, :sticky=>'ns')
-
-    delegate('DEFAULT', @canvas)
-    delegate('background', @canvas, @h_scr, @v_scr)
-    delegate('activebackground', @h_scr, @v_scr)
-    delegate('troughcolor', @h_scr, @v_scr)
-    delegate('repeatdelay', @h_scr, @v_scr)
-    delegate('repeatinterval', @h_scr, @v_scr)
-    delegate('borderwidth', @frame)
-    delegate('relief', @frame)
-
-    delegate_alias('canvasborderwidth', 'borderwidth', @canvas)
-    delegate_alias('canvasrelief', 'relief', @canvas)
-
-    delegate_alias('scrollbarborderwidth', 'borderwidth', @h_scr, @v_scr)
-    delegate_alias('scrollbarrelief', 'relief', @h_scr, @v_scr)
-
-    configure(keys) unless keys.empty?
-  end
-end
-
-############################
-class PhotoCanvas < TkScrolledCanvas
-
-USAGE = <<EOT
---- WHAT IS ---
-You can write comments on the loaded image, and save it as a Postscipt 
-file (original image file is not modified). Each comment is drawn as a 
-set of an indicator circle, an arrow, and a memo text. See the following 
-how to write comments.
-This can save the list of memo texts to another file. It may useful to 
-search the saved Postscript file by the comments on them.
-This may not support multibyte characters (multibyte texts are broken on 
-a Postscript file). It depends on features of canvas widgets of Tcl/Tk 
-libraries linked your Ruby/Tk. If you use Tcl/Tk8.0-jp (Japanized Tcl/Tk),
-you can (possibly) get a Japanese Postscript file.
-
---- BINDINGS ---
-* Button-1 : draw comments by following steps
-    1st - Set center of a indicator circle.
-    2nd - Set head position of an arrow.
-    3rd - Set tail position of an arrow, and show an entry box.
-          Input a memo text and hit 'Enter' key to entry the comment.
-
-* Button-2-drag : scroll the canvas
-
-* Button-3 : when drawing, cancel current drawing
-
-* Double-Button-3 : delete the clicked comment (text, arrow, and circle)
-EOT
-
-  def initialize(*args)
-    super(*args)
-
-    self.highlightthickness = 0
-    self.selectborderwidth = 0
-
-    @photo = TkPhotoImage.new
-    @img = TkcImage.new(self, 0, 0, :image=>@photo)
-
-    width  = self.width
-    height = self.height
-    @scr_region = [-width, -height, width, height]
-    self.scrollregion(@scr_region)
-    self.xview_moveto(0.25)
-    self.yview_moveto(0.25)
-
-    @col = 'red'
-    @font = 'Helvetica -12'
-
-    @memo_id_num = -1
-    @memo_id_head = 'memo_'
-    @memo_id_tag = nil
-    @overlap_d = 2
-
-    @state = TkVariable.new
-    @border = 2
-    @selectborder = 1
-    @delta = @border + @selectborder
-    @entry = TkEntry.new(self, :relief=>:ridge, :borderwidth=>@border, 
-                         :selectborderwidth=>@selectborder, 
-                         :highlightthickness=>0)
-    @entry.bind('Return'){@state.value = 0}
-
-    @mode = old_mode = 0
-
-    _state0()
-
-    bind('2', :x, :y){|x,y| scan_mark(x,y)}
-    bind('B2-Motion', :x, :y){|x,y| scan_dragto(x,y)}
-
-    bind('3'){
-      next if (old_mode = @mode) == 0
-      @items.each{|item| item.delete }
-      _state0()
-    }
-
-    bind('Double-3', :widget, :x, :y){|w, x, y|
-      next if old_mode != 0
-      x = w.canvasx(x)
-      y = w.canvasy(y)
-      tag = nil
-      w.find_overlapping(x - @overlap_d, y - @overlap_d, 
-                         x + @overlap_d, y + @overlap_d).find{|item|
-        ! (item.tags.find{|name|
-             if name =~ /^(#{@memo_id_head}\d+)$/
-               tag = $1
-             end
-           }.empty?)
-      }
-      w.delete(tag) if tag
-    }
-  end
-
-  #-----------------------------------
-  private
-  def _state0() # init
-    @mode = 0
-
-    @memo_id_num += 1
-    @memo_id_tag = @memo_id_head + @memo_id_num.to_s
-
-    @target = nil
-    @items = []
-    @mark = [0, 0]
-    bind_remove('Motion')
-    bind('ButtonRelease-1', proc{|x,y| _state1(x,y)}, '%x', '%y')
-  end
-
-  def _state1(x,y) # set center
-    @mode = 1
-
-    @target = TkcOval.new(self, 
-                          [canvasx(x), canvasy(y)], [canvasx(x), canvasy(y)], 
-                          :outline=>@col, :width=>3, :tags=>[@memo_id_tag])
-    @items << @target
-    @mark = [x,y]
-
-    bind('Motion', proc{|x,y| _state2(x,y)}, '%x', '%y')
-    bind('ButtonRelease-1', proc{|x,y| _state3(x,y)}, '%x', '%y')
-  end
-
-  def _state2(x,y) # create circle
-    @mode = 2
-
-    r = Integer(Math.sqrt((x-@mark[0])**2 + (y-@mark[1])**2))
-    @target.coords([canvasx(@mark[0] - r), canvasy(@mark[1] - r)], 
-                   [canvasx(@mark[0] + r), canvasy(@mark[1] + r)])
-  end
-
-  def _state3(x,y) # set line start
-    @mode = 3
-
-    @target = TkcLine.new(self, 
-                          [canvasx(x), canvasy(y)], [canvasx(x), canvasy(y)], 
-                          :arrow=>:first, :arrowshape=>[10, 14, 5], 
-                          :fill=>@col, :tags=>[@memo_id_tag])
-    @items << @target
-    @mark = [x, y]
-
-    bind('Motion', proc{|x,y| _state4(x,y)}, '%x', '%y')
-    bind('ButtonRelease-1', proc{|x,y| _state5(x,y)}, '%x', '%y')
-  end
-
-  def _state4(x,y) # create line
-    @mode = 4
-
-    @target.coords([canvasx(@mark[0]), canvasy(@mark[1])], 
-                   [canvasx(x), canvasy(y)])
-  end
-
-  def _state5(x,y) # set text
-    @mode = 5
-
-    if x - @mark[0] >= 0
-      justify = 'left'
-      dx = - @delta
-
-      if y - @mark[1] >= 0
-        anchor = 'nw'
-        dy = - @delta
-      else
-        anchor = 'sw'
-        dy = @delta
-      end
-    else
-      justify = 'right'
-      dx = @delta
-
-      if y - @mark[1] >= 0
-        anchor = 'ne'
-        dy = - @delta
-      else
-        anchor = 'se'
-        dy = @delta
-      end
-    end
-
-    bind_remove('Motion')
-
-    @entry.value = ''
-    @entry.configure(:justify=>justify, :font=>@font, :foreground=>@col)
-
-    ewin = TkcWindow.new(self, [canvasx(x)+dx, canvasy(y)+dy], 
-                         :window=>@entry, :state=>:normal, :anchor=>anchor, 
-                         :tags=>[@memo_id_tag])
-
-    @entry.focus
-    @entry.grab
-    @state.wait
-    @entry.grab_release
-
-    ewin.delete
-
-    @target = TkcText.new(self, [canvasx(x), canvasy(y)], 
-                          :anchor=>anchor, :justify=>justify, 
-                          :fill=>@col, :font=>@font, :text=>@entry.value, 
-                          :tags=>[@memo_id_tag])
-
-    _state0()
-  end
-
-  #-----------------------------------
-  public
-  def load_photo(filename)
-    @photo.configure(:file=>filename)
-  end
-
-  def modified?
-    ! ((find_withtag('all') - [@img]).empty?)
-  end
-
-  def fig_erase
-    (find_withtag('all') - [@img]).each{|item| item.delete}
-  end
-
-  def reset_region
-    width = @photo.width
-    height = @photo.height
-
-    if width > @scr_region[2]
-      @scr_region[0] = -width
-      @scr_region[2] = width
-    end
-
-    if height > @scr_region[3]
-      @scr_region[1] = -height
-      @scr_region[3] = height
-    end
-
-    self.scrollregion(@scr_region)
-    self.xview_moveto(0.25)
-    self.yview_moveto(0.25)
-  end
-
-  def get_texts
-    ret = []
-    find_withtag('all').each{|item|
-      if item.kind_of?(TkcText)
-        ret << item[:text]
-      end
-    }
-    ret
-  end
-end
-############################
-
-# define methods for menu
-def open_file(canvas, fname)
-  if canvas.modified?
-    ret = Tk.messageBox(:icon=>'warning',:type=>'okcancel',:default=>'cancel',
-                        :message=>'Canvas may be modified. Realy erase? ')
-    return if ret == 'cancel'
-  end
-
-  filetypes = [
-    ['GIF Files', '.gif'], 
-    ['GIF Files', [], 'GIFF'], 
-    ['PPM Files', '.ppm'], 
-    ['PGM Files', '.pgm']
-  ]
-
-  begin
-    if Tk::Img::package_version != ''
-      filetypes << ['JPEG Files', ['.jpg', '.jpeg']]
-      filetypes << ['PNG Files', '.png']
-      filetypes << ['PostScript Files', '.ps']
-      filetypes << ['PDF Files', '.pdf']
-      filetypes << ['Windows Bitmap Files', '.bmp']
-      filetypes << ['Windows Icon Files', '.ico']
-      filetypes << ['PCX Files', '.pcx']
-      filetypes << ['Pixmap Files', '.pixmap']
-      filetypes << ['SGI Files', '.sgi']
-      filetypes << ['Sun Raster Files', '.sun']
-      filetypes << ['TGA Files', '.tga']
-      filetypes << ['TIFF Files', '.tiff']
-      filetypes << ['XBM Files', '.xbm']
-      filetypes << ['XPM Files', '.xpm']
-    end
-  rescue
-  end
-
-  filetypes << ['ALL Files', '*']
-
-  fpath = Tk.getOpenFile(:filetypes=>filetypes)
-  return if fpath.empty?
-
-  begin
-    canvas.load_photo(fpath)
-  rescue => e
-    Tk.messageBox(:icon=>'error', :type=>'ok', 
-                  :message=>"Fail to read '#{fpath}'.\n#{e.message}")
-  end
-
-  canvas.fig_erase
-  canvas.reset_region
-
-  fname.value = fpath
-end
-
-# --------------------------------
-def save_memo(canvas, fname)
-  initname = fname.value
-  if initname != '-'
-    initname = File.basename(initname, File.extname(initname))
-    fpath = Tk.getSaveFile(:filetypes=>[ ['Text Files', '.txt'], 
-                                         ['ALL Files', '*'] ], 
-                           :initialfile=>initname)
-  else
-    fpath = Tk.getSaveFile(:filetypes=>[ ['Text Files', '.txt'], 
-                                         ['ALL Files', '*'] ])
-  end
-  return if fpath.empty?
-
-  begin
-    fid = open(fpath, 'w')
-  rescue => e
-    Tk.messageBox(:icon=>'error', :type=>'ok', 
-                  :message=>"Fail to open '#{fname.value}'.\n#{e.message}")
-  end
-
-  begin
-    canvas.get_texts.each{|txt|
-      fid.print(txt, "\n")
-    }
-  ensure
-    fid.close
-  end
-end
-
-# --------------------------------
-def ps_print(canvas, fname)
-  initname = fname.value
-  if initname != '-'
-    initname = File.basename(initname, File.extname(initname))
-    fpath = Tk.getSaveFile(:filetypes=>[ ['Postscript Files', '.ps'], 
-                                         ['ALL Files', '*'] ], 
-                           :initialfile=>initname)
-  else
-    fpath = Tk.getSaveFile(:filetypes=>[ ['Postscript Files', '.ps'], 
-                                         ['ALL Files', '*'] ])
-  end
-  return if fpath.empty?
-
-  bbox = canvas.bbox('all')
-  canvas.postscript(:file=>fpath, :x=>bbox[0], :y=>bbox[1], 
-                    :width=>bbox[2] - bbox[0], :height=>bbox[3] - bbox[1])
-end
-
-# --------------------------------
-def quit(canvas)
-  ret = Tk.messageBox(:icon=>'warning', :type=>'okcancel', 
-                      :default=>'cancel', 
-                      :message=>'Realy quit? ')
-  exit if ret == 'ok'
-end
-
-# --------------------------------
-# setup root
-root = TkRoot.new(:title=>'Fig Memo')
-
-# create canvas frame
-canvas = PhotoCanvas.new(root).pack(:fill=>:both, :expand=>true)
-usage_frame = TkFrame.new(root, :relief=>:ridge, :borderwidth=>2)
-hide_btn = TkButton.new(usage_frame, :text=>'hide usage', 
-                        :font=>{:size=>8}, :pady=>1, 
-                        :command=>proc{usage_frame.unpack})
-hide_btn.pack(:anchor=>'e', :padx=>5)
-usage = TkLabel.new(usage_frame, :text=>PhotoCanvas::USAGE, 
-                    :font=>'Helvetica 8', :justify=>:left).pack
-
-show_usage = proc{
-  usage_frame.pack(:before=>canvas, :fill=>:x, :expand=>true)
-}
-
-fname = TkVariable.new('-')
-f = TkFrame.new(root, :relief=>:sunken, :borderwidth=>1).pack(:fill=>:x)
-label = TkLabel.new(f, :textvariable=>fname, 
-                    :font=>{:size=>-12, :weight=>:bold}, 
-                    :anchor=>'w').pack(:side=>:left, :fill=>:x, :padx=>10)
-
-# create menu
-mspec = [
-  [ ['File', 0], 
-    ['Show Usage',      proc{show_usage.call}, 5], 
-    '---', 
-    ['Open Image File', proc{open_file(canvas, fname)}, 0], 
-    ['Save Memo Texts', proc{save_memo(canvas, fname)}, 0], 
-    '---', 
-    ['Save Postscript', proc{ps_print(canvas, fname)}, 5], 
-    '---', 
-    ['Quit', proc{quit(canvas)}, 0]
-  ]
-]
-root.add_menubar(mspec)
-
-# manage wm_protocol
-root.protocol(:WM_DELETE_WINDOW){quit(canvas)}
-
-# show usage
-show_usage.call
-
-# --------------------------------
-# start eventloop
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/earth.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/earth.gif
deleted file mode 100644 (file)
index 2c229eb..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/earth.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/earthris.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/earthris.gif
deleted file mode 100644 (file)
index c4ee473..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/earthris.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/face.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/face.xbm
deleted file mode 100644 (file)
index 03d829f..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-#define face_width 108
-#define face_height 144
-#define face_x_hot 48
-#define face_y_hot 80
-static char face_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09,
-   0x20, 0x80, 0x24, 0x05, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x88,
-   0x24, 0x20, 0x80, 0x24, 0x00, 0x00, 0x00, 0x10, 0x80, 0x04, 0x00, 0x01,
-   0x00, 0x01, 0x40, 0x0a, 0x09, 0x00, 0x92, 0x04, 0x80, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x10, 0x40, 0x12, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x84,
-   0x24, 0x40, 0x22, 0xa8, 0x02, 0x14, 0x84, 0x92, 0x40, 0x42, 0x12, 0x04,
-   0x10, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x11, 0x00, 0x12, 0x00,
-   0x40, 0x02, 0x00, 0x20, 0x00, 0x08, 0x00, 0xaa, 0x02, 0x54, 0x85, 0x24,
-   0x00, 0x10, 0x12, 0x00, 0x00, 0x81, 0x44, 0x00, 0x90, 0x5a, 0x00, 0xea,
-   0x1b, 0x00, 0x80, 0x40, 0x40, 0x02, 0x00, 0x08, 0x00, 0x20, 0xa2, 0x05,
-   0x8a, 0xb4, 0x6e, 0x45, 0x12, 0x04, 0x08, 0x00, 0x00, 0x00, 0x10, 0x02,
-   0xa8, 0x92, 0x00, 0xda, 0x5f, 0x10, 0x00, 0x10, 0xa1, 0x04, 0x20, 0x41,
-   0x02, 0x00, 0x5a, 0x25, 0xa0, 0xff, 0xfb, 0x05, 0x41, 0x02, 0x04, 0x00,
-   0x00, 0x08, 0x40, 0x80, 0xec, 0x9b, 0xec, 0xfe, 0x7f, 0x01, 0x04, 0x20,
-   0x90, 0x02, 0x04, 0x00, 0x08, 0x20, 0xfb, 0x2e, 0xf5, 0xff, 0xff, 0x57,
-   0x00, 0x04, 0x02, 0x00, 0x00, 0x20, 0x01, 0xc1, 0x6e, 0xab, 0xfa, 0xff,
-   0xff, 0x05, 0x90, 0x20, 0x48, 0x02, 0x00, 0x04, 0x20, 0xa8, 0xdf, 0xb5,
-   0xfe, 0xff, 0xff, 0x0b, 0x01, 0x00, 0x01, 0x00, 0x80, 0x80, 0x04, 0xe0,
-   0xbb, 0xef, 0xff, 0xff, 0x7f, 0x01, 0x00, 0x04, 0x48, 0x02, 0x00, 0x20,
-   0x80, 0xf4, 0x6f, 0xfb, 0xff, 0xff, 0xff, 0x20, 0x90, 0x40, 0x02, 0x00,
-   0x00, 0x04, 0x08, 0xb8, 0xf6, 0xff, 0xff, 0xdf, 0xbe, 0x12, 0x45, 0x10,
-   0x90, 0x04, 0x90, 0x00, 0x22, 0xfa, 0xff, 0xff, 0xff, 0xbb, 0xd7, 0xe9,
-   0x3a, 0x02, 0x02, 0x00, 0x04, 0x90, 0x80, 0xfe, 0xdf, 0xf6, 0xb7, 0xef,
-   0xbe, 0x56, 0x57, 0x40, 0x48, 0x09, 0x00, 0x04, 0x00, 0xfa, 0xf5, 0xdf,
-   0xed, 0x5a, 0xd5, 0xea, 0xbd, 0x09, 0x00, 0x00, 0x40, 0x00, 0x92, 0xfe,
-   0xbf, 0x7d, 0xb7, 0x6a, 0x55, 0xbf, 0xf7, 0x02, 0x11, 0x01, 0x00, 0x91,
-   0x00, 0xff, 0xff, 0xaf, 0x55, 0x55, 0x5b, 0xeb, 0xef, 0x22, 0x04, 0x04,
-   0x04, 0x00, 0xa4, 0xff, 0xf7, 0xad, 0xaa, 0xaa, 0xaa, 0xbe, 0xfe, 0x03,
-   0x20, 0x00, 0x10, 0x44, 0x80, 0xff, 0x7f, 0x55, 0x12, 0x91, 0x2a, 0xeb,
-   0xbf, 0x0b, 0x82, 0x02, 0x00, 0x00, 0xd1, 0x7f, 0xdf, 0xa2, 0xa4, 0x54,
-   0x55, 0xfd, 0xfd, 0x47, 0x08, 0x08, 0x00, 0x21, 0xe4, 0xff, 0x37, 0x11,
-   0x09, 0xa5, 0xaa, 0xb6, 0xff, 0x0d, 0x80, 0x00, 0x00, 0x04, 0xd0, 0xff,
-   0x4f, 0x44, 0x20, 0x48, 0x55, 0xfb, 0xff, 0x27, 0x11, 0x02, 0x40, 0x40,
-   0xe2, 0xfb, 0x15, 0x11, 0x4a, 0x55, 0x4a, 0x7d, 0xf7, 0x0f, 0x00, 0x00,
-   0x04, 0x08, 0xf8, 0xdf, 0x52, 0x44, 0x01, 0x52, 0xb5, 0xfa, 0xff, 0x0f,
-   0x49, 0x02, 0x00, 0x02, 0xe9, 0xf6, 0x0a, 0x11, 0xa4, 0x88, 0x4a, 0x6d,
-   0xff, 0x5f, 0x00, 0x00, 0x10, 0x20, 0xf0, 0x2f, 0x21, 0x44, 0x10, 0x52,
-   0xb5, 0xfa, 0xff, 0x0f, 0x44, 0x04, 0x80, 0x08, 0xf8, 0xab, 0x8a, 0x00,
-   0x81, 0xa4, 0xd4, 0xd6, 0xfe, 0x2f, 0x00, 0x00, 0x04, 0x40, 0xb5, 0x2d,
-   0x21, 0x08, 0x04, 0x90, 0xaa, 0xfa, 0xff, 0x1f, 0x11, 0x01, 0x00, 0x04,
-   0xf0, 0x57, 0x0a, 0x22, 0x40, 0x4a, 0xda, 0x5e, 0xfb, 0x1f, 0x40, 0x00,
-   0x40, 0x20, 0xba, 0x95, 0x90, 0x00, 0x01, 0xa0, 0xaa, 0xea, 0xff, 0x5f,
-   0x02, 0x02, 0x00, 0x01, 0xe8, 0x57, 0x05, 0x00, 0x00, 0x12, 0xd5, 0xfe,
-   0xfd, 0x1f, 0x48, 0x00, 0x04, 0x48, 0x7a, 0x95, 0x08, 0x02, 0x10, 0x40,
-   0xaa, 0x55, 0xf7, 0x1f, 0x00, 0x09, 0x20, 0x00, 0xf8, 0x57, 0x22, 0x10,
-   0x00, 0x28, 0xa9, 0xfa, 0xff, 0x5f, 0x02, 0x00, 0x00, 0x49, 0xdd, 0x29,
-   0x01, 0x00, 0x80, 0x80, 0xaa, 0xd7, 0xff, 0x0f, 0x10, 0x00, 0x08, 0x00,
-   0xf8, 0x96, 0x08, 0x00, 0x00, 0x20, 0x54, 0xfa, 0xee, 0x3f, 0x81, 0x04,
-   0x40, 0x24, 0xfe, 0x55, 0x82, 0x00, 0x00, 0x82, 0xd2, 0xad, 0xff, 0x0f,
-   0x08, 0x00, 0x04, 0x80, 0x6c, 0x97, 0x00, 0x00, 0x02, 0x20, 0xa9, 0xf6,
-   0xdf, 0x5f, 0x00, 0x02, 0x20, 0x09, 0xfa, 0x49, 0x12, 0x00, 0x20, 0x84,
-   0x54, 0xdb, 0xfe, 0x1f, 0x91, 0x00, 0x00, 0x00, 0xf8, 0x2b, 0x00, 0x20,
-   0x00, 0x40, 0xa4, 0xf6, 0xbb, 0x1f, 0x04, 0x00, 0x44, 0x92, 0x7e, 0x95,
-   0x02, 0x00, 0x00, 0x89, 0xaa, 0xdd, 0xff, 0x1f, 0x20, 0x09, 0x10, 0x00,
-   0xf4, 0x57, 0x20, 0x01, 0x08, 0x20, 0xa9, 0x76, 0xff, 0x5f, 0x02, 0x00,
-   0x00, 0x21, 0xfc, 0x4a, 0x05, 0x00, 0x01, 0x80, 0x54, 0xdb, 0xff, 0x1e,
-   0x08, 0x02, 0x04, 0x08, 0xf9, 0x2b, 0x00, 0x00, 0x40, 0x28, 0xd2, 0xf6,
-   0xff, 0xbf, 0x80, 0x00, 0x90, 0x00, 0xbc, 0x92, 0x08, 0x10, 0x00, 0x82,
-   0x54, 0xdb, 0xff, 0x1f, 0x20, 0x00, 0x00, 0x44, 0xf9, 0x55, 0x02, 0x01,
-   0x00, 0x20, 0xaa, 0xbd, 0xfd, 0x3f, 0x08, 0x04, 0x04, 0x10, 0xf4, 0x2a,
-   0x01, 0x00, 0x22, 0x80, 0xd4, 0xf6, 0xff, 0x5f, 0x82, 0x00, 0x40, 0x02,
-   0xf8, 0x55, 0x20, 0x00, 0x00, 0x50, 0x6a, 0xdf, 0xfe, 0x3f, 0x00, 0x00,
-   0x00, 0x48, 0xe9, 0x4a, 0x05, 0x08, 0x00, 0xa5, 0xd5, 0xf5, 0xff, 0x3f,
-   0x10, 0x01, 0x10, 0x01, 0xb0, 0xab, 0x92, 0x02, 0x40, 0xf8, 0xbf, 0xde,
-   0xfe, 0x5f, 0x02, 0x04, 0x04, 0x48, 0xfa, 0xd4, 0x6f, 0x20, 0x84, 0xef,
-   0xff, 0xfb, 0xff, 0x1f, 0x20, 0x00, 0x00, 0x00, 0xe0, 0xed, 0xbf, 0x0b,
-   0xa1, 0x7e, 0xff, 0xbf, 0xfd, 0x5f, 0x04, 0x01, 0x20, 0x49, 0xd2, 0xfb,
-   0xfe, 0x55, 0xd4, 0xff, 0xff, 0xf6, 0xff, 0x07, 0x00, 0x04, 0x00, 0x00,
-   0xc0, 0xaa, 0xfb, 0x2b, 0xa2, 0xfe, 0xff, 0xdf, 0xee, 0x1f, 0x91, 0x00,
-   0x82, 0xa4, 0xa4, 0xf5, 0xff, 0x57, 0xd5, 0xff, 0xbf, 0xfd, 0xff, 0x4d,
-   0x00, 0x00, 0x20, 0x00, 0x88, 0x5b, 0xff, 0x2f, 0x69, 0xff, 0xff, 0xdb,
-   0xfe, 0x1f, 0x24, 0x02, 0x00, 0x49, 0xa2, 0xd6, 0xff, 0x5f, 0xea, 0xff,
-   0x7f, 0x7f, 0x7f, 0x0d, 0x00, 0x00, 0x10, 0x00, 0x40, 0xab, 0xf7, 0xbb,
-   0xf0, 0xdf, 0xff, 0xd5, 0xff, 0xbf, 0x82, 0x04, 0x42, 0x24, 0x91, 0xd5,
-   0xaa, 0xae, 0xd4, 0xaa, 0x52, 0x7b, 0xff, 0x15, 0x08, 0x00, 0x00, 0x01,
-   0x04, 0x55, 0xd5, 0x55, 0x70, 0x5b, 0x75, 0xdd, 0xdf, 0x1f, 0x40, 0x00,
-   0x08, 0x48, 0xa0, 0x4a, 0xa9, 0x56, 0xea, 0x56, 0xad, 0x6a, 0x7d, 0x9b,
-   0x04, 0x01, 0x00, 0x02, 0x42, 0x2a, 0xd5, 0xaa, 0xa8, 0xaa, 0xaa, 0xfa,
-   0xdf, 0x2f, 0x10, 0x04, 0x22, 0x48, 0x08, 0x45, 0x2a, 0x15, 0x68, 0x55,
-   0x55, 0xd7, 0x76, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x40, 0x2a, 0x80, 0xa0,
-   0xb2, 0x09, 0x48, 0xb9, 0xdf, 0x17, 0x22, 0x01, 0x00, 0x24, 0x45, 0x8a,
-   0x24, 0x4a, 0x54, 0x51, 0x91, 0xf6, 0x6e, 0x4b, 0x00, 0x04, 0x90, 0x00,
-   0x80, 0x52, 0x00, 0x20, 0x69, 0x05, 0xa4, 0xaa, 0xff, 0x1e, 0x48, 0x00,
-   0x02, 0x92, 0x08, 0x05, 0x81, 0x94, 0xd4, 0x92, 0x40, 0xfd, 0xb6, 0x8b,
-   0x00, 0x01, 0x40, 0x00, 0x82, 0x54, 0x00, 0x48, 0x68, 0x05, 0x90, 0xa4,
-   0xef, 0x06, 0x24, 0x00, 0x08, 0x12, 0x10, 0x05, 0x00, 0x10, 0xb5, 0x01,
-   0x42, 0xfb, 0xbf, 0x43, 0x00, 0x09, 0x00, 0x40, 0x81, 0xa8, 0x08, 0x4a,
-   0xaa, 0x96, 0x90, 0xac, 0x6d, 0x15, 0x22, 0x00, 0x20, 0x09, 0x04, 0x15,
-   0x80, 0x28, 0xdc, 0x01, 0x24, 0xfb, 0xbf, 0x01, 0x80, 0x04, 0x09, 0x00,
-   0x40, 0x48, 0x02, 0x45, 0xb2, 0x2e, 0x41, 0x6d, 0xef, 0x05, 0x11, 0x00,
-   0x40, 0x52, 0x02, 0x15, 0x29, 0x2a, 0xac, 0x42, 0x54, 0xfb, 0x3b, 0x51,
-   0x84, 0x00, 0x08, 0x00, 0x20, 0x54, 0x80, 0x05, 0xb5, 0x3d, 0xa2, 0xb6,
-   0xdf, 0x00, 0x20, 0x04, 0x20, 0x49, 0x89, 0xa8, 0x6a, 0x29, 0xac, 0xd6,
-   0x54, 0xff, 0x3f, 0x84, 0x00, 0x01, 0x04, 0x10, 0x00, 0x94, 0xa8, 0x56,
-   0xda, 0x5f, 0xab, 0xd5, 0x1e, 0x10, 0x48, 0x00, 0x90, 0x82, 0x48, 0xa8,
-   0xb2, 0xac, 0xfd, 0x55, 0xd5, 0xfe, 0x9f, 0x80, 0x00, 0x0a, 0x02, 0x08,
-   0x02, 0x55, 0x5a, 0x75, 0xff, 0xaf, 0xb6, 0xf7, 0x2d, 0x12, 0x92, 0x00,
-   0x10, 0x20, 0x10, 0xa8, 0x54, 0xd5, 0xbf, 0x5d, 0xad, 0xdd, 0x0f, 0x00,
-   0x00, 0x04, 0x40, 0x09, 0x84, 0xa8, 0xaa, 0x5a, 0xed, 0xeb, 0x6a, 0xff,
-   0x9f, 0xa4, 0x24, 0x01, 0x02, 0xa0, 0x20, 0x50, 0x55, 0xd5, 0xbe, 0xae,
-   0xad, 0xfd, 0x16, 0x00, 0x10, 0x04, 0x20, 0x0a, 0x08, 0xb4, 0xaa, 0x95,
-   0xaa, 0x7b, 0xb7, 0xdb, 0x5f, 0x92, 0x04, 0x01, 0x84, 0x20, 0x21, 0x51,
-   0xd5, 0x2a, 0xa9, 0xee, 0xd5, 0xfe, 0x0d, 0x00, 0x20, 0x04, 0x10, 0x00,
-   0x08, 0x50, 0xe9, 0xd7, 0xd4, 0xfb, 0xb5, 0xff, 0x9f, 0x24, 0x09, 0x01,
-   0x42, 0x4a, 0xa2, 0x64, 0xd5, 0x55, 0x7b, 0x7f, 0xda, 0x7d, 0x4f, 0x00,
-   0x20, 0x04, 0x00, 0x80, 0x00, 0xa0, 0x2a, 0x13, 0x84, 0x6a, 0x55, 0xff,
-   0x1d, 0x48, 0x8a, 0x00, 0x94, 0x24, 0x8a, 0xc8, 0xaa, 0x42, 0x20, 0x5d,
-   0xf5, 0xff, 0x5f, 0x01, 0x00, 0x02, 0x01, 0x00, 0x20, 0xa2, 0x4a, 0x1a,
-   0x82, 0x56, 0xda, 0xbd, 0x3f, 0x92, 0x92, 0x00, 0x90, 0x92, 0x00, 0x40,
-   0x95, 0x6a, 0xf4, 0x55, 0x6d, 0xff, 0xd6, 0x00, 0x00, 0x0a, 0x04, 0x20,
-   0x14, 0x49, 0x4b, 0xaa, 0xaa, 0x56, 0xf5, 0xff, 0xbf, 0xab, 0xa4, 0x00,
-   0x20, 0x89, 0x40, 0x80, 0xaa, 0xaa, 0xaa, 0xaa, 0xde, 0xbf, 0xeb, 0x03,
-   0x00, 0x02, 0x04, 0x02, 0x0a, 0x10, 0x2b, 0x2a, 0x55, 0x5b, 0xf5, 0xff,
-   0xd7, 0x2f, 0x92, 0x00, 0x10, 0x28, 0x21, 0x01, 0x56, 0x95, 0xa0, 0x56,
-   0xdf, 0xef, 0xea, 0x87, 0x40, 0x0a, 0x42, 0x41, 0x00, 0x90, 0xaa, 0x52,
-   0xb6, 0xad, 0xfa, 0xff, 0xd5, 0x2f, 0x14, 0x00, 0x00, 0x04, 0x95, 0x04,
-   0xaa, 0xac, 0x55, 0x6b, 0xff, 0xb7, 0xea, 0x9f, 0x40, 0x02, 0x28, 0x51,
-   0x00, 0x40, 0x58, 0xd5, 0xda, 0xd6, 0x6e, 0x7f, 0xf9, 0x3f, 0x12, 0x04,
-   0x02, 0x04, 0x49, 0x25, 0x55, 0xaa, 0x77, 0xab, 0xff, 0x2b, 0xfd, 0x3f,
-   0x48, 0x01, 0x20, 0x41, 0x00, 0x00, 0x58, 0xa9, 0xda, 0xea, 0xfd, 0xaf,
-   0xfa, 0xff, 0x02, 0x04, 0x08, 0x14, 0x29, 0x49, 0x52, 0x55, 0x55, 0x55,
-   0xff, 0x8d, 0xfe, 0x3f, 0xa8, 0x00, 0x02, 0x41, 0x00, 0x02, 0xa0, 0xa2,
-   0xaa, 0xea, 0xff, 0x53, 0xfd, 0xff, 0x02, 0x04, 0x50, 0x04, 0x25, 0xa8,
-   0x54, 0x49, 0x52, 0xb5, 0xbf, 0x8a, 0xfe, 0xff, 0xa9, 0x08, 0x04, 0x50,
-   0x80, 0x02, 0xa1, 0x2a, 0x95, 0xea, 0xff, 0xa1, 0xff, 0xff, 0x03, 0x02,
-   0x90, 0x02, 0x09, 0x08, 0x44, 0x49, 0x52, 0xbd, 0x7f, 0xca, 0xff, 0xff,
-   0x2b, 0x09, 0x04, 0x48, 0x40, 0x82, 0x90, 0x56, 0xa9, 0xf6, 0xbf, 0xd0,
-   0xff, 0xff, 0x47, 0x00, 0x50, 0x02, 0x15, 0x11, 0x40, 0x95, 0xaa, 0xfd,
-   0x2f, 0xe9, 0xff, 0xff, 0x8f, 0x0a, 0x84, 0x50, 0x40, 0x84, 0x14, 0xaa,
-   0x6a, 0xff, 0x5f, 0xf2, 0xff, 0xff, 0x7f, 0x00, 0x10, 0x02, 0x09, 0x10,
-   0x40, 0x7d, 0xf7, 0xff, 0x0b, 0xfc, 0xff, 0xff, 0xaf, 0x02, 0x84, 0x50,
-   0x42, 0x85, 0x12, 0xd0, 0xdd, 0xff, 0xa7, 0xf2, 0xff, 0xff, 0xff, 0x04,
-   0x00, 0x0a, 0x08, 0x10, 0x48, 0xf8, 0xff, 0xff, 0x0a, 0xfe, 0xff, 0xff,
-   0x7f, 0x03, 0xa4, 0x80, 0xa2, 0x8a, 0x02, 0x68, 0xff, 0xff, 0x52, 0xfd,
-   0xff, 0xff, 0xff, 0x07, 0x00, 0x2a, 0x08, 0x20, 0x28, 0xdc, 0xff, 0x5f,
-   0x05, 0xff, 0xff, 0xff, 0xff, 0x0d, 0x92, 0x40, 0x22, 0x09, 0x02, 0xea,
-   0xfb, 0xaf, 0x48, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x12, 0x81, 0xa0,
-   0x48, 0x9c, 0x6e, 0x93, 0xa2, 0xff, 0xff, 0xff, 0xff, 0x07, 0xa8, 0x40,
-   0x28, 0x0a, 0x02, 0x74, 0xb5, 0x45, 0x81, 0xff, 0xff, 0xff, 0xff, 0x0f,
-   0x02, 0x0a, 0x81, 0x20, 0x08, 0xae, 0xaa, 0x90, 0xe8, 0xff, 0xff, 0xff,
-   0xff, 0x0f, 0x90, 0x40, 0x28, 0x88, 0x12, 0x58, 0x15, 0x50, 0xd0, 0xff,
-   0xff, 0xff, 0xff, 0x0f, 0x44, 0x0a, 0x41, 0x21, 0x08, 0xae, 0x04, 0x14,
-   0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x10, 0x40, 0x14, 0x88, 0x04, 0xba,
-   0x02, 0x28, 0xe8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x42, 0x15, 0x41, 0x21,
-   0x05, 0xad, 0x00, 0x05, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x10, 0x40,
-   0x24, 0x8a, 0x0e, 0x36, 0x00, 0x0a, 0xf4, 0xff, 0xff, 0xff, 0xff, 0x0f,
-   0x42, 0x25, 0x90, 0xd0, 0x8b, 0xc2, 0x41, 0x05, 0xfc, 0xff, 0xff, 0xff,
-   0xff, 0x0f, 0x10, 0x08, 0x05, 0xe8, 0x8e, 0x58, 0x80, 0x02, 0xfa, 0xff,
-   0xff, 0xff, 0xff, 0x0f, 0x4a, 0x20, 0xa8, 0xba, 0x0b, 0x2b, 0x51, 0x01,
-   0xfe, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x8a, 0x02, 0xe8, 0xaf, 0x84,
-   0x90, 0x04, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x52, 0x21, 0x54, 0xbf,
-   0x1f, 0x15, 0xa5, 0x02, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x08,
-   0x01, 0xfa, 0xb6, 0xa4, 0x52, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
-   0x4a, 0xa2, 0x54, 0xef, 0x5f, 0x4b, 0xa4, 0x80, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x0f, 0x80, 0x10, 0x82, 0xfe, 0xbf, 0x92, 0x52, 0x42, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x0f, 0x12, 0x42, 0xa8, 0xbf, 0x1f, 0x24, 0x80, 0xa0,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x84, 0x28, 0x8a, 0xf7, 0x37, 0x80,
-   0x52, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x10, 0x82, 0xe0, 0xff,
-   0x1f, 0x00, 0x20, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x84, 0x28,
-   0xca, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
-   0x10, 0x42, 0xf0, 0xfd, 0x1b, 0x00, 0x50, 0xf0, 0xff, 0xff, 0xff, 0xff,
-   0xff, 0x0f, 0xa4, 0x10, 0xc5, 0xff, 0x1f, 0x00, 0x00, 0xe0, 0xff, 0xff,
-   0xff, 0xff, 0xff, 0x0f, 0x00, 0x22, 0xf8, 0xff, 0x0e, 0x00, 0x00, 0xf0,
-   0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xaa, 0x88, 0xe2, 0xff, 0x0f, 0x10,
-   0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x25, 0xfa, 0xff,
-   0x0f, 0x01, 0x11, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xfb,
-   0xfb, 0xff, 0x7f, 0x5d, 0xd5, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f};
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/flagdown.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/flagdown.xbm
deleted file mode 100644 (file)
index 55abc51..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#define flagdown_width 48
-#define flagdown_height 48
-static char flagdown_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
-   0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe1, 0x00, 0x00,
-   0x00, 0x00, 0x70, 0x80, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0x00,
-   0x00, 0x00, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x04,
-   0x00, 0x00, 0x03, 0x00, 0x06, 0x06, 0x00, 0x80, 0x01, 0x00, 0x06, 0x07,
-   0x00, 0xc0, 0x1f, 0x00, 0x87, 0x07, 0x00, 0xe0, 0x7f, 0x80, 0xc7, 0x07,
-   0x00, 0x70, 0xe0, 0xc0, 0xe5, 0x07, 0x00, 0x38, 0x80, 0xe1, 0x74, 0x07,
-   0x00, 0x18, 0x80, 0x71, 0x3c, 0x07, 0x00, 0x0c, 0x00, 0x3b, 0x1e, 0x03,
-   0x00, 0x0c, 0x00, 0x1f, 0x0f, 0x00, 0x00, 0x86, 0x1f, 0x8e, 0x07, 0x00,
-   0x00, 0x06, 0x06, 0xc6, 0x05, 0x00, 0x00, 0x06, 0x00, 0xc6, 0x05, 0x00,
-   0x00, 0x06, 0x00, 0xc6, 0x04, 0x00, 0x00, 0x06, 0x00, 0x06, 0x04, 0x00,
-   0x7f, 0x06, 0x00, 0x06, 0xe4, 0xff, 0x00, 0x06, 0x00, 0x06, 0x04, 0x00,
-   0x00, 0x06, 0x00, 0x06, 0x04, 0x00, 0x00, 0x06, 0x00, 0x06, 0x06, 0x00,
-   0x00, 0x06, 0x00, 0x06, 0x03, 0x00, 0x00, 0x06, 0x00, 0x86, 0x01, 0x00,
-   0x00, 0x06, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x06, 0x00, 0x66, 0x00, 0x00,
-   0x00, 0x06, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x3e, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0x2f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x27, 0x00, 0x00,
-   0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00,
-   0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00,
-   0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00,
-   0x00, 0x00, 0x88, 0x20, 0x00, 0x00, 0x00, 0x00, 0x88, 0x20, 0x00, 0x00,
-   0xf7, 0xbf, 0x8e, 0xfc, 0xdf, 0xf8, 0x9d, 0xeb, 0x9b, 0x76, 0xd2, 0x7a,
-   0x46, 0x30, 0xe2, 0x0f, 0xe1, 0x47, 0x55, 0x84, 0x48, 0x11, 0x84, 0x19};
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/flagup.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/flagup.xbm
deleted file mode 100644 (file)
index 6eb0d84..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#define flagup_width 48
-#define flagup_height 48
-static char flagup_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00,
-   0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xef, 0x6a, 0x00,
-   0x00, 0x00, 0xc0, 0x7b, 0x75, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x6a, 0x00,
-   0x00, 0x00, 0x30, 0x60, 0x75, 0x00, 0x00, 0x00, 0x18, 0xe0, 0x7f, 0x00,
-   0x00, 0x00, 0x0c, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x04, 0x00,
-   0x00, 0x00, 0x03, 0xe0, 0x04, 0x00, 0x00, 0x80, 0x01, 0xe0, 0x06, 0x00,
-   0x00, 0xc0, 0x1f, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x7f, 0xe0, 0x07, 0x00,
-   0x00, 0x70, 0xe0, 0xe0, 0x05, 0x00, 0x00, 0x38, 0x80, 0xe1, 0x04, 0x00,
-   0x00, 0x18, 0x80, 0xf1, 0x04, 0x00, 0x00, 0x0c, 0x00, 0xfb, 0x04, 0x00,
-   0x00, 0x0c, 0x00, 0xff, 0x04, 0x00, 0x00, 0x86, 0x1f, 0xee, 0x04, 0x00,
-   0x00, 0x06, 0x06, 0xe6, 0x04, 0x00, 0x00, 0x06, 0x00, 0xe6, 0x04, 0x00,
-   0x00, 0x06, 0x00, 0xe6, 0x04, 0x00, 0x00, 0x06, 0x00, 0x66, 0x04, 0x00,
-   0x7f, 0x56, 0x52, 0x06, 0xe4, 0xff, 0x00, 0x76, 0x55, 0x06, 0x04, 0x00,
-   0x00, 0x56, 0x57, 0x06, 0x04, 0x00, 0x00, 0x56, 0x55, 0x06, 0x06, 0x00,
-   0x00, 0x56, 0xd5, 0x06, 0x03, 0x00, 0x00, 0x06, 0x00, 0x86, 0x01, 0x00,
-   0x54, 0x06, 0x00, 0xc6, 0x54, 0x55, 0xaa, 0x06, 0x00, 0x66, 0xaa, 0x2a,
-   0x54, 0x06, 0x00, 0x36, 0x55, 0x55, 0xaa, 0x06, 0x00, 0xbe, 0xaa, 0x2a,
-   0x54, 0xfe, 0xff, 0x6f, 0x55, 0x55, 0xaa, 0xfc, 0xff, 0xa7, 0xaa, 0x2a,
-   0x54, 0x01, 0x88, 0x60, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa0, 0xaa, 0x2a,
-   0x54, 0x55, 0x8d, 0x60, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa0, 0xaa, 0x2a,
-   0x54, 0x55, 0x8d, 0x60, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa0, 0xaa, 0x2a,
-   0x54, 0x55, 0x8d, 0x50, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa8, 0xaa, 0x2a,
-   0x54, 0x55, 0x95, 0x54, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x2a,
-   0x54, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/gray25.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/gray25.xbm
deleted file mode 100644 (file)
index b234b3c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#define grey_width 16
-#define grey_height 16
-static char grey_bits[] = {
-   0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44,
-   0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44,
-   0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44};
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/grey.25 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/grey.25
deleted file mode 100644 (file)
index b234b3c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#define grey_width 16
-#define grey_height 16
-static char grey_bits[] = {
-   0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44,
-   0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44,
-   0x11, 0x11, 0x44, 0x44, 0x11, 0x11, 0x44, 0x44};
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/grey.5 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/grey.5
deleted file mode 100644 (file)
index 3768889..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#define grey_width 16
-#define grey_height 16
-static char grey_bits[] = {
-   0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa,
-   0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa,
-   0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa};
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/letters.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/letters.xbm
deleted file mode 100644 (file)
index 0f12568..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#define letters_width 48
-#define letters_height 48
-static char letters_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20,
-   0x00, 0xfa, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2a,
-   0x00, 0x3a, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2e,
-   0xe0, 0xff, 0xff, 0xff, 0xff, 0x21, 0x20, 0x00, 0x00, 0x00, 0x00, 0x21,
-   0xa0, 0x03, 0x00, 0x00, 0x70, 0x21, 0x20, 0x00, 0x00, 0x00, 0x50, 0x21,
-   0xa0, 0x1f, 0x00, 0x00, 0x50, 0x21, 0x20, 0x00, 0x00, 0x00, 0x70, 0x21,
-   0xfe, 0xff, 0xff, 0xff, 0x0f, 0x21, 0x02, 0x00, 0x00, 0x00, 0x08, 0x21,
-   0xfa, 0x01, 0x00, 0x80, 0x0b, 0x21, 0x02, 0x00, 0x00, 0x80, 0x0a, 0x21,
-   0xba, 0x01, 0x00, 0x80, 0x0a, 0x21, 0x02, 0x00, 0x00, 0x80, 0x0b, 0x21,
-   0x3a, 0x00, 0x00, 0x00, 0x08, 0x21, 0x02, 0x00, 0x00, 0x00, 0x08, 0x21,
-   0x02, 0xc0, 0xfb, 0x03, 0x08, 0x21, 0x02, 0x00, 0x00, 0x00, 0x08, 0x3f,
-   0x02, 0xc0, 0xbd, 0x0f, 0x08, 0x01, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01,
-   0x02, 0xc0, 0x7f, 0x7b, 0x08, 0x01, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01,
-   0x02, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00,
-   0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00,
-   0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00,
-   0xfe, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/noletter.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/noletter.xbm
deleted file mode 100644 (file)
index 5774124..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#define noletters_width 48
-#define noletters_height 48
-static char noletters_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00,
-   0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00,
-   0x00, 0xf0, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x7f, 0x00,
-   0x00, 0x3e, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x1f, 0x00, 0x00, 0xf0, 0x01,
-   0x80, 0x07, 0x00, 0x00, 0xc0, 0x03, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x07,
-   0xe0, 0x01, 0x00, 0x00, 0xf0, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x78, 0x0e,
-   0xf0, 0x00, 0x00, 0x00, 0x3c, 0x1e, 0x70, 0x00, 0x00, 0x00, 0x1e, 0x1c,
-   0x38, 0x00, 0x00, 0x00, 0x0f, 0x38, 0x38, 0x00, 0x00, 0x80, 0x07, 0x38,
-   0x3c, 0xfc, 0xff, 0xff, 0x7f, 0x78, 0x1c, 0x04, 0x00, 0xe0, 0x41, 0x70,
-   0x1c, 0x04, 0x00, 0xf0, 0x40, 0x70, 0x1c, 0x74, 0x00, 0x78, 0x4e, 0x70,
-   0x0e, 0x04, 0x00, 0x3c, 0x4a, 0xe0, 0x0e, 0x74, 0x03, 0x1e, 0x4a, 0xe0,
-   0x0e, 0x04, 0x00, 0x0f, 0x4e, 0xe0, 0x0e, 0x04, 0x80, 0x07, 0x40, 0xe0,
-   0x0e, 0x04, 0xf8, 0x0f, 0x40, 0xe0, 0x0e, 0x04, 0xe0, 0x01, 0x40, 0xe0,
-   0x0e, 0x04, 0xf8, 0x00, 0x40, 0xe0, 0x0e, 0x04, 0x78, 0x00, 0x40, 0xe0,
-   0x0e, 0x04, 0xfc, 0xf3, 0x40, 0xe0, 0x1c, 0x04, 0x1e, 0x00, 0x40, 0x70,
-   0x1c, 0x04, 0x0f, 0x00, 0x40, 0x70, 0x1c, 0x84, 0x07, 0x00, 0x40, 0x70,
-   0x3c, 0xfc, 0xff, 0xff, 0x7f, 0x78, 0x38, 0xe0, 0x01, 0x00, 0x00, 0x38,
-   0x38, 0xf0, 0x00, 0x00, 0x00, 0x38, 0x70, 0x78, 0x00, 0x00, 0x00, 0x1c,
-   0xf0, 0x3c, 0x00, 0x00, 0x00, 0x1e, 0xe0, 0x1e, 0x00, 0x00, 0x00, 0x0e,
-   0xe0, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x07, 0x00, 0x00, 0x80, 0x07,
-   0x80, 0x07, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x1f, 0x00, 0x00, 0xf0, 0x01,
-   0x00, 0x3e, 0x00, 0x00, 0xf8, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x7f, 0x00,
-   0x00, 0xf0, 0x0f, 0xe0, 0x1f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00,
-   0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00};
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/pattern.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/pattern.xbm
deleted file mode 100644 (file)
index df31baf..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#define foo_width 16
-#define foo_height 16
-static char foo_bits[] = {
-   0x60, 0x06, 0x90, 0x09, 0x90, 0x09, 0xb0, 0x0d, 0x4e, 0x72, 0x49, 0x92,
-   0x71, 0x8e, 0x8e, 0x71, 0x8e, 0x71, 0x71, 0x8e, 0x49, 0x92, 0x4e, 0x72,
-   0xb0, 0x0d, 0x90, 0x09, 0x90, 0x09, 0x60, 0x06};
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/tcllogo.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/tcllogo.gif
deleted file mode 100644 (file)
index 4603d4f..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/tcllogo.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/teapot.ppm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/images/teapot.ppm
deleted file mode 100644 (file)
index b8ab85f..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-P6
-256 256
-255
-\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À[7 eOLjQLmSMoTMnSMlRMhPL_9 \13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀnSMtVMzYN~[N~[N\7f\N\7f\O\80\O\80]O\80]O\80]O\80]O\80\O\80\O}[NyYNtVM\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀG-\1ewXN}[N\80]O\84^O\86_O\86`O\87`O\88`O\88`O\88aO\89aO\89aO\89aO\89aO\89aO\89aO\88aO\88`O\86_O\83^O\7f\N\v\ f\18\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀaMLyYN\85_O\89aP\8bbP\8dcP\8ecP\8edP\8edP\8fdP\8fdP\8fdP\90dP\90dP\90dP\90dP\90eP\91eP\92eP\92eP\91eP\8fdP\8dcP\85_OpUM\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀwXN\85_O\8fdP\93fP\95gQ\96hQ\98hQ\98iQ\99iQ\99iQ\9aiQ\9aiQ\9ajQ\9bjQ\9bjQ\9cjQ\9cjQ\9cjQ\9cjQ\9cjQ\9bjQ\9cjQ\99iQ\93fP\87`O\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀNCJiQL\8bbP\97hQ\9dkQ¡mR¤nR¥oR¥oR¥oR¥oR¥oR¥oR¦oR¦oR¦pR¨pS©qSªqS«rS¬rS«rS©qS¤oR\9cjQ\80]O\KK\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀfOLrUM\8dcP\9flR©qS¯tS²uTµwT·xT¸xT¹yTºyT»zT»zU¼zU¼zU¼zU»zUºyT¸xT¶wT¯tS¡mR\89aOhPL\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\Àa0 cNLqUM\80\O\94fQ¦pS²wVºzV¿|VÂ}VÄ\7f\7f\80\82\85\8feæ w÷³\8bêª\85Ä\88g§qT\93fQ{ZNYIK9\1c\ 5\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀO1\1e{G#\91J\11kRMqUMtVN\96iS¨v\·\80\81bµzZ±vU°uT®sSªqS¤nR\9cjQ\92eP\84^OrUM\8fH\11h>!T4\1f\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀG-\1eV5\1fwE"~I#\86M%\90U+¥e7²l:°g2®b*­a(­`(©^(¥])¡^-\9b]1\8aS,qC$`9 R3\1fG-\1e\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À@)\1dJ/\1ei>!pA"tD"wF$yH&xH&tE$wE#yG%}M+\83T4\7fS5mE*Z7!K/\1eB*\1d;'\1c\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\89aO¦oR½{UÇ\80\85X<(\1dF-\1ea: e<!h>!j@#k@$h>"d<!c=$hD-fF2[<)K0\1f@)\1d;'\1c5$\1cË\82\80V¿|U_LKYIK\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\85_O·xTÉ\82Wó«\80ûµ\8bÖ\92k¼|X×\7f>µf-¨^(¡Z'\9aW&\96T&\9cN\ f>)\1dF-\1eJ/\1eb; g>#nD(jB&c<!b=%jH2_A/I0!<(\1d8&\1c5$\1c\94J\ e¥Y\1d\92S%8&\1c;'\1c?)\1dE,\1d<:HA=HE?IJAISFJYIKXIK\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À£nRÁ}UÜ\98\8ae±vU²e,\99V&¥V\18\86C\r\80@\f|>\fy<\fu:\vr9\vo7\vl6
-j5
-h4
-g3
-5$\1cD,\1dK/\1eb; h>"wM1tK.e="a<#cA,U8&E-\1e<(\1d9&\1c.!\ea0        b1      c1      \11\b\ 1\11\b\ 1\11\b\ 1\11\b\ 1\12   \ 1\12      \ 1\12      \ 1\14
-\ 2\1d\12
-+\1f\e3#\1c@)\1d46G<:HMCIXHK\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀU*\b´vT¿~X¸{YÃk+\9bW&\89N$|>\fu:\vp8\vk5
-f3
-a0     _/      ].      [-      \90I\11¡\*ª_(\91L\16kRMmSMmSMnSMnSMD,\1dR3\1fW5\1fmA"|O0|P1j?"c<!a=%Y7"N1\1eF,\1e;'\1cNCJNCJNDJODJODJODJh>!a: X/\10K%\a\ 5\ 2\0\ 5\ 2\0\0\0\0\ 6\ 3\ 1\ 2\ 1\0\ 3\ 1\0\ 4\ 2\0\ 6\ 3\0\17\15\19&\1d\1a4$\1c+2F=;HPEJL&\a\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\9flR¶xT­sTµd)\8aO$w;\vm6
-g3
-a0     Z-      \/\fT*\bQ(\b\8aH\15µm8kRMmSMnTMoTMpTMpUM15G15G05G04G04GpUMpTM5\1a\ 5^9 d<!yF#\81O+\80N,rC#qB"pB#k?"a: Z7 6\e\ 5ODJPDJPEJQEJQEJREJREJREJRFJSFJSFJSFJSFJe<!X/\10\0\0\0\0\0\0\ 2\ 4\b\0\0\0\ 2\v\17\0\0\0\0\0\0\ 2\ 1\0\15\14\19\e'0FªqS\96gQ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\93fP¯tS mR\90R%\81B\ ff3
-^/     V+\bQ(\bL&\aI$\ar9\v T\18lRMnSM46G47G47G46G46G46G46G46G36G36G25G25G15G04G/4F.3F\0\0\0oA"\88N$\8bO%\8fS)\8cR)\94T&\94T%\91R%\8aO$\80J#xE#\ 3\ 1\0PDJQEJREJRFJSFJTFJTFJTGJUGJUGJUGJUGJVGJVGJVGJVGJVGJVGJY6\1fN'\a\0\0\0\0\0\0\0\0\0\0\0\0\0\ 1\ 2\0\0\0t;\ e\8bO$\90dP¥oR\90dP\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À¨pS\9dkQ\93S%x=\ e[-     R)\bI$\aE"\ 6\ 6\0\0\0\94M\17¦]'pTM68G78G78G78G78G78G78G78G78G68G67G67G57G57G47G36G36G25Gp9\ e8\1c\ 5eOLpUMtVMn7\v·f+½i,¾i*¿i*¾h*\85B\r\88`O~[NqUM[-   \89H\16UGJUGJVGJVGJVHJWHJWHJWHKWHKXHKXHKXHKXHKXHKXIKXIKXIKXIKXIKh>!Y0\10\0\0\0\0\0\0\0\0\0\ 1\0\0W+\b].     s=\13\87M$\90dP\9flR\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀoTM¥oR\8fdPvE"V+\bK%\a\ 69\1c\ 59\1c\ 5\0\0\0\86F\15¤['qUMtVM99H:9H:9H:9H:9H:9H:9H:9H:9H:9H99H99H99H99H99H99H:9H;:H>;HB=HPDJ\JKmSMwXN|ZN°y[á¦\86Ö\98uº{W¹yU¿\80\84b­tU£nR\97hQ\88aO{ZNvWNtVMvXNwXNyYNzYN{ZN|ZN}[N}[N~[N~[N~[N~[N~[N~[N~[N}[N}[N{ZNzYNxXN\85L$f3
-\0\0\0I$\aL&\aP(\bU*\b\.      \80J#\7f\O\9bjQ\b\ e\17\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\9ekR\89aOo9\rL&\aC!\ 6:\1d\ 54\1a\ 5\0\0\0f3
-\9dX&pUMuWMwXNxXN<:H<:H<:H<:H<;H<;H<;H<;H=;H=;H=;H=;H>;H>;H?<H@<HA=HC>HG@ILBIREJ[JKcNLjQL§pR±uTºzUÃ~VÈ\81\82\8e\9d\8ee¼{V²vT¨pS\9ekR\95gQ\8cbP\86_O\82^O\81]O\80\O\80\O\80\O\80\O\80]O\81]O\81]O\81]O\81]O\81]O\81]O\81]O\81]O\81]O\81]O\80\O\80\O~\N}[N|ZNxXN\95T%H$\a\0\0\0G#\aK%\aQ(\bW+\bzG#nTM\98iQ\13\13\13\13\13\13\13\13\13\13\13\13\ÀdOLrUMuWNwXNyYN{ZN}[N{ZNwXNsVM\ 2\v\17\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\88`O\8dcPnA"M&\a\ 68\1c\ 5F#\a\0\0\0m6
-\9bW&rVMvWNyYNzYN|ZN}[N}[N><H?<H?<H?<H?<H?<H@<H@<H@<HA=HA=HB=HC>HE?IG@IIAIKBIODJSFJWHK\97hQ\9flR§pR°b(¾i*Én+Ù|7Û|6Ïr,Íq+Êp-Ãl+»g)±b(®sS§pS lR\9aiQ\95gQ\90eP\8dcP\8aaP\88aO\87`O\87`O\86_O\86_O\85_O\85_O\85_O\85_O\85_O\85_O\85_O\84_O\84^O\84^O\83^O\83^O\82]O\81]O\80\O~[N{ZN\95T%\0\0\0F#\aB!\ 6Y,\bL&\aU*\b~I#\84^O\86`O\13\13\13\13\ÀcNLrUMzYN\7f\O\84^O\88`O\8abP\8ccP\8fdP\90eP\92fP\93fP\93fQ\93fQ\94fQ\91eP\8dcP\89aP~[N\0\ 3\b\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\92fPsVM^/     C!\ 67\e\ 5\e\r\ 2\0\0\0\0\0\0\8eQ%tVMwXNzYN|ZN}[N\7f\N\7f\O\80\O\81]O\81]O\82]O\82]OA=HB=HB=HB>HC>HC>ID?IE?IF@IG@IIAIKBI\8ccP\8fdP\92eP\96gQ\9aiQ\9flR£nR¤\'´d)¿i*Æm+Îs/Ïs/Êo+Én+Ål*¾i*ºg)³c(ª_(ªqS¦oR¡mR\9dkQ\99iQ\95gQ\93fP\91eP\8edP\8dcP\8cbP\8bbP\8abP\8aaP\89aP\89aO\89aO\88aO\88`O\88`O\87`O\87`O\87`O\86`O\86_O\85_O\84^O\83^O\82]O\7f\O}[N\9bQ\17\ 1\0\0D"\ 6?\1f\ 6D"\ 6K%\a_/ kRL\92fPODJSFJ\86_O\8abP\8ecP\91eP\93fQ\96gQ\99iQ\9cjQ\9ekR lR¡mR£nR¤nR¥oR¥oR¥oR¤nR¢mR\9flR\9aiQ\91eP\85_O\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀB+\1d\91eP\7fI#L&\a9\1c\ 50\18\ 4\0\0\0\1c\ e\ 2y<\f\9aP\17xXN{ZN}[N\7f\N\80\O\81]O\82]O\83^O\83^O\84^O\84_O\85_O\85_O\86_O\86`O\87`O\87`O\88`O\89aO\8aaP\8bbP\8cbP\8dcP\8edP\91eP\93fP\95gQ\98hQ\9aiQ\9ekR¢mR¡Z'«_(¶e)½h)Âk*Çn,Çn,Æm*Æl*Áj*ºf)¶e)²c(«_(¦]'§pR¤nR¡mR\9ekR\9bjQ\99iQ\96gQ\94gQ\93fP\91eP\90dP\8fdP\8edP\8ecP\8dcP\8ccP\8cbP\8bbP\8bbP\8bbP\8abP\8aaP\89aP\89aO\89aO\88`O\87`O\86_O\85_O\83^O\81]Oª_(\81@\f\0\0\0B!\ 6I$\aB!\ 6N'\aw=\ f\91eP`LKbNLeOL\9dkR mR£nR¥oR§pSªqS¬rS®sS¯tS°tS°tS±uS±uS°tS¯tS­sSªrS§pS¢mR\9ajQ\8cbPjQL\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\8bbPpTME"\ 65\1a\ 5\0\0\0\0\0\0\0\0\0\87M$tVM{ZN}[N\7f\O\81]O\82^O\83^O\84_O\85_O\86_O\86`O\87`O\88`O\88`O\89aO\89aP\8aaP\8abP\8bbP\8cbP\8dcP\8ecP\8fdP\90dP\92eP\93fP\95gQ\97hQ\99iQ\9bjQ\9dkR lR¢mR¡Z'¬`(µd)ºg)Çg\eÀj*Àj*¾i*¿i*»g)µd)²c(¯a(ª_(¤\'§pR¥oR¢nR mR\9ekR\9cjQ\9aiQ\98iQ\97hQ\95gQ\94gQ\93fP\92eP\91eP\91eP\90dP\8fdP\8fdP\8ecP\8ecP\8dcP\8dcP\8ccP\8cbP\8bbP\8bbP\8abP\8aaP\89aO\88`O\86_O\84^O\7f\N\9cQ\17\0\0\0\b\ 4\0\ 6<\1e\ 6G#\a_LK\8ecPlSMnTMpUMsVM°tS²uT³vTµwT¶wT¶xT¶xT¶wTµwT´vT²uT¯tS¬sSªqS§pS¤oR¢nR\9ekR\98hQ\8bbPeOL\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀwXN\7f\NJ%\a0\18\ 4\0\0\0\0\0\01\18\ 4\8eJ\16vWN}[N\7f\O\81]O\83^O\85_O\86_O\86`O\87`O\88`O\89aO\89aP\8aaP\8abP\8bbP\8cbP\8cbP\8dcP\8ecP\8edP\8fdP\90dP\91eP\92eP\94fQ\95gQ\96gQ\98hQ\99iQ\9bjQ\9dkQ\9flR¡mR\9eY&¦]'­`(³c(·e)Àc\e¸\\12¸\\12¹\\12º]\12»]\13¶^\1a®a(¬`(©^'£['¢['¥oR£nR¡mR lR\9ekR\9ckQ\9bjQ\9aiQ\98iQ\97hQ\96gQ\95gQ\94gQ\94fQ\93fP\92eP\92eP\91eP\91eP\90dP\90dP\8fdP\8fdP\8edP\8ecP\8dcP\8dcP\8cbP\8bbP\8aaP\88aO\86`O\81]O\98O\17\0\0\0\0\0\0G#\a7\e\ 5F#\auWM\83^OwXNxXNzYN{ZN|ZN¹yT¸yT·xT´wT±uT­sS¨pS¡mR\9cjQ\95gQ\8fdP\8cbP\89aP\89aP\8cbP\8ecP\91eP\8dcP|ZN\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À[JK\8abP^/     1\18\ 4\f\ 6\ 10\18\ 41\18\ 4|>\fwXN}[N\81]O\83^O\85_O\87`O\87`O\88aO\89aP\8aaP\8bbP\8bbP\8cbP\8ccP\8dcP\8ecP\8ecP\8fdP\90dP\90dP\91eP\92eP\93fP\94fQ\95gQ\96gQ\97hQ\98hQ\99iQ\9bjQ\9ckQ\9ekR\9flR mR\9eY&¦]'­`(±b(·[\12Çg\1cÉi\1dÉh\1dÅf\eÂd\eÃe\e¿c\e«U\11ª_(§]'£[' Z'¤nR£nR¡mR mR\9flR\9ekR\9dkQ\9cjQ\9ajQ\9aiQ\99iQ\98hQ\97hQ\96gQ\95gQ\95gQ\94fQ\94fQ\93fP\93fP\92eP\92eP\91eP\91eP\90eP\90dP\8fdP\8fdP\8ecP\8dcP\8cbP\8abP\88`O\83^O\89D\r\0\0\0\0\ 3\b\0\ 3\b4\1a\ 5M&\a\8fdPnSM|[N|[O|[OzZOxXNªrS¢nR\98hQ\8ecP\83^OvXNiQL^KKRFJMCJJAIKBISFJ\JKnSMxYN\86_O\80\OaMK\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀB!\ 6qUM\8aaPC!\ 6/\17\ 40\18\ 40\18\ 4a0     uWN}[N\82]O\85_O\86`O\88`O\89aP\8aaP\8bbP\8cbP\8ccP\8dcP\8ecP\8ecP\8fdP\8fdP\90dP\91eP\91eP\92eP\93fP\93fQ\94fQ\95gQ\96gQ\97hQ\98hQ\99iQ\99iQ\9bjQ\9cjQ\9dkR\9elR\9flR\9cX&¢['¨^'¬`(´Z\12Âd\eÄf\1cÈi\1eÆg\1dÂd\e¿c\e¿c\e¼a\1a¸_\1a©T\10¥\'£[' Z'\9fY&£nR¢mR¡mR lR\9flR\9ekR\9dkQ\9cjQ\9bjQ\9ajQ\9aiQ\99iQ\98hQ\97hQ\97hQ\96hQ\96gQ\95gQ\95gQ\94gQ\94fQ\94fQ\93fQ\93fP\92fP\92eP\91eP\91eP\90dP\8fdP\8ecP\8cbP\89aO\83^Ox<\f\0\0\0\ 4\ 2\0\0\0\0:\1d\ 5\8aaP\81]Oj8\12sVMmSMfOL^KKUGJIAIQEJ?<H*1F(\1e\e\15\ e
-
-\b      \b\a\b\a\ 6\b\11
-\ 5@%\10<-$G?@\85pfdNLuWM\7f\NdNL\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀTFJvWN\89aP.\17\ 4/\17\ 40\18\ 41\18\ 4\84E\15}[N\81]O\85_O\88`O\89aP\8bbP\8cbP\8dcP\8dcP\8ecP\8fdP\8fdP\90dP\90eP\91eP\92eP\92eP\93fP\93fQ\94fQ\95gQ\95gQ\96gQ\96hQ\97hQ\98hQ\99iQ\9aiQ\9bjQ\9cjQ\9dkQ\9dkR\9elR\9flR\9eY&¤\'¨^'µ^\1a½b\1aÀc\eÃe\1cÇi Äg\1eÀc\e½b\1a¼a\e¹`\1aµ^\1a´]\1a¯X\14¢[' Z'\9eY&¢mR¡mR¡mR lR\9flR\9flR\9ekR\9dkQ\9ckQ\9cjQ\9bjQ\9ajQ\9aiQ\99iQ\99iQ\98iQ\98hQ\97hQ\97hQ\97hQ\96gQ\96gQ\95gQ\95gQ\95gQ\94fQ\94fQ\93fQ\93fP\92eP\91eP\8fdP\8dcP\89aP\97O\17\0\0\0\0\0\0\0\0\0\0\0\0\87`O\87`OoTMQEJC>IeZY638*\19\ e\ 5\f\17\ 6 B\13\13\13\13\13\ e\e,\ 1\ 5\v\ 1\ 5\v4\1c    .\17\ 4G1!\TU¡\83rsVM{ZN`MK\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À[JKyYN\8cbP/\17\ 40\18\ 4\0\0\0\0\0\0\88N$\81]O\85_O\88`O\8bbP\8cbP\8dcP\8ecP\8fdP\90dP\90dP\91eP\91eP\92eP\92fP\93fP\93fQ\94fQ\94gQ\95gQ\96gQ\96gQ\97hQ\97hQ\98hQ\99iQ\99iQ\9aiQ\9bjQ\9cjQ\9ckQ\9dkR\9ekR\9flR\9cO\12¡Z'¥\'©^'­V\11¼a\1a¾b\eÁe\1dÆi!Ãf\1e¾b\e»a\1a¹`\1a·_\e³]\1a²\\19µZ\12¢[' Z'\9fY&\9cQ\17¡mR¡mR mR lR\9flR\9flR\9ekR\9dkR\9dkQ\9ckQ\9cjQ\9bjQ\9bjQ\9ajQ\9aiQ\9aiQ\99iQ\99iQ\98iQ\98hQ\98hQ\97hQ\97hQ\97hQ\96hQ\96gQ\96gQ\95gQ\95gQ\94fQ\92fP\90dP\8dcP\9aW&\0\0\0\0\0\0\0\0\0\0\0\0\8fdP\8aaPrUM\e\11
-\ 6 B\13\13\13\13\13\13\13\13\13\13\19%7\ 3\10!\ 3\10!C*\19F#\aP)\f{dY\9cze»\8dp\80\OgPL\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀSFJ`LKvWN\8aaPm6
-\f\ 6\ 1\0\0\0X,\buWM\82]O\87`O\8abP\8dcP\8edP\8fdP\90dP\91eP\92eP\92fP\93fP\93fQ\94fQ\94gQ\95gQ\95gQ\96gQ\96gQ\97hQ\97hQ\98hQ\98iQ\99iQ\99iQ\9aiQ\9bjQ\9bjQ\9cjQ\9ckQ\9dkQ\9ekR\9elR\9flR¢Z'¤\'§]'·_\1a¹`\1a¼a\1a½b\eÁe\1eÅi"Áe\1e¼a\eº`\1a·_\e¶_\e²]\1a²\\19±\\19«Y\19¡Z' Z'¡Z'¡mR¡mR mR lR lR\9flR\9flR\9elR\9ekR\9ekR\9dkR\9dkQ\9ckQ\9cjQ\9cjQ\9bjQ\9bjQ\9bjQ\9ajQ\9aiQ\9aiQ\9aiQ\99iQ\99iQ\99iQ\98iQ\98hQ\98hQ\97hQ\96gQ\95gQ\93fQ\90dP\86_Oq8\v\0\0\0\0\0\0\0\0\0\96gQ\88`OuWM\94T%\13\13\13\13\13\13\13\13\13\13\ 6 B\ 6 B\ 3\10!\ 3\10!T,\ ec5\11\83F\16\82T3È\9b\93q\83^OfOL\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀXHK_LKsVM\87`O\8dcP\0\0\0\0\0\0\13        \ 1\92S%\81]O\8abP\8dcP\8fdP\91eP\92eP\93fP\93fQ\94fQ\94gQ\95gQ\95gQ\96gQ\96gQ\97hQ\97hQ\97hQ\98hQ\98iQ\99iQ\99iQ\9aiQ\9aiQ\9bjQ\9bjQ\9cjQ\9cjQ\9dkQ\9dkR\9ekR\9elR\9flR\9flR¥\'¦]'¨^'­V\11º`\1a»a\1a½b\eÁf\1eÄi"Àe\1e»a\e¹`\1a·_\e¶_\e³]\1a±\\19±\\19¤R\10¢Z'¢Z'£['¡mR¡mR¡mR¡mR mR lR lR\9flR\9flR\9flR\9elR\9ekR\9ekR\9dkR\9dkR\9dkQ\9dkQ\9cjQ\9cjQ\9cjQ\9cjQ\9cjQ\9bjQ\9bjQ\9bjQ\9bjQ\9ajQ\9aiQ\99iQ\99iQ\98hQ\96gQ\91eP§S\10q8\v\0\0\0\0\0\0\89aO\95gQ\87`OtVM\9cX&\13\13\13\13\13\13\13\13\13\13\ 6 B\ 6 B\ 6 B\ 2\v\17l@!{A\14\85L$\9bY'½\86a\93fP\88aO]KK\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀODJ[JKaMKqUM\7f\O\8dcP\83^O\0\0\0\0\0\0vE"\82]O\8aaP\8fdP\91eP\93fP\94fQ\95gQ\95gQ\96gQ\96hQ\97hQ\97hQ\98hQ\98hQ\98iQ\99iQ\99iQ\99iQ\9aiQ\9ajQ\9bjQ\9bjQ\9cjQ\9cjQ\9ckQ\9dkQ\9dkR\9ekR\9ekR\9flR\9flR\9flR lR©^'©^'ª_(®W\11»a\1a¼a\1a¾c\1cÂg Äi"¿e\1e»a\e¹`\1a·_\e¶_\1c³^\e±\\1a±\\19¤R\10£['£['§]'¢mR¢mR¡mR¡mR¡mR¡mR mR lR lR lR lR\9flR\9flR\9flR\9flR\9elR\9elR\9ekR\9ekR\9ekR\9ekR\9dkR\9dkR\9dkR\9dkR\9dkQ\9dkQ\9dkQ\9cjQ\9cjQ\9aiQ\98hQ\92eP\9aW&M&\a\0\0\0oTM\9aiQ\91eP\85_OtVMmSMdOL\13\13\13\13\13\13\13\13\13\ 6 B\ 6 B\ 6 B\ 2\v\17\1a\17\19\91J\11 Z'ª_(\9ckQ\99iQ\87`OSFJ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀTFJ\JKcNLlRMzYN\87`O\92ePzZN\0\0\0       \ 4\0\7f\N\88`O\8fdP\93fQ\95gQ\96gQ\97hQ\98hQ\98hQ\99iQ\99iQ\99iQ\9aiQ\9aiQ\9aiQ\9bjQ\9bjQ\9bjQ\9cjQ\9cjQ\9cjQ\9ckQ\9dkQ\9dkR\9ekR\9ekR\9elR\9flR\9flR\9flR lR lR mR®a(­`(¬`(¶[\12½a\1a½b\e¿d\1cÃh!Äi"¿d\1d»a\e¹`\1a¸_\e¶_\eµ^\e²]\1a³]\19¦S\10¤\'§]'«_(¢nR¢mR¢mR¢mR¢mR¢mR¢mR¡mR¡mR¡mR¡mR¡mR mR mR mR mR lR lR lR lR lR lR lR lR lR\9flR\9flR lR\9flR\9ekR\9ckQ\99iQ\90ePt:\v\0\0\0\0\0\0\9dkQ\98hQ\8dcP\80]OtVMlSMa2\r\13\13\13\13\13\13\13\13\13\ 6 B\ 6 B
-\ f\18\12\13\18$\1c\1a\ f¬`(¶e)£nR\9cjQ\83^OJAI\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀXIK^KKdNLhPLuWM\82]O\8cbP\94fQ\90eP\r\ 6\ 1m6
-\86`O\8ecP\93fQ\97hQ\98hQ\99iQ\9aiQ\9ajQ\9bjQ\9bjQ\9bjQ\9cjQ\9cjQ\9cjQ\9ckQ\9dkQ\9dkQ\9dkR\9ekR\9ekR\9ekR\9elR\9flR\9flR\9flR lR lR lR¡mR¡mR¡mR¡mRºg)³c(²c(±b(­V\11¿c\eÂe\1dÅi!Åi!Àd\1d¼b\eº`\1a¹`\1a·_\e·_\e¶^\1a¢Q\10§]'ª_(­`(¹f)£nR£nR£nR£nR£nR£nR£nR¢nR¢nR¢nR¢nR¢nR¢nR¢mR¢mR¢mR¢mR¢mR¢mR¢mR¢mR¢mR¢nR¢mR¢mR£nR¢mR¢mR¡mR mR\9dkR\97hQ\88G\15a0   \8abP mR\9cjQ\93fQ\89aP}[NrUMmSM\85L$\13\13\13\13\13\13\13\13\ 6 B\ 6 B\r#C\12\13\18\18\16\19\e8&\1cH.\1fZ7 §pR\9bjQ{ZN\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀQEJ[JK`LKdNLhQLqUM{ZN\85_O\8ecP\96gQ\97hQ\0\0\0\18\ f
-\8bbP\91eP\96hQ\9aiQ\9bjQ\9cjQ\9dkQ\9dkQ\9dkR\9ekR\9ekR\9elR\9elR\9flR\9flR\9flR\9flR\9flR lR lR lR mR¡mR¡mR¡mR¡mR¡mR¢mR¢mR¢mR¢nR£nRÀj*ºg)·e)¶d)Âd\e°X\11Åg\1dÅh\1fÂe\1c¿c\e½b\1a½b\e¾b\eªU\11­`(®a(¯a(³c(¾i*¤oR¤oR¤nR¤nR¤nR¤nR¤nR¤nR¤nR¤nR¤nR¤nR¤nR¤nR¤nR¤nR¤nR¤oR¤oR¥oR¥oR¥oR¥oR¥oR¥oR¦oR¦oR¥oR¥oR¤nR¡mR\9bjQ\8eQ%Z- \9cjQ£nR\9flR\97hQ\8edP\85_OuWMpTMnSMkRLa: \13\13\13\13\13\13\13\ 6 B\ 6 B\13&D\e\17\19\1e\19\1a2\1c\r@*\1dS6#G@IPDJ\98hQmSM\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀVGJ]KKbMLeOLiQLlRMvWN\7f\O\88aO\91eP\97hQ\9cjQ\95gQ\a\ 3\0oTM\95gQ\99iQ\9dkQ\9flR\9flR lR mR¡mR¡mR¡mR¡mR¡mR¡mR¡mR¢mR¢mR¢mR¢mR¢mR¢mR¢nR£nR£nR£nR£nR£nR¤nR¤nR¤nR¤nR¤nR¤nRÆl*Ãl+¾j+¹g)¸f)¶e)µd)¶e)¶e)·e)·e)¸f)¾i*Ìs0Ðs.¦oR¦oR¦oR¦oR¦oR¦oR¦oR¦oR¦oR¦oR¦oR¦oR¦oR¦oR¦oR¦oR¦pR§pR§pR§pR§pR§pS§pS¨pS¨qS©qS©qS©qS¨pS©qS§pS¤nR\9flR\91I\11\98hQ§pR¥oR¡mR\9aiQ\92eP\8aaP\80\OsVMpTMnTMlRM\96X)\13\13\13\13\13\13\13\ 6 B\11%C\1a)D\1d\18\19$\1c\1a;\1d\ 5J/\1f[8"LBITGJYIKWHK\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀNCJYIK_LKcNLgPLjQLlRMpUMzYN\83^O\8bbP\91eP\98hQ\9dkQ\9flR\94fQ- \e\97hQ\9bjQ\9flR¢mR£nR£nR£nR¤nR¤nR¤nR¤nR¤nR¤nR¤nR¤oR¤oR¥oR¥oR¥oR¥oR¥oR¥oR¥oR¥oR¥oR¥oR¥oR¦oR¦oR¦oR¦oR¦oR¦pR¦pR§pRàp\16ßy-Ûw-Ûw-Þy.â{-ãu\1e§pS§pS§pS§pS§pS¨pS¨pS¨pS¨pS¨pS¨pS¨pS¨pS¨pS¨pS¨qS©qS©qS©qS©qS©qS©qS©qSªqSªrS«rS«rS¬rS¬rS¬rS¬rS¬sS«rSªqS¦oR\9aiQ\99iQ©qSªqS§pR¡mR\9cjQ\95gQ\8dcP\84_O{ZNtVMpUMoTMmSMjQL_9 \13\13\13\13\13\ 6 B\v"C\17(D\e\17\19#\e\1a*\1f\eA$\ e[<)d<!QEJWHKXHKD>I\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀSFJ[JKaMKeOLhPLkRLmSMoTMuWM}[N\85_O\8bbP\92eP\98hQ\9ekR¢mR£nR\9ekR!-E\9dkR¡mR¤nR¥oR¦pR§pR§pS§pS§pS§pS§pS§pS§pS§pR§pS§pS§pS§pS¨pS¨pS¨pS¨pS¨pS¨pS¨pS¨pS¨pS¨pS¨pS¨pS¨pS¨pS¨qS¨qS¨qS©qS©qS©qS©qS©qS©qS©qS©qS©qS©qS©qSªqSªqSªqSªqSªrS«rS«rS«rS«rS«rS«rS¬rS¬rS¬rS¬sS­sS®sS®sS¯tS¯tS¯tS¯tS°tS°uS°tS®sS«rS£nR¦oR®sS­sS«rS§pR¢mR\9cjQ\96gQ\8fdP\88aO\7f\OyYNuWMqUMoTMnSMkRLo8\r\13\13\13\13\13\ 6 B\15'D\1e+E$\1c\1a(\1e\e1\e\vJ/\1ejH1NCJUGJYIKUGJ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀXHK]KKbNLfOLiQLkRMmSMoTMqUMxXN\7f\N\86_O\8cbP\92fP\98hQ\9dkQ¡mR¥oR§pS¦pR\98hQ¢mR¥oR¨pSªqS«rS«rS«rS«rS«rS«rS«rS«rS«rS«rS«rSªrSªrSªrS«rS«rS«rS«rS«rS«rS«rS«rS«rS«rS«rS«rS«rS«rS«rS«rS¬rS¬rS¬rS¬rS¬rS¬rS¬rS¬sS¬sS­sS­sS­sS­sS­sS­sS®sS®sS®sS®sS®tS¯tS°tS°uS±uS±uT±uT²uT²uT²uT´vTµwT´vT³vT²uT¯tS¢mR¯tS±uT±uS®tS«rS§pR¢mR\9dkQ\97hQ\91eP\8aaP\83^O\7f\N{ZNvXNqUMpTMnSMlRM\8dP%\13\13\13\13\ 6 B\ e#C\e*E$.E- \e.!\eG$\aY:%d<"SFJYIKZIKNCJ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀPDJZIK_LKdNLgPLjQLlRMnSMpTMqUMuWMyYN\80\O\86`O\8dcP\92fP\97hQ\9cjQ¡mR¥oR¨qS«rS«rSªrS mR\ 2\ 1\0«rS­sS¯tS°tS°tS°tS¯tS¯tS¯tS¯tS¯tS¯tS¯tS¯tS¯tS¯tS®tS®sS®sS®sS®sS®sS®sS®sS®sS®sS®tS®tS®tS¯tS¯tS¯tS¯tS¯tS¯tS¯tS¯tS¯tS¯tS°tS°tS°tS±uS±uS±uT²uT²vT³vT³vT´vT´vT´wTµwTµwTµwT·xT·xT¸xT¸yT¸yU·xU¥\'©qS³vTµwTµwT´vT±uT®tTªrS¦oR¡mR\9dkQ\98hQ\92eP\8bbP\87`O\83^O\80\O|ZNxXNtVMpTMoTMmSMjQLh7\12\13\13\13\ 6 B\18(D"-E*1F, \e4#\1cK)\ fpL5PEJWHK[JKXHK:9H\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀUGJ\JKaMLeOLhPLkRLmSMoTMpUMrVMvWNyYN|ZN\81]O\87`O\8ccP\91eP\97hQ\9bjQ lR¤nR§pSªqS­sS¯tS°uS¯tS­sS mR^/   ²vT³vT´vT´wTµwT´wT´vT³vT´vT´vT´vT³vT³vT³vT³vT³vT³vT³vT³vT³vT³vT³vT³vT³vT³vT³vT³vT³vT´vT´vT´vT´vT´wTµwTµwTµwTµwT¶wT¶wT¶xT·xT·xT·xT¸xT¸xT¸xT¹yTºyT»zU¼zU½{U½{V½|V\95gQ¬rSµwT¸xT¹yU¹yU¹zV·yVµxV±vU­tT©qS¥oS mR\9cjQ\97hQ\92eP\8dcP\8abP\87`O\84_O\81]O}[NyYNuWMpUMoTMmSMkRL}H#\13\13\ 2\v\17\12&D -E(1F/!\e2#\1c8\1d     W7"iA&UGJ[JK\JKREJ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀMCIXIK^KKcNLfOLiQLkRMmSMoTMqUMsVMwXNzYN}[N\80\O\83^O\87`O\8cbP\91eP\96gQ\9ajQ\9ekR¢mR¥oR©qS¬rS¯tS±uS³vT´vTµwT´wT²uT­sS lR«_(¹yT¹yTºyTºyTºyTºyTºyT¹yT¹yT¸yT¸xT¸xT¸xT¸xT¸xT¸xT¸yT¸yT¸yT¸yT¹yT¹yT¹yT¹yT¹yT¹yT¹yTºyTºyTºyTºyTºzT»zT¼zU¼{U½{U¾{U¾|U¿|UÀ}VÁ~VÂ\7f\80Y\99iQ«rSµwT¹yT¼zU½|V¿}XÁ\80\81\81\80]»~[¶zY±wW¬tU¨qS¤nS\9flR\9bjQ\96gQ\93fP\90eP\8ecP\8bbP\88`O\85_O\82]O~\NzZNvXNqUMoTMnSMlRMiQLg=!\13
-!C\1d+E'0F.4F7%\1c8%\1cU/\12lG.SFJZIK]KKZIKB=H\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀREJZJK`LKdNLgPLjQLlRMnSMpTMqUMtWMxXN{ZN~[N\81]O\84^O\86`O\89aO\8bbP\90dP\95gQ\99iQ\9ckQ lR¤nR§pSªrS­sS¯tT²uT´vT¶wT·xT¹yT¹yTºyTºyT¹yT¶xT´vT¬rS¢nR\97hQ¿|U¿|UÀ|UÀ|UÀ|UÀ|UÀ|UÀ|UÀ|UÀ|UÀ|UÀ|UÀ|UÀ|UÀ}UÀ}UÁ}UÁ}UÁ}UÁ}UÂ}UÂ~UÃ~UÃ~VÃ~VÄ\7f\80\81X®a(\9flRªrS´vT¸yT¼zU¾|UÁ~VÃ\7f\82\86\8b\91\93\93\91\8c\86\81_¶{[°vWªsU¦pS¢nR\9ekR\9aiQ\98hQ\95gQ\93fQ\91eP\8fdP\8cbP\89aO\86_O\83^O\80\O|ZNxXNsVMpTMnTMmSMjQL\80C\15\ 6 B\19)D&/F-3F47G6%\1c>"\fY7 kA$YIK]KK^KKSFJ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀVGJ\KKbMLeOLhPLkRLmSMnTMpTMrUMuWNyYN|ZN\7f\N\82]O\84_O\87`O\8aaP\8cbP\8ecP\90eP\93fP\97hQ\9bjQ\9elR¢nR¥oS©qT¬sT¯uU²vU´wV¶xV¸yV¹yUºzU»zU¼{U½{U¾{U¾|U¿|U¿|U¿|U¿|U¾{U½{U¼{U¼zU»zTºyT¹yT¸xTµwT³vT´vT´vT´vT´wT´wTµwT·xT¹yTºzT¼zU½{U¾{U¿|UÀ|UÂ}UÄ\7f\80\82\84\88\8c\94\9duç£|ì©\82ï¬\85î­\87ëª\85æ¦\81Þ\9f\97\8e\86\7f^³yZ­uW¨qU¤oS\9flR\9ekR\9cjQ\9aiQ\98hQ\96gQ\94fQ\91eP\8fdP\8dcP\8aaP\87`O\84^O\81]O}[NyYNuWMpTMoTMmSMkRLgPL\13&D#.E,3F46G;'\1c<(\1dD"\aiB(VGJ]KK`LK[JKB>H\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀNCJYIK^LKcNLfOLiQLkRMmSMoTMqUMsVMvXNzYN}[N\80\O\82^O\85_O\88`O\8aaP\8ccP\8fdP\91eP\93fQ\95gQ\97hQ\99iQ\9dkR mS¤oT¨rU¬tW°wY´zZ¸}\»\7f\80\81\82\82\81\80\7f\7fXÁ~WÁ~WÂ~VÂ~VÂ~VÃ~VÃ~UÃ~UÄ~UÄ~UÄ\7f\7f\7f\7f\7f\7f\7f\80\80\80\81\82\83\85\87\8a\8d\92\97\9dtè£zî©\81ó¯\87ø´\8dû¸\91üº\93û¹\93÷¶\90ñ±\8cé©\85à¡~Ö\98\8f\87\80`´z[®vX©rU¥pT£oS¢nS lR\9ekR\9ckR\9ajQ\98iQ\96hQ\94fQ\92eP\90dP\8dcP\8bbP\88`O\85_O\82]O~[NzYNvWNpTMoTMnSMkRMhQLo7\v,2F36G99HC+\1d\ 6]8 nA"\JK`ML_LKSFJ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀSFJ[JK`LKdNLgPLjQLlRMnSMpTMqUMtVMwXNzZN}[N\80]O\83^O\86_O\88aO\8bbP\8dcP\8fdP\91eP\93fQ\95gQ\97hQ\99iQ\9bjR\9elR mS£oU§rW¬vZ²{]¹\80a¿\85\8a\8f\93\95\96\96\96\94\92\8f\8d\8a\88\86\84\82\81\80\80\7f\7f\7f\7f\7f\80\80\81\82\83\85\87\8a\8d\91\95\99\9dvä¡zç¤}ê§\80ë©\83ëª\84é¨\83å¥\80ß |Ù\9b\95\8f\89h¿\84c¸~^²yZ®vX¬tWªsV¨qU¦pT¤oS¢nS mR\9elR\9ckR\9bjQ\99iQ\97hQ\95gQ\93fP\90eP\8ecP\8bbP\88aO\85_O\82^O\7f\N{ZNwXNsVMoTMnSMlRMiQL~I#26G99G?<HA*\1dE$  i@$ZIKaMLbML[JK;:H\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀWHJ]KKbMLeOLhPLjRLlSMnTMpTMrUMuWMxXN{ZN~\N\81]O\84^O\86`O\89aO\8bbP\8ecP\90dP\92eP\94fQ\96gQ\98hQ\9aiQ\9ckR\9elS mT£oU¦rWªuZ¯y]´~aº\83\8a\92\9azÜ¡\80ã§\86è«\89ë®\8bí¯\8cí®\8bë¬\88è¨\84ã£~ß\9e\99\95\90\8c\88\85\83\81\80\7f\7fWÂ~WÂ~WÂ~WÃ\7f\80\80\81\83\85\86\88\8a\8b\8d\8e\8e\8e\8e\8c\89\86d¿\83\7f^¸}]¶|\´{[²yZ°xY®vX¬tWªsV¨qU¦pT¤oS¢nS mR\9elR\9dkR\9bjQ\99iQ\97hQ\95gQ\93fP\91eP\8edP\8cbP\89aO\86_O\83^O\80\O|ZNxXNtVMpTMnSMmSMjQLgPL99G?<HG-\1eE&\ eb;!YIK`MLdOM`LKNCJ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\9flRºyTÄ~UÊ\82\83\7fXº{W­tU\9aW'¢[(\97hQ lR\8dcP\80\OhQL\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀNCJYIK^LKcNLfOLiQLkRLmSMoTMqUMrVMvWNyYN|ZN\7f\N\82]O\84_O\87`O\89aP\8cbP\8ecP\90dP\92fP\94gQ\96hQ\98iQ\9ajR\9ckR\9elS¡nT¤pU§sW«vZ°z]µ\7f\84\8a\91\98\9e\7fÞ¤\85ã©\8aè­\8dì±\90ï³\91ï³\91î±\8eë­\8aç©\85â£\80Ý\9e\98\93\8d\89\85\82\80[¿~Y¾}X½|W½|V¼{V¼{V¼{V¼{V¼{V¼|W¼|W½}X½}Y½~Z½~Z¼~Z»}[º}[º}[º~\º~\º~]º~]¹~]¸~]·}]¶|\´z[²yZ°wY®vX¬tWªsV¨rU¦pT¤oS¢nS mR\9flR\9dkR\9bjQ\9aiQ\98hQ\96gQ\93fQ\91eP\8fdP\8ccP\8aaP\87`O\84^O\81]O}[NyYNuWNpTMnTMmSMkRLhPL|H$D>IQ2\1fP+\10XHK_LLfQOcNLXIK\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À©qSºyTÃ~VÎ\88`ï«\83Þ\9c\80]ªqS\96L\11\8eG\ e|>\fg3
-S)\b?\1f\ 6*\15\ 4%\12\ 3.\17\ 4\97hQ\97hQ\91eP\87`OuWM\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀSFJ[JK`LKdNLgPLjQLlRMnSMoTMqUMsVMwXNzYN}[N\80\O\82^O\85_O\87`O\8aaP\8cbP\8edP\91eP\93fP\95gQ\97hQ\98iQ\9ajR\9ckR\9flS¡nT¤pV§sX«vZ°z^¶\7f\85\8b\92\98\9f\80Þ¤\85ã©\8aè­\8dê¯\8fë°\8fê¯\8eè¬\8bå¨\87à¤\82Û\9e\99\93\8e\89\85\82\7f\»}Zº{X¹zW¸yV·yU·xU·xU·xT·xT·xU·xU·xU·yV·yV·yW¸zW¸{X¹{Y¹|Zº}[º}[º}\º~\¹~]¹~]¸}]·|\µ{\´z[²yZ°wY®vX¬tWªsV¨rU¦pT¤oS¢nS¡mR\9flR\9dkR\9cjQ\9aiQ\98hQ\96gQ\94fQ\92eP\8fdP\8dcP\8abP\87`O\85_O\82]O~[NzZNvWNrUMoTMmSMlRMiQLeOLJAIJ(\ fh>!]KKfQOgQN_LKD>I\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\99iQ°tS¸yT¼{UÂ\7f\8ceï­\88ô´\90Õ\97u¶|\ Z'\99L\ f\88D\r|>\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\92eP¦oR¨qS¦oR¡mR\9ajQ\91eP\84^OhPL\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀWHJ\KKaMLeOLhPLjQLlRMnSMpTMqUMtVMwXNzZN}[N\80]O\83^O\86_O\88`O\8abP\8dcP\8fdP\91eP\93fQ\95gQ\97hQ\99iQ\9bjR\9dkR\9fmS¢nT¤qV¨sX¬w[±{_¶\80\86\8c\92\99\9f\80Þ¥\85ã©\89ç­\8dê¯\8eê¯\8eê®\8dç«\8aä§\86ߣ\81Û\9e\98\93\8e\89\85\82\7f\»}Yº{X¸zW¸yV·xU·xU·xT¶xT¶xT¶xU¶xU·xU·xU·yV·yV·zW¸zX¸{Y¹|Y¹|Z¹}[¹}[¹}\¹}\¸}\·}\¶|\µ{[³zZ²yZ°wY®vX¬tWªsV¨rU¦pT¤oS£nS¡mR\9flR\9ekR\9cjQ\9aiQ\98hQ\96gQ\94fQ\92eP\90dP\8ecP\8bbP\88`O\85_O\82^O\7f\N{ZNwXNsVMoTMnSMlRMiQLfOLJ(\ fV.\10]KKePNkUQcNLQEJ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\82]O¡mR©qS¬rS°tS³vTµwT·xUº{WÄ\86\93\9a\8fo\12
-\ 4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\8fK\16«rS´vT¶wT´vT²uT®sSªqS¤nR\9dkQ\95gQ\88`OuWNY,\b\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀNCJYIK^KKbNLfOLhQLkRLmSMoTMpUMrUMuWMxXN{ZN~[N\81]O\84^O\86_O\89aO\8bbP\8dcP\8fdP\91eP\93fQ\95gQ\97hQ\99iQ\9bjR\9dkR\9fmS¢oT¥qV¨tX­w[±|_·\81\86\8c\93\99\9f\80Þ¥\85ã©\89ç¬\8cé®\8eê®\8eé­\8cæª\89ã§\85ߢ\80Ú\9d\97\92\8d\88\85b¿\81\7f\»|Y¹{X¸zV·yV·xU·xU¶xT¶xT¶xT¶xU¶xU¶xU¶xU·yV·yV·yW¸zW¸{X¸{Y¸|Z¹|Z¹|[¹}[¸}\¸}\·|\¶|[µ{[³zZ±xY°wX®vX¬tWªsV¨rU¦pT¥oS£nS¡mR\9flR\9ekR\9cjQ\9ajQ\98iQ\97hQ\94gQ\92fP\90dP\8ecP\8bbP\89aO\86_O\83^O\80\O|ZNxXNtVMoTMnSMlRMjQLgPLzG#\JKcOMoXUgPMZIK\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\92fP\94gQ\95gQ\97hQ\99iQ\9dkQ lR¤nR§pRªqS¬sS¯tS\0\0\0\0\0\0:"\10r<\10zYN­sS¹yT¾|UÁ~WÆ\84\8a\8b\88\82aµz[­tV¦pS¢mR\9dkQ\96gQ\8abPzYNkRL\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀRFJZJK`LKcNLfPLiQLkRMmSMoTMqUMrVMvWNyYN|ZN\7f\N\81]O\84^O\87`O\89aO\8bbP\8dcP\90dP\92eP\94fQ\96gQ\97hQ\99iQ\9bjR\9dlR mS¢oU¥qV©tY­x\²|`¸\81\87\8d\93\99\9f\80Þ¥\85ã©\89ç¬\8cé®\8dé®\8dè¬\8bå©\88â¦\84Þ¡\7fÙ\9c\97\91\8c\88\84a¿\81^½~[»|Y¹{X¸zV·yV·xU¶xU¶xT¶xT¶xT¶xT¶xU¶xU¶xU¶xV·yV·yW·zW·zX¸{Y¸{Y¸|Z¸|Z¸|[¸|[·|[·|[¶{[´z[³yZ±xY°wX®vW¬tWªsV¨rU¦pT¥oS£nS¡mR\9flR\9ekR\9ckR\9ajQ\99iQ\97hQ\95gQ\93fP\91eP\8edP\8cbP\89aP\86`O\83^O\80]O}[NyYNuWNqUMnSMlSMkRLhPLcNLbNLpYVlUP`LK>;H\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\9bjQ\87`O{ZN©^'¨^'­`(·e)½h)Ãk*Êo+±b(£nRºyTÃ~UÇ\81\8d\9fwò°\89ñ°\8bè©\85Ý\9f\98\8d\84eµ}_®x[°y\®x[«tW§qT¡mR\9cjQ\96gQ\8bbP}[NlRM\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀVGJ\JKaMKdNLgPLjQLlRMnSMpTMqUMsVMvXNzYN|[N\7f\O\82]O\85_O\87`O\89aP\8cbP\8ecP\90dP\92eP\94fQ\96gQ\98hQ\9aiQ\9cjR\9elS mS£oU¦rW©uY®x\³|`¸\81\87\8d\93\9a{Ù \80Þ¥\85ã©\89æ¬\8bè­\8dè­\8cç«\8aå©\87á¥\83Ý ~Ø\9b\96\91\8c\88\84a¿\81^¼~[º|Y¹{W¸zV·yV·xU¶xU¶xT¶xT¶xT¶xT¶xU¶xU¶xU¶xU¶xV·yV·yW·zX·zX¸{Y¸{Z¸{Z·|Z·|[·|[¶{[µ{[´zZ³yZ±xY¯wX®uW¬tVªsV¨rU¦pT¥oS£nS¡mR lR\9ekR\9ckR\9bjQ\99iQ\97hQ\95gQ\93fQ\91eP\8fdP\8ccP\8aaP\87`O\84^O\81]O~[NzYNvWNrUMnSMmSMkRLiQLeOLoXUu]XdOLKBI\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À:9H\7f\N\96hQ¸}\¯uU­sT¯tT¯tS¨qS¤nR£nR¢nR\9flR\9bjQ\9aiQ\98hQ\97hQ\96gQ\94fQ\92eP\91eP\97hQ\9ckR mS¥pUªtX«uY¨sW¦qU mS\9bjQ\95gQ\83B\ f\92S%jQL\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀLBIXHK^KKbMLeOLhPLjRLlSMnSMpTMqUMtVMwXNzYN}[N\80\O\82^O\85_O\87`O\8aaP\8cbP\8ecP\90eP\92fP\94fQ\96gQ\98hQ\9aiR\9ckR\9elS nT£pU¦rWªuY®y]³}`¹\82e¿\88\8e\94\9a{Ù \81Þ¤\85â¨\89æ«\8bç¬\8cç¬\8bæ«\8aä¨\86à¤\82Ü\9f\9a\95\90\8c\87\84\80^¼~[º|Y¹{W¸yV·yV·xU¶xU¶xT¶wT¶wT¶wT¶xT¶xU¶xU¶xU¶xV¶yV¶yW·zW·zX·zY·{Y·{Z·{Z·{Z¶{Z¶{ZµzZ³yZ²yY±xY¯vX­uW¬tVªsU¨rU¦pT¥oS£nS¡mR lR\9elR\9dkR\9bjQ\99iQ\97hQ\95gQ\93fQ\91eP\8fdP\8dcP\8aaP\87`O\85_O\82]O\7f\N{ZNwXNsVMnSMmSMkRMiQLfOL_LKhQMUGJ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À (6BFP>=DKHMqjk\80trwf`~kc\84nd\8aqe\8dse\90te¯\8e{\9dw`¡v[\7f\N\86_O\8dcP\93fP\98iQ\9cjR\9flS£oT¦qV¥qV£oT\9elR\99iQº^\15\87`O\8fQ%hPL\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀQEJZIK_LKcNLfOLiQLkRLmSMoTMpUMrUMuWMxXN{ZN~[N\80]O\83^O\85_O\88`O\8aaP\8ccP\8edP\91eP\93fP\94gQ\96hQ\98iQ\9ajR\9ckR\9elS¡nT£pU¦rWªuZ®y]³}a¹\82e¿\88\8e\94\9a\9f\80Þ¤\85â¨\88åª\8aæ«\8bæ«\8aå©\88â¦\85ߣ\81Û\9e\9a\95\90\8b\87\83\80]¼~[º|Y¹zW¸yV·yU¶xU¶xU¶wT¶wT¶wT¶wT¶wT¶xU¶xU¶xU¶xU¶xV¶yV¶yW¶zX·zX·zY¶zY¶{Y¶{Z¶{ZµzZ´zZ³yY²xY°wX¯vX­uW«tVªsU¨rU¦pT¥oS£nS¡mS mR\9elR\9dkR\9bjQ\99iQ\98hQ\96gQ\94fQ\91eP\8fdP\8dcP\8bbP\88`O\85_O\82]O\7f\O|ZNxXNtVMoTMmSMlRMjQLgPLbML[JK\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\10\b\ 1\1a%5 (6\1f$/79CEEKjgkrc_\9b\85{\91uf±\8f{\9fw_º\8dq\81]O\88`O\8ecP\94fQ\98hQ\9bjR\9elR¡nT¢oT¡nT\9dkR\98hQ\8edP¦]'\8eQ%\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀUGJ[JK`MKdNLgPLiQLkRMmSMoTMqUMrUMuWNxXN{ZN~[N\81]O\83^O\86_O\88`O\8abP\8dcP\8fdP£['µd)\95gQ\97hQ\98iQ\9ajR\9ckR\9elS¡nT£pU§rWªvZ¯y]´~aº\83\88\8e\94\9a\9f\80ݤ\84á§\87ä©\89åª\8aåª\89ä¨\87á¥\84Þ¡\80Ú\9d\98\94\8f\8a\86\83\80]»}[º|Y¸zW·yV·xU¶xU¶xU¶wTµwTµwTµwTµwTµwUµwUµxUµxUµxV¶xV¶yW¶yW¶yX¶zX¶zY¶zYµzYµzY´zY´yY²yY±xY°wX®vW­uW«tVªsU¨qU¦pT¥oS£nS¢mS mR\9elR\9dkR\9bjQ\99iQ\98hQ\96gQ\94fQ\92eP\90dP\8dcP\8bbP\88aO\86_O\83^O\80\O|[NxYNtWMpUMmSMlRMjQLgPLcNLA;=\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À#*6+.8;:AHEJmgjd\]\87pe«\8d}\9cxc w^»\8dp\83^O\8aaP\91eP\96gQ\9aiQ\9elR mS¢nT mS\9bjR\95gQ»h*\9cX&\88M$\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀC+\1dWHJ]KKaMLdOLgPLjQLlRMnSMoTMqUMrVMvWNyYN|ZN\7f\N\81]O\84^O\86_O\88aO\8bbP\8dcP\9eY&«_(³c(\95gQ\97hQ\99iQ\9ajR\9ckR\9flS¡nT¤pV§sX«vZ¯z^´~bº\83\89\8e\94\9a\9f\80Ý£\84à¦\87ã©\89ä©\89ä©\88â§\86à¤\83Ü \7fØ\9c\97\93\8e\89\86\82\7f]»}Z¹{Y¸zW·yV¶xU¶xU¶wUµwTµwTµwTµwTµwTµwTµwUµwUµxUµxVµxVµxVµyWµyWµyXµyXµyYµzY´yY´yY³yY²xY±wX°wX®vW­uV«tVªrU¨qU¦pT¥oS£nS¢mS mR\9elR\9dkR\9bjQ\99iQ\98hQ\96gQ\94fQ\92eP\90dP\8ecP\8bbP\89aO\86_O\83^O\80\O}[NyYNuWNqUMmSMlRMjQLhPLdNL\1\ f\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À+.775;ICFphh\8azt\8are¯\8f}\9fya¢vZ\81]O\8aaP\91eP\96gQ\9aiQ\9dkR\9flS¡nT\9elS\99iQÌq.¯b*\93S%zG#\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀMCJXHK^KKbMLeOLhPLjRLlSMnSMpTMqUMsVMvWNyYN|ZN\7f\N\82]O\84^O\86`O\89aO\8bbP\97U&¥\'¯a(»g)Ìr/\97hQ\99iQ\9bjR\9dkR\9fmS¡nT¤pV§sX«v[¯z^´~bº\83\89\8e\94\99\9e\7fÜ£\83à¦\86â¨\88ã¨\88ã¨\87á¦\85Þ£\82Û\9f\9b\96\92\8d\89\85c¿\82\7f]»}Z¹{X¸zW·yV¶xU¶xUµwTµwTµwTµwTµwTµwTµwTµwUµwUµwUµxUµxVµxVµxWµyWµyWµyXµyX´yX´yY³yY³xX²xX°wX¯vW®uW¬tV«sV©rU¨qT¦pT¥oS£nS¡mR mR\9elR\9dkR\9bjQ\9aiQ\98hQ\96gQ\94fQ\92eP\90dP\8ecP\8cbP\89aO\86`O\83^O\80]O}[NzYNvWNrUMmSMlRMjQLhQLeOL_LK\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À,)/ZTVXON\84uq\87od®\8f}\9fyb»\8fs\81]O\8aaP\90eP\95gQ\9aiQ\9dkR\9elR\9flS\9ckR\96hQ»g*¤\(\8eQ%`LK\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ 6 B\ 6 B_LKcNLfOLiQLkRLmSMoTMpTMrUMtVMwXNzYN}[N\7f\O\82]O\84_O\87`O\89aO\8fQ%\9fY&©^'±b(¾i*Õ{8\97hQ\99iQ\9bjR\9dkR\9fmS¡nT¤qV§sX«v[°z^µ~bº\83\89\8e\94\99\9e\7fÛ¢\83ߥ\85á§\87â§\87á¦\86à¤\84Ý¢\81Ú\9e\9a\95\91\8c\88\85b¿\81\7f\º}Z¹{X·zW·yV¶xU¶xUµwTµwTµwTµwTµwTµwTµwTµwT´wU´wU´wU´xVµxVµxVµxW´xW´yW´yX´yX³xX³xX²xX±wX°wW¯vW­uW¬tV«sU©rU§qT¦pT¤oS£nS¡mR mR\9elR\9dkR\9bjQ\9aiQ\98hQ\96gQ\94gQ\92fP\90dP\8ecP\8cbP\89aP\87`O\84^O\81]O~[N{ZNvXNrVMnSMlRMjRLhQLeOLaML+O\81+O\81\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀHFLXQRTJH~pm\82la¬\8e}\9fzc»\90t¤tT\89aP\90dP\95gQ\9aiQ\9cjR\9elR\9elS\9bjRÖ|:´e*\98V&\88N$\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ 6 B\ 6 B`LKdNLgPLiQLkRMmSMoTMpUMrUMtVMwXNzYN}[N\80\O\82]O\85_O\87`O\89aP\9aW&£['«_(´d)Âl,Ý\83@Òt.\99iQ\9bjR\9dkR\9fmS¡oU¤qV¨sX«w[°z^µ\7f\83\89\8e\94\99\9d~Ú¡\82Þ¤\84à¥\86à¦\86à¥\85Þ£\82Ü \7fØ\9d\99\94\90\8c\88\84\81_¼~\º|Z¸{X·yW¶yV¶xUµwUµwTµwTµwTµwT´wT´wT´wT´wT´wU´wU´wU´wU´wV´xV´xV´xW´xW³xW³xW³xX²xX±wX°wW¯vW®uW­uV¬tVªsU©rU§qT¦pT¤oS£nS¡mR lR\9elR\9dkR\9bjQ\9aiQ\98hQ\96hQ\94gQ\92fP\90dP\8ecP\8cbP\8aaP\87`O\84^O\81]O~[N{ZNwXNsVMoTMlRMjRLiQLfOLbML+O\81+O\82+O\82+O\82\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À6./fZXeVRHAIZIKiQLuWM¤tU\89aO\90dP\96gQ\9ajQ\9dkR\9elR\9dkR\98iQÄn/¬b,\91R%rC"\13\13\13\13\13\13\13\13\13\13\13\13\À"Fx"Fx!Fx!Fx\ 6 B\ 6 B\ 6 BdNLgPLjQLlRMmSMoTMqUMrUMtWMwXNzZN}[N\80\O\82^O\85_O\87`O\93S%\9dX&¥\'®a(·g+Ês2Ó{9Àj*\99iQ\9bjR\9dkS\9fmS¢oU¤qV¨sX«w[°z^µ\7f\84\89\8e\93\98\9c}Ù \81Ü¢\83Þ¤\84ߤ\84Þ£\83Ý¡\81Ú\9f\9b\97\93\8f\8b\87\83\80^»~\¹|Z¸zX·yW¶xVµxUµwUµwTµwT´wT´wT´wT´wT´wT´wT´wT´wU´wU´wU´wU´wV³wV³xV³xW³xW²wW²wW±wW±wW°vW¯vW®uV¬tV«sUªsU¨rT§qT¦pT¤oS£nS¡mR lR\9elR\9dkR\9bjQ\9aiQ\98hQ\96gQ\94gQ\92fP\90eP\8ecP\8cbP\8aaP\87`O\84_O\81]O~\N{ZNxXNsVMoTMlRMjRLiQLfPLbNL\ 5     \ f+O\82+O\82+P\82+P\82+P\82\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À@89dWT@<HE?IXHKiQLvWN\82]O\8bbP\92eP\98hQ\9cjQ\9elR\9elR\9ckRÍp+·f* [)\8aO$\13\13\13\13\13\13\13\13\À:^\90:^\90:^\90:^\90"Fx"Fx"Fx\ 6 B\ 6 B\ 6 B\ 6 BeOLhPLjQLlRMnSMoTMqUMrUMuWMxXN{ZN~[N\80\O\83^O\85_O\8bO$\98V& Z'§]'²d+ºg+Õ}<¼h*\97hQ\99iQ\9bjR\9dkS\9fmS¢oU¤qV¨tY¬w[°z_µ\7f\83g¿\88\8d\92\97\9b\9f\80Û¡\82Ý£\83Ý£\83Ü¢\82Û \7fØ\9d\9a\96\92\8e\8a\86\83\80^»~[¹|Y¸zX¶yW¶xVµxUµwU´wT´wT´wT´vT´vT´vT´vT´vT´vT³vT³wU³wU³wU³wU³wV³wV³wV²wV²wW±wW±wW°vW¯vW®uV­uV¬tV«sUªrU¨qT§qT¥pS¤oS£nS¡mR lR\9elR\9dkR\9bjQ\99iQ\98hQ\96gQ\94gQ\92fP\90eP\8edP\8cbP\8aaP\87`O\85_O\82]O\7f\N|ZNxXNtVMpTMlRMjRLiQLgPLcNL\JK+P\82+P\82+P\82+P\82+P\82+P\82,P\82\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀD::hZUC>IIAI\JKlRMyYN\84^O\8dcP\94gQ\99iQ\9dkR\9elR\9ekR\99iRÍt3±d-\92S%\7fI#\13\13\13\À:^\91:^\91:^\91:^\91:^\90:^\90:^\90:^\90:^\90"Fx"Fx\ 6 B\ 6 B\ 6 B\ 6 BeOLhPLjRLlSMnSMpTMqUMrVMuWMxXN{ZN~[N\80]O\83^O\85_O\93S%\9bW&¢['©^(¹k2½i+Ó{:\95gQ\97hQ\99iQ\9bjR\9dkS\9fmT¢oU¤qV¨tY¬w[°{_µ\7f\83f¿\88\8d\92\96\9a\9d~Ù \80Û¡\81Û¡\81Û \80Ù\9e\9b\98\94\90\8c\89\85c¿\82\7f]º}[¸{Y·zX¶yVµxVµwU´wU´wT´wT´vT´vT´vT´vT³vT³vT³vT³vT³vU³vU³vU³wU²wU²wV²wV²wV±wV±vV°vV°vV¯uV®uV­tV¬tUªsU©rU¨qT§pT¥pS¤oS¢nS¡mR lR\9elR\9dkR\9bjQ\99iQ\98hQ\96gQ\94gQ\92fP\90eP\8edP\8cbP\8aaP\88`O\85_O\82]O\7f\N|ZNxYNtWMpTMlRMjRLiQLgPLcNL_LK+P\82+P\82+P\82,P\82,P\82,P\82,P\82,P\82Nr¤\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À]QNl\VG@IMCI_LKoTM|ZN\86`O\8fdP\96gQ\9ajQ\9dkR\9elR\9ckR\97hQºh*¤^,\8cP%X3\19:_\91:_\91:_\91:_\91:_\91:_\91:_\91:_\91:^\91:^\91:^\91:^\91"Fx\ 6 B\ 6 B\ 6 B\ 6 BfOLiQLkRLmSMnTMpTMqUMrVMuWNxYN{ZN~[N\80]O\83^O\8eP%\97U&\9dX&£['¬`)½n4Ãn/Àj*\95gQ\97hQ\99iQ\9bjR\9dkS\9fmT¢oU¤qW¨tY«w[°z^´~b¹\83f¿\88\8c\91\95\99\9c\9e\7fÙ\9f\80Ú\9f\80Ù\9e\9c\9a\97\93\8f\8b\88\84\81\7f]¹}[¸{Y·zW¶xVµxU´wU´wT´wT´vT´vT³vT³vT³vT³vT³vT³vT³vT³vT²vU²vU²vU²vU²vU±vV±vV±vV°vV°vV¯uV®uV­uV¬tU«sUªrU©rT¨qT¦pT¥oS£oS¢nS¡mR\9flR\9ekR\9ckR\9bjQ\99iQ\98hQ\96gQ\94gQ\93fP\90eP\8edP\8cbP\8aaP\88`O\85_O\82]O\7f\N|ZNyYNuWMpUMlRMjQLiQLgPLdNL_LK,P\82,P\82,P\82,P\82,P\82Nr¤Nr¤Nr¤Nr¤Nr¥Nr¥\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀaSOD>IJAIQEJbNLrUM~[N\88aO\91eP\97hQ\9cjQ\9ekR\9flR\9bjRÌs0²e,\93T&\83K$;_\91;_\91;_\91;_\91;_\91;_\91;_\91:_\91:_\91:_\91:_\91:_\91:_\91\ 6 B\ 6 B\ 6 B\ 6 BgPLiQLkRLmSMoTMpTMqUMsVMuWNxYN{ZN~[N\81]O\87M$\93S%\99V&\9fY&¥\'±e-¹j/Ñz:\94fQ\95gQ\97hQ\99iR\9bjR\9dkS\9fmT¢oU¤qW¨tY«w[¯z^´~b¹\83\87\8c\90\94\98\9b\9d\9e\9e\9d\9b\98\95\92\8e\8a\87\84\81_»~\¹|Z·{Y¶yWµxVµxU´wU´wT´vT³vT³vT³vT³vT³vT³vT³vT³vT²vT²vT²vT²vU²vU²vU±vU±vU±vU°vV°vV¯uV®uV®uV­tU¬sU«sUªrU¨qT§qT¦pS¥oS£nS¢nR¡mR\9flR\9ekR\9ckR\9bjQ\99iQ\98hQ\96gQ\94gQ\92fP\90eP\8edP\8cbP\8aaP\88`O\85_O\82]O\7f\O|ZNyYNuWMqUMlSMjQLhQLfPLdNL_LK,P\82,P\82Nr¤Nr¤Nr¤Nr¤Nr¥Nr¥Nr¥Ns¥Ns¥Ns¥Ns¥\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀdUOG@IMCITFJeOLtWM\80]O\8bbP\93fP\99iQ\9dkR\9flR\9dkR\99iQ¾j,©c/\8dP%[JK;_\91;_\91;_\91;_\91;_\91;_\91;_\91;_\91;_\91;_\91;_\91;_\91\ 6 B\ 6 B\ 6 B\ 6 BgPLiQLkRMmSMoTMpTMqUMsVMvWNyYN{ZN~[N|H#\8eQ%\95T%\9bW& Z'¦]'ºm5¸f*Ív5\94fQ\95gQ\97hQ\99iR\9bjR\9dkS\9fmT¡oU¤qW§sY«v[¯z^³~b¸\82\87\8b\8f\93\96\99\9b\9c\9c\9b\99\96\93\90\8d\89\86e¿\83\80_º~\¸|Z·zX¶yWµxV´wU´wU³vT³vT³vT³vT³vT³vT³vT²vT²vT²vT²vT²vT²vT±vT±vU±vU±vU°uU°uU°uU¯uU®uU®tU­tU¬tU«sUªrU©rT¨qT§pT¥pS¤oS£nS¢mR mR\9flR\9ekR\9cjR\9bjQ\99iQ\97hQ\96gQ\94fQ\92fP\90eP\8ecP\8cbP\8aaP\88`O\85_O\82^O\7f\O|ZNyYNuWNqUMmSMjQLhQLfPLdNL`LKNr¤Nr¤Nr¥Nr¥Nr¥Ns¥Ns¥Ns¥Ns¥Os¥Os¥Os¥Os¥Os¥Os¥\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À2#\1cTB<JBIODJXHKiQLxXN\84^O\8ecP\96gQ\9bjQ\9elR\9flR\9ckRËo,³d+\95U'\85L$;_\91;_\91;_\91;_\91;_\91;_\91;_\91;_\91;_\91;_\91;_\91\a\v\11\ 6 B\ 6 B\ 6 B\ 6 BgPLiQLkRMmSMoTMpUMrUMsVMtVMyYN|ZN~[N\8bO$\92S%\97U&\9cX&¢['©_(Às;»h+º`\1a\93fQ\95gQ\97hQ\99iR\9bjR\9dkS\9fmT¡oU¤qW§sY«v[¯z^³}a¸\82\86\8a\8e\92\95\97\99\9a\9a\99\97\94\92\8f\8b\88\85\82\7f^¹}\¸{Z¶zXµyW´xV´wU³wU³vT³vT³vT³vT²vT²vT²vT²vT²uT²uT²uT±uT±uT±uT±uT°uU°uU°uU¯uU¯uU®uU®tU­tU¬tU¬sU«sUªrT©qT§qT¦pS¥oS¤oS£nS¡mR mR\9flR\9dkR\9cjQ\9ajQ\99iQ\97hQ\96gQ\94fQ\92eP\90dP\8ecP\8cbP\8aaP\88`O\85_O\82]O\7f\O|ZNyYNuWNqUMmSMiQLhPLfOLdNL`LKkPANr¥Ns¥Ns¥Ns¥Ns¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À#Gy#GybSNP<3NCJRFJ^LKoTM}[N\89aO\91eP\99iQ\9dkQ\9flR\9elR\99iQÂm-¯g2\8fQ%]8 ;_\92;_\92;_\92;_\92;_\92;_\92;_\92;_\91;_\91;_\91\14!2\ 6 B\ 6 B\ 6 B\ 6 BgPLjQLlRMmSMoTMpUMrUMsVMtVMyYN|ZN\87M$\8fQ%\94T%\99V&\9eY&£['­b+¾q8Çr3\92eP\93fQ\95gQ\97hQ\99iR\9ajR\9ckS\9fmT¡oU¤qV§sYªv[®y^²}a·\81\85\89\8d\90\93\96\97\98\98\97\95\92\90\8d\8a\87f¿\84\81`º~]¹|[·{Y¶yXµxW´wV³wU³vU³vT²vT²vT²vT²uT²uT²uT²uT²uT±uT±uT±uT±uT±uT°uT°uT°uT¯uU¯uU®tU®tU­tU­tU¬sU«sTªrT©rT¨qT§qT¦pS¥oS¤oS¢nS¡mR lR\9elR\9dkR\9cjQ\9aiQ\99iQ\97hQ\95gQ\94fQ\92eP\90dP\8ecP\8cbP\8aaP\87`O\85_O\82]O\7f\N|ZNyYNvWNqUMmSMiQLhPLfOLdNL`LKZIKNs¥Ns¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¦Os¦Os¦Ot¦Ot¦Ot¦\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À@d\96@d\96#Gy#Gy#Gy#Gy#GyhVPKBIQEJUGJeOLtVM\81]O\8cbP\94gQ\9bjQ\9flR\9flR\9dkR\96gQ´d*\99X)\88N$;`\92;`\92;`\92;`\92;`\92;`\92;`\92"Gy"Gy"Gy\14!2\ 6 B\ 6 B\ 6 B\ 6 B\ 6 BjQLlRMnSMoTMpUMrUMsVMtVMyYN\82K$\8cP%\92S%\96U&\9bW&\9fY&¥\'µi2·h.Îx8\91eP\93fQ\95gQ\97hQ\98iQ\9ajR\9ckS\9emT¡nU¤qV§sXªv[®y]²|`¶\80\84g¿\88\8b\8f\92\94\95\96\96\95\93\91\8e\8b\88\85\83\80_º~]¸|[¶zYµyW´xV³wV³wU³vT²vT²vT²uT²uT²uT²uT±uT±uT±uT±uT±uT°uT°uT°uT°uT¯uT¯tT¯tT®tT®tT­tT­tT¬sT«sT«rTªrT©qT¨qT§pS¦pS¤oS£nS¢nR¡mR\9flR\9ekR\9dkR\9bjQ\9aiQ\98iQ\97hQ\95gQ\93fQ\92eP\90dP\8ecP\8cbP\89aP\87`O\85_O\82]O\7f\N|ZNyYNuWNqUMmSMiQLgPLfOLcNL`MKZIKOs¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¦Os¦Os¦Ot¦Ot¦Ot¦Ot¦Pt¦Pt¦Pt¦Pt¦\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\Àv\9aÌv\9aÌv\9aÌv\9aÌ#Gy#Gy#Gy#Gy#Gy#Gy#Gy#GyYE<NDJTFJYIKkRLyYN\85_O\8fdP\97hQ\9dkQ\9flR\9flR\9bjRÆo.²h2\91R%c; <`\92<`\92#Gy#Gy#Gy#Gy"Gy"Gy"Gy\f\18*\ 6 B\ 6 B\ 6 B\ 6 B\ 6 BjQLlRMnSMoTMqUMrUMsVMtVM~I#\89N$\90R%\94T%\98V&\9cX&¡Z'§^(¼q9¶e*Àj+\91eP\93fQ\95gQ\96hQ\98iQ\9ajR\9ckS\9emT¡nU£pV¦sX©uZ­x]±|`µ\7f\83\87\8a\8d\90\92\93\94\93\92\91\8f\8c\8a\87f¿\84\82\7f^¹}\·{Z¶zX´xW´wV³wU²vU²vT²vT²uT²uT±uT±uT±uT±uT±uT±uT±uT°uT°uT°tT°tT¯tT¯tT¯tT®tT®tT­tT­sT¬sT¬sT«rTªrT©rT¨qT§pS¦pS¥oS¤oS£nS¢mR mR\9flR\9ekR\9ckR\9bjQ\9aiQ\98hQ\96hQ\95gQ\93fQ\91eP\90dP\8ecP\8bbP\89aO\87`O\84_O\82]O\7f\N|ZNyYNuWNqUMmSMhQLgPLeOLcNL`LKZIK,P\83,P\83Os¥Os¥Os¥Os¥Os¦Os¦Os¦Ot¦Ot¦Ot¦Ot¦Pt¦Pt¦Pt¦Pt¦-Q\83-Q\83-Q\83-Q\83-Q\83\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\Àv\9aÌv\9aÌv\9aÍv\9aÍv\9aÍv\9aÍ=a\93#Gy#Gy#Gy#Gy#Gy#Gy#Gy#GygUOT>3REJVGJ`LKpTM}[N\89aO\92eP\9aiQ\9ekR lR\9elR\98hQ·e)¢^.\8dP%^8 #Gy#Gy#Gy#Gy#Gy#Gy#Gy#Gy\f\18*\ 6 B\ 6 B\ 6 B\ 6 B\ 6 BjQLlRMnSMoTMpUMrUMsVMxF#\87M$\8eQ%\92S%\96U&\9aW&\9eY&¢['ªa+¿s;¹g+\8fdP\91eP\93fQ\94gQ\96hQ\98iQ\9ajR\9ckS\9elS nU£pV¦rX©uZ¬x]°{_´~b¸\82\85\89\8c\8e\90\91\92\91\90\8f\8d\8b\88\85\83\80`º~^¸|[¶{ZµyX´xW³wV²vU²vU²vT±uT±uT±uT±uT±uT±uT±uT±uT°uT°uT°tT°tT¯tT¯tT¯tT¯tT®tT®tT­sT­sT¬sT¬sT«rTªrT©rT©qT¨qS§pS¦pS¥oS£nS¢nR¡mR lR\9flR\9dkR\9cjQ\9bjQ\99iQ\98hQ\96gQ\95gQ\93fP\91eP\8fdP\8dcP\8bbP\89aO\87`O\84^O\82]O\7f\N|ZNxXNuWMqUMmSMhPLgPLeOLcNL`LKZIK,P\83,P\83,Q\83Os¦Os¦Ot¦Ot¦Ot¦Ot¦Pt¦Pt¦Pt¦Pt¦Pt¦-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\Àv\9aÍv\9aÍv\9bÍv\9bÍv\9bÍv\9bÍv\9bÍw\9bÍw\9bÍ=a\93=a\93=a\93#Gy#Gy#Gy#Gy#Gy#Gy#Gy#GymYPODJUGJXIKeOLtWM\82]O\8dcP\95gQ\9cjQ lR mR\9dkRÈp.´g0\94T&\88N$]8 #Gy#Gy#Gy#Gy#Gy#Gy#Gy\f\18*\ 6 B\ 6 B\ 6 B\ 6 B\ 6 BjQLlRMnSMoTMpUMrUMv>\13\84L$\8cP%\91R%\95T%\98V&\9cX& Z'¤\'°f0¹m5Äq3\8fdP\91eP\93fQ\94gQ\96gQ\98hQ\99jR\9bkS\9dlS nT¢pV¥rX¨tZ«w\¯z_³}a·\81\84\87\8a\8c\8e\8f\8f\8f\8e\8d\8b\89\87g¿\84\82\7f_¸}]·|[µzY´yX³xW³wV²vU²vU±uT±uT±uT±uT±uT±uT°uS°uS°tS°tS°tS¯tS¯tT¯tT¯tT®tT®tT®sT­sT­sT¬sT¬sT«rTªrTªrT©qT¨qS§pS¦pS¥oS¤oS£nS¢mR¡mR\9flR\9elR\9dkR\9cjQ\9ajQ\99iQ\97hQ\96gQ\94fQ\92fP\91eP\8fdP\8dcP\8bbP\89aO\86`O\84^O\81]O~\N{ZNxXNuWMqUMiQLgPLfOLeOLbNL_LKZIK,Q\83,Q\83,Q\83,Q\83,Q\83Ot¦Pt¦Pt¦Pt¦Pt¦Pt¦-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\Àv\9bÍv\9bÍv\9bÍv\9bÍw\9bÍw\9bÍw\9bÍw\9bÍw\9bÍw\9bÍw\9bÍw\9bÍ=a\93=a\93=a\93=a\93=a\93#Gz#Gz#Gz#Gz#Gz#Gz#GzgUOS=2RFJWHJ[JKlRMzYN\86`O\90eP\98iQ\9ekR mR\9flR\99iQ¼h*°h4\91R%\88N$^9 [JK#Gy#Gy#Gy#Gy#Gy\f\18*\ 6 B\ 6 B\ 6 B\ 6 B\ 6 BjQLlRMnSMoTMpUM\7fI#\86L$\8bO$\8fQ%\93S%\97U&\9aW&\9dX&¡Z'¦](·l5´f,Èt5\8fdP\90eP\92fP\94fQ\96gQ\97hQ\99iR\9bkR\9dlS\9fmT¢oV¤qW§tY«v[®y^±|aµ\7f\82\85h¿\88\8a\8c\8d\8d\8d\8c\8b\89\87g¿\85\83\80`¹~^·|\¶{Z´yY³xW²wV²vU±vU±uT±uT±uT°uT°uT°tS°tS°tS°tS°tS¯tS¯tS¯tS¯tS®tS®tS®sS­sT­sT­sT¬sT¬rT«rTªrTªrS©qS¨qS§pS¦pS¦oS¥oS¤nS¢nR¡mR mR\9flR\9ekR\9dkR\9bjQ\9aiQ\98iQ\97hQ\95gQ\94fQ\92eP\90eP\8fdP\8dcP\8abP\88`O\86_O\83^O\81]O~[N{ZNxXNtVMqUMhPLgPLfOLdNLbML_LKbE6,Q\83,Q\83,Q\83,Q\83-Q\83-Q\83-Q\83Pt¦-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\84-Q\84-Q\84\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À@d\96w\9bÍw\9bÍw\9bÍw\9bÍw\9bÍw\9bÍw\9bÍw\9bÍw\9bÍw\9bÍw\9bÍw\9bÎw\9bÎw\9bÎ=a\94=a\94=a\94=a\94=a\94=a\94=a\93#Hz#Gz#Gz#Gz#Gz#Gz#GzmYPPDJUGJYIKbMLqUM\7f\N\8abP\94fQ\9bjQ\9flR¡mR\9elRËp,µe+ \+\90R%\88N$b; ]8 [7 XHKO+\ fN1\1eL/\1eL/\1eL/\1eK/\1eK/\1e\ 2\v\17e<!\80J#{=\f\82J$\85L$\88N$\8aO$\8eP%\92S%\95T%\98V&\9cX&\9fY&£['ª`+¸m7´d)½h*\8edP\90dP\92eP\94fQ\95gQ\97hQ\99iR\9bjR\9dlS\9fmT¡oU¤qW§sYªv[­x]°{`´~b·\81\84\86i¿\88\89\8a\8b\8a\8a\88\87h¿\85\83\81\7f_¸}]¶{[µzY³xX²wW²wV±vU±uU°uT°uT°uT°tT°tT°tS°tS¯tS¯tS¯tS¯tS¯tS®tS®tS®sS®sS­sS­sS¬sS¬sS«rS«rSªrSªrS©qS¨qS¨qS§pS¦pS¥oS¤oS£nR¢nR¡mR lR\9flR\9dkR\9cjQ\9bjQ\99iQ\98hQ\96hQ\95gQ\93fQ\92eP\90dP\8ecP\8cbP\8aaP\88`O\85_O\83^O\80]O~[NzZNwXNtVMpTMgPLfOLeOLcNLaMK^KKbE6,Q\83-Q\83-Q\83-Q\83-Q\83-Q\83Pt¦Pt¦Pt¦-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\84-Q\84-Q\84-Q\84-Q\84-Q\84-Q\84-R\84-R\84\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À@d\96@d\96@d\97@d\97@d\97@d\97w\9bÍw\9bÍw\9bÍw\9bÎw\9bÎw\9bÎw\9cÎw\9cÎw\9cÎw\9cÎw\9cÎx\9cÎx\9cÎ=b\94=b\94=b\94=b\94=b\94=b\94=b\94=b\94#Hz#Hz#Hz#Hz=a\94=a\94gUOS=2RFJWHKZJKiQLvXN\84^O\8ecP\97hQ\9dkR mR mR\9ckRÄm-¶j3\99W(\90R%\8aO$e<!c; a: ^9 ]8 [7 X6\1fX6\1fX6\1f\82K$\86M$¬_(yF#\97U&\88N$\89N$\8bO$\8dP%\90R%\93S%\97U&\9aW&\9dX&¡Z'¤\(­d.¶j2·f*\8cbP\8ecP\90dP\91eP\93fQ\95gQ\97hQ\98iR\9ajR\9ckS\9emT¡nU£pW¦sX©uZ¬w\¯z_²}aµ\7f\82\84\86i¿\87\88\88\88\87i¿\86\85\83\81\80`¸~^¶|\µzZ´yY²xX²wW±vV±uU°uU°uT°tT¯tT¯tT¯tS¯tS¯tS¯tS¯tS¯tS®tS®sS®sS®sS­sS­sS­sS¬sS¬rS«rS«rSªrSªrS©qS©qS¨qS§pS¦pS¥oS¤oS£nR¢nR¡mR mR\9flR\9ekR\9dkR\9bjQ\9aiQ\99iQ\97hQ\96gQ\94gQ\93fP\91eP\8fdP\8ecP\8cbP\89aP\87`O\85_O\82^O\80\O}[NzYNwXNsVMoTMgPLfOLdOLcNL`MK]KKaE6-Q\83-Q\83-Q\83Pt¦Pt¦Pt¦Pt¦Pt¦Pt§Pt§Pt§-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\83-Q\84-Q\84-Q\84-Q\84-Q\84-Q\84-Q\84-R\84-R\84-R\84-R\84-R\84-R\84-R\84\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À@d\97@d\97@d\97@d\97@d\97@d\97@e\97@e\97@e\97@e\97@e\97w\9cÎw\9cÎw\9cÎx\9cÎx\9cÎx\9cÎx\9cÎx\9cÎx\9cÎx\9cÎx\9cÎ>b\94>b\94>b\94>b\94>b\94>b\94>b\94>b\94=b\94=b\94=b\94=b\94=b\94=b\94=b\94=b\94YE<bJ>UGJYIK_LKnSM|ZN\88`O\92eP\9aiQ\9flR¡mR mR\99iQºg*´j4\9aW'\91R%\8eQ%h>!g=!f=!d<!c; b; `: \88N$­`(±b(´d)¸f)|H#\9cX&\9cX&\9bW&\8fQ%\91R%\95T%\98V&\9bW&\9eY&¢['¦](®d.³e,Àn1\8cbP\8ecP\8fdP\91eP\93fQ\94gQ\96hQ\98iR\9ajR\9bkS\9elT nU¢pV¥rX§tZªv\­y^°{`³~b¶\80\82\84\85\86\86\86\85\84\83\81\80a¸~_¶|]µ{[´yZ³xX²wW±vV°vU°uU°uT¯tT¯tT¯tT¯tS¯tS¯tS¯tS®tS®tS®sS®sS®sS­sS­sS­sS¬sS¬sS¬rS«rS«rSªrSªqS©qS©qS¨qS§pS¦pS¦oS¥oS¤nR£nR¢mR¡mR lR\9flR\9dkR\9ckQ\9bjQ\9aiQ\98iQ\97hQ\95gQ\94fQ\92fP\91eP\8fdP\8dcP\8bbP\89aO\87`O\84^O\82]O\7f\O}[NyYNvWNrVMoTMfOLeOLdNLbML`LK\KKaE6Pt¦Pt¦Pt¦Pt¦Pt¦Pt§Pt§Pt§Pu§Pu§Pu§Qu§Qu§-Q\83-Q\83-Q\84-Q\84-Q\84-Q\84-Q\84-Q\84-R\84-R\84-R\84-R\84-R\84-R\84-R\84-R\84-R\84.R\84.R\84~¢Ô~¢Ô\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À@d\97@d\97@d\97@e\97@e\97@e\97@e\97@e\97@e\97@e\97@e\97Ae\97Ae\97Ae\97x\9cÎx\9cÎx\9cÎx\9cÎx\9cÎx\9cÎx\9cÎx\9cÏx\9cÏx\9cÏ>b\94>b\94>b\94>b\94>b\94>b\94>b\94$Hz$Hz$Hz$Hz$Hz>b\94>b\94>b\94>b\94>b\94gVOS=2RFJWHK[JKeOLsVM\80]O\8cbP\95gQ\9cjQ lR¡mR\9elRÌr/¹g*²h2\96U&\93S%\91R%\8fQ%\8eQ%\8cP%£['¨]'¬`(°b(´d)¸f)»g)¾i*Áj*\7fI#¡Z'¡Z' Z' Z'¡Z'£['¤['¥\'¦]'ª_)±d,³d)Äq3\8bbP\8dcP\8fdP\91eP\92fQ\94fQ\96gQ\97hQ\99iR\9bkS\9dlS\9fmU¡oV¤qW¦sY©u[¬x]¯z^±|`´~b¶\80\82\83\84\84\84\83\82\81\80a·~_¶}^µ{\´zZ³yY²wX±wW°vV°uU¯uU¯tT¯tT¯tT®tS®tS®tS®sS®sS®sS®sS®sS­sS­sS­sS­sS¬sS¬rS¬rS«rS«rSªrSªqS©qS©qS¨pS§pS¦pS¦oS¥oS¤oR£nR¢nR¡mR mR\9flR\9ekR\9dkR\9cjQ\9ajQ\99iQ\98hQ\96hQ\95gQ\93fQ\92eP\90dP\8ecP\8ccP\8abP\88`O\86_O\84^O\81]O\7f\N|ZNyYNuWNrUMnSMjQLdNLcNLaMK_LK[JK`D6Pt¦Pt¦Pt§Pt§Pt§Pu§Pu§Pu§Pu§Qu§Qu§Qu§Qu§Qu§Qu§-Q\84-Q\84-Q\84-R\84-R\84-R\84-R\84-R\84-R\84-R\84-R\84-R\84.R\84.R\84Rv¨Rv¨Rv¨~¢Ô~¢Ô~¢Ô~¢Ô\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À@e\97@e\97@e\97@e\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97x\9cÏx\9cÏx\9cÏx\9dÏx\9dÏx\9dÏx\9dÏy\9dÏy\9dÏ>b\95>b\94>b\94$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>b\94>b\94>b\94>b\94>b\94YD<W?3UGJYIK\JKjRLxXN\84_O\8fdP\97hQ\9dkR mR¡mR\9dkRÈp.¹h,°f/¢[(\9eX&\9dX&¡Z'¥\'©^'­`(²c(¶e)ºg)¾i*Áj*Äl*Çm*Êo+¤\'¤\'¤\'¤\'¥\'¦]'§]'©^'ª_(­a)±c*µe*¼i+\8bbP\8dcP\8edP\90dP\92eP\93fQ\95gQ\97hQ\98iR\9ajR\9ckS\9emT nU£pW¥rX¨tZªv[­x]¯z_²|`´~b¶\80\81\81\82\81\81\80\7fa·~_¶}^´{\³z[²yZ±xX°wW°vV¯uU¯uU®tT®tT®tT®tT®sS®sS®sS®sS­sS­sS­sS­sS­sS­sS¬sS¬rS¬rS«rS«rSªrSªqSªqS©qS¨qS¨pS§pS§pS¦oS¥oS¤oR£nR¢nR¢mR¡mR lR\9elR\9dkR\9ckQ\9bjQ\9aiQ\98iQ\97hQ\96gQ\94fQ\93fP\91eP\8fdP\8dcP\8cbP\8aaP\88`O\85_O\83^O\80]O~[N{ZNxXNtWMqUMmSMiQLcNLbML`LK^KK\7fbR_D5Pt§Pt§Pu§Pu§Pu§Pu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu¨-R\84-R\84-R\84-R\84-R\84-R\84-R\84.R\84.R\84Rv¨Rv¨Rv¨Rv¨Rv¨~¢Õ~¢Õ~¢Õ~¢Õ~¢Õ~¢Õ~¢Õ~¢Õ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀAe\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97y\9dÏy\9dÏy\9dÏy\9dÏy\9dÏy\9dÏy\9dÏAe\98$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>b\94>b\94>b\94>b\94Q@:R<2fL@WHJZJKaMKoTM|ZN\88`O\91eP\99iQ\9flR¡mR¡mR\9cjRÇo-»i-´h0«`)§]'¨]'¬`(°b(´d)¸f)¼h)Àj*Ãk*Æm*Én+Ìp+Ïq+Òr,§]'§]'§]'¨^'ª_(«_(¬`(­`(¯b)²c)ºi.\88`O\8aaP\8cbP\8ecP\8fdP\91eP\93fQ\94gQ\96hQ\98iR\9ajR\9bkS\9dlT\9fnU¢oV¤qW¦sY©uZ«w\­y]°{_²|`³}aµ~b¶\7f\7f\7f\7fa¶~`µ}_µ|^´{]³z[²yZ±xY°wX¯vW¯uV®uU®tU®tT­tT­sT­sS­sS­sS­sS­sS­sS­sS­sS¬sS¬rS¬rS¬rS«rS«rS«rSªrSªqS©qS©qS¨qS¨pS§pS¦pS¦oS¥oR¤oR¤nR£nR¢mR¡mR lR\9flR\9ekR\9dkR\9cjQ\9ajQ\99iQ\98hQ\96hQ\95gQ\93fQ\92eP\90dP\8fdP\8dcP\8bbP\89aO\87`O\85_O\82]O\7f\O}[NzYNwXNtVMpTMlRMhPLcNLaMK_LK]KK\7fbR]C5Pu§Pu§Pu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu¨Qu¨Qu¨Qv¨Qv¨Qv¨-R\84-R\84.R\84.R\84.R\84Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀAe\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\98Ae\98Ae\98Ae\98y\9dÏy\9dÏy\9dÏAf\98Af\98Af\98$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>b\95>b\95>b\94>b\94WD<V>3TFJXHK[JKfOLsVM\80]O\8bbP\94gQ\9cjQ lR¡mR mR\9ckRÅm,½i,ºj/²d+±c)²c(¶e)ºf)¾h*Áj*Ål*Én+Ëo+Îq+Ñr+Ós,Õt,\83K$ª^(ª_(«_(¬`(®a(¯a)°b)³d*¶f+¾m1\87`O\89aP\8bbP\8dcP\8fdP\90eP\92fQ\94fQ\95gQ\97hR\99iR\9bkS\9dlT\9fmT¡oV£pW¥rX§tY©v[¬w\®y]¯z^±{_²|`³}`´}`´}`´}_´|^³{^³{\²z[±yZ°xY°wX¯vW®uV®tU­tU­tT­sT­sT­sS­sS¬sS¬sS¬sS¬rS¬rS¬rS¬rS¬rS«rS«rS«rS«rSªrSªqSªqS©qS©qS¨qS¨pS§pS¦pS¦oS¥oR¤oR¤nR£nR¢mR¡mR mR\9flR\9elR\9dkR\9cjQ\9bjQ\9aiQ\98iQ\97hQ\96gQ\94fQ\93fP\91eP\8fdP\8ecP\8cbP\8aaP\88`O\86_O\84^O\81]O\7f\N|ZNyYNvWNsVMoTMkRLgPLbML`LK^KK\JK~aR[B5Pu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu¨Qu¨Qu¨Qv¨Qv¨Qv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv©Rv©\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀAe\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\98Ae\98Ae\98Ae\98Ae\98Ae\98Ae\98Af\98Af\98Af\98y\9dÐAf\98Af\98Af\98Af\98Af\98Bf\98$H{$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>c\95>c\95>b\95>b\95O?:[E<dK?UGJYIK\KKjRLxXN\84^O\8ecP\97hQ\9dkQ lR¡mR mRÒt.Êq.Àj+¿k-¼i,¼h*¼h*Àj*Âk*Ål*Én+Íp+Ðq+Òs,Ôt,×u,Ùv,Ûw,¬`(¬`(­a)¯b)±c*²d+µf+·g,»k0¾m1\87`O\89aO\8bbP\8ccP\8ecP\90dP\91eP\93fQ\95gQ\96hQ\98iR\9ajR\9ckS\9dlT\9fnU¡oV¤qW¦sX¨tZªv[¬w\­y]¯z^°z^±{^²{^²{^²{^²z]±z\±y[°xZ¯wY¯vX®vW®uV­tV­tU¬sT¬sT¬sT¬sT¬sS¬rS¬rS¬rS¬rS¬rS«rS«rS«rS«rS«rS«rSªrSªqSªqS©qS©qS¨qS¨pS¨pS§pS¦pS¦oR¥oR¤oR¤nR£nR¢mR¡mR mR\9flR\9elR\9dkR\9ckQ\9bjQ\9aiQ\99iQ\98hQ\96gQ\95gQ\93fQ\92eP\90eP\8fdP\8dcP\8bbP\89aP\87`O\85_O\83^O\80\O~[N{ZNxYNuWNqUMmSMiQLeOLaMK_LK]KKlN>|aRZA5-Q\83Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu¨Qu¨Qu¨Qv¨Qv¨Qv¨Qv¨Rv¨Rv¨Rv¨Rv¨.R\84.R\84.R\84.R\84Rv¨Rv¨Rv©Rv©Rv©Rw©\7f£Ö\7f£Ö\7f£Ö\7f£Ö\7f£Ö\7f£Ö\7f£Ö\7f£Ö\7f£Ö\7f£Ö\7f£Ö\7f£Ö\7f£Ö\7f£Ö\7f£Ö\7f£Ö\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀAe\98Ae\98Ae\98Ae\98Ae\98Ae\98Ae\98Af\98Af\98Af\98Af\98Af\98y\9eÐy\9eÐy\9eÐz\9eÐz\9eÐz\9eÐBf\98Bf\98Bf\98Bf\98Bf\98$H{$H{$H{$H{$H{$H{$H{$H{$H{$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>c\95>c\95>c\95>c\95VC<T=3}cVWHJZIKaMLoTM|ZN\87`O\90eP\98hQ\9dkQ lR¢nR¢nSÓt.Òv2Åm+Äl+Ãl+Ål+Æm+Én+Ëo+Íp+Ðr+Ós,Öu,×u,Ùv,Ûw-Ýx-ßy-¯b*¯c+²e,µg-¸i/ºk0½m2Àp4ºi-\86_O\88`O\8aaP\8cbP\8dcP\8fdP\91eP\92fQ\94fQ\95gQ\97hR\99iR\9ajS\9clT\9emT nU¢pV¤qW¦sY¨tZªv[«w[­x\®y]¯y]¯y]°y]°y\°y\¯x[¯xZ®wY®vX­uW­uW­tV¬tU¬sU¬sT«sT«rT«rS«rS«rS«rS«rS«rS«rS«rS«rS«rSªrSªqSªqSªqS©qS©qS©qS¨pS¨pS§pS§pS¦pR¦oR¥oR¤oR¤nR£nR¢mR¡mR mR lR\9flR\9ekR\9dkQ\9bjQ\9ajQ\99iQ\98hQ\97hQ\95gQ\94fQ\93fP\91eP\8fdP\8ecP\8cbP\8aaP\88`O\86_O\84^O\82]O\7f\O}[NzYNwXNtVMpTMlRMhPLdNL`LK^KKmO?kN>^C6W@5-Q\84-Q\84Qu§Qu§Qu§Qu§Qu¨Qu¨Qv¨Qv¨Qv¨Qv¨Rv¨Rv¨Rv¨Rv¨.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84Rv©Rw©Rw©Rw©\7f¤Ö\7f¤Ö\7f¤Ö\7f¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\7f¤Ö\7f¤Ö\7f¤Ö\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀAf\98Af\98Af\98Af\98Af\98Af\98Af\98Af\98z\9eÐz\9eÐz\9eÐz\9eÐz\9eÐz\9eÐz\9eÐz\9eÐz\9eÐz\9eÐz\9eÐBf\98Bf\98Bf\98Bf\98$I{$I{$I{$H{$H{$H{$H{$H{$H{$H{$H{$H{$H{$H{$H{$H{$Hz$Hz$Hz$Hz$Hz\a\v\11YE<W?4\81gYXHKZJKfOLsVM\7f\N\89aO\91eP\99iQ\9dkR¡mR£nS¢nS¡mSÚ|7Ïs/Êo,Êo,Íp+Ïq+Ñr,Ós,Õt,Øv,Úw-Üx-Ýy-ßz.à{/â|/²e-´g/·j1»m3¿o5¿o5Ãr7¿n3³c)\85_O\87`O\89aP\8bbP\8dcP\8edP\90dP\92eQ\93fQ\95gQ\96hQ\98iR\99jR\9bkS\9dlT\9fmU¡oV¢pV¤qW¦sX¨tY©uZªv[«w[¬w[­w[­w[®w[®wZ­wZ­vY­vX¬uW¬tW¬tV«sU«sU«sT«rT«rT«rSªrSªrSªrSªrSªrSªrSªqSªqSªqSªqSªqS©qS©qS©qS©qS¨pS¨pS§pS§pS¦pR¦oR¥oR¥oR¤nR£nR£nR¢mR¡mR mR lR\9flR\9ekR\9dkQ\9cjQ\9bjQ\9aiQ\98iQ\97hQ\96gQ\95gQ\93fQ\92eP\90dP\8edP\8dcP\8bbP\89aO\87`O\85_O\83^O\81]O~[N{ZNyYNvWNsVMoTMkRLgPLbML^LKnP?lO?iM>\C6T>4-Q\84-Q\84-Q\84-R\84Qu¨Qu¨Qv¨Qv¨Qv¨Qv¨Rv¨Rv¨Rv¨.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84Rw©Sw©\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤ÖEi\9bEi\9bEi\9b\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀAf\98Af\98Bf\98Bf\98Bf\98z\9eÐz\9eÐz\9eÐz\9eÐz\9eÐz\9eÐz\9eÐz\9eÐz\9eÑz\9eÑz\9eÑz\9fÑz\9fÑz\9fÑz\9fÑBf\98Bf\98Bf\98$I{$I{$I{$I{$I{$I{$I{$I{$I{$I{$I{$H{$H{$H{$H{?c\95?c\95?c\95?c\95$H{$H{$H{SB;R<2zbVUGJXIK[JK[JKuWN\80\O\8aaP\92fP\99iQ\9flR¡mR£nS£nS¥pTà\80\7f9Õw2Öw0Öv/Öv.Ùx/Üz0Þz0á|1ã~2æ\80\81\83\85\858ºm4¼o7¾q8Äu;Ãs9Ãs8ºj0\82]O\84^O\86_O\88`O\8aaP\8cbP\8dcP\8fdP\91eP\92fQ\94fQ\95gQ\97hR\99iR\9ajS\9ckS\9dlT\9fnU¡oV¢pV¤qW¦rX§sY¨tY©uYªuZ«uZ«vZ«vY«uY«uX«uX«tW«tV«sVªsUªsUªrTªrTªrTªrSªqSªqSªqSªqSªqS©qS©qS©qS©qS©qS©qS©qS©qS¨qS¨pS¨pS§pS§pR§pR¦oR¦oR¥oR¥oR¤nR£nR£nR¢mR¡mR mR lR\9flR\9ekR\9dkR\9cjQ\9bjQ\9aiQ\99iQ\97hQ\96gQ\95gQ\94fQ\92eP\91eP\8fdP\8dcP\8cbP\8aaP\88`O\86_O\84^O\82]O\7f\O}[NzYNwXNtVMqUMnSMiQLeOL`LK]KKmP?kN?|aSZA5P<4-R\84-R\84-R\84-R\84-R\84-R\84Qv¨Rv¨Rv¨Rv¨Rv¨.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84\80¤×\80¤×\80¤×\80¤×\80¤×\80¤×\80¤×\80¤×\80¤×\80¤×\80¤×\80¤×\80¤×\80¤×\80¤×\80¤×Ei\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9b\13\13\13\13\13\13\13\13\13\13\13\13\ÀBf\98z\9eÐz\9eÐz\9eÐz\9eÐz\9eÐz\9eÐz\9eÑz\9eÑz\9eÑz\9fÑz\9fÑz\9fÑz\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑBf\99Bf\99Bf\99%I{$I{$I{$I{$I{$I{$I{$I{$I{$I{$I{?c\96?c\96?c\96?c\96?c\96?c\95?c\95?c\95?c\95$H{$H{$H{jXP^H=}dXUGJXHKZIKkRLwXN\82]O\8bbP\94fQ\9aiQ\9ekR mR£nS¥pT¨qU¨rUç\85\86\89\86\82\86\89\8a\8a\8e\91\95Hÿ\98\92E¿r:Àt;Àt;Át<Ãt:½n4´f,\81]O\83^O\85_O\87`O\89aO\8bbP\8ccP\8ecP\90dP\91eP\93fQ\94gQ\96hQ\98iR\99jR\9bkS\9clS\9emT\9fnU¡oV¢pV¤qW¥rW¦rX§sX¨tX©tX©tX©tX©tXªtWªsW©sV©sV©rU©rU©rT©qT©qT©qS©qS©qS©qS©qS©qS©qS©qS©qS¨qS¨qS¨pS¨pS¨pS¨pS§pS§pS§pR¦pR¦oR¦oR¥oR¥oR¤nR¤nR£nR¢nR¢mR¡mR mR lR\9flR\9ekR\9dkR\9cjQ\9bjQ\9aiQ\99iQ\98hQ\96hQ\95gQ\94fQ\92fP\91eP\90dP\8ecP\8ccP\8bbP\89aO\87`O\85_O\83^O\81]O~[N{ZNyYNvWNsVMpTMlRMgPLcNL\86gU\83eUlO?~bT{`SW@5-R\84-R\84-R\84-R\84-R\84-R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\85.R\85Ei\9bEi\9bEi\9b\80¥×\80¥×\80¥×\80¥×\80¥×\80¥×\80¥×\80¥×\80¥×\80¥×\80¥×\80¥×Ei\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9b\13\13\13\13\13\13\13\13\13\13\Àz\9eÑz\9eÑz\9eÑz\9eÑz\9fÑz\9fÑz\9fÑz\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÒBg\99Bg\99Bg\99%I{%I{%I{%I{%I{%I{%I{@d\96?d\96?d\96?d\96?d\96?d\96?d\96?d\96?d\96?c\96?c\96?c\96?c\96$I{$I{L=:WD<v_T\80gZuZLWHKYIKmSMyYN\83^O\8dcP\94fQ\99iQ\9ckQ mR¤nS§pT¨qT«sV°wXë\85\8f\95\95Jÿ\9bNÿ Rÿ¡Tÿ¢Uÿ£Vÿ§Zÿ«_ÿ\9fSÁu=Át=¿s;½q9½o6¶h.¯a)\80\O\82]O\84_O\86_O\88`O\8aaP\8bbP\8dcP\8fdP\90eP\92eQ\93fQ\95gQ\96hR\98iR\99jR\9bkS\9clT\9emT\9fnU¡oU¢pV£pV¤qW¥rW¦rW§rW§rW§rW¨rW¨rV¨rV¨rU¨rU¨qU¨qT¨qT¨qT¨qS¨qS¨pS¨pS¨pS¨pS¨pS¨pS¨pS¨pS¨pS§pS§pS§pS§pR§pR§pR¦oR¦oR¦oR¥oR¥oR¤oR¤nR£nR£nR¢mR¢mR¡mR lR\9flR\9flR\9ekR\9dkQ\9cjQ\9bjQ\9aiQ\99iQ\98hQ\97hQ\95gQ\94fQ\93fP\91eP\90dP\8edP\8dcP\8bbP\8aaP\88`O\86_O\84^O\81]O\7f\O}[NzYNwXNtWMqUMnSMjQLeOL\89iV\84fU\82eU\7fcT|bTcK>`KA-R\84-R\84-R\84.R\84.R\84.R\84.R\84Rv¨Rv¨Rv¨Rv¨.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\85.R\85.R\85.R\85Ei\9cEi\9cEi\9cEi\9cEi\9cEi\9c\81¥×\81¥×\81¥×\81¥×\81¥×\81¥×\81¥×Ei\9cEi\9cEi\9cEi\9cEi\9cEi\9cEi\9cEi\9cEi\9cEi\9cEi\9cEi\9cEi\9cEi\9cEi\9cEi\9c\13\13\13\13\13\13\13\13\Àz\9fÑz\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÒ{\9fÒ{\9fÒ{\9fÒ{ Ò{ Ò{ Ò{ Ò| ÒCg\99Cg\99%I{%I{%I{@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96?d\96?d\96?d\96?d\96?d\96?d\96$I{$I{dUPYE<xaVlSGw]OVHJbMLoTMzYN\84^O¬vR\92eP\98hQ\9cjQ¡mR£nR¦pS§qT­uV³yZµ{[º\7f\82\85\8c\8f\92nÿ§Xÿ¬_ÿ­aÿ\9eSÿ\9fU½q:ºn7¸k3µh0¯c*©^(\7f\N\81]O\83^O\85_O\87`O\89aO\8abP\8cbP\8ecP\8fdP\91eP\92fQ\94fQ\95gQ\97hR\98iR\99jR\9bkS\9clS\9emT\9fmT nU¡oU£pV£pV¤qV¥qV¥qV¦qV¦qV¦qU¦qU¦qU¦qT§qT§pT§pT§pS§pS§pS§pS§pS§pS§pS§pS§pS§pR§pR§pR§pR¦pR¦pR¦oR¦oR¦oR¥oR¥oR¥oR¤oR¤nR£nR£nR¢nR¢mR¡mR¡mR lR\9flR\9elR\9ekR\9dkQ\9cjQ\9bjQ\9aiQ\99iQ\98hQ\97hQ\95gQ\94fQ\93fP\92eP\90dP\8fdP\8dcP\8cbP\8aaP\88`O\86_O\84^O\82]O\80\O~[N{ZNyYNvWNrVMoTMlRM|WBwUA\88hV\83fVlO@~cTzaTaI>XG@-R\84.R\84.R\84.R\84Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv©.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\84.R\85.R\85.R\85.R\85.R\85.R\85.S\85Ei\9cEi\9cEi\9cEj\9cEj\9cEj\9cEj\9cEj\9c\81¥×\81¥×\81¥×Ej\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEi\9cEi\9cEi\9c\13\13\13\13\13\13\À{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÑ{\9fÒ{\9fÒ{\9fÒ{ Ò{ Ò{ Ò{ Ò| Ò| Ò| Ò| Ò| Ò| Ò| Ò| Ò| ÒCg\99@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96?d\96$I{$I{RA;P<3zcXnVI\8fuh\99~pdNLpUMÁ\94w¬zZ«vS\91eP\96gQ\9cjQ\9elR¡mR¤oS§pT­uV¯vW±xY¶|\¼\80\86\89\8a\8c\8e\8flÿ\9d\8fF¶k4²g1¯d-­b+ª_(¢Z'}[N\80\O\82]O\84^O\86_O\88`O\89aP\8bbP\8dcP\8ecP\90dP\91eQ\92fQ\94gQ\95gQ\97hR\98iR\99jR\9bkS\9ckS\9dlT\9emT nT¡nU¡oU¢oU£pU¤pU¤pU¤pU¥pU¥pT¥pT¥pT¥pT¥pS¥pS¥oS¦oS¦oS¦oS¦oS¦oS¦oR¦oR¦oR¦oR¦oR¦oR¦oR¦oR¥oR¥oR¥oR¥oR¤oR¤nR¤nR£nR£nR¢nR¢mR¡mR¡mR lR\9flR\9flR\9ekR\9dkR\9ckQ\9cjQ\9bjQ\9aiQ\99iQ\98hQ\97hQ\95gQ\94gQ\93fP\92eP\90eP\8fdP\8dcP\8cbP\8abP\89aO\87`O\85_O\83^O\81]O~\N|[NzYNwXNtVMpUM\97pY\94oXzWBuUB\85gVlP@jO@|bUx`TcMB3!\14.R\84Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv©Rv©Rv©Rw©Rw©Rw©.R\84.R\84.R\84.R\84.R\85.R\85.R\85.R\85.R\85.S\85.S\85.S\85Ej\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9c\81¦Ø\81¦ØEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9cEj\9c\13\13\13\13\ÀBg\99{\9fÒ{\9fÒ{\9fÒ{ Ò{ Ò{ Ò{ Ò| Ò| Ò| Ò| Ò| Ò| Ò| Ò| Ò| Ò| Ò| Ò| ÒCg\99Cg\99Cg\99Cg\99|¡Ó@d\97@d\97@d\97@d\97@d\97@d\97@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96%I{;0/SB;R=4fODpXL\91xk\9a\80r\98vbº\93\94x«{[Ã\8fl\8fdP\95gQ\99iQ\9bjQ\9flR£nR¦pS¨qTªrT¬tU°wWµ{Z¸}\¸|\¸}\¹~]»\7f]å}+Ý~6­d.ªa+¨_)§^(¤\'zYN|ZN~\N\80]O\83^O\84_O\86_O\88`O\8aaP\8bbP\8dcP\8edP\90dP\91eQ\93fQ\94gQ\95gQ\97hR\98iR\99jR\9ajS\9ckS\9dlS\9elT\9fmT mT nT¡nT¢nT¢oT£oT£oT£oT£oT¤oS¤oS¤oS¤oS¤oS¤oS¤oS¥oR¥oR¥oR¥oR¥oR¥oR¥oR¥oR¥oR¥oR¤oR¤oR¤nR¤nR¤nR£nR£nR£nR¢mR¢mR¡mR¡mR lR lR\9flR\9elR\9ekR\9dkQ\9cjQ\9bjQ\9ajQ\99iQ\99iQ\98hQ\97hQ\95gQ\94gQ\93fQ\92eP\90eP\8fdP\8ecP\8cbP\8abP\89aO\87`O\85_O\83^O\81]O\7f\N}[NzZNxXNuWMrUM\99rZ\96pY|XCxVCsTBmQAkOA~cVzaU`I>\IARv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv©Rv©Rv©Rw©Rw©Rw©Sw©Sw©Sw©Sw©.R\85.R\85.R\85.R\85.R\85.S\85.S\85.S\85.S\85Fj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9c\82¦Ø\82¦Ø\82¦Ø\82¦Ø\82¦Ø\82¦ØFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9c\13\13\ÀBg\99{ Ò| Ò| Ò| Ò| Ò| Ò| Ò| Ò| Ò| Ò| Ò| Ò| Ò| Ó| ÓCg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99}¡Ó@e\97@e\97@e\97@e\97@e\97@e\97@d\97@d\97@d\97@d\97@d\97@d\97@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96@d\96%I{<1/J82^I@gQFqYN\91xl\99\80s\97vc¢{d¿\94yª{\«wUÄ\8di\91eP\95gQ\98hQ\9dkQ mR¢mR¤nR¥oS§pSªrT¬tU¬tU¬tU¬tU­tU®tUÒt.\83L&¤](¢['¡Z'\9eY&xYN{ZN}[N\7f\N\81]O\83^O\85_O\87`O\88aO\8aaP\8cbP\8dcP\8fdP\90eP\91eQ\93fQ\94gQ\95gQ\97hR\98iR\99iR\9ajR\9bkS\9ckS\9dlS\9elS\9fmS\9fmS mS nS¡nS¡nS¢nS¢nS¢nS¢nS£nS£nS£nR£nR£nR£nR¤nR¤nR¤nR¤nR¤nR¤nR¤nR¤nR£nR£nR£nR£nR£nR¢nR¢mR¢mR¡mR¡mR¡mR lR lR\9flR\9elR\9ekR\9dkR\9ckQ\9cjQ\9bjQ\9aiQ\99iQ\98iQ\97hQ\96hQ\95gQ\94fQ\93fP\92eP\90eP\8fdP\8ecP\8cbP\8bbP\89aO\87`O\86_O\84^O\82]O\7f\O}[N{ZNxYNvWNsVM\9bs[\98rZ~ZD\90nY\8ckYqSBkPAiOA|cVbK?\G>NB?Rv¨Rv¨Rv¨Rv¨Rv¨Rv©Rv©Rv©Rw©Rw©Rw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©.S\85.S\85.S\85.S\85.S\85.S\85Fj\9cFj\9cFj\9cFj\9cFj\9cFj\9c\82¦Ø\82¦Ø\82¦Ø\82¦Ø\82¦Ø\82¦Ø\82¦Ø\82¦Ø\82¦Ø\82¦Ø\82¦ØFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cCg\99Cg\99| Ò| Ò| Ò| Ò| Ò| Ó| Ó| Ó| Ó|¡Ó|¡ÓCg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\9aCg\9aCg\9aCg\9aCg\9a}¡ÓAe\97Ae\97Ae\97@e\97@e\97@e\97@e\97@e\97@e\97@e\97@e\97@d\97@d\97@d\97@d\97@d\97@d\97@d\96@d\96@d\96@d\96%I{@d\96@d\96<1/H72\I@ePGpYN\8fxm\98\80t\96vc¡{e¾\94\93\91p«wU¬uQ\91eP\95gQ\99iQ\9ajQ\9cjQ\9elR¡mR£nR¤nR¤oR¤oR¤oR¤oR¤oRÇg\1cb;  Z'\9eY&\9bW&\93S%vXNyYN{ZN~[N\80\O\82]O\83^O\85_O\87`O\89aO\8aaP\8cbP\8dcP\8fdP\90dP\91eQ\93fQ\94gQ\95gQ\96hQ\98iR\99iR\9ajR\9bjR\9bkS\9ckS\9dlS\9elS\9elS\9flS\9fmS mS mS¡mS¡mS¡mR¡mR¢mR¢mR¢mR¢mR¢nR¢nR¢nR£nR£nR£nR£nR£nR¢nR¢nR¢mR¢mR¢mR¢mR¡mR¡mR¡mR mR lR\9flR\9flR\9elR\9ekR\9dkR\9dkQ\9cjQ\9bjQ\9bjQ\9aiQ\99iQ\98hQ\97hQ\96gQ\95gQ\94fQ\93fP\91eP\90dP\8fdP\8dcP\8cbP\8bbP\89aO\87`O\86_O\84^O\82]O\80\O}[N{ZNyYNvXNtVM\9du\\84]E\80[E\92oZ\8emZ\8akYnRBjOB}cVdL@`I?XGARv¨Rv¨Rv¨Rv¨Rv©Rv©Rw©Rw©Rw©Rw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©SwªSwª.S\85.S\85.S\85.S\85/S\85Fj\9cFj\9cFj\9cFj\9c\82¦Ù\82¦Ù\82¦Ù\82¦Ù\82¦Ù\82¦Ù\82¦Ù\82¦Ù\82¦Ù\82¦Ù\82¦Ù\82¦Ù\82¦Ù\82¦Ù\82¦ÙFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9c\82¦Ù\82¦ÙCg\99Cg\99| Ó| Ó|¡Ó|¡Ó|¡Ó|¡Ó|¡ÓCg\99Cg\99Cg\99Cg\99Cg\9aCg\9aCg\9aCg\9aCg\9aCg\9aCg\9aCg\9aCh\9aCh\9aCh\9aCh\9aCh\9a}¢ÔAe\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97@e\97@e\97@e\97@e\97@e\97@e\97@e\97@d\97%I{%I{%I{%I{%I{@d\96@d\96<10F61o]Vye]\84oe\8exm\9c\82u\94ud\9f{e¥}d¨|aÀ\92\90\8fl¬uQ\90dP\92eP\94fQ\96gQ\98iQ\9bjQ\9cjQ\9cjQ\9cjQ\9cjQ\9ckQ\9ckQ\9dkQ_9 \9cX&\99V&\95T%rUMuWMwXNzYN|ZN~[N\80\O\82]O\84^O\85_O\87`O\89aO\8abP\8cbP\8dcP\8edP\90dP\91eQ\92fQ\94fQ\95gQ\96hQ\97hR\98iR\99iR\9ajR\9bjR\9ckR\9ckR\9dkR\9dlR\9elR\9elR\9flR\9flR\9flR lR mR mR mR¡mR¡mR¡mR¡mR¡mR¡mR¡mR¡mR¡mR¡mR¡mR¡mR¡mR¡mR¡mR mR lR lR\9flR\9flR\9flR\9ekR\9ekR\9dkR\9dkQ\9cjQ\9bjQ\9bjQ\9aiQ\99iQ\98iQ\97hQ\96hQ\95gQ\94gQ\93fQ\92fP\91eP\90dP\8fdP\8dcP\8cbP\8abP\89aO\87`O\86_O\84^O\82]O\80\O~[N{ZNyYNwXNtVMrUM\86^F\82]F\94q\\90o[\8clZqTD\80fX}dWeMAbK@O=6NB@Rv¨Rv©Rv©Rv©Rw©Rw©Rw©Rw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©SwªSwªSwªSxªSxªSxª/S\85/S\85Fj\9cFj\9cFj\9c\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§ÙFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9cFj\9c\83§Ù\83§Ù\83§Ù\83§ÙCg\99Cg\99Cg\99}¡Ó}¡Ó}¡ÓCg\99Cg\9aCg\9aCg\9aCg\9aCg\9aCg\9aCg\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aDh\9aDh\9aDh\9a~¢ÔAe\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97%I{%I{%I{%I{%I{%I{%I{%I{%I{@d\97@d\97E:9D61m\Vwe]lXOuaX\84k_¨\8b\90|¡|e¥|c§|`©z]ªyXÂ\8f\8f\8e\8ei\8fdP\92eP\93fP\93fP\93fP\92fP\93fP\93fP\93fP[7 \97U&\94T%\8dP%pTMsVMuWMxXNzYN|ZN~[N\80\O\82]O\84^O\86_O\87`O\89aO\8abP\8cbP\8dcP\8edP\90dP\91eP\92eQ\93fQ\94gQ\95gQ\96hQ\97hQ\98iR\99iR\9ajR\9bjR\9bjR\9ckR\9ckR\9dkR\9dkR\9ekR\9elR\9elR\9flR\9flR\9flR\9flR lR lR lR lR lR lR lR lR lR lR lR lR lR\9flR\9flR\9flR\9flR\9ekR\9ekR\9dkR\9dkQ\9ckQ\9cjQ\9bjQ\9bjQ\9aiQ\99iQ\98iQ\98hQ\97hQ\96gQ\95gQ\94fQ\93fP\92eP\91eP\90dP\8edP\8dcP\8cbP\8abP\89aO\87`O\85_O\84^O\82]O\80\O~[N|ZNyYNwXNuWMrUM\87`G\84^G\96r]|ZFxXFtVE\81gY~eY{cXbLA[H?REA.R\84.R\84Rv©Rw©Rw©Rw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©SwªSwªSxªSxªSxªSxªTxªTxªTxª\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§ÙFj\9dFj\9dFj\9dFj\9dFj\9dFj\9dFj\9dFj\9dFj\9dFj\9dFj\9d\83§Ù\83§Ù\83§Ù\83§Ù\83§Ù\83§ÙCg\99Cg\9a}¡Ó}¡ÓCg\9aCg\9aCg\9aCg\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9a~¢ÔAe\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97Ae\97%I|%I|%I|%I{%I{%I{%I{%I{%I{%I{%I{%I{%I{%I{@e\97@e\97B99B51k[Vud]iWPr_Wye] \86\8c\90}¡|e¤|c¾\92w¨{^¨z\©yZÁ\90p«xW«wU«wU«wU«wUÃ\8e\8e\8e\8elkD(\92S%\8cP%nSMoTMqUMsVMvWNxXNzYN|ZN~[N\80\O\82]O\84^O\86_O\87`O\89aO\8aaP\8bbP\8dcP\8ecP\8fdP\90eP\92eQ\93fQ\94fQ\95gQ\96gQ\96hQ\97hQ\98iQ\99iR\99iR\9ajR\9bjR\9bjR\9cjR\9ckR\9ckR\9dkR\9dkR\9dkR\9ekR\9ekR\9elR\9elR\9flR\9flR\9flR\9flR\9flR\9flR\9flR\9flR\9flR\9elR\9ekR\9ekR\9ekR\9dkR\9dkQ\9dkQ\9ckQ\9cjQ\9bjQ\9bjQ\9ajQ\9aiQ\99iQ\98iQ\98hQ\97hQ\96gQ\95gQ\94gQ\93fQ\92fP\91eP\90eP\8fdP\8ecP\8dcP\8bbP\8aaP\88aO\87`O\85_O\83^O\82]O\80\O~[N|ZNyYNwXNuWMrUM\9fw_\9cv_\98t^~\GzYGvWF\86j[\7ffZ|dYybX\I@VGB5/2.R\84.R\84.R\84.R\84Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©SwªSwªSwªSxªSxªSxªSxªTxªTxªTxªTxªFk\9dFk\9dFk\9dFk\9d\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§ÚFk\9dFk\9dFk\9dFk\9dFk\9dFk\9dFk\9dFk\9d\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú\83§Ú}¡Ó}¡Ó}¡Ô}¡ÔCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9a~£ÕAe\98Ae\98Ae\98Ae\98Ae\98%J|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I{%I{%I{%I{%I{%I{@e\97@e\97<68?31gYVpa\bRMjYTq`Z\80j`¡\87\8d\91\92\92\92\92\92w§z^¿\91t¿\91s¿\91s¿\90s¿\90r¿\90\90\90r°h2\8bO$\84L$mSMnSMnTMoTMtVMvWNxXNzYN|ZN~[N\80\O\82]O\84^O\85_O\87`O\88aO\8aaP\8bbP\8ccP\8ecP\8fdP\90dP\91eP\92eQ\93fQ\94fQ\95gQ\96gQ\96hQ\97hQ\98hQ\98iQ\99iQ\9aiQ\9aiQ\9ajQ\9bjQ\9bjQ\9cjQ\9cjQ\9ckQ\9ckQ\9dkQ\9dkR\9dkR\9dkR\9dkR\9dkR\9dkR\9dkR\9dkR\9dkR\9dkQ\9dkQ\9dkQ\9ckQ\9cjQ\9cjQ\9cjQ\9bjQ\9bjQ\9ajQ\9aiQ\99iQ\99iQ\98hQ\97hQ\97hQ\96gQ\95gQ\95gQ\94fQ\93fP\92eP\91eP\90dP\8fdP\8dcP\8cbP\8bbP\89aP\88`O\86`O\85_O\83^O\81]O\80\O~[N|ZNyYNwXNtWM£z` y`\9dw`\9au_\80]I|[HwXG\88l\\83i[}eZycYr_WjZU;23.R\84.R\84.R\84.R\84.R\85.R\85.R\85Sw©Sw©Sw©Sw©Sw©SwªSwªSwªSxªSxªSxªTxªTxªTxªTxª/S\85/S\85Gk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9d\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨ÚGk\9dGk\9dGk\9d\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú}¢Ô}¢Ô}¢Ô}¢Ô~¢ÔDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9a\7f£ÕAf\98%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I{%I{Ae\97Ae\97Ae\97?89H=<gZXpb_aSPi[Vud]\98\82\89{\91uf\95wf\99yf²\90\91\91\91\91y¡zb¡zb¡za¡ya¡ya¡ya^=%\93V)kRLlRMmSMmSMnSMoTMoTMvWNxXNzYN|ZN~[N\80\O\82]O\83^O\85_O\86`O\88`O\89aP\8abP\8cbP\8dcP\8edP\8fdP\90eP\91eP\92fQ\93fQ\94fQ\95gQ\95gQ\96hQ\97hQ\97hQ\98hQ\98iQ\99iQ\99iQ\9aiQ\9aiQ\9ajQ\9bjQ\9bjQ\9bjQ\9bjQ\9bjQ\9cjQ\9cjQ\9cjQ\9cjQ\9cjQ\9cjQ\9cjQ\9bjQ\9bjQ\9bjQ\9bjQ\9bjQ\9ajQ\9aiQ\9aiQ\99iQ\99iQ\98iQ\98hQ\97hQ\97hQ\96gQ\95gQ\94gQ\94fQ\93fP\92eP\91eP\90dP\8fdP\8ecP\8dcP\8bbP\8aaP\89aO\87`O\86_O\84^O\83^O\81]O\7f\O}[N{ZNyYNwXNtVM¤{b¡za\9fxa\9cwa\82_J~\IyZItWH\85j]\7fg[dNDr`Xj[VOCB.R\84.R\84.R\84.R\85.R\85.R\85.R\85.R\85.S\85Sw©Sw©SwªSwªSxªSxªSxªSxªTxªTxªTxªTxª/S\85/S\85/S\85Gk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9d\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨ÚGk\9d\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú~¢Ô~¢Ô~¢Ô~¢Ô~¢Ô~¢ÔDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9bDh\9bDh\9bDh\9b\7f£Õ\7f£Õ\7f£ÕDh\9b%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|%I|%I|%I|%I|Ae\97Ae\97Ae\974285.0G??g\[XMK`TRg[Y\8ayt{h`\81lb\87od\8cre\91uf\94vf\96wf\96we\96we­\8d\8d\8d\8c\8czbD.\89T+\81\EkRLkRMlRMmSMnSMnSMsVMvWNxXNzYN|ZN~[N\80\O\81]O\83^O\84_O\86_O\87`O\88aO\8aaP\8bbP\8ccP\8dcP\8edP\8fdP\90eP\91eP\92fQ\93fQ\94fQ\95gQ\95gQ\96gQ\96hQ\97hQ\97hQ\98hQ\98hQ\98iQ\99iQ\99iQ\99iQ\9aiQ\9aiQ\9aiQ\9aiQ\9aiQ\9aiQ\9aiQ\9aiQ\9aiQ\9aiQ\9aiQ\9aiQ\9aiQ\99iQ\99iQ\99iQ\98iQ\98hQ\98hQ\97hQ\97hQ\96gQ\95gQ\95gQ\94fQ\93fQ\93fP\92eP\91eP\90dP\8fdP\8ecP\8dcP\8cbP\8abP\89aP\88`O\87`O\85_O\84^O\82]O\80]O\7f\N}[N{ZNyYNvXNtVM\8efL\8cdL\89cL\86bL\99vb\96ta\91r`\8co_pVHkSGcOE]KDj[WNCB\0\0\0.R\85.R\85.R\85.R\85.R\85.S\85.S\85.S\85.S\85.S\85.S\85SxªSxªSxªSxªTxªTxªTxª/S\85/S\85/S\85/S\85/S\85Gk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9d\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨ÚGk\9dGk\9dGk\9dGk\9dGk\9d\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú~¢Ô~¢Ô~¢Ô~¢Ô~¢Õ~¢ÕDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9bDh\9bDh\9bDh\9bDh\9bDh\9bDh\9b\7f£Õ\7f£Ö\7f£Ö\7f£Ö\7f£Ö\7f¤Ö\7f¤ÖDi\9b&J|&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|Ae\97Ae\97Ae\97\1a\15\14-*.3-0G@Ae\]jabs`Ssjk|qo\83vrtd_{ha\81lc\83mc\83mc\84nc\84nc\9b\84y\9b\84y\9c\84y\9c\84y\A.~ZE\80[F\81]G\83^GkRLlRMlSMmSMqUMsVMuWNwXNyYN{ZN}[N\7f\O\81]O\82]O\84^O\85_O\86`O\88`O\89aP\8aaP\8bbP\8ccP\8dcP\8edP\8fdP\90dP\91eP\92eP\93fQ\93fQ\94fQ\94gQ\95gQ\95gQ\96gQ\96hQ\97hQ\97hQ\97hQ\98hQ\98hQ\98hQ\98iQ\98iQ\99iQ\99iQ\99iQ\99iQ\99iQ\98iQ\98iQ\98hQ\98hQ\98hQ\97hQ\97hQ\97hQ\96gQ\96gQ\95gQ\95gQ\94fQ\93fQ\93fP\92eP\91eP\91eP\90dP\8fdP\8ecP\8dcP\8cbP\8bbP\8aaP\88aO\87`O\86_O\85_O\83^O\81]O\7f\O~[N|ZNzYNxXNvWNsVM\8fgN\8dfM\8adM\87cM\9awc\97ub\93sb\8eparWIkSHbOF]KEj\X_UT@<?.R\85.R\85.R\85.R\85.S\85.S\85.S\85.S\85.S\85.S\85/S\85/S\85/S\85/S\85TxªTxªTxª/S\85/S\85/S\85/S\85/S\85/S\85Gk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9dGk\9d\84©Û\84©Û\84©Û\84©Û\84©Û\84©Û\84©Û\84©Û\84©Û\84©Û\84©Û\84©Û\84©Û\84©Û\84©ÛGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9e\84©Û\84©Û\84©Û\84©Û\84©Û\84©Û\84©Û\84©Û~¢Õ~£Õ~£Õ~£Õ~£Õ~£Õ\7f£ÕDh\9aDh\9aDh\9aDh\9aDh\9bDh\9bDh\9bDh\9bDh\9bDh\9bDh\9bDi\9bDi\9b\7f£Ö\7f£Ö\7f£Ö\7f¤Ö\7f¤Ö\7f¤Ö\7f¤Ö\7f¤Ö\80¤Ö\80¤Ö\80¤ÖEi\9bEi\9b&J|&J|&J|&J|&J|&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|%I|('.,*/>:?YUY`QGfVLudXjeitlm{po|qp}rp~rp\7fsq\7fsq\80tq\8cr_=1+xJ)\92o[~[F\80\G\82^H\84_I\85`IkRLlRMnSMpTMrVMuWMwXNyYN{ZN}[N~\N\80\O\82]O\83^O\84_O\86_O\87`O\88`O\89aP\8abP\8bbP\8ccP\8dcP\8ecP\8fdP\90dP\90eP\91eP\92eP\92fP\93fQ\93fQ\94fQ\94gQ\95gQ\95gQ\95gQ\96gQ\96gQ\96gQ\96hQ\96hQ\97hQ\97hQ\97hQ\97hQ\97hQ\96hQ\96hQ\96gQ\96gQ\96gQ\95gQ\95gQ\95gQ\94fQ\94fQ\93fQ\93fP\92eP\91eP\91eP\90dP\8fdP\8edP\8ecP\8dcP\8cbP\8bbP\8aaP\89aO\87`O\86_O\85_O\83^O\82]O\80\O~\N}[N{ZNyYNwXNuWM\93iO\90hO\8egO\8beO\9eze\9byd\97wd\94tc\8frbtYKjTIaOG[KFj]Y^UU?;@.R\85.R\85.S\85.S\85.S\85.S\85.S\85.S\85/S\85/S\85/S\85/S\85/S\85/S\85/S\85/S\85/S\85/S\85/S\85/S\85/S\85/S\85/S\85Gk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9e\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©ÛGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9e\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£ÕDh\9bDh\9bDh\9bDh\9bDi\9bDi\9bDi\9bDi\9bDi\9b\7f¤Ö\7f¤Ö\7f¤Ö\7f¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤ÖEi\9bEi\9b&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|Af\98Ae\98Ae\98%J|%J|%J|%I|%I|%I|%I|\0\0\0\1f#-#%.()1MEAQIEUMI]SL]TM=4.1+(=.#6,&5( 1%\1e"\1d\e\8clY\90n[\93p\\95r]\81]H\83_I\85`J\9cwa\9eybkRLmSMpTMrUMtVMvWNxXNzYN|ZN}[N\7f\N\80]O\82]O\83^O\85_O\86_O\87`O\88aO\89aP\8aaP\8bbP\8cbP\8dcP\8ecP\8edP\8fdP\90dP\90eP\91eP\91eP\92eP\92fP\93fP\93fQ\93fQ\94fQ\94fQ\94fQ\94gQ\94gQ\95gQ\95gQ\95gQ\95gQ\95gQ\94gQ\94fQ\94fQ\94fQ\94fQ\93fQ\93fP\93fP\92eP\92eP\91eP\91eP\90dP\8fdP\8fdP\8ecP\8dcP\8ccP\8cbP\8bbP\8aaP\89aO\87`O\86_O\85_O\83^O\82]O\81]O\7f\O}[N|ZNzYNxXNvWN¬\82\81\80g\8fhP\8cfP\9f|f\9czf\98xe\94vd\90scsYLiTK_NHYKFh\Z]UV=;@.R\85.S\85.S\85.S\85.S\85.S\85.S\85/S\85/S\85/S\85/S\85/S\85/S\85/S\85TxªTxªTxªTxªTxª/S\85/S\85/S\85/S\85Gl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9e\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©ÛGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9eGl\9e\85©Û\85©Û\85©Û\85©Û\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Õ\7f£Ö\7f£ÖDi\9bDi\9bDi\9bDi\9bDi\9bDi\9b\7f¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤×\80¤×\80¤×\80¤×Ei\9b&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|Bf\98Bf\98Af\98Af\98Af\98Af\98Af\98%J|%J|%J|%J|%J|%J|%I|%I|%I|\a\ 6\ 5\17\1e,\r\1a+\ e\e,\e!.\18\16\18! "\16\15\18\15\15\18\14\14\17\14\15\18\15\17\19`E6\86iY\8clZ\90o\\93q]\95s^\81^J\99va\9bwb\9dyc\9fzd {e¤}foTMqUMsVMuWNwXNyYN{ZN|ZN~[N\7f\O\81]O\82]O\83^O\85_O\86_O\87`O\88`O\89aO\8aaP\8bbP\8cbP\8ccP\8dcP\8ecP\8edP\8fdP\8fdP\90dP\90eP\91eP\91eP\91eP\92eP\92eP\92eP\92eP\92fP\92fP\92fP\93fP\92fP\92fP\92fP\92eP\92eP\92eP\91eP\91eP\91eP\90eP\90dP\90dP\8fdP\8edP\8ecP\8dcP\8ccP\8cbP\8bbP\8aaP\89aO\88`O\87`O\86_O\85_O\83^O\82]O\81]O\7f\O~[N|[N{ZNyYNwXN®\83\83\82\81\80h\8chR\89fQ\86dQ\82bP\95wfx]O\88pd\7fkbtd_m`]OEDG?A;:@.S\85.S\85.S\85.S\85.S\85/S\85/S\85/S\85/S\85/S\85/S\85/S\85/S\85TxªTxªTxªTxªTxªTx«Tx«Tx«Ty«/S\86Gl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9e\85ªÜ\85ªÜ\85ªÜHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9e\85ªÜ\85ªÜ\7f£Ö\7f£Ö\7f£Ö\7f£Ö\7f¤Ö\7f¤Ö\7f¤Ö\7f¤Ö\7f¤ÖEi\9b\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤×\80¤×\80¤×\80¤×\80¥×\80¥×\80¥×Bg\99Bg\99Bg\99Bg\99Bg\99&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Af\98Af\98%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|%I|\0\0\0\14\18\1e\r\1a+\ e\e,YA5jPBpSD\8bl[\8fo]\92q^\96t`\82_K\9awb\9cyc\9eze {f¡}g¤\7f\81i\94lSrVMtWMvWNxXNyYN{ZN|[N~[N\7f\O\81]O\82]O\83^O\84_O\85_O\86`O\87`O\88`O\89aP\8aaP\8bbP\8bbP\8cbP\8dcP\8dcP\8ecP\8ecP\8fdP\8fdP\8fdP\90dP\90dP\90dP\90dP\90dP\90eP\90eP\90eP\90eP\90eP\90dP\90dP\90dP\90dP\8fdP\8fdP\8fdP\8ecP\8ecP\8dcP\8dcP\8cbP\8bbP\8bbP\8aaP\89aO\88`O\87`O\86`O\85_O\84^O\83^O\82]O\80]O\7f\O~[N|[N{ZNyYNxXN°\85\84\84\83\82\80j\8chS\8agS\86eR\83cR|`Q\8csf\85oe}jcrd`k_]LCDC=@,,3(4F(4F.S\85.S\85/S\85/S\85/S\85/S\85/S\85/S\85/S\85TxªTxªTxªTxªTxªTxªTx«Tx«Tx«Ty«Ty«Ty«\85ªÜHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9e\86ªÜHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eCh\9aCh\9a\7f¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤ÖEi\9bEi\9bEi\9b\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤Ö\80¤×\80¤×\80¤×\80¤×Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Bg\99Bg\99&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98&J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|\17#5H71O;3V?4iOBoSDsVF\8do]{[I\7f^K\83`L\85bN\87dO\9f{f }g¢~h¥\80j\92kT\95mU\98oV\9aqW\9drWwXNxXNzYN{ZN}[N~[N\7f\O\80]O\82]O\83^O\84^O\85_O\85_O\86`O\87`O\88`O\89aO\89aP\8aaP\8bbP\8bbP\8cbP\8cbP\8ccP\8dcP\8dcP\8dcP\8ecP\8ecP\8ecP\8ecP\8ecP\8ecP\8ecP\8ecP\8ecP\8ecP\8dcP\8dcP\8dcP\8ccP\8cbP\8bbP\8bbP\8bbP\8aaP\89aP\89aO\88`O\87`O\86_O\85_O\84_O\84^O\83^O\81]O\80\O\7f\N~[N|ZN{ZNyYN\9boT\9aoT\99oT\97nT¬\84\83\82l\8fjU\8ciT\8ahT\86fT\80cS\90vi\89rg\81nfyidqdah^^HBD?<@)+3OZkMYk(5F(5F(5F/S\85/S\85/S\85/S\85/S\85TxªTxªTxªTxªTxªTxªTx«Tx«Ty«Ty«Ty«Ty«Uy«\86ªÜ\86ªÜ\86ªÜ\86ªÜHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9e\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eDh\9aDh\9aDh\9aCh\9a&K}&K}&K}&K}&K}&K}Ch\9aCh\9aCg\9aCg\9aCg\9aCg\9aCg\9aCg\9aCg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99&J|&J|&J|&J|&J|&J|Bg\99Bg\99Bg\99Bf\99Bf\99Bf\99Bf\99Bf\99Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|A99N?;L:2T>4gNBlRD\87k\\8bn^z[J~^L\81aN\85cO\87dP\89fQ\8agR\8chT\8fjU\92lV\95nW\98pX\9arX\9dsY¶\8b\8d\8e\8f\90r¿\90s©z[©z[ªz[«{[¬{[¬{ZÅ\93\92\92\92\92\91o­yV­xV¬xU¬wT¬wT\8aaP\8abP\8bbP\8bbP\8bbP\8bbP\8bbP\8bbP\8bbP\8bbP\8bbP\8bbP\8bbP\8bbP\8aaP\8aaP\8aaP\89aP\89aO\88aO\88`O\87`O\87`O\86_O\85_O\84^O\83^O\82^O\82]O\81]O\80\O~\N}[N|ZNzYN\9dpT\9cpU\9bpU\9apU\98oV\97oV\95nV\93mV\91lV\8fkV\8cjV\88hV\83fU~cU\8duj\86qh~mfugdkaad\^E@D98?$(2minffm^blV^lMYk(5F(5F/S\85TxªTxªTxªTxªTxªTxªTxªTx«Tx«Ty«Ty«Ty«Uy«Uy«\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜHl\9eHl\9eHl\9eHl\9eHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9f\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86ªÝHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9f'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}Ch\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCg\9aCg\9aCg\9aCg\9aCg\9aCg\9aCg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99&J|Cg\99Cg\99Cg\99Cg\99Cg\99Bg\99Bg\99Bg\99Bg\99Bg\99Bg\99Bf\99Bf\99Bf\99Bf\99Bf\99Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98&J|&J|&J|&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|%J|Ae\98Ae\98;GY<68I=:I82Q=4XA6~fZ\84j\\89m^\8dp`|]L\80`N\83cP\86eQ\88gS¡\7f\80\82\84n\95oX\98qY\9arZ\9dt[¶\8c\8d\8f\90\90\91t¨z]©{]ª{]«{\«{\¬{\¬{[Ä\93\93\92\92\92\91p¬yWÄ\90\90\8f\8f\8e\8e\8dk\88aO\88aO\88aO\88aO\88aO\88aO\88aO\88`O\88`O\87`O\87`O\87`O\86`O\86_O\85_O\85_O\84_O\84^O\83^O\82]O\81]O\80]O\7f\O~\N}[N|ZN¶\89\89\88m\9cqV\9bqV\9aqV\99pW\98pW\96oW¬\85\85\84\82n\9f\80n\9b~n\80eW\91xl\8atk\82piykfodcf_`JDG@>C*,5\1d$1MYk\81tr~tstmolinadmX_lNZkMZkTxªTxªTxªTxªTx«Tx«Tx«Ty«Ty«Ty«Uy«Uy«Uy«\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86«Ý\86«Ý\86«Ý\86«ÝHl\9fHl\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9f\86«Ý\86«Ý\86«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«ÝHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9f'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh\9aDh\9aDh\9aDh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCg\9aCg\9aCg\9aCg\9aCg\9aCg\9aCg\99Cg\99Cg\99Cg\99Cg\99&J}&J}&J}Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Bg\99Bg\99Bg\99Bg\99Bg\99Bg\99Bf\99Bf\99Bf\99Bf\99Bf\98Bf\98Bf\98Bf\98Bf\98&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|Af\98Af\98Af\98Af\98;GY;GY;GY1'!D:9N?;N;3]I?zdY\80h[\86l^\8boa\90sc\93ue\80bQ\84dR\87fT \7f\81\83\85\87\88\8a\8bs\9ev] w]¹\8f\90\91\91u¿\92v¨{^©{^ª|^«|]«|]«{\¬{\¬{[¬{[¬zZ«zZ«yY«yX«xXÂ\90\8f\8f\8e\8em¨uT¨uS§tS§tS§tR¦sR¦sQ\85_O\85_O\85_O\84^O\84^O\83^O\83^O\82^O\82]O\81]O\80]O¢rS¡rS¡rS¸\89\89\89\89\89\89\89\89n\9bqW\9aqX\99qX®\87\87\86\85\83\81p\9c\7fp\97}o{cXv`Vp]U}nishfhaba\_DAF::B$)4\ 2\ 1\0MYkMYkMYk\8ctc\81tq\QPPIKFDI;>H/8GMZkTxªTx«Tx«Tx«Ty«Ty«Ty«Uy«Uy«Uy«\86«Ý\86«Ý\86«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«ÝHm\9fHm\9fHm\9fIm\9fIm\9fIm\9fIm\9fIm\9f\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«ÝIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9f'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCg\9aCg\9a&K}&K}&K}&K}&J}&J}Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Bg\99Bg\99Bg\99Bg\99Bg\99Bg\99Bf\99Bf\99Bf\99Bf\99Bf\98Bf\98&J|&J|&J|&J|&J|&J|Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98;HY;HY;GY;GY;GY;GY;,#I=:H82YF?^JA|e[\82j]\88n`\8cqc\90te\94wg\97yi\9a|k\9d~l \80\82\83\85\89\8as\9bu]\9ev^\9fw^¡x_£y_¤z_¥z_¦{_¿\93w¿\93\93\93\93\93\93\93tª{\ª{\ªz[ªzZªyZªyY©xXÁ\90\8fo¨wW¨vV§vV§uU¦uU¦uT¥tT½\8c\8b\8b\8b\8b\8b\8ak¢sT¢rT¢rT¡rT¡rT¡rU rU rV·\8a\8a\8a\8a\8a\89\89\89p\99qY®\88\87\86\85\84\82r\9c\80q\80gZ{dYvaXp^WiYU`TRVNOb]aEBH<<D36@\19\19\1cMYkMYkMYkMYkMZk-.1W>+[NL^SQWNNKFJ?AI2:HTx«Ty«Ty«Ty«Uy«Uy«Uy«Uy«Uy«\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«ÝIm\9fIm\9fIm\9fIm\9f\87«Ý\87«Ý\87«Ý\87«Ý\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«ÞIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9f'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aCh\9a&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}Cg\9aCg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Bg\99Bg\99Bg\99Bg\99Bg\99Bg\99Bf\99Bf\99Bf\99&J|&J|Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98Bf\98;HY;HY;HY;HY;HY;HY;GY3("D::B41RB=YG@wcZ}g\\83k_\87nb\8crd\90ug}aR\81dT\84gV\87iX\89kY¢\83\84\85\86t\91p^\92q^\9fw` x`¢y`£z`¤za¥{a½\93\93x¿\93w¿\93\93\93\93\93\93\92\92\91\91\91r¿\90r¿\90q¿\8f\8f\8e\8e\8eo¥vW¼\8d\8c\8c\8c\8c\8c\8bm¢tV¡sV¡sV¡sV sV sW\9fsW\9fsX\9esXµ\8a\8a\8ap\9csY\9bsY\9arZ\98r[\96r\\94q\\91p]¦\86\84t\9f\83s\9c\81s\80h\{e[vbYo^XhZV`USXPQNJMECJRS[47A+((\ f\13\19MYkMYkMYkMZk(5F(5F(5FOHJT=+YML_SRZQQMGJABI2:H/T\86Uy«Uy«Uy«Uy«Uy«Uy«\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬ÞIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9f\88¬Þ\88¬Þ'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9aDh\9a'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}Cg\9aCg\9aCg\9aCg\9aCg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Bg\99Bg\99Bg\99Bg\99&J|&J|Bf\99Bf\99Bf\99Bf\99Bf\98Bf\98Bf\98Bf\98Bf\98;HY;HY;HY;HY;HY;HY>DM>DM;HY89<:+#9&\1aB52I94ZHAxd[}g^\81k`\86nc\8brey_R}bT\81eV\83gX\85iY\88k[\8al\\8cn]\8do^¥\87\88v\9ava\9cwa\9exa yb¢zb¤{b¤{a¼\93\93x¦|a§|a§|`§{`§{_§{_§{^§z^¾\91\91\91\90\90\8f\8fr¥wZ¤wZ¤vY¤vY£vY£uX¢uX¢uX¢uX¹\8c\8c\8c\8c\8b\8b\8b\8b\8bq\9dtZ\9bt[\9as\\99s\\98s]\96r]\94r^\92q^\8fp^\8do^\8an^\87l^\83j^\7fh]{f\ub[n^YgZW_UTWPQOKOEEKST]JNY>=?\15\17\1cJJIMYkMYk(5F(5F(5F(5F(5F)5G)5GK=4S<*XMLbWVYPPLGJ@AI/T\86/T\86Uy«Uy«Uy«\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬ÞIm\9fIm\9fIm\9fIm \88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬ÞIm Im Im Im Im Im Im Im \88¬Þ\88¬Þ\88¬Þ\88¬Þ'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh\9bDh\9bDh\9bDh\9bDh\9aDh\9aDh\9aDh\9a'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}Ch\9aCh\9aCg\9aCg\9aCg\9aCg\9aCg\9aCg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99Cg\99&J|&J|&J|&J|&J|Bg\99Bg\99Bg\99Bf\99Bf\99Bf\99Bf\99Bf\98Bf\98;HY;HY;HY;HY;HY;HYCIR>DMCIR;HYCIR.$\1d0"\198&\1a?*\1cG/\1fV=+w[F{g^\80kanXMs\Px_S{bU~dW\81fY\83hZ\86j\\88l]\8am^¢\85\88\8a\8c\8d\8e\8f\90\91\92z£{b£{b¤{b¥{b¥{a¥{a¥{`¥{`¥z_¥z_¥z^¼\91u¥y]¤y]¤x]¤x\£w\£w[¢w[¢v[¢v[¡v[¡v[¸\8d\8d\8d\8c\8c\8c\8c\8c\8b\8bu\98t^\96s_\95s_\93r_\92r`\90q`\8dp`¡\85w\9e\84v\9b\82v\97\80u\93~twd]sb[l^ZeYW]TUUORLJOYYaRU^JOZ>>@!$)\10\12\15RXaMYk39B-3<-3<(5F)5G)5G)5G)5G)5GFDJK9*^K=YONg\\TLMIFJ:>I0T\860T\86Im\9f\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬ÞIm Im In In In In In In \88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88¬ßIn In In In In \88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Di\9bDi\9bDh\9b'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}Ch\9aCh\9aCh\9aCh\9aCh\9aCg\9aCg\9aCg\9aCg\9aCg\9aCg\99Cg\99Cg\99Cg\99Cg\99Cg\99&J}&J}&J}&J}&J|&J|&J|&J|&J|Bg\99Bg\99Bg\99Bg\99Bg\99Bf\99Bf\99<HZ<HZ<HZ<HZ;HY;HYCIR>EM>EMCIR;HY;HYCIRCIR)\1d\156&\1a8&\e@*\19H0\1dI1!\B0}_JhTKjM8q[Pt]Sw`U{cW~eY\81g[\83i\\85k^\87m_\9f\85\86\88\8a\8b\8d\8e\8f\8f\90\90{\9ezd\9fzd zc zc¡zc¸\91\91\91\91\90\90\90\90\8f\8fw\9fw_\9fw_\9ew_µ\8e\8e\8d\8d\8d\8d\8c\8c\8c\8b\8b\8a\89\89\88\87\86x\9e\85x\9b\83w\97\81v\92~v\8e|t\89ys\84vrh\YcXX[TUSNRIHOUXaNS^JFE>>A')+"%(\ 1\b\104:C(5F(5F3:B3:B-3<-3<)5G)5G)5G)5G)5G)5GE:4O:*TKLbXWcZZPIKDCJIm Im Im Im \88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬ß\88¬ß\88¬ß\88¬ßIn In In In In In Jn Jn Jn Jn Jn \88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\89­ß\89­ß\89­ß\89­ß\89­ßJn \89­ß\89­ß\89­ß\89­ß\88­ß\88­ß\88­ß\88­ß'K~'K~'K~'K~'K~'K~'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh\9aDh\9aDh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCh\9aCg\9aCg\9aCg\9aCg\9a&K}&K}&J}&J}&J}&J}&J}&J}&J}&J}&J|&J|&J|Cg\99Cg\99Cg\99Bg\99Bg\99Bg\99<HZ<HZ<HZ<HZ<HZMS\CIR>EMCIRCIRCIR888DGNCJRCIRBBB(\1d\15\158&\e<)\1cG0\1fM5"X@0z^K\86bF\8akUlXPp[Rs^TvaVzcX}fZ\7fg\\81i]\99\81u\9b\82v\9d\84w\9f\86\87\89\8a\8b\8c{\95ve\96ve\97we\98we°\8f\8f\8f\8f\8f\8f\8f\8f\8f\8f\8e\8e\8e\8ey\99vb\98vb\97vb\96ub\95ub\95uc\94tc\93tc\92sb\90sc\8frc\8dqc¢\87\86y\9d\85y\9b\84x\98\82x\95\81w\92\7fw\8d|u\88yt\83vs~sqyooslmVQTOLR[\dQU`KHHAAD:<@68;\1c &\ 1\ 1\ 1\0\ 2\ 5Z`i-4<%');AJ4:C4:C4:C-4<)5G)5G)5G)5G)6G)6G@84H8-N?5YPQmccoghd`dIn In In In In In \88¬ß\88¬ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ßJn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn \89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ßJn Jn Jn \89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~Ei\9bEi\9bEi\9bEi\9b'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh\9aDh\9aDh\9aDh\9aDh\9aDh\9aCh\9aCh\9aCh\9a&K}&K}&K}&K}&K}&K}&K}&K}&J}&J}&J}&J}&J}&J}&J}&J}&J}Cg\99Cg\99Cg\99Cg\99<IZ<IZ<HZ<HZ<HZ<HZ?EN?ENCJRCJRCJRCJRCJRUU\CJRCJRBDG''''''(\1c\14\159(\1c:(\1cB-\1eO8'kUFt[I\88hQyic}le\81og\85rj\88tl\8bwn\8dyp\8fzq\91|s|g]~h_\80j`\81ka\82la\87ob\89pc\8aqd\8crd\8drd\8ese\90te\91te\92ue©\8c\8c\8c\8c\8c\8c\8c\8c|\92ue\92ud\92ud\91td\90td\8fsd\8esd\8drd\8crd\8bqd\8aqd\89pc\87oc\84nc\99\83y\96\82y\93\80x\90~w\8d}w\8a{v\87yu\82vs}srxopqknkgkdbhGGOVYcPLLBCF;>B9;>68;\e\1d\1f\0\0\0\ 2\ 2\ 2\0\ 2\ 5Z`iZ`iMZk)5G4:C-4<4:C4:C-4<;BJ)5G)6G)6G)6G)6G)6GC6-L;.leg\84{{ypqhbeVYcJn Jn Jn Jn Jn Jn Jn \89­ß\89­ß\89­ß\89­ß\89­ß\89­ßJn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn \89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­à\89­à\89­à\89­à\89­à\89­à\89­à\89­à\89­à\89­à\89­à\89­à\89­àJn¡Jn¡Jn¡Jn¡Jn¡Jn¡Jn¡\89­à\89­à\89­à\89­à\89­à'L~'L~'L~'L~'L~'L~'K~'K~'K~Ei\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9b'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh\9aDh\9aDh\9aDh\9aDh\9a'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&J}&J}&J}&J}&J}&J}Cg\99Cg\99Cg\99<IZ<IZ<IZ<IZ<IZ<IZ?ENDJSDJSDJS?EN?EN?EN<HZ04?'.6'.6&(+''''''\1d\1d\1d,\1f\18)\1d\151#\187&\19;)\1dM8)S;+mVG\85dKseawhc{kf\7fnh\82pj\84rl\86tm\88votaZvc[wd]yf^zg_{h`|i`~ja\80kb\81lb\83mc\84nc\86od\87pd\87pd\88pd\88pd\88pe\9f\87{\88pe\88pe\88pe\88pe\88pd\86od\85od\84nd\83md\82mc\80lc\7fkc}jc|jbyhb\8d}w\8a{w\87yv\84wu\80ut}sryqqunpojmhfkKKRDFOD><535=AG=?D?AD<?B&(+"$'\0\0\0\0\0\0\0\0\0\0\ 2\ 5KRZTZcMZkKOVRYaSYb.4=.4=4:C.4=4:C)6G)6G)6G)6G)6G)6GWMFaRGhbe{su\85}}kde_^dJn Jn Jn Jn Jn Jn Jn Jn \89­ß\89­ß\89­ßJn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn¡Jn¡Jn¡Jn¡Jn¡Jn¡Jn¡Jn¡Jn¡Jn¡Jn¡Jn¡Jn¡\89®à\89®à\89®à\89®à\89®à\89®à\89®à\89®à\89®à\89®à\89®à\89®à\89®à\89®à\89®à\89®àJo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡\8a®à\8a®à\89®à\89®àFj\9cFj\9cFj\9dFj\9dFj\9d'L~Ei\9cEi\9cEi\9cEi\9cEi\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9b'K~'K~'K~'K~'K~'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh\9a'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&J}&J}&J}&J}Cg\99>==<IZ<IZ<IZ<IZ<IZMT\DJS?ENDJS?EN?EN?EN")1")1C5+//3(.7&),'''''''''"""\1c\1c\1c\1a\12\r.\1e\11\187(\1d8'\eA1&F4(L8*oXIw]Jpdasfcvhexkg{mi~oj\80qll\Xn^Yp`Zpa[qa\rb]rc^sc^sd_ue`wf`xgayhayhayhb\90\7fx\90\7fy\91\7fy\91\7fy\91\7fy\91\7fy\90\7fy\8f~ywgbvfateasd`qd`pc`nb_la_\80ut|ssxqrunpZUXVRWROUMMSHIRIC@967-/3'+0(*-ACF?AD;=@#%(\ 1\ 1\ 1\0\0\0\0\0\0\0\0\0\0\0\0\ 1\ 1\ 1JMPU[dSYbKPVW]fY`hSYbSYb.4=4;C4:C.4=)6G)6G)6GCPaCPaCPaFED]PGdaesmo\8a\82\83mefb_dJn Jn Jn Jn Jn Jn Jn Jn Jn¡\89­àJn¡Jn¡Jn¡Jn¡Jn¡Jn¡Jn¡Jn¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Ko¡\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®àKo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡\8a®à\8a®àFj\9dFj\9d\83§Ù\83§Ù\83§Ù\83§Ú\83§Ú\83§Ú\83§Ú\83¨ÚEi\9cEi\9cEi\9cEi\9cEi\9cEi\9cEi\9bEi\9b'K~'K~'K~'K~'K~'K~'K~'K~'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh\9bDh\9b'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&J}@K[=IZ<IZ<IZ<IZ<IZNT]DJS?ENDJS#)2#)2#)2#)2#)2'.6A4+028(.7'),)))######"""\1c\1c\1c6$\16nP?\1a\13\r.\1e\11+\1f\17>1(B3)B2&F4'E4)gTGlXJs^OzcTzaPqfethgvjhbVTcWUdXVeYWfZXg[Yh\Zi]Zi][j^\\80us\80us\7fus\7fts~tt~tt}tt|st{st\7fut~tt|sszrsyqrwpquoqsmpqloXTXTQWPOULLSSJEA<:=99757335./2113)+.'),)+.8:=\1e"(\0\0\03@Q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 1\ 1\ 1JMPV\eT[cNZlNZlZ`iZ`iZ`iZ`iSYbY`h4;C.4=)6GCPaCPaCPaCPaCPaEQbZOGa_emhk\8a\83\84nfgeaeJn¡Jn¡Jn¡Jn¡Jn¡Jn¡\8a®à\8a®à\8a®à\8a®à\8a®àJo¡Jo¡Jo¡Jo¡Jo¡Jo¡Jo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡\8a®à\8a®á\8a®á\8a®á\8a®á\8a®á\8a®á\8a®áKo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡\83§Ú\83§Ú\83§Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\83¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨ÚEj\9cEi\9cEi\9cEi\9cEi\9c'L~'L~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K}'K}'K}'K}'K}'K}'K}Di\9bDi\9bDi\9bDi\9bDh\9bDh\9b'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}&K}$.>=I[=I[<IZ<IZ<IZ?FN'.6#)2#)2#)2#)2#)2#)2(.7#)2\1f,=@<A348)/8"$'"$'######"""\1c\1c\1c\1c\1c\1c"\14       kF+;(\19\1a\13\r"\e\166*#5*">2)>0&A2'C3(I8-^OFbRHfUJjXMq^RwcVzfYfRDfQCdN@zdTqijrjksklrklrklrklqjmpjmpjmojmojmnimmimkhliflscYm`Xg\VbYT^VRE>;A<:>98:77645:873220/0,-/)+.*,/#%(\e &\0\0\0\0\0\015;5BS\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0KKKJMP]dlU[dNZlNZlZ`iTZcZaiZaiZ`iZ`iSZb\8e\94\9dLS[V]eDPbDPbDPbDPbDPbDPbWMF^^diei®\94\86\85rkeaeJo¡Jo¡Jo¡Jo¡\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®àKo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡\8a¯á\8a¯á\8a¯á\8a¯áKo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡\83¨Ú\83¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Û\84¨ÛGk\9d'L~'L~'L~'L~'L~'L~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~Ei\9bEi\9bEi\9bEi\9bEi\9bDi\9bDi\9bDi\9bDi\9bDi\9b'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}%/> ,>=I[=I[ ,> ,>#)2(.7#)2(.7#)2#)2#)2#)2(.7(.7(.767@D>A214$+3#%("$'###""""""&&&\1c\1c\1c888888cB*}\I@!\b\e\17\14%\1e\19+%!5*$:/(;0)<1*>3+@4+>1(bUKN@6OA6L=3QB8M?4_RKaTLbUMcVNcVNcVObVOaVOaUO`UO_UO^UO^TO\SOYRNWPNUOMWPKYSOWRN;63953:76755333,/2'),%(+"%(\1c!'                       \0\0\0\ f\10\12"&,KXi04:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 3\ 3\ 3JMP]_b^emU[dNZlNZlT[cU[dU[dU[d[aj\8f\95\9e\8f\95\9e\8f\95\9e\88\8e\97\96\9d¥W]fDPbDPbDPbDPbDPbDPb\91nS\9e\85w\97|m¨\8f\82\83qjKo¡Ko¡Ko¡\8a®à\8a®à\8a®à\8a®á\8a®á\8a®á\8a®á\8a®á\8a®á\8a¯á\8a¯á\8a¯áKo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Û\84¨Û\84¨Û\84¨Û\84¨Û\84©Û\84©Û\84©Û\84©ÛGk\9dGk\9dGk\9dGk\9dGk\9dGk\9d'L~'L~'L~'L~'K~'K~'K~Ei\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9bEi\9bDi\9bDi\9b'K}'K}'K}'K}Hl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9e'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}*2? ->=I[=I[ ,> ,> ,>#)2#)2#)2(.7(.7#)2#)2(.7(.7(.7(.7/28:79G@A<89',4#%(#%(######""""""\1c\1c\1c8888888887'\1avS:\8bjW;)\1c\b\ 4\0\ f\f
-\16\11\r\19\13\ e\1e\16\11&\1e\1a3#\18.$\1e-% .% .& /&!,#\1d,#\1d@70A71XNHXNHWNHWNHZRLYQLYQLXQLWQLWPLUOLSNLQMKOLJMJJ0//.-.,,-&(+\1e"(\1d!'\13\16\19\v\v\v                        \0\0\0\14\18\1e\13\14\1615;6CT37=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0MMMKMP^ad_enY`hNZlNZlU\dV\e\8a\91\99\8a\90\99\8a\90\99\90\96\9f\90\96\9f\8f\96\9e\8f\95\9e\8d\93\9c\97\9d¦\8c\92\9b\83\90¡DQbDQbDQbDQbDQbMUc¤\8d\83\91yl\9f\87|\80oiKo¡\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯áKo¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢\8b¯â\8b¯â\8b¯â\8b¯âLp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Ú\84¨Û\84¨Û\84¨Û\84¨Û\84©Û\84©Û\84©Û\84©Û\84©Û\84©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©ÛGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9eGk\9e\85©Û\85©Ü\85©Ü\85©Ü\85©Ü\85©Ü\85©Ü\85ªÜ\85ªÜ\85ªÜ\85ªÜ\85ªÜ\85ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9e'K}'K}'K}'K}'K}'K}'K}'K}'K}HO\=J[=J[=J[ -> ,> ,>(.7#)2#)2(.7(.7(.7#)2(.7(.7(/7(/7)/8/28114H7,99@.05&,5$&)$$$######"""(((8888888888888884"\14nO9\84gX\88jZE/ (\19\ e\a\ 3\0-"\1c\r\v
-\12\ f\f\15\11\ e\16\12\ e\18\13\ f\19\14\10\1c\17\12\1c\19\17%\1f\e\1c%\1a\12$\19\12#\19\11"\18\11 \17\11\1f\16\10\1c\19\18\e\19\18\1a\19\18!\1f \1f!$\17\1a\1d\r\r\r\f\f\f\f\f\f\v\v\v                                            \ 4\ 6\b\ 1\ 1\ 1\0\0\0\13\15\1748>7CU:GX\v\ f\15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0JJJLLLKMPagp_enNZlLPV\98\9f§\8c\92\9b\8c\92\9b\8c\92\9b\8b\92\9a\8b\91\9a\8a\91\99\91\97 \90\96\9f\90\96\9f\90\96\9f\8d\93\9c\8d\93\9c\97\9d¦\84\90¢\84\90¢DQbDQbDQbDQbNVc\85uo\87rjѼ³º«§\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯áKp¢Kp¢Kp¢Kp¢Kp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢\8b°â\8b°â\8b°â\8b°â\8c°â\8c°â\8c°âLp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢\84¨Û\84¨Û\84¨Û\84©Û\84©Û\84©Û\84©Û\84©Û\84©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©ÛGk\9eGk\9eGk\9eGl\9eGl\9eGl\9e\85©Ü\85©Ü\85©Ü\85ªÜ\85ªÜ\85ªÜ\85ªÜ\85ªÜ\85ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9e'K}'K}'K}'K}Dh\9aDh\9aDh\9aIP\=J[=J[=J[=J[ -> ->(.7#)2#)2(.7(.7(.7#)2(.7(/7(/7)/8)/8)/803966:E?AC>A856,07%'*%')$$$######(((DDDBBB888888888\1c\1c\1c\1c\1c\1c\1c\1c\1c\14cF1w]O\81cS{`QS;+5\e\ 67'\1c\17\r\ 4\r\ 6\ 1\17\r\ 5\1c\11\b\e\1f\16\ f                                                                                                                      \ 5\ 3\ 1\ 4\ 2\0\ 4\ 2\0       \a\ 4\f\r\ f\f\10\16\b\b\b\ 1\ 1\ 1\ 1\ 1\ 1\ 1\ 1\ 1\ 6\a  \11\14\17;?E7CU;HY=I[\f\11\17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0JJJMMMKMPacfbhq\91\97 \83\90¡\83\90¡\91\97 \8d\93\9c\8d\93\9c\8d\93\9c\8c\93\9b\8c\92\9b\8c\92\9b\8b\91\9a\91\97 \91\97 \90\97\9f\99\9f¨\8d\94\9c\8d\93\9c\8d\93\9c\84\91¢\84\91¢\84\91¢\84\91¢EQcHScNVd´¨§¿®¨Èµ®¯\9d\91\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯â\8b¯â\8b¯â\8b¯â\8b¯â\8b¯â\8b°â\8b°â\8b°â\8b°â\8b°â\8b°â\8b°âLp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°âLp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp£Lp£Lp£Lp£Lp£Lp£Lp£Lp£Lp£Lp£Lp£\84©Û\84©Û\84©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Ü\85©Ü\85©ÜGl\9eGl\9e\85ªÜ\85ªÜ\85ªÜ\85ªÜ\85ªÜ\85ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÝHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9e\87«Ý\87«ÝDh\9aDh\9aDh\9aDh\9a=J[=J[=J[=J[=J[=J[ ->(/7#)2#)2(.7(.7(.7#*2(/7)/8)/8)/8)/8)08*0903:56:88@KBB=;@348*08&(+'(*%%%$$$(((EEE(((&&&\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\0\0\0"\18\10>-"bF3oXMs[Ow]Py^P\8dqbpXMdH5R<,Q;,\e &\e\1f%\1a\1e%#'-"'-&3DS_qP\nR_p>J\?K]<AG\10\15\e\ e\10\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0%%%DDDACF\98\9a\9d\99\9f¨\9f¦®\84\90¢\84\90¢\84\90¢\92\99¡\8f\95\9e\8e\95\9d\8e\94\9d\8e\94\9d\8d\93\9c\8d\93\9c\8c\92\9b\8c\92\9b\92\98¡\9a ©\99 ¨\99\9f¨\8e\94\9d\8e\94\9d\8d\93\9c\84\91¢\84\91¢\84\91¢\84\91¢\85\91£\89\93£\8e\96¤¬¥§º¬¨À¯©\8b¯â\8b¯â\8b¯â\8b°â\8b°â\8b°â\8b°â\8b°â\8b°â\8b°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°âLp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp£Lp£Lp£Lp£Lp£\8c°â\8c°ã\8c°ã\8c°ã\8c°ã\8c°ã\8c°ã\8c°ã\8c°ã\8c°ã\8c°ã\8c°ã\8c°ã\8c°ã\8c°ãLq£Lq£Lq£Lq£Lq£Lq£Lq£Lq£Lq£Lq£Lq£Lq£Lq£Lq£Lq£Lq£\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Ü\85©Ü\85©Ü\85©Ü\85©Ü\85ªÜ\85ªÜ\85ªÜ\85ªÜGl\9eGl\9e\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86«Ý\86«Ý\86«Ý\86«ÝHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9f\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«ÝDh\9aDh\9a=J[=J[=J[=J[=J[=J[=J[(/739B#)2(.7(/7(/7#*2$*3)/8)/8)/8)08*09+19(-5*.5/16437D>AG@B::@66:-29'),)'%BBBFFFEEE)))))))))&&&\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0                                                                                                                                                                     \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e@@@FFFACFZ\_[ajagp\84\90¢\84\90¢\84\90¢\9e¥­\9f¦®\97\9d¦\96\9d¥\8f\96\9e\8f\95\9e\8e\95\9d\8e\94\9d\8d\94\9c\8d\93\9c\91\97 \90\97\9f\9b¡ª\9a ©\99 ¨\8e\95\9d\8e\94\9d\8e\94\9d\85\91£\85\91£\85\91£EQcGRcKTdPWd­¥§¿¯ª\8b°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°ã\8c°ã\8c°ã\8c°ã\8c°ãLp£Lp£Lq£Lq£Lq£Lq£Lq£Lq£Lq£\8c±ã\8c±ã\8c±ã\8c±ã\8c±ã\8c±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ãMq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£\85©Û\85©Û\85©Û\85©Û\85©Û\85©Û\85©Ü\85©Ü\85©Ü\85©Ü\85©Ü\85ªÜ\85ªÜ\85ªÜ\85ªÜ\85ªÜ\85ªÜ\86ªÜHl\9eHl\9eHl\9eHl\9eHl\9e\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86«Ý\86«Ý\86«Ý\86«Ý\86«Ý\86«Ý\86«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«ÝHl\9eHl\9eHl\9fHl\9fHl\9fHl\9fHl\9f\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Þ\87«Þ\87«Þ\87«Þ\81\8d\9f>J\>J\=J[=J[=J[=J[FLU39B#*2(/7)/7)/8$*3$*3$*3)/8)08*09*09*19',5(-5*.6.17338@<=G@BH@BXW]UUXLPWFHKDFHKKKHHH+++%%%%%%$$$###!!!!!!\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e777777777777777777777\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\eAAAFFFACFACF\^aeltbhqDQbDQbDQb\9f¥®¡§°¡§°¡§°¡§°\97\9d¦\90\96\9f\94\9a£\94\9a£\93\99¢\92\99¡\92\98¡\91\98 \91\97 \9b¡ª\9b¡ª\9a ©\8f\95\9e\99\9f¨\8e\94\9dERcERcERcERcHScLUdRXd|nj\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°ã\8c°ã\8c°ã\8c°ã\8c°ã\8c±ã\8c±ã\8c±ã\8c±ã\8c±ã\8c±ã\8c±ã\8c±ã\8d±ã\8d±ã\8d±ã\8d±ãMq£Mq£Mq£Mq£Mq£Mq£\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ãMq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£\85©Ü\85©Ü\85©Ü\85©Ü\85©Ü\85ªÜ\85ªÜ\85ªÜ\85ªÜ\85ªÜ\85ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9e\86ªÜ\86ªÜ\86ªÜ\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86ªÝ\86«Ý\86«Ý\86«Ý\86«Ý\86«Ý\86«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«ÝHl\9fHl\9fHl\9fHl\9fHl\9f\87«Ý\87«Ý\87«Ý\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\81\8e\9f\81\8e\9f\81\8e\9f\81\8e\9f>J\=J[=J[FLUFLU(/7(/7*08*08%+3$*3$+3$+3*09*09*19&,5&,5'-6).6*/7-18NPURRVXUVc]^f^_[X]\XYTUZLQYKMPFHJ)))(((&&&%%%%%%$$$$$$###!!!!!!!!!\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\1c\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e777777777\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\eBBBEEEACGADGFIL\ckZ`iTZcDQbDQbDQbagpbiqcircir¢©±¢¨±¡¨°¡§°\95\9c¤\95\9b¤\94\9b£\94\9a£\93\99¢\92\99¡\92\98¡\9c¢«\9c¢«\9b¡ª\9a¡©\8f\95\9eY`hY_hERcERcERcGSdJTdNVdTYeLp¢Lp¢\8c°ã\8c°ã\8c°ã\8c°ã\8c±ã\8c±ã\8c±ã\8c±ã\8c±ã\8c±ã\8c±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ãMq£Mq£\8d±ã\8d±ã\8d±ã\8d±ä\8d±ä\8d±ä\8d±ä\8d±ä\8d±ä\8d±ä\8d±ä\8d±ä\8d±ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²äMq¤Mq¤Mq¤Mq¤Mq¤Mq¤Mq¤Mq¤Mq¤Mq¤Mq¤\85ªÜ\85ªÜ\85ªÜ\85ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9e\86ªÝ\86ªÝ\86«Ý\86«Ý\86«Ý\86«Ý\86«Ý\86«Ý\86«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«ÝHm\9f\87«Þ\87«Þ\87«Þ\87«Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\81\8e\9f\81\8e\9f\81\8e\9f\81\8e\9f\81\8e\9f\81\8e\9f\81\8e\9fFLUFLUFLU)/8+08+08&+3&+3%+4%+4%+4*19+1:&,5'-5'-6(.6FLTHMTINUKOVOQWSTXYWX`[^lbac]_f_\a_aY\aRX_,.1*,.*+-***((('''&&&%%%%%%$$$$$$$$$###!!!!!!!!!!!!!!!\1c\1c\1c\1c\1c\1c\1c\1c\1c\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e%%%%%%%%%%%%"""""""""KKKJJJFFFGIL]_b^dm\bkV]eDQbEQcEQcEQccirdjsdksektdjsdjscir£©²¢¨±¢¨±\96\9c¥\95\9c¤\95\9b¤\94\9b£\94\9a£\93\99¢\92\99¡\9d£¬\9c¢«\9b¢ª[ajZ`iOU^ERcERcFRdFRdITdLUdPWeVZeLp£Lq£Lq£Lq£\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ä\8d±ä\8d±ä\8d±ä\8d±ä\8d±ä\8d²ä\8d²ä\8d²äMq£\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²äMr¤Mr¤Mr¤Mr¤Mr¤Mr¤Mr¤Mr¤Mr¤Mr¤\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9e\86«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Þ\87«Þ\87«Þ\87«Þ\87«ÞHm\9fHm\9fHm\9f\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\81\8e\9f\81\8e\9f\81\8e\9f\81\8e\9f\82\8e \82\8e \82\8e \82\8e \94\9b£\8a\90\99\8a\8e\95-18,18',3',4',4&,4%,4+1:,2:'-5DJSEKSEKTFLTFLUHMUINVKOWLPWQSYTUZWWZpjje^`offb\_h`]eaaCCG8;A27?-/2+-/.+)******)))((('''&&&&&&%%%%%%$$$$$$$$$$$$$$$$$$######???EEEEEEEEE((((((###&&&%%%HJMHJMHJMHJM_en]dlZ`i_enEQcEQcEQcEQcbhqektflufluflufluektektdksdjscjr£©²¢©±¢¨±\96\9c¥\95\9c¤\95\9b¤\94\9b£\94\9a£\93\99¢\9d£¬\ckQW`[ajZaiOU^FRdFRdFRdHSdKUdNVeRXeX\fLq£Mq£Mq£Mq£Mq£\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ä\8d±ä\8d±ä\8d±ä\8d±ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²äMr¤Mr¤Mr¤Mr¤Mr¤\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²å\8e²å\8e²å\8e²å\8e²å\8e²å\8e²å\8e²å\8e²åNr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜ\86ªÜHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9e\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87¬Þ\87¬Þ\87¬ÞHm\9fHm\9fHm\9fHm\9fIm\9fIm\9fIm\9f\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\82\8e \82\8e \82\8e \82\8e \82\8e \82\8e \82\8e \82\8e \94\9b£\8a\91\99\8b\8f\95\8b\8f\95PT[KOVJOV(-4(-4'-5'-5JOXEKSEKSEKTFLTFLTGMUGMUHNVIOWKPWLQXMRYPTZTV[\]a_^asljd^azporjkE@CLEBIEFEDG29A28A17@135,.1+-0+,/./1..0'),)))++++++++++++***FFFFFFACFACFEEEACFACF\8a\8c\8fJLOJLOKQZ_en]clY_hU[dEQcEQcEQcEQcEQcagp[aj\bk\bkgnvgnvgmvgmvfluflueltektdksdjscjrcir¢©±\97\9d¦\96\9c¥\95\9c¤\95\9b¤TZcSYbRYaRXaQW`[bj[ajZ`iFSdFSdGSdJTdLVePXeTZfZ]fMq£Mq£Mq£Mq£Mq£Mq£Mq£\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²äNr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤\8e²å\8e²å\8e²å\8e²å\8e³å\8e³å\8e³å\8e³å\8e³å\8e³å\8e³å\8e³å\8e³å\8e³å\8e³å\8e³å\8e³å\8e³å\8e³å\8e³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³åNr¤Nr¤Nr¤Nr¤Nr¤\8f³å\8f³å\86ªÜ\86ªÜ\86ªÝHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9fHl\9fHl\9fHl\9fHl\9fHl\9f\87«Ý\87«Ý\87«Ý\87«Ý\87«Ý\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87«Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬ÞIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9f\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88­ß\82\8e \82\8e \82\8e \82\8e \82\8f \82\8f \82\8f \82\8f \82\8f \85\8c\94\92\95\9a\8c\8f\95\91\94\9bLPVLPWKPW\8b\90\97\8b\90\97\8b\90\98\90\95\9d\8b\91\99FLTFLTFLUGMUGMUHMVHNVINWIOWKPXLQYMRYNSZTX`X[a[]b]^c__ccacib`JDGi__aYYPJLD@C=;AKEDTQR@?A>>A;<A17@06?/6>/5>.4=-4<IOXHOWMS\\95\9b¤\95\9b¤\94\9a£­²¹­±¸¦¬µ\99\9f¨\96\9c¥QX`EQcEQcEQcEQcEQcEQc`fo[bj\bk]cl]dl^dm^dm]dlhnwhnwgnvgmvgmvfluflueltektdksdjscircir\97\9e¦\97\9d¦V\eU[d_fn^emSYbRXaQX`[bjPV_OV^FSdGSdITeLVeNWeRYfW[f\^gMq£Mq£Mq£Mq£Mq¤Mq¤Mq¤Mq¤\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²å\8e²å\8e²å\8e²å\8e²åNr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³åNs¥\8f³å\8f³å\8f³å\8f³åHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHm\9fHm\9fHm\9f\87«Þ\87«Þ\87«Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\87¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬ÞIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9f\88¬Þ\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88¬ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\89­ß\82\8f \82\8f \82\8f \82\8f \82\8f \82\8f \82\8f \82\8f \82\8f \8b\91\9a\94\96\9b\8e\90\96\8e\90\96\8d\90\96\8d\90\97\8c\90\97\8c\90\97\8c\91\98\8c\91\98\91\96\9e\91\97\9e\8d\92\9a\8d\92\9a\8d\93\9b\8d\93\9b\8e\93\9c\8e\94\9c\8f\94\9d\8f\95\9d\90\95\9eJPXJPXKQYQW_RW_SX`TY`UZaW[bZ]c\^c^_dCDHDDHTRSWQO@=BNHKbYZ^VWUNPMGJFAEgcgcaf¡ ¥¡\9f¥ \9f¥ \9f¥ \9f¥\9f\9e¥\9f\9e¥\9f\9f¥\85\91£\85\91£\85\91£\85\91£\85\91£\85\91£\85\91£EQc`go[aj]cl]cl^dm^em_en_en_en_en^em^dm^dmioxhnwhnwgnvgmvgmvfluflueltektdjsdjscir\98\9e§W]fagp`go`fo_enSYbRXa\ck[bj[ajFSdGSdITeKUeNWeQXfTZfY]g``gMq¤Mq¤Mr¤Mr¤Mr¤Mr¤Mr¤Mr¤Nr¤\8e²å\8e²å\8e²å\8e²å\8e²å\8e³å\8e³å\8e³å\8e³å\8e³å\8e³å\8f³å\8f³åNr¤Nr¤Nr¤Nr¤Nr¤Nr¥Nr¥Nr¥Nr¥Nr¥Nr¥Nr¥Ns¥Ns¥Ns¥Ns¥\8f³å\8f³å\8f³å\8f³å\8f³å\8f³æ\8f³æ\8f³æ\8f³æ\8f³æ\8f³æ\8f³æ\8f³æ\8f³æ\8f³æ\8f³æ\8f³æ\8f³æ\8f´æ\8f´æ\8f´æ\8f´æ\8f´æ\8f´æ\8f´æ\8f´æOs¥Os¥\8f´æ\8f´æ\8f´æHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9eHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9f\87¬Þ\87¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬ÞIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9f\88­ß\88­ß\88­ß\88­ß\88­ß\88­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\82\8f \82\8f \82\8f \82\8f \82\8f \82\8f \82\8f \82\8f \83\8f¡\83\8f¡\91\92\96PRWOQWTW\\8e\91\97\8e\91\98\94\97\9e\8e\92\98\8e\92\99\93\97\9e\93\98\9f\93\98\9f\8e\93\9b\8e\93\9b\8f\94\9c\8f\94\9c\8f\95\9d\8f\95\9d\90\95\9e\90\96\9e\91\96\9f\91\97\9f\92\97 \97\9d¥\97\9d¦\99\9e¦\99\9f§\9a\9f§\9b ¨\9c¡¨\9c¡©\9d¢©\9f£ª`dkbek^af_ag`bgabgiko_en^emhnw·´¶«§¨¶±± ¦¯ ¦¯ ¦¯ ¦¯\94\9a£\94\9a£¡¨°¤«³§­¶©¯¸©¯¸\9e¤­\9e¥­\9f¥® ¦¯`fo`fo`fo`fo`fo`fo`fo_fn_fn_en_en^em^dm^dmioxhowhnwgnvgmvgmvflufluektekt¥«´\99\9f¨£©²£©²ahpagp`foTZcSYbRYa\ck\bkPV_GSeITeKUeMWePXfSZfW[f\^gdbhMr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³åNr¥Nr¥Nr¥Ns¥Ns¥Ns¥Ns¥Ns¥Ns¥Ns¥Ns¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥\8f´æ\8f´æ\8f´æ\8f´æ\8f´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æOs¥Os¥Os¥Os¥Os¥\90´æ\90´æHl\9eHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHl\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fIm\9fIm\9fIm\9fIm\9f\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬Þ\88¬ÞIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9f\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\83\8f¡\83\8f¡\83\8f¡\83\8f¡\83\8f¡\83\8f¡\83\8f¡CPaCPaOVbRSWQRWPRWUW]\95\98\9e\95\98\9e\95\98\9f\95\99\9f\94\98\9f\95\99 \95\99 \95\99¡\90\95\9c\90\95\9c\90\95\9d\90\96\9d\91\96\9e\91\96\9e\91\97\9f\91\97\9f\92\97 \97\9d¥\98\9d¦\98\9e¦\98\9e¦\99\9e§\99\9f§\99\9f§\9a ¨\9b ¨\9b¡©\9a ©\9a ©U[dU\dW]eW]eX]eV\e\96\9c¥\96\9c¥\96\9c¥¡§°¡§°¬²»¬²»¬²»¬²»¬²»¬²»¬²»¬²»¬³»¬³»­³¼­³¼¡¨°¡¨°¡¨°¡¨°¡¨°agpagp`go`go`fo`fo`fo`fo_fn_en_en^em^dmioxioxhowhnwgnvgmvgmv§­¶¦¬µ¦¬µ\9a ©¤«³¤ª³£©²¢¨±¡¨°`foTZcSZbRYaQX`\bkGSeITeKUeMWfPXfSYfV[gZ]g_`hNr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¤Nr¥Nr¥\8f³å\8f³å\8f³å\8f³å\8f³å\8f³æNs¥Ns¥Ns¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æOs¦Os¦Os¦Os¦Os¦Os¦Os¦Os¦Os¦Hl\9fHl\9fHl\9fHl\9fHl\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9f\88¬Þ\88¬Þ\88¬Þ\88¬ÞIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm Im Im Im \89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­à\89­à\89­à\80\80\7f\83\8f¡\83\8f¡\83\8f¡CPaCPaCPaCPaCPaQWcYY\XX\RSXWX]bdi\97\99\9f\97\99\9f\97\9a ¢¥«¢¥¬\96\9a¡\96\9a¡\96\9b¢\97\9b¢\92\96\9e\92\97\9e\92\97\9f\92\97\9f\92\98 \93\98 \98\9d¥\98\9e¦\98\9e¦\98\9e§\99\9f§\99\9f§\99\9f¨\99\9f¨\99 ¨\9a ¨\9a ¨\9a ©\9a ©\95\9b¤U[dU[dU[d\95\9c¤\95\9b¤\95\9b¤\95\9b¤\95\9b¤\94\9b£¡¨°¢¨±­³¼­³¼­³¼­³¼­³¼­³¼­³¼­³¼­³¼­³¼­³¼¢¨±¢¨±¢¨±¢¨±¢¨±¡¨°agpagpagp`go`go`fo`fo`fo_fn_en_en_enipxioxioxhowhnw¨®·¨®·\9c¢«\9b¢ª\9b¡ª\9a ©¥«´¤ª³£©²¢©±¡¨°¡§°TZcSYbRYa\ck\bjIUeKVeMWfOXfRYfU[gX\g\^gcbhNr¤Nr¤Nr¤Nr¤Nr¥Nr¥Nr¥Nr¥Ns¥Ns¥Ns¥Ns¥Ns¥Ns¥Os¥\8f´æ\8f´æOs¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¦Os¦Os¦Os¦Os¦Os¦Os¦Os¦Ot¦Ot¦\90´ç\90´ç\90´ç\90µç\90µç\90µç\90µç\90µç\90µç\90µç\90µç\90µç\90µç\90µç\90µç\90µçPt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦\13\ÀHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fHm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm Im Im Im Im Im Im Im Im Im \89­ß\89­ß\89­ß\89­à\89­à\89­à\89­à\89­à\89­à\89®à\89®à\89®à\83\8f¡\83\90¡\83\90¡KQZFLUFMUCPaCPaCPaCPaSXcRWcddgddhddiceicej\98\9a \98\9b £¦¬£¦¬£§­¤§®¤§®\98\9c£\98\9c£\93\98\9f\93\98\9f\93\98 \94\99 \94\99¡\99\9e¦\99\9f§\99\9f§\99\9f§\99\9f§\99\9f¨\99\9f¨\9a ¨\9a ¨\9a ©\9a ©\9a ©\9a ©\9a ©U[d\95\9b¤\95\9b¤\95\9b¤\95\9b¤\95\9b¤\94\9b£¡§°¡§°¡¨°­³¼­³¼­³¼­³¼­³¼­´¼­´¼­´¼­´¼­´¼­´¼­´¼¢¨±¢¨±¢¨±¢¨±¢¨±¢¨±¢¨±¢¨±agpagpagp`go`fo`fo`fo_fn_en_enjpyipxiox©°¸©¯¸\9d¤¬\9d£¬\9c£«\9c¢«\9b¡ª\9a¡©¥«´¤ª³£ª²¢©±¢¨±\96\9c¥\95\9b¤SYbRXa]ckIUeKVfMWfOXfQYfT[gX\g[^h_`hgdiNr¥Nr¥Ns¥Ns¥Ns¥Ns¥Ns¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥\90´æOs¥Os¥Os¥Os¥Os¥Os¥Os¥Os¦Os¦Os¦Os¦Os¦Os¦Ot¦Ot¦Ot¦Ot¦Ot¦Ot¦Ot¦Ot¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µçPt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦\13\ÀHm\9fHm\9fHm\9fHm\9fHm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9f\88¬ß\88¬ß\88­ßIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm Im Im Im Im Im Im Im Im Im In In In In In In In \89­à\89®à\89®à\89®à\89®à\89®à\89®à\89®à\8a®à\8a®à\83\90¡CPaCPaKQZFMUKRZKRZCPaCPaCPaCPaUYcTXcRWceeheeieeiefjefk\9a\9c¡¥§¬¥§­¥¨®¥¨®¥©¯¦©¯¦©°¦ª±\9b\9f¦\9b\9f§\95\9a¡\9a\9f§\9a\9f§\9b §\9b ¨\9b ¨\9b ¨\9b ¨\9b ©\9b ©\9a ©\9a ©\9a ©\9a¡©Z`iZ`iZ`iU[d ¦¯ ¦¯ §¯¡§°¡§°¡§°¡¨°­³¼­³¼­³¼­³¼­³¼­´¼­´¼­´¼®´½®´½®´½®´½®´½®´½¢©±¢©±¢©±¢¨±¢¨±¢¨±¢¨±¢¨±agpagpagp`go`fo`fo`fo_fn_enjpyª±¹ª°¹\9e¥­\9e¤­\9e¤­\9d£¬\9d£¬\9c¢«\9b¢ª\9b¡ª¥«´¤ª³£ª²£©²¢¨±¡§° ¦¯\94\9a£\93\99¢JUfKVfMWfOXfRYgTZgW\g[^h^`hcbijfiNs¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥\90´æ\90´æ\90´æ\90´ç\90´çOs¦Os¦Os¦Ot¦Ot¦Ot¦Ot¦Ot¦Ot¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦\91µç\91µç\91µè\91µè\91µè\91µè\91µè\91µè\91µèPt§Pt§Pt§Pt§Pt§Pt§Pt§Pt§Pt§Pt§Pt§Pt§Pt§Pt§Pt§\13\13\ÀIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9f\88­ß\88­ß\88­ß\88­ß\88­ß\89­ßIm\9fIm\9fIm\9fIm\9fIm\9fIm Im Im Im Im Im Im Im Im Im In In In In In In In In In In In In Jn Jn \89®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®àCPaCPaT[cKQZFMUKRZKRZLR[GMV@BDCPaDPbWZcVYcTXcSXcgfi\[_ggjggkfgl§¨­§¨­§©®§©¯§ª¯§ª°§ª±§«±¨«²\9d¡§\9d¡¨¨¬³¨­´¨­´¨­µ©®µ©®¶©®¶©¯·©¯·©¯·ª¯¸ioxioxipxjpyjpyjqy`fo §¯¡§°¡§°¡§°¡¨°­³¼­³¼­³¼­´¼­´¼­´¼®´½®´½®´½®´½®´½®´½®´½®´½®´½£©²£©²£©²£©²¢©±¢©±¢©±¢¨±¢¨±agpagpagp`go`fo`fo §¯ ¦¯«±º\9f¦®\9f¥®\9f¥®\9e¤­\9e¤­\9d¤¬\9d£¬\9c¢«\9b¢ª¦¬µ¥«´¤«³£ª²¢©±¡¨° §¯\94\9b£\94\9a¢\8b\96§\8d\97§NWfPXgRYgT[gW\gZ]h^_hbaigdimgjOs¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¦Os¦\90´ç\90µç\90µç\90µç\90µç\90µç\91µç\91µç\91µçPt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt§Pt§Pt§Pt§Pt§Pt§Pt§Pu§Pu§Pu§Pu§\92¶è\92¶è\92¶è\92¶è\92¶èPu§Pu§Pu§Pu§Pu§Pu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§\13\13\ÀIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9f\88­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ßIm Im Im Im Im Im Im Im In In In In In In In In In In In In In Jn Jn Jn Jn Jn Jn Jn Jn \8a®à\8a®à\8a®à\8a®àJn Jn CPaCPaU[dKRZGMVLR[LR[LR[GMVGNVHNWDPbDPbY[dWZdVZdUYcTYchgi]\_hhkhhl]^b©©®©ª¯©ª¯©«°©«±©¬±©¬²©¬³ª­³ª­´ª®´ª®µª®µª®¶ª¯¶ª¯¶ª¯·ª°·jowjpxjpxjpxjpyjpykqykqzkqzkqz`fo¡§°¡¨°¢¨±­³¼­³¼­´¼­´¼®´½®´½®´½®´½®´½®´½®´½®´½®µ½®µ½®µ½®µ½®´½£©²£©²£©²£©²£©²£©²¢©±¢©±¢¨±agpagpagp¡¨°¡§°¬²»¬²» ¦¯ ¦¯\9f¦®\9f¥®\9e¥­\9e¤­\9d¤¬\9d£¬\9c¢«\9b¢ª¦¬µ¥«´¤ª³\98\9e§\97\9d¦¡¨° §¯¡¦®\8c\97§\8d\98§\8f\99¨\91\99¨RZgU[gW\hZ^h]_haaiecijfjOs¥Os¥Os¥Os¦Os¦Os¦Os¦Ot¦Ot¦\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µçPt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt§Pt§Pt§Pt§Pt§Pt§Pu§Pu§Pu§Pu§Pu§Pu§Pu§Pu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§\92¶è\92¶èQu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§\13\13\13\ÀIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9f\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ßIm Im In In In In In In In In In In In In In Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn \8a®àJn Jn Jn CPaCPaCPaKRZV\eGMVLR[LR[LR[GNVHNWHOWIOXIOXDPb[\dZ[dX[dWZdVZdUYd_]__]`jil_^b__c  ¤««°«¬°«¬±«­²«­³«®³ £© £© ¤ª¬¯µ¬¯¶¬°¶¬°·¬°·lpwlpwlpxlqxlqylqylqylqylqzlrzlrzlr{lr{agp­³¼­³¼­´¼®´½®´½®´½®´½®´½®µ½®µ½®µ½®µ½¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾£ª²£©²£©²£©²£©²£©²£©²¢©±¢©±¢¨±¢¨±¢¨±­³¼¬³»¬²»¬²»«²º ¦¯\9f¦®\9f¥®\9e¥­\9e¤­\9d£¬\9d£¬\9c¢«\9b¡ª¥¬´\99 ¨\98\9f§\98\9e§¢¨±¡§°¢§¯\8d\97¨\8e\98¨\90\99¨\91\9a¨\93\9b¨\96\9c©W\hZ^h]_i`aidciiejmgjOs¦Ot¦Ot¦Ot¦Ot¦Pt¦Pt¦\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µè\91µè\91µè\91µè\91¶è\91¶è\91¶è\91¶è\91¶èPt§Pu§Pu§Pu§Pu§Pu§Pu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§\92·éQu§Qu§Qu§Qu¨Qu¨Qu¨Qu¨Qu¨Qu¨Qu¨Qu¨Qu¨Qu¨Qu¨Qu¨Qu¨Qu¨Qu¨Qu¨\13\13\13\ÀIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9f\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­à\89­à\89­àIn In In In In In In In Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn \8a®á\8a®áJn Jn AFLCPaDPbLR[LR[V]eLR[LR[LS[HNWHOWIOXIPXJPYKQZBFL^]d\]d[\dY[dX[dWZdVZd`^``_akjma`ca`d¡¡¥­­±­­²­®²­®³­¯´¢¤©¢¤ª¢¥ª¢¥«­°·mpvmpwmqwmqxmqxmqxmrymrymrymrzmrzmrzmr{ms{ms{ms{ahpms|®´½®´½®´½®´½®µ½®µ½¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾£ª²£ª²£ª²£©²£©²£©²£©²ahpagplr{­³¼­³¼¬³»¬²»¬²»«²º ¦¯\9f¥®\9f¥®\9e¤­\9e¤­\9d£¬\9c£«\9c¢«¦¬µ\9a ©\99\9f¨\98\9e§¢©±\97\9d¥£¨°\8d\98¨\8f\99¨\90\9a¨\92\9b©\94\9c©\96\9d©\99\9e©\9b\9fª\9e¡ª`aiccihejlgjpikPt¦Pt¦Pt¦Pt¦Pt¦\91µç\91µè\91µè\91µè\91µè\91¶è\91¶è\91¶è\91¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶èQu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu¨Qu¨Qu¨Qu¨Qu¨Qu¨Qu¨Qv¨Qv¨Qv¨\93·é\93·é\93·é\93·éQv¨Qv¨Qv¨Qv¨Qv¨Qv¨Qv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨\13\13\13\13\ÀIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm\9fIm Im \89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­à\89­à\89­à\89­à\89­à\89­à\89®à\89®à\89®à\89®àIn In In Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn \8a®á\8a®á\8a®á\8a¯á\8a¯á\8a¯áJn DPbDPbLR[LR[W]fLR[LS[MS\HNWIOXIPXJPYKQZLR[PRUQSVDQb^^e]]e\]eZ\dY[dX[dWZdb_ab`bb`cbad£¢¥££¦®®²¯¯³¯¯´¤¥©¤¥ª¤¦ª¤¦«cekcfkoqwoqworxorxoryoryosyoszoszoszns{ns{ns{ns{chpchqchqchqnt|®µ½®µ½¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¤ª³£ª²£ª²£©²£©²bhqms|ms|ls{lr{lr{­³¼¬³»¬²»¬²»«±º\9f¦®\9f¥®\9e¥­\9e¤­\9d£¬\9d£¬\9c¢«¦­µ\9a¡©\99 ¨\99\9f¨\98\9e§\98\9e¦\8d\98¨\8e\98¨\90\99¨\91\9a©\93\9b©\95\9c©\97\9d©\99\9eª\9b\9fª\9e¡ª¡¢«¥¤«gejlgkohkPt¦Pt¦Pt¦Pt¦\91¶è\91¶è\91¶è\91¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶é\92¶é\92¶é\92¶é\92·é\92·éQu§Qu§Qu§Qu§Qu¨Qu¨Qu¨Qu¨Qu¨Qv¨Qv¨Qv¨Qv¨Qv¨Qv¨Qv¨Qv¨Rv¨Rv¨Rv¨Rv¨Rv¨\93·é\93·ê\93·ê\93·ê\93·ê\93·ê\93·ê\93·êRv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨\13\13\13\13\13\ÀIm Im Im Im Im Im \89­ß\89­ß\89­ß\89­ß\89­ß\89­ß\89­à\89­à\89­à\89­à\89­à\89­à\89®à\89®à\89®à\89®à\89®à\89®à\89®à\8a®à\8a®à\8a®à\8a®àJn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn \8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8b¯á\8b¯á\8b¯á\84\91¢DPbDPbV\eW]fLR[GNVHNWHOWIOXJPYQW`RXaSYbRYaTUXTUXBFLa_e`^e^^e]]e\]eZ\eY[eX[dW[dnlmomndbd¥£¦¥¤§¥¥¨±°´¦¦©eeiefjefkefkegleglegmpsxpsypsypszptzptzpt{pt{pt{pt{pt|diqdiqdiqdiqdiqdiqot}¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯¶¾¯¶¾¯¶¾¯¶¾¯¶¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾£ª²bhqbhqms|ms|ms|ls{lr{lr{krzkqzkqz¬²»«²º«±º\9f¥®\9f¥®\9e¤­\9d¤¬¨®·§®¶§­¶\9b¡ª\9a ©\99\9f¨\99\9f§\99\9e¦\8e\98¨\8f\99©\90\9a©\92\9b©\94\9c©\96\9d©\98\9eª\9a\9fª\9c ª\9f¡«¢£«¥¤«¨¦¬¬¨¬nhkqjkPt¦Pt§\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶é\92¶é\92¶é\92¶é\92·é\92·é\92·é\92·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·éQv¨Qv¨Qv¨Qv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨\93¸ê\93¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸êRv©Rv©Rv©Rv©Rv©Rv©Rv©Rv©Rv©Rv©Rv©Rv©Rv©Rv©Rv©\13\13\13\13\13\ÀIm Im Im \89­ß\89­ß\89­ß\89­à\89­à\89­à\89­à\89­à\89®à\89®à\89®à\89®à\89®à\89®à\89®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®àJn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn \8a¯á\8a¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\84\91¢\84\91¢\84\91¢U\dV]eLS[HNWHNWIOXOU^JQYQW`RYaTZcagpacfmjiflugnvaVPb`ea_e_^e^^e]]e[]eZ\eZ\eY[epmnpnoece¦¥§§¥¨fehffigfjggjggkgglghlghmghmghnrtyrtzrtzrtzru{ru{ru{qu{fjpfjqfjqejqejqejqejqejrdjrou}°¶¾¯µ¾¯µ¾¯¶¾¯¶¾¯¶¾¯¶¾¯¶¾¯¶¾¯¶¾¯¶¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾mt|bhqms|ms|ms|ls{ls{lr{lr{krzkqzkqzjqyjpy«±º\9f¥®\9f¥®\9e¤­©¯¸¨®·§®¶§­¶\9b¡ª\9a ©¥«³\9a\9f§\8d\98¨\8f\99©\90\9a©\91\9a©\93\9b©\95\9cª\97\9dª\99\9eª\9b\9fª\9d «\9f¢«¢£«¥¥¬©¦¬¬¨¬¯ª­²«­Pu§\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶é\92¶é\92¶é\92·é\92·é\92·é\92·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·ê\93·ê\93·ê\93·êRv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv©Rv©Rv©\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ëSw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©\13\13\13\13\13\13\89­à\89­à\89­à\89­à\89®à\89®à\89®à\89®à\89®à\89®à\89®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®àJn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn Jn \8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\84\91¢\84\91¢\85\91£\85\91£LR[GNVHNWHNWIOXOU^[ajRXaSYbU[dahpcirektgmvioxjpyBGMbWPc`fb`f`_e_^e^^e]]e\]e[\eZ\eY[erop³°²gegsqssqtsruhgjhhkhhlhhlhimhimhinhjnhjosuzsu{su{sv{hjphkqgkqgkqgkqgkqgkqfkrfkrfjrfjrejrpu}±·¾±¶¾±¶¾°¶¾°¶¾°¶¾¯¶¾¯¶¾¯µ¾¯µ¾¯µ¾¯µ¾¯µ¾mt|bhqbhqbhqms|ls{ls{lr{lr{krzkqzkqzjqyjpyjpyioxiox\9e¥­©¯¸©¯¸¨®·§®¶§­¶¦¬µ¦¬´¦«³\9b\9f§\8e\99©\90\9a©\91\9a©\93\9b©\94\9cª\96\9dª\97\9eª\99\9fª\9c «\9e¡« ¢«£¤¬¥¥¬©§¬¬¨­¯ª­±«­sklQu§Qu§\92¶é\92·é\92·é\92·é\92·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·ê\93·ê\93·ê\93¸ê\93¸ê\93¸ê\93¸ê\93¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸êRv©Rv©Rv©Rv©Rv©Rw©Rw©Rw©Rw©Rw©Rw©\94¸ë\94¸ë\94¸ë\94¸ë\94¹ë\94¹ë\94¹ë\94¹ë\94¹ë\94¹ë\94¹ë\94¹ë\94¹ë\94¹ë\95¹ë\95¹ë\95¹ë\95¹ëSw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©\13\13\13\13\13\13\89®à\89®à\89®à\89®à\89®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®á\8a®á\8a®á\8a®á\8a®á\8a®áJn Jn Jn Jn Jn Jn Jn Jn Jn Jn¡Jn¡\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯â\85\91£\85\91£\85\91£\85\91£\97\9e¦HNWHNWIOXOU^\bk]cl^emU\dbhqdjsfluhnwipxkqzlr{ahpeXPdWPdafc`fa`f`_f__f^^e]^e\9d\9e¦\9c\9e¦\9b\9d¦´±±µ±²ifgtrsurtusuutvjiljiljimjjmjjnjjnjkojkojkpikpikpikpikqikqikqhkqhkqhkqhkrgkrgkrgkrgkrfkrqv}²·¾²·¾²·¾±¶¾±¶¾°¶¾¯µ¾¯µ¾¯µ¾¯µ¾bhqbhqbhqahpahpagpagplr{lr{krzkqzkqzjqyjpyjpyioxiox]cl\ckgnv¨¯·¨®·§­¶¦­µ\9b¡©¦¬´§¬³\8e\99©\8f\9a©\91\9a©\92\9bª\94\9cª\95\9dª\97\9eª\99\9eª\9a\9f«\9c «\9f¢«¡£¬¤¤¬¦¦¬©§­­©­°ª­pjlrklulmQu§Qu§Qu§\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·ê\93·ê\93·ê\93¸ê\93¸ê\93¸ê\93¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ë\94¸ëRw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ëSwªSwªSwªSxªSxªSxªSxªSxªSxªSxª\13\13\13\13\13\13\13\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®á\8a®á\8a®á\8a®á\8a®á\8a®á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯áJn Jn Jn Jn¡Jn¡Jn¡Jn¡\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯â\8b¯â\8b¯â\8b¯â\8b¯â\8b°â\85\91£\85\91£\85\91£\85\92£\85\92£\8e\94\9d\89\8f\98NT]OV^[bj]cl_enagpX^gdksfmuhnwjpykrzagpbhqahphZQfYQgcfebfdafc`fb`f¢¡§¡ §\9f\9f§\9e\9f§\9d\9e§\9d\9e§\9c\9e§«§¨jghkgivsuvtvvtwvuwkjmkjmkknkknkkovwzvw{vw{vw{klpjlqjlqjlqjlqilqilqilqhkrhkrhkrhkrgkrgkrfkr³·¾²·¾²·¾²¶¾±¶¾¯µ¾bhqbhqahpahpbhpagpagp`go`go`fokqzkqzjqyjpyjpyipxioxiox]cl\ck\bk[bjfmuflu§­¶\9b¡ª\9b¡©\8d\99©\8e\99©\8f\9a©\91\9aª\92\9bª\93\9cª\95\9dª\97\9eª\98\9e«\9a\9f«\9c «\9e¡« ¢¬¢¤¬¥¥¬§¦­ª¨­­©­nilpjlrklulmQu§Qu¨Qu¨Qu¨Qv¨\93·é\93·ê\93·ê\93¸ê\93¸ê\93¸ê\93¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ë\94¸ë\94¸ë\94¸ë\94¹ë\94¹ë\94¹ë\94¹ë\94¹ë\95¹ë\95¹ë\95¹ëSw©Sw©Sw©Sw©Sw©Sw©\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ì\95¹ì\95¹ì\95¹ì\95¹ì\95¹ì\95¹ì\95ºì\95ºì\95ºì\95ºì\95ºì\95ºì\95ºì\95ºì\95ºì\95ºì\95ºìTxªTxªTxªTxªTxªTxªTxªTxª\13\13\13\13\13\13\13\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®à\8a®á\8a®á\8a®á\8a®á\8a®á\8a®á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯áJn¡Jn¡Jn¡Jn¡\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯â\8b¯â\8b¯â\8b¯â\8b¯â\8b°â\8b°â\8b°â\8b°â\8b°â\8b°â\86\92£\87\92£\87\93£\85\92£\85\92£\89\8f\98\99 ¨\9a¡©[aj]cl_enagpX^gZ`i\bkioxjqylr{ahpbhqahpagp_fnj[QiZQhcg¨¤¨§£¨¥¢§¤¢§£¡§¢¡§¡ §  §\9f\9f§\9e\9f§\9d\9f§\9d\9e§kghlhiwtuxuvxuwxvxxvxmkmxwyxwzxwzxw{ww{ww{ww{wx|klqklqklqjlqjlqjlqjlqilqikqhkqhkqhkqgkqgjq³·¾³·¾§«²eiqeipdipdipchpchpbhobgoagoafo_en_en_enjpyipxioxiox]cl]cl\bk\bk[aj[ajfluZ`iY_hZ_h\8d\99©\8e\99©\90\9aª\91\9bª\92\9bª\93\9cª\95\9dª\96\9d«\98\9e«\99\9f«\9b «\9d¡¬\9f¢¬¡£¬£¤­¦¦­©§­«©®lhlnilpjlrkmtlmwnmQv¨Qv¨Rv¨Rv¨Rv¨Rv¨Rv¨\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ë\94¸ë\94¸ë\94¹ë\94¹ë\94¹ë\94¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ìSxªSxª\95¹ì\95ºì\95ºì\95ºì\95ºì\95ºì\95ºì\95ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºìTxªTxªTxªTxªTxªTxªTxª\13\13\13\13\13\13\13\13\8a®à\8a®à\8a®à\8a®á\8a®á\8a®á\8a®á\8a®á\8a®á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯áJo¡\8b¯á\8b¯á\8b¯á\8b¯á\8b¯â\8b¯â\8b¯â\8b¯â\8b¯â\8b°â\8b°â\8b°â\8b°â\8b°â\8b°â\8c°â\8c°â\8c°â\8c°â\8c°â\85\92£\89\94¤\89\94¤\89\94¤\89\94¤\85\92£\85\92£\9a ©\9b¢ªQX`_emagpY_gZai\bk^dm`folr{ahpahpchpbgolqyhnwl\Q®\9d\93­\9d\93«¥¨ª¥¨¨¤¨§£¨¦£¨¥¢¨£¢¨£¡¨¢¡¨¡ ¨  §\9f §\9e\9f§\]fmiimijmjknjknklnkmnkmywyywzywzyx{xx{xx{xx{xx{wx|llpklpklqklqjlqjlqjkqikqikqhkpsv|sv|su|ru{fipfipeipeiodhodhocgocgnbgnbfnafn^dm^dm]dliox]cl^cl]ck]bk\bj[aj[aifltektY_hX_gIVgMXhNXh\91\9bª\92\9bª\94\9cª\95\9d«\96\9e«\98\9e«\99\9f«\9b «\9d¡¬\9f¢¬¡£¬£¤­¥¥­¨§®«©®lhmojmqjmpjmskmtlmvmmRv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv©\94¸ê\94¸ë\94¸ë\94¸ë\94¹ë\94¹ë\94¹ë\94¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ì\95¹ì\95¹ì\95¹ì\95ºì\95ºì\95ºì\95ºì\95ºì\96ºìTxª\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºí\96ºí\96ºí\96ºí\96ºí\96ºí\96ºí\96ºí\96»í\96»í\96»í\96»í\96»í\96»í\96»í\96»íTy«Ty«Ty«Ty«Ty«\13\13\13\13\13\13\13\13\8a®á\8a®á\8a®á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8a¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯áJo¡Jo¡Jo¡\8b¯â\8b¯â\8b¯â\8b¯â\8b°â\8b°â\8b°â\8b°â\8b°â\8b°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8b\95¤\8c\95¤\8c\95¤\8b\95¤\8b\95¤\86\92¤\86\92¤\9b¡ª\9d£¬\97\9c£choZ_g\ai^dk^dm`folr{ls{agpdipchomqx­±·\9a ©\9f¢¨³ \94±\9f\94­§©¬¦©«¦¨ª¥¨©¤¨§¤¨¦£¨¥£¨¤¢¨£¢¨¢¡¨¢¡¨¡¡¨  ¨]^f]^f\^fzvvzvwoklokmolmolnnlnzxzzxzyxzyx{yx{xx{xx{xx{llpllpklpklpvw{uw{uv{tv{tv{µ·¼µ·¼´¶¼ruzfiofhnehnehndgncgmcgmbfmbfmaellpxlpwkpwkov^cj^cj]bj]bihmugltgltfksKWhKWhOYhPYhQZhR[iS[iU\i\98\9e«\99\9f«\9a «\9c¡¬\9d¡¬ £¬¢¤­¤¥­¦¦®©¨®«©¯limojmrknslmtlmrkmvmmvmnyonRv¨Rv¨Rv¨Rv©Rv©Rv©Rw©Rw©Rw©Rw©\94¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ì\95¹ì\95¹ì\95¹ì\95ºì\95ºì\95ºì\95ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºìTxªTxªTxªTxªTxª\96ºí\96ºí\96ºí\96ºí\96ºí\96»í\96»í\96»í\96»í\96»í\96»í\96»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»íUy«Uy«Uy«Uy«\13\13\13\13\13\13\13\13\13\8a¯á\8a¯á\8a¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯â\8b¯â\8b¯âJo¡Jo¡Jo¡Jo¡Jo¡\8b°â\8b°â\8b°â\8b°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\86\92¤\8e\96¤\8e\96¤\8e\96¥\8e\96¥\8d\96¥\8d\96¥\86\92¤\86\92¤\99\9c¢\9b\9e¥\9d¡§^bi`dkbfmdhokrzlr{lr{qt{psy°³¹®±·¡£©°¯³\90\98¦µ¢\94º¤\96¹¤\96¯¨©®§©­§©¬¦©ª¥©©¥©¨¤©§¤©¦£©¥£©¤¢¨£¢¨¢¢¨¡¡¨__g^_g^_g]^g{vv{ww{wxolmolmolmolnzxzzxzzxzyxzyxzmlomlollolkowwzvwzvvz·¸¼··¼¶·¼¶·»µ¶»µ¶»´¶»rtyqsyegmegmdglorxoqwnqwmqwmpvlpvlovkouknu_bijntimtimthlsNXhNXhPZhQZhR[iS[iT\iU\iW]iX^jY^j[_j\9e¢¬ £¬¡£­£¤­¥¦­¨§®ª©¯­ª¯njnpkorlotmnumnvmnvnnwnnxnnyonRv©Rv©Rw©Rw©Rw©Rw©Sw©Sw©Sw©Sw©Sw©Sw©\95¹ë\95¹ë\95¹ë\95¹ì\95¹ì\95¹ì\95ºì\95ºì\95ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºí\96ºíTx«Tx«Tx«Ty«Ty«Ty«Ty«Ty«\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»î\97»î\97»î\97»î\97»î\97»î\97»î\97»î\97»î\97»î\97»î\97»î\97¼îUy¬Uy¬\13\13\13\13\13\13\13\13\13\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯â\8b¯â\8b¯â\8b¯â\8b¯â\8b¯âJo¡Jo¡Jo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°ã\8c°ã\8c°ã\8c°ã\8f\97¥\90\98¥\90\98¥\90\98¥\90\98¥\90\97¥\8f\97¥\8f\97¥\8e\97¥\9c\9e¤\9e¡¦¬®´®±¶dglfhnru{krzsu{rtz§©®¥§¬£¥ª­®³¥£¥\9c\9e§\93\99¦¹¤\95ª\99Ĭ\9b©\98±©ª°¨ª¯¨ª­§ª¬§ª«¦ªª¦©©¥©¨¥©§¤©¦¤©¥£©¤£©baga`g``g``g__g^_g]_gpkkpklpll{wx{wx{wyzwynlmnlnnlnmknmknlknlkn­¬¯¬¬¯¸·»··º··º¶¶ºµ¶ºµµº´µ¹¨©®fglegkefkdfkoqvoqvnpunpumoumou`ci`bh_bh_bhPYhPYhQZhRZiS[iT[iU\iV]iW]iX^jY^jZ_j[_j\`j^ak`bkack¥¦­§§®©¨®«©¯®«°okormpunpvopwoownoxnnxonyonzon{pn{poRw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©SwªSwªSwªSxª\95ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºí\96ºí\96ºí\96»í\96»í\96»í\96»í\97»íTy«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«\97»í\97»í\97»î\97»î\97»î\97»î\97»î\97¼î\97¼î\97¼î\97¼î\97¼î\97¼î\97¼î\97¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼îVz¬\13\13\13\13\13\13\13\13\13\13\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯á\8b¯â\8b¯â\8b¯â\8b¯â\8b¯â\8b¯â\8b°â\8b°â\8b°âKo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°ã\8c°ã\8c°ã\8c°ã\8c±ã\8c±ã\8c±ã\8c±ã\8c±ã\91\98¥\93\99¥\93\99¥\92\99¥\92\99¥\92\99¥\91\98¥\91\98¥\91\98¥\91\98¥¢£¨¯±µ²³¸rtyhjotv{µ·¼©ª¯¨©­±²·¯°´¢¢¦\9a\9d§\9f\9f§£¢¨§¤¨\97\9b§È®\9bϳ Ï³\9fÇ«\97³ªª²©ª°©ª¯©«¯¨«®¨«­§«¬§ªª¦ª©¥ª¨¥ª§¤ª¦¤ªdbhcbhbahaaha`h``h_`g__g^_g]_gokkokk{wxzwxzwxzwxyvxmjl®¬®®¬®­«®¸·¹¸·¹·¶¹·¶¹«ª­ª©­©©¬©©¬¨¨¬¨¨¬efjeeideioptoptnotbchachabgS[hS[hS[iT[iU\iU\iV\iW]iW]iX^jY^jZ_j[_j\`j]aj_ak`bkbckcdkeelgfligm­«°°¬±qlptoqwpryqrzqqzppzppzpozpo{po|po|qo|qoSw©Sw©Sw©Sw©Sw©Sw©SwªSwªSwªSxªSxªSxªTxªTxªTxªTxª\96ºì\96ºì\96ºì\96ºí\96ºí\96ºí\96»í\96»í\96»í\96»í\97»í\97»í\97»í\97»í\97»í\97»íUy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬Uy¬Uy¬Uy¬Uz¬\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼ï\98¼ï\98¼ï\98¼ï\98¼ï\98¼ï\98¼ï\98¼ï\98¼ï\13\13\13\13\13\13\13\13\13\13\8b¯á\8b¯á\8b¯á\8b¯â\8b¯â\8b¯â\8b¯â\8b¯â\8b¯â\8b°â\8b°â\8b°â\8b°â\8b°â\8b°â\8b°âKo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡\8c°â\8c°â\8c°â\8c°ã\8c°ã\8c°ã\8c°ã\8c±ã\8c±ã\8c±ã\8c±ã\8c±ã\8c±ã\8d±ã\8d±ã\8d±ã\8c\87\84\94\9a¦\95\9a¦\95\9a¦\95\9a¦\94\9a¦\94\9a¦\93\9a¦\93\99¦\93\99¦\93\99¦\93\99¦²³·µµ¹««¯«¬°«¬°¶¶º¨©¬²²¶¤¤§²°±\9d\9f§¢¡¨¦£¨ª¥©¯¨ªµ««Í±\9dÒµ Ò³\9eа\9aµ««´««´««³««²ª¬±ª¬±ª¬°ª¬®©¬­¨¬¬§««§«ª¦«©¦«fciechdbhcbhbahbahaahaah``h_`h_`h^_h]_hzvvzvv»·¸¯«¬®«¬®«¬­«¬¹¶¸¸¶¸¸¶¸·µ··µ·¶´·ª¨«©¨«¨§ª´³¶³³¶qptppsV\iV\iV\iU\iU\iV\iV]iW]iX]iX^iY^jZ_jZ_j[_j\`j]`j^aj_ak`bkbckcckddkeelgfligmkinnjoqlp¶°³wpszst}tu~tt}ss}rr|rq|qp}qo}qo~qo~ro~roSw©Sw©Sw©SwªSwªSxªSxªSxªTxªTxªTxªTxªTxªTxªTxªTxªTxªTx«\96»í\96»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»îUy«Uy«Uy«Uy«Uy¬Uy¬Uy¬Uy¬Uz¬Uz¬Uz¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬\98¼î\98¼î\98¼ï\98¼ï\98¼ï\98¼ï\98¼ï\98¼ï\98½ï\98½ï\98½ï\98½ï\98½ï\98½ï\98½ï\98½ï\98½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\13\13\13\13\13\13\13\13\13\13\13\13\8b¯â\8b°â\8b°â\8b°â\8b°â\8b°â\8b°â\8b°â\8b°â\8c°â\8c°â\8c°âKo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡\8c°ã\8c±ã\8c±ã\8c±ã\8c±ã\8c±ã\8c±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\94\9a¦\96\9b¦\97\9b¦\97\9b¦\97\9b¦\96\9b¦\96\9b¦\96\9b¦\96\9b¦\95\9b¦\95\9b¦\95\9b¦TYeSYekjmvvy·¶¹ª©¬³²µ¥£¦\9c\9e§  ¨¥£¨©¥©­§©²ªªº¯®Å¸µÄ¬\9bÒ³\9cÒ±\99Ò±\98Ñ°\98·¬«¶¬«¶¬¬µ¬­µ­­µ­®´­®³­¯²¬®±«®°«®¯ª­­©­¬¨¬iejhejfdieciecidbicbicbhbahaahaah¢¢ª¡¢ª¡¢ª ¢ª ¢ª ¡ª\9f¡ª\9f¡ª\9e¡ª\9e¡ª\9e¡ª\9d¡«\9d «\9d «\9c «\9c «\9c «\9b «\9b «\9b «Y^iX^iY^iY^iY^iZ^iZ_i[_j\_j\`j]`j^aj^aj_aj`bkabkbckcdkddkfelgflhfljgmkhmnjnplo¶°³º³µ½¶·À¸¹Â¹º\82xx\82wv\81vu\80us\7ftr\7fsq\7frp\7frp\7fsp\80sp\80sp\80spSwªSxªSxªSxªTxªTxªTxªTxªTxªTxªTxªTxªTx«Tx«Tx«Ty«Ty«Ty«Uy«Uy«\97»í\97»í\97»í\97»î\97»î\97»î\97¼î\97¼î\97¼î\97¼îUy¬Uy¬Uz¬Uz¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\13\13\13\13\13\13\13\13\13\13\13\13\13\8b°â\8b°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°â\8c°âKo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¢Ko¢Ko¢\8c±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\97\9b¦\98\9c¦\99\9c¦\99\9c¦\99\9c§\99\9c§\98\9c§\98\9c§\98\9c§\98\9c§VZeVZeVZeVZeVZeVZeVZe\98\9c§\98\9c§\9f ¨£¢¨§¤©¬¦©°¨ª¶¬«¿³°Ì¾¹ÛÊÄ¢\97\8fÒ±\99Ô¬\8dή\98Ñ°\98¶£\95¸­¬¸­¬¸®­¸®®¸¯¯¸°°¸°±¸°²·°²¶°²µ¯²´®±²­°°¬¯milkgljfkhejgejfdjfdieci¦¥«¥¤«¤¤«¤¤«¤¤«££«££«¢£«¢£«¡£«¡¢« ¢« ¢« ¢«\9f¢«\9f¢«\9f¢«\9e¡«\9e¡«\9e¡«\9e¡«\9e¡«\9f¢¬]`j]`j^`j^aj^aj_aj`aj`bjabkbckcckcdkddkedkfelgflifljglkhmmimnjnpkosmp¹²µ½¶·Á¹ºÅ¼¼È¾¾Ê¿¾É¾½È½»Ç»¹\83wu\82us\81tr\81tq\81tp\81tp\82tp\82tp\82tpSxªTxªTxªTxªTxªTxªTxªTxªTxªTx«Tx«Ty«Ty«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«\97¼î\97¼î\98¼î\98¼î\98¼î\98¼î\98¼îUz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­Vz­Vz­Vz­V{­V{­V{­V{­V{­W{­W{­\99½ï\99½ï\99½ï\99½ð\99½ð\99½ð\99½ð\99½ð\99¾ð\99¾ð\99¾ð\99¾ð\99¾ð\99¾ð\99¾ð\99¾ð\99¾ð\99¾ð\99¾ð\9a¾ð\9a¾ð\9a¾ð\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\8c°â\8c°â\8c°â\8c°â\8c°â\8c°âKo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Kp¢\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ã\8d±ä\8d±ä\8d±ä\8d±ä\99\9c§\9a\9d§\9b\9d§\9b\9d§\9b\9d§\9b\9d§\9b\9d§Y\eY\eX\eX\eX\fX\fX\fX\fX\fY\fY\f¡¡¨¦£©ª¦©®¨ª³ªªº¯­Å·´ÓþâÏÈäÏÅÜźֲ\98Ū\97ɬ\97Ì®\98Ù²\94¿¨\99¹®¬¹®­º¯­º°¯»±±¼³³½´´½µ¶½¶·½¶·¼µ·º´¶¹³µ·±´rmqpkoojnmimkhl¬©®«¨­ª§¬©¦¬¨¦¬§¥¬¦¥¬¦¥¬¥¥«¥¤«¤¤«¤¤«£¤«£¤«££¬¢£¬¢£¬¢£¬¡£¬¡£¬ £¬ £¬¢¤¬£¤¬£¤¬¤¤¬bcjbckcckcckddkedkeekfekgelhflifljgljglkhmmimnjmpknrlotnpwpr½µ¶À¸¹Å¼¼ÊÀ¿ÎÃÂÐÄÂÏÃÁοÌÀ½Ê¾»É¼¸Çº¶\84vr\83uq\83uq\83up\83up\84uq\84uqTxªTxªTxªTxªTxªTx«Tx«Tx«Ty«Ty«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬Uy¬Uy¬Uz¬Uz¬\98¼î\98¼î\98¼î\98¼îVz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­Vz­Vz­Vz­V{­V{­V{­V{­W{­W{­W{­W{­W{­W{­W{­W{­W{­W{­W{­W{­\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\8c°â\8c°â\8c°âKo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢\8d±ã\8d±ã\8d±ã\8d±ã\8d±ä\8d±ä\8d±ä\8d±ä\8d±ä\8d²ä\8d²ä\8d²ä\8d²ä\9b\9e§\9c\9e§\9c\9e§\9d\9e§\9d\9e§[]f[]f[]f[]f[]f[]f[]f[]f[]f[]f[]f[]fa`g¨¤©­§ª±©ª·¬«¾²¯Ë¼·ÙÇÁäÐÈßɾÙÀ³ê½\9b½¯¬¼¯¬Ä¥\8cË­\98Ñ°\99Ó³\9c»®¬º¯­»¯­»°®¼±°½³²¿µ´Á¸·ÃººÄ»¼Å¼½Ä½¾Ã¼½Áº¼¾¸ºztvxru·²µµ°´³®²±­±¯«°­ª¯¬©®«¨­ª¨­©§­©§¬¨¦¬§¦¬§¦¬¦¦¬¦¥¬¦¦¬§¦¬§¦¬§¦¬§¦­§¦­§¦­§¦­¨¦­¨§­©§­©§­ª¨­hfkhfkiflifljglkgllhllhlmimnimojmpjmqknsmovopyqr|st¹¹Æ¼¼ÊÀ¿ÏÄÂÓÈÅÕÉÆÕÈÆÔÇÄÒÅÂÐÃÀÎÁ½Ì¾ºÊ¼¸Éº¶È¹´\85vq\85vq\85vq\85vq\85vq\85vqTxªTx«Tx«Tx«Ty«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬Uy¬Uy¬Uz¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬\98½ïVz¬Vz¬Vz¬Vz­Vz­Vz­V{­V{­V{­V{­W{­W{­W{­W{­W{­W{­W{­W{­W{­W{­W{­W{­W{®W{®W{®W{®W|®W|®W|®W|®W|®\9a¾ð\9a¾ð\9a¾ð\9a¾ñ\9a¾ñ\9a¾ñ\9a¾ñ\9a¾ñ\9a¾ñ\9a¿ñ\9a¿ñ\9a¿ñ\9a¿ñ\9a¿ñ\9a¿ñ\9a¿ñ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀKo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Lp¢Lp¢\8d±ä\8d±ä\8d±ä\8d±ä\8d²ä\8d²ä\8d²ä\8d²ä\8d²ä\8e²ä\8e²ä\8e²ä\98\9c§\9d\9f§\9e\9f¨]^f]^f]^f]^f]^f]^f]^f]^f]^f]^f]^f]^f]^f]^fdbghdhmfh³ª«º®¬Ãµ°ÑÀºßÌÄâÍÃÛ÷ؾ°ÝÀ¯¾°¬¾°¬½°¬½°¬½¯¬Í®\98Õ²\99¼¯¬¼¯­¼¯­¼°®½±¯¾²°À´³Á¶µÄ¹¸Æ½¼É¿¿ËÂÂÌÃÄÌÄÅ\88\81\82\86\7f\80Æ¿Áý¿Àº¼½·ººµ¸·²¶´°´³®²±­±°¬°¯«¯¯ª¯®ª®­©®­©­¬©­¬©­¬©­¬©­¬©­¬©­¬©­¬©­­©®­©®­©®®ª®®ª®®ª®¯ª®¯«®nilnilnilojmpjmqkmrkmslntmnvnowopzqq}ss\81wvǽ¼ÌÁ¿ÑÅÃÕÉÇØÌÉÚÍÊÚÍÊÚÍÉÙËÇ×ÉÅÔÆÂÒÿÏÀ¼Í¾¹Ë¼·ÊºµÉº´É¹´\87wq\87wq\87wq\87wqTx«Ty«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬Uy¬Uz¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬\99½ï\99½ï\99½ïV{­V{­V{­W{­W{­W{­W{­W{­W{­W{­W{­W{­W{­W{®W{®W{®W{®W|®W|®W|®W|®W|®X|®X|®X|®X|®X|®X|®X|®X|®X|®\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀKo¡Ko¡Ko¡Ko¡Ko¡Ko¡Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢\8d²ä\8d²ä\8d²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\9b\9e§]^f^^f^_f^_f^_f__f__f__f__f__g__g__g__g__g__gfchkehoghtjizmjƶ±ÔüâÍÄÞǼٿ²Û¾¯àÁ°¿°¬¿°¬¿°¬¾°¬¾°¬¾°­¾°­½°­½°­¾°­¾±­¾±®¿²®À³°Á´±Ã¶´Å¹¶È»¹Ë¿¼ËÁÀ\8c\82\82\8e\85\85\90\87\87\92\89\88\92\88\88ÒÉÉÐÇÇÍÄÅÉÁž¿Âº¼¾·¹¼µ·º³µ¸±´·°²µ¯±´®°³­°²¬¯²¬¯²¬¯²¬®²¬®²¬®²¬®²¬®²¬®²¬®²¬¯³¬¯³­¯´­¯´­¯µ®¯µ®¯slmtlmumnvnnwnoyoo{qp|rr\7fts\81vu\85zxÌÀ¾ÒÅÂ×ÊÆÚÍÉÝÏËÞÐÍßÑÍßÑÍßÐÌÝÎÊÛÌÇØÉÄÕÅÀÒ½ϿºÍ½¸Ì¼¶Ë»µËº´Ëº´Ëº´\89xr\88xrUy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬Uy¬Uz¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­Vz­V{­\99½ï\99½ï\99½ð\99½ð\99¾ð\99¾ðW{­W{­W{­W{­W{­W{­W{®W{®W{®W|®W|®W|®W|®X|®X|®X|®X|®X|®X|®X|®X|®X|®X|®X|®X|®X|®X|¯X|¯X|¯X|¯X}¯X}¯\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9b¿ò\9b¿ò\9b¿ò\9b¿ò\9b¿ò\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀKo¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Ko¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²äLp£[]f^^f__f``f``g``ga`ga`ga`ga`ga`ga`gbagbagbaghdhmfiqiivki|ok\86vp\94\82záÌÂÛ¶پ°ÞÀ¯\90´æ\90´æ¿±­¿±­¿±­¿±­À±­À²­À²­À²­¾°­À²­À²­À²®Á²®Á³¯Â´°Ã¶²Å·´Çº¶\88zw\8b~z\8e\81~\91\84\81\8f\85\84\97\8a\88\98\8c\8a\99\8d\8bÚÏÍÙÎÌ×ÌÊÓÉÈÐÆÅÌÂÂÉ¿¿Æ½¼ÃººÁ¸¸¿¶¶½´´»²³º±²¹°±¸°°¸¯°¸¯°¸¯°¸¯¯¸¯¯¸¯¯¸¯¯¸¯¯¸¯°¹°°º°°º°°»±°»±±¼²±zpo|qo}rp\7ftr\82us\84xu\87{x\8b~{ÑÄÀÖÈÄÙËÇÝÎÊßÑÍâÓÏãÔÐäÕÐäÕÐãÓÎáÑÌÞÎÉÛËÅØÇÁÕľÒÁ»Ð¿¸Î½·Î¼µÍ¼µÍ»µÍ»µÍ»µÍ»µ\88xrUy«Uy«Uy«Uy«Uy¬Uy¬Uz¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­Vz­V{­V{­V{­W{­\99½ð\99¾ð\99¾ð\99¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ðW{®W{®W|®W|®W|®X|®X|®X|®X|®X|®X|®X|®X|®X|®X|®X|®X|¯X|¯X|¯X|¯X}¯X}¯X}¯X}¯X}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀKo¢Ko¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Kp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢\8e²ä\8e²ä\8e²ä\8e²ä\8e²ä\8e²äLp£Lp£Lq£Lq£]^f__f``ga`gbagbagcagcagcagcagdbgdbhdbhechieiogisjixlj\7fpk\89xq\96\83z\9e\87}ÚÀ³Û¿¯â°\90´æ\90´æ\90´æ¿±­À±­Á²­Â²­Â²­Â³­Â³­Â³®Â³®Â³®Â³®Ã³®Ã³®Ã´¯Ã´¯Äµ±\83tp\85vr\87xt\89{w\8c~z\8f\81}\92\84\80\95\87\83\97\89\85\99\8b\87ÜÎÊÜÏËÜÏËÛÎËÙÌÉÖÉÇÓÇÅÑÄÂο˿½È¼ºÆº¸Ä¸¶Â¶µÀµ´À´³¿´²¾³±¾³±¾²±¾²±¾²±½²°¾²±¾³±¿³±À³±À´±Áµ²Âµ²Ã¶³Ä·´\84vs\86xu\89{w\8c~y\8f\80|ÔÆÁ×ÈÄÚËÇÞÎÉáÒÍäÔÏæÖÑèØÒèØÒè×ÑæÖÐäÓÍáÐÊÝÌÆÚÉÂמԼÒÀ¹Ð¾·Ï½¶Ï½µÏ¼µÏ¼µÏ¼µÎ¼µÍ¼µ\98¼îUy¬Uy¬Uz¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­Vz­V{­V{­V{­W{­W{­W{­\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ñ\9a¾ñ\9a¿ñ\9a¿ñX|®X|®X|®X|®X|®X|®X|®X|®X|¯X|¯X|¯X}¯X}¯X}¯X}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}°Y}°Y}°Y}°\9cÀò\9cÀò\9cÀó\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀKp¢Kp¢Kp¢Kp¢Kp¢Kp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp£Lp£Lp£\8e²å\8e²å\8e²åLq£Lq£Lq£Lq£Lq£Lq£__fa`gb`gcagcagdbgdbgebgebhfchfchhdihejlgkqikukjzmj\80qk\8axq\98\83z\9c\84y\97}o\9a}m\90´æ\90´æ\90´æ\90´æ\90´æ\90´çÀ±­Â²­Ã³®Ã³®Ä´®Ä´®Ä´®Å´®Ä´®Å´®Å´®Å´®\83rl\83sm\83sn\84to\85up\87wq\88ys\8b{v\8d}x\90\80{\92\83~\94\85\80\96\87\82\98\88\84ÛÌÇÛÌÈÛÌÇÚËÇÙÊÆ×ÉÄÕÇÂÓÅÀÑþÏÁ¼Í¿»Ë½¹É»·Ç¹¶Æ¸µÅ·´Å·³Ä¶²Ä¶²Ä¶²Ãµ²Ãµ²Ä¶²Ä¶²Å·²Æ·³Ç¸³È¹´ÉºµÊ»¶Ì¼¸Î¾¹\8d~y\90\80{ÕÆÀØÈÃÜËÆßÎÉáÑËäÔÎç×ÑéØÒêÙÓëÙÓêØÒè×ÐæÔÎãÑÊßÍÆÜÊÂÙÆ¿ÖüÔÁºÒ¿¸Ñ¾·Ñ¾¶Ñ¾¶Ñ½¶Ð½¶Ð½¶Ï½¶\98¼î\98¼ï\98¼ï\98½ïVz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­Vz­V{­V{­V{­W{­W{­W{­W{­W{­W{­\9a¾ð\9a¾ð\9a¾ð\9a¾ñ\9a¾ñ\9a¾ñ\9a¿ñ\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñX|¯X|¯X|¯X}¯X}¯X}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}°Y}°Y}°Y~°Y~°Y~°Y~°Y~°Y~°Z~°Z~°Z~°Z~°Z~°\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀLp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp£Lp£Lp£Lp£Lp£Lp£Lq£\8e³åLq£Lq£Lq£Lq£Mq£Mq£Mq£Mq£``gbagcagdbgebgfchfchgchgdhhdijfjlhlpjnumnxml|ol\81qk\8awp\99\83y\9a\82v\97|n\9b}nNr¤Nr¤\90´ç\90´ç\90´ç\90µç\90µç\90µçÁ²­Ä³®Å´®Å´®Æµ®Æµ®Æµ®Æµ¯Çµ¯\84sl\84sl\85sm\85sm\85tm\85tn\86uo\87vp\88wq\8ays\8b{u\8d}w\90\7fy\91\81{\93\83}\95\84~\96\85\80ÙÉÃÙÉÃÙÉÃØÈÃ×ÇÂÖÆÁÔÄ¿ÓýÑÁ¼ÐÀºÎ¾¹Ì½·Ë¼¶Ê»µÊº´É¹´É¹³È¸³È¸³È¸³È¸³È¸³É¹³Ê¹´Êº´Ë»µÌ¼¶Î½·Ï¿¹ÑÀºÓ¼\93\82|\96\85\7fÜËÄßÍÇâÐÊåÓÌçÕÏéØÑëÙÒìÚÓìÚÓëÙÑé×ÏçÔÍäÒÊáÎÆÝÊÂÚÇ¿ØļÖºÔÁ¸Ó¿·Ó¿¶Ò¿¶Ò¾¶Ò¾¶Ò¾¶Ñ¾¶\98½ï\98½ï\99½ï\99½ï\99½ï\99½ïVz¬Vz­Vz­V{­V{­W{­W{­W{­W{­W{­W{­W{­W{­W{®\9a¾ñ\9a¾ñ\9a¿ñ\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9bÀò\9bÀòY}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}°Y}°Y}°Y~°Y~°Y~°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀLp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp£Lp£Lp£Lp£Lp£Lp£Lq£Lq£Lq£Lq£\8e³å\8e³å\8f³åMq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£a`gcagdbgebhfchgchhdhidhjeikgjnjmqmpzrr}rq~qn\82rl\8awo\97\81w\9a\81u\97|n\9b~nNr¤Nr¤Nr¤Nr¤\90µç\90µç\91µç\91µç\91µç\91µçÄ´®Å´®Æµ®Çµ¯È¶¯È¶¯\86tl\86tm\86tm\86tm\86tm\87tm\87tm\87un\87un\88vo\89wo\8axp\8byr\8czs\8e|u\8f}w\91\7fx\92\80y\93\81{\94\82{×Å¿×Æ¿×Æ¿ÖÅ¿ÕľÔýÓ¼ÒÁ»ÑÀ¹Ð¿¸Î½·Í¼¶Í¼µÌ»µÌ»´Ëº´Ëº´Ëº³Ëº³Ëº´Ìº´Ì»´Í¼µÎ½¶Ï¾·Ñ¿¸ÒÀ¹Ô»\93\81z\96\84}\98\86\7f\9b\89\82\9e\8c\84äÑÊæÔÌéÖÎêØÐìÙÑíÚÒìÙÑëØÐêÖÎçÔËåÑÉâÎÆÞÊÂÛÇ¿Ùż×úÖÁ¸ÕÀ·ÔÀ·ÔÀ¶Ô¿¶Ô¿¶Ó¿¶Ò¿¶\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ð\99½ðV{­W{­W{­W{­W{­W{­W{­W{®W{®W|®W|®\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9b¿ò\9bÀò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀòY}¯Y}¯Y}°Y}°Y~°Y~°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~±Z~±Z~±Z~±Z\7f±Z\7f±Z\7f±\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀLp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp£Lp£Lp£Lp£Lp£Lp£Lp£Lq£Lq£Lq£Lq£Lq£\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³åMq£Mq£Mq£Mq£Mq£Mq£Mq£a`gdbgfchfchhdhhdhjehkfilgjpknups~vw\82wv\83uq\84sm\8avn\95\7fu\9a\81u\97|nNr¤Nr¤Nr¤Nr¤Nr¥Nr¥Nr¥\91µç\91µç\91µç\91µç\91µç\9b\96\95ŵ¯Ç¶¯È¶¯\87tm\87tm\87um\88um\88um\88um\88um\88um\89um\89vn\89vn\89vn\8awo\8awo\8bxp\8cyq\8dzr\8e{s\8f|t\90}v\91~w\92\7fw\92\80xÕûÕüÕûÕ»ÔºÓÁºÓÀ¹Ò¿¸Ñ¿·Ð¾¶Ï½¶Ï½µÎ¼µÎ¼´Î¼´Î»´Î»´Î¼´Î¼´Ï¼µÐ½¶Ñ¾¶Ò¿·ÓÀ¸Õº\93\80y\95\82z\97\84|\9a\87\7f\9d\89\81\9f\8c\84¢\8e\86¤\90\88éÕÍë×ÎìØÏìØÏìØÏë×ÎéÕÌçÓÊåÐÇâÍÄßÊÁÝȾÚżÙú×¹ÖÁ¸ÖÁ·ÖÀ·ÖÀ·ÕÀ·ÕÀ·ÔÀ·Ñ¾·\99½ï\99½ï\99½ð\99¾ð\99¾ð\99¾ð\9a¾ð\9a¾ð\9a¾ðW{­W{­W{­W{®W|®W|®W|®X|®\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀó\9cÁó\9cÁó\9cÁó\9dÁóZ~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~°Z~±Z~±Z~±Z\7f±Z\7f±Z\7f±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀLp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp¢Lp£Lp£Lp£Lp£Lp£Lp£Lp£Lq£Lq£Lq£Lq£Lq£Lq£Lq£Mq£\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³åMq£Mq£Mq£Mq£Mq£[QIbagebhgchhdhidhjehkfimgjqkmwqs~wz\89~}\88{w\86uo\89vm\93}r\99\81t\97|nNr¤Nr¤Nr¥Nr¥Nr¥Ns¥Ns¥Ns¥\91µç\91µç\91µè\91µè\91¶è\91¶è\80ql\85sl\86tm\87um\88um\89um\89vm\89vm\8avm\8avn\8avn\8avn\8avn\8bwn\8bwn\8bwo\8cxo\8cxo\8cyp\8dyq\8ezq\8e{r\8f{s\90|t\91}t\91}u\91~uÔÁ¸ÔÁ¸ÔÁ¸ÔÀ¸ÔÀ¸ÓÀ·Ó¿·Ò¿¶Ò¾¶Ñ¾µÑ½µÑ½µÐ½µÐ½´Ð½´Ñ½µÑ½µÑ¾µÒ¾¶Ó¿·ÔÀ·ÕÁ¹\94\80w\95\81x\97\83z\99\85|\9b\87~\9d\89\80 \8b\82¢\8d\84¤\8f\86¥\91\88§\92\89ëÖÍëÖÍëÖÌêÕËèÓÉæÑÇäÏÅâÌÃàÊÀÝȾÛƼÚĺÙùظ׸×Á·×Á·×Á·ÖÁ·ÖÁ·ÔÀ·\99½ð\99¾ð\99¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ñ\9a¾ñW|®W|®X|®X|®X|®\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀó\9cÁó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁóZ~°Z~°Z~±Z~±Z~±Z\7f±Z\7f±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f±\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀLp¢Lp¢Lp£Lp£Lp£Lp£Lp£Lp£Lp£Lq£Lq£Lq£Lq£Lq£Lq£Lq£Lq£Mq£Mq£Mq£\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³å\8f³æ\8f³æ\8f³æ\8f³æ\8f´æMq£Mq£Mq¤Mq¤Mq¤]^gcahechgdhiehjeikfimgioikvoq\80yz\8e\83\82\90\82\7f\8b{u\89vn\90zp\99\81t\97|nNr¥Nr¥Nr¥Ns¥Ns¥Ns¥Ns¥Os¥Os¥Os¥\91¶è\91¶è\91¶èOs¥Os¥Os¥\83rl\86tm\88um\89vm\8avm\8avn\8bwn\8bwn\8cwn\8cwn\8cwn\8cwn\8cxn\8dxn\8dxo\8dxo\8dxo\8eyo\8eyp\8ezp\8fzq\8f{q\90{r\90|r\91|s\91|s\91}sÔÀ¶ÔÀ¶Ô¿¶Ô¿¶Ô¿¶Ô¿¶Ó¿¶Ó¾µÓ¾µÓ¾µÓ¾µÓ¾µÓ¾µÓ¾µÓ¾µÔ¿¶Ô¿¶ÕÀ·ÖÁ·\94\7fv\95\80w\97\81x\98\83y\9a\85{\9b\86}\9d\88~\9f\8a\80¡\8c\82£\8d\83¤\8f\85¦\90\86¦\90\86§\91\87éÔÉéÓÈçÑÇæÏÅäÎÃâÌÁàÊ¿ÞȽÜÆ»ÛźÚĹÙøÙøٸٸظظ×Á¸ÕÁ¸\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ñ\9a¾ñ\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñX|®X|®\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀó\9cÁó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÁô\9dÁô\9dÂô\9dÂô\9dÂô\9eÂôZ\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\7f²[\7f²[\7f²[\80²[\80²[\80²\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀLp£Lp£Lp£Lq£Lq£Lq£Lq£Lq£Lq£Lq£Lq£Lq£Mq£Mq£Mq£Mq£Mq£\8f³å\8f³å\8f³å\8f³å\8f³å\8f³æ\8f³æ\8f³æ\8f³æ\8f´æ\8f´æ\8f´æ\8f´æ\8f´æ\90´æ\90´æMq¤Mq¤Mr¤Mr¤^_gdbhfchhdhjeilfimgiohjslm|uw\87\80\81\97\8a\87\91\81|\8bxp\8eyo\99\80t\97}o\95{nNs¥Ns¥Ns¥Ns¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¦Os¦Ot¦Ot¦\85sm\88um\89vm\8bvn\8bwn\8cwn\8dxn\8dxn\8dxn\8exn\8exo\8exo\8eyo\8fyo\8fyo\8fyo\8fyo\8fzp\90zp\90zp\90{q\91{q\91{q\91|r\92|r\92|r\92|rÕ¿µÕ¿µÕ¿µÕ¿µÕ¿µÕ¿µÕ¿µÕ¿µÕ¿µÕ¿µÕ¿µÕ¿µÕ¿µÖÀ¶ÖÀ¶×Á·\94\7ft\95\7fu\96\80v\98\82w\99\83x\9a\84z\9c\86{\9d\87}\9f\89\8a\7f¢\8b\81£\8c\82¤\8d\83¥\8e\83¥\8e\83¥\8e\83¤\8d\83æÏÄåÎÃãÌÁâËÀàɾßȽÝÆ»ÜźÛĹÛĸÚøÚøÚøÚøÙøظÖÁ¸\9a¾ð\9a¾ð\9a¾ð\9a¾ñ\9a¾ñ\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿òX|¯X|¯\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀó\9cÁó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÁô\9dÂô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô[\7f±[\7f±[\7f±[\7f²[\7f²[\7f²[\80²[\80²[\80²[\80²\\80²\\80²\\80²\\80²\\80²\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀLq£Lq£Lq£Lq£Lq£Lq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£\8f³å\8f³å\8f³æ\8f³æ\8f³æ\8f³æ\8f´æ\8f´æ\8f´æ\8f´æ\8f´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æMr¤Mr¤Nr¤_`gdbhgdhieikfimgiohjqjkxpq\84|}\96\8a\88\98\89\84\8f}v\8exn\95}r\98~q\94{nNs¥Ns¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥\92¶è\92¶è\92¶èOs¦Ot¦Ot¦Ot¦Pt¦Pt¦\86tm\89vn\8bwn\8cwn\8dxn\8exn\8exn\8fyo\8fyo\8fyo\90yo\90zo\90zo\90zo\91zo\91zp\91zp\91{p\91{p\92{p\92{q\92|q\92|q\93|q\93|q\93|r\93|rÖ¿µÖÀµÖÀµÖÀµÖÀµÖÀµÖÀµÖÀµ×Àµ×Àµ×Àµ×Á¶ØÁ¶\95~t\96\7ft\97\80u\97\81v\98\81v\9a\82w\9b\84x\9c\85z\9d\86{\9e\87\88\89\8a\7f¢\8b\80£\8b\80£\8c\80£\8c\80£\8b\80¢\8b\7f¡\89~ãË¿âʾáɽßȼÞÇ»ÝƺÝŹÜĹÜĸÜĸÛĸÛĸÛøÚøظ\9a¾ñ\9a¾ñ\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9bÀòX}¯X}¯Y}¯Y}¯\9cÀò\9cÀò\9cÀó\9cÀó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÁô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÂõ\9eÃõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ[\80²\\80²\\80²\\80²\\80²\\80²\\80²\\80²\\80²\\80²\\80²\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀMq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£\8f³æ\8f³æ\8f³æ\8f³æ\8f´æ\8f´æ\8f´æ\8f´æ\8f´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æNr¤Nr¤Nr¤``hechhdijeilfingipijtlm~uv\8b\83\83\9c\8e\8a\96\84~\8dyp\92{o\99\7fr\95{nOs¥Os¥Os¥Os¥Os¥Os¥Os¥Os¥\92¶è\92¶è\92¶è\92¶è\92¶è\92¶éOt¦Pt¦Pt¦Pt¦Pt¦Pt¦Pt¦\88un\8bwn\8cxn\8exn\8eyo\8fyo\90yo\90zo\91zo\91zo\91zo\92{o\92{p\92{p\92{p\93{p\93{p\93|p\93|p\93|q\94|q\94|q\94}q\94}q\94}q\94}r\95}rØÀµØÀµØÀµØÀµØÁµØÁµØÁµÙÁµÙÁ¶ÙÁ¶\97\7fs\97\7fs\97\80t\98\80t\99\81u\99\81v\9a\82v\9b\83w\9c\84x\9d\85y\9e\86z\9f\87\88\89\89\89\8a\8a\89\89\88\87{\9f\86záȼàÈ»ßÇ»ßƺÞƹÞŹÝŹÝŹÝŹÜĹÜĹÛĹÙù\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9bÀò\9cÀò\9cÀòY}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}°\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÁô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÂõ\9eÃõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÃö\\80²\\80²\\80²\\80³\\80³\\80³\\81³\\81³\\81³\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀMq£Mq£Mq£Mq£Mq£Mq£Mq£Mq£\8f³æ\8f´æ\8f´æ\8f´æ\8f´æ\8f´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´ç\90´ç\90´ç\90´ç\90µç\90µçNr¤Nr¤aahechheikfimgiohjrjkxop\86}|\99\8c\89\9c\8b\86\92~v\90yn\98\7fr\97|oYTROs¥Os¥Os¥Os¥Os¥Os¥\92¶è\92¶è\92¶è\92¶é\92¶é\92·é\92·é\92·é\93·éPt¦Pt¦Pt¦Pt¦Pt¦Pt§Pt§\89vn\8cxn\8exo\8fyo\90zo\91zo\91zo\92{o\92{p\93{p\93{p\93|p\94|p\94|p\94|p\94|p\95|q\95}q\95}q\95}q\95}q\96}q\96}q\96~q\96~r\96~rÙÁµÚÁµÚÁµÚÁµÚÁµÚµÚ¶\97\7fs\98\7fs\98\7fs\98\80s\99\80t\99\81t\9a\81u\9a\82u\9b\82v\9c\83v\9c\84w\9d\84x\9e\85y\9f\86y\9f\86\87\88\88\88\88\88\88\87\87z\9f\86y\9e\85x\9e\84xàǺàǺßƺßƹßƹÞƹÞŹÞŹÝŹÜŹÚĹ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀòY}¯Y}¯Y}¯Y}¯Y}¯Y}°Y~°Y~°Y~°Z~°\9dÁó\9dÁó\9dÁô\9dÂô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÂõ\9eÃõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÃö\9fÄö\9fÄö\9fÄö Äö Äö Äö Äö\\81³\\81³]\81³]\81³]\81³]\81³\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀMq£Mq£Mq£Mq£Mq£\8f´æ\8f´æ\8f´æ\8f´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´ç\90´ç\90´ç\90µç\90µç\90µç\90µç\90µç\91µç\91µç\91µçNr¤aahfciieilfingjpijtlm}tu\90\85\83\9e\8f\8a\98\85~\90zp\94|p\98\7fq\92znOs¥Os¥Os¥Os¥Os¦\92¶è\92¶è\92¶é\92¶é\92·é\92·é\92·é\93·é\93·é\93·é\93·é\93·éPt¦Pt¦Pt§Pt§Pu§Pu§Pu§\8awn\8dxo\8fyo\90zo\91zo\92{p\93{p\93|p\94|p\94|p\95|p\95}p\95}q\96}q\96}q\96}q\96}q\97~q\97~q\97~q\97~q\97~r\97~r\98\7fr\98\7fr\98\7fr۵۵ܶܶ\99\7fs\99\80s\99\80s\9a\80s\9a\80s\9a\81t\9a\81t\9b\81t\9b\82u\9c\82u\9c\83v\9d\83v\9e\84w\9e\84w\9f\85x\9f\86\86\86\87\87\87\87\87\87\86y\9f\86x\9f\85x\9e\85w\9e\84w\9e\84wàǺàǺàƹàƹßƹßƹÞƹÝŹÜĹ\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀòY}¯Y}¯Y}¯Y}°Y}°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~°\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÂõ\9eÃõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÃö\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö Äö Äö Äö Äö Ä÷ Ä÷ Ä÷ Å÷]\81³]\81³\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀMq£Mq£\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´ç\90´ç\90´ç\90´ç\90µç\90µç\90µç\90µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µçX\gbahfdiieilgjohjqjkvno\85{{\98\8b\88\9d\8c\85\93\7fv\92zo\99\7fr\96|oOs¥Os¥Os¦Os¦\92¶é\92¶é\92·é\92·é\92·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·ê\93·êPu§Pu§Pu§Qu§Qu§Qu§Qu§\8cxo\8eyo\90zo\92{p\93{p\93|p\94|p\95|p\95}p\96}q\96}q\97~q\97~q\97~q\97~q\98~q\98~q\98\7fr\99\7fr\99\7fr\99\7fr\99\7fr\99\7fr\99\80r\9a\80r\9a\80rÝö\9a\80s\9a\80s\9a\80s\9b\81s\9b\81s\9b\81t\9b\81t\9c\82t\9c\82t\9c\82u\9d\82u\9d\83u\9e\83v\9e\84v\9f\84v\9f\85w\9f\85\85\86\86\86\86\86\86\86\86\86\85w\9f\85w\9f\85w\9f\84w\9e\84w\9e\84váǺáǺàǺàǺßƺÞƺÝź\9b¿ò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀóY}¯Y}¯Y}°Y}°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~±Z~±Z\7f±Z\7f±[\7f±\9eÂô\9eÂõ\9eÂõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÃö\9fÄö\9fÄö\9fÄö Äö Äö Äö Äö Äö Äö Äö Ä÷ Ä÷ Ä÷ Å÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´æ\90´ç\90´ç\90´ç\90´ç\90µç\90µç\90µç\90µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µè\9d¡«bbigdijeimgjohjskl{rr\8e\83\81\9d\8e\8a\98\85~\91{q\95|p\98~q\90ynOs¦\92¶é\92¶é\92·é\92·é\92·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·ê\93·ê\93¸ê\93¸ê\93¸êQu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§\8dxo\90zp\91{p\93{p\94|p\95}p\96}q\96}q\97~q\97~q\98~q\98~q\98\7fq\99\7fr\99\7fr\99\7fr\9a\7fr\9a\80r\9a\80r\9a\80r\9a\80r\9b\80r\9b\80s\9b\81sßĶßĶ\9c\81s\9c\81s\9c\81s\9c\82s\9d\82t\9d\82t\9d\82t\9d\82t\9e\83t\9e\83u\9e\83u\9e\84u\9f\84v\9f\84\85\85\85\85\86\86\86\86\86\86\86\86\86\85\85\85w\9f\85w\9f\85w\9f\84w\9f\84wâȺáǺàǺßǺÞƺÚĺ\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀó\9cÁóY}¯Y}°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~°Z~±Z~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö Äö Äö Äö Ä÷ Ä÷ Å÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Åø\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\90´æ\90´æ\90´æ\90´æ\90´æ\90´ç\90´ç\90´ç\90´ç\90µç\90µç\90µç\90µç\90µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µè\91µè\91µè\91¶è\91¶è ¢«cbigdijfjmgjpikvmn\82yy\96\89\86\9d\8c\86\94\7fv\92zo\98\7fr\96|o\92·é\92·é\92·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·ê\93·ê\93·ê\93¸ê\93¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸êQu§Qu§Qu§Qu§Qu¨Qu¨Qv¨Qv¨\8eyp\91zp\93{p\94|q\95}q\96}q\97~q\97~q\98~q\99\7fq\99\7fr\9a\7fr\9a\80r\9a\80r\9b\80r\9b\80r\9b\80r\9b\81r\9c\81s\9c\81s\9c\81sàŶàŶàŶàÅ·áÅ·\9d\82t\9e\82t\9e\82t\9e\83t\9e\83t\9f\83t\9f\83u\9f\83u\9f\84u\9f\84\84\84\85\85\85\85\86\86\86\86\86\86\86\86\86\86\86\85\85\85\85\85w\9f\85w\9f\85wáȺàǺßƺ\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÁó\9cÁó\9dÁóY}°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~°Z~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\7f²[\80²[\80²\\80²\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö Äö Äö Äö Ä÷ Ä÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Åø¡Åø¡Æø¡Æø¡Æø\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\90´ç\90´ç\90´ç\90´ç\90µç\90µç\90µç\90µç\90µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µè\91µè\91µè\91¶è\91¶è\91¶è\91¶è\92¶è\92¶è\92¶è ¢«¦¥¬hdikfjnhjrjlyqr\8d\82\81\9d\8e\8a\99\86\7f\91{q\95|pÜ´Լ±\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·ê\93·ê\93¸ê\93¸ê\93¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ë\94¸ëQu¨Qu¨Qv¨Qv¨Qv¨Rv¨Rv¨Rv¨\8fzp\92{p\94|q\95}q\96~q\97~q\98\7fq\99\7fr\99\7fr\9a\80r\9a\80r\9b\80r\9b\80r\9c\81r\9c\81s\9c\81s\9d\81s\9d\82sáŶáÅ·áÅ·áÆ·âÆ·âÆ·âÆ·âÆ·\9f\83t\9f\83t\9f\83\84\84\84\84\84\85\85\85\85\85\86\86\86\86\86\86\86\86\86\86\86\86\86\86\86\86\86\85\85w\9f\85w\9e\84wàÇ»\9cÀò\9cÀò\9cÀó\9cÁó\9cÁó\9dÁó\9dÁóY~°Y~°Z~°Z~°Z~°Z~°Z~°Z~°Z~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\80²[\80²\\80²\\80²\\80²\\80²\\80²\\80² Äö Äö Äö Äö Ä÷ Ä÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Åø¡Æø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\90µç\90µç\90µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µè\91µè\91µè\91µè\91¶è\91¶è\91¶è\91¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92\8d\89¡£¬§¦¬«¨­lgjohktln\7fvw\97\8b\88\9e\8e\88\94\80wÕ¾²ÛµÙÀ³Ê¸°\93·é\93·é\93·é\93·é\93·ê\93·ê\93·ê\93¸ê\93¸ê\93¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ë\94¸ë\94¹ë\94¹ë\95¹ë\95¹ëQv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨\90zp\93|q\95}q\96~q\97~r\98\7fr\99\7fr\9a\80r\9b\80r\9b\80r\9c\81s\9c\81s\9d\81s\9d\82s\9d\82sáÅ·âÆ·âÆ·âÆ·âÆ·ãÆ·ãÇ·ãÇ·ãǸäǸäǸ¡\84\84\84\85\85\85\85\85\85\86\86\86\86\86\86\87\87\87\87\87\87\87\87\87\86\86\86\86\86\86\85x\9f\85x\9d\84xY}¯\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁóZ~°Z~°Z~°Z~°Z~°Z~±Z~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\7f²[\80²[\80²\\80²\\80²\\80²\\80²\\80²\\80³\\80³\\81³\\81³]\81³ Å÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Æù\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µç\91µè\91µè\91µè\91µè\91¶è\91¶è\91¶è\91¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\9a\9f«¢£¬§¦¬«¨­lgjpikwoq\89\7f\7fàÒÎÜÊÃÔ¿µØÀ³Üõ־²\93·é\93·é\93·ê\93·ê\93¸ê\93¸ê\93¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ë\94¸ë\94¹ë\94¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ëRv¨Rv¨Rv¨Rv¨Rv¨Rv©Rw©Rw©\93|q\94|q\96~r\97~r\98\7fr\9a\80r\9a\80r\9b\81r\9c\81s\9d\81s\9d\82s\9e\82sáÆ·âÆ·âÆ·ãÆ·ãÇ·ãÇ·äÇ·äǸäǸäȸåȸåȸåȸåȸ¢\85\85\85\85\86\86\86\86\86\86\87\87\87\87\87\87\87\87\87\87\87\87\87\87\87\87\86\86\86x\9f\85xY}¯Y}¯Y}¯Y}°\9dÁó\9dÁó\9dÁôZ~°Z~°Z~°Z~°Z~°Z~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\7f²[\80²[\80²\\80²\\80²\\80²\\80²\\80²\\80³\\80³\\81³\\81³]\81³]\81³]\81³]\81³]\81³¡Å÷¡Å÷¡Å÷¡Åø¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Æù¢Çù¢Çù£Çù\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\91µç\91µç\91µç\91µç\91µç\91µè\91µè\91µè\91µè\91¶è\91¶è\91¶è\91¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶é\92¶é\92¶é\92·é\9c¡«£¤¬¨¦­¬©­°ª®rkmÀ¸¹ØÍËáÒÍ×ûԾ³ÛµÚÁ´Ð»±\93¸ê\93¸ê\93¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ë\94¸ë\94¹ë\94¹ë\94¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ì\95¹ìRv¨Rv¨Rv©Rv©Rw©Rw©Sw©Sw©Sw©Sw©\95}r\97~r\98\7fr\9a\80r\9b\80s\9c\81s\9c\81s\9d\82sáÅ·âÆ·âÆ·ãÆ·ãÇ·äÇ·äǸäǸåȸåȸåȸæȸæȸæɹæɹæɹçɹ£\86\86\86\86\86\87\87\87\87\87\87\87\87\88\88\88\88\88\88\88\88\87\87\87\87\87\86\86xY}¯Y}¯Y}°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\7f²[\80²\\80²\\80²\\80²\\80²\\80²\\80²\\80³\\81³\\81³]\81³]\81³]\81³]\81³]\81³]\81³]\81´]\82´]\82´^\82´¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Æù¢Çù¢Çù£Çù£Çù£Çù£Çù£Çù\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\91µè\91µè\91µè\91¶è\91¶è\91¶è\91¶è\91¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶é\92¶é\92¶é\92¶é\92·é\92·é\92·é\93·é\94\9c«\9d¡¬£¤¬¨§­¬©®mhkunqÉÁÂßÒÏÛÊÄÓ¾µØÀ´Ýöؿ²\93¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ë\94¸ë\94¹ë\94¹ë\94¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ì\95¹ì\95ºì\95ºì\96ºì\96ºìRw©Rw©Rw©Sw©Sw©Sw©Sw©Sw©Sw©SwªSwª\98\7fr\99\80s\9a\80s\9c\81sàÅ·áÅ·âÆ·âÆ·ãÇ·ãǸäǸäȸåȸåȸæȸæɸæɹçɹçɹçɹçʹèʹèʹèʹ¥\87\87\87\87\87\87\88\88\88\88\88\88\88\88\88\88\88\88\88\88\88\88\87\87\87xY}¯Y}°Y~°Y~°Z~°Z~°\9eÂô\9eÂô\9eÂôZ~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\7f²[\80²\\80²\\80²\\80²\\80²\\80²\\80³\\80³\\81³\\81³]\81³]\81³]\81³]\81³]\81³]\81´]\81´]\82´]\82´^\82´^\82´^\82´^\82´^\82´¢Æø¢Æø¢Æù¢Æù¢Çù¢Çù£Çù£Çù£Çù£Çù£Çù£Çù£Çù£Çú\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\91¶è\91¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶é\92¶é\92¶é\92·é\92·é\92·é\92·é\93·é\93·é\93·é\93·é\93·é\97\9e«\9f¢¬¤¥­edjifknilzsuÔÊÉÝÏÊÔÁºÔ¾³ÛöÛÁ´Ô½²\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ë\94¸ë\94¹ë\94¹ë\94¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ì\95¹ì\95ºì\95ºì\95ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºìSw©Sw©Sw©Sw©Sw©SwªSwªSxªSxªTxªTxªTxªÞÄ·ßÅ·àÅ·áÆ·âÆ·ãǸãǸäǸåȸåȸæȸæɸæɹçɹçɹèʹèʹèʹèʹéʺé˺é˺¦\87\87\88\88\88\88\88\88\88\88\88\89\89\89\89\89\89\89\88\88\88\88\88yY}°Y}°Y~°Y~°Z~°Z~°\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÃõ[\7f±[\7f±[\7f±[\7f±[\7f²[\7f²[\80²\\80²\\80²\\80²\\80²\\80²\\80³\\80³\\81³\\81³]\81³]\81³]\81³]\81³]\81³]\81´]\82´]\82´^\82´^\82´^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ^\83µ_\83µ£Çù£Çù£Çù£Çù£Çù£Çù£Çú£Çú£Èú£Èú\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶è\92¶é\92¶é\92¶é\92·é\92·é\92·é\92·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\8d\99«\99\9f¬\_iabjfdjjfkpkn~xz\95\89\87ÖÆÁÒ½´ØÀµÝÄ·ØÀ³\94¸ê\94¸ê\94¸ë\94¸ë\94¸ë\94¹ë\94¹ë\94¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ì\95¹ì\95ºì\95ºì\95ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºí\96ºí\96»í\96»íSw©Sw©SwªSwªSxªSxªTxªTxªTxª\97¼î\98¼î\98¼î\98¼îàÅ·áÆ·âƸãǸäǸäȸåȸæɹæɹçɹçɹèʹèʹèʹéʺé˺é˺é˺ê˺ê˺ê̺§\88\88\88\88\89\89\89\89\89\89\89\89\89\89\89\89\89\89\89\89yY}°Y~°Y~°Z~°Z~°Z~°\9eÂô\9eÂô\9eÂô\9eÂõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ[\7f²[\7f²[\80²[\80²\\80²\\80²\\80²\\80²\\80³\\80³\\81³\\81³]\81³]\81³]\81³]\81³]\81³]\81´]\82´]\82´^\82´^\82´^\82´^\82´^\82´^\82µ^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83µ_\83µ£Çú£Çú£Èú£Èú¤Èú¤Èú¤Èú¤Èú\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\92¶è\92¶è\92¶è\92¶é\92¶é\92¶é\92¶é\92·é\92·é\92·é\92·é\92·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·ê\93·êPt¦PYhW]i]`ibbjfekkgltnr\88\7f\80\92\84\80\8d{tÓ¾´ÜĸÛµվ³\94¸ë\94¹ë\94¹ë\94¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ì\95¹ì\95ºì\95ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºí\96ºí\96»í\96»í\97»í\97»í\97»íSwªSxªSxªTxªTxªTxªTxª\98¼î\98¼î\98¼î\98¼î\98¼î\98¼ï\98¼ï\98½ïçɸãǸäȸåȹæɹæɹçɹçʹèʹèʺéʺé˺é˺ê˺ê˺ê̺ëÌ»ëÌ»ëÌ»ëÌ»¨\89\89\89\89\89\89\89\89\89\8a\8a\8a\89\89\89\8ayY}°Y}°Y~°Z~°Z~°Z~°Z~°\9eÂô\9eÂô\9eÂõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÄö\\80²\\80²\\80²\\80²\\80²\\80³\\81³\\81³]\81³]\81³]\81³]\81³]\81³]\81´]\82´]\82´^\82´^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶_\84¶`\84¶¤Èú¤Èú¤Èú¤Èú¤Èú\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\92¶é\92¶é\92·é\92·é\92·é\92·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·ê\93·ê\93·ê\93¸êPt¦Pt¦JVhRZhX]i]`jbcjgekmimwru\8a\7f~\8c|w\8cypÙ·ÝÄ·ÙÀ³\94¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ì\95¹ì\95ºì\95ºì\95ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºí\96ºí\96»í\96»í\97»í\97»í\97»í\97»í\97»í\97»í\97»îTxªTxªTxªTxª\98¼î\98¼î\98¼î\98¼î\98¼ï\98¼ï\98½ï\98½ï\99½ï\99½ï\99½ï\99½ï\99½ïéÁ¤æɹæɹçʹèʺèʺé˺é˺ê˺ê˺ê̺ëÌ»ëÌ»ëÌ»ìÍ»ìÍ»ìÍ»ìÍ»¨\89\89\8a\8a\8a\8a\8a\8a\8a\8a\8a\8byY}¯Y}°Y~°Y~°Z~°Z~°Z~°Z~°\9eÂô\9eÂõ\9eÂõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÄö\9fÄö Äö Äö Äö\\80²\\80³\\81³\\81³]\81³]\81³]\81³]\81³]\81³]\81´]\82´]\82´^\82´^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84¶`\84·¤Èû¤Éû\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·ê\93·ê\93·ê\93¸ê\93¸ê\93¸ê\93¸êPt¦Pt§Pt§JVhMXhT[iY^i^ajccjgeknjo}uw\87zw\89xq\91{r\9a\82vÛÁµÖ¿³\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ë\95¹ì\95¹ì\95ºì\95ºì\95ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºí\96ºí\96»í\96»í\96»í\97»í\97»í\97»í\97»í\97»í\97»í\97»î\97»î\97¼î\97¼î\98¼îTxª\98¼î\98¼î\98¼î\98¼ï\98¼ï\98½ï\98½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ð\99½ð\99¾ð\99¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ðì̺é˺ê˺êÌ»ëÌ»ëÌ»ëÌ»ìÍ»ìÍ»ìÍ»ìͼíͼíμíμ©\8a\8a\8a\8a\8a\8b\8cyY}¯Y}¯Y}°Y}°Y~°Z~°Z~°Z~°Z~°Z~°Z~±\9eÂõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö Ä÷ Ä÷ Å÷]\81³]\81³]\81³]\81³]\81³]\81´]\82´]\82´^\82´^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\85·`\85·a\85·a\85·\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\93·é\93·é\93·é\93·é\93·é\93·é\93·é\93·ê\93·ê\93·ê\93·ê\93¸ê\93¸ê\93¸ê\93¸ê\94¸ê\94¸êPt§Pt§Pt§Pu§JVhJVhOYiU\iZ_j_ajcckhflpkp\7fut\85vq\8cxp\98\81w\98\80s\96}p\95¹ë\95¹ë\95¹ë\95¹ì\95¹ì\95ºì\95ºì\95ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºí\96ºí\96»í\96»í\96»í\97»í\97»í\97»í\97»í\97»í\97»í\97»î\97»î\97¼î\97¼î\98¼î\98¼î\98¼îTxªTx«\98¼î\98¼ï\98½ï\98½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ð\99¾ð\99¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ñ\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\95\93\92óмóѼóѽóѽôѽ\9cÀò\9cÀóX}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~±\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö Ä÷ Ä÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷]\81³]\81´]\82´]\82´^\82´^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\84·`\85·`\85·a\85·a\85·a\85·\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\93·é\93·ê\93·ê\93·ê\93·ê\93¸ê\93¸ê\93¸ê\93¸ê\94¸ê\94¸ê\94¸ê\94¸êPt§Pu§Pu§Pu§Pu§Pu§JWhJWhJWhQZiV]i[_j`bkddkhglunp\80sq\87vp\94\7fu\9a\82v\97~qQv¨\95¹ì\95¹ì\95ºì\95ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºí\96ºí\96»í\96»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»î\97¼î\97¼î\97¼î\98¼î\98¼î\98¼î\98¼îTx«Tx«Ty«Ty«Uy«\99½ï\99½ï\99½ï\99½ï\99½ï\99½ï\99½ð\99¾ð\99¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ñ\9a¾ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÁó\9cÁó\9dÁó\9dÁóY}¯Y}¯Y}¯Y}°Y~°Y~°Z~°Z~°Z~°Z~°Z~±Z\7f±\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö Ä÷ Ä÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Æø¡Æø^\82´^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\85·`\85·a\85·a\85·a\85·a\85·a\85·\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\93¸ê\93¸ê\93¸ê\93¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸êPu§Pu§Pu§Pu§Qu§Qu§Qu§JWhJWhJWhJWhR[iW]j\`jabkedknjmzpo\84to\90|t\9b\84y\97~qRv¨Rv¨Rv¨\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºì\96ºí\96ºí\96»í\96»í\96»í\97»í\97»í\97»í\97»í\97»í\97»í\97»î\97»î\97¼î\97¼î\97¼î\98¼î\98¼î\98¼î\98¼î\98¼îTx«Ty«Ty«Uy«Uy«Uy«Uy«\99½ï\99½ï\99½ï\99½ð\99¾ð\99¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ñ\9a¾ñ\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁôY~°Y~°Z~°Z~°Z~°Z~°Z~°Z~±Z\7f±\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÃö\9fÄö Äö Äö Äö Äö Äö Ä÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\85·`\85·a\85·a\85·a\85·a\85·a\85·a\85¸a\86¸\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸ê\94¸êPu§Pu§Qu§Qu§Qu§Qu§Qu§Qu§JWhJWhJWhKWiKWiS\iX^j]`kackgeltln\7fro\8byr\9b\85z\98\7frIMSRv¨Rv¨Rv¨\96ºì\96ºì\96ºì\96ºì\96ºí\96ºí\96»í\96»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»î\97»î\97¼î\97¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼îTx«Ty«Ty«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬\99¾ð\99¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ñ\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÂô\9dÂô\9eÂô\9eÂôZ~°Z~°Z~°Z~±Z~±Z\7f±\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÄö Äö Äö Äö Äö Äö Ä÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù¢Çù£Çù_\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\84·`\85·`\85·a\85·a\85·a\85·a\85·a\85·a\85¸a\86¸a\86¸\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\94¸ê\94¸ê\94¸ê\94¸ê\94¸ë\94¸ëQu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§KWiKWiKWiKWiKWiOZiT\jY_j^akbcknimzon\86vp\99\85|\98\80s\9b\80qRv¨Rv¨Rv©Rv©Rw©\96ºí\96»í\96»í\96»í\97»í\97»í\97»í\97»í\97»í\97»í\97»í\97»î\97»î\97¼î\97¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼ïTx«Ty«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬Uy¬Uz¬Uz¬Vz¬\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ñ\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÁô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõZ~±Z\7f±Z\7f±\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö Ä÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù¢Çù£Çù£Çù£Çù£Çù£Çú_\83µ_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\85·`\85·a\85·a\85·a\85·a\85·a\85¸a\85¸a\86¸a\86¸b\86¸\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\94¸ë\94¹ëQu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu¨KWiKWiKWiKWiKWiMXiQ[jV]jZ_k_akbclumn\82tp\97\84|\99\80t\9c\80rRv©Rv©Rw©Rw©Rw©Sw©Sw©\97»í\97»í\97»í\97»í\97»í\97»í\97»î\97»î\97¼î\97¼î\97¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼ï\98¼ïTy«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬Uy¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬\9a¾ñ\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÃõ\9eÃõ\9fÃõ[\7f±\9fÃõ\9fÃõ\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö Ä÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù¢Çù£Çù£Çù£Çù£Çù£Çú£Çú£Èú¤Èú¤Èú`\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\85·`\85·a\85·a\85·a\85·a\85·a\85¸a\85¸a\86¸b\86¸b\86¸b\86¸\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀQu§Qu§Qu§Qu§Qu§Qu§Qu§Qu§Qu¨Qu¨Qu¨Qv¨KWiKWiKXiKXiKXiKXiNYjS\jW^k\`k_bkqkm~ro\95\83{\99\82vRw©Rw©Rw©Rw©Sw©Sw©Sw©Sw©Sw©\97»í\97»í\97»í\97»î\97»î\97¼î\97¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼ï\98¼ï\98½ïTy«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬Uz¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­Vz­\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÂõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ[\7f±\9fÃö\9fÄö Äö Äö Äö Äö Äö Ä÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Åø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Æù¢Çù£Çù£Çù£Çù£Çù£Çú£Çú£Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Èû`\84¶`\84·`\85·`\85·a\85·a\85·a\85·a\85·a\85¸a\85¸a\86¸b\86¸b\86¸b\86¸b\86¸b\86¸\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀQu§Qu§Qu¨Qu¨Qu¨Qu¨Qv¨Qv¨Qv¨Qv¨KXiKXiKXiKXiKXiKXiLXiPZjT]jY_k]akmim{po\92\81z\99\81uRw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©SwªSwª\97¼î\97¼î\97¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼î\98¼ï\98¼ï\98½ï\98½ïTy«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬Uy¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­V{­V{­W{­W{­\9b¿ñ\9b¿ñ\9b¿ò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÁô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ[\7f±[\7f±[\7f²[\80² Äö Äö Äö Ä÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù£Çù£Çù£Çù£Çù£Çù£Çú£Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Èû¤Éû¥Éû¥Éû¥Éûa\85·a\85·a\85·a\85·a\85¸a\85¸a\86¸b\86¸b\86¸b\86¸b\86¸b\86¸b\86¹\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀQv¨Qv¨Qv¨Qv¨Qv¨Rv¨Rv¨Rv¨KXiKXiKXiKXiKXiKXiLXjMYjQ[jV]kZ`kigmwnn\95\83\85sSw©Sw©Sw©Sw©Sw©Sw©Sw©SwªSwªSxªSxªSxªTxª\98¼î\98¼î\98¼î\98¼î\98¼î\98¼ï\98¼ï\98½ï\98½ï\98½ï\99½ïUy«Uy«Uy«Uy«Uy«Uy«Uy¬Uy¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­Vz­V{­V{­W{­W{­W{­W{­W{­\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö[\7f±[\7f±[\7f²[\80²\\80²\\80²\\80² Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù¢Çù£Çù£Çù£Çù£Çù£Çú£Èú¤Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êüa\85·a\85¸a\86¸b\86¸b\86¸b\86¸b\86¸b\86¸b\86¹b\87¹\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀRv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv¨KXiKXiLXjLXjLXjLXjLXjOZjS\kW^kigm\81tp\9d\81sSw©Sw©Sw©Sw©Sw©Sw©SwªSwªSxªSxªSxªTxªTxªTxªTxª\98¼î\98¼î\98¼ï\98¼ï\98½ï\98½ï\99½ï\99½ï\99½ïUy«Uy«Uy«Uy«Uy«Uy¬Uy¬Uz¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­Vz­V{­V{­W{­W{­W{­W{­W{­W{®W{®W|®W|®\9cÀò\9cÀò\9cÀó\9cÀó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÂõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö[\7f±[\7f²[\7f²[\80²\\80²\\80²\\80²\\80²\\80³\\80³¡Å÷¡Å÷¡Åø¡Åø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù¢Çù£Çù£Çù£Çù£Çù£Çú£Èú£Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êü¦Êü¦Êü¦Êü¦Êüb\86¸b\86¸b\86¸b\86¸b\86¹b\87¹b\87¹c\87¹\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀRv¨Rv¨Rv¨Rv¨Rv¨Rv¨Rv©LXjLXjLXjLXjLXjMYjR[kW^k]al\7fro\9d\82sSw©Sw©Sw©Sw©SwªSwªSwªSxªSxªSxªTxªTxªTxªTxªTxªTxªTxªTx«\98½ï\98½ï\99½ï\99½ï\99½ï\99½ïUy«Uy«Uy«Uy«Uy«Uy¬Uz¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­V{­V{­W{­W{­W{­W{­W{­W{­W{®W|®W|®X|®X|®X|®\9cÀó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÁô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÄö[\7f±[\7f²[\80²[\80²\\80²\\80²\\80²\\80²\\80³\\81³\\81³]\81³]\81³¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù£Çù£Çù£Çù£Çù£Çú£Èú£Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý§Ëýb\86¹b\87¹b\87¹c\87¹c\87¹\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀRv¨Rv¨Rv©Rv©Rv©Rw©Rw©LYjLYjLYjLYjT]kZ_lhfm\84uqSw©Sw©Sw©Sw©SwªSwªSxªSxªSxªTxªTxªTxªTxªTxªTxªTxªTxªTx«Tx«Ty«Ty«Ty«\99½ï\99½ï\99½ïUy«Uy«Uy«Uy«Uy¬Uy¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­Vz­V{­V{­W{­W{­W{­W{­W{­W{®W{®W|®W|®X|®X|®X|®X|®X|®X|¯\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÃö\9fÄö[\7f±[\7f²[\80²\\80²\\80²\\80²\\80²\\80²\\80³\\81³]\81³]\81³]\81³]\81³]\81³]\81´¢Æø¢Æø¢Æù¢Çù¢Çù£Çù£Çù£Çù£Çù£Çú£Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëýc\87¹c\87¹\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀRw©Rw©Rw©Rw©Sw©Sw©Sw©ddmaclupr\93\82{Sw©Sw©Sw©SwªSwªSxªSxªSxªSxªTxªTxªTxªTxªTxªTxªTxªTxªTx«Tx«Ty«Ty«Ty«Uy«Uy«Uy«\99½ðUy«Uy«Uy«Uy¬Uy¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­Vz­V{­V{­W{­W{­W{­W{­W{­W{­W{®W|®W|®X|®X|®X|®X|®X|®X|¯X|¯X}¯Y}¯Y}¯\9dÁô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÂõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÄö\9fÄö[\7f²[\7f²[\80²\\80²\\80²\\80²\\80²\\80³\\80³\\81³]\81³]\81³]\81³]\81³]\81´]\82´]\82´^\82´^\82´¢Çù£Çù£Çù£Çù£Çù£Çú£Èú£Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ¨Ìþ¨Ìþ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀSw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©Sw©SwªSwªSwªSxªSxªSxªTxªTxªTxªTxªTxªTxªTxªTxªTx«Tx«Tx«Ty«Ty«Ty«Uy«Uy«Uy«Uy«Uy«\99¾ð\99¾ðUy¬Uy¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­Vz­V{­V{­W{­W{­W{­W{­W{­W{­W{®W|®W|®X|®X|®X|®X|®X|®X|®X|¯X}¯X}¯Y}¯Y}¯Y}¯Y}¯Y}¯\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÄö\9fÄö Äö[\7f²[\80²[\80²\\80²\\80²\\80²\\80²\\80³\\81³\\81³]\81³]\81³]\81³]\81³]\81´]\82´]\82´^\82´^\82´^\82´^\82´^\82µ£Çù£Çú£Èú£Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Éü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ¨Ìþ¨Ìþ¨Ìþ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀSw©Sw©Sw©Sw©Sw©SwªSwªSwªSxªSxªSxªTxªTxªTxªTxªTxªTxªTxªTxªTxªTx«Tx«Ty«Ty«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy«\99¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ðVz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz­Vz­V{­V{­W{­W{­W{­W{­W{­W{­W{®W{®W|®W|®X|®X|®X|®X|®X|®X|¯X|¯X}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}°Y}°Y~°Y~°\9eÂõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÃö\9fÄö Äö Äö Äö[\80²\\80²\\80²\\80²\\80²\\80²\\80³\\81³]\81³]\81³]\81³]\81³]\81³]\81´]\82´^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìþ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀSwªSwªSwªSxªSxªSxªSxªTxªTxªTxªTxªTxªTxªTxªTxªTxªTx«Tx«Tx«Ty«Ty«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ñVz¬Vz¬Vz¬Vz­Vz­V{­V{­V{­W{­W{­W{­W{­W{­W{®W{®W|®W|®X|®X|®X|®X|®X|®X|¯X|¯X}¯X}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}°Y~°Y~°Z~°Z~°Z~°\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÄö\9fÄö Äö Äö Äö[\80²\\80²\\80²\\80²\\80²\\80³\\80³\\81³]\81³]\81³]\81³]\81³]\81´]\82´]\82´^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ¤Èú¤Èú¤Èû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìÿ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀSxªSxªTxªTxªTxªTxªTxªTxªTxªTxªTxªTx«Tx«Tx«Ty«Ty«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬Uy¬\9a¾ð\9a¾ð\9a¾ð\9a¾ð\9a¾ñ\9a¾ñ\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñVz­V{­V{­V{­W{­W{­W{­W{­W{­W{­W{®W|®W|®X|®X|®X|®X|®X|®X|®X|¯X}¯X}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}°Y}°Y~°Y~°Z~°Z~°Z~°Z~°Z~±Z~±\9fÃõ\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö[\80²\\80²\\80²\\80²\\80²\\80³\\81³\\81³]\81³]\81³]\81³]\81³]\81´]\82´]\82´^\82´^\82´^\82´^\82´^\82µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶¤Éû¥Éû¥Éû¥Éû¥Éü¥Éü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìÿ¨Íÿ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀTxªTxªTxªTxªTxªTxªTxªTx«Tx«Tx«Ty«Ty«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬Uy¬Uy¬Uz¬\9a¾ð\9a¾ð\9a¾ñ\9a¾ñ\9a¿ñ\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñW{­W{­W{­W{­W{­W{­W{®W|®W|®W|®X|®X|®X|®X|®X|®X|¯X|¯X}¯X}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~±Z\7f±Z\7f±[\7f±[\7f± Äö Äö Äö Äö Äö\\80²\\80²\\80²\\80²\\80²\\80³\\81³]\81³]\81³]\81³]\81³]\81³]\81´]\82´^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84·¥Éû¥Éü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìÿ¨Íÿ¨Íÿ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀTxªTxªTx«Tx«Tx«Ty«Ty«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬Uy¬Uz¬Uz¬Uz¬\9a¾ð\9a¾ñ\9a¾ñ\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9bÀò\9bÀòW{­W{­W{­W{®W{®W|®W|®X|®X|®X|®X|®X|®X|¯X|¯X}¯X}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}°Y}°Y~°Z~°Z~°Z~°Z~°Z~°Z~±Z~±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f² Äö Ä÷\\80²\\80²\\80²\\80²\\80³\\81³\\81³]\81³]\81³]\81³]\81³]\81´]\82´]\82´^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\85·`\85·a\85·¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìÿ¨Íÿ¨Íÿ©Íÿ©Íÿ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀTx«Ty«Ty«Ty«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬Uy¬Uy¬Uz¬Uz¬Vz¬Vz¬\9a¾ñ\9a¿ñ\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀòW{®W|®W|®X|®X|®X|®X|®X|®X|®X|¯X}¯X}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\7f²[\80²\\80²\\80²\\80²\\80²\\80²\\80³\\81³\\81³]\81³]\81³]\81³]\81³]\81´]\82´]\82´^\82´^\82´^\82´^\82´^\82µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\85·a\85·a\85·a\85·a\85·a\85¸¦Êý¦Ëý¦Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìÿ¨Íÿ©Íÿ©Íÿ©Íÿ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀUy«Uy«Uy«Uy«Uy«Uy«Uy«Uy«Uy¬Uy¬Uy¬Uz¬Uz¬Uz¬Vz¬Vz¬Vz¬\9a¿ñ\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9bÀò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀóX|®X|®X|®X|®X|®X|®X|¯X}¯X}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~±Z~±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\80²[\80²\\80²¡Å÷¡Å÷¡Å÷\\80³\\80³\\81³]\81³]\81³]\81³]\81³]\81´]\81´]\82´^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84·`\84·`\85·a\85·a\85·a\85·a\85·a\85¸a\86¸b\86¸b\86¸§Ëý§Ëý§Ëý§Ëþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìÿ¨Íÿ¨Íÿ©Íÿ©Íÿ©Íÿ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀUy«Uy«Uy«Uy«Uy¬Uy¬Uy¬Uz¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬\9a¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀó\9cÁó\9cÁó\9dÁó\9dÁóX|®X|®X|¯X|¯X}¯X}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}°Y}°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\80²[\80²\\80²\\80²¡Å÷¡Å÷¡Å÷¡Åø¡Æø]\81³]\81³]\81³]\81³]\81´]\82´]\82´^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\85·`\85·a\85·a\85·a\85·a\85¸a\85¸a\86¸b\86¸b\86¸b\86¸b\86¸b\86¹§Ìþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìÿ¨Íÿ¨Íÿ©Íÿ©Íÿ©Íÿ©Íÿ©Íÿ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀUy¬Uy¬Uz¬Uz¬Uz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁóX}¯X}¯Y}¯Y}¯Y}¯Y}¯Y}¯Y}°Y}°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\80²[\80²\\80²\\80²\\80²¡Å÷¡Å÷¡Åø¡Åø¡Æø¢Æø¢Æø¢Æø]\81³]\81´]\82´]\82´^\82´^\82´^\82´^\82´^\82µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\85·a\85·a\85·a\85·a\85·a\85¸a\86¸a\86¸b\86¸b\86¸b\86¸b\86¹b\86¹b\87¹c\87¹c\87¹¨Ìþ¨Ìþ¨Ìÿ¨Íÿ©Íÿ©Íÿ©Íÿ©Íÿ©Íÿ©Îÿ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀUz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬Vz¬\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀó\9cÁó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÁô\9dÂô\9dÂôY}¯Y}¯Y}¯Y}¯Y}°Y}°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~±Z~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\7f²[\80²[\80²\\80²\\80²\\80²¡Å÷¡Å÷¡Åø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84·`\84·`\85·a\85·a\85·a\85·a\85·a\85¸a\86¸b\86¸b\86¸b\86¸b\86¸b\86¹b\87¹b\87¹c\87¹c\87¹c\87¹c\87ºc\88º¨Íÿ©Íÿ©Íÿ©Íÿ©Íÿ©Îÿ©Îÿ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀVz¬Vz¬Vz¬Vz¬Vz¬Vz­\9b¿ñ\9b¿ñ\9b¿ò\9b¿ò\9bÀò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÁó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÁô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂôY}¯Y}°Y~°Y~°Z~°Z~°Z~°Z~°Z~°Z~°Z~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\80²[\80²\\80²\\80²\\80²\\80²¡Å÷¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù¢Çù£Çù£Çù^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\85·`\85·a\85·a\85·a\85·a\85·a\85¸a\86¸b\86¸b\86¸b\86¸b\86¸b\86¹b\87¹c\87¹c\87¹c\87¹c\87¹c\87ºc\88ºc\88ºd\88º©Íÿ©Íÿ©Íÿ©ÎÿªÎÿªÎÿ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀVz­Vz­Vz­V{­\9b¿ò\9b¿ò\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÂô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÂõ\9eÃõZ~°Z~°Z~°Z~°Z~°Z~°Z~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\7f²[\80²\\80²\\80²\\80²\\80²\\80²¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Æù¢Çù£Çù£Çù£Çù£Çù£Çú£Èú^\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\85·a\85·a\85·a\85·a\85·a\85¸a\86¸a\86¸b\86¸b\86¸b\86¸b\86¸b\86¹b\87¹c\87¹c\87¹c\87¹c\87¹c\87ºc\88ºd\88ºd\88ºd\88ºd\88ºd\88»©ÎÿªÎÿªÎÿ\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\ÀV{­\9bÀò\9bÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÁô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÂõ\9eÃõ\9eÃõ\9fÃõ\9fÃõZ~°Z~°Z~°Z~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\7f²[\80²[\80²\\80²\\80²\\80²\\80²\\80³¡Åø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù£Çù£Çù£Çù£Çù£Çù£Çú£Èú¤Èú¤Èú¤Èú_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\85·a\85·a\85·a\85·a\85·a\85¸a\86¸b\86¸b\86¸b\86¸b\86¸b\86¹b\87¹b\87¹c\87¹c\87¹c\87¹c\87ºc\87ºc\88ºd\88ºd\88ºd\88ºd\88ºd\88»d\89»e\89»e\89»\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀò\9cÀó\9cÀó\9cÀó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÁô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÂõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃöZ~±Z\7f±Z\7f±[\7f±[\7f±[\7f±[\7f±[\7f±[\7f²[\80²[\80²\\80²\\80²\\80²\\80²\\80²\\80³¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù¢Çù£Çù£Çù£Çù£Çù£Çú£Èú£Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû_\84¶`\84¶`\84¶`\84¶`\84¶`\84·`\85·`\85·a\85·a\85·a\85·a\85·a\85¸a\86¸b\86¸b\86¸b\86¸b\86¸b\86¹b\87¹c\87¹c\87¹c\87¹c\87¹c\87ºc\88ºc\88ºd\88ºd\88ºd\88ºd\88»d\89»d\89»e\89»e\89»\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\9cÀò\9cÀó\9cÀó\9cÁó\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÁô\9dÂô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÂõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÃö\9fÄö\9fÄö Äö Äö[\7f±[\7f±[\7f±[\7f±[\7f²[\80²[\80²\\80²\\80²\\80²\\80²\\80²\\80³\\80³¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù¢Çù£Çù£Çù£Çù£Çù£Çú£Èú£Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû¤Éû¥Éû¥Éû`\84¶`\84¶`\84¶`\84·`\85·a\85·a\85·a\85·a\85·a\85¸a\86¸a\86¸b\86¸b\86¸b\86¸b\86¸b\86¹b\87¹c\87¹c\87¹c\87¹c\87¹c\87ºc\88ºd\88ºd\88ºd\88ºd\88ºd\88»d\89»e\89»e\89»e\89»e\89»\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\9cÁó\9cÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÁô\9dÂô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÂõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö Äö[\7f±[\7f²[\7f²[\80²[\80²\\80²\\80²\\80²\\80²\\80²\\80³\\81³\\81³¢Æø¢Æø¢Æø¢Æù¢Çù¢Çù£Çù£Çù£Çù£Çù£Çú£Çú£Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Èû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êü`\84·`\85·a\85·a\85·a\85·a\85·a\85¸a\86¸a\86¸b\86¸b\86¸b\86¸b\86¹b\87¹b\87¹c\87¹c\87¹c\87¹c\87¹c\87ºc\88ºd\88ºd\88ºd\88ºd\88ºd\88»d\89»e\89»e\89»e\89»e\89»\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\9dÁó\9dÁó\9dÁó\9dÁó\9dÁô\9dÁô\9dÂô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÂõ\9eÃõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö Äö Äö Ä÷ Å÷ Å÷¡Å÷[\80²\\80²\\80²\\80²\\80²\\80²\\80³\\81³\\81³]\81³¢Æø¢Æø¢Æù¢Æù¢Çù£Çù£Çù£Çù£Çù£Çù£Çú£Èú£Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êü¦Êü¦Êü¦Êüa\85·a\85·a\85·a\85¸a\86¸b\86¸b\86¸b\86¸b\86¸b\86¹b\87¹b\87¹c\87¹c\87¹c\87¹c\87ºc\88ºc\88ºd\88ºd\88ºd\88ºd\88»d\89»d\89»e\89»e\89»e\89»e\89¼\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\9dÁô\9dÁô\9dÂô\9dÂô\9dÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÃõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö Äö Äö Ä÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷\\80²\\80²\\80³\\81³\\81³]\81³]\81³¢Æø¢Æù¢Æù¢Çù£Çù£Çù£Çù£Çù£Çù£Çú£Èú£Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëýa\86¸a\86¸b\86¸b\86¸b\86¸b\86¸b\86¹b\87¹c\87¹c\87¹c\87¹c\87¹c\87ºc\88ºd\88ºd\88ºd\88ºd\88ºd\88»d\89»e\89»e\89»e\89»e\89»e\89¼e\8a¼\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂô\9eÂõ\9eÂõ\9eÃõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö Äö Äö Ä÷ Ä÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Åø¡Æø\\80³\\81³]\81³]\81³]\81³¢Æù¢Æù¢Çù£Çù£Çù£Çù£Çù£Çù£Çú£Èú£Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Èû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý¦Ëý§Ëý§Ëýb\86¸b\86¸b\86¸b\86¹b\86¹b\87¹c\87¹c\87¹c\87¹c\87¹c\87ºc\88ºd\88ºd\88ºd\88ºd\88ºd\88»d\89»e\89»e\89»e\89»e\89»e\89¼e\8a¼\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\9eÂô\9eÂõ\9eÂõ\9eÃõ\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÄö\9fÄö\9fÄö Äö Äö Äö Äö Äö Äö Ä÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø]\81³]\81³¢Æù¢Çù£Çù£Çù£Çù£Çù£Çù£Çú£Èú£Èú¤Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþb\86¹b\87¹b\87¹c\87¹c\87¹c\87¹c\87ºc\88ºc\88ºd\88ºd\88ºd\88ºd\88»d\88»d\89»e\89»e\89»e\89»e\89»e\89¼e\8a¼\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\9eÃõ\9eÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö Äö Äö Ä÷ Ä÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Æù]\81³£Çù£Çù£Çù£Çù£Çù£Çú£Èú£Èú¤Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ§Ìþ¨Ìþ¨Ìþ¨Ìþc\87¹c\87¹c\87¹c\87ºc\88ºc\88ºd\88ºd\88ºd\88ºd\88»d\89»d\89»e\89»e\89»e\89»e\89¼e\8a¼e\8a¼f\8a¼\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\9fÃõ\9fÃõ\9fÃõ\9fÃõ\9fÃö\9fÃö\9fÄö\9fÄö Äö Äö Äö Äö Äö Äö Ä÷ Ä÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù¢Çù]\81´]\82´]\82´£Çù£Çù£Çú£Èú£Èú¤Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìÿ¨Íÿ©Íÿc\87ºc\88ºd\88ºd\88ºd\88ºd\88ºd\88»d\89»e\89»e\89»e\89»e\89»e\89¼e\8a¼f\8a¼f\8a¼\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\9fÃö\9fÄö\9fÄö\9fÄö Äö Äö Äö Äö Äö Äö Äö Ä÷ Å÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù¢Çù£Çù]\82´]\82´^\82´^\82´^\82´^\82´£Èú¤Èú¤Èú¤Èú¤Èú¤Èú¤Èû¤Éû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Êü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìÿ¨Ìÿ¨Íÿ©Íÿ©Íÿ©Íÿ©Íÿd\88ºd\88ºd\88ºd\88»d\89»e\89»e\89»e\89»e\89»e\89¼e\8a¼f\8a¼f\8a¼\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À Äö Äö Äö Äö Äö Äö Ä÷ Å÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Æù¢Çù¢Çù£Çù£Çù£Çù^\82´^\82´^\82´^\82´^\82´^\82µ^\82µ¤Èú¤Èú¤Èú¤Èû¤Éû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Éü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Êý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìÿ¨Íÿ©Íÿ©Íÿ©Íÿ©Íÿ©Íÿ©Îÿ©Îÿd\88»d\89»d\89»e\89»e\89»e\89»e\89¼e\8a¼e\8a¼f\8a¼f\8a¼f\8a¼\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À Äö Ä÷ Ä÷ Å÷ Å÷ Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù¢Çù£Çù£Çù£Çù£Çù£Çù^\82´^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ¤Éû¤Éû¥Éû¥Éû¥Éû¥Éû¥Éü¥Éü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìÿ¨Íÿ¨Íÿ©Íÿ©Íÿ©Íÿ©Íÿ©Íÿ©ÎÿªÎÿªÎÿªÎÿªÎÿe\89»e\89»e\89»e\89¼e\8a¼f\8a¼f\8a¼f\8a¼f\8a¼\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Å÷¡Åø¡Åø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Æù¢Çù¢Çù£Çù£Çù£Çù£Çù£Çù£Çú^\82´^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83µ_\83¶¥Éû¥Éû¥Éü¥Éü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìÿ¨Íÿ©Íÿ©Íÿ©Íÿ©Íÿ©Íÿ©ÎÿªÎÿªÎÿªÎÿªÎÿªÎÿªÏÿªÏÿ«Ïÿe\89¼e\8a¼f\8a¼f\8a¼f\8a¼f\8a¼\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À¡Å÷¡Å÷¡Å÷¡Åø¡Åø¡Æø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Çù¢Çù£Çù£Çù£Çù£Çù£Çù£Çù£Çú£Èú^\82´^\82´^\82´^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶¥Éü¥Êü¥Êü¦Êü¦Êü¦Êü¦Êü¦Êý¦Ëý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìÿ¨Íÿ©Íÿ©Íÿ©Íÿ©Íÿ©Íÿ©Îÿ©ÎÿªÎÿªÎÿªÎÿªÎÿªÎÿªÏÿ«Ïÿ«Ïÿ«Ïÿ«Ïÿ«Ïÿf\8a¼f\8a¼f\8a½f\8a½\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\À¡Æø¡Æø¡Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æø¢Æù¢Æù¢Çù¢Çù£Çù£Çù£Çù£Çù£Çù£Çú£Çú£Èú£Èú^\82´^\82µ^\82µ^\83µ^\83µ_\83µ_\83µ_\83µ_\83µ_\83µ_\83¶_\84¶_\84¶`\84¶`\84¶`\84¶`\84¶`\84¶¦Êü¦Êü¦Êü¦Êý¦Ëý¦Ëý§Ëý§Ëý§Ëý§Ëý§Ëþ§Ìþ§Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìþ¨Ìÿ¨Íÿ¨Íÿ©Íÿ©Íÿ©Íÿ©Íÿ©Íÿ©ÎÿªÎÿªÎÿªÎÿªÎÿªÎÿªÏÿªÏÿ«Ïÿ«Ïÿ«Ïÿ«Ïÿ«Ðÿ«Ðÿ¬Ðÿf\8a½f\8b½\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13\13
\ No newline at end of file
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/irbtk.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/irbtk.rb
deleted file mode 100644 (file)
index 53ef10d..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/local/bin/ruby
-#
-#   irbtk.rb - irb with Ruby/Tk
-#
-#   If you want to use 'multi-tk.rb', give option '--multi-tk'.
-#   And if you want to use 'remote-tk.rb', give option '--remote-tk'.
-#   If you want both, you don't need to give both options, because 
-#   'remote-tk.rb' includes 'multi-tk.rb'. 
-#   ( There is no trouble even if you give both options. )
-#
-require 'remote-tk' if ARGV.delete('--remote-tk')
-require 'multi-tk'  if ARGV.delete('--multi-tk')
-
-require "tk"
-module Tk
-  MAINLOOP = Thread.new{ mainloop }
-end
-
-require "irb"
-
-if __FILE__ == $0
-  IRB.start(__FILE__)
-else
-  # check -e option
-  if /^-e$/ =~ $0
-    IRB.start(__FILE__)
-  else
-    IRB.setup(__FILE__)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/irbtkw.rbw b/ruby/doc/ruby/ruby-1.8.7/sample/tk/irbtkw.rbw
deleted file mode 100644 (file)
index 3fb6dde..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-#!/usr/bin/env ruby
-#
-#  irbtkw.rb : IRB console with Ruby/Tk
-#
-#                                 by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
-#
-release = '2008/03/08'
-
-require 'tk'
-begin
-  require 'tktextio'
-rescue LoadError
-  require File.join(File.dirname(File.expand_path(__FILE__)), 'tktextio.rb')
-end
-
-require 'irb'
-
-if TkCore::WITH_ENCODING
-else
-  # $KCODE setup
-  case Tk.encoding
-  when 'shiftjis', 'cp932'
-    $KCODE='SJIS'
-  when 'euc-jp'
-    $KCODE='EUC'
-  when 'utf-8', 'unicode'
-    $KCODE='UTF8'
-  else
-    # unknown
-  end
-end
-
-# console setup
-top = TkToplevel.new(:title=>'IRB console')
-top.protocol(:WM_DELETE_WINDOW){ Tk.exit }
-
-case (Tk.windowingsystem)
-when 'win32'
-  fnt = ['MS Gothic', '-12']
-else
-  fnt = ['courier', '-12']
-end
-
-console = TkTextIO.new(top, :mode=>:console, 
-                       :width=>80).pack(:side=>:left, 
-                                        :expand=>true, :fill=>:both)
-console.yscrollbar(TkScrollbar.new(top, :width=>10).pack(:before=>console, 
-                                                         :side=>:right, 
-                                                         :expand=>false, 
-                                                         :fill=>:y))
-irb_thread = nil
-ev_loop = Thread.new{
-  Tk.mainloop
-  irb_thread.kill if irb_thread
-}
-
-# window position control
-root = Tk.root
-
-r_x = root.winfo_rootx
-r_y = root.winfo_rooty
-r_w = root.winfo_width
-
-t_x = top.winfo_rootx
-t_y = top.winfo_rooty
-t_w = top.winfo_width
-
-delta = 10
-
-ratio = 0.8
-s_w = (ratio * root.winfo_screenwidth).to_i
-
-if r_x < t_x
-  r_x, t_x = t_x, r_x
-end
-if t_x + t_w + r_w + delta < s_w
-  r_x = t_x + t_w + delta
-elsif t_w + r_w + delta < s_w
-  r_x = s_w - r_w
-  t_x = r_x - t_w
-else
-  r_x = s_w - r_w
-  t_x = 0
-end
-
-root.geometry("+#{r_x}+#{r_y}")
-top.geometry("+#{t_x}+#{t_y}")
-
-root.raise
-console.focus
-
-# I/O setup
-$stdin  = console
-$stdout = console
-$stderr = console
-
-# dummy for rubyw.exe on Windows
-def STDIN.tty?
-  true
-end
-
-# IRB setup
-IRB.init_config(nil)
-IRB.conf[:USE_READLINE] = false
-IRB.init_error
-irb = IRB::Irb.new
-IRB.conf[:MAIN_CONTEXT] = irb.context
-
-class IRB::StdioInputMethod
-  def gets
-    prompt = "\n" << @prompt
-    $stdin.instance_eval{
-      flush
-      @prompt = prompt
-      _set_console_line
-      @prompt = nil
-      _see_pos
-    }
-
-    @line[@line_no += 1] = $stdin.gets
-  end
-end
-
-# IRB start
-$stdout.print("*** IRB console on Ruby/Tk (#{release})  ")
-irb_thread = Thread.new{
-  catch(:IRB_EXIT){
-    loop {
-      begin
-        irb.eval_input
-      rescue Exception
-      end
-    }
-  }
-}
-
-console.bind('Control-c'){
-  console.insert('end', "^C\n")
-  irb_thread.raise RubyLex::TerminateLineInput
-}
-
-irb_thread.join
-
-# exit
-ev_thread.kill
-Tk.exit
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/iso2022-kr.txt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/iso2022-kr.txt
deleted file mode 100644 (file)
index 2e3fe6e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Sample text:
-\e$)C  Hangul (\ eGQ1[\ f)  \ e>H3gGO<<?d\ f\ e>H3gGO=J4O1n\ f
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/menubar1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/menubar1.rb
deleted file mode 100644 (file)
index 9fa1201..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# menubar sample 1 : use frame and menubuttons
-#
-
-require 'tk'
-
-radio_var = TkVariable.new('y')
-
-menu_spec = [
-  [['File', 0],
-    {:label=>'Open', :command=>proc{puts('Open clicked')}, :underline=>0},
-    '---',
-    ['Check_A', TkVariable.new(true), 6],
-    {:type=>'checkbutton', :label=>'Check_B', 
-                :variable=>TkVariable.new, :underline=>6},
-    '---',
-    ['Radio_X', [radio_var, 'x'], 6, '', {:foreground=>'black'}],
-    ['Radio_Y', [radio_var, 'y'], 6],
-    ['Radio_Z', [radio_var, 'z'], 6],
-    '---',
-    ['cascade', [ 
-                   ['sss', proc{p 'sss'}, 0], 
-                   ['ttt', proc{p 'ttt'}, 0], 
-                   ['uuu', proc{p 'uuu'}, 0], 
-                   ['vvv', proc{p 'vvv'}, 0], 
-                ], 
-      0, '', 
-      {:font=>'Courier 16 italic', 
-       :menu_config=>{:font=>'Times -18 bold', :foreground=>'black'}}],
-    '---',
-    ['Quit', proc{exit}, 0]],
-
-  [['Edit', 0],
-    ['Cut', proc{puts('Cut clicked')}, 2],
-    ['Copy', proc{puts('Copy clicked')}, 0],
-    ['Paste', proc{puts('Paste clicked')}, 0]], 
-
-  [['Help', 0, {:menu_name=>'help'}],
-    ['About This', proc{puts('Ruby/Tk menubar sample 1')}, 6]]
-]
-
-menubar = TkMenubar.new(nil, menu_spec,
-                       'tearoff'=>false,
-                       'foreground'=>'grey40',
-                       'activeforeground'=>'red',
-                       'font'=>'Helvetia 12 bold')
-menubar.pack('side'=>'top', 'fill'=>'x')
-
-TkText.new(:wrap=>'word').pack.insert('1.0', 'Please read the sample source, and check how to override default configure options of menu entries on a menu_spec. Maybe, on windows, this menubar does not work properly about keyboard shortcuts. Then, please use "menu" option of root/toplevel widget (see sample/menubar2.rb).')
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/menubar2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/menubar2.rb
deleted file mode 100644 (file)
index 4507d8b..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# menubar sample 2 : use 'menu' option of root/toplevel widget
-#
-
-require 'tk'
-
-radio_var = TkVariable.new('y')
-
-menu_spec = [
-  [['File', 0],
-    {:label=>'Open', :command=>proc{puts('Open clicked')}, :underline=>0},
-    '---',
-    ['Check_A', TkVariable.new(true), 6],
-    {:type=>'checkbutton', :label=>'Check_B', 
-                :variable=>TkVariable.new, :underline=>6},
-    '---',
-    ['Radio_X', [radio_var, 'x'], 6, '', {:foreground=>'black'}],
-    ['Radio_Y', [radio_var, 'y'], 6],
-    ['Radio_Z', [radio_var, 'z'], 6],
-    '---',
-    ['cascade', [ 
-                   ['sss', proc{p 'sss'}, 0], 
-                   ['ttt', proc{p 'ttt'}, 0], 
-                   ['uuu', proc{p 'uuu'}, 0], 
-                   ['vvv', proc{p 'vvv'}, 0], 
-                ], 
-      0, '', 
-      {:font=>'Courier 16 italic', 
-       :menu_config=>{:font=>'Times -18 bold', :foreground=>'black'}}],
-    '---',
-    ['Quit', proc{exit}, 0]],
-
-  [['Edit', 0],
-    ['Cut', proc{puts('Cut clicked')}, 2],
-    ['Copy', proc{puts('Copy clicked')}, 0],
-    ['Paste', proc{puts('Paste clicked')}, 0]], 
-
-  [['Help', 0, {:menu_name=>'help'}],
-    ['About This', proc{puts('Ruby/Tk menubar sample 2')}, 6]]
-]
-
-mbar = Tk.root.add_menubar(menu_spec, 
-                           # followings are default configure options
-                           'tearoff'=>'false',
-                           'foreground'=>'grey40', 
-                           'activeforeground'=>'red',
-                           'font'=>'Helvetia 12 bold')
-# This (default configure options) is NOT same the following.
-#
-#  mbar = Tk.root.add_menubar(menu_spec)
-#  mbar.configure('foreground'=>'grey40', 'activeforeground'=>'red',
-#                 'font'=>'Helvetia 12 bold')
-
-TkText.new(:wrap=>'word').pack.insert('1.0', 'Please read the sample source, and check how to override default configure options of menu entries on a menu_spec.')
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/README b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/README
deleted file mode 100644 (file)
index 2e3ff2a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Message catalogs in this directory depend on Tcl/Tk's message catalogs. 
-Texts of each locale are copied from Tcl/Tk8.5a1 widget demos.
-Please refer '../msgs_tk/README'. 
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/cs.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/cs.msg
deleted file mode 100644 (file)
index 199f2a7..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    cs "Application Error", "Chyba programu"
-    cs "Blue", "Modr\341"
-    cs "Color", "Barva"
-    cs "Delete", "Smazat"
-    cs "Error", "Chyba"
-    cs "Exit", "Konec"
-    cs "Green", "Zelen\341"
-    cs "Red", "\\u010cerven\341"
-    cs "blue", "modr\341"
-    cs "green", "zelen\341"
-    cs "red", "\\u010derven\341"
-}
-
-TkMsgCatalog.new('::tk') {
-    cs "&Abort", "&P\\u0159eru\\u0161it"
-    cs "About...", "O programu..."
-    cs "All Files", "V\\u0161echny soubory"
-    cs "Application Error", "Chyba programu"
-    cs "&Blue", "&Modr\341"
-    cs "&Cancel", "&Zru\\u0161it"
-    cs "Cannot change to the directory \"%1\$s\".\nPermission denied.", "Nemohu zm\\u011bnit atku\341ln\355 adres\341\\u0159 na \"%1\$s\".\nP\\u0159\355stup odm\355tnut."
-    cs "Choose Directory", "V\375b\\u011br adres\341\\u0159e"
-    cs "Clear", "Smazat"
-    cs "Color", "Barva"
-    cs "Console", "Konzole"
-    cs "Copy", "Kop\355rovat"
-    cs "Cut", "Vy\\u0159\355znout"
-    cs "Delete", "Smazat"
-    cs "Details >>", "Detaily >>"
-    cs "Directory \"%1\$s\" does not exist.", "Adres\341\\u0159 \"%1\$s\" neexistuje."
-    cs "&Directory:", "&Adres\341\\u0159:"
-    cs "Error: %1\$s", "Chyba: %1\$s"
-    cs "Exit", "Konec"
-    cs "File \"%1\$s\" already exists.\n\n", "Soubor \"%1\$s\" ji\\u017e existuje.\n\n"
-    cs "File \"%1\$s\" already exists.\nDo you want to overwrite it?", "Soubor \"%1\$s\" ji\\u017e existuje.\nChcete jej p\\u0159epsat?"
-    cs "File \"%1\$s\" does not exist.", "Soubor \"%1\$s\" neexistuje."
-    cs "File &name:", "&Jm\351no souboru:"
-    cs "File &names:", "&Jm\351na soubor\\u016f:"
-    cs "Files of &type:", "&Typy soubor\\u016f:"
-    cs "Fi&les:", "Sou&bory:"
-    cs "&Filter", "&Filtr"
-    cs "Fil&ter:", "Fil&tr:"
-    cs "&Green", "Ze&len\341"
-    cs "Hi"
-    cs "Hide Console", "Skr\375t konsolu"
-    cs "&Ignore", "&Ignorovat"
-    cs "Invalid file name \"%1\$s\".", "\\u0160patn\351 jm\351no souboru \"%1\$s\"."
-    cs "Log Files", "Log soubory"
-    cs "&No", "&Ne"
-    cs "&OK"
-    cs "Ok"
-    cs "Open", "Otev\\u0159\355t"
-    cs "&Open", "&Otev\\u0159\355t"
-    cs "Open Multiple Files", "Otev\\u0159\355t v\355ce soubor\\u016f"
-    cs "Paste", "Vlo\\u017eit"
-    cs "Quit", "Skon\\u010dit"
-    cs "&Red", " \\u010ce&rven\341"
-    cs "Replace existing file?", "Nahradit st\341vaj\355c\355 soubor?"
-    cs "&Retry", "Z&novu"
-    cs "&Save", "&Ulo\\u017eit"
-    cs "Save As", "Ulo\\u017eit jako"
-    cs "Save To Log", "Ulo\\u017eit do logu"
-    cs "Select Log File", "Vybrat log soubor"
-    cs "Select a file to source", "Vybrat soubor k nahr\341n\355"
-    cs "&Selection:", "&V\375b\\u011br:"
-    cs "Skip Messages", "P\\u0159esko\\u010dit zpr\341vy"
-    cs "Source...", "Nahr\341t..."
-    cs "Tcl Scripts", "Tcl skripty"
-    cs "Tcl for Windows", "Tcl pro Windows"
-    cs "Text Files", "Textov\351 soubory"
-    cs "&Yes", "&Ano"
-    cs "abort", "p\\u0159eru\\u0161it"
-    cs "blue", "modr\341"
-    cs "cancel", "zru\\u0161it"
-    cs "extension", "p\\u0159\355pona"
-    cs "extensions", "p\\u0159\355pony"
-    cs "green", "zelen\341"
-    cs "ignore", "ignorovat"
-    cs "ok"
-    cs "red", "\\u010derven\341"
-    cs "retry", "znovu"
-    cs "yes", "ano"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/de.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/de.msg
deleted file mode 100644 (file)
index 283874d..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    de "Application Error", "Applikationsfehler"
-    de "Blue", "Blau"
-    de "Color", "Farbe"
-    de "Delete", "L\\u00f6schen"
-    de "Error", "Fehler"
-    de "Exit", "Ende"
-    de "Green", "Gr\\u00fcn"
-    de "Red", "Rot"
-    de "blue", "blau"
-    de "green", "gr\\u00fcn"
-    de "red", "rot"
-}
-
-TkMsgCatalog.new('::tk') {
-    de "&Abort", "&Abbruch"
-    de "&About...", "&\\u00dcber..."
-    de "All Files", "Alle Dateien"
-    de "Application Error", "Applikationsfehler"
-    de "&Blue", "&Blau"
-    de "&Cancel", "&Abbruch"
-    de "Cannot change to the directory \"%1\$s\".\nPermission denied.", "Kann nicht in das Verzeichnis \"%1\$s\" wechseln.\nKeine Rechte vorhanden."
-    de "Choose Directory", "W\\u00e4hle Verzeichnis"
-    de "&Clear", "&R\\u00fccksetzen"
-    de "&Clear Console", "&Konsole l\\u00f6schen"
-    de "Color", "Farbe"
-    de "Console", "Konsole"
-    de "&Copy", "&Kopieren"
-    de "Cu&t", "Aus&schneiden"
-    de "&Delete", "&L\\u00f6schen"
-    de "Details >>"
-    de "Directory \"%1\$s\" does not exist.", "Das Verzeichnis \"%1\$s\" existiert nicht."
-    de "&Directory:", "&Verzeichnis:"
-    de "&Edit", "&Bearbieten"
-    de "Error: %1\$s", "Fehler: %1\$s"
-    de "E&xit", "&Ende"
-    de "&File", "&Datei"
-    de "File \"%1\$s\" already exists.\nDo you want to overwrite it?", "Die Datei \"%1\$s\" ist bereits vorhanden.\nWollen sie diese Datei \\u00fcberschreiben ?"
-    de "File \"%1\$s\" already exists.\n\n", "Die Datei \"%1\$s\" ist bereits vorhanden.\n\n"
-    de "File \"%1\$s\" does not exist.", "Die Datei \"%1\$s\" existiert nicht."
-    de "File &name:", "Datei&name:"
-    de "File &names:", "Datei&namen:"
-    de "Files of &type:", "Dateien des &Typs:"
-    de "Fi&les:", "Dat&eien:"
-    de "&Filter"
-    de "Fil&ter:"
-    de "&Green", "&Gr\\u00fcn"
-    de "&Help", "&Hilfe"
-    de "Hi", "Hallo"
-    de "&Hide Console", "&Konsole unsichtbar machen"
-    de "&Ignore", "&Ignorieren"
-    de "Invalid file name \"%1\$s\".", "Ung\\u00fcltiger Dateiname \"%1\$s\"."
-    de "Log Files", "Protokolldatei"
-    de "&No", "&Nein"
-    de "OK"
-    de "Ok"
-    de "Open", "\\u00d6ffnen"
-    de "&Open", "\\u00d6&ffnen"
-    de "Open Multiple Files"
-    de "P&aste", "E&inf\\u00fcgen"
-    de "&Quit", "&Beenden"
-    de "&Red", "&Rot"
-    de "Replace existing file?", "Existierende Datei ersetzen?"
-    de "&Retry", "&Wiederholen"
-    de "&Save", "&Speichern"
-    de "Save As", "Speichern unter"
-    de "Save To Log", "In Protokoll speichern"
-    de "Select Log File", "Protokolldatei ausw\\u00e4hlen"
-    de "Select a file to source", "Auszuf\\u00fchrende Datei ausw\\u00e4hlen"
-    de "&Selection:", "Auswah&l:"
-    de "Skip Messages", "Weitere Nachrichten \\u00fcberspringen"
-    de "&Source...", "&Ausf\\u00fchren..."
-    de "Tcl Scripts", "Tcl-Skripte"
-    de "Tcl for Windows", "Tcl f\\u00fcr Windows"
-    de "Text Files", "Textdateien"
-    de "&Yes", "&Ja"
-    de "abort", "abbrechen"
-    de "blue", "blau"
-    de "cancel", "abbrechen"
-    de "extension", "Erweiterung"
-    de "extensions", "Erweiterungen"
-    de "green", "gr\\u00fcn"
-    de "ignore", "ignorieren"
-    de "ok"
-    de "red", "rot"
-    de "retry", "wiederholen"
-    de "yes", "ja"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/el.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/el.msg
deleted file mode 100644 (file)
index f314ae0..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    el 'Application Error',  '\u039b\u03ac\u03b8\u03bf\u03c2 \u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2'
-    el 'Blue',     '\u039c\u03c0\u03bb\u03b5'
-    el 'Color',    '\u03a7\u03c1\u03ce\u03bc\u03b1'
-    el 'Delete',   '\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae'
-    el 'Error',    '\u039b\u03ac\u03b8\u03bf\u03c2'
-    el 'Exit',     '\u0388\u03be\u03bf\u03b4\u03bf\u03c2'
-    el 'Green',    '\u03a0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf'
-    el 'Red',      '\u039a\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf'
-    el 'blue',     '\u03bc\u03c0\u03bb\u03b5'
-    el 'green',    '\u03c0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf'
-    el 'red',      '\u03ba\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf'
-}
-
-TkMsgCatalog.new('::tk') {
-    el '&Abort',             '\u03a4\u03b5\u03c1\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03cc\u03c2'
-    el 'About...',           '\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac...'
-    el 'All Files',          '\u038c\u03bb\u03b1 \u03c4\u03b1 \u0391\u03c1\u03c7\u03b5\u03af\u03b1'
-    el 'Application Error',  '\u039b\u03ac\u03b8\u03bf\u03c2 \u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2'
-    el '&Blue',              '\u039c\u03c0\u03bb\u03b5'
-    el '&Cancel',            '\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7'
-    el 'Cannot change to the directory "%1\$s".' "\n" 'Permission denied.', \
-          '\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ae \u03ba\u03b1\u03c4\u03b1\u03bb\u03cc\u03b3\u03bf\u03c5 \u03c3\u03b5 "%1\$s".' \
-          "\n" \
-          '\u0397 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03b4\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9.'
-    el 'Choose Directory',   '\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u039a\u03b1\u03c4\u03b1\u03bb\u03cc\u03b3\u03bf\u03c5'
-    el 'Clear',              '\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2'
-    el 'Color',              '\u03a7\u03c1\u03ce\u03bc\u03b1'
-    el 'Console',            '\u039a\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1'
-    el 'Copy',               '\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae'
-    el 'Cut',                '\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae'
-    el 'Delete',             '\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae'
-    el 'Details >>',         '\u039b\u03b5\u03c0\u03c4\u03bf\u03bc\u03ad\u03c1\u03b5\u03b9\u03b5\u03c2 >>'
-    el 'Directory "%1\$s", does not exist.', \
-          '\u039f \u03ba\u03b1\u03c4\u03ac\u03bb\u03bf\u03b3\u03bf\u03c2 \'%1\$s\' \u03b4\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9.'
-    el '&Directory:',        '&\u039a\u03b1\u03c4\u03ac\u03bb\u03bf\u03b3\u03bf\u03c2:'
-    el 'Error: %1\$s',       '\u039b\u03ac\u03b8\u03bf\u03c2: %1\$s'
-    el 'Exit',               '\u0388\u03be\u03bf\u03b4\u03bf\u03c2'
-    el 'File "%1\$s" already exists.' "\n" 'Do you want to overwrite it?', \
-          '\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf "%1\$s" \u03ae\u03b4\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9.' \
-          "\n" \
-          '\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03ba\u03b1\u03bb\u03c5\u03c6\u03b8\u03b5\u03af;'
-    el 'File "%1\$s" already exists.' "\n\n",  \
-          '\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf "%1\$s" \u03ae\u03b4\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9.' "\n\n"
-    el 'File "%1\$s" does not exist.', \
-          '\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf "%1\$s" \u03b4\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9.'
-    el 'File &name:',        '\u038c&\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5:'
-    el 'File &names:',       '\u038c&\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd:'
-    el 'Files of &type:',    '\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u03c4\u03bf\u03c5 &\u03c4\u03cd\u03c0\u03bf\u03c5:'
-    el 'Fi&les:',            '\u0391\u03c1\u03c7\u03b5\u03af\u03b1:'
-    el '&Filter',            '\u03a6\u03af\u03bb\u03c4\u03c1\u03bf'
-    el 'Fil&ter:',           '\u03a6\u03af\u03bb\u03c4\u03c1\u03bf:'
-    el '&Green',             '\u03a0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf'
-    el 'Hi',                 '\u0393\u03b5\u03b9\u03b1'
-    el 'Hide Console',       '\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03ba\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1\u03c2'
-    el '&Ignore',            '\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7'
-    el 'Invalid file name "%1\$s".', \
-          '\u0386\u03ba\u03c5\u03c1\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 "%1\$s".'
-    el 'Log Files',          '\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u039a\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2'
-    el '&No',                '\u038c\u03c7\u03b9'
-    el '&OK',                '\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9'
-    el '&Ok',                '\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9'
-    el 'Open',               '\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1'
-    el '&Open',              '\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1'
-    el 'Open Multiple Files', \
-          '\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03ce\u03bd \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd'
-    el 'Paste',              '\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7'
-    el 'Quit',               '\u0388\u03be\u03bf\u03b4\u03bf\u03c2'
-    el '&Red',               '\u039a\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf'
-    el 'Replace existing file?', \
-          '\u0395\u03c0\u03b9\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03bd\u03c4\u03bf\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5;'
-    el '&Retry',             '\u03a0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b7\u03c3\u03b5 \u03be\u03b1\u03bd\u03ac'
-    el '&Save',              '\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7'
-    el 'Save As',            '\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03c3\u03b1\u03bd'
-    el 'Save To Log',        '\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03c3\u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2'
-    el 'Select Log File',    '\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2'
-    el 'Select a file to source', \
-          '\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b3\u03b9\u03b1 \u03b5\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7'
-    el '&Selection:',        '\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae:'
-    el 'Skip Messages',      '\u0391\u03c0\u03bf\u03c6\u03c5\u03b3\u03ae \u03bc\u03c5\u03bd\u03b7\u03bc\u03ac\u03c4\u03c9\u03bd'
-    el 'Source...',          '\u0395\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7...'
-    el 'Tcl Scripts',        'Tcl Scripts'
-    el 'Tcl for Windows',    'Tcl \u03b3\u03b9\u03b1 Windows'
-    el 'Text Files',         '\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u039a\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5'
-    el '&Yes',               '\u039d\u03b1\u03b9'
-    el 'abort',              '\u03c4\u03b5\u03c1\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03cc\u03c2'
-    el 'blue',               '\u03bc\u03c0\u03bb\u03b5'
-    el 'cancel',             '\u03b1\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7'
-    el 'extension',          '\u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7'
-    el 'extensions',         '\u03b5\u03c0\u03b5\u03ba\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2'
-    el 'green',              '\u03c0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf'
-    el 'ignore',             '\u03b1\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7'
-    el 'ok',                 '\u03b5\u03bd\u03c4\u03ac\u03be\u03b5\u03b9'
-    el 'red',                '\u03ba\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf'
-    el 'retry',              '\u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b7\u03c3\u03b5 \u03be\u03b1\u03bd\u03ac'
-    el 'yes',                '\u03bd\u03b1\u03b9'
-}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/en.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/en.msg
deleted file mode 100644 (file)
index 9b70239..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    en "Application Error"
-    en "Blue"
-    en "Color"
-    en "Delete"
-    en "Error"
-    en "Green"
-    en "Red"
-    en "blue"
-    en "green"
-    en "red"
-}
-
-TkMsgCatalog.new('::tk') {
-    en "&Abort"
-    en "About..."
-    en "All Files"
-    en "Application Error"
-    en "&Blue"
-    en "&Cancel"
-    en "Cannot change to the directory \"%1\$s\".\nPermission denied."
-    en "Choose Directory"
-    en "Clear"
-    en "Color"
-    en "Console"
-    en "Copy"
-    en "Cut"
-    en "Delete"
-    en "Details >>"
-    en "Directory \"%1\$s\" does not exist."
-    en "&Directory:"
-    en "Error: %1\$s"
-    en "Exit"
-    en "File \"%1\$s\" already exists.\nDo you want to overwrite it?"
-    en "File \"%1\$s\" already exists.\n\n"
-    en "File \"%1\$s\" does not exist."
-    en "File &name:"
-    en "File &names:"
-    en "Files of &type:"
-    en "Fi&les:"
-    en "&Filter"
-    en "Fil&ter:"
-    en "&Green"
-    en "Hi"
-    en "Hide Console"
-    en "&Ignore"
-    en "Invalid file name \"%1\$s\"."
-    en "Log Files"
-    en "&No"
-    en "&OK"
-    en "Ok"
-    en "Open"
-    en "&Open"
-    en "Open Multiple Files"
-    en "Paste"
-    en "Quit"
-    en "&Red"
-    en "Replace existing file?"
-    en "&Retry"
-    en "&Save"
-    en "Save As"
-    en "Save To Log"
-    en "Select Log File"
-    en "Select a file to source"
-    en "&Selection:"
-    en "Skip Messages"
-    en "Source..."
-    en "Tcl Scripts"
-    en "Tcl for Windows"
-    en "Text Files"
-    en "&Yes"
-    en "abort"
-    en "blue"
-    en "cancel"
-    en "extension"
-    en "extensions"
-    en "green"
-    en "ignore"
-    en "ok"
-    en "red"
-    en "retry"
-    en "yes"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/en_gb.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/en_gb.msg
deleted file mode 100644 (file)
index 97c5895..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    en_gb 'Color', 'Colour'
-}
-
-TkMsgCatalog.new('::tk') {
-    en_gb 'Color', 'Colour'
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/eo.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/eo.msg
deleted file mode 100644 (file)
index 1630df5..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    eo 'Application Error', 'Aplikoerraro'
-    eo 'Blue', 'Blua'
-    eo 'Color', 'Farbo'
-    eo 'Delete', 'Forprenu'
-    eo 'Error', 'Eraro'
-    eo 'Exit', 'Eliru'
-    eo 'Green', 'Verda'
-    eo 'Red', 'Rosa'
-    eo 'blue', 'blua'
-    eo 'green', 'verda'
-    eo 'red', 'ru\u011da'
-}
-
-TkMsgCatalog.new('::tk') {
-    eo '&Abort', '&\u0108esigo'
-    eo '&About...', 'Pri...'
-    eo 'All Files', '\u0108ioj dosieroj'
-    eo 'Application Error', 'Aplikoerraro'
-    eo '&Blue', '&Blua'
-    eo '&Cancel', '&Rezignu'
-    eo 'Cannot change to the directory "%1\$s".' "\n" 'Permission denied.', 'Neeble \u0109angi al dosierulon "%1\$s".' "\n" 'Vi ne rajtas tion.'
-    eo 'Choose Directory', 'Elektu Dosierujo'
-    eo '&Clear', '&Klaru'
-    eo '&Clear Console', '&Klaru konzolon'
-    eo 'Color', 'Farbo'
-    eo 'Console', 'Konzolo'
-    eo '&Copy', '&Kopiu'
-    eo 'Cu&t', '&Enpo\u015digu'
-    eo '&Delete', '&Forprenu'
-    eo 'Details >>', 'Detaloj >>'
-    eo 'Directory "%1\$s" does not exist.', 'La dosierujo "%1\$s" ne ekzistas.'
-    eo '&Directory:', '&Dosierujo:'
-    eo '&Edit', '&Redaktu'
-    eo 'Error: %1\$s', 'Eraro: %1\$s'
-    eo 'E&xit', '&Eliru'
-    eo '&File', '&Dosiero'
-    eo 'File "%1\$s" already exists.' "\n" 'Do you want to overwrite it?', 'La dosiero "%1\$s" jam ekzistas.' "\n" '\u0108u vi volas anstata\u00fbigi la dosieron?'
-    eo 'File "%1\$s" already exists.' "\n\n", 'La dosiero "%1\$s" jam egzistas.' "\n\n"
-    eo 'File "%1\$s" does not exist.', 'La dosierp "%1\$s" ne estas.'
-    eo 'File &name:', 'Dosiero&nomo:'
-    eo 'File &names:', 'Dosiero&nomoj:'
-    eo 'Files of &type:', 'Dosieroj de &Typo:'
-    eo 'Fi&les:', 'Do&sieroj:'
-    eo '&Filter', '&Filtrilo'
-    eo 'Fil&ter:', '&Filtrilo:'
-    eo '&Green', '&Verda'
-    eo '&Help', '&Helpu'
-    eo 'Hi', 'Saluton'
-    eo '&Hide Console', '&Ka\u015du konzolon'
-    eo '&Ignore', '&Ignoru'
-    eo 'Invalid file name "%1\$s".', 'Malvalida dosieronomo "%1\$s".'
-    eo 'Log Files', 'Protokolo'
-    eo '&No', '&Ne'
-    eo 'OK'
-    eo 'Ok'
-    eo 'Open', 'Malfermu'
-    eo '&Open', '&Malfermu'
-    eo 'Open Multiple Files', 'Melfermu multan dosierojn'
-    eo 'P&aste', '&Elpo\u015digi'
-    eo '&Quit', '&Finigu'
-    eo '&Red', '&Rosa'
-    eo 'Replace existing file?', '\u0108u anstata\u00fbu ekzistantan dosieron?'
-    eo '&Retry', '&Ripetu'
-    eo '&Save', '&Savu'
-    eo 'Save As', 'Savu kiel'
-    eo 'Save To Log', 'Savu en protokolon'
-    eo 'Select Log File', 'Elektu prokolodosieron'
-    eo 'Select a file to source', 'Elektu dosieron por interpreti'
-    eo '&Selection:', '&Elekto:'
-    eo 'Skip Messages', 'transsaltu pluajn mesa\u011dojn'
-    eo '&Source...', '&Fontoprogramo...'
-    eo 'Tcl Scripts', 'Tcl-skriptoj'
-    eo 'Tcl for Windows', 'Tcl por vindoso'
-    eo 'Text Files', 'Tekstodosierojn'
-    eo '&Yes', '&Jes'
-    eo 'abort', '\u0109esigo'
-    eo 'blue', 'blua'
-    eo 'cancel', 'rezignu'
-    eo 'extension', 'ekspansio'
-    eo 'extensions', 'ekspansioj'
-    eo 'green', 'verda'
-    eo 'ignore', 'ignorieren'
-    eo 'red', 'ru\u011da'
-    eo 'retry', 'ripetu'
-    eo 'yes', 'jes'
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/es.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/es.msg
deleted file mode 100644 (file)
index 460dbe8..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    es "Application Error", "Error de la aplicaci\\u00f3n"
-    es "Blue", "Azul"
-    es "Color", "Color"
-    es "Delete", "Borrar"
-    es "Error", "Error"
-    es "Exit", "Salir"
-    es "Green", "Verde"
-    es "Red", "Rojo"
-    es "blue", "azul"
-    es "green", "verde"
-    es "red", "rojo"
-}
-
-TkMsgCatalog.new('::tk') {
-    es "&Abort", "&Abortar"
-    es "About...", "Acerca de ..."
-    es "All Files", "Todos los archivos"
-    es "Application Error", "Error de la aplicaci\\u00f3n"
-    es "&Blue", "&Azul"
-    es "&Cancel", "&Cancelar"
-    es "Cannot change to the directory \"%1\$s\".\nPermission denied.", "No es posible acceder al directorio \"%1\$s\".\nPermiso denegado."
-    es "Choose Directory", "Elegir directorio"
-    es "Clear", "Borrar"
-    es "Color", "Color"
-    es "Console", "Consola"
-    es "Copy", "Copiar"
-    es "Cut", "Cortar"
-    es "Delete", "Borrar"
-    es "Details >>", "Detalles >>"
-    es "Directory \"%1\$s\" does not exist.", "El directorio \"%1\$s\" no existe."
-    es "&Directory:", "&Directorio:"
-    es "Error: %1\$s", "Error: %1\$s"
-    es "Exit", "Salir"
-    es "File \"%1\$s\" already exists.\nDo you want to overwrite it?", "El archivo \"%1\$s\" ya existe.\nDesea sobreescribirlo?"
-    es "File \"%1\$s\" already exists.\n\n", "El archivo \"%1\$s\" ya existe.\n\n"
-    es "File \"%1\$s\" does not exist.", "El archivo \"%1\$s\" no existe."
-    es "File &name:", "&Nombre de archivo:"
-    es "File &names:", "&Nombres de archivo:"
-    es "Files of &type:", "Archivos de &tipo:"
-    es "Fi&les:", "&Archivos:"
-    es "&Filter", "&Filtro"
-    es "Fil&ter:", "Fil&tro:"
-    es "&Green", "&Verde"
-    es "Hi", "Hola"
-    es "Hide Console", "Esconder la consola"
-    es "&Ignore", "&Ignorar"
-    es "Invalid file name \"%1\$s\".", "Nombre de archivo inv\\u00e1lido \"%1\$s\"."
-    es "Log Files", "Ficheros de traza"
-    es "&No", "&No"
-    es "&OK", "&OK"
-    es "Ok", "Ok"
-    es "Open", "Abrir"
-    es "&Open", "&Abrir"
-    es "Open Multiple Files", "Abrir m\\u00faltiples archivos"
-    es "Paste", "Pegar"
-    es "Quit", "Abandonar"
-    es "&Red", "&Rojo"
-    es "Replace existing file?", "Reemplazar el archivo existente?"
-    es "&Retry", "&Reintentar"
-    es "&Save", "&Salvar"
-    es "Save As", "Salvar como"
-    es "Save To Log", "Salvar al archivo de traza"
-    es "Select Log File", "Elegir un archivo de traza"
-    es "Select a file to source", "Seleccionar un archivo a evaluar"
-    es "&Selection:", "&Selecci\\u00f3n:"
-    es "Skip Messages", "Omitir los mensajes"
-    es "Source...", "Evaluar..."
-    es "Tcl Scripts", "Scripts Tcl"
-    es "Tcl for Windows", "Tcl para Windows"
-    es "Text Files", "Archivos de texto"
-    es "&Yes", "&S\\u00ed" 
-    es "abort", "abortar"
-    es "blue", "azul"
-    es "cancel", "cancelar"
-    es "extension", "extensi\\u00f3n"
-    es "extensions", "extensiones"
-    es "green", "verde"
-    es "ignore", "ignorar"
-    es "ok", "ok"
-    es "red", "rojo"
-    es "retry", "reintentar"
-    es "yes", "s\\u00ed"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/fr.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/fr.msg
deleted file mode 100644 (file)
index ea85cf1..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    fr 'Application Error', "Erreur d'application"
-    fr 'Blue', 'Bleu'
-    fr 'Color', 'Couleur'
-    fr 'Delete', 'Effacer'
-    fr 'Error', 'Erreur'
-    fr 'Exit', 'Quitter'
-    fr 'Green', 'Vert'
-    fr 'Red', 'Rouge'
-    fr 'blue', 'bleu'
-    fr 'green', 'vert'
-    fr 'red', 'rouge'
-}
-
-TkMsgCatalog.new('::tk') {
-    fr '&Abort', '&Annuler'
-    fr 'About...', '\u00c0 propos...'
-    fr 'All Files', 'Tous les fichiers'
-    fr 'Application Error', "Erreur d'application"
-    fr '&Blue', '&Bleu'
-    fr '&Cancel', '&Annuler'
-    fr 'Cannot change to the directory "%1\$s".' "\n" 'Permission denied.', 'Impossible d\'acc\u00e9der au r\u00e9pertoire "%1\$s".' "\n" 'Permission refus\u00e9e.'
-    fr 'Choose Directory', 'Choisir r\u00e9pertoire'
-    fr 'Clear', 'Effacer'
-    fr 'Color', 'Couleur'
-    fr 'Console'
-    fr 'Copy', 'Copier'
-    fr 'Cut', 'Couper'
-    fr 'Delete', 'Effacer'
-    fr 'Details >>', 'D\u00e9tails >>'
-    fr 'Directory "%1\$s" does not exist.', 'Le r\u00e9pertoire "%1\$s" n\'existe pas.'
-    fr '&Directory:', '&R\u00e9pertoire:'
-    fr 'Error: %1\$s', 'Erreur: %1\$s'
-    fr 'Exit', 'Quitter'
-    fr 'File "%1\$s" already exists.' "\n" 'Do you want to overwrite it?', 'Le fichier "%1\$s" existe d\u00e9j\u00e0.' "\n" 'Voulez-vous l\'\u00e9craser?'
-    fr 'File "%1\$s" already exists.' "\n\n", 'Le fichier "%1\$s" existe d\u00e9j\u00e0.' "\n\n"
-    fr 'File "%1\$s" does not exist.', 'Le fichier "%1\$s" n\'existe pas.'
-    fr 'File &name:', '&Nom de fichier:'
-    fr 'File &names:', '&Noms de fichiers:'
-    fr 'Files of &type:', '&Type de fichiers:'
-    fr 'Fi&les:', 'Fich&iers:'
-    fr '&Filter', '&Filtre'
-    fr 'Fil&ter:', 'Fil&tre:'
-    fr '&Green', '&Vert'
-    fr 'Hi', 'Salut'
-    fr 'Hide Console', 'Cacher la Console'
-    fr '&Ignore', '&Ignorer'
-    fr 'Invalid file name "%1\$s".', 'Nom de fichier invalide "%1\$s".'
-    fr 'Log Files', 'Fichiers de trace'
-    fr '&No', '&Non'
-    fr '&OK'
-    fr 'Ok'
-    fr 'Open', 'Ouvrir'
-    fr '&Open', '&Ouvrir'
-    fr 'Open Multiple Files', 'Ouvrir plusieurs fichiers'
-    fr 'Paste', 'Coller'
-    fr 'Quit', 'Quitter'
-    fr '&Red', '&Rouge'
-    fr 'Replace existing file?', 'Remplacer le fichier existant?'
-    fr '&Retry', '&R\u00e9-essayer'
-    fr '&Save', '&Sauvegarder'
-    fr 'Save As', 'Sauvegarder sous'
-    fr 'Save To Log', 'Sauvegarde au fichier de trace'
-    fr 'Select Log File', 'Choisir un fichier de trace'
-    fr 'Select a file to source', 'Choisir un fichier \u00e0 \u00e9valuer'
-    fr '&Selection:', '&S\u00e9lection:'
-    fr 'Skip Messages', 'Omettre les messages'
-    fr 'Source...', '\u00c9valuer...'
-    fr 'Tcl Scripts', 'Scripts Tcl'
-    fr 'Tcl for Windows', 'Tcl pour Windows'
-    fr 'Text Files', 'Fichiers texte'
-    fr '&Yes', '&Oui'
-    fr 'abort', 'abandonner'
-    fr 'blue', 'bleu'
-    fr 'cancel', 'annuler'
-    fr 'extension'
-    fr 'extensions'
-    fr 'green', 'vert'
-    fr 'ignore', 'ignorer'
-    fr 'ok'
-    fr 'red', 'rouge'
-    fr 'retry', 'r\u00e9essayer'
-    fr 'yes', 'oui'
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/it.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/it.msg
deleted file mode 100644 (file)
index a180bdb..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    it "Application Error", "Errore dell' applicazione"
-    it "Blue", "Blu"
-    it "Color", "Colore"
-    it "Delete", "Incolla"
-    it "Error", "Errore"
-    it "Exit", "Esci"
-    it "Green", "Verde"
-    it "Red", "Rosso"
-    it "blue", "blu"
-    it "green", "verde"
-    it "red", "rosso"
-}
-
-TkMsgCatalog.new('::tk') {
-    it "&Abort", "&Interrompi"
-    it "About...", "Informazioni ..."
-    it "All Files", "Tutti i file"
-    it "Application Error", "Errore dell' applicazione"
-    it "&Blue", "&Blu"
-    it "&Cancel", "&Annulla"
-    it "Cannot change to the directory \"%1\$s\".\nPermission denied.", "Impossibile accedere alla directory \"%1\$s\".\nPermesso negato."
-    it "Choose Directory", "Scegli directory"
-    it "Clear", "Azzera"
-    it "Color", "Colore"
-    it "Console"
-    it "Copy", "Copia"
-    it "Cut", "Taglia"
-    it "Delete", "Incolla"
-    it "Details >>", "Dettagli >>"
-    it "Directory \"%1\$s\" does not exist.", "La directory \"%1\$s\" non esiste."
-    it "&Directory:"
-    it "Error: %1\$s", "Errore: %1\$s"
-    it "Exit", "Esci"
-    it "File \"%1\$s\" already exists.\nDo you want to overwrite it?", "Il file \"%1\$s\" esiste gi\\u00e0.\nVuoi sovrascriverlo?"
-    it "File \"%1\$s\" already exists.\n\n", "Il file \"%1\$s\" esiste gi\\u00e0.\n\n"
-    it "File \"%1\$s\" does not exist.", "Il file \"%1\$s\" non esiste."
-    it "File &name:", "&Nome del file:"
-    it "File &names:", "&Nomi dei file:"
-    it "Files of &type:", "File di &tipo:"
-    it "Fi&les:", "Fi&le:"
-    it "&Filter", "&Filtro"
-    it "Fil&ter:", "Fil&tro:"
-    it "&Green", "&Verde"
-    it "Hi", "Salve"
-    it "Hide Console", "Nascondi la console"
-    it "&Ignore", "&Ignora"
-    it "Invalid file name \"%1\$s\".", "Nome di file non valido \"%1\$s\"."
-    it "Log Files", "File di log"
-    it "&No"
-    it "&OK"
-    it "Ok"
-    it "&Open", "A&pri"
-    it "Open", "Apri"
-    it "Open Multiple Files", "Apri file multipli"
-    it "Paste", "Incolla"
-    it "Quit", "Esci"
-    it "&Red", "&Rosso"
-    it "Replace existing file?", "Sostituisci il file esistente?"
-    it "&Retry", "&Riprova"
-    it "&Save", "&Salva"
-    it "Save As", "Salva come"
-    it "Save To Log", "Salva il log"
-    it "Select Log File", "Scegli un file di log"
-    it "Select a file to source", "Scegli un file da eseguire"
-    it "&Selection:", "&Selezione:"
-    it "Skip Messages", "Salta i messaggi"
-    it "Source...", "Esegui..."
-    it "Tcl Scripts", "Scripts Tcl"
-    it "Tcl for Windows", "Tcl per Windows"
-    it "Text Files", "File di testo"
-    it "&Yes", "&Si"
-    it "abort", "interrompi"
-    it "blue", "blu"
-    it "cancel", "annulla"
-    it "extension", "estensione"
-    it "extensions", "estensioni"
-    it "green", "verde"
-    it "ignore", "ignora"
-    it "ok"
-    it "red", "rosso"
-    it "retry", "riprova"
-    it "yes", "si"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/ja.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/ja.msg
deleted file mode 100644 (file)
index 40587c1..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    ja 'Application Error', '\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30A8\u30E9\u30FC'
-    ja 'Blue',   '\u9752'
-    ja 'Color',  '\u80CC\u666F\u8272'
-    ja 'Delete', '\u6D88\u53BB'
-    ja 'Error',  '\u30A8\u30E9\u30FC'
-    ja 'Exit',   '\u7D42\u4E86'
-    ja 'Green',  '\u7DD1'
-    ja 'Red',    '\u8D64'
-    ja 'blue',   '\u9752'
-    ja 'green',  '\u7DD1'
-    ja 'red',    '\u8D64'
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/nl.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/nl.msg
deleted file mode 100644 (file)
index 24e41da..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    nl "Application Error", "Toepassingsfout"
-    nl "Blue", "Blauw"
-    nl "Color", "Kleur"
-    nl "Delete", "Wissen"
-    nl "Error", "Fout"
-    nl "Exit", "Be\\u00ebindigen"
-    nl "Green", "Groen"
-    nl "Red", "Rood"
-    nl "blue", "blauw"
-    nl "green", "groen"
-    nl "red", "rood"
-}
-
-TkMsgCatalog.new('::tk') {
-    nl "\"%1\$s\" must be an absolute pathname", "\"%1\$s\" moet een absolute pad-naam zijn"
-    nl "%1\$s is not a toplevel window", "%1\$s is geen toplevel window"
-    nl ", or", ", of"
-    nl "-default, -icon, -message, -parent, -title, or -type", "-default, -icon, -message, -parent, -title, of -type"
-    nl "-initialdir, -mustexist, -parent, or -title", "-initialdir, -mustexist, -parent, of -title"
-    nl "&Abort", "&Afbreken"
-    nl "About...", "Over..."
-    nl "All Files", "Alle Bestanden"
-    nl "Application Error", "Toepassingsfout"
-    nl "&Blue", "&Blauw"
-    nl "&Cancel", "&Annuleren"
-    nl "Cannot change to the directory \"%1\$s\".\nPermission denied.", "Kan niet naar map \"%1\$s\" gaan.\nU heeft hiervoor geen toestemming."
-    nl "Choose Directory", "Kies map"
-    nl "Clear", "Wissen"
-    nl "Clear entry, Press OK; Enter %1\$s, press OK", "Wis veld, Druk op OK; typ %1\$s in, druk op OK"
-    nl "&Clear Console", "&Wis Console"
-    nl "Color", "Kleur"
-    nl "Console"
-    nl "Copy", "Kopi\\u00ebren"
-    nl "Cut", "Knippen"
-    nl "Delete", "Wissen"
-    nl "Details"
-    nl "Details >>"
-    nl "Directory \"%1\$s\" does not exist.", "Map \"%1\$s\" bestaat niet."
-    nl "&Directory:", "&Map:"
-    nl "Edit", "Bewerken"
-    nl "Enter \"%1\$s\", press OK", "Typ \"%1\$s\", druk op OK"
-    nl "Enter \"%1\$s\", press OK, enter \"%2\$s\", press OK", "Typ \"%1\$s\", druk op OK, typ \"%2\$s\", druk op OK"
-    nl "Error: %1\$s", "Fout: %1\$s"
-    nl "Exit", "Be\\u00ebindigen"
-    nl "File", "Bestand"
-    nl "File \"%1\$s\" already exists.\n\n", "Bestand \"%1\$s\" bestaat al.\n\n"
-    nl "File \"%1\$s\" already exists.\nDo you want to overwrite it?", "Bestand \"%1\$s\" bestaat al.\nWilt u het overschrijven?"
-    nl "File \"%1\$s\" does not exist.", "Bestand \"%1\$s\" bestaat niet."
-    nl "File &name:", "Bestands&naam:"
-    nl "File &names:", "Bestands&namen:"
-    nl "Files of &type:", "Bestanden van het &type:"
-    nl "Fi&les:", "&Bestanden:"
-    nl "&Filter"
-    nl "Fil&ter:"
-    nl "&Green", "&Groen"
-    nl "Hi", "H\\u00e9"
-    nl "Hide Console", "Verberg Console"
-    nl "&Ignore", "&Negeren"
-    nl "Invalid file name \"%1\$s\".", "Ongeldige bestandsnaam \"%1\$s\"."
-    nl "Log Files", "Log Bestanden"
-    nl "&No", "&Nee"
-    nl "&OK"
-    nl "Ok"
-    nl "&Open", "&Openen"
-    nl "Open", "Openen"
-    nl "Open Multiple Files", "Open meerdere bestanden"
-    nl "Paste", "Plakken"
-    nl "Please press %1\$s", "Druk op %1\$s, A.U.B."
-    nl "Please press ok", "Druk op ok, A.U.B."
-    nl "Press Cancel", "Druk op Annuleren"
-    nl "Press Ok", "Druk op Ok"
-    nl "Quit", "Stoppen"
-    nl "&Red", "&Rood"
-    nl "Replace existing file?", "Vervang bestaand bestand?"
-    nl "&Retry", "&Herhalen"
-    nl "&Save", "Op&slaan"
-    nl "Save As", "Opslaan als"
-    nl "Save To Log", "Opslaan naar Log"
-    nl "Select Log File", "Selecteer Log bestand"
-    nl "Select a file to source", "Selecteer bronbestand"
-    nl "&Selection:", "&Selectie:"
-    nl "Skip Messages", "Berichten overslaan"
-    nl "Source...", "Bron..."
-    nl "Tcl Scripts"
-    nl "Tcl for Windows", "Tcl voor Windows"
-    nl "Text Files", "Tekstbestanden"
-    nl "&Yes", "&Ja"
-    nl "abort", "afbreken"
-    nl "abort, retry, ignore, ok, cancel, no, or yes", "afbreken, opnieuw, negeren, ok, annuleren, nee, of ja"
-    nl "abortretryignore, ok, okcancel, retrycancel, yesno, or yesnocancel", "abortretryignore, ok, okcancel, retrycancel, yesno, of yesnocancel"
-    nl "bad %1\$s value \"%2\$s\": must be %3\$s", "verkeerde %1\$s waarde \"%2\$s\": moet zijn %3\$s"
-    nl "bad file type \"%1\$s\", should be", "verkeerd bestandstype \"%1\$s\", moet zijn"
-    nl "bad option \"%1\$s\": should be %2\$s", "verkeerde optie \"%1\$s\": moet zijn %2\$s"
-    nl "bad window path name \"%1\$s\"", "verkeerde window-padnaam \"%1\$s\""
-    nl "blue", "blauw"
-    nl "can't post %1\$s:  it isn't a descendant of %2\$s (this is a new requirement in Tk versions 3.0 and later)", "kan %1\$s niet verzenden:  het is geen afstammeling van %2\$s (dit is een nieuwe eis in Tk versies 3.0 en later)"
-    nl "cancel", "annuleren"
-    nl "default button index greater than number of buttons specified for tk_dialog", "default knop index is groter dan het aantal knoppen beschikbaar voor tk_dialog"
-    nl "display name to use (current one otherwise)", "te gebruiken schermnaam (anders huidige scherm)"
-    nl "error, info, question, or warning", "error, info, question, of warning"
-    nl "extension"
-    nl "extensions"
-    nl "focus group \"%1\$s\" doesn't exist", "focusgroep \"%1\$s\" bestaat niet"
-    nl "green", "groen"
-    nl "history event %1\$s"
-    nl "ignore", "negeren"
-    nl "invalid default button \"%1\$s\"", "ongeldige default knop \"%1\$s\""
-    nl "macType"
-    nl "macTypes"
-    nl "must specify a background color", "een achtergrondkleur is verplicht"
-    nl "name of the slave interpreter", "naam van de slaaf-interpreter"
-    nl "no winfo screen . nor env(DISPLAY)", "geen winfo scherm . noch env(DISPLAY)"
-    nl "ok"
-    nl "red", "rood"
-    nl "retry", "opnieuw"
-    nl "should contain 5 or 4 elements", "moet 4 of 5 elementen bevatten"
-    nl "spec"
-    nl "tk_chooseDirectory command", "tk_chooseDirectory opdracht"
-    nl "tk_chooseDirectory command, cancel gives null", "tk_chooseDirectory opdracht, annuleren geeft lege waarde"
-    nl "tk_chooseDirectory command, initialdir", "tk_chooseDirectory opdracht, initi\\u00eble map"
-    nl "yes", "ja"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/pl.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/pl.msg
deleted file mode 100644 (file)
index 0b3b444..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    pl 'Application Error', 'Bl\u0105d w Programie'
-    pl 'Blue', 'Niebieski'
-    pl 'Color', 'Kolor'
-    pl 'Delete', 'Usu\u0144'
-    pl 'Error', 'B\u0142\u0105d'
-    pl 'Exit', 'Zako\u0144cz'
-    pl 'Green', 'Zielony'
-    pl 'Red', 'Czerwonz'
-    pl 'blue', 'niebieski'
-    pl 'green', 'zielony'
-    pl 'red', 'czerwony'
-}
-
-TkMsgCatalog.new('::tk') {
-    pl '&Abort', '&Anuluj'
-    pl '&About...', 'O Programie...'
-    pl 'All Files', 'Wszystkie pliki'
-    pl 'Application Error', 'Bl\u0105d w Programie'
-    pl '&Blue', '&Niebieski'
-    pl '&Cancel', '&Anuluj'
-    pl 'Cannot change to the directory "%1\$s".' "\n" 'Permission denied.', 'Katalog "%1\$s" nie mo\u017ce zosta\u0107 odczytany lub nie istnieje.'
-    pl 'Choose Directory', 'Wybierz katalog'
-    pl '&Clear', '&Wyczy\u015b\u0107'
-    pl '&Clear Console', '&Wyczy\u015b\u0107 konsol\u0119'
-    pl 'Color', 'Kolor'
-    pl 'Console', 'Konsola'
-    pl '&Copy', '&Kopiuj'
-    pl 'Cu&t', '&Wytnij'
-    pl '&Delete', '&Usu\u0144'
-    pl 'Details >>', 'Detale >>'
-    pl 'Directory "%1\$s" does not exist.', 'Katalog "%1\$s" nie istniej.'
-    pl '&Directory:', '&Katalog:'
-    pl '&Edit', '&Edytuj'
-    pl 'Error: %1\$s', 'B\u0142\u0105d: %1\$s'
-    pl 'E&xit', '&Zako\u0144cz'
-    pl '&File', '&Plik'
-    pl 'File "%1\$s" already exists.' "\n" 'Do you want to overwrite it?', 'Plik "%1\$s" ju\u017c istnieje.' "\n" 'Czy chcesz go zast\u0105pi\u0107?'
-    pl 'File "%1\$s" already exists.' "\n\n", 'Plik "%1\$s" ju\u017c istnieje. ' "\n\n"
-    pl 'File "%1\$s" does not exist.', 'Plik "%1\$s" nie istnieje.'
-    pl 'File &name:', 'Nazwa &pliku:'
-    pl 'File &names:', 'Nazwy &plik\u00f3w:'
-    pl 'Files of &type:', 'Pliki &typu:'
-    pl 'Fi&les:', 'Pli&ki:'
-    pl '&Filter', '&Filter'
-    pl 'Fil&ter:', '&Filter:'
-    pl '&Green', '&Zielony'
-    pl '&Help', '&Pomoc'
-    pl 'Hi', 'Witaj'
-    pl '&Hide Console', '&Schowaj konsol\u0119'
-    pl '&Ignore', '&Ignoruj'
-    pl 'Invalid file name "%1\$s".', 'Niew\u0142a\u015bciwa nazwa pliku "%1\$s".'
-    pl 'Log Files', 'Protoko\u0142uj'
-    pl '&No', '&Nie'
-    pl 'OK'
-    pl 'Ok'
-    pl 'Open', 'Wczytaj'
-    pl '&Open', '&Wczytaj'
-    pl 'Open Multiple Files', 'Wczytuj wiele plik\u00f3w'
-    pl 'P&aste', '&Wklej'
-    pl '&Quit', '&Zako\u0144cz'
-    pl '&Red', '&Czerwonz'
-    pl 'Replace existing file?', 'Czy zost\u0105pi\u0107 instniej\u0105cy plik?'
-    pl '&Retry', '&Powt\u00f3rz'
-    pl '&Save', '&Zapisz'
-    pl 'Save As', 'Zapisz jako'
-    pl 'Save To Log', 'Wpisz do protoko\u0142u'
-    pl 'Select Log File', 'Wybierz plik proko\u0142u'
-    pl 'Select a file to source', 'Wybierz plik do wykonania'
-    pl '&Selection:', '&Wyb\u00f3r:'
-    pl 'Skip Messages', 'Omi\u0144 pozosta\u0142e komunikaty'
-    pl '&Source...', '&Kod \u017ar\u00f3d\u0142owy...'
-    pl 'Tcl Scripts', 'Tcl-skrypty'
-    pl 'Tcl for Windows', 'Tcl dla Okienek (Windows)'
-    pl 'Text Files', 'Pliki Tekstowe'
-    pl '&Yes', '&Tak'
-    pl 'abort', 'zako\u0144cz'
-    pl 'blue', 'niebieski'
-    pl 'cancel', 'anuluj'
-    pl 'extension', 'rozszerzenie'
-    pl 'extensions', 'rozszerzenia'
-    pl 'green', 'zielony'
-    pl 'ignore', 'ignoruj'
-    pl 'red', 'czerwony'
-    pl 'retry', 'potw\u00f3rz'
-    pl 'yes', 'tak'
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/ru.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb/ru.msg
deleted file mode 100644 (file)
index f389dff..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    ru 'Application Error', '\u041e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435'
-    ru 'Blue', ' \u0413\u043e\u043b\u0443\u0431\u043e\u0439'
-    ru 'Color', '\u0426\u0432\u0435\u0442'
-    ru 'Delete', '\u0423\u0434\u0430\u043b\u0438\u0442\u044c'
-    ru 'Error', '\u041e\u0448\u0438\u0431\u043a\u0430'
-    ru 'Exit', '\u0412\u044b\u0445\u043e\u0434'
-    ru 'Green', '\u0417\u0435\u043b\u0435\u043d\u044b\u0439'
-    ru 'Red', '\u041a\u0440\u0430\u0441\u043d\u044b\u0439'
-    ru 'blue', ' \u0433\u043e\u043b\u0443\u0431\u043e\u0439'
-    ru 'green', ' \u0437\u0435\u043b\u0435\u043d\u044b\u0439'
-    ru 'red', ' \u043a\u0440\u0430\u0441\u043d\u044b\u0439'
-}
-
-TkMsgCatalog.new('::tk') {
-    ru '&Abort', '&\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c'
-    ru 'About...', '\u041f\u0440\u043e...'
-    ru 'All Files', '\u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b'
-    ru 'Application Error', '\u041e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435'
-    ru '&Blue', ' &\u0413\u043e\u043b\u0443\u0431\u043e\u0439'
-    ru '&Cancel', '\u041e\u0442&\u043c\u0435\u043d\u0430'
-    ru 'Cannot change to the directory "%1\$s".' "\n" 'Permission denied.' \
-                        '\u041d\u0435 \u043c\u043e\u0433\u0443 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 "%1\$s".' "\n" '\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430'
-    ru 'Choose Directory', '\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433'
-    ru 'Clear', '\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c'
-    ru 'Color', '\u0426\u0432\u0435\u0442'
-    ru 'Console', '\u041a\u043e\u043d\u0441\u043e\u043b\u044c'
-    ru 'Copy', '\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c'
-    ru 'Cut', '\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c'
-    ru 'Delete', '\u0423\u0434\u0430\u043b\u0438\u0442\u044c'
-    ru 'Details >>', '\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 >>'
-    ru 'Directory "%1\$s" does not exist.', '\u041a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 "%1\$s" \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.'
-    ru '&Directory:', '&\u041a\u0430\u0442\u0430\u043b\u043e\u0433:'
-    ru 'Error: %1\$s', '\u041e\u0448\u0438\u0431\u043a\u0430: %1\$s' 
-    ru 'Exit', '\u0412\u044b\u0445\u043e\u0434'
-    ru 'File "%1\$s" already exists.' "\n" 'Do you want to overwrite it?' \
-                            '\u0424\u0430\u0439\u043b "%1\$s" \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.' "\n" '\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e?'
-    ru 'File "%1\$s" already exists.' "\n\n", '\u0424\u0430\u0439\u043b "%1\$s" \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.' "\n\n"
-    ru 'File "%1\$s" does not exist.', '\u0424\u0430\u0439\u043b "%1\$s" \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d.'
-    ru 'File &name:', '&\u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430:'
-    ru 'File &names:', '&\u0418\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432:'
-    ru 'Files of &type:', '&\u0422\u0438\u043f \u0444\u0430\u0439\u043b\u043e\u0432:'
-    ru 'Fi&les:', '\u0424\u0430\u0439&\u043b\u044b:'
-    ru '&Filter', '&\u0424\u0438\u043b\u044c\u0442\u0440'
-    ru 'Fil&ter:', '\u0424\u0438\u043b\u044c&\u0442\u0440:'
-    ru '&Green', ' &\u0417\u0435\u043b\u0435\u043d\u044b\u0439'
-    ru 'Hi', '\u041f\u0440\u0438\u0432\u0435\u0442'
-    ru 'Hide Console', '\u0421\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c'
-    ru '&Ignore', '&\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c'
-    ru 'Invalid file name "%1\$s".', '\u041d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 "%1\$s".' 
-    ru 'Log Files', '\u0424\u0430\u0439\u043b\u044b \u0436\u0443\u0440\u043d\u0430\u043b\u0430'
-    ru '&No', '&\u041d\u0435\u0442'
-    ru '&OK', '&\u041e\u041a'
-    ru 'Ok', '\u0414\u0430'
-    ru 'Open', '\u041e\u0442\u043a\u0440\u044b\u0442\u044c'
-    ru '&Open', '&\u041e\u0442\u043a\u0440\u044b\u0442\u044c'
-    ru 'Open Multiple Files', '\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432'
-    ru 'Paste', '\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c'
-    ru 'Quit', '\u0412\u044b\u0445\u043e\u0434'
-    ru '&Red', ' &\u041a\u0440\u0430\u0441\u043d\u044b\u0439'
-    ru 'Replace existing file?', '\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b?'
-    ru '&Retry', '&\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c'
-    ru '&Save', '&\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c'
-    ru 'Save As', '\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u0430\u043a'
-    ru 'Save To Log', '\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0436\u0443\u0440\u043d\u0430\u043b'
-    ru 'Select Log File', '\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b'
-    ru 'Select a file to source', '\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438'
-    ru '&Selection:', '&Selection:'
-    ru 'Skip Messages', '\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f'
-    ru 'Source...', '\u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b...'
-    ru 'Tcl Scripts', '\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 TCL'
-    ru 'Tcl for Windows', 'TCL \u0434\u043b\u044f Windows'
-    ru 'Text Files', '\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b'
-    ru '&Yes', '&\u0414\u0430'
-    ru 'abort', '\u043e\u0442\u043c\u0435\u043d\u0430'
-    ru 'blue', ' \u0433\u043e\u043b\u0443\u0431\u043e\u0439'
-    ru 'cancel', '\u043e\u0442\u043c\u0435\u043d\u0430'
-    ru 'extension', '\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435'
-    ru 'extensions', '\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f'
-    ru 'green', ' \u0437\u0435\u043b\u0435\u043d\u044b\u0439'
-    ru 'ignore', '\u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c'
-    ru 'ok', '\u043e\u043a'
-    ru 'red', ' \u043a\u0440\u0430\u0441\u043d\u044b\u0439'
-    ru 'retry', '\u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c'
-    ru 'yes', '\u0434\u0430'
-}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb2/README b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb2/README
deleted file mode 100644 (file)
index b8aa114..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-Message catalogs in this directory are written in encodings except
-UTF-8. As if you have a trouble to edit UTF-8 text, you can write 
-message catalogs in your familier encoding.
-
-Please see '../msgs_rb/README' too.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb2/de.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb2/de.msg
deleted file mode 100644 (file)
index 0d6c82d..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    de 'Application Error', 'Applikationsfehler'
-    de 'Blue', 'Blau'
-    de 'Color', 'Farbe'
-    de 'Delete', 'Löschen', 'iso8859-1'
-    de 'Error', 'Fehler'
-    de 'Exit', 'Ende'
-    de 'Green', 'Grün', 'iso8859-1'
-    de 'Red', 'Rot'
-    de 'blue', 'blau'
-    de 'green', 'grün', 'iso8859-1'
-    de 'red', 'rot'
-}
-
-TkMsgCatalog.new('::tk') {
-    de "&Abort", "&Abbruch"
-    de "&About...", "&Über...", 'iso8859-1'
-    de "All Files", "Alle Dateien"
-    de "Application Error", "Applikationsfehler"
-    de "&Blue", "&Blau"
-    de "&Cancel", "&Abbruch"
-    de "Cannot change to the directory \"%1\$s\".\nPermission denied.", "Kann nicht in das Verzeichnis \"%1\$s\" wechseln.\nKeine Rechte vorhanden."
-    de "Choose Directory", "Wähle Verzeichnis", 'iso8859-1'
-    de "&Clear", "&Rücksetzen", 'iso8859-1'
-    de "&Clear Console", "&Konsole löschen", 'iso8859-1'
-    de "Color", "Farbe"
-    de "Console", "Konsole"
-    de "&Copy", "&Kopieren"
-    de "Cu&t", "Aus&schneiden"
-    de '&Delete', '&Löschen', 'iso8859-1'
-    de "Details >>"
-    de "Directory \"%1\$s\" does not exist.", "Das Verzeichnis \"%1\$s\" existiert nicht."
-    de "&Directory:", "&Verzeichnis:"
-    de "&Edit", "&Bearbieten"
-    de "Error: %1\$s", "Fehler: %1\$s"
-    de "E&xit", "&Ende"
-    de "&File", "&Datei"
-    de "File \"%1\$s\" already exists.\nDo you want to overwrite it?", "Die Datei \"%1\$s\" ist bereits vorhanden.\nWollen sie diese Datei überschreiben ?", 'iso8859-1'
-    de "File \"%1\$s\" already exists.\n\n", "Die Datei \"%1\$s\" ist bereits vorhanden.\n\n"
-    de "File \"%1\$s\" does not exist.", "Die Datei \"%1\$s\" existiert nicht."
-    de "File &name:", "Datei&name:"
-    de "File &names:", "Datei&namen:"
-    de "Files of &type:", "Dateien des &Typs:"
-    de "Fi&les:", "Dat&eien:"
-    de "&Filter"
-    de "Fil&ter:"
-    de '&Green', '&Grün', 'iso8859-1'
-    de "&Help", "&Hilfe"
-    de "Hi", "Hallo"
-    de "&Hide Console", "&Konsole unsichtbar machen"
-    de "&Ignore", "&Ignorieren"
-    de "Invalid file name \"%1\$s\".", "Ungültiger Dateiname \"%1\$s\".", 'iso8859-1'
-    de "Log Files", "Protokolldatei"
-    de "&No", "&Nein"
-    de "OK"
-    de "Ok"
-    de "Open", "Öffnen", 'iso8859-1'
-    de "&Open", "Ö&ffnen", 'iso8859-1'
-    de "Open Multiple Files"
-    de "P&aste", "E&infügen", 'iso8859-1'
-    de "&Quit", "&Beenden"
-    de "&Red", "&Rot"
-    de "Replace existing file?", "Existierende Datei ersetzen?"
-    de "&Retry", "&Wiederholen"
-    de "&Save", "&Speichern"
-    de "Save As", "Speichern unter"
-    de "Save To Log", "In Protokoll speichern"
-    de "Select Log File", "Protokolldatei auswählen", 'iso8859-1'
-    de "Select a file to source", "Auszuführende Datei auswählen", 'iso8859-1'
-    de "&Selection:", "Auswah&l:"
-    de "Skip Messages", "Weitere Nachrichten überspringen", 'iso8859-1'
-    de "&Source...", "&Ausführen...", 'iso8859-1'
-    de "Tcl Scripts", "Tcl-Skripte"
-    de "Tcl for Windows", "Tcl für Windows", 'iso8859-1'
-    de "Text Files", "Textdateien"
-    de "&Yes", "&Ja"
-    de "abort", "abbrechen"
-    de "blue", "blau"
-    de "cancel", "abbrechen"
-    de "extension", "Erweiterung"
-    de "extensions", "Erweiterungen"
-    de 'green', 'grün', 'iso8859-1'
-    de "ignore", "ignorieren"
-    de "ok"
-    de "red", "rot"
-    de "retry", "wiederholen"
-    de "yes", "ja"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb2/ja.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_rb2/ja.msg
deleted file mode 100644 (file)
index 84e89aa..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-TkMsgCatalog.new('::tkmsgcat_demo') {
-    ja 'Application Error', '¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥¨¥é¡¼', 'euc-jp'
-    ja 'Blue',   'ÀÄ',     'euc-jp'
-    ja 'Color',  '¿§ÁªÂò', 'euc-jp'
-    ja 'Delete', '¾Ãµî',   'euc-jp'
-    ja 'Error',  '¥¨¥é¡¼', 'euc-jp'
-    ja 'Exit',   '½ªÎ»',   'euc-jp'
-    ja 'Green',  'ÎÐ',     'euc-jp'
-    ja 'Red',    'ÀÖ',     'euc-jp'
-    ja 'blue',   'ÀÄ',     'euc-jp'
-    ja 'green',  'ÎÐ',     'euc-jp'
-    ja 'red',    'ÀÖ',     'euc-jp'
-}
-
-TkMsgCatalog.new('::tk') {
-    ja "&Abort", 'Ãæ»ß', 'euc-jp'
-    ja "About..."
-    ja "All Files", '¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë', 'euc-jp'
-    ja "Application Error", '¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥¨¥é¡¼', 'euc-jp'
-    ja "&Blue", 'ÀÄ', 'euc-jp'
-    ja "&Cancel", '¼è¤ê¾Ã¤·', 'euc-jp'
-    ja "Cannot change to the directory \"%1\$s\".\nPermission denied.", "¥Ç¥£¥ì¥¯¥È¥ê \"%1\$s\" ¤ËÊѹ¹¤Ç¤­¤Þ¤»¤ó¡¥\nµö²Ä¤¬¤¢¤ê¤Þ¤»¤ó¡¥", 'euc-jp'
-    ja "Choose Directory", '¥Ç¥£¥ì¥¯¥È¥ê¤òÁªÂò', 'euc-jp'
-    ja "Clear", '¾Ãµî', 'euc-jp'
-    ja "Color", '¿§', 'euc-jp'
-    ja "Console", '¥³¥ó¥½¡¼¥ë', 'euc-jp'
-    ja "Copy", '¥³¥Ô¡¼', 'euc-jp'
-    ja "Cut", 'ÀÚ¤ê¼è¤ê', 'euc-jp'
-    ja "Delete", '¾Ãµî', 'euc-jp'
-    ja "Details >>", '¾ÜºÙ >>', 'euc-jp'
-    ja "Directory \"%1\$s\" does not exist.", '"%1$s" ¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê¤Ï¸ºß¤·¤Þ¤»¤ó¡¥', 'euc-jp'
-    ja "&Directory:", '¥Ç¥£¥ì¥¯¥È¥ê', 'euc-jp'
-    ja "Error: %1\$s"
-    ja "Exit", '½ªÎ»', 'euc-jp'
-    ja "File \"%1\$s\" already exists.\nDo you want to overwrite it?", "\"%1\$s\" ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ï´û¤Ë¸ºß¤·¤Æ¤¤¤Þ¤¹¡¥\n½ñ¤­´¹¤¨¤Þ¤¹¤«¡©", 'euc-jp'
-    ja "File \"%1\$s\" already exists.\n\n", "\"%1\$s\" ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ï´û¤Ë¸ºß¤·¤Æ¤¤¤Þ¤¹¡¥\n\n", 'euc-jp'
-    ja "File \"%1\$s\" does not exist.", '"%1$s" ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ï¸ºß¤·¤Þ¤»¤ó¡¥', 'euc-jp'
-    ja "File &name:", '¥Õ¥¡¥¤¥ë̾', 'euc-jp'
-    ja "File &names:", '¥Õ¥¡¥¤¥ë̾', 'euc-jp'
-    ja "Files of &type:", '¥Õ¥¡¥¤¥ë·Á¼°', 'euc-jp'
-    ja "Fi&les:", '¥Õ¥¡¥¤¥ë', 'euc-jp'
-    ja "&Filter", '¥Õ¥£¥ë¥¿¡¼', 'euc-jp'
-    ja "Fil&ter:", '¥Õ¥£¥ë¥¿¡¼', 'euc-jp'
-    ja "&Green", 'ÎÐ', 'euc-jp'
-    ja "Hi", '¤³¤ó¤Ë¤Á¤Ï', 'euc-jp'
-    ja "Hide Console", '¥³¥ó¥½¡¼¥ë¤ò±£¤¹', 'euc-jp'
-    ja "&Ignore", '̵»ë', 'euc-jp'
-    ja "Invalid file name \"%1\$s\".", '"%1$s" ¤ÏÉÔÀµ¤Ê¥Õ¥¡¥¤¥ë̾¤Ç¤¹¡¥', 'euc-jp'
-    ja "Log Files", '¥í¥°¥Õ¥¡¥¤¥ë', 'euc-jp'
-    ja "&No", '¤¤¤¤¤¨', 'euc-jp'
-    ja "&OK", 'λ²ò', 'euc-jp'
-    ja "OK", 'λ²ò', 'euc-jp'
-    ja "Ok", 'λ²ò', 'euc-jp'
-    ja "Open", '³«¤¯', 'euc-jp'
-    ja "&Open", '³«¤¯', 'euc-jp'
-    ja "Open Multiple Files", 'Ê£¿ô¤Î¥Õ¥¡¥¤¥ë¤ò³«¤¯', 'euc-jp'
-    ja "Paste", 'Ž¤êÉÕ¤±', 'euc-jp'
-    ja "Quit", '½ªÎ»', 'euc-jp'
-    ja "&Red", 'ÀÖ', 'euc-jp'
-    ja "Replace existing file?", '´û¸¤Î¥Õ¥¡¥¤¥ë¤òÃÖ¤­´¹¤¨¤Þ¤¹¤«¡©', 'euc-jp'
-    ja "&Retry", 'ºÆ¼Â¹Ô', 'euc-jp'
-    ja "&Save", 'Êݸ', 'euc-jp'
-    ja "Save As", '̾Á°¤òÉÕ¤±¤ÆÊݸ', 'euc-jp'
-    ja "Save To Log", '¥í¥°¤òÊݸ', 'euc-jp'
-    ja "Select Log File", '¥í¥°¥Õ¥¡¥¤¥ë¤òÁªÂò', 'euc-jp'
-    ja "Select a file to source", '¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤òÁªÂò', 'euc-jp'
-    ja "&Selection:", 'ÁªÂò', 'euc-jp'
-    ja "Skip Messages", '¥á¥Ã¥»¡¼¥¸¤ò¤È¤Ð¤¹', 'euc-jp'
-    ja "Source...", '¥½¡¼¥¹...', 'euc-jp'
-    ja "Tcl Scripts", 'Tcl ¥¹¥¯¥ê¥×¥È', 'euc-jp'
-    ja "Tcl for Windows"
-    ja "Text Files", '¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë', 'euc-jp'
-    ja "&Yes", '¤Ï¤¤', 'euc-jp'
-    ja "abort", 'Ãæ»ß', 'euc-jp'
-    ja "blue", 'ÀÄ', 'euc-jp'
-    ja "cancel", '¼è¤ê¾Ã¤·', 'euc-jp'
-    ja "extension", '³ÈÄ¥»Ò', 'euc-jp'
-    ja "extensions", '³ÈÄ¥»Ò', 'euc-jp'
-    ja "green", 'ÎÐ', 'euc-jp'
-    ja "ignore", '̵»ë', 'euc-jp'
-    ja "ok", 'λ²ò', 'euc-jp'
-    ja "red", 'ÀÖ', 'euc-jp'
-    ja "retry", 'ºÆ¼Â¹Ô', 'euc-jp'
-    ja "yes", '¤Ï¤¤', 'euc-jp'
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/README b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/README
deleted file mode 100644 (file)
index c7422e3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Almost all of Message-Catalog files in this directory are quoted 
-from Tcl/Tk8.5a1 source archive (only a little are modified for
-'tkmsgcat-load_tk.rb'). Please read the file 'license.terms' in
-this directry (That was included in demo directory of Tcl/Tk8.5a1).
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/cs.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/cs.msg
deleted file mode 100644 (file)
index 6970709..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-namespace eval ::tkmsgcat_demo {
-    ::msgcat::mcset cs "Application Error" "Chyba programu"
-    ::msgcat::mcset cs "Blue" "Modr\341"
-    ::msgcat::mcset cs "Color" "Barva"
-    ::msgcat::mcset cs "Delete" "Smazat"
-    ::msgcat::mcset cs "Error" "Chyba"
-    ::msgcat::mcset cs "Exit" "Konec"
-    ::msgcat::mcset cs "Green" "Zelen\341"
-    ::msgcat::mcset cs "Red" "\u010cerven\341"
-    ::msgcat::mcset cs "blue" "modr\341"
-    ::msgcat::mcset cs "green" "zelen\341"
-    ::msgcat::mcset cs "red" "\u010derven\341"
-}
-
-namespace eval ::tk {
-    ::msgcat::mcset cs "&Abort" "&P\u0159eru\u0161it"
-    ::msgcat::mcset cs "About..." "O programu..."
-    ::msgcat::mcset cs "All Files" "V\u0161echny soubory"
-    ::msgcat::mcset cs "Application Error" "Chyba programu"
-    ::msgcat::mcset cs "&Blue" "&Modr\341"
-    ::msgcat::mcset cs "&Cancel" "&Zru\u0161it"
-    ::msgcat::mcset cs "Cannot change to the directory \"%1\$s\".\nPermission denied." "Nemohu zm\u011bnit atku\341ln\355 adres\341\u0159 na \"%1\$s\".\nP\u0159\355stup odm\355tnut."
-    ::msgcat::mcset cs "Choose Directory" "V\375b\u011br adres\341\u0159e"
-    ::msgcat::mcset cs "Clear" "Smazat"
-    ::msgcat::mcset cs "Color" "Barva"
-    ::msgcat::mcset cs "Console" "Konzole"
-    ::msgcat::mcset cs "Copy" "Kop\355rovat"
-    ::msgcat::mcset cs "Cut" "Vy\u0159\355znout"
-    ::msgcat::mcset cs "Delete" "Smazat"
-    ::msgcat::mcset cs "Details >>" "Detaily >>"
-    ::msgcat::mcset cs "Directory \"%1\$s\" does not exist." "Adres\341\u0159 \"%1\$s\" neexistuje."
-    ::msgcat::mcset cs "&Directory:" "&Adres\341\u0159:"
-    ::msgcat::mcset cs "Error: %1\$s" "Chyba: %1\$s"
-    ::msgcat::mcset cs "Exit" "Konec"
-    ::msgcat::mcset cs "File \"%1\$s\" already exists.\n\n" "Soubor \"%1\$s\" ji\u017e existuje.\n\n"
-    ::msgcat::mcset cs "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Soubor \"%1\$s\" ji\u017e existuje.\nChcete jej p\u0159epsat?"
-    ::msgcat::mcset cs "File \"%1\$s\" does not exist." "Soubor \"%1\$s\" neexistuje."
-    ::msgcat::mcset cs "File &name:" "&Jm\351no souboru:"
-    ::msgcat::mcset cs "File &names:" "&Jm\351na soubor\u016f:"
-    ::msgcat::mcset cs "Files of &type:" "&Typy soubor\u016f:"
-    ::msgcat::mcset cs "Fi&les:" "Sou&bory:"
-    ::msgcat::mcset cs "&Filter" "&Filtr"
-    ::msgcat::mcset cs "Fil&ter:" "Fil&tr:"
-    ::msgcat::mcset cs "&Green" "Ze&len\341"
-    ::msgcat::mcset cs "Hi"
-    ::msgcat::mcset cs "Hide Console" "Skr\375t konsolu"
-    ::msgcat::mcset cs "&Ignore" "&Ignorovat"
-    ::msgcat::mcset cs "Invalid file name \"%1\$s\"." "\u0160patn\351 jm\351no souboru \"%1\$s\"."
-    ::msgcat::mcset cs "Log Files" "Log soubory"
-    ::msgcat::mcset cs "&No" "&Ne"
-    ::msgcat::mcset cs "&OK"
-    ::msgcat::mcset cs "Ok"
-    ::msgcat::mcset cs "Open" "Otev\u0159\355t"
-    ::msgcat::mcset cs "&Open" "&Otev\u0159\355t"
-    ::msgcat::mcset cs "Open Multiple Files" "Otev\u0159\355t v\355ce soubor\u016f"
-    ::msgcat::mcset cs "Paste" "Vlo\u017eit"
-    ::msgcat::mcset cs "Quit" "Skon\u010dit"
-    ::msgcat::mcset cs "&Red" " \u010ce&rven\341"
-    ::msgcat::mcset cs "Replace existing file?" "Nahradit st\341vaj\355c\355 soubor?"
-    ::msgcat::mcset cs "&Retry" "Z&novu"
-    ::msgcat::mcset cs "&Save" "&Ulo\u017eit"
-    ::msgcat::mcset cs "Save As" "Ulo\u017eit jako"
-    ::msgcat::mcset cs "Save To Log" "Ulo\u017eit do logu"
-    ::msgcat::mcset cs "Select Log File" "Vybrat log soubor"
-    ::msgcat::mcset cs "Select a file to source" "Vybrat soubor k nahr\341n\355"
-    ::msgcat::mcset cs "&Selection:" "&V\375b\u011br:"
-    ::msgcat::mcset cs "Skip Messages" "P\u0159esko\u010dit zpr\341vy"
-    ::msgcat::mcset cs "Source..." "Nahr\341t..."
-    ::msgcat::mcset cs "Tcl Scripts" "Tcl skripty"
-    ::msgcat::mcset cs "Tcl for Windows" "Tcl pro Windows"
-    ::msgcat::mcset cs "Text Files" "Textov\351 soubory"
-    ::msgcat::mcset cs "&Yes" "&Ano"
-    ::msgcat::mcset cs "abort" "p\u0159eru\u0161it"
-    ::msgcat::mcset cs "blue" "modr\341"
-    ::msgcat::mcset cs "cancel" "zru\u0161it"
-    ::msgcat::mcset cs "extension" "p\u0159\355pona"
-    ::msgcat::mcset cs "extensions" "p\u0159\355pony"
-    ::msgcat::mcset cs "green" "zelen\341"
-    ::msgcat::mcset cs "ignore" "ignorovat"
-    ::msgcat::mcset cs "ok"
-    ::msgcat::mcset cs "red" "\u010derven\341"
-    ::msgcat::mcset cs "retry" "znovu"
-    ::msgcat::mcset cs "yes" "ano"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/de.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/de.msg
deleted file mode 100644 (file)
index 437f2ed..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-namespace eval ::tkmsgcat_demo {
-    ::msgcat::mcset de "Application Error" "Applikationsfehler"
-    ::msgcat::mcset de "Blue" "Blau"
-    ::msgcat::mcset de "Color" "Farbe"
-    ::msgcat::mcset de "Delete" "L\u00f6schen"
-    ::msgcat::mcset de "Error" "Fehler"
-    ::msgcat::mcset de "Exit" "Ende"
-    ::msgcat::mcset de "Green" "Gr\u00fcn"
-    ::msgcat::mcset de "Red" "Rot"
-    ::msgcat::mcset de "blue" "blau"
-    ::msgcat::mcset de "green" "gr\u00fcn"
-    ::msgcat::mcset de "red" "rot"
-}
-
-namespace eval ::tk {
-    ::msgcat::mcset de "&Abort" "&Abbruch"
-    ::msgcat::mcset de "&About..." "&\u00dcber..."
-    ::msgcat::mcset de "All Files" "Alle Dateien"
-    ::msgcat::mcset de "Application Error" "Applikationsfehler"
-    ::msgcat::mcset de "&Blue" "&Blau"
-    ::msgcat::mcset de "&Cancel" "&Abbruch"
-    ::msgcat::mcset de "Cannot change to the directory \"%1\$s\".\nPermission denied." "Kann nicht in das Verzeichnis \"%1\$s\" wechseln.\nKeine Rechte vorhanden."
-    ::msgcat::mcset de "Choose Directory" "W\u00e4hle Verzeichnis"
-    ::msgcat::mcset de "&Clear" "&R\u00fccksetzen"
-    ::msgcat::mcset de "&Clear Console" "&Konsole l\u00f6schen"
-    ::msgcat::mcset de "Color" "Farbe"
-    ::msgcat::mcset de "Console" "Konsole"
-    ::msgcat::mcset de "&Copy" "&Kopieren"
-    ::msgcat::mcset de "Cu&t" "Aus&schneiden"
-    ::msgcat::mcset de "&Delete" "&L\u00f6schen"
-    ::msgcat::mcset de "Details >>"
-    ::msgcat::mcset de "Directory \"%1\$s\" does not exist." "Das Verzeichnis \"%1\$s\" existiert nicht."
-    ::msgcat::mcset de "&Directory:" "&Verzeichnis:"
-    ::msgcat::mcset de "&Edit" "&Bearbieten"
-    ::msgcat::mcset de "Error: %1\$s" "Fehler: %1\$s"
-    ::msgcat::mcset de "E&xit" "&Ende"
-    ::msgcat::mcset de "&File" "&Datei"
-    ::msgcat::mcset de "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Die Datei \"%1\$s\" ist bereits vorhanden.\nWollen sie diese Datei \u00fcberschreiben ?"
-    ::msgcat::mcset de "File \"%1\$s\" already exists.\n\n" "Die Datei \"%1\$s\" ist bereits vorhanden.\n\n"
-    ::msgcat::mcset de "File \"%1\$s\" does not exist." "Die Datei \"%1\$s\" existiert nicht."
-    ::msgcat::mcset de "File &name:" "Datei&name:"
-    ::msgcat::mcset de "File &names:" "Datei&namen:"
-    ::msgcat::mcset de "Files of &type:" "Dateien des &Typs:"
-    ::msgcat::mcset de "Fi&les:" "Dat&eien:"
-    ::msgcat::mcset de "&Filter"
-    ::msgcat::mcset de "Fil&ter:"
-    ::msgcat::mcset de "&Green" "&Gr\u00fcn"
-    ::msgcat::mcset de "&Help" "&Hilfe"
-    ::msgcat::mcset de "Hi" "Hallo"
-    ::msgcat::mcset de "&Hide Console" "&Konsole unsichtbar machen"
-    ::msgcat::mcset de "&Ignore" "&Ignorieren"
-    ::msgcat::mcset de "Invalid file name \"%1\$s\"." "Ung\u00fcltiger Dateiname \"%1\$s\"."
-    ::msgcat::mcset de "Log Files" "Protokolldatei"
-    ::msgcat::mcset de "&No" "&Nein"
-    ::msgcat::mcset de "OK"
-    ::msgcat::mcset de "Ok"
-    ::msgcat::mcset de "Open" "\u00d6ffnen"
-    ::msgcat::mcset de "&Open" "\u00d6&ffnen"
-    ::msgcat::mcset de "Open Multiple Files"
-    ::msgcat::mcset de "P&aste" "E&inf\u00fcgen"
-    ::msgcat::mcset de "&Quit" "&Beenden"
-    ::msgcat::mcset de "&Red" "&Rot"
-    ::msgcat::mcset de "Replace existing file?" "Existierende Datei ersetzen?"
-    ::msgcat::mcset de "&Retry" "&Wiederholen"
-    ::msgcat::mcset de "&Save" "&Speichern"
-    ::msgcat::mcset de "Save As" "Speichern unter"
-    ::msgcat::mcset de "Save To Log" "In Protokoll speichern"
-    ::msgcat::mcset de "Select Log File" "Protokolldatei ausw\u00e4hlen"
-    ::msgcat::mcset de "Select a file to source" "Auszuf\u00fchrende Datei ausw\u00e4hlen"
-    ::msgcat::mcset de "&Selection:" "Auswah&l:"
-    ::msgcat::mcset de "Skip Messages" "Weitere Nachrichten \u00fcberspringen"
-    ::msgcat::mcset de "&Source..." "&Ausf\u00fchren..."
-    ::msgcat::mcset de "Tcl Scripts" "Tcl-Skripte"
-    ::msgcat::mcset de "Tcl for Windows" "Tcl f\u00fcr Windows"
-    ::msgcat::mcset de "Text Files" "Textdateien"
-    ::msgcat::mcset de "&Yes" "&Ja"
-    ::msgcat::mcset de "abort" "abbrechen"
-    ::msgcat::mcset de "blue" "blau"
-    ::msgcat::mcset de "cancel" "abbrechen"
-    ::msgcat::mcset de "extension" "Erweiterung"
-    ::msgcat::mcset de "extensions" "Erweiterungen"
-    ::msgcat::mcset de "green" "gr\u00fcn"
-    ::msgcat::mcset de "ignore" "ignorieren"
-    ::msgcat::mcset de "ok"
-    ::msgcat::mcset de "red" "rot"
-    ::msgcat::mcset de "retry" "wiederholen"
-    ::msgcat::mcset de "yes" "ja"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/el.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/el.msg
deleted file mode 100644 (file)
index 1e3a539..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-namespace eval ::tkmsgcat_demo {
-    ::msgcat::mcset el "Application Error"  "\u039b\u03ac\u03b8\u03bf\u03c2 \u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2"
-    ::msgcat::mcset el "Blue"     "\u039c\u03c0\u03bb\u03b5"
-    ::msgcat::mcset el "Color"    "\u03a7\u03c1\u03ce\u03bc\u03b1"
-    ::msgcat::mcset el "Delete"   "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae"
-    ::msgcat::mcset el "Error"   "\u039b\u03ac\u03b8\u03bf\u03c2"
-    ::msgcat::mcset el "Exit"     "\u0388\u03be\u03bf\u03b4\u03bf\u03c2"
-    ::msgcat::mcset el "Green"    "\u03a0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf"
-    ::msgcat::mcset el "Red"      "\u039a\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf"
-    ::msgcat::mcset el "blue"     "\u03bc\u03c0\u03bb\u03b5"
-    ::msgcat::mcset el "green"    "\u03c0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf"
-    ::msgcat::mcset el "red"      "\u03ba\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf"
-}
-
-
-# followings are same to original file included into Tk8.5a1's widget demos. 
-
-## Messages for the Greek (Hellenic - "el") language.
-## Please report any changes/suggestions to:
-##    petasis@iit.demokritos.gr
-
-namespace eval ::tk {
-    ::msgcat::mcset el "&Abort"              "\u03a4\u03b5\u03c1\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03cc\u03c2"
-    ::msgcat::mcset el "About..."           "\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac..."
-    ::msgcat::mcset el "All Files"          "\u038c\u03bb\u03b1 \u03c4\u03b1 \u0391\u03c1\u03c7\u03b5\u03af\u03b1"
-    ::msgcat::mcset el "Application Error"  "\u039b\u03ac\u03b8\u03bf\u03c2 \u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae\u03c2"
-    ::msgcat::mcset el "&Blue"               "\u039c\u03c0\u03bb\u03b5"
-    ::msgcat::mcset el "&Cancel"             "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7"
-    ::msgcat::mcset el \
-"Cannot change to the directory \"%1\$s\".\nPermission denied." \
-"\u0394\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ae \u03ba\u03b1\u03c4\u03b1\u03bb\u03cc\u03b3\u03bf\u03c5 \u03c3\u03b5 \"%1\$s\".\n\u0397 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03b4\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9."
-    ::msgcat::mcset el "Choose Directory"   "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u039a\u03b1\u03c4\u03b1\u03bb\u03cc\u03b3\u03bf\u03c5"
-    ::msgcat::mcset el "Clear"              "\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2"
-    ::msgcat::mcset el "Color"              "\u03a7\u03c1\u03ce\u03bc\u03b1"
-    ::msgcat::mcset el "Console"            "\u039a\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1"
-    ::msgcat::mcset el "Copy"               "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae"
-    ::msgcat::mcset el "Cut"                "\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae"
-    ::msgcat::mcset el "Delete"             "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae"
-    ::msgcat::mcset el "Details >>"         "\u039b\u03b5\u03c0\u03c4\u03bf\u03bc\u03ad\u03c1\u03b5\u03b9\u03b5\u03c2 >>"
-    ::msgcat::mcset el "Directory \"%1\$s\" does not exist." \
-                                        "\u039f \u03ba\u03b1\u03c4\u03ac\u03bb\u03bf\u03b3\u03bf\u03c2 \"%1\$s\" \u03b4\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9."
-    ::msgcat::mcset el "&Directory:"         "&\u039a\u03b1\u03c4\u03ac\u03bb\u03bf\u03b3\u03bf\u03c2:"
-    ::msgcat::mcset el "Error: %1\$s"       "\u039b\u03ac\u03b8\u03bf\u03c2: %1\$s"
-    ::msgcat::mcset el "Exit"               "\u0388\u03be\u03bf\u03b4\u03bf\u03c2"
-    ::msgcat::mcset el \
-               "File \"%1\$s\" already exists.\nDo you want to overwrite it?" \
-               "\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \"%1\$s\" \u03ae\u03b4\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9.\n\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03ba\u03b1\u03bb\u03c5\u03c6\u03b8\u03b5\u03af;"
-    ::msgcat::mcset el "File \"%1\$s\" already exists.\n\n" \
-                   "\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \"%1\$s\" \u03ae\u03b4\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9.\n\n"
-    ::msgcat::mcset el "File \"%1\$s\" does not exist." \
-                   "\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \"%1\$s\" \u03b4\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9."
-    ::msgcat::mcset el "File &name:"         "\u038c&\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5:"
-    ::msgcat::mcset el "File &names:"        "\u038c&\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd:"
-    ::msgcat::mcset el "Files of &type:"     "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u03c4\u03bf\u03c5 &\u03c4\u03cd\u03c0\u03bf\u03c5:"
-    ::msgcat::mcset el "Fi&les:"             "\u0391\u03c1\u03c7\u03b5\u03af\u03b1:"
-    ::msgcat::mcset el "&Filter"             "\u03a6\u03af\u03bb\u03c4\u03c1\u03bf"
-    ::msgcat::mcset el "Fil&ter:"            "\u03a6\u03af\u03bb\u03c4\u03c1\u03bf:"
-    ::msgcat::mcset el "&Green"              "\u03a0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf"
-    ::msgcat::mcset el "Hi"                 "\u0393\u03b5\u03b9\u03b1"
-    ::msgcat::mcset el "Hide Console"       "\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03ba\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1\u03c2"
-    ::msgcat::mcset el "&Ignore"             "\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7"
-    ::msgcat::mcset el "Invalid file name \"%1\$s\"." \
-                   "\u0386\u03ba\u03c5\u03c1\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \"%1\$s\"."
-    ::msgcat::mcset el "Log Files"          "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u039a\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2"
-    ::msgcat::mcset el "&No"                 "\u038c\u03c7\u03b9"
-    ::msgcat::mcset el "&OK"                 "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9"
-    ::msgcat::mcset el "&Ok"                 "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9"
-    ::msgcat::mcset el "Open"               "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1"
-    ::msgcat::mcset el "&Open"               "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1"
-    ::msgcat::mcset el "Open Multiple Files" \
-                                        "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c0\u03bf\u03bb\u03bb\u03b1\u03c0\u03bb\u03ce\u03bd \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd"
-    ::msgcat::mcset el "Paste"              "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7"
-    ::msgcat::mcset el "Quit"               "\u0388\u03be\u03bf\u03b4\u03bf\u03c2"
-    ::msgcat::mcset el "&Red"                "\u039a\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf"
-    ::msgcat::mcset el "Replace existing file?" \
-                                        "\u0395\u03c0\u03b9\u03ba\u03ac\u03bb\u03c5\u03c8\u03b7 \u03c5\u03c0\u03ac\u03c1\u03c7\u03bf\u03bd\u03c4\u03bf\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5;"
-    ::msgcat::mcset el "&Retry"              "\u03a0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b7\u03c3\u03b5 \u03be\u03b1\u03bd\u03ac"
-    ::msgcat::mcset el "&Save"               "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7"
-    ::msgcat::mcset el "Save As"            "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03c3\u03b1\u03bd"
-    ::msgcat::mcset el "Save To Log"        "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03c3\u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2"
-    ::msgcat::mcset el "Select Log File"    "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2"
-    ::msgcat::mcset el "Select a file to source" \
-                                        "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b3\u03b9\u03b1 \u03b5\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7"
-    ::msgcat::mcset el "&Selection:"         "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae:"
-    ::msgcat::mcset el "Skip Messages"      "\u0391\u03c0\u03bf\u03c6\u03c5\u03b3\u03ae \u03bc\u03c5\u03bd\u03b7\u03bc\u03ac\u03c4\u03c9\u03bd"
-    ::msgcat::mcset el "Source..."          "\u0395\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7..."
-    ::msgcat::mcset el "Tcl Scripts"        "Tcl Scripts"
-    ::msgcat::mcset el "Tcl for Windows"    "Tcl \u03b3\u03b9\u03b1 Windows"
-    ::msgcat::mcset el "Text Files"         "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u039a\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5"
-    ::msgcat::mcset el "&Yes"                "\u039d\u03b1\u03b9"
-    ::msgcat::mcset el "abort"              "\u03c4\u03b5\u03c1\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03cc\u03c2"
-    ::msgcat::mcset el "blue"               "\u03bc\u03c0\u03bb\u03b5"
-    ::msgcat::mcset el "cancel"             "\u03b1\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7"
-    ::msgcat::mcset el "extension"          "\u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7"
-    ::msgcat::mcset el "extensions"         "\u03b5\u03c0\u03b5\u03ba\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2"
-    ::msgcat::mcset el "green"              "\u03c0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf"
-    ::msgcat::mcset el "ignore"             "\u03b1\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7"
-    ::msgcat::mcset el "ok"                 "\u03b5\u03bd\u03c4\u03ac\u03be\u03b5\u03b9"
-    ::msgcat::mcset el "red"                "\u03ba\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf"
-    ::msgcat::mcset el "retry"              "\u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b7\u03c3\u03b5 \u03be\u03b1\u03bd\u03ac"
-    ::msgcat::mcset el "yes"                "\u03bd\u03b1\u03b9"
-}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/en.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/en.msg
deleted file mode 100644 (file)
index de586d1..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-namespace eval ::tkmsgcat_demo {
-    ::msgcat::mcset en "Application Error"
-    ::msgcat::mcset en "Blue"
-    ::msgcat::mcset en "Color"
-    ::msgcat::mcset en "Delete"
-    ::msgcat::mcset en "Error"
-    ::msgcat::mcset en "Green"
-    ::msgcat::mcset en "Red"
-    ::msgcat::mcset en "blue"
-    ::msgcat::mcset en "green"
-    ::msgcat::mcset en "red"
-}
-
-namespace eval ::tk {
-    ::msgcat::mcset en "&Abort"
-    ::msgcat::mcset en "About..."
-    ::msgcat::mcset en "All Files"
-    ::msgcat::mcset en "Application Error"
-    ::msgcat::mcset en "&Blue"
-    ::msgcat::mcset en "&Cancel"
-    ::msgcat::mcset en "Cannot change to the directory \"%1\$s\".\nPermission denied."
-    ::msgcat::mcset en "Choose Directory"
-    ::msgcat::mcset en "Clear"
-    ::msgcat::mcset en "Color"
-    ::msgcat::mcset en "Console"
-    ::msgcat::mcset en "Copy"
-    ::msgcat::mcset en "Cut"
-    ::msgcat::mcset en "Delete"
-    ::msgcat::mcset en "Details >>"
-    ::msgcat::mcset en "Directory \"%1\$s\" does not exist."
-    ::msgcat::mcset en "&Directory:"
-    ::msgcat::mcset en "Error: %1\$s"
-    ::msgcat::mcset en "Exit"
-    ::msgcat::mcset en "File \"%1\$s\" already exists.\nDo you want to overwrite it?"
-    ::msgcat::mcset en "File \"%1\$s\" already exists.\n\n"
-    ::msgcat::mcset en "File \"%1\$s\" does not exist."
-    ::msgcat::mcset en "File &name:"
-    ::msgcat::mcset en "File &names:"
-    ::msgcat::mcset en "Files of &type:"
-    ::msgcat::mcset en "Fi&les:"
-    ::msgcat::mcset en "&Filter"
-    ::msgcat::mcset en "Fil&ter:"
-    ::msgcat::mcset en "&Green"
-    ::msgcat::mcset en "Hi"
-    ::msgcat::mcset en "Hide Console"
-    ::msgcat::mcset en "&Ignore"
-    ::msgcat::mcset en "Invalid file name \"%1\$s\"."
-    ::msgcat::mcset en "Log Files"
-    ::msgcat::mcset en "&No"
-    ::msgcat::mcset en "&OK"
-    ::msgcat::mcset en "Ok"
-    ::msgcat::mcset en "Open"
-    ::msgcat::mcset en "&Open"
-    ::msgcat::mcset en "Open Multiple Files"
-    ::msgcat::mcset en "Paste"
-    ::msgcat::mcset en "Quit"
-    ::msgcat::mcset en "&Red"
-    ::msgcat::mcset en "Replace existing file?"
-    ::msgcat::mcset en "&Retry"
-    ::msgcat::mcset en "&Save"
-    ::msgcat::mcset en "Save As"
-    ::msgcat::mcset en "Save To Log"
-    ::msgcat::mcset en "Select Log File"
-    ::msgcat::mcset en "Select a file to source"
-    ::msgcat::mcset en "&Selection:"
-    ::msgcat::mcset en "Skip Messages"
-    ::msgcat::mcset en "Source..."
-    ::msgcat::mcset en "Tcl Scripts"
-    ::msgcat::mcset en "Tcl for Windows"
-    ::msgcat::mcset en "Text Files"
-    ::msgcat::mcset en "&Yes"
-    ::msgcat::mcset en "abort"
-    ::msgcat::mcset en "blue"
-    ::msgcat::mcset en "cancel"
-    ::msgcat::mcset en "extension"
-    ::msgcat::mcset en "extensions"
-    ::msgcat::mcset en "green"
-    ::msgcat::mcset en "ignore"
-    ::msgcat::mcset en "ok"
-    ::msgcat::mcset en "red"
-    ::msgcat::mcset en "retry"
-    ::msgcat::mcset en "yes"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/en_gb.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/en_gb.msg
deleted file mode 100644 (file)
index 1aa5b49..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace eval ::tkmsgcat_demo {
-    ::msgcat::mcset en_gb Color Colour
-}
-
-namespace eval ::tk {
-    ::msgcat::mcset en_gb Color Colour
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/eo.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/eo.msg
deleted file mode 100644 (file)
index e683cef..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-namespace eval ::tkmsgcat_demo {
-    ::msgcat::mcset eo "Application Error" "Aplikoerraro"
-    ::msgcat::mcset eo "Blue" "Blua"
-    ::msgcat::mcset eo "Color" "Farbo"
-    ::msgcat::mcset eo "Delete" "Forprenu"
-    ::msgcat::mcset eo "Error" "Eraro"
-    ::msgcat::mcset eo "Exit" "Eliru"
-    ::msgcat::mcset eo "Green" "Verda"
-    ::msgcat::mcset eo "Red" "Rosa"
-    ::msgcat::mcset eo "blue" "blua"
-    ::msgcat::mcset eo "green" "verda"
-    ::msgcat::mcset eo "red" "ru\u011da"
-}
-
-namespace eval ::tk {
-    ::msgcat::mcset eo "&Abort" "&\u0108esigo"
-    ::msgcat::mcset eo "&About..." "Pri..."
-    ::msgcat::mcset eo "All Files" "\u0108ioj dosieroj"
-    ::msgcat::mcset eo "Application Error" "Aplikoerraro"
-    ::msgcat::mcset eo "&Blue" "&Blua"
-    ::msgcat::mcset eo "&Cancel" "&Rezignu"
-    ::msgcat::mcset eo "Cannot change to the directory \"%1\$s\".\nPermission denied." "Neeble \u0109angi al dosierulon \"%1\$s\".\nVi ne rajtas tion."
-    ::msgcat::mcset eo "Choose Directory" "Elektu Dosierujo"
-    ::msgcat::mcset eo "&Clear" "&Klaru"
-    ::msgcat::mcset eo "&Clear Console" "&Klaru konzolon"
-    ::msgcat::mcset eo "Color" "Farbo"
-    ::msgcat::mcset eo "Console" "Konzolo"
-    ::msgcat::mcset eo "&Copy" "&Kopiu"
-    ::msgcat::mcset eo "Cu&t" "&Enpo\u015digu"
-    ::msgcat::mcset eo "&Delete" "&Forprenu"
-    ::msgcat::mcset eo "Details >>" "Detaloj >>"
-    ::msgcat::mcset eo "Directory \"%1\$s\" does not exist." "La dosierujo \"%1\$s\" ne ekzistas."
-    ::msgcat::mcset eo "&Directory:" "&Dosierujo:"
-    ::msgcat::mcset eo "&Edit" "&Redaktu"
-    ::msgcat::mcset eo "Error: %1\$s" "Eraro: %1\$s"
-    ::msgcat::mcset eo "E&xit" "&Eliru"
-    ::msgcat::mcset eo "&File" "&Dosiero"
-    ::msgcat::mcset eo "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "La dosiero \"%1\$s\" jam ekzistas.\n\u0108u vi volas anstata\u00fbigi la dosieron?"
-    ::msgcat::mcset eo "File \"%1\$s\" already exists.\n\n" "La dosiero \"%1\$s\" jam egzistas. \n\n"
-    ::msgcat::mcset eo "File \"%1\$s\" does not exist." "La dosierp \"%1\$s\" ne estas."
-    ::msgcat::mcset eo "File &name:" "Dosiero&nomo:"
-    ::msgcat::mcset eo "File &names:" "Dosiero&nomoj:"
-    ::msgcat::mcset eo "Files of &type:" "Dosieroj de &Typo:"
-    ::msgcat::mcset eo "Fi&les:" "Do&sieroj:"
-    ::msgcat::mcset eo "&Filter" "&Filtrilo"
-    ::msgcat::mcset eo "Fil&ter:" "&Filtrilo:"
-    ::msgcat::mcset eo "&Green" "&Verda"
-    ::msgcat::mcset eo "&Help" "&Helpu"
-    ::msgcat::mcset eo "Hi" "Saluton"
-    ::msgcat::mcset eo "&Hide Console" "&Ka\u015du konzolon"
-    ::msgcat::mcset eo "&Ignore" "&Ignoru"
-    ::msgcat::mcset eo "Invalid file name \"%1\$s\"." "Malvalida dosieronomo \"%1\$s\"."
-    ::msgcat::mcset eo "Log Files" "Protokolo"
-    ::msgcat::mcset eo "&No" "&Ne"
-    ::msgcat::mcset eo "OK"
-    ::msgcat::mcset eo "Ok"
-    ::msgcat::mcset eo "Open" "Malfermu"
-    ::msgcat::mcset eo "&Open" "&Malfermu"
-    ::msgcat::mcset eo "Open Multiple Files" "Melfermu multan dosierojn"
-    ::msgcat::mcset eo "P&aste" "&Elpo\u015digi"
-    ::msgcat::mcset eo "&Quit" "&Finigu"
-    ::msgcat::mcset eo "&Red" "&Rosa"
-    ::msgcat::mcset eo "Replace existing file?" "\u0108u anstata\u00fbu ekzistantan dosieron?"
-    ::msgcat::mcset eo "&Retry" "&Ripetu"
-    ::msgcat::mcset eo "&Save" "&Savu"
-    ::msgcat::mcset eo "Save As" "Savu kiel"
-    ::msgcat::mcset eo "Save To Log" "Savu en protokolon"
-    ::msgcat::mcset eo "Select Log File" "Elektu prokolodosieron"
-    ::msgcat::mcset eo "Select a file to source" "Elektu dosieron por interpreti"
-    ::msgcat::mcset eo "&Selection:" "&Elekto:"
-    ::msgcat::mcset eo "Skip Messages" "transsaltu pluajn mesa\u011dojn"
-    ::msgcat::mcset eo "&Source..." "&Fontoprogramo..."
-    ::msgcat::mcset eo "Tcl Scripts" "Tcl-skriptoj"
-    ::msgcat::mcset eo "Tcl for Windows" "Tcl por vindoso"
-    ::msgcat::mcset eo "Text Files" "Tekstodosierojn"
-    ::msgcat::mcset eo "&Yes" "&Jes"
-    ::msgcat::mcset eo "abort" "\u0109esigo"
-    ::msgcat::mcset eo "blue" "blua"
-    ::msgcat::mcset eo "cancel" "rezignu"
-    ::msgcat::mcset eo "extension" "ekspansio"
-    ::msgcat::mcset eo "extensions" "ekspansioj"
-    ::msgcat::mcset eo "green" "verda"
-    ::msgcat::mcset eo "ignore" "ignorieren"
-    ::msgcat::mcset eo "red" "ru\u011da"
-    ::msgcat::mcset eo "retry" "ripetu"
-    ::msgcat::mcset eo "yes" "jes"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/es.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/es.msg
deleted file mode 100644 (file)
index ba98123..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-namespace eval ::tkmsgcat_demo {
-    ::msgcat::mcset es "Application Error" "Error de la aplicaci\u00f3n"
-    ::msgcat::mcset es "Blue" "Azul"
-    ::msgcat::mcset es "Color" "Color"
-    ::msgcat::mcset es "Delete" "Borrar"
-    ::msgcat::mcset es "Error" "Error"
-    ::msgcat::mcset es "Exit" "Salir"
-    ::msgcat::mcset es "Green" "Verde"
-    ::msgcat::mcset es "Red" "Rojo"
-    ::msgcat::mcset es "blue" "azul"
-    ::msgcat::mcset es "green" "verde"
-    ::msgcat::mcset es "red" "rojo"
-}
-
-namespace eval ::tk {
-    ::msgcat::mcset es "&Abort" "&Abortar"
-    ::msgcat::mcset es "About..." "Acerca de ..."
-    ::msgcat::mcset es "All Files" "Todos los archivos"
-    ::msgcat::mcset es "Application Error" "Error de la aplicaci\u00f3n"
-    ::msgcat::mcset es "&Blue" "&Azul"
-    ::msgcat::mcset es "&Cancel" "&Cancelar"
-    ::msgcat::mcset es "Cannot change to the directory \"%1\$s\".\nPermission denied." "No es posible acceder al directorio \"%1\$s\".\nPermiso denegado."
-    ::msgcat::mcset es "Choose Directory" "Elegir directorio"
-    ::msgcat::mcset es "Clear" "Borrar"
-    ::msgcat::mcset es "Color" "Color"
-    ::msgcat::mcset es "Console" "Consola"
-    ::msgcat::mcset es "Copy" "Copiar"
-    ::msgcat::mcset es "Cut" "Cortar"
-    ::msgcat::mcset es "Delete" "Borrar"
-    ::msgcat::mcset es "Details >>" "Detalles >>"
-    ::msgcat::mcset es "Directory \"%1\$s\" does not exist." "El directorio \"%1\$s\" no existe."
-    ::msgcat::mcset es "&Directory:" "&Directorio:"
-    ::msgcat::mcset es "Error: %1\$s" "Error: %1\$s"
-    ::msgcat::mcset es "Exit" "Salir"
-    ::msgcat::mcset es "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "El archivo \"%1\$s\" ya existe.\nDesea sobreescribirlo?"
-    ::msgcat::mcset es "File \"%1\$s\" already exists.\n\n" "El archivo \"%1\$s\" ya existe.\n\n"
-    ::msgcat::mcset es "File \"%1\$s\" does not exist." "El archivo \"%1\$s\" no existe."
-    ::msgcat::mcset es "File &name:" "&Nombre de archivo:"
-    ::msgcat::mcset es "File &names:" "&Nombres de archivo:"
-    ::msgcat::mcset es "Files of &type:" "Archivos de &tipo:"
-    ::msgcat::mcset es "Fi&les:" "&Archivos:"
-    ::msgcat::mcset es "&Filter" "&Filtro"
-    ::msgcat::mcset es "Fil&ter:" "Fil&tro:"
-    ::msgcat::mcset es "&Green" "&Verde"
-    ::msgcat::mcset es "Hi" "Hola"
-    ::msgcat::mcset es "Hide Console" "Esconder la consola"
-    ::msgcat::mcset es "&Ignore" "&Ignorar"
-    ::msgcat::mcset es "Invalid file name \"%1\$s\"." "Nombre de archivo inv\u00e1lido \"%1\$s\"."
-    ::msgcat::mcset es "Log Files" "Ficheros de traza"
-    ::msgcat::mcset es "&No" "&No"
-    ::msgcat::mcset es "&OK" "&OK"
-    ::msgcat::mcset es "Ok" "Ok"
-    ::msgcat::mcset es "Open" "Abrir"
-    ::msgcat::mcset es "&Open" "&Abrir"
-    ::msgcat::mcset es "Open Multiple Files" "Abrir m\u00faltiples archivos"
-    ::msgcat::mcset es "Paste" "Pegar"
-    ::msgcat::mcset es "Quit" "Abandonar"
-    ::msgcat::mcset es "&Red" "&Rojo"
-    ::msgcat::mcset es "Replace existing file?" "Reemplazar el archivo existente?"
-    ::msgcat::mcset es "&Retry" "&Reintentar"
-    ::msgcat::mcset es "&Save" "&Salvar"
-    ::msgcat::mcset es "Save As" "Salvar como"
-    ::msgcat::mcset es "Save To Log" "Salvar al archivo de traza"
-    ::msgcat::mcset es "Select Log File" "Elegir un archivo de traza"
-    ::msgcat::mcset es "Select a file to source" "Seleccionar un archivo a evaluar"
-    ::msgcat::mcset es "&Selection:" "&Selecci\u00f3n:"
-    ::msgcat::mcset es "Skip Messages" "Omitir los mensajes"
-    ::msgcat::mcset es "Source..." "Evaluar..."
-    ::msgcat::mcset es "Tcl Scripts" "Scripts Tcl"
-    ::msgcat::mcset es "Tcl for Windows" "Tcl para Windows"
-    ::msgcat::mcset es "Text Files" "Archivos de texto"
-    ::msgcat::mcset es "&Yes" "&S\u00ed" 
-    ::msgcat::mcset es "abort" "abortar"
-    ::msgcat::mcset es "blue" "azul"
-    ::msgcat::mcset es "cancel" "cancelar"
-    ::msgcat::mcset es "extension" "extensi\u00f3n"
-    ::msgcat::mcset es "extensions" "extensiones"
-    ::msgcat::mcset es "green" "verde"
-    ::msgcat::mcset es "ignore" "ignorar"
-    ::msgcat::mcset es "ok" "ok"
-    ::msgcat::mcset es "red" "rojo"
-    ::msgcat::mcset es "retry" "reintentar"
-    ::msgcat::mcset es "yes" "s\u00ed"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/fr.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/fr.msg
deleted file mode 100644 (file)
index ebbba48..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-namespace eval ::tkmsgcat_demo {
-    ::msgcat::mcset fr "Application Error" "Erreur d'application"
-    ::msgcat::mcset fr "Blue" "Bleu"
-    ::msgcat::mcset fr "Color" "Couleur"
-    ::msgcat::mcset fr "Delete" "Effacer"
-    ::msgcat::mcset fr "Error" "Erreur"
-    ::msgcat::mcset fr "Exit" "Quitter"
-    ::msgcat::mcset fr "Green" "Vert"
-    ::msgcat::mcset fr "Red" "Rouge"
-    ::msgcat::mcset fr "blue" "bleu"
-    ::msgcat::mcset fr "green" "vert"
-    ::msgcat::mcset fr "red" "rouge"
-}
-
-namespace eval ::tk {
-    ::msgcat::mcset fr "&Abort" "&Annuler"
-    ::msgcat::mcset fr "About..." "\u00c0 propos..."
-    ::msgcat::mcset fr "All Files" "Tous les fichiers"
-    ::msgcat::mcset fr "Application Error" "Erreur d'application"
-    ::msgcat::mcset fr "&Blue" "&Bleu"
-    ::msgcat::mcset fr "&Cancel" "&Annuler"
-    ::msgcat::mcset fr "Cannot change to the directory \"%1\$s\".\nPermission denied." "Impossible d'acc\u00e9der au r\u00e9pertoire \"%1\$s\".\nPermission refus\u00e9e."
-    ::msgcat::mcset fr "Choose Directory" "Choisir r\u00e9pertoire"
-    ::msgcat::mcset fr "Clear" "Effacer"
-    ::msgcat::mcset fr "Color" "Couleur"
-    ::msgcat::mcset fr "Console"
-    ::msgcat::mcset fr "Copy" "Copier"
-    ::msgcat::mcset fr "Cut" "Couper"
-    ::msgcat::mcset fr "Delete" "Effacer"
-    ::msgcat::mcset fr "Details >>" "D\u00e9tails >>"
-    ::msgcat::mcset fr "Directory \"%1\$s\" does not exist." "Le r\u00e9pertoire \"%1\$s\" n'existe pas."
-    ::msgcat::mcset fr "&Directory:" "&R\u00e9pertoire:"
-    ::msgcat::mcset fr "Error: %1\$s" "Erreur: %1\$s"
-    ::msgcat::mcset fr "Exit" "Quitter"
-    ::msgcat::mcset fr "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Le fichier \"%1\$s\" existe d\u00e9j\u00e0.\nVoulez-vous l'\u00e9craser?"
-    ::msgcat::mcset fr "File \"%1\$s\" already exists.\n\n" "Le fichier \"%1\$s\" existe d\u00e9j\u00e0.\n\n"
-    ::msgcat::mcset fr "File \"%1\$s\" does not exist." "Le fichier \"%1\$s\" n'existe pas."
-    ::msgcat::mcset fr "File &name:" "&Nom de fichier:"
-    ::msgcat::mcset fr "File &names:" "&Noms de fichiers:"
-    ::msgcat::mcset fr "Files of &type:" "&Type de fichiers:"
-    ::msgcat::mcset fr "Fi&les:" "Fich&iers:"
-    ::msgcat::mcset fr "&Filter" "&Filtre"
-    ::msgcat::mcset fr "Fil&ter:" "Fil&tre:"
-    ::msgcat::mcset fr "&Green" "&Vert"
-    ::msgcat::mcset fr "Hi" "Salut"
-    ::msgcat::mcset fr "Hide Console" "Cacher la Console"
-    ::msgcat::mcset fr "&Ignore" "&Ignorer"
-    ::msgcat::mcset fr "Invalid file name \"%1\$s\"." "Nom de fichier invalide \"%1\$s\"."
-    ::msgcat::mcset fr "Log Files" "Fichiers de trace"
-    ::msgcat::mcset fr "&No" "&Non"
-    ::msgcat::mcset fr "&OK"
-    ::msgcat::mcset fr "Ok"
-    ::msgcat::mcset fr "Open" "Ouvrir"
-    ::msgcat::mcset fr "&Open" "&Ouvrir"
-    ::msgcat::mcset fr "Open Multiple Files" "Ouvrir plusieurs fichiers"
-    ::msgcat::mcset fr "Paste" "Coller"
-    ::msgcat::mcset fr "Quit" "Quitter"
-    ::msgcat::mcset fr "&Red" "&Rouge"
-    ::msgcat::mcset fr "Replace existing file?" "Remplacer le fichier existant?"
-    ::msgcat::mcset fr "&Retry" "&R\u00e9-essayer"
-    ::msgcat::mcset fr "&Save" "&Sauvegarder"
-    ::msgcat::mcset fr "Save As" "Sauvegarder sous"
-    ::msgcat::mcset fr "Save To Log" "Sauvegarde au fichier de trace"
-    ::msgcat::mcset fr "Select Log File" "Choisir un fichier de trace"
-    ::msgcat::mcset fr "Select a file to source" "Choisir un fichier \u00e0 \u00e9valuer"
-    ::msgcat::mcset fr "&Selection:" "&S\u00e9lection:"
-    ::msgcat::mcset fr "Skip Messages" "Omettre les messages"
-    ::msgcat::mcset fr "Source..." "\u00c9valuer..."
-    ::msgcat::mcset fr "Tcl Scripts" "Scripts Tcl"
-    ::msgcat::mcset fr "Tcl for Windows" "Tcl pour Windows"
-    ::msgcat::mcset fr "Text Files" "Fichiers texte"
-    ::msgcat::mcset fr "&Yes" "&Oui"
-    ::msgcat::mcset fr "abort" "abandonner"
-    ::msgcat::mcset fr "blue" "bleu"
-    ::msgcat::mcset fr "cancel" "annuler"
-    ::msgcat::mcset fr "extension"
-    ::msgcat::mcset fr "extensions"
-    ::msgcat::mcset fr "green" "vert"
-    ::msgcat::mcset fr "ignore" "ignorer"
-    ::msgcat::mcset fr "ok"
-    ::msgcat::mcset fr "red" "rouge"
-    ::msgcat::mcset fr "retry" "r\u00e9essayer"
-    ::msgcat::mcset fr "yes" "oui"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/it.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/it.msg
deleted file mode 100644 (file)
index b144fcc..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-namespace eval ::tkmsgcat_demo {
-    ::msgcat::mcset it "Application Error" "Errore dell' applicazione"
-    ::msgcat::mcset it "Blue" "Blu"
-    ::msgcat::mcset it "Color" "Colore"
-    ::msgcat::mcset it "Delete" "Incolla"
-    ::msgcat::mcset it "Error" "Errore"
-    ::msgcat::mcset it "Exit" "Esci"
-    ::msgcat::mcset it "Green" "Verde"
-    ::msgcat::mcset it "Red" "Rosso"
-    ::msgcat::mcset it "blue" "blu"
-    ::msgcat::mcset it "green" "verde"
-    ::msgcat::mcset it "red" "rosso"
-}
-
-namespace eval ::tk {
-    ::msgcat::mcset it "&Abort" "&Interrompi"
-    ::msgcat::mcset it "About..." "Informazioni ..."
-    ::msgcat::mcset it "All Files" "Tutti i file"
-    ::msgcat::mcset it "Application Error" "Errore dell' applicazione"
-    ::msgcat::mcset it "&Blue" "&Blu"
-    ::msgcat::mcset it "&Cancel" "&Annulla"
-    ::msgcat::mcset it "Cannot change to the directory \"%1\$s\".\nPermission denied." "Impossibile accedere alla directory \"%1\$s\".\nPermesso negato."
-    ::msgcat::mcset it "Choose Directory" "Scegli directory"
-    ::msgcat::mcset it "Clear" "Azzera"
-    ::msgcat::mcset it "Color" "Colore"
-    ::msgcat::mcset it "Console"
-    ::msgcat::mcset it "Copy" "Copia"
-    ::msgcat::mcset it "Cut" "Taglia"
-    ::msgcat::mcset it "Delete" "Incolla"
-    ::msgcat::mcset it "Details >>" "Dettagli >>"
-    ::msgcat::mcset it "Directory \"%1\$s\" does not exist." "La directory \"%1\$s\" non esiste."
-    ::msgcat::mcset it "&Directory:"
-    ::msgcat::mcset it "Error: %1\$s" "Errore: %1\$s"
-    ::msgcat::mcset it "Exit" "Esci"
-    ::msgcat::mcset it "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Il file \"%1\$s\" esiste gi\u00e0.\nVuoi sovrascriverlo?"
-    ::msgcat::mcset it "File \"%1\$s\" already exists.\n\n" "Il file \"%1\$s\" esiste gi\u00e0.\n\n"
-    ::msgcat::mcset it "File \"%1\$s\" does not exist." "Il file \"%1\$s\" non esiste."
-    ::msgcat::mcset it "File &name:" "&Nome del file:"
-    ::msgcat::mcset it "File &names:" "&Nomi dei file:"
-    ::msgcat::mcset it "Files of &type:" "File di &tipo:"
-    ::msgcat::mcset it "Fi&les:" "Fi&le:"
-    ::msgcat::mcset it "&Filter" "&Filtro"
-    ::msgcat::mcset it "Fil&ter:" "Fil&tro:"
-    ::msgcat::mcset it "&Green" "&Verde"
-    ::msgcat::mcset it "Hi" "Salve"
-    ::msgcat::mcset it "Hide Console" "Nascondi la console"
-    ::msgcat::mcset it "&Ignore" "&Ignora"
-    ::msgcat::mcset it "Invalid file name \"%1\$s\"." "Nome di file non valido \"%1\$s\"."
-    ::msgcat::mcset it "Log Files" "File di log"
-    ::msgcat::mcset it "&No"
-    ::msgcat::mcset it "&OK"
-    ::msgcat::mcset it "Ok"
-    ::msgcat::mcset it "&Open" "A&pri"
-    ::msgcat::mcset it "Open" "Apri"
-    ::msgcat::mcset it "Open Multiple Files" "Apri file multipli"
-    ::msgcat::mcset it "Paste" "Incolla"
-    ::msgcat::mcset it "Quit" "Esci"
-    ::msgcat::mcset it "&Red" "&Rosso"
-    ::msgcat::mcset it "Replace existing file?" "Sostituisci il file esistente?"
-    ::msgcat::mcset it "&Retry" "&Riprova"
-    ::msgcat::mcset it "&Save" "&Salva"
-    ::msgcat::mcset it "Save As" "Salva come"
-    ::msgcat::mcset it "Save To Log" "Salva il log"
-    ::msgcat::mcset it "Select Log File" "Scegli un file di log"
-    ::msgcat::mcset it "Select a file to source" "Scegli un file da eseguire"
-    ::msgcat::mcset it "&Selection:" "&Selezione:"
-    ::msgcat::mcset it "Skip Messages" "Salta i messaggi"
-    ::msgcat::mcset it "Source..." "Esegui..."
-    ::msgcat::mcset it "Tcl Scripts" "Scripts Tcl"
-    ::msgcat::mcset it "Tcl for Windows" "Tcl per Windows"
-    ::msgcat::mcset it "Text Files" "File di testo"
-    ::msgcat::mcset it "&Yes" "&Si"
-    ::msgcat::mcset it "abort" "interrompi"
-    ::msgcat::mcset it "blue" "blu"
-    ::msgcat::mcset it "cancel" "annulla"
-    ::msgcat::mcset it "extension" "estensione"
-    ::msgcat::mcset it "extensions" "estensioni"
-    ::msgcat::mcset it "green" "verde"
-    ::msgcat::mcset it "ignore" "ignora"
-    ::msgcat::mcset it "ok"
-    ::msgcat::mcset it "red" "rosso"
-    ::msgcat::mcset it "retry" "riprova"
-    ::msgcat::mcset it "yes" "si"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/ja.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/ja.msg
deleted file mode 100644 (file)
index 44a2583..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-namespace eval ::tkmsgcat_demo {
-    ::msgcat::mcset ja "Application Error"  "\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30A8\u30E9\u30FC"
-    ::msgcat::mcset ja "Blue"    "\u9752"
-    ::msgcat::mcset ja "Color"   "\u80CC\u666F\u8272"
-    ::msgcat::mcset ja "Delete"  "\u6D88\u53BB"
-    ::msgcat::mcset ja "Error"   "\u30A8\u30E9\u30FC"
-    ::msgcat::mcset ja "Exit"    "\u7D42\u4E86"
-    ::msgcat::mcset ja "Green"   "\u7DD1"
-    ::msgcat::mcset ja "Red"     "\u8D64"
-    ::msgcat::mcset ja "blue"    "\u9752"
-    ::msgcat::mcset ja "green"   "\u7DD1"
-    ::msgcat::mcset ja "red"     "\u8D64"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/license.terms b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/license.terms
deleted file mode 100644 (file)
index 03ca6fc..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-This software is copyrighted by the Regents of the University of
-California, Sun Microsystems, Inc., and other parties.  The following
-terms apply to all files associated with the software unless explicitly
-disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-GOVERNMENT USE: If you are acquiring this software on behalf of the
-U.S. government, the Government shall have only "Restricted Rights"
-in the software and related documentation as defined in the Federal 
-Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
-are acquiring the software on behalf of the Department of Defense, the
-software shall be classified as "Commercial Computer Software" and the
-Government shall have only "Restricted Rights" as defined in Clause
-252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
-authors grant the U.S. Government and others acting in its behalf
-permission to use and distribute the software in accordance with the
-terms specified in this license.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/nl.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/nl.msg
deleted file mode 100644 (file)
index d9642e8..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-namespace eval ::tkmsgcat_demo {
-    ::msgcat::mcset nl "Application Error" "Toepassingsfout"
-    ::msgcat::mcset nl "Blue" "Blauw"
-    ::msgcat::mcset nl "Color" "Kleur"
-    ::msgcat::mcset nl "Delete" "Wissen"
-    ::msgcat::mcset nl "Error" "Fout"
-    ::msgcat::mcset nl "Exit" "Be\u00ebindigen"
-    ::msgcat::mcset nl "Green" "Groen"
-    ::msgcat::mcset nl "Red" "Rood"
-    ::msgcat::mcset nl "blue" "blauw"
-    ::msgcat::mcset nl "green" "groen"
-    ::msgcat::mcset nl "red" "rood"
-}
-
-namespace eval ::tk {
-    ::msgcat::mcset nl "\"%1\$s\" must be an absolute pathname" "\"%1\$s\" moet een absolute pad-naam zijn"
-    ::msgcat::mcset nl "%1\$s is not a toplevel window" "%1\$s is geen toplevel window"
-    ::msgcat::mcset nl ", or" ", of"
-    ::msgcat::mcset nl "-default, -icon, -message, -parent, -title, or -type" "-default, -icon, -message, -parent, -title, of -type"
-    ::msgcat::mcset nl "-initialdir, -mustexist, -parent, or -title" "-initialdir, -mustexist, -parent, of -title"
-    ::msgcat::mcset nl "&Abort" "&Afbreken"
-    ::msgcat::mcset nl "About..." "Over..."
-    ::msgcat::mcset nl "All Files" "Alle Bestanden"
-    ::msgcat::mcset nl "Application Error" "Toepassingsfout"
-    ::msgcat::mcset nl "&Blue" "&Blauw"
-    ::msgcat::mcset nl "&Cancel" "&Annuleren"
-    ::msgcat::mcset nl "Cannot change to the directory \"%1\$s\".\nPermission denied." "Kan niet naar map \"%1\$s\" gaan.\nU heeft hiervoor geen toestemming."
-    ::msgcat::mcset nl "Choose Directory" "Kies map"
-    ::msgcat::mcset nl "Clear" "Wissen"
-    ::msgcat::mcset nl "Clear entry, Press OK; Enter %1\$s, press OK" "Wis veld, Druk op OK; typ %1\$s in, druk op OK"
-    ::msgcat::mcset nl "&Clear Console" "&Wis Console"
-    ::msgcat::mcset nl "Color" "Kleur"
-    ::msgcat::mcset nl "Console"
-    ::msgcat::mcset nl "Copy" "Kopi\u00ebren"
-    ::msgcat::mcset nl "Cut" "Knippen"
-    ::msgcat::mcset nl "Delete" "Wissen"
-    ::msgcat::mcset nl "Details"
-    ::msgcat::mcset nl "Details >>"
-    ::msgcat::mcset nl "Directory \"%1\$s\" does not exist." "Map \"%1\$s\" bestaat niet."
-    ::msgcat::mcset nl "&Directory:" "&Map:"
-    ::msgcat::mcset nl "Edit" "Bewerken"
-    ::msgcat::mcset nl "Enter \"%1\$s\", press OK" "Typ \"%1\$s\", druk op OK"
-    ::msgcat::mcset nl "Enter \"%1\$s\", press OK, enter \"%2\$s\", press OK" "Typ \"%1\$s\", druk op OK, typ \"%2\$s\", druk op OK"
-    ::msgcat::mcset nl "Error: %1\$s" "Fout: %1\$s"
-    ::msgcat::mcset nl "Exit" "Be\u00ebindigen"
-    ::msgcat::mcset nl "File" "Bestand"
-    ::msgcat::mcset nl "File \"%1\$s\" already exists.\n\n" "Bestand \"%1\$s\" bestaat al.\n\n"
-    ::msgcat::mcset nl "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Bestand \"%1\$s\" bestaat al.\nWilt u het overschrijven?"
-    ::msgcat::mcset nl "File \"%1\$s\" does not exist." "Bestand \"%1\$s\" bestaat niet."
-    ::msgcat::mcset nl "File &name:" "Bestands&naam:"
-    ::msgcat::mcset nl "File &names:" "Bestands&namen:"
-    ::msgcat::mcset nl "Files of &type:" "Bestanden van het &type:"
-    ::msgcat::mcset nl "Fi&les:" "&Bestanden:"
-    ::msgcat::mcset nl "&Filter"
-    ::msgcat::mcset nl "Fil&ter:"
-    ::msgcat::mcset nl "&Green" "&Groen"
-    ::msgcat::mcset nl "Hi" "H\u00e9"
-    ::msgcat::mcset nl "Hide Console" "Verberg Console"
-    ::msgcat::mcset nl "&Ignore" "&Negeren"
-    ::msgcat::mcset nl "Invalid file name \"%1\$s\"." "Ongeldige bestandsnaam \"%1\$s\"."
-    ::msgcat::mcset nl "Log Files" "Log Bestanden"
-    ::msgcat::mcset nl "&No" "&Nee"
-    ::msgcat::mcset nl "&OK"
-    ::msgcat::mcset nl "Ok"
-    ::msgcat::mcset nl "&Open" "&Openen"
-    ::msgcat::mcset nl "Open" "Openen"
-    ::msgcat::mcset nl "Open Multiple Files" "Open meerdere bestanden"
-    ::msgcat::mcset nl "Paste" "Plakken"
-    ::msgcat::mcset nl "Please press %1\$s" "Druk op %1\$s, A.U.B."
-    ::msgcat::mcset nl "Please press ok" "Druk op ok, A.U.B."
-    ::msgcat::mcset nl "Press Cancel" "Druk op Annuleren"
-    ::msgcat::mcset nl "Press Ok" "Druk op Ok"
-    ::msgcat::mcset nl "Quit" "Stoppen"
-    ::msgcat::mcset nl "&Red" "&Rood"
-    ::msgcat::mcset nl "Replace existing file?" "Vervang bestaand bestand?"
-    ::msgcat::mcset nl "&Retry" "&Herhalen"
-    ::msgcat::mcset nl "&Save" "Op&slaan"
-    ::msgcat::mcset nl "Save As" "Opslaan als"
-    ::msgcat::mcset nl "Save To Log" "Opslaan naar Log"
-    ::msgcat::mcset nl "Select Log File" "Selecteer Log bestand"
-    ::msgcat::mcset nl "Select a file to source" "Selecteer bronbestand"
-    ::msgcat::mcset nl "&Selection:" "&Selectie:"
-    ::msgcat::mcset nl "Skip Messages" "Berichten overslaan"
-    ::msgcat::mcset nl "Source..." "Bron..."
-    ::msgcat::mcset nl "Tcl Scripts"
-    ::msgcat::mcset nl "Tcl for Windows" "Tcl voor Windows"
-    ::msgcat::mcset nl "Text Files" "Tekstbestanden"
-    ::msgcat::mcset nl "&Yes" "&Ja"
-    ::msgcat::mcset nl "abort" "afbreken"
-    ::msgcat::mcset nl "abort, retry, ignore, ok, cancel, no, or yes" "afbreken, opnieuw, negeren, ok, annuleren, nee, of ja"
-    ::msgcat::mcset nl "abortretryignore, ok, okcancel, retrycancel, yesno, or yesnocancel" "abortretryignore, ok, okcancel, retrycancel, yesno, of yesnocancel"
-    ::msgcat::mcset nl "bad %1\$s value \"%2\$s\": must be %3\$s" "verkeerde %1\$s waarde \"%2\$s\": moet zijn %3\$s"
-    ::msgcat::mcset nl "bad file type \"%1\$s\", should be" "verkeerd bestandstype \"%1\$s\", moet zijn"
-    ::msgcat::mcset nl "bad option \"%1\$s\": should be %2\$s" "verkeerde optie \"%1\$s\": moet zijn %2\$s"
-    ::msgcat::mcset nl "bad window path name \"%1\$s\"" "verkeerde window-padnaam \"%1\$s\""
-    ::msgcat::mcset nl "blue" "blauw"
-    ::msgcat::mcset nl "can't post %1\$s:  it isn't a descendant of %2\$s (this is a new requirement in Tk versions 3.0 and later)" "kan %1\$s niet verzenden:  het is geen afstammeling van %2\$s (dit is een nieuwe eis in Tk versies 3.0 en later)"
-    ::msgcat::mcset nl "cancel" "annuleren"
-    ::msgcat::mcset nl "default button index greater than number of buttons specified for tk_dialog" "default knop index is groter dan het aantal knoppen beschikbaar voor tk_dialog"
-    ::msgcat::mcset nl "display name to use (current one otherwise)" "te gebruiken schermnaam (anders huidige scherm)"
-    ::msgcat::mcset nl "error, info, question, or warning" "error, info, question, of warning"
-    ::msgcat::mcset nl "extension"
-    ::msgcat::mcset nl "extensions"
-    ::msgcat::mcset nl "focus group \"%1\$s\" doesn't exist" "focusgroep \"%1\$s\" bestaat niet"
-    ::msgcat::mcset nl "green" "groen"
-    ::msgcat::mcset nl "history event %1\$s"
-    ::msgcat::mcset nl "ignore" "negeren"
-    ::msgcat::mcset nl "invalid default button \"%1\$s\"" "ongeldige default knop \"%1\$s\""
-    ::msgcat::mcset nl "macType"
-    ::msgcat::mcset nl "macTypes"
-    ::msgcat::mcset nl "must specify a background color" "een achtergrondkleur is verplicht"
-    ::msgcat::mcset nl "name of the slave interpreter" "naam van de slaaf-interpreter"
-    ::msgcat::mcset nl "no winfo screen . nor env(DISPLAY)" "geen winfo scherm . noch env(DISPLAY)"
-    ::msgcat::mcset nl "ok"
-    ::msgcat::mcset nl "red" "rood"
-    ::msgcat::mcset nl "retry" "opnieuw"
-    ::msgcat::mcset nl "should contain 5 or 4 elements" "moet 4 of 5 elementen bevatten"
-    ::msgcat::mcset nl "spec"
-    ::msgcat::mcset nl "tk_chooseDirectory command" "tk_chooseDirectory opdracht"
-    ::msgcat::mcset nl "tk_chooseDirectory command, cancel gives null" "tk_chooseDirectory opdracht, annuleren geeft lege waarde"
-    ::msgcat::mcset nl "tk_chooseDirectory command, initialdir" "tk_chooseDirectory opdracht, initi\u00eble map"
-    ::msgcat::mcset nl "yes" "ja"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/pl.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/pl.msg
deleted file mode 100644 (file)
index 2699e42..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-namespace eval ::tkmsgcat_demo {
-    ::msgcat::mcset pl "Application Error" "Bl\u0105d w Programie"
-    ::msgcat::mcset pl "Blue" "Niebieski"
-    ::msgcat::mcset pl "Color" "Kolor"
-    ::msgcat::mcset pl "Delete" "Usu\u0144"
-    ::msgcat::mcset pl "Error" "B\u0142\u0105d"
-    ::msgcat::mcset pl "Exit" "Zako\u0144cz"
-    ::msgcat::mcset pl "Green" "Zielony"
-    ::msgcat::mcset pl "Red" "Czerwonz"
-    ::msgcat::mcset pl "blue" "niebieski"
-    ::msgcat::mcset pl "green" "zielony"
-    ::msgcat::mcset pl "red" "czerwony"
-}
-
-namespace eval ::tk {
-    ::msgcat::mcset pl "&Abort" "&Anuluj"
-    ::msgcat::mcset pl "&About..." "O Programie..."
-    ::msgcat::mcset pl "All Files" "Wszystkie pliki"
-    ::msgcat::mcset pl "Application Error" "Bl\u0105d w Programie"
-    ::msgcat::mcset pl "&Blue" "&Niebieski"
-    ::msgcat::mcset pl "&Cancel" "&Anuluj"
-    ::msgcat::mcset pl "Cannot change to the directory \"%1\$s\".\nPermission denied." "Katalog \"%1\$s\" nie mo\u017ce zosta\u0107 odczytany lub nie istnieje."
-    ::msgcat::mcset pl "Choose Directory" "Wybierz katalog"
-    ::msgcat::mcset pl "&Clear" "&Wyczy\u015b\u0107"
-    ::msgcat::mcset pl "&Clear Console" "&Wyczy\u015b\u0107 konsol\u0119"
-    ::msgcat::mcset pl "Color" "Kolor"
-    ::msgcat::mcset pl "Console" "Konsola"
-    ::msgcat::mcset pl "&Copy" "&Kopiuj"
-    ::msgcat::mcset pl "Cu&t" "&Wytnij"
-    ::msgcat::mcset pl "&Delete" "&Usu\u0144"
-    ::msgcat::mcset pl "Details >>" "Detale >>"
-    ::msgcat::mcset pl "Directory \"%1\$s\" does not exist." "Katalog \"%1\$s\" nie istniej."
-    ::msgcat::mcset pl "&Directory:" "&Katalog:"
-    ::msgcat::mcset pl "&Edit" "&Edytuj"
-    ::msgcat::mcset pl "Error: %1\$s" "B\u0142\u0105d: %1\$s"
-    ::msgcat::mcset pl "E&xit" "&Zako\u0144cz"
-    ::msgcat::mcset pl "&File" "&Plik"
-    ::msgcat::mcset pl "File \"%1\$s\" already exists.\nDo you want to overwrite it?" "Plik \"%1\$s\" ju\u017c istnieje.\nCzy chcesz go zast\u0105pi\u0107?"
-    ::msgcat::mcset pl "File \"%1\$s\" already exists.\n\n" "Plik \"%1\$s\" ju\u017c istnieje. \n\n"
-    ::msgcat::mcset pl "File \"%1\$s\" does not exist." "Plik \"%1\$s\" nie istnieje."
-    ::msgcat::mcset pl "File &name:" "Nazwa &pliku:"
-    ::msgcat::mcset pl "File &names:" "Nazwy &plik\u00f3w:"
-    ::msgcat::mcset pl "Files of &type:" "Pliki &typu:"
-    ::msgcat::mcset pl "Fi&les:" "Pli&ki:"
-    ::msgcat::mcset pl "&Filter" "&Filter"
-    ::msgcat::mcset pl "Fil&ter:" "&Filter:"
-    ::msgcat::mcset pl "&Green" "&Zielony"
-    ::msgcat::mcset pl "&Help" "&Pomoc"
-    ::msgcat::mcset pl "Hi" "Witaj"
-    ::msgcat::mcset pl "&Hide Console" "&Schowaj konsol\u0119"
-    ::msgcat::mcset pl "&Ignore" "&Ignoruj"
-    ::msgcat::mcset pl "Invalid file name \"%1\$s\"." "Niew\u0142a\u015bciwa nazwa pliku \"%1\$s\"."
-    ::msgcat::mcset pl "Log Files" "Protoko\u0142uj"
-    ::msgcat::mcset pl "&No" "&Nie"
-    ::msgcat::mcset pl "OK"
-    ::msgcat::mcset pl "Ok"
-    ::msgcat::mcset pl "Open" "Wczytaj"
-    ::msgcat::mcset pl "&Open" "&Wczytaj"
-    ::msgcat::mcset pl "Open Multiple Files" "Wczytuj wiele plik\u00f3w"
-    ::msgcat::mcset pl "P&aste" "&Wklej"
-    ::msgcat::mcset pl "&Quit" "&Zako\u0144cz"
-    ::msgcat::mcset pl "&Red" "&Czerwonz"
-    ::msgcat::mcset pl "Replace existing file?" "Czy zost\u0105pi\u0107 instniej\u0105cy plik?"
-    ::msgcat::mcset pl "&Retry" "&Powt\u00f3rz"
-    ::msgcat::mcset pl "&Save" "&Zapisz"
-    ::msgcat::mcset pl "Save As" "Zapisz jako"
-    ::msgcat::mcset pl "Save To Log" "Wpisz do protoko\u0142u"
-    ::msgcat::mcset pl "Select Log File" "Wybierz plik proko\u0142u"
-    ::msgcat::mcset pl "Select a file to source" "Wybierz plik do wykonania"
-    ::msgcat::mcset pl "&Selection:" "&Wyb\u00f3r:"
-    ::msgcat::mcset pl "Skip Messages" "Omi\u0144 pozosta\u0142e komunikaty"
-    ::msgcat::mcset pl "&Source..." "&Kod \u017ar\u00f3d\u0142owy..."
-    ::msgcat::mcset pl "Tcl Scripts" "Tcl-skrypty"
-    ::msgcat::mcset pl "Tcl for Windows" "Tcl dla Okienek (Windows)"
-    ::msgcat::mcset pl "Text Files" "Pliki Tekstowe"
-    ::msgcat::mcset pl "&Yes" "&Tak"
-    ::msgcat::mcset pl "abort" "zako\u0144cz"
-    ::msgcat::mcset pl "blue" "niebieski"
-    ::msgcat::mcset pl "cancel" "anuluj"
-    ::msgcat::mcset pl "extension" "rozszerzenie"
-    ::msgcat::mcset pl "extensions" "rozszerzenia"
-    ::msgcat::mcset pl "green" "zielony"
-    ::msgcat::mcset pl "ignore" "ignoruj"
-    ::msgcat::mcset pl "red" "czerwony"
-    ::msgcat::mcset pl "retry" "potw\u00f3rz"
-    ::msgcat::mcset pl "yes" "tak"
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/ru.msg b/ruby/doc/ruby/ruby-1.8.7/sample/tk/msgs_tk/ru.msg
deleted file mode 100644 (file)
index a1192b7..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-namespace eval ::tkmsgcat_demo {
-    ::msgcat::mcset ru "Application Error" "\u041e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435"
-    ::msgcat::mcset ru "Blue" " \u0413\u043e\u043b\u0443\u0431\u043e\u0439"
-    ::msgcat::mcset ru "Color" "\u0426\u0432\u0435\u0442"
-    ::msgcat::mcset ru "Delete" "\u0423\u0434\u0430\u043b\u0438\u0442\u044c"
-    ::msgcat::mcset ru "Error" "\u041e\u0448\u0438\u0431\u043a\u0430"
-    ::msgcat::mcset ru "Exit" "\u0412\u044b\u0445\u043e\u0434"
-    ::msgcat::mcset ru "Green" "\u0417\u0435\u043b\u0435\u043d\u044b\u0439"
-    ::msgcat::mcset ru "Red" "\u041a\u0440\u0430\u0441\u043d\u044b\u0439"
-    ::msgcat::mcset ru "blue" " \u0433\u043e\u043b\u0443\u0431\u043e\u0439"
-    ::msgcat::mcset ru "green" " \u0437\u0435\u043b\u0435\u043d\u044b\u0439"
-    ::msgcat::mcset ru "red" " \u043a\u0440\u0430\u0441\u043d\u044b\u0439"
-}
-
-namespace eval ::tk {
-    ::msgcat::mcset ru "&Abort" "&\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c"
-    ::msgcat::mcset ru "About..." "\u041f\u0440\u043e..."
-    ::msgcat::mcset ru "All Files" "\u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b"
-    ::msgcat::mcset ru "Application Error" "\u041e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435"
-    ::msgcat::mcset ru "&Blue" " &\u0413\u043e\u043b\u0443\u0431\u043e\u0439"
-    ::msgcat::mcset ru "&Cancel" "\u041e\u0442&\u043c\u0435\u043d\u0430"
-    ::msgcat::mcset ru "Cannot change to the directory \"%1\$s\".\nPermission denied." \
-                       "\u041d\u0435 \u043c\u043e\u0433\u0443 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \"%1\$s\".\n\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430"
-    ::msgcat::mcset ru "Choose Directory" "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433"
-    ::msgcat::mcset ru "Clear" "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c"
-    ::msgcat::mcset ru "Color" "\u0426\u0432\u0435\u0442"
-    ::msgcat::mcset ru "Console" "\u041a\u043e\u043d\u0441\u043e\u043b\u044c"
-    ::msgcat::mcset ru "Copy" "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c"
-    ::msgcat::mcset ru "Cut" "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c"
-    ::msgcat::mcset ru "Delete" "\u0423\u0434\u0430\u043b\u0438\u0442\u044c"
-    ::msgcat::mcset ru "Details >>" "\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 >>"
-    ::msgcat::mcset ru "Directory \"%1\$s\" does not exist." "\u041a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \"%1\$s\" \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442."
-    ::msgcat::mcset ru "&Directory:" "&\u041a\u0430\u0442\u0430\u043b\u043e\u0433:"
-    ::msgcat::mcset ru "Error: %1\$s" "\u041e\u0448\u0438\u0431\u043a\u0430: %1\$s" 
-    ::msgcat::mcset ru "Exit" "\u0412\u044b\u0445\u043e\u0434"
-    ::msgcat::mcset ru "File \"%1\$s\" already exists.\nDo you want to overwrite it?" \
-                           "\u0424\u0430\u0439\u043b \"%1\$s\" \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.\n\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e?"
-    ::msgcat::mcset ru "File \"%1\$s\" already exists.\n\n" "\u0424\u0430\u0439\u043b \"%1\$s\" \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.\n\n"
-    ::msgcat::mcset ru "File \"%1\$s\" does not exist." "\u0424\u0430\u0439\u043b \"%1\$s\" \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d."
-    ::msgcat::mcset ru "File &name:" "&\u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430:"
-    ::msgcat::mcset ru "File &names:" "&\u0418\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432:"
-    ::msgcat::mcset ru "Files of &type:" "&\u0422\u0438\u043f \u0444\u0430\u0439\u043b\u043e\u0432:"
-    ::msgcat::mcset ru "Fi&les:" "\u0424\u0430\u0439&\u043b\u044b:"
-    ::msgcat::mcset ru "&Filter" "&\u0424\u0438\u043b\u044c\u0442\u0440"
-    ::msgcat::mcset ru "Fil&ter:" "\u0424\u0438\u043b\u044c&\u0442\u0440:"
-    ::msgcat::mcset ru "&Green" " &\u0417\u0435\u043b\u0435\u043d\u044b\u0439"
-    ::msgcat::mcset ru "Hi" "\u041f\u0440\u0438\u0432\u0435\u0442"
-    ::msgcat::mcset ru "Hide Console" "\u0421\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c"
-    ::msgcat::mcset ru "&Ignore" "&\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c"
-    ::msgcat::mcset ru "Invalid file name \"%1\$s\"." "\u041d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \"%1\$s\"." 
-    ::msgcat::mcset ru "Log Files" "\u0424\u0430\u0439\u043b\u044b \u0436\u0443\u0440\u043d\u0430\u043b\u0430"
-    ::msgcat::mcset ru "&No" "&\u041d\u0435\u0442"
-    ::msgcat::mcset ru "&OK" "&\u041e\u041a"
-    ::msgcat::mcset ru "Ok" "\u0414\u0430"
-    ::msgcat::mcset ru "Open" "\u041e\u0442\u043a\u0440\u044b\u0442\u044c"
-    ::msgcat::mcset ru "&Open" "&\u041e\u0442\u043a\u0440\u044b\u0442\u044c"
-    ::msgcat::mcset ru "Open Multiple Files" "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432"
-    ::msgcat::mcset ru "Paste" "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c"
-    ::msgcat::mcset ru "Quit" "\u0412\u044b\u0445\u043e\u0434"
-    ::msgcat::mcset ru "&Red" " &\u041a\u0440\u0430\u0441\u043d\u044b\u0439"
-    ::msgcat::mcset ru "Replace existing file?" "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b?"
-    ::msgcat::mcset ru "&Retry" "&\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c"
-    ::msgcat::mcset ru "&Save" "&\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c"
-    ::msgcat::mcset ru "Save As" "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u0430\u043a"
-    ::msgcat::mcset ru "Save To Log" "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0436\u0443\u0440\u043d\u0430\u043b"
-    ::msgcat::mcset ru "Select Log File" "\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0436\u0443\u0440\u043d\u0430\u043b"
-    ::msgcat::mcset ru "Select a file to source" "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u0438"
-    ::msgcat::mcset ru "&Selection:" "&Selection:"
-    ::msgcat::mcset ru "Skip Messages" "\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f"
-    ::msgcat::mcset ru "Source..." "\u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b..."
-    ::msgcat::mcset ru "Tcl Scripts" "\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 TCL"
-    ::msgcat::mcset ru "Tcl for Windows" "TCL \u0434\u043b\u044f Windows"
-    ::msgcat::mcset ru "Text Files" "\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b"
-    ::msgcat::mcset ru "&Yes" "&\u0414\u0430"
-    ::msgcat::mcset ru "abort" "\u043e\u0442\u043c\u0435\u043d\u0430"
-    ::msgcat::mcset ru "blue" " \u0433\u043e\u043b\u0443\u0431\u043e\u0439"
-    ::msgcat::mcset ru "cancel" "\u043e\u0442\u043c\u0435\u043d\u0430"
-    ::msgcat::mcset ru "extension" "\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435"
-    ::msgcat::mcset ru "extensions" "\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f"
-    ::msgcat::mcset ru "green" " \u0437\u0435\u043b\u0435\u043d\u044b\u0439"
-    ::msgcat::mcset ru "ignore" "\u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c"
-    ::msgcat::mcset ru "ok" "\u043e\u043a"
-    ::msgcat::mcset ru "red" " \u043a\u0440\u0430\u0441\u043d\u044b\u0439"
-    ::msgcat::mcset ru "retry" "\u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c"
-    ::msgcat::mcset ru "yes" "\u0434\u0430"
-}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/multi-ip_sample.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/multi-ip_sample.rb
deleted file mode 100644 (file)
index 8d6e1bc..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/bin/env ruby
-# This script is a sample of MultiTkIp class
-
-require "multi-tk"
-
-# create slave interpreters
-trusted_slave = MultiTkIp.new_slave
-safe_slave1   = MultiTkIp.new_safeTk
-safe_slave2   = MultiTkIp.new_safeTk('fill'=>:none, 'expand'=>false)
-#safe_slave2   = MultiTkIp.new_safeTk('fill'=>:none)
-#safe_slave2   = MultiTkIp.new_safeTk('expand'=>false)
-
-cmd = Proc.new{|txt|
-  #####################
-  ## from TkTimer2.rb
-
-  if TkCore::INTERP.safe?
-    # safeTk doesn't have permission to call 'wm' command
-  else
-    root = TkRoot.new(:title=>'timer sample')
-  end
-
-  label = TkLabel.new(:parent=>root, :relief=>:raised, :width=>10) \
-                  .pack(:side=>:bottom, :fill=>:both)
-
-  tick = proc{|aobj|
-    cnt = aobj.return_value + 5
-    label.text format("%d.%02d", *(cnt.divmod(100)))
-    cnt
-  }
-
-  timer = TkTimer.new(50, -1, tick).start(0, proc{ label.text('0.00'); 0 })
-
-=begin
-  TkButton.new(:text=>'Start') {
-    command proc{ timer.continue unless timer.running? }
-    pack(:side=>:left, :fill=>:both, :expand=>true)
-  }
-  TkButton.new(:text=>'Restart') {
-    command proc{ timer.restart(0, proc{ label.text('0.00'); 0 }) }
-    pack('side'=>'right','fill'=>'both','expand'=>'yes')
-  }
-  TkButton.new(:text=>'Stop') {
-    command proc{ timer.stop if timer.running? }
-    pack('side'=>'right','fill'=>'both','expand'=>'yes')
-  }
-=end
-  b_start = TkButton.new(:text=>'Start', :state=>:disabled) {
-    pack(:side=>:left, :fill=>:both, :expand=>true)
-  }
-  b_stop  = TkButton.new(:text=>'Stop', :state=>:normal) {
-    pack('side'=>'left', 'fill'=>'both', 'expand'=>'yes')
-  }
-
-  b_start.command {
-    timer.continue
-    b_stop.state(:normal)
-    b_start.state(:disabled)
-  }
-
-  b_stop.command {
-    timer.stop
-    b_start.state(:normal)
-    b_stop.state(:disabled)
-  }
-
-  TkButton.new(:text=>'Reset', :state=>:normal) {
-    command { timer.reset }
-    pack('side'=>'right', 'fill'=>'both', 'expand'=>'yes')
-  }
-
-  ev_quit = TkVirtualEvent.new('Control-c', 'Control-q')
-  Tk.root.bind(ev_quit, proc{Tk.exit}).focus
-}
-
-# call on the default master interpreter
-trusted_slave.eval_proc(cmd, 'trusted')  # label -> .w00012
-safe_slave1.eval_proc(cmd, 'safe1')      # label -> .w00016
-safe_slave2.eval_proc(cmd, 'safe2')      # label -> .w00020
-cmd.call('master')                       # label -> .w00024
-
-#second_master = MultiTkIp.new(&cmd)
-
-TkTimer.new(2000, -1, proc{p ['safe1', safe_slave1.deleted?]}).start
-TkTimer.new(2000, -1, proc{p ['safe2', safe_slave2.deleted?]}).start
-TkTimer.new(2000, -1, proc{p ['trusted', trusted_slave.deleted?]}).start
-
-TkTimer.new(5000, 1, 
-            proc{
-              safe_slave1.eval_proc{Tk.root.destroy}
-              safe_slave1.delete
-              print "*** The safe_slave1 is deleted by the timer.\n"
-            }).start
-
-TkTimer.new(10000, 1, 
-            proc{
-              trusted_slave.eval_proc{Tk.root.destroy}
-              trusted_slave.delete
-              print "*** The trusted_slave is deleted by the timer.\n"
-            }).start
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/multi-ip_sample2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/multi-ip_sample2.rb
deleted file mode 100644 (file)
index f4a45d8..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-require 'multi-tk.rb'
-
-th = Thread.new{Tk.mainloop}
-
-TkLabel.new(:text=>'this is a primary master').pack
-
-ip1 = MultiTkIp.new_slave(:safe=>1)
-ip2 = MultiTkIp.new_slave(:safe=>2)
-
-cmd = proc{|s|
-  require 'tk'
-
-  TkButton.new(:text=>'b1: p self', :command=>proc{p self}).pack(:fill=>:x)
-  sleep s
-  TkButton.new(:text=>'b2: p $SAFE', :command=>proc{p $SAFE}).pack(:fill=>:x)
-  sleep s
-  TkButton.new(:text=>'b3: p MultiTkIp.ip_name', 
-               :command=>proc{p MultiTkIp.ip_name}).pack(:fill=>:x)
-  sleep s
-  TkButton.new(:text=>'EXIT', :command=>proc{exit}).pack(:fill=>:x)
-
-  Tk.mainloop
-}
-
-Thread.new{ip1.eval_proc(cmd, 1.1)}
-Thread.new{ip2.eval_proc(cmd, 0.3)}
-cmd.call(0.7)
-
-th.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/optobj_sample.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/optobj_sample.rb
deleted file mode 100644 (file)
index cafacbd..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env ruby
-#
-#  sample script of Tk::OptionObj
-#
-require "tk"
-
-optobj = Tk::OptionObj.new('foreground'=>'red', 'background'=>'black')
-
-f = TkFrame.new.pack(:side=>:left, :anchor=>:n, :padx=>5, :pady=>30)
-
-b1 = TkButton.new(f, :text=>'AAA').pack(:fill=>:x)
-b2 = TkButton.new(f, :text=>'BBB').pack(:fill=>:x)
-b3 = TkButton.new(f, :text=>'CCC').pack(:fill=>:x)
-
-optobj.assign( b1, 
-              [ b2, 'configure', 
-                { 'foreground'=>'background', 
-                  'background'=>'foreground' } ], 
-              [ b3, nil, 
-                { 'foreground'=>'background', 
-                  'activeforeground'=>nil, 
-                  'background'=>['foreground', 'activeforeground'] } ] )
-
-optobj.update('activeforeground'=>'yellow')
-
-TkButton.new(f){
-  configure( optobj.assign(self) + {:text=>'DDD'} )
-  pack(:fill=>:x)
-}
-
-TkButton.new(f){
-  configure( optobj.assign([self, nil, 
-                             {'foreground'=>'activeforeground', 
-                              'background'=>'foreground', 
-                              'activeforeground'=>'background'}]) \
-             + {:text=>'EEE', :relief=>:groove, :borderwidth=>5} )
-  pack(:fill=>:x)
-}
-
-optobj.notify  # To apply the convert_key ( 3rd element of widget info 
-               # (that is, {'foreground'=>'activeforeground', ,,, } ) 
-               # of the 'EEE' button 
-
-TkButton.new(f, :text=>'toggle', 
-             :command=>proc{
-               fg = optobj['foreground']
-               bg = optobj['background']
-               optobj.configure('foreground'=>bg, 'background'=>fg)
-             }).pack(:fill=>:x, :pady=>10)
-
-TkButton.new(f, :text=>'exit', 
-                :command=>proc{exit}).pack(:fill=>:x, :pady=>10)
-
-TkFrame.new{|f|
-  pack(:side=>:right, :expand=>true, :fill=>:both)
-  TkLabel.new(f, :text=>'source::').pack(:anchor=>:w)
-  TkFrame.new(f){|ff|
-    TkText.new(ff){
-      yscrollbar(TkScrollbar.new(ff){pack(:fill=>:y, :side=>:right)})
-      insert('end', File.read(__FILE__))
-      pack(:side=>:left, :expand=>true, :fill=>:both)
-    }
-    pack(:expand=>true, :fill=>:both)
-  }
-}
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/propagate.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/propagate.rb
deleted file mode 100644 (file)
index 800cef5..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-
-TkLabel.new(:text=>"Please click the bottom frame").pack
-
-f = TkFrame.new(:width=>400, :height=>100, :background=>'yellow', 
-                :relief=>'ridge', :borderwidth=>5).pack
-
-# TkPack.propagate(f, false) # <== important!!
-f.pack_propagate(false)      # <== important!!
-
-list = (1..3).collect{|n|
-  TkButton.new(f, :text=>"button#{'-X'*n}"){
-    command proc{
-      puts "button#{'-X'*n}"
-      self.unpack
-    }
-  }
-}
-
-list.unshift(nil)
-
-f.bind('1', proc{
-         w = list.shift
-         w.unpack if w
-         list.push(w)
-         list[0].pack(:expand=>true, :anchor=>:center) if list[0]
-       })
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/remote-ip_sample.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/remote-ip_sample.rb
deleted file mode 100644 (file)
index 3696a20..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env ruby
-require 'remote-tk'
-
-puts <<EOM
-This sample controls the other Tk interpreter (Ruby/Tk, Tcl/Tk, and so on)
-which running on the other process. For this purpose, Ruby/Tk uses Tcl/Tk's 
-'send' command. Availability of the command depends on your GUI environment. 
-If this script doesn't work, please check your environment (see Tcl/Tk FAQ).
-EOM
-#'
-
-unless (wish = TkWinfo.interps.find{|ip| ip =~ /^wish/})
-  puts ''
-  puts 'Please start "wish" (Tcl/Tk shell) before running this sample script.'
-  exit 1
-end
-
-ip = RemoteTkIp.new(wish)
-ip.eval_proc{TkButton.new(:command=>proc{puts 'This procesure is on the controller-ip (Ruby/Tk)'}, :text=>'print on Ruby/Tk (controller-ip)').pack(:fill=>:x)}
-ip.eval_proc{TkButton.new(:command=>'puts {This procesure is on the remote-ip (wish)}', :text=>'print on wish (remote-ip)').pack(:fill=>:x)}
-
-# If your remote-ip is Ruby/Tk, you can control the remote Ruby by 
-# 'ruby' or 'ruby_eval' or 'ruby_cmd' on the Tk interpreter. 
-if ip.is_rubytk?
-  ip.eval_proc{TkButton.new(:command=>'ruby {p 111; p Array.new(3,"ruby")}', :text=>'ruby cmd on the remote-ip').pack(:fill=>:x)}
-end
-
-ip.eval_proc{TkButton.new(:command=>'exit', :text=>'QUIT').pack(:fill=>:x)}
-
-TkButton.new(:command=>proc{exit}, :text=>'QUIT', 
-             :padx=>10, :pady=>7).pack(:padx=>10, :pady=>7)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/remote-ip_sample2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/remote-ip_sample2.rb
deleted file mode 100644 (file)
index e12b2a9..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'remote-tk'
-
-# start sub-process
-ip_name = 'remote_ip'
-ip_list = TkWinfo.interps
-fork{
-  exec "/usr/bin/env ruby -r tk -e \"Tk.appname('#{ip_name}');Tk.mainloop\""
-}
-sleep 1 until (app = (TkWinfo.interps - ip_list)[0]) && app =~ /^#{ip_name}/
-p TkWinfo.interps
-
-# create RemoteTkIp object
-ip = RemoteTkIp.new(app)
-
-# setup remote-ip window
-btns = []
-ip.eval_proc{
-  btns << 
-    TkButton.new(:command=>proc{
-                   puts 'This procesure is on the controller-ip (Ruby-side)'
-                 }, 
-                 :text=>'print on controller-ip (Ruby-side)').pack(:fill=>:x)
-
-  btns << 
-    TkButton.new(:command=>
-                   'puts {This procesure is on the remote-ip (Tk-side)}',
-                 :text=>'print on remote-ip (Tk-side)').pack(:fill=>:x)
-
-  btns << 
-    TkButton.new(:command=>
-                   'ruby {
-                     puts "This procedure is on the remote-ip (Ruby-side)"
-                     p Array.new(3,"ruby")
-                    }', 
-                 :text=>'ruby cmd on the remote-ip').pack(:fill=>:x)
-
-  TkButton.new(:command=>'exit', :text=>'QUIT').pack(:fill=>:x)
-}
-
-# setup controller-ip window
-btns.each_with_index{|btn, idx|
-  # The scope of the eval-block of 'eval_proc' method is different from 
-  # the enternal. If you want to pass local values to the eval-block, 
-  # use arguments of eval_proc method. They are passed to block-arguments.
-  TkButton.new(:command=>proc{ip.eval_proc(btn){|b| b.flash}}, 
-               :text=>"flash button-#{idx}", 
-               :padx=>10).pack(:padx=>10, :pady=>2)
-}
-
-TkButton.new(:command=>proc{exit}, :text=>'QUIT', 
-             :padx=>10, :pady=>7).pack(:padx=>10, :pady=>7)
-
-# start eventloop
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/resource.en b/ruby/doc/ruby/ruby-1.8.7/sample/tk/resource.en
deleted file mode 100644 (file)
index 39b4013..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-!
-!  see Tcl/Tk's "options" manual for "Database Name" and "Database Class"
-!
-*BtnFrame.borderWidth: 5
-*BtnFrame.relief: ridge
-*BtnFrame.Button.background: wheat
-*BtnFrame.Button.foreground: red
-*hello.text: HELLO
-*quit.text: QUIT
-*BTN_CMD.show_msg: {|arg| print "($SAFE=#{$SAFE}) ";\
-                          print "Hello!! This is a sample of #{arg}.";\
-                          print "(<<< $SAFE=#{$SAFE})\n"}
-*BTN_CMD.bye_msg:  {print "($SAFE=#{$SAFE} >>>) Good-bye¡¥(<<< $SAFE=#{$SAFE})\n"}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/resource.ja b/ruby/doc/ruby/ruby-1.8.7/sample/tk/resource.ja
deleted file mode 100644 (file)
index a61390f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-!
-!  see Tcl/Tk's "options" manual for "Database Name" and "Database Class"
-!
-*BtnFrame.borderWidth: 5
-*BtnFrame.relief: ridge
-*BtnFrame.Button.background: wheat
-*BtnFrame.Button.foreground: red
-*hello.text: ¤³¤ó¤Ë¤Á¤Ï
-*quit.text: ½ªÎ»
-*BTN_CMD.show_msg: {|arg| print "($SAFE=#{$SAFE} >>>) ";\
-                          print "¤³¤ó¤Ë¤Á¤Ï¡ª¡ª #{arg} ¤Î¥µ¥ó¥×¥ë¤Ç¤¹¡¥";\
-                          print "(<<< $SAFE=#{$SAFE})\n"}
-*BTN_CMD.bye_msg:  {print "($SAFE=#{$SAFE} >>>) ¤µ¤è¤¦¤Ê¤é¡¥(<<< $SAFE=#{$SAFE})\n"}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/safe-tk.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/safe-tk.rb
deleted file mode 100644 (file)
index e228969..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/usr/bin/env ruby
-# This script is a sample of MultiTkIp class
-
-require "multi-tk"
-
-###############################
-
-TkLabel.new(:text=>'This is the Default Master Ipnterpreter').pack(:padx=>5, :pady=>3)
-TkButton.new(:text=>'QUIT', :command=>proc{exit}).pack(:pady=>3)
-TkFrame.new(:borderwidth=>2, :height=>3, 
-            :relief=>:sunken).pack(:fill=>:x, :expand=>true,
-                                   :padx=>10, :pady=>7)
-
-###############################
-
-puts "---- create a safe slave IP with Ruby's safe-level == 1 ----------"
-ip = MultiTkIp.new_safe_slave(1)
-
-puts "\n---- create procs ----------"
-puts 'x = proc{p [\'proc x\', "$SAFE==#{$SAFE}"]; exit}'
-x = proc{p ['proc x', "$SAFE==#{$SAFE}"]; exit}
-TkLabel.new(:text=>'x = proc{p [\'proc x\', "$SAFE==#{$SAFE}"]; exit}', 
-            :anchor=>:w).pack(:fill=>:x)
-
-puts 'y = proc{|label| p [\'proc y\', "$SAFE==#{$SAFE}", label]; label.text($SAFE)}'
-y = proc{|label| p ['proc y', "$SAFE==#{$SAFE}", label]; label.text($SAFE)}
-TkLabel.new(:text=>'y = proc{|label| p [\'proc y\', "$SAFE==#{$SAFE}", label]; label.text($SAFE)}', 
-            :anchor=>:w).pack(:fill=>:x)
-
-puts 'z = proc{p [\'proc z\', "$SAFE==#{$SAFE}"]; exit}'
-z = proc{p ['proc z', "$SAFE==#{$SAFE}"]; exit}
-TkLabel.new(:text=>'z = proc{p [\'proc z\', "$SAFE==#{$SAFE}"]; exit}', 
-            :anchor=>:w).pack(:fill=>:x)
-
-puts "\n---- call 1st eval_proc ----------"
-print 'lbl = '
-p lbl = ip.eval_proc{
-  TkLabel.new(:text=>"1st eval_proc : $SAFE == #{$SAFE}").pack
-
-  f = TkFrame.new.pack
-  TkLabel.new(f, :text=>"$SAFE == ").pack(:side=>:left)
-  # TkLabel.new(f, :text=>" (<-- 'lbl' widget is here)").pack(:side=>:right)
-  l = TkLabel.new(f).pack(:side=>:right)
-
-  TkButton.new(:text=>':command=>proc{l.text($SAFE)}', 
-               :command=>proc{l.text($SAFE)}).pack(:fill=>:x, :padx=>5)
-  TkButton.new(:text=>':command=>x', :command=>x).pack(:fill=>:x, :padx=>5)
-  TkButton.new(:text=>':command=>proc{exit}', 
-               :command=>proc{exit}).pack(:fill=>:x, :padx=>5)
-  TkFrame.new(:borderwidth=>2, :height=>3, 
-              :relief=>:sunken).pack(:fill=>:x, :expand=>true,
-                                     :padx=>10, :pady=>7)
-  l # return the label widget
-}
-
-puts "\n---- change the safe slave IP's safe-level ==> 3 ----------"
-ip.safe_level = 3
-
-puts "\n---- call 2nd eval_proc ----------"
-p ip.eval_proc(proc{
-                 TkLabel.new(:text=>"2nd eval_proc : $SAFE == #{$SAFE}").pack
-                 f = TkFrame.new.pack
-                 TkLabel.new(f, :text=>"$SAFE == ").pack(:side=>:left)
-                 l = TkLabel.new(f, :text=>$SAFE).pack(:side=>:right)
-                 TkButton.new(:text=>':command=>proc{l.text($SAFE)}', 
-                              :command=>proc{l.text($SAFE)}).pack(:fill=>:x, 
-                                                                  :padx=>5)
-                 TkButton.new(:text=>':command=>proc{y.call(l)}', 
-                              :command=>proc{y.call(l)}).pack(:fill=>:x, 
-                                                              :padx=>5)
-                 TkButton.new(:text=>':command=>proc{Thread.new(l, &y).value}',
-                              :command=>proc{
-                                Thread.new(l, &y).value
-                              }).pack(:fill=>:x, :padx=>5)
-                 TkButton.new(:text=>':command=>proc{z.call}', 
-                              :command=>proc{z.call}).pack(:fill=>:x, :padx=>5)
-                 TkFrame.new(:borderwidth=>2, :height=>3, 
-                             :relief=>:sunken).pack(:fill=>:x, :expand=>true,
-                                                    :padx=>10, :pady=>7)
-               })
-
-puts "\n---- call 1st and 2nd eval_str ----------"
-p bind = ip.eval_str('
-  TkLabel.new(:text=>"1st and 2nd eval_str : $SAFE == #{$SAFE}").pack
-  f = TkFrame.new.pack
-  TkLabel.new(f, :text=>"$SAFE == ").pack(:side=>:left)
-  l = TkLabel.new(f, :text=>$SAFE).pack(:side=>:right)
-  TkButton.new(:text=>":command=>proc{y.call(l)}", 
-               :command=>proc{y.call(l)}).pack(:fill=>:x, :padx=>5)
-  binding
-', binding)
-
-p ip.eval_str("
-  TkButton.new(:text=>':command=>proc{ l.text = $SAFE }', 
-               :command=>proc{ l.text = $SAFE }).pack(:fill=>:x, :padx=>5)
-  TkFrame.new(:borderwidth=>2, :height=>3, 
-              :relief=>:sunken).pack(:fill=>:x, :expand=>true,
-                                     :padx=>10, :pady=>7)
-", bind)
-
-puts "\n---- change the safe slave IP's safe-level ==> 4 ----------"
-ip.safe_level = 4
-
-puts "\n---- call 3rd and 4th eval_proc ----------"
-p ip.eval_proc{
-  TkLabel.new(:text=>"3rd and 4th eval_proc : $SAFE == #{$SAFE}").pack
-}
-p ip.eval_proc{
-  TkButton.new(:text=>':command=>proc{ lbl.text = $SAFE }', 
-               :command=>proc{ lbl.text = $SAFE }).pack(:fill=>:x, :padx=>5)
-}
-
-puts "\n---- start event-loop ( current $SAFE == #{$SAFE} ) ----------"
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/buttonbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/buttonbox.rb
deleted file mode 100644 (file)
index 2b7cd45..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-# sample 1
-p bb1 = Tk::Iwidgets::Buttonbox.new
-p bb1.add('Yes',   :text=>'Yes',   :command=>proc{puts 'Yes'})
-p bb1.add('No',    :text=>'No',    :command=>proc{puts 'No'})
-p bb1.add('Maybe', :text=>'Maybe', :command=>proc{puts 'Maybe'})
-bb1.default('Yes')
-bb1.pack(:expand=>true, :fill=>:both, :pady=>5)
-print "\n"
-
-# sample 2
-p bb2 = Tk::Iwidgets::Buttonbox.new
-p btn1 = bb2.add(:text=>'Yes',   :command=>proc{puts 'Yes'})
-p btn2 = bb2.add(:text=>'No',    :command=>proc{puts 'No'})
-p btn3 = bb2.add(:text=>'Maybe', :command=>proc{puts 'Maybe'})
-bb2.default(btn1)
-bb2.pack(:expand=>true, :fill=>:both, :pady=>5)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/calendar.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/calendar.rb
deleted file mode 100644 (file)
index 4dd929c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Calendar.new(:command=>proc{|arg| puts(arg.date)}, 
-                           :weekendbackground=>'mistyrose', 
-                           :weekdaybackground=>'ghostwhite', 
-                           :outline=>'black', :startday=>'wednesday', 
-                           :days=>%w(We Th Fr Sa Su Mo Tu)).pack
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/canvasprintbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/canvasprintbox.rb
deleted file mode 100644 (file)
index c7c0430..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Canvasprintbox.new(:orient=>:landscape, :stretch=>1) \
-  .pack(:padx=>10, :pady=>10, :fill=>:both, :expand=>true)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/canvasprintdialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/canvasprintdialog.rb
deleted file mode 100644 (file)
index ea8d63e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Canvasprintdialog.new.activate
-
-Tk.mainloop
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/checkbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/checkbox.rb
deleted file mode 100644 (file)
index bae0eba..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-cb = Tk::Iwidgets::Checkbox.new
-cb.add('bold',      :text=>'Bold')
-cb.add('italic',    :text=>'Italic')
-cb.add('underline', :text=>'Underline')
-cb.select('underline')
-cb.pack(:expand=>true, :fill=>:both, :padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/combobox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/combobox.rb
deleted file mode 100644 (file)
index ec9c7a1..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-#
-# Non-editable Dropdown Combobox
-#
-cb1 = Tk::Iwidgets::Combobox.new(:labeltext=>'Month:', 
-                                 :selectioncommand=>proc{
-                                   puts(cb1.get_curselection)
-                                 }, 
-                                 :editable=>false, :listheight=>185, 
-                                 :popupcursor=>'hand1')
-
-cb1.insert_list('end', *%w(Jan Feb Mar Apr May June Jul Aug Sept Oct Nov Dec))
-
-
-#
-# Editable Dropdown Combobox
-#
-cb2 = Tk::Iwidgets::Combobox.new(:labeltext=>'Operating System:', 
-                                 :selectioncommand=>proc{
-                                   puts(cb2.get_curselection)
-                                 })
-
-cb2.insert_list('end', *%w(Linux HP-UX SunOS Solaris Irix))
-cb2.insert_entry('end', 'L')
-
-cb1.pack(:padx=>10, :pady=>10, :fill=>:x)
-cb2.pack(:padx=>10, :pady=>10, :fill=>:x)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/dateentry.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/dateentry.rb
deleted file mode 100644 (file)
index 5727879..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Dateentry.new.pack
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/datefield.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/datefield.rb
deleted file mode 100644 (file)
index 12d4982..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-df = Tk::Iwidgets::Datefield.new(:command=>proc{puts(df.get)})
-df.pack(:fill=>:x, :expand=>true, :padx=>10,  :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/dialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/dialog.rb
deleted file mode 100644 (file)
index 3449cd4..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Thread.new{Tk.mainloop}
-
-d = Tk::Iwidgets::Dialog.new(:modality=>:application)
-
-d.buttonconfigure('OK', :command=>proc{puts 'OK'; d.deactivate true})
-d.buttonconfigure('Apply', :command=>proc{puts 'Apply'})
-d.buttonconfigure('Cancel', :command=>proc{puts 'Cancel'; d.deactivate false})
-d.buttonconfigure('Help', :command=>proc{puts 'Help'})
-
-TkListbox.new(d.child_site, :relief=>:sunken).pack(:expand=>true, :fill=>:both)
-
-if TkComm.bool(d.activate)
-  puts "Exit via OK button"
-else
-  puts "Exit via Cancel button"
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/dialogshell.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/dialogshell.rb
deleted file mode 100644 (file)
index 197521e..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-ds = Tk::Iwidgets::Dialogshell.new(:modality=>:none)
-
-ds.add('OK', :text=>'OK', :command=>proc{puts 'OK'; ds.deactivate})
-ds.add('Cancel', :text=>'Cancel', :command=>proc{puts 'Cancel'; ds.deactivate})
-ds.default('OK')
-
-TkButton.new(:text=>'ACTIVATE', :padx=>7, :pady=>7, 
-             :command=>proc{puts ds.activate}).pack(:padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/disjointlistbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/disjointlistbox.rb
deleted file mode 100644 (file)
index 85c5d03..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-djl = Tk::Iwidgets::Disjointlistbox.new.pack(:fill=>:both, :expand=>true, 
-                                             :padx=>10,  :pady=>10)
-djl.set_lhs(*[0,2,4,5])
-djl.set_rhs(3,6)
-
-djl.insert_lhs(1,7,8)
-djl.insert_rhs(9)
-
-p djl.get_lhs
-p djl.get_rhs
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/entryfield-1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/entryfield-1.rb
deleted file mode 100644 (file)
index 856d883..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env ruby
-#########################################################
-#
-#  use Tk::UTF8_String() for a utf8 charecter
-#
-#########################################################
-require 'tk'
-require 'tkextlib/iwidgets'
-
-TkOption.add('*textBackground', 'white')
-
-ef  = Tk::Iwidgets::Entryfield.new(:command=>proc{puts "Return Pressed"})
-
-fef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Fixed:', 
-                                   :fixed=>10, :width=>12)
-
-nef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Numeric:', 
-                                   :validate=>:numeric, :width=>12)
-
-aef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Alphabetic:', 
-                                   :validate=>:alphabetic, :width=>12, 
-                                   :invalid=>proc{
-                                     puts "Alphabetic contents invalid"
-                                   })
-
-pef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Password:', :width=>12, 
-                                   :show=>Tk::UTF8_String("\267"),  
-                                                         ## <=== utf8 character
-                                   :command=>proc{puts "Return Pressed"})
-
-Tk::Iwidgets::Labeledwidget.alignlabels(ef, fef, nef, aef, pef)
-
-ef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-fef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-nef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-aef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-pef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/entryfield-2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/entryfield-2.rb
deleted file mode 100644 (file)
index 4a4c2e7..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env ruby
-#########################################################
-#
-#  set $KCODE to 'utf' for a utf8 charecter
-#
-#########################################################
-$KCODE='utf'
-
-require 'tk'
-require 'tkextlib/iwidgets'
-
-TkOption.add('*textBackground', 'white')
-
-ef  = Tk::Iwidgets::Entryfield.new(:command=>proc{puts "Return Pressed"})
-
-fef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Fixed:', 
-                                   :fixed=>10, :width=>12)
-
-nef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Numeric:', 
-                                   :validate=>:numeric, :width=>12)
-
-aef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Alphabetic:', 
-                                   :validate=>:alphabetic, :width=>12, 
-                                   :invalid=>proc{
-                                     puts "Alphabetic contents invalid"
-                                   })
-
-pef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Password:', :width=>12, 
-                                   :show=>"\267",  ## <=== utf8 character
-                                   :command=>proc{puts "Return Pressed"})
-
-Tk::Iwidgets::Labeledwidget.alignlabels(ef, fef, nef, aef, pef)
-
-ef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-fef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-nef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-aef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-pef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/entryfield-3.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/entryfield-3.rb
deleted file mode 100644 (file)
index bddd542..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env ruby
-#########################################################
-#
-#  set Tk.encoding = 'utf-8' for a utf8 charecter
-#
-#########################################################
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk.encoding = 'utf-8'
-
-TkOption.add('*textBackground', 'white')
-
-ef  = Tk::Iwidgets::Entryfield.new(:command=>proc{puts "Return Pressed"})
-
-fef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Fixed:', 
-                                   :fixed=>10, :width=>12)
-
-nef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Numeric:', 
-                                   :validate=>:numeric, :width=>12)
-
-aef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Alphabetic:', 
-                                   :validate=>:alphabetic, :width=>12, 
-                                   :invalid=>proc{
-                                     puts "Alphabetic contents invalid"
-                                   })
-
-pef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Password:', :width=>12, 
-                                   :show=>"\267",  ## <=== utf8 character
-                                   :command=>proc{puts "Return Pressed"})
-
-Tk::Iwidgets::Labeledwidget.alignlabels(ef, fef, nef, aef, pef)
-
-ef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-fef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-nef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-aef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-pef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/extbutton.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/extbutton.rb
deleted file mode 100644 (file)
index 6971052..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Extbutton.new(:text=>'Bitmap example', :bitmap=>'info', 
-                            :background=>'bisque',  :activeforeground=>'red', 
-                            :bitmapforeground=>'blue', :defaultring=>true, 
-                            :command=>proc{
-                              puts "Bisque is beautiful"
-                            }).pack(:expand=>true)
-
-#img = TkPhotoImage.new(:file=>File.join(File.dirname(File.expand_path(__FILE__)), '../../../images/earthris.gif'))
-img = TkPhotoImage.new(:file=>File.join(File.dirname(File.expand_path(__FILE__)), '../catalog_demo/images/clear.gif'))
-
-Tk::Iwidgets::Extbutton.new(:text=>'Image example', :relief=>:ridge, 
-                            :image=>img, :imagepos=>:e, :font=>'9x15bold', 
-                            :activebackground=>'lightyellow', 
-                            :background=>'lightgreen').pack(:expand=>true)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/extfileselectionbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/extfileselectionbox.rb
deleted file mode 100644 (file)
index 4738084..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Extfileselectionbox.new.pack(:padx=>10, :pady=>10, 
-                                           :fill=>:both, :expand=>true)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/extfileselectiondialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/extfileselectiondialog.rb
deleted file mode 100644 (file)
index c1a9b3d..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mainloop = Thread.new{Tk.mainloop}
-
-#
-# Non-modal example
-#
-nmfsd = Tk::Iwidgets::Extfileselectiondialog.new(:title=>'Non-Modal')
-nmfsd.buttonconfigure('OK', :command=>proc{
-                        puts "You selected #{nmfsd.get}"
-                        nmfsd.deactivate
-                      })
-nmfsd.activate
-
-#
-# Modal example
-#
-mfsd = Tk::Iwidgets::Extfileselectiondialog.new(:modality=>:application)
-mfsd.center
-if TkComm.bool(mfsd.activate)
-  puts "You selected #{mfsd.get}"
-else
-  puts "You cancelled the dialog"
-end
-
-
-mainloop.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/feedback.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/feedback.rb
deleted file mode 100644 (file)
index 7b87a02..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Feedback.new(:labeltext=>'Status', :steps=>20){|fb|
-  pack(:padx=>10, :pady=>10, :fill=>:both, :expand=>true)
-  TkTimer.new(500, 20, proc{fb.step}).start(2500)
-}
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/fileselectionbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/fileselectionbox.rb
deleted file mode 100644 (file)
index 2ad3adb..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Fileselectionbox.new.pack(:padx=>10, :pady=>10, 
-                                        :fill=>:both, :expand=>true)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/fileselectiondialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/fileselectiondialog.rb
deleted file mode 100644 (file)
index ff22b2f..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mainloop = Thread.new{Tk.mainloop}
-
-#
-# Non-modal example
-#
-nmfsd = Tk::Iwidgets::Fileselectiondialog.new(:title=>'Non-Modal')
-nmfsd.buttonconfigure('OK', :command=>proc{
-                        puts "You selected #{nmfsd.get}"
-                        nmfsd.deactivate
-                      })
-nmfsd.activate
-
-#
-# Modal example
-#
-mfsd = Tk::Iwidgets::Fileselectiondialog.new(:modality=>:application)
-mfsd.center
-if TkComm.bool(mfsd.activate)
-  puts "You selected #{mfsd.get}"
-else
-  puts "You cancelled the dialog"
-end
-
-mainloop.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/finddialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/finddialog.rb
deleted file mode 100644 (file)
index 110efb9..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mainloop = Thread.new{Tk.mainloop}
-
-st = Tk::Iwidgets::Scrolledtext.new.pack
-st.insert('end', "Now is the time for all good men\n")
-st.insert('end', "to come to the aid of their country")
-
-fd = Tk::Iwidgets::Finddialog.new(:textwidget=>st)
-fd.center(st)
-fd.activate
-
-mainloop.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/hierarchy.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/hierarchy.rb
deleted file mode 100644 (file)
index ddb08d8..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-def get_files(file)
-  dir = (file.empty?)? ENV['HOME'] : TkComm._fromUTF8(file)
-  Dir.chdir(dir) rescue return ''
-  Dir['*'].sort.collect{|f|
-    [TkComm._toUTF8(File.join(dir, f)), TkComm._toUTF8(f)]
-  }
-end
-
-Tk::Iwidgets::Hierarchy.new(:querycommand=>proc{|arg| get_files(arg.node)}, 
-                            :visibleitems=>'30x15', 
-                            :labeltext=>ENV['HOME']).pack(:side=>:left, 
-                                                          :expand=>true, 
-                                                          :fill=>:both)
-
-# Tk::Iwidgets::Hierarchy.new(:querycommand=>[proc{|n| get_files(n)}, '%n'], 
-#                           :visibleitems=>'30x15', 
-#                           :labeltext=>ENV['HOME']).pack(:side=>:left, 
-#                                                         :expand=>true, 
-#                                                         :fill=>:both)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/hyperhelp.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/hyperhelp.rb
deleted file mode 100644 (file)
index f9c92bf..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mainloop = Thread.new{Tk.mainloop}
-
-dir  = '/usr/local/ActiveTcl/demos/IWidgets/html/'
-href = [ 'hyperhelp.n', 'buttonbox.n', 'calendar.n' ]
-
-hh = Tk::Iwidgets::Hyperhelp.new(:topics=>href, :helpdir=>dir)
-hh.show_topic('hyperhelp.n')
-hh.activate
-
-mainloop.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/labeledframe.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/labeledframe.rb
deleted file mode 100644 (file)
index 4e2e21e..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-lf = Tk::Iwidgets::Labeledframe.new(:labeltext=>'Entry Frame', :labelpos=>:n)
-lf.pack(:fill=>:both, :expand=>true, :padx=>10, :pady=>10)
-
-cs = lf.child_site
-
-Tk::Iwidgets::Entryfield.new(cs, :labeltext=>'Name:').pack(:side=>:top, :fill=>:x)
-Tk::Iwidgets::Spinint.new(cs, :labeltext=>'Number:').pack(:side=>:top, :fill=>:x)
-Tk::Iwidgets::Pushbutton.new(cs, :text=>'Details:').pack(:side=>:top, :fill=>:x)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/labeledwidget.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/labeledwidget.rb
deleted file mode 100644 (file)
index 1d2e0a9..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-lw = Tk::Iwidgets::Labeledwidget.new(:labeltext=>'Canvas Widget', 
-                                     :labelpos=>:s)
-lw.pack(:fill=>:both, :expand=>true, :padx=>10, :pady=>10)
-
-cw = TkCanvas.new(lw.child_site, :relief=>:raised, :width=>200, :height=>200, 
-                  :borderwidth=>3, :background=>:white)
-cw.pack(:padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/mainwindow.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/mainwindow.rb
deleted file mode 100644 (file)
index b87a6d2..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mw = Tk::Iwidgets::Mainwindow.new
-
-mw.menubar.add(:menubutton, 'file', :text=>'File', :underline=>0, 
-               :padx=>8, :pady=>2, :menu=>[
-                 [:options, {:tearoff=>false}], 
-
-                 [:command, 'new', {
-                     :label=>'New', :underline=>0, 
-                     :helpstr=>'Create a new file'
-                   }
-                 ], 
-
-                 [:command, 'open', {
-                     :label=>'Open ...', :underline=>0, 
-                     :helpstr=>'Open an existing file'
-                   }
-                 ], 
-
-                 [:command, 'save', {
-                     :label=>'Save', :underline=>0, 
-                     :helpstr=>'Save the current file'
-                   }
-                 ], 
-
-                 [:command, 'saveas', {
-                     :label=>'Save As', :underline=>5, 
-                     :helpstr=>'Save the file as a different name'
-                   }
-                 ], 
-
-                 [:command, 'print', {
-                     :label=>'Print', :underline=>0, 
-                     :helpstr=>'Print the file'
-                   }
-                 ], 
-
-                 [:separator, 'sep1'], 
-
-                 [:command, 'close', {
-                     :label=>'Close', :underline=>0, 
-                     :helpstr=>'Close the file'
-                   }
-                 ], 
-
-                 [:separator, 'sep2'], 
-
-                 [:command, 'exit', {
-                     :label=>'Exit', :underline=>1, 
-                     :helpstr=>'Exit this application'
-                   }
-                 ], 
-
-                 nil
-               ])
-
-Tk::Iwidgets::Scrolledtext.new(mw.child_site).pack(:fill=>:both, :expand=>true)
-
-mw.activate
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/menubar.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/menubar.rb
deleted file mode 100644 (file)
index 891761a..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-helpvar = TkVariable.new
-viewmode = TkVariable.new
-
-menu_spec = [
-  [:menubutton, 'file', {
-      :text=>'File', :menu=>[
-        [:options, {:tearoff=>false}], 
-
-        [:command, 'new', {
-            :label=>'New', :helpstr=>'Open new document', 
-            :command=>proc{puts 'NEW'}
-          }
-        ], 
-
-        [:command, 'close', {
-            :label=>'Close', :helpstr=>'Close current document', 
-            :command=>proc{puts 'CLOSE'}
-          }
-        ], 
-
-        [:separator, 'sep1'], 
-
-        [:command, 'exit', {
-            :label=>'Exit', :helpstr=>'Exit application', 
-            :command=>proc{exit}
-          }
-        ]
-      ]
-    }
-  ], 
-
-  [:menubutton, 'edit', {
-      :text=>'Edit', :menu=>[
-        [:options, {:tearoff=>false}], 
-
-        [:command, 'undo', {
-            :label=>'Undo', :underline=>0, 
-            :helpstr=>'Undo last command', 
-            :command=>proc{puts 'UNDO'}
-          }
-        ], 
-
-        [:separator, 'sep2'], 
-
-        [:command, 'cut', {
-            :label=>'Cut', :underline=>1, 
-            :helpstr=>'Cut selection to clipboard', 
-            :command=>proc{puts 'CUT'}
-          }
-        ], 
-
-        [:command, 'copy', {
-            :label=>'Copy', :underline=>1, 
-            :helpstr=>'Copy selection to clipboard', 
-            :command=>proc{puts 'COPY'}
-          }
-        ], 
-
-        [:command, 'paste', {
-            :label=>'Paste', :underline=>0, 
-            :helpstr=>'Paste clipboard contents', 
-            :command=>proc{puts 'PASTE'}
-          }
-        ]
-      ]
-    }
-  ], 
-
-  [:menubutton, 'options', {
-      :text=>'Options', :menu=>[
-        [:options, {:tearoff=>false, :selectcolor=>'blue'}], 
-
-        [:radiobutton, 'byName', {
-            :variable=>viewmode, :value=>'NAME', 
-            :label=>'by Name', :helpstr=>'View files by name order', 
-            :command=>proc{puts 'NAME'}
-          }
-        ], 
-
-        [:radiobutton, 'byDate', {
-            :variable=>viewmode, :value=>'DATE', 
-            :label=>'by Date', :helpstr=>'View files by date order', 
-            :command=>proc{puts 'DATE'}
-          }
-        ], 
-
-        [:cascade, 'prefs', {
-            :label=>'Preferences', :menu=>[
-              [:command, 'colors', {
-                  :label=>'Colors...', :helpstr=>'Change text colors', 
-                  :command=>proc{puts 'COLORS'}
-                }
-              ], 
-
-              [:command, 'fonts', {
-                  :label=>'Fonts...', :helpstr=>'Change text font', 
-                  :command=>proc{puts 'COLORS'}
-                }
-              ]
-            ]
-          }
-        ]
-      ]
-    }
-  ]
-]
-
-#mb = Tk::Iwidgets::Menubar.new(:helpvariable=>helpvar, 
-#                              :menubuttons=>menu_spec)
-mb = Tk::Iwidgets::Menubar.new(:helpvariable=>helpvar)
-mb.configure(:menubuttons=>menu_spec)
-
-fr = TkFrame.new(:width=>300, :height=>300)
-ef = TkEntry.new(:textvariable=>helpvar)
-
-mb.pack(:anchor=>:nw, :fill=>:x, :expand=>true)
-fr.pack(:fill=>:both, :expand=>true)
-ef.pack(:anchor=>:sw, :fill=>:x, :expand=>true)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/menubar2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/menubar2.rb
deleted file mode 100644 (file)
index d6f2292..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-helpvar = TkVariable.new
-viewmode = TkVariable.new
-
-mb = Tk::Iwidgets::Menubar.new
-mb.menubuttons = [
-  [:menubutton, 'file', {
-      :text=>'File', :menu=>[
-        [:command,   'new',   {:label=>'New'}], 
-        [:command,   'close', {:label=>'Close'}], 
-        [:separator, 'sep1'], 
-        [:command,   'quit',  {:label=>'Quit'}]
-      ]
-    }
-  ], 
-  [:menubutton, 'edit', {:text=>'Edit'}]
-]
-
-mb.add(:command, '.edit.undo', :label=>'Undo', :underline=>0)
-mb.add(:separator, '.edit.sep2')
-mb.add(:command, '.edit.cut',   :label=>'Cut',   :underline=>1)
-mb.add(:command, '.edit.copy',  :label=>'Copy',  :underline=>1)
-mb.add(:command, '.edit.paste', :label=>'Paste', :underline=>0)
-
-mb.add(:menubutton, '.options', :text=>'Options', :menu=>[
-         [:radiobutton, 'byName', {
-             :variable=>viewmode, :value=>'NAME', :label=>'by Name'}
-         ], 
-         [:radiobutton, 'byDate', {
-             :variable=>viewmode, :value=>'DATE', :label=>'by Date'}
-         ]
-       ])
-
-mb.add(:cascade, '.options.prefs', :label=>'Preferences', :menu=>[
-         [:command, 'colors', {:label=>'Colors...'}], 
-         [:command, 'fonts',  {:label=>'Fonts...'}]
-       ])
-
-mb.pack(:side=>:left, :anchor=>:nw, :fill=>:x, :expand=>true)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/messagebox1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/messagebox1.rb
deleted file mode 100644 (file)
index 3221dbc..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mb = Tk::Iwidgets::Messagebox.new(:hscrollmode=>:dynamic, 
-                                  :labeltext=>'Messages', :labelpos=>:n, 
-                                  :height=>120, :width=>550, 
-                                  :savedir=>'/tmp', :textbackground=>'#d9d9d9')
-mb.pack(:padx=>5, :pady=>5, :fill=>:both, :expand=>true)
-
-mb.type_add('ERROR', :background=>'red', :foreground=>'white', :bell=>true)
-mb.type_add('WARNING', :background=>'yellow', :foreground=>'black')
-mb.type_add('INFO', :background=>'white', :foreground=>'black')
-
-mb.issue('This is an error message in red with a beep', 'ERROR')
-mb.issue('This warning message in yellow', 'WARNING')
-mb.issue('This is an informational message', 'INFO')
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/messagebox2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/messagebox2.rb
deleted file mode 100644 (file)
index 2f0e364..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mb = Tk::Iwidgets::Messagebox.new(:hscrollmode=>:dynamic, 
-                                  :labeltext=>'Messages', :labelpos=>:n, 
-                                  :height=>120, :width=>550, 
-                                  :savedir=>'/tmp', :textbackground=>'#d9d9d9')
-mb.pack(:padx=>5, :pady=>5, :fill=>:both, :expand=>true)
-
-error   = mb.type_add(:background=>'red', :foreground=>'white', :bell=>true)
-warning = mb.type_add(:background=>'yellow', :foreground=>'black')
-info    = mb.type_add(:background=>'white', :foreground=>'black')
-
-mb.issue('This is an error message in red with a beep', error)
-mb.issue('This warning message in yellow', warning)
-mb.issue('This is an informational message', info)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/messagedialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/messagedialog.rb
deleted file mode 100644 (file)
index 6c6bfbc..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mainloop = Thread.new{Tk.mainloop}
-
-#
-# Standard question message dialog used for confirmation.
-#
-md = Tk::Iwidgets::Messagedialog.new(:title=>'Message Dialog', 
-                                     :text=>'Are you sure ? ', 
-                                     :bitmap=>'questhead', :modality=>:global)
-
-md.buttonconfigure('OK', :text=>'Yes')
-md.buttonconfigure('Cancel', :text=>'No')
-
-if TkComm.bool(md.activate)
-  md.text('Are you really sure ? ')
-  if TkComm.bool(md.activate)
-    puts 'Yes'
-  else
-    puts 'No'
-  end
-else
-  puts 'No'
-end
-
-md.destroy
-
-#
-# Copyright notice with automatic deactivation.
-#
-bmp = '@' + File.join(File.dirname(File.expand_path(__FILE__)), '../catalog_demo/images/text.xbm')
-
-cr = Tk::Iwidgets::Messagedialog.new(:title=>'Copyright', 
-                                     :bitmap=>bmp, :imagepos=>:n, 
-                                     :text=>"Copyright 200x XXX Corporation\nAll rights reserved")
-
-cr.hide('Cancel')
-
-cr.activate
-Tk.after(7000, proc{cr.deactivate; Tk.root.destroy})
-
-mainloop.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/notebook.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/notebook.rb
deleted file mode 100644 (file)
index e33b81e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-# Create the tabnotebook widget and pack it.
-nb = Tk::Iwidgets::Notebook.new(:width=>100, :height=>100)
-nb.pack(:anchor=>:nw, :fill=>:both, :expand=>true, 
-        :side=>:left, :padx=>10, :pady=>10)
-
-# Add two pages to the tabnotebook,
-# labelled "Page One" and "Page Two"
-nb.add(:label=>'Page One')
-nb.add(:label=>'Page Two')
-
-# Get the child site frames of these two pages.
-page1CS = nb.child_site(0)
-page2CS = nb.child_site('Page Two')
-
-# Create buttons on each page of the tabnotebook.
-TkButton.new(page1CS, :text=>'Button One').pack
-TkButton.new(page2CS, :text=>'Button Two').pack
-
-# Select the first page of the tabnotebook.
-nb.select(0)
-
-# Create the scrollbar and associate teh scrollbar
-# and the notebook together, then pack the scrollbar
-nb.scrollbar(TkScrollbar.new).pack(:fill=>:y, :expand=>true, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/notebook2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/notebook2.rb
deleted file mode 100644 (file)
index 649de4f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-# Create the tabnotebook widget and pack it.
-nb = Tk::Iwidgets::Notebook.new(:width=>100, :height=>100)
-nb.pack(:anchor=>:nw, :fill=>:both, :expand=>true, 
-        :side=>:top, :padx=>10, :pady=>0)
-
-# Add two pages to the tabnotebook,
-# labelled "Page One" and "Page Two"
-nb.add(:label=>'Page One')
-nb.add(:label=>'Page Two')
-
-# Get the child site frames of these two pages.
-page1CS = nb.child_site(0)
-page2CS = nb.child_site('Page Two')
-
-# Create buttons on each page of the tabnotebook.
-TkButton.new(page1CS, :text=>'Button One').pack
-TkButton.new(page2CS, :text=>'Button Two').pack
-
-# Select the first page of the tabnotebook.
-nb.select(0)
-
-# Create the scrollbar and associate teh scrollbar
-# and the notebook together, then pack the scrollbar
-nb.xscrollbar(TkScrollbar.new).pack(:fill=>:x, :expand=>true, :padx=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/optionmenu.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/optionmenu.rb
deleted file mode 100644 (file)
index 1fd7a5b..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-om = Tk::Iwidgets::Optionmenu.new(:labelmargin=>5, :labelpos=>:w, 
-                                  :labeltext=>"Operating System :")
-
-om.insert('end', 'Unix', 'VMS', 'Linux', 'OS/2', 'Windows NT', 'DOS')
-om.sort_ascending
-om.select('Linux')
-
-om.pack(:padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/panedwindow.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/panedwindow.rb
deleted file mode 100644 (file)
index 6e4458e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-pw = Tk::Iwidgets::Panedwindow.new(:width=>300, :height=>300)
-
-pw.add('top')
-pw.add('middle', :margin=>10)
-pw.add('bottom', :margin=>10, :minimum=>10)
-
-pw.pack(:fill=>:both, :expand=>true)
-
-pw.child_site_list.each{|pane|
-  TkButton.new(pane, :text=>pane.path, :relief=>:raised, 
-               :borderwidth=>2).pack(:fill=>:both, :expand=>true)
-}
-
-pw.fraction(50,30,20)
-pw.paneconfigure(0, :minimum=>20)
-pw.paneconfigure('bottom', :margin=>15)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/panedwindow2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/panedwindow2.rb
deleted file mode 100644 (file)
index 6779cb5..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-pw = Tk::Iwidgets::Panedwindow.new(:width=>300, :height=>300)
-
-top = pw.add
-middle = pw.add(:margin=>10)
-bottom = pw.add(:margin=>10, :minimum=>10)
-
-pw.pack(:fill=>:both, :expand=>true)
-
-pw.child_site_list.each{|pane|
-  TkButton.new(pane, :text=>pane.path, :relief=>:raised, 
-               :borderwidth=>2).pack(:fill=>:both, :expand=>true)
-}
-
-pw.fraction(50,30,20)
-pw.paneconfigure(0, :minimum=>20)  # 0 == pw.index(top)
-pw.paneconfigure(bottom, :margin=>15)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/promptdialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/promptdialog.rb
deleted file mode 100644 (file)
index 2c643e5..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mainloop = Thread.new{Tk.mainloop}
-
-TkOption.add('*textBackground', 'white')
-
-pd = Tk::Iwidgets::Promptdialog.new(:modality=>:global, :title=>'Password', 
-                                    :labeltext=>'Password:', :show=>'*')
-pd.hide('Apply')
-
-if TkComm.bool(pd.activate)
-  puts "Password entered: #{pd.get}"
-else
-  puts "Password prompt cancelled"
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/pushbutton.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/pushbutton.rb
deleted file mode 100644 (file)
index 6e1c3ff..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Pushbutton.new(:text=>'Hello', 
-                             :command=>proc{puts 'Hello World'}, 
-                             :defaultring=>true).pack(:padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/radiobox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/radiobox.rb
deleted file mode 100644 (file)
index 9cd6a00..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-rb = Tk::Iwidgets::Radiobox.new(:labeltext=>'Fonts')
-rb.add('times',     :text=>'Times')
-rb.add('helvetica', :text=>'Helvetica')
-rb.add('courier',   :text=>'Courier')
-rb.add('symbol',    :text=>'Symbol')
-rb.select('courier')
-rb.pack(:expand=>true, :fill=>:both, :padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledcanvas.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledcanvas.rb
deleted file mode 100644 (file)
index 92c94b9..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-sc = Tk::Iwidgets::Scrolledcanvas.new
-
-sc.create(TkcRectangle, 100, 100, 400, 400, :fill=>'red')
-TkcRectangle.new(sc, 300, 300, 600, 600, :fill=>'green')
-TkcRectangle.new(sc, [[200, 200], [500, 500]], :fill=>'blue')
-
-sc.pack(:expand=>true, :fill=>:both, :padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledframe.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledframe.rb
deleted file mode 100644 (file)
index 5219847..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-sf = Tk::Iwidgets::Scrolledframe.new(:width=>150, :height=>180, 
-                                     :labeltext=>'scrolledframe')
-cs = sf.child_site
-
-TkButton.new(cs, :text=>'Hello').pack(:pady=>10)
-TkButton.new(cs, :text=>'World').pack(:pady=>10)
-TkButton.new(cs, :text=>'This is a test').pack(:pady=>10)
-TkButton.new(cs, :text=>'This is a really big button').pack(:pady=>10)
-TkButton.new(cs, :text=>'This is another really big button').pack(:pady=>10)
-TkButton.new(cs, :text=>'This is the last really big button').pack(:pady=>10)
-
-sf.pack(:expand=>true, :fill=>:both, :padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledhtml.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledhtml.rb
deleted file mode 100644 (file)
index 04334b8..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-TkOption.add('*textBackground', 'white')
-
-sh = Tk::Iwidgets::Scrolledhtml.new(:fontname=>'helvetica', 
-                                    :linkcommand=>proc{|href|
-                                      sh.import_link(href)
-                                    })
-sh.pack(:expand=>true, :fill=>:both, :padx=>10, :pady=>10)
-
-sh.import(Tk.getOpenFile(:title=>'select HTML document'))
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledlistbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledlistbox.rb
deleted file mode 100644 (file)
index 0b69751..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-TkOption.add('*textBackground', 'white')
-
-slb = Tk::Iwidgets::Scrolledlistbox.new(:selectmode=>:single, 
-                                        :vscrollmode=>:static,
-                                        :hscrollmode=>:dynamic,
-                                        :labeltext=>'List', 
-                                        :selectioncommand=>proc{
-                                          puts(slb.get_curselection)
-                                        }, 
-                                        :dblclickcommand=>proc{
-                                          puts('Double Click')
-                                          puts(slb.get_curselection)
-                                        })
-slb.pack(:expand=>true, :fill=>:both, :padx=>10, :pady=>10)
-
-slb.insert('end', *['Hello', 'Out There', 'World'])
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledtext.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/scrolledtext.rb
deleted file mode 100644 (file)
index dd1a99a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-st = Tk::Iwidgets::Scrolledtext.new(:hscrollmode=>:dynamic, :wrap=>:none, 
-                                    :labeltext=>'Password File')
-st.pack(:expand=>true, :fill=>:both, :padx=>10, :pady=>10)
-
-st.import('/etc/passwd')
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/selectionbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/selectionbox.rb
deleted file mode 100644 (file)
index a5d623a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-TkOption.add('*textBackground', 'white')
-
-sb = Tk::Iwidgets::Selectionbox.new.pack(:padx=>10, :pady=>10, 
-                                         :fill=>:both, :expand=>true)
-
-sb.insert_items('end', *['Hello', 'Out There', 'World'])
-
-TkLabel.new(sb.child_site, 
-            :text=>'Child Site is Here').pack(:fill=>:x, :padx=>10, :pady=>10)
-
-sb.insert_items(2, 'Cruel Cruel')
-
-sb.selection_set(1)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/selectiondialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/selectiondialog.rb
deleted file mode 100644 (file)
index f40b419..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mainloop = Thread.new{Tk.mainloop}
-
-TkButton.new(:text=>'QUIT', 
-             :command=>proc{Tk.root.destroy}).pack(:padx=>10, :pady=>10)
-
-Tk::Iwidgets::Selectiondialog.new.activate
-
-mainloop.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/shell.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/shell.rb
deleted file mode 100644 (file)
index c44b555..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-sh = Tk::Iwidgets::Shell.new(:modality=>:application, 
-                             :padx=>20, :pady=>20, :title=>'Shell')
-
-TkButton.new(:text=>'ACTIVATE', :padx=>7, :pady=>7, 
-             :command=>proc{puts sh.activate}).pack(:padx=>10, :pady=>10)
-
-TkLabel.new(sh.child_site, :text=>'SHELL').pack
-TkButton.new(sh.child_site, :text=>'YES', 
-             :command=>proc{sh.deactivate 'press YES'}).pack(:fill=>:x)
-TkButton.new(sh.child_site, :text=>'NO', 
-             :command=>proc{sh.deactivate 'press NO'}).pack(:fill=>:x)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/spindate.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/spindate.rb
deleted file mode 100644 (file)
index 17197a6..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Spindate.new.pack(:padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/spinint.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/spinint.rb
deleted file mode 100644 (file)
index 0bcdefb..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-TkOption.add('*textBackground', 'white')
-
-Tk::Iwidgets::Spinint.new(:labeltext=>'Temperature', :labelpos=>:w, :width=>5, 
-                          :fixed=>true, :range=>[32, 212]).pack(:pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/spinner.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/spinner.rb
deleted file mode 100644 (file)
index 295d38e..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-class Spinner_demo < TkWindow
-  Months = %w(January February March April May June July August September October November December)
-
-  def block_input(c)
-    false
-  end
-
-  def spin_month(step)
-    index = Months.index(@spinner.get) + step
-    index = 11 if index < 0
-    index = 0 if index > 11
-
-    @spinner.value = Months[index]
-  end
-
-  def initialize(parent=nil)
-    @spinner = Tk::Iwidgets::Spinner.new(parent, :labeltext=>'Month : ', 
-                                         :width=>10, :fixed=>10, 
-                                         :validate=>proc{|c| block_input}, 
-                                         :decrement=>proc{spin_month -1}, 
-                                         :increment=>proc{spin_month 1})
-    @path = @spinner
-    @spinner.insert(0, Months[0])
-  end
-end
-
-Spinner_demo.new.pack(:padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/spintime.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/spintime.rb
deleted file mode 100644 (file)
index 2c13884..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Spintime.new.pack(:padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/tabnotebook.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/tabnotebook.rb
deleted file mode 100644 (file)
index 6f1ecc4..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-# Create the tabnotebook widget and pack it.
-tn = Tk::Iwidgets::Tabnotebook.new(:width=>300, :height=>100)
-tn.pack(:anchor=>:nw, :fill=>:both, :expand=>true, 
-        :side=>:left, :padx=>10, :pady=>10)
-
-# Add two pages to the tabnotebook,
-# labelled "Page One" and "Page Two"
-tn.add(:label=>'Page One')
-tn.add(:label=>'Page Two')
-
-# Get the child site frames of these two pages.
-page1CS = tn.child_site(0)
-page2CS = tn.child_site('Page Two')
-
-# Create buttons on each page of the tabnotebook.
-TkButton.new(page1CS, :text=>'Button One').pack
-TkButton.new(page2CS, :text=>'Button Two').pack
-
-# Select the first page of the tabnotebook.
-tn.select(0)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/tabnotebook2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/tabnotebook2.rb
deleted file mode 100644 (file)
index 4a5eef5..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-# Create the tabnotebook widget and pack it.
-tn = Tk::Iwidgets::Tabnotebook.new(:width=>300, :height=>100)
-tn.pack(:anchor=>:nw, :fill=>:both, :expand=>true, 
-        :side=>:top, :padx=>10, :pady=>0)
-
-# Add two pages to the tabnotebook,
-# labelled "Page One" and "Page Two"
-tn.add(:label=>'Page One')
-tn.add(:label=>'Page Two')
-
-# Get the child site frames of these two pages.
-page1CS = tn.child_site(0)
-page2CS = tn.child_site('Page Two')
-
-# Create buttons on each page of the tabnotebook.
-TkButton.new(page1CS, :text=>'Button One').pack
-TkButton.new(page2CS, :text=>'Button Two').pack
-
-# Select the first page of the tabnotebook.
-tn.select(0)
-
-# Create the scrollbar
-# and the notebook together, then pack the scrollbar
-tn.xscrollbar(TkScrollbar.new).pack(:fill=>:x, :expand=>true, :padx=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/tabset.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/tabset.rb
deleted file mode 100644 (file)
index 90be46b..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-# Create a listbox with two items (one and two)
-l = TkListbox.new(:selectmode=>:single, :exportselection=>false).pack
-l.insert('end', 'one')
-l.insert('end', 'two')
-l.selection_set(0)
-
-# Define a proc that knows how to select an item
-# from a list given an index from the tabset -command callback.
-selectItem = proc{|item|
-  l.selection_clear(l.curselection)
-  l.selection_set(item)
-  l.see(item)
-}
-
-# Create a tabset, set its -command to call selectItem
-# Add two labels to the tabset (one and two).
-ts = Tk::Iwidgets::Tabset.new(:command=>selectItem)
-ts.add(:label=>1)
-ts.add(:label=>2)
-ts.select(0)
-ts.pack(:fill=>:x, :expand=>true)
-
-# Define a proc that knows how to select a tab
-# given a y pixel coordinate from the list..
-selectTab = proc{|y| ts.select(l.nearest(y)) }
-
-# bind button 1 press to the selectTab procedure.
-l.bind('ButtonPress-1', proc{|y| selectTab.call(y) }, '%y')
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/timeentry.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/timeentry.rb
deleted file mode 100644 (file)
index 4659399..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Timeentry.new.pack
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/timefield.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/timefield.rb
deleted file mode 100644 (file)
index bb59450..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-tf = Tk::Iwidgets::Timefield.new(:command=>proc{puts(tf.get)})
-tf.pack(:fill=>:x, :expand=>true, :padx=>10,  :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/toolbar.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/toolbar.rb
deleted file mode 100644 (file)
index 355466e..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-##########################################
-# icon images
-editcopy22 = TkPhotoImage.new(:data=><<'EOD')
-   R0lGODlhFgAWAIUAAPwCBBQSFPz+/DQyNISChDw6PMzKzMTGxERGRIyKjFxa
-   XMTCvKSmpHR2dPz6/Pz29PTq3MS2rPz69MTCxFxWVHx6dJyWjNzSzPz27Pzy
-   7Pzu5PTm3NTKvIR+fJyGfHxuZHxqXNTCtPTq5PTi1PTezNS+rExOTFRORMyy
-   lPTaxOzWxOzSvNze3NTOxMy2nMyulMyqjAQCBAAAAAAAAAAAAAAAAAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbY
-   QIBwSCwahYGkUnk0BgTQ6IAQaBKfUWhBYKhaAU+CgXAQIAyChLeJzSIQhcH6
-   GFaM0QtGY5kstqEODw8QEQELAhJTc08KBBMEFBUWDRcBE1pca20SGBkaEBsc
-   AY5maFRIAgoLHRQRHh8gIQFlZnByqA8ZGSIQIyQjJQEmYgJ5p2ACrK4gJx4g
-   KIZZAgdeAQ4ZI9kjKSor0AwEjeAs1S0cHAslLi4vMDDRWeRIfEsxMeET4ATy
-   VoYLC5fizXEiAR84BeMG+pEm8EsAFhAjSlR4hR6fLxiF0AkCACH+aENyZWF0
-   ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5
-   OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2
-   ZWxjb3IuY29tADs=
-EOD
-
-editcut22 = TkPhotoImage.new(:data=><<'EOD')
-   R0lGODlhFgAWAIMAAPwCBAQCBAwCBPz+/OTi5JyanOzq7DQyNGxqbAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARbEMhJq704gxBE
-   0Bf3cZo4kRJqBQNRfBucyudgvJS6VaxLzyMa6/bLiWA9HOg4VIIkL5vzuRkc
-   pkvRIIAorphJLzBW84WEuRZWp6uaT7J2Sh1Hit3OY/ZO7WvsEQAh/mhDcmVh
-   dGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAx
-   OTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRl
-   dmVsY29yLmNvbQA7
-EOD
-
-editpaste22 = TkPhotoImage.new(:data=><<'EOD')
-   R0lGODlhFgAWAIYAAPwCBBQWFDw6FHRuFGRaBFxSBAQCBAQKBCQiBIx6HPz6
-   /NTOfKyiXDQuFOTm5Pz+/Ozu7PTq5Pz63PTyxNTOjKSeRExGLMTGxMzKzNTS
-   1NTW1Dw2NKSmpKyqrKSipJyanNzWlLy6ZLSuVIx6FISChIyKhJSSlCQiJLS2
-   tDw6NDQyNCQiFCQmHBQSDGRiZHRydGxubHx6dGxqbFxeXGRmZFxaXCwuLOzq
-   7KyurHx+fDwmFEQuFCweFCQWDBQODBwaHBweHKSinJSWlOTi5JyepHR2dDw6
-   PBQSFNze3ERGRIyKjIyOjISGhPz29Pzy7MS2rMzOzFRWVHx2dHxybDQiFPz2
-   7Pzu5PTq3PTm1NTCtJyGdHxuZHxqXPzq3PTaxNS6pFxWVFRKRNS2nPTi1PTS
-   tNSulNzOxNSynMymhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAA
-   LAAAAAAWABYAAAf/gACCgwABAgMEBYSLggaOjgcICQoLDA2Pj4MGDg8QEZ4F
-   DxITFBUWFxcYGRobjQ8cHR4fCQ8gCyEiFSMWJCUkJieNEB4dKB4pKissK8wr
-   LS4vMDHBAAYQHx8dFx0fJDIzNDU0M+IyHzaNNyg43Ng5Ojs7Ojw9Pj9AMkCN
-   DiZB/h9CSOx4QLCgihItqBkYgqIDESElitAYWJCgkQcXjjRCgi1Ihw4BB5LA
-   QOLCgyQYHihpUU3DBw5ElpAgAYNixSRJjKjQaECDCRPZPDB5IbIGSQwKLnh4
-   wbInLA4kmJB4oaPiAwVNnER40hRK1BIAaVatUZJEFCkmpmjgCeWDCalFe4q4
-   oFKwSRUrEa5gycLzwq8lUnPQ4PEgSpYcUZ5o2cIlS1O/JHLEDdfjQZMIVrpg
-   weLFy5e+M6WSmBGlxYMYYBRzCaOFi5imHWBIfOEiShLTVjaP6eyFTBmN1TA5
-   OvLDjJksWb58OVMGDRqWjAYdmU79SIvpjqJr104nEAAh/mhDcmVhdGVkIGJ5
-   IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5
-   OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29y
-   LmNvbQA7
-EOD
-
-editdelete22 = TkPhotoImage.new(:data=><<'EOD')
-   R0lGODlhFgAWAIYAAASC/FRSVExKTERCRDw6PDQyNCwuLBweHBwaHAwODAwK
-   DAQCBExOTNze3NTW1MTGxLS2tJyanPz+/Ozu7BQSFCwqLDw+POTi5PTu7MzK
-   xIR+fCQmJPz6/Oze1NTGvPz69Pzy7Pz29LyyrPy+vPyupPTm1BQWFIQCBPwC
-   BMS6rPzSzNTOxPTi1NS+rPTezNzOxPTizOzWxMy2pOzaxMy2nPTaxOzOtMyy
-   nOzSvMyqjPx+fOzGpMSihPTq3OzKrOTCpNzKxNTCtAAAAAAAAAAAAAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAA
-   LAAAAAAWABYAAAf8gACCAQIDBAUGBwgJCgsLgpCRAAwNlZYODxALEY+SkAMN
-   EqKjEw0UD5yegqCjrRMVEqidkgWhraMWF7GptLa3EgEWFRSOnhW+vxgZEBqz
-   kBvItxwdHryRCNGjHyAhHSLOgtgSI60c2yQjJd+eJqEnKK0hJCgnJSngAO0S
-   F+8qEvL0VrBogW+BLX4oVKgIyMIFQU8KfDV4R+8FDBcxZBREthAFiRIsOsyg
-   sVEUh4Un3pGoUcPGjZInK65QicPlxg8oX5RwqNJGjo0hdJwQ6EIkjRM6dvDY
-   CKIHSBc1Ztjw4eOH0oIrsgIJEqSFDBo0cuTgsdSTo7No0xYTZCcQACH+aENy
-   ZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29y
-   IDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cu
-   ZGV2ZWxjb3IuY29tADs=
-EOD
-
-text22 = TkPhotoImage.new(:data=><<'EOD')
-   R0lGODlhFgAWAIQAAPwCBAQCBBwaHAwKDBQSFLy+vLS2tJSWlBQWFKyqrFRS
-   VCwqLDQyNNTS1GxqbFxaXJyanIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAVcICCOZGmK
-   QSoMaZsShBsQBdAapHvgaIDUqUPJlRjSbAoT0fRDKgODRbF0PLUYjZO2F2Bs
-   t9evNix+dsvDlGKK5jraudQb7qbX6a2HEJ+ycyF+LRE8ZTI+fX5oGCEAIf5o
-   Q3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxD
-   b3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3
-   dy5kZXZlbGNvci5jb20AOw==
-EOD
-
-##########################################
-
-bmp_dir = File.join(File.dirname(File.expand_path(__FILE__)), 
-                    '../catalog_demo/images')
-
-##########################################
-
-status_var = TkVariable.new
-radio_var  = TkVariable.new
-check_var1 = TkVariable.new
-check_var2 = TkVariable.new
-
-tb = Tk::Iwidgets::Toolbar.new(:helpvariable=>status_var)
-
-##########################################
-
-tb.add(:button, :helpstr=>'Copy It', :image=>editcopy22, 
-       :balloonstr=>'Copy', :command=>proc{puts 'Copy It'})
-
-tb.add(:button, :helpstr=>'Cut It', :image=>editcut22, 
-       :balloonstr=>'Cut', :command=>proc{puts 'Cut It'})
-
-tb.add(:button, :helpstr=>'Paste It', :image=>editpaste22, 
-       :balloonstr=>'Paste', :command=>proc{puts 'Paste It'})
-
-tb.add(:button, :helpstr=>'Delete It', :image=>editdelete22, 
-       :balloonstr=>'Delete', :command=>proc{puts 'Delete It'})
-
-#--------------------------------
-
-tb.add(:frame, :borderwidth=>1, :width=>10, :height=>10)
-
-#--------------------------------
-
-tb.add(:radiobutton, :variable=>radio_var, :value=>'Box', 
-       :bitmap=>"@#{bmp_dir}/box.xbm", 
-       :helpstr=>'Radio Button #1', :balloonstr=>'Radio', 
-       :command=>proc{puts 'Radio Button "Box"'})
-
-tb.add(:radiobutton, :variable=>radio_var, :value=>'Line', 
-       :bitmap=>"@#{bmp_dir}/line.xbm", 
-       :helpstr=>'Radio Button #2', :balloonstr=>'Radio', 
-       :command=>proc{puts 'Radio Button "Line"'})
-
-tb.add(:radiobutton, :variable=>radio_var, :value=>'Oval', 
-       :bitmap=>"@#{bmp_dir}/oval.xbm", 
-       :helpstr=>'Radio Button #3', :balloonstr=>'Radio', 
-       :command=>proc{puts 'Radio Button "Oval"'})
-
-#--------------------------------
-
-tb.add(:frame, :borderwidth=>1, :width=>10, :height=>10)
-
-#--------------------------------
-
-tb.add(:checkbutton, :variable=>check_var1, :onvalue=>'yes', :offvalue=>'no', 
-       :image=>text22, :command=>proc{puts 'Checkbutton 1'})
-
-tb.add(:checkbutton, :variable=>check_var2, :onvalue=>'yes', :offvalue=>'no', 
-       :bitmap=>"@#{bmp_dir}/points.xbm", :command=>proc{puts 'Checkbutton 2'})
-
-tb.pack(:side=>:top, :anchor=>:nw)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/watch.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/sample/tkextlib/iwidgets/watch.rb
deleted file mode 100644 (file)
index 808c798..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Thread.new{
-  trap('INT') {puts 'catch SIGINT'}
-  sleep 5
-  trap('INT', 'DEFAULT')
-}
-
-Tk::Iwidgets::Watch.new(:state=>:disabled, :showampm=>:no, 
-                        :width=>155, :height=>155){|w|
-  w.pack(:padx=>10, :pady=>10, :fill=>:both, :expand=>true)
-  # TkTimer.new(1000, -1, proc{w.show; Tk.update}).start
-  TkTimer.new(25, -1, proc{w.show; Tk.update}).start
-}
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/scrollframe.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/scrollframe.rb
deleted file mode 100644 (file)
index b0ac6d3..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-#
-#  Tk::ScrollFrame class
-#
-#    This widget class is a frame widget with scrollbars.
-#    The ScrollFrame doesn't propagate the size of embedded widgets.
-#    When it is configured, scrollregion of the container is changed.
-#
-#    Scrollbars can be toggled by Tk::ScrollFrame#vscroll & hscroll.
-#    If horizontal or virtical scrollbar is turned off, the horizontal 
-#    or virtical size of embedded widgets is propagated.
-#
-#                         Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
-#
-require 'tk'
-
-class Tk::ScrollFrame < TkFrame
-  include TkComposite
-
-  DEFAULT_WIDTH  = 200
-  DEFAULT_HEIGHT = 200
-
-  def initialize_composite(keys={})
-    @frame.configure(:width=>DEFAULT_WIDTH, :height=>DEFAULT_HEIGHT)
-
-    # create scrollbars
-    @h_scroll = TkScrollbar.new(@frame, 'orient'=>'horizontal')
-    @v_scroll = TkScrollbar.new(@frame, 'orient'=>'vertical')
-
-    # create a canvas widget
-    @canvas = TkCanvas.new(@frame, 
-                           :borderwidth=>0, :selectborderwidth=>0, 
-                           :highlightthickness=>0)
-
-    # allignment
-    TkGrid.rowconfigure(@frame, 0, 'weight'=>1, 'minsize'=>0)
-    TkGrid.columnconfigure(@frame, 0, 'weight'=>1, 'minsize'=>0)
-    @canvas.grid('row'=>0, 'column'=>0, 'sticky'=>'news')
-    @frame.grid_propagate(false)
-
-    # assign scrollbars
-    @canvas.xscrollbar(@h_scroll)
-    @canvas.yscrollbar(@v_scroll)
-
-    # convert hash keys
-    keys = _symbolkey2str(keys)
-
-    # check options for the frame
-    framekeys = {}
-    if keys.key?('classname')
-       keys['class'] = keys.delete('classname')
-    end
-    if @classname = keys.delete('class')
-      framekeys['class'] = @classname
-    end
-    if @colormap  = keys.delete('colormap')
-      framekeys['colormap'] = @colormap
-    end
-    if @container = keys.delete('container')
-      framekeys['container'] = @container
-    end
-    if @visual    = keys.delete('visual')
-      framekeys['visual'] = @visual
-    end
-    if @classname.kind_of? TkBindTag
-      @db_class = @classname
-      @classname = @classname.id
-    elsif @classname
-      @db_class = TkDatabaseClass.new(@classname)
-    else
-      @db_class = self.class
-      @classname = @db_class::WidgetClassName
-    end
-
-    # create base frame
-    @base = TkFrame.new(@canvas, framekeys)
-
-    # embed base frame
-    @cwin = TkcWindow.new(@canvas, [0, 0], :window=>@base, :anchor=>'nw')
-    @canvas.scrollregion(@cwin.bbox)
-
-    # binding to reset scrollregion
-    @base.bind('Configure'){ _reset_scrollregion(nil, nil) }
-
-    # set default receiver of method calls
-    @path = @base.path
-
-    # scrollbars ON
-    vscroll(keys.delete('vscroll'){true})
-    hscroll(keys.delete('hscroll'){true})
-
-    # please check the differences of the following definitions
-    option_methods(
-      :scrollbarwidth
-    )
-
-    # set receiver widgets for configure methods (with alias)
-    delegate_alias('scrollbarrelief', 'relief', @h_scroll, @v_scroll)
-
-    # set receiver widgets for configure methods
-    delegate('DEFAULT', @base)
-    delegate('background', @frame, @base, @canvas, @h_scroll, @v_scroll)
-    delegate('width', @frame)
-    delegate('height', @frame)
-    delegate('activebackground', @h_scroll, @v_scroll)
-    delegate('troughcolor', @h_scroll, @v_scroll)
-    delegate('repeatdelay', @h_scroll, @v_scroll)
-    delegate('repeatinterval', @h_scroll, @v_scroll)
-    delegate('borderwidth', @frame)
-    delegate('relief', @frame)
-
-    # do configure
-    configure keys unless keys.empty?
-  end
-
-  # callback for Configure event
-  def _reset_scrollregion(h_mod=nil, v_mod=nil)
-    cx1, cy1, cx2, cy2 = @canvas.scrollregion
-    x1, y1, x2, y2 = @cwin.bbox
-    @canvas.scrollregion([x1, y1, x2, y2])
-
-    if h_mod.nil? && v_mod.nil?
-      if x2 != cx2 && TkGrid.info(@h_scroll).size == 0
-        @frame.grid_propagate(true)
-        @canvas.width  = x2
-        Tk.update_idletasks
-        @frame.grid_propagate(false)
-      end
-      if y2 != cy2 && TkGrid.info(@v_scroll).size == 0
-        @frame.grid_propagate(true)
-        @canvas.height = y2
-        Tk.update_idletasks
-        @frame.grid_propagate(false)
-      end
-    else
-      @h_scroll.ungrid if h_mod == false
-      @v_scroll.ungrid if v_mod == false
-
-      h_flag = (TkGrid.info(@h_scroll).size == 0)
-      v_flag = (TkGrid.info(@v_scroll).size == 0)
-
-      @frame.grid_propagate(true)
-
-      @canvas.width  = (h_flag)? x2: @canvas.winfo_width
-      @canvas.height = (v_flag)? y2: @canvas.winfo_height
-
-      @h_scroll.grid('row'=>1, 'column'=>0, 'sticky'=>'ew') if h_mod
-      @v_scroll.grid('row'=>0, 'column'=>1, 'sticky'=>'ns') if v_mod
-
-      Tk.update_idletasks
-
-      @frame.grid_propagate(false)
-    end
-  end
-  private :_reset_scrollregion
-
-  # forbid to change binding of @base frame
-  def bind(*args)
-    @frame.bind(*args)
-  end
-  def bind_append(*args)
-    @frame.bind_append(*args)
-  end
-  def bind_remove(*args)
-    @frame.bind_remove(*args)
-  end
-  def bindinfo(*args)
-    @frame.bindinfo(*args)
-  end
-
-  # set width of scrollbar
-  def scrollbarwidth(width = nil)
-    if width
-      @h_scroll.width(width)
-      @v_scroll.width(width)
-    else
-      @h_scroll.width
-    end
-  end
-
-  # vertical scrollbar : ON/OFF
-  def vscroll(mode)
-    Tk.update_idletasks
-    st = TkGrid.info(@v_scroll)
-    if mode && st.size == 0 then
-      @v_scroll.grid('row'=>0, 'column'=>1, 'sticky'=>'ns')
-      _reset_scrollregion(nil, true)
-    elsif !mode && st.size != 0 then
-      _reset_scrollregion(nil, false)
-    else
-      _reset_scrollregion(nil, nil)
-    end
-    self
-  end
-
-  # horizontal scrollbar : ON/OFF
-  def hscroll(mode)
-    Tk.update_idletasks
-    st = TkGrid.info(@h_scroll)
-    if mode && st.size == 0 then
-      _reset_scrollregion(true, nil)
-    elsif !mode && st.size != 0 then
-      _reset_scrollregion(false, nil)
-    else
-      _reset_scrollregion(nil, nil)
-    end
-    self
-  end
-end
-
-# test
-if __FILE__ == $0
-  f = Tk::ScrollFrame.new(:scrollbarwidth=>10, :width=>300, :height=>200)
-  f.pack(:expand=>true, :fill=>:both)
-
-  TkButton.new(f, :text=>'foo button', :command=>proc{puts 'foo'}).pack
-  TkButton.new(f, :text=>'baaar button', :command=>proc{puts 'baaar'}).pack
-  TkButton.new(f, :text=>'baz button', :command=>proc{puts 'baz'}).pack
-  TkButton.new(f, :text=>'hoge hoge button', 
-               :command=>proc{puts 'hoge hoge'}).pack(:side=>:bottom)
-
-  # f.hscroll(false)
-
-  Tk.after(3000){
-    t = TkText.new(f).pack(:expand=>true, :fill=>:both)
-    t.insert(:end, 'Here is a text widget')
-  }
-
-  Tk.after(6000){ f.vscroll(false) }
-
-  Tk.after(9000){ f.vscroll(true) }
-
-  Tk.after(12000){ f.hscroll(false) }
-
-  Tk.after(15000){ f.hscroll(true) }
-
-  Tk.mainloop
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/batsu.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/batsu.gif
deleted file mode 100644 (file)
index 880cc73..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/batsu.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines0.tcl b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines0.tcl
deleted file mode 100644 (file)
index 8ed3c5e..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#! /usr/local/bin/wish
-
-proc drawlines {} {
-    puts [clock format [clock seconds]]
-
-    for {set j 0} {$j < 100} {incr j} {
-       puts -nonewline "*"
-       flush stdout
-       if {$j & 1} {
-           set c "blue"
-       } {
-           set c "red"
-       }
-       for {set i 0} {$i < 100} {incr i} {
-#          .a create line $i 0 0 [expr 500 - $i] -fill $c
-       }
-    }
-
-    puts [clock format [clock seconds]]
-
-    for {set j 0} {$j < 100} {incr j} {
-       puts -nonewline "*"
-       flush stdout
-       if {$j & 1} {
-           set c "blue"
-       } {
-           set c "red"
-       }
-       for {set i 0} {$i < 100} {incr i} {
-           .a create line $i 0 0 [expr 500 - $i] -fill $c
-       }
-    }
-
-    puts [clock format [clock seconds]]
-#    destroy .
-}
-
-canvas .a -height 500 -width 500
-button .b -text draw -command drawlines
-pack .a .b -side left
-
-# eof
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines1.rb
deleted file mode 100644 (file)
index 9f21ae6..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#! /usr/local/bin/ruby
-
-require "tcltk"
-
-def drawlines()
-  print Time.now, "\n"
-
-  for j in 0 .. 99
-    print "*"
-    $stdout.flush
-    if (j & 1) != 0
-      col = "blue"
-    else
-      col = "red"
-    end
-    for i in 0 .. 99
-#      $a.e("create line", i, 0, 0, 500 - i, "-fill", col)
-    end
-  end
-
-  print Time.now, "\n"
-
-  for j in 0 .. 99
-    print "*"
-    $stdout.flush
-    if (j & 1) != 0
-      col = "blue"
-    else
-      col = "red"
-    end
-    for i in 0 .. 99
-      $a.e("create line", i, 0, 0, 500 - i, "-fill", col)
-    end
-  end
-
-  print Time.now, "\n"
-#  $ip.commands()["destroy"].e($root)
-end
-
-$ip = TclTkInterpreter.new()
-$root = $ip.rootwidget()
-$a = TclTkWidget.new($ip, $root, "canvas", "-height 500 -width 500")
-$c = TclTkCallback.new($ip, proc{drawlines()})
-$b = TclTkWidget.new($ip, $root, "button", "-text draw -command", $c)
-
-$ip.commands()["pack"].e($a, $b, "-side left")
-
-TclTk.mainloop
-
-# eof
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines2.rb
deleted file mode 100644 (file)
index e459589..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-#! /usr/local/bin/ruby
-
-require "tk"
-
-def drawlines()
-  print Time.now, "\n"
-
-  for j in 0 .. 99
-    print "*"
-    $stdout.flush
-    if (j & 1) != 0
-      col = "blue"
-    else
-      col = "red"
-    end
-    for i in 0 .. 99
-#      TkcLine.new($a, i, 0, 0, 500 - i, "-fill", col)
-    end
-  end
-
-  print Time.now, "\n"
-
-  for j in 0 .. 99
-    print "*"
-    $stdout.flush
-    if (j & 1) != 0
-      col = "blue"
-    else
-      col = "red"
-    end
-    for i in 0 .. 99
-      TkcLine.new($a, i, 0, 0, 500 - i, "-fill", col)
-    end
-  end
-
-  print Time.now, "\n"
-#  Tk.root.destroy
-end
-
-$a = TkCanvas.new{
-  height(500)
-  width(500)
-}
-
-$b = TkButton.new{
-  text("draw")
-  command(proc{drawlines()})
-}
-
-TkPack.configure($a, $b, {"side"=>"left"})
-
-Tk.mainloop
-
-# eof
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines3.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines3.rb
deleted file mode 100644 (file)
index caa50f9..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-#! /usr/local/bin/ruby
-
-require "tk"
-
-def drawlines()
-  print Time.now, "\n"
-
-  for j in 0 .. 99
-    print "*"
-    $stdout.flush
-    if (j & 1) != 0
-      col = "blue"
-    else
-      col = "red"
-    end
-    for i in 0 .. 99
-#      $a.create(TkcLine, i, 0, 0, 500 - i, "fill"=>col)
-    end
-  end
-
-  print Time.now, "\n"
-
-  for j in 0 .. 99
-    print "*"
-    $stdout.flush
-    if (j & 1) != 0
-      col = "blue"
-    else
-      col = "red"
-    end
-    for i in 0 .. 99
-      $a.create(TkcLine, i, 0, 0, 500 - i, "fill"=>col)
-    end
-  end
-
-  print Time.now, "\n"
-#  Tk.root.destroy
-end
-
-$a = TkCanvas.new{
-  height(500)
-  width(500)
-}
-
-$b = TkButton.new{
-  text("draw")
-  command(proc{drawlines()})
-}
-
-TkPack.configure($a, $b, {"side"=>"left"})
-
-Tk.mainloop
-
-# eof
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines4.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/lines4.rb
deleted file mode 100644 (file)
index 7a1175b..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-#! /usr/local/bin/ruby
-
-require "tk"
-
-def drawlines()
-  print Time.now, "\n"
-
-  for j in 0 .. 99
-    print "*"
-    $stdout.flush
-    if (j & 1) != 0
-      col = "blue"
-    else
-      col = "red"
-    end
-    for i in 0 .. 99
-#      TkCore::INTERP.__invoke($a.path, "create", "line", i.to_s, '0', '0', (500 - i).to_s, "-fill", col)
-    end
-  end
-
-  print Time.now, "\n"
-
-  for j in 0 .. 99
-    print "*"
-    $stdout.flush
-    if (j & 1) != 0
-      col = "blue"
-    else
-      col = "red"
-    end
-    for i in 0 .. 99
-      TkCore::INTERP.__invoke($a.path, "create", "line", i.to_s, '0', '0', (500 - i).to_s, "-fill", col)
-    end
-  end
-
-  print Time.now, "\n"
-#  Tk.root.destroy
-end
-
-$a = TkCanvas.new{
-  height(500)
-  width(500)
-}
-
-$b = TkButton.new{
-  text("draw")
-  command(proc{drawlines()})
-}
-
-TkPack.configure($a, $b, {"side"=>"left"})
-
-Tk.mainloop
-
-# eof
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/maru.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/maru.gif
deleted file mode 100644 (file)
index 2c02028..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/maru.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/safeTk.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/safeTk.rb
deleted file mode 100644 (file)
index 5d2c60e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env ruby
-require 'tcltklib'
-
-master = TclTkIp.new
-slave_name = 'slave0'
-slave = master.create_slave(slave_name, true)
-master._eval("::safe::interpInit #{slave_name}")
-master._eval("::safe::loadTk #{slave_name}")
-
-master._invoke('label', '.l1', '-text', 'master')
-master._invoke('pack', '.l1', '-padx', '30', '-pady', '50')
-master._eval('label .l2 -text {root widget of master-ip}')
-master._eval('pack .l2 -padx 30 -pady 50')
-
-slave._invoke('label', '.l1', '-text', 'slave')
-slave._invoke('pack', '.l1', '-padx', '30', '-pady', '50')
-slave._eval('label .l2 -text {root widget of slave-ip}')
-slave._eval('pack .l2 -padx 30 -pady 20')
-slave._eval('label .l3 -text {( container frame widget of master-ip )}')
-slave._eval('pack .l3 -padx 30 -pady 20')
-
-TclTkLib.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/sample0.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/sample0.rb
deleted file mode 100644 (file)
index cd4c806..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#! /usr/local/bin/ruby -vd
-
-# tcltklib ¥é¥¤¥Ö¥é¥ê¤Î¥Æ¥¹¥È
-
-require "tcltklib"
-
-def test
-  # ¥¤¥ó¥¿¥×¥ê¥¿¤òÀ¸À®¤¹¤ë
-  ip1 = TclTkIp.new()
-
-  # É¾²Á¤·¤Æ¤ß¤ë
-  print ip1._return_value().inspect, "\n"
-  print ip1._eval("puts {abc}").inspect, "\n"
-
-  # ¥Ü¥¿¥ó¤òºî¤Ã¤Æ¤ß¤ë
-  print ip1._return_value().inspect, "\n"
-  print ip1._eval("button .lab -text exit -command \"destroy .\"").inspect,
-    "\n"
-  print ip1._return_value().inspect, "\n"
-  print ip1._eval("pack .lab").inspect, "\n"
-  print ip1._return_value().inspect, "\n"
-
-  # ¥¤¥ó¥¿¥×¥ê¥¿¤«¤é ruby ¥³¥Þ¥ó¥É¤òɾ²Á¤·¤Æ¤ß¤ë
-#  print ip1._eval(%q/ruby {print "print by ruby\n"}/).inspect, "\n"
-  print ip1._eval(%q+puts [ruby {print "print by ruby\n"; "puts by tcl/tk"}]+).inspect, "\n"
-  print ip1._return_value().inspect, "\n"
-
-  # ¤â¤¦°ì¤Ä¥¤¥ó¥¿¥×¥ê¥¿¤òÀ¸À®¤·¤Æ¤ß¤ë
-  ip2 = TclTkIp.new()
-  ip2._eval("button .lab -text test -command \"puts test ; destroy .\"")
-  ip2._eval("pack .lab")
-
-  TclTkLib.mainloop
-end
-
-test
-GC.start
-
-print "exit\n"
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/sample1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/sample1.rb
deleted file mode 100644 (file)
index 13df440..0000000
+++ /dev/null
@@ -1,634 +0,0 @@
-#! /usr/local/bin/ruby -d
-#! /usr/local/bin/ruby
-# -d ¥ª¥×¥·¥ç¥ó¤òÉÕ¤±¤ë¤È, ¥Ç¥Ð¥Ã¥°¾ðÊó¤òɽ¼¨¤¹¤ë.
-
-# tcltk ¥é¥¤¥Ö¥é¥ê¤Î¥µ¥ó¥×¥ë
-
-# ¤Þ¤º, ¥é¥¤¥Ö¥é¥ê¤ò require ¤¹¤ë.
-require "tcltk"
-
-# °Ê²¼¤Ï, Test1 ¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Î initialize() ¤Ç,
-# tcl/tk ¤Ë´Ø¤¹¤ë½èÍý¤ò¹Ô¤¦Îã¤Ç¤¢¤ë.
-# É¬¤º¤·¤â¤½¤Î¤è¤¦¤Ë¤¹¤ëɬÍפÏ̵¤¯,
-# (¤â¤·, ¤½¤¦¤·¤¿¤±¤ì¤Ð) class ¤Î³°¤Ç tcl/tk ¤Ë´Ø¤¹¤ë½èÍý¤ò¹Ô¤Ã¤Æ¤âÎɤ¤.
-
-class Test1
-  # ½é´ü²½(¥¤¥ó¥¿¥×¥ê¥¿¤òÀ¸À®¤·¤Æ¥¦¥£¥¸¥§¥Ã¥È¤òÀ¸À®¤¹¤ë).
-  def initialize()
-
-    #### »È¤¦Á°¤Î¤ª¤Þ¤¸¤Ê¤¤
-
-    # ¥¤¥ó¥¿¥×¥ê¥¿¤ÎÀ¸À®.
-    ip = TclTkInterpreter.new()
-    # ¥³¥Þ¥ó¥É¤ËÂбþ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È¤ò c ¤ËÀßÄꤷ¤Æ¤ª¤¯.
-    c = ip.commands()
-    # »ÈÍѤ¹¤ë¥³¥Þ¥ó¥É¤ËÂбþ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È¤ÏÊÑ¿ô¤ËÆþ¤ì¤Æ¤ª¤¯.
-    append, bind, button, destroy, incr, info, label, place, set, wm =
-      c.values_at(
-      "append", "bind", "button", "destroy", "incr", "info", "label", "place",
-      "set", "wm")
-
-    #### tcl/tk ¤Î¥³¥Þ¥ó¥É¤ËÂбþ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È(TclTkCommand)¤ÎÁàºî
-
-    # ¼Â¹Ô¤¹¤ë»þ¤Ï, e() ¥á¥½¥Ã¥É¤ò»È¤¦.
-    # (°Ê²¼¤Ï, tcl/tk ¤Ë¤ª¤±¤ë info command r* ¤ò¼Â¹Ô.)
-    print info.e("command", "r*"), "\n"
-    # °ú¿ô¤Ï, ¤Þ¤È¤á¤¿Ê¸»úÎó¤Ë¤·¤Æ¤âƱ¤¸.
-    print info.e("command r*"), "\n"
-    # ÊÑ¿ô¤òÍѤ¤¤Ê¤¯¤È¤â¼Â¹Ô¤Ç¤­¤ë¤¬, ¸«¤¿¤á¤¬°­¤¤.
-    print c["info"].e("command", "r*"), "\n"
-    # ¥¤¥ó¥¿¥×¥ê¥¿¤Î¥á¥½¥Ã¥É¤È¤·¤Æ¤â¼Â¹Ô¤Ç¤­¤ë¤¬, ¸úΨ¤¬°­¤¤.
-    print ip.info("command", "r*"), "\n"
-
-    ####
-
-    # °Ê²¼, À¸À®¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ÏÊÑ¿ô¤ËÂåÆþ¤·¤Æ¤ª¤«¤Ê¤¤¤È
-    # GC ¤ÎÂоݤˤʤäƤ·¤Þ¤¦.
-
-    #### tcl/tk ¤ÎÊÑ¿ô¤ËÂбþ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È(TclTkVariable)¤ÎÁàºî
-
-    # À¸À®¤ÈƱ»þ¤ËÃͤòÀßÄꤹ¤ë.
-    v1 = TclTkVariable.new(ip, "20")
-    # Æɤ߽Ф·¤Ï get ¥á¥½¥Ã¥É¤ò»È¤¦.
-    print v1.get(), "\n"
-    # ÀßÄê¤Ï set ¥á¥½¥Ã¥É¤ò»È¤¦.
-    v1.set(40)
-    print v1.get(), "\n"
-    # set ¥³¥Þ¥ó¥É¤ò»È¤Ã¤ÆÆɤ߽Ф·, ÀßÄê¤Ï²Äǽ¤À¤¬¸«¤¿¤á¤¬°­¤¤.
-    # e() ¥á¥½¥Ã¥ÉÅù¤Î°ú¿ô¤ËľÀÜ TclTkObject ¤ä¿ôÃͤò½ñ¤¤¤Æ¤âÎɤ¤.
-    set.e(v1, 30)
-    print set.e(v1), "\n"
-    # tcl/tk ¤Î¥³¥Þ¥ó¥É¤ÇÊÑ¿ô¤òÁàºî¤Ç¤­¤ë.
-    incr.e(v1)
-    print v1.get(), "\n"
-    append.e(v1, 10)
-    print v1.get(), "\n"
-
-    #### tcl/tk ¤Î¥¦¥£¥¸¥§¥Ã¥È¤ËÂбþ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È(TclTkWidget)¤ÎÁàºî
-
-    # ¥ë¡¼¥È¥¦¥£¥¸¥§¥Ã¥È¤ò¼è¤ê½Ð¤¹.
-    root = ip.rootwidget()
-    # ¥¦¥£¥¸¥§¥Ã¥È¤ÎÁàºî.
-    root.e("configure -height 300 -width 300")
-    # ¥¿¥¤¥È¥ë¤òÉÕ¤±¤ë¤È¤­¤Ï wm ¤ò»È¤¦.
-    wm.e("title", root, $0)
-    # ¿Æ¥¦¥£¥¸¥§¥Ã¥È¤È¥³¥Þ¥ó¥É¤ò»ØÄꤷ¤Æ, ¥¦¥£¥¸¥§¥Ã¥È¤òºî¤ë.
-    l1 = TclTkWidget.new(ip, root, label, "-text {type `x' to print}")
-    # place ¤¹¤ë¤Èɽ¼¨¤µ¤ì¤ë.
-    place.e(l1, "-x 0 -rely 0.0 -relwidth 1 -relheight 0.1")
-    # ¥³¥Þ¥ó¥É̾¤Ïʸ»úÎó¤Ç»ØÄꤷ¤Æ¤âÎɤ¤¤¬, ¸«¤¿¤á¤¬°­¤¤.
-    # (¥³¥Þ¥ó¥É̾¤ÏÆÈΩ¤·¤¿°ú¿ô¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤.)
-    l2 = TclTkWidget.new(ip, root, "label")
-    # ¥¦¥£¥¸¥§¥Ã¥È¤ÎÁàºî.
-    l2.e("configure -text {type `q' to exit}")
-    place.e(l2, "-x 0 -rely 0.1 -relwidth 1 -relheight 0.1")
-
-    #### tcl/tk ¤Î¥³¡¼¥ë¥Ð¥Ã¥¯¤ËÂбþ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È(TclTkCallback)¤ÎÁàºî
-
-    # ¥³¡¼¥ë¥Ð¥Ã¥¯¤òÀ¸À®¤¹¤ë.
-    c1 = TclTkCallback.new(ip, proc{sample(ip, root)})
-    # ¥³¡¼¥ë¥Ð¥Ã¥¯¤ò»ý¤Ä¥¦¥£¥¸¥§¥Ã¥È¤òÀ¸À®¤¹¤ë.
-    b1 = TclTkWidget.new(ip, root, button, "-text sample -command", c1)
-    place.e(b1, "-x 0 -rely 0.2 -relwidth 1 -relheight 0.1")
-    # ¥¤¥Ù¥ó¥È¥ë¡¼¥×¤òÈ´¤±¤ë¤Ë¤Ï destroy.e(root) ¤¹¤ë.
-    c2 = TclTkCallback.new(ip, proc{destroy.e(root)})
-    b2 = TclTkWidget.new(ip, root, button, "-text exit -command", c2)
-    place.e(b2, "-x 0 -rely 0.3 -relwidth 1 -relheight 0.1")
-
-    #### ¥¤¥Ù¥ó¥È¤Î¥Ð¥¤¥ó¥É
-    # script ¤ÎÄɲà(bind tag sequence +script) ¤Ïº£¤Î¤È¤³¤í¤Ç¤­¤Ê¤¤.
-    # (¥¤¥Æ¥ì¡¼¥¿ÊÑ¿ô¤ÎÀßÄ꤬¤¦¤Þ¤¯¤¤¤«¤Ê¤¤.)
-
-    # ´ðËÜŪ¤Ë¤Ï¥¦¥£¥¸¥§¥Ã¥È¤ËÂФ¹¤ë¥³¡¼¥ë¥Ð¥Ã¥¯¤ÈƱ¤¸.
-    c3 = TclTkCallback.new(ip, proc{print("q pressed\n"); destroy.e(root)})
-    bind.e(root, "q", c3)
-    # bind ¥³¥Þ¥ó¥É¤Ç % ÃÖ´¹¤Ë¤è¤ê¥Ñ¥é¥á¡¼¥¿¤ò¼õ¤±¼è¤ê¤¿¤¤¤È¤­¤Ï,
-    # proc{} ¤Î¸å¤í¤Ëʸ»úÎó¤Ç»ØÄꤹ¤ë¤È,
-    # ÃÖ´¹·ë²Ì¤ò¥¤¥Æ¥ì¡¼¥¿ÊÑ¿ô¤òÄ̤·¤Æ¼õ¤±¼è¤ë¤³¤È¤¬¤Ç¤­¤ë.
-    # ¤¿¤À¤· proc{} ¤Î¸å¤í¤Îʸ»úÎó¤Ï,
-    # bind ¥³¥Þ¥ó¥É¤ËÍ¿¤¨¤ë¥³¡¼¥ë¥Ð¥Ã¥¯°Ê³°¤Ç»ØÄꤷ¤Æ¤Ï¤¤¤±¤Ê¤¤.
-    c4 = TclTkCallback.new(ip, proc{|i| print("#{i} pressed\n")}, "%A")
-    bind.e(root, "x", c4)
-    # TclTkCallback ¤ò GC ¤ÎÂоݤˤ·¤¿¤±¤ì¤Ð,
-    # dcb() (¤Þ¤¿¤Ï deletecallbackkeys()) ¤¹¤ëɬÍפ¬¤¢¤ë.
-    cb = [c1, c2, c3, c4]
-    c5 = TclTkCallback.new(ip, proc{|w| TclTk.dcb(cb, root, w)}, "%W")
-    bind.e(root, "<Destroy>", c5)
-    cb.push(c5)
-
-    #### tcl/tk ¤Î¥¤¥á¡¼¥¸¤ËÂбþ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È(TclTkImage)¤ÎÁàºî
-
-    # ¥Ç¡¼¥¿¤ò»ØÄꤷ¤ÆÀ¸À®¤¹¤ë.
-    i1 = TclTkImage.new(ip, "photo", "-file maru.gif")
-    # ¥é¥Ù¥ë¤ËÄ¥¤êÉÕ¤±¤Æ¤ß¤ë.
-    l3 = TclTkWidget.new(ip, root, label, "-relief raised -image", i1)
-    place.e(l3, "-x 0 -rely 0.4 -relwidth 0.2 -relheight 0.2")
-    # ¶õ¤Î¥¤¥á¡¼¥¸¤òÀ¸À®¤·¤Æ¸å¤ÇÁàºî¤¹¤ë.
-    i2 = TclTkImage.new(ip, "photo")
-    # ¥¤¥á¡¼¥¸¤òÁàºî¤¹¤ë.
-    i2.e("copy", i1)
-    i2.e("configure -gamma 0.5")
-    l4 = TclTkWidget.new(ip, root, label, "-relief raised -image", i2)
-    place.e(l4, "-relx 0.2 -rely 0.4 -relwidth 0.2 -relheight 0.2")
-
-    ####
-  end
-
-  # ¥µ¥ó¥×¥ë¤Î¤¿¤á¤Î¥¦¥£¥¸¥§¥Ã¥È¤òÀ¸À®¤¹¤ë.
-  def sample(ip, parent)
-    bind, button, destroy, grid, toplevel, wm = ip.commands().values_at(
-      "bind", "button", "destroy", "grid", "toplevel", "wm")
-
-    ## toplevel
-
-    # ¿·¤·¤¤¥¦¥¤¥ó¥É¥¦¤ò³«¤¯¤Ë¤Ï, toplevel ¤ò»È¤¦.
-    t1 = TclTkWidget.new(ip, parent, toplevel)
-    # ¥¿¥¤¥È¥ë¤òÉÕ¤±¤Æ¤ª¤¯
-    wm.e("title", t1, "sample")
-
-    # ¥¦¥£¥¸¥§¥Ã¥È¤¬Ç˲õ¤µ¤ì¤¿¤È¤­, ¥³¡¼¥ë¥Ð¥Ã¥¯¤¬ GC ¤ÎÂоݤˤʤë¤è¤¦¤Ë¤¹¤ë.
-    cb = []
-    cb.push(c = TclTkCallback.new(ip, proc{|w| TclTk.dcb(cb, t1, w)}, "%W"))
-    bind.e(t1, "<Destroy>", c)
-
-    # ¥Ü¥¿¥ó¤ÎÀ¸À®.
-    wid = []
-    # toplevel ¥¦¥£¥¸¥§¥Ã¥È¤òÇ˲õ¤¹¤ë¤Ë¤Ï destroy ¤¹¤ë.
-    cb.push(c = TclTkCallback.new(ip, proc{destroy.e(t1)}))
-    wid.push(TclTkWidget.new(ip, t1, button, "-text close -command", c))
-    cb.push(c = TclTkCallback.new(ip, proc{test_label(ip, t1)}))
-    wid.push(TclTkWidget.new(ip, t1, button, "-text label -command", c))
-    cb.push(c = TclTkCallback.new(ip, proc{test_button(ip, t1)}))
-    wid.push(TclTkWidget.new(ip, t1, button, "-text button -command", c))
-    cb.push(c = TclTkCallback.new(ip, proc{test_checkbutton(ip, t1)}))
-    wid.push(TclTkWidget.new(ip, t1, button, "-text checkbutton -command", c))
-    cb.push(c = TclTkCallback.new(ip, proc{test_radiobutton(ip, t1)}))
-    wid.push(TclTkWidget.new(ip, t1, button, "-text radiobutton -command", c))
-    cb.push(c = TclTkCallback.new(ip, proc{test_scale(ip, t1)}))
-    wid.push(TclTkWidget.new(ip, t1, button, "-text scale -command", c))
-    cb.push(c = TclTkCallback.new(ip, proc{test_entry(ip, t1)}))
-    wid.push(TclTkWidget.new(ip, t1, button, "-text entry -command", c))
-    cb.push(c = TclTkCallback.new(ip, proc{test_text(ip, t1)}))
-    wid.push(TclTkWidget.new(ip, t1, button, "-text text -command", c))
-    cb.push(c = TclTkCallback.new(ip, proc{test_raise(ip, t1)}))
-    wid.push(TclTkWidget.new(ip, t1, button, "-text raise/lower -command", c))
-    cb.push(c = TclTkCallback.new(ip, proc{test_modal(ip, t1)}))
-    wid.push(TclTkWidget.new(ip, t1, button, "-text message/modal -command",
-      c))
-    cb.push(c = TclTkCallback.new(ip, proc{test_menu(ip, t1)}))
-    wid.push(TclTkWidget.new(ip, t1, button, "-text menu -command", c))
-    cb.push(c = TclTkCallback.new(ip, proc{test_listbox(ip, t1)}))
-    wid.push(TclTkWidget.new(ip, t1, button, "-text listbox/scrollbar",
-      "-command", c))
-    cb.push(c = TclTkCallback.new(ip, proc{test_canvas(ip, t1)}))
-    wid.push(TclTkWidget.new(ip, t1, button, "-text canvas -command", c))
-
-    # grid ¤Çɽ¼¨¤¹¤ë.
-    ro = co = 0
-    wid.each{|w|
-      grid.e(w, "-row", ro, "-column", co, "-sticky news")
-      ro += 1
-      if ro == 7
-        ro = 0
-        co += 1
-      end
-    }
-  end
-
-  # inittoplevel(ip, parent, title)
-  #   °Ê²¼¤Î½èÍý¤ò¤Þ¤È¤á¤Æ¹Ô¤¦.
-  #       1. toplevel ¥¦¥£¥¸¥§¥Ã¥È¤òºîÀ®¤¹¤ë.
-  #       2. ¥³¡¼¥ë¥Ð¥Ã¥¯¤òÅÐÏ¿¤¹¤ëÇÛÎó¤òÍÑ°Õ¤·, toplevel ¥¦¥£¥¸¥§¥Ã¥È¤Î
-  #         <Destroy> ¥¤¥Ù¥ó¥È¤Ë¥³¡¼¥ë¥Ð¥Ã¥¯¤òºï½ü¤¹¤ë¼ê³¤­¤òÅÐÏ¿¤¹¤ë.
-  #       3. ¥¯¥í¡¼¥º¥Ü¥¿¥ó¤òºî¤ë.
-  #     ºîÀ®¤·¤¿ toplevel ¥¦¥£¥¸¥§¥Ã¥È, ¥¯¥í¡¼¥º¥Ü¥¿¥ó, ¥³¡¼¥ë¥Ð¥Ã¥¯ÅÐÏ¿ÍÑÊÑ¿ô
-  #     ¤òÊÖ¤¹.
-  #   ip: ¥¤¥ó¥¿¥×¥ê¥¿
-  #   parent: ¿Æ¥¦¥£¥¸¥§¥Ã¥È
-  #   title: toplevel ¥¦¥£¥¸¥§¥Ã¥È¤Î¥¦¥¤¥ó¥É¥¦¤Î¥¿¥¤¥È¥ë
-  def inittoplevel(ip, parent, title)
-    bind, button, destroy, toplevel, wm = ip.commands().values_at(
-      "bind", "button", "destroy", "toplevel", "wm")
-
-    # ¿·¤·¤¤¥¦¥¤¥ó¥É¥¦¤ò³«¤¯¤Ë¤Ï, toplevel ¤ò»È¤¦.
-    t1 = TclTkWidget.new(ip, parent, toplevel)
-    # ¥¿¥¤¥È¥ë¤òÉÕ¤±¤Æ¤ª¤¯
-    wm.e("title", t1, title)
-
-    # ¥¦¥£¥¸¥§¥Ã¥È¤¬Ç˲õ¤µ¤ì¤¿¤È¤­, ¥³¡¼¥ë¥Ð¥Ã¥¯¤¬ GC ¤ÎÂоݤˤʤë¤è¤¦¤Ë¤¹¤ë.
-    cb = []
-    cb.push(c = TclTkCallback.new(ip, proc{|w| TclTk.dcb(cb, t1, w)}, "%W"))
-    bind.e(t1, "<Destroy>", c)
-    # close ¥Ü¥¿¥ó¤òºî¤Ã¤Æ¤ª¤¯.
-    # toplevel ¥¦¥£¥¸¥§¥Ã¥È¤òÇ˲õ¤¹¤ë¤Ë¤Ï destroy ¤¹¤ë.
-    cb.push(c = TclTkCallback.new(ip, proc{destroy.e(t1)}))
-    b1 = TclTkWidget.new(ip, t1, button, "-text close -command", c)
-
-    return t1, b1, cb
-  end
-
-  # label ¤Î¥µ¥ó¥×¥ë.
-  def test_label(ip, parent)
-    button, global, label, pack = ip.commands().values_at(
-      "button", "global", "label", "pack")
-    t1, b1, cb = inittoplevel(ip, parent, "label")
-
-    ## label
-
-    # ¤¤¤í¤¤¤í¤Ê·Á¤Î¥é¥Ù¥ë.
-    l1 = TclTkWidget.new(ip, t1, label, "-text {default(flat)}")
-    l2 = TclTkWidget.new(ip, t1, label, "-text raised -relief raised")
-    l3 = TclTkWidget.new(ip, t1, label, "-text sunken -relief sunken")
-    l4 = TclTkWidget.new(ip, t1, label, "-text groove -relief groove")
-    l5 = TclTkWidget.new(ip, t1, label, "-text ridge -relief ridge")
-    l6 = TclTkWidget.new(ip, t1, label, "-bitmap error")
-    l7 = TclTkWidget.new(ip, t1, label, "-bitmap questhead")
-
-    # pack ¤·¤Æ¤âɽ¼¨¤µ¤ì¤ë.
-    pack.e(b1, l1, l2, l3, l4, l5, l6, l7, "-pady 3")
-
-    ## -textvariable
-
-    # tcltk ¥é¥¤¥Ö¥é¥ê¤Î¼ÂÁõ¤Ç¤Ï, ¥³¡¼¥ë¥Ð¥Ã¥¯¤Ï tcl/tk ¤Î``¼ê³¤­''¤òÄ̤·¤Æ
-    # ¸Æ¤Ð¤ì¤ë. ¤·¤¿¤¬¤Ã¤Æ, ¥³¡¼¥ë¥Ð¥Ã¥¯¤ÎÃæ¤Ç(Âç°è)ÊÑ¿ô¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤È¤­¤Ï,
-    # global ¤¹¤ëɬÍפ¬¤¢¤ë.
-    # global ¤¹¤ëÁ°¤ËÊÑ¿ô¤ËÃͤòÀßÄꤷ¤Æ¤·¤Þ¤¦¤È¥¨¥é¡¼¤Ë¤Ê¤ë¤Î¤Ç,
-    # tcl/tk ¤Ë¤ª¤±¤ëɽ¸½·Á¤À¤±À¸À®¤·¤Æ, ¼ÂºÝ¤ËÃͤòÀßÄꤷ¤Ê¤¤¤è¤¦¤Ë,
-    # 2 ÈÖÌܤΰú¿ô¤Ë¤Ï nil ¤òÍ¿¤¨¤ë.
-    v1 = TclTkVariable.new(ip, nil)
-    global.e(v1)
-    v1.set(100)
-    # -textvariable ¤ÇÊÑ¿ô¤òÀßÄꤹ¤ë.
-    l6 = TclTkWidget.new(ip, t1, label, "-textvariable", v1)
-    # ¥³¡¼¥ë¥Ð¥Ã¥¯¤ÎÃ椫¤éÊÑ¿ô¤òÁàºî¤¹¤ë.
-    cb.push(c = TclTkCallback.new(ip, proc{
-      global.e(v1); v1.set(v1.get().to_i + 10)}))
-    b2 = TclTkWidget.new(ip, t1, button, "-text +10 -command", c)
-    cb.push(c = TclTkCallback.new(ip, proc{
-      global.e(v1); v1.set(v1.get().to_i - 10)}))
-    b3 = TclTkWidget.new(ip, t1, button, "-text -10 -command", c)
-    pack.e(l6, b2, b3)
-  end
-
-  # button ¤Î¥µ¥ó¥×¥ë.
-  def test_button(ip, parent)
-    button, pack = ip.commands().values_at("button", "pack")
-    t1, b1, cb = inittoplevel(ip, parent, "button")
-
-    ## button
-
-    # ¥³¡¼¥ë¥Ð¥Ã¥¯Æâ¤Ç»²¾È¤¹¤ëÊÑ¿ô¤ÏÀè¤ËÀë¸À¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤.
-    b3 = b4 = nil
-    cb.push(c = TclTkCallback.new(ip, proc{b3.e("flash"); b4.e("flash")}))
-    b2 = TclTkWidget.new(ip, t1, button, "-text flash -command", c)
-    cb.push(c = TclTkCallback.new(ip, proc{b2.e("configure -state normal")}))
-    b3 = TclTkWidget.new(ip, t1, button, "-text normal -command", c)
-    cb.push(c = TclTkCallback.new(ip, proc{b2.e("configure -state disabled")}))
-    b4 = TclTkWidget.new(ip, t1, button, "-text disable -command", c)
-    pack.e(b1, b2, b3, b4)
-  end
-
-  # checkbutton ¤Î¥µ¥ó¥×¥ë.
-  def test_checkbutton(ip, parent)
-    checkbutton, global, pack = ip.commands().values_at(
-      "checkbutton", "global", "pack")
-    t1, b1, cb = inittoplevel(ip, parent, "checkbutton")
-
-    ## checkbutton
-
-    v1 = TclTkVariable.new(ip, nil)
-    global.e(v1)
-    # -variable ¤ÇÊÑ¿ô¤òÀßÄꤹ¤ë.
-    ch1 = TclTkWidget.new(ip, t1, checkbutton, "-onvalue on -offvalue off",
-      "-textvariable", v1, "-variable", v1)
-    pack.e(b1, ch1)
-  end
-
-  # radiobutton ¤Î¥µ¥ó¥×¥ë.
-  def test_radiobutton(ip, parent)
-    global, label, pack, radiobutton = ip.commands().values_at(
-      "global", "label", "pack", "radiobutton")
-    t1, b1, cb = inittoplevel(ip, parent, "radiobutton")
-
-    ## radiobutton
-
-    v1 = TclTkVariable.new(ip, nil)
-    global.e(v1)
-    # ¥Ì¥ë¥¹¥È¥ê¥ó¥°¤Ï "{}" ¤Ç»ØÄꤹ¤ë.
-    v1.set("{}")
-    l1 = TclTkWidget.new(ip, t1, label, "-textvariable", v1)
-    # -variable ¤ÇƱ¤¸ÊÑ¿ô¤ò»ØÄꤹ¤ë¤ÈƱ¤¸¥°¥ë¡¼¥×¤Ë¤Ê¤ë.
-    ra1 = TclTkWidget.new(ip, t1, radiobutton,
-      "-text radio1 -value r1 -variable", v1)
-    ra2 = TclTkWidget.new(ip, t1, radiobutton,
-      "-text radio2 -value r2 -variable", v1)
-    cb.push(c = TclTkCallback.new(ip, proc{global.e(v1); v1.set("{}")}))
-    ra3 = TclTkWidget.new(ip, t1, radiobutton,
-      "-text clear -value r3 -variable", v1, "-command", c)
-    pack.e(b1, l1, ra1, ra2, ra3)
-  end
-
-  # scale ¤Î¥µ¥ó¥×¥ë.
-  def test_scale(ip, parent)
-    global, pack, scale = ip.commands().values_at(
-      "global", "pack", "scale")
-    t1, b1, cb = inittoplevel(ip, parent, "scale")
-
-    ## scale
-
-    v1 = TclTkVariable.new(ip, nil)
-    global.e(v1)
-    v1.set(219)
-    # ¥³¡¼¥ë¥Ð¥Ã¥¯Æâ¤Ç»²¾È¤¹¤ëÊÑ¿ô¤ÏÀè¤ËÀë¸À¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤.
-    sca1 = nil
-    cb.push(c = TclTkCallback.new(ip, proc{global.e(v1); v = v1.get();
-      sca1.e("configure -background", format("#%02x%02x%02x", v, v, v))}))
-    sca1 = TclTkWidget.new(ip, t1, scale,
-      "-label scale -orient h -from 0 -to 255 -variable", v1, "-command", c)
-    pack.e(b1, sca1)
-  end
-
-  # entry ¤Î¥µ¥ó¥×¥ë.
-  def test_entry(ip, parent)
-    button, entry, global, pack = ip.commands().values_at(
-      "button", "entry", "global", "pack")
-    t1, b1, cb = inittoplevel(ip, parent, "entry")
-
-    ## entry
-
-    v1 = TclTkVariable.new(ip, nil)
-    global.e(v1)
-    # ¥Ì¥ë¥¹¥È¥ê¥ó¥°¤Ï "{}" ¤Ç»ØÄꤹ¤ë.
-    v1.set("{}")
-    en1 = TclTkWidget.new(ip, t1, entry, "-textvariable", v1)
-    cb.push(c = TclTkCallback.new(ip, proc{
-      global.e(v1); print(v1.get(), "\n"); v1.set("{}")}))
-    b2 = TclTkWidget.new(ip, t1, button, "-text print -command", c)
-    pack.e(b1, en1, b2)
-  end
-
-  # text ¤Î¥µ¥ó¥×¥ë.
-  def test_text(ip, parent)
-    button, pack, text = ip.commands().values_at(
-      "button", "pack", "text")
-    t1, b1, cb = inittoplevel(ip, parent, "text")
-
-    ## text
-
-    te1 = TclTkWidget.new(ip, t1, text)
-    cb.push(c = TclTkCallback.new(ip, proc{
-      # 1 ¹ÔÌܤΠ0 Ê¸»úÌܤ«¤éºÇ¸å¤Þ¤Ç¤òɽ¼¨¤·, ºï½ü¤¹¤ë.
-      print(te1.e("get 1.0 end")); te1.e("delete 1.0 end")}))
-    b2 = TclTkWidget.new(ip, t1, button, "-text print -command", c)
-    pack.e(b1, te1, b2)
-  end
-
-  # raise/lower ¤Î¥µ¥ó¥×¥ë.
-  def test_raise(ip, parent)
-    button, frame, lower, pack, raise = ip.commands().values_at(
-      "button", "frame", "lower", "pack", "raise")
-    t1, b1, cb = inittoplevel(ip, parent, "raise/lower")
-
-    ## raise/lower
-
-    # button ¤ò±£¤¹¥Æ¥¹¥È¤Î¤¿¤á¤Ë, frame ¤ò»È¤¦.
-    f1 = TclTkWidget.new(ip, t1, frame)
-    # ¥³¡¼¥ë¥Ð¥Ã¥¯Æâ¤Ç»²¾È¤¹¤ëÊÑ¿ô¤ÏÀè¤ËÀë¸À¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤.
-    b2 = nil
-    cb.push(c = TclTkCallback.new(ip, proc{raise.e(f1, b2)}))
-    b2 = TclTkWidget.new(ip, t1, button, "-text raise -command", c)
-    cb.push(c = TclTkCallback.new(ip, proc{lower.e(f1, b2)}))
-    b3 = TclTkWidget.new(ip, t1, button, "-text lower -command", c)
-    lower.e(f1, b3)
-
-    pack.e(b2, b3, "-in", f1)
-    pack.e(b1, f1)
-  end
-
-  # modal ¤Ê¥¦¥£¥¸¥§¥Ã¥È¤Î¥µ¥ó¥×¥ë.
-  def test_modal(ip, parent)
-    button, frame, message, pack, tk_chooseColor, tk_getOpenFile,
-      tk_messageBox = ip.commands().values_at(
-      "button", "frame", "message", "pack", "tk_chooseColor",
-      "tk_getOpenFile", "tk_messageBox")
-    # ºÇ½é¤Ë load ¤µ¤ì¤Æ¤¤¤Ê¤¤¥é¥¤¥Ö¥é¥ê¤Ï ip.commands() ¤Ë¸ºß¤·¤Ê¤¤¤Î¤Ç,
-    # TclTkLibCommand ¤òÀ¸À®¤¹¤ëɬÍפ¬¤¢¤ë.
-    tk_dialog = TclTkLibCommand.new(ip, "tk_dialog")
-    t1, b1, cb = inittoplevel(ip, parent, "message/modal")
-
-    ## message
-
-    mes = "¤³¤ì¤Ï message ¥¦¥£¥¸¥§¥Ã¥È¤Î¥Æ¥¹¥È¤Ç¤¹."
-    mes += "°Ê²¼¤Ï modal ¤Ê¥¦¥£¥¸¥§¥Ã¥È¤Î¥Æ¥¹¥È¤Ç¤¹."
-    me1 = TclTkWidget.new(ip, t1, message, "-text {#{mes}}")
-
-    ## modal
-
-    # tk_messageBox
-    cb.push(c = TclTkCallback.new(ip, proc{
-      print tk_messageBox.e("-type yesnocancel -message messageBox",
-      "-icon error -default cancel -title messageBox"), "\n"}))
-    b2 = TclTkWidget.new(ip, t1, button, "-text messageBox -command", c)
-    # tk_dialog
-    cb.push(c = TclTkCallback.new(ip, proc{
-      # ¥¦¥£¥¸¥§¥Ã¥È̾¤òÀ¸À®¤¹¤ë¤¿¤á¤Ë¥À¥ß¡¼¤Î frame ¤òÀ¸À®.
-      print tk_dialog.e(TclTkWidget.new(ip, t1, frame),
-      "dialog dialog error 2 yes no cancel"), "\n"}))
-    b3 = TclTkWidget.new(ip, t1, button, "-text dialog -command", c)
-    # tk_chooseColor
-    cb.push(c = TclTkCallback.new(ip, proc{
-      print tk_chooseColor.e("-title chooseColor"), "\n"}))
-    b4 = TclTkWidget.new(ip, t1, button, "-text chooseColor -command", c)
-    # tk_getOpenFile
-    cb.push(c = TclTkCallback.new(ip, proc{
-      print tk_getOpenFile.e("-defaultextension .rb",
-      "-filetypes {{{Ruby Script} {.rb}} {{All Files} {*}}}",
-      "-title getOpenFile"), "\n"}))
-    b5 = TclTkWidget.new(ip, t1, button, "-text getOpenFile -command", c)
-
-    pack.e(b1, me1, b2, b3, b4, b5)
-  end
-
-  # menu ¤Î¥µ¥ó¥×¥ë.
-  def test_menu(ip, parent)
-    global, menu, menubutton, pack = ip.commands().values_at(
-      "global", "menu", "menubutton", "pack")
-    tk_optionMenu = TclTkLibCommand.new(ip, "tk_optionMenu")
-    t1, b1, cb = inittoplevel(ip, parent, "menu")
-
-    ## menu
-
-    # menubutton ¤òÀ¸À®¤¹¤ë.
-    mb1 = TclTkWidget.new(ip, t1, menubutton, "-text menu")
-    # menu ¤òÀ¸À®¤¹¤ë.
-    me1 = TclTkWidget.new(ip, mb1, menu)
-    # mb1 ¤«¤é me1 ¤¬µ¯Æ°¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë.
-    mb1.e("configure -menu", me1)
-
-    # cascade ¤Çµ¯Æ°¤µ¤ì¤ë menu ¤òÀ¸À®¤¹¤ë.
-    me11 = TclTkWidget.new(ip, me1, menu)
-    # radiobutton ¤Î¥µ¥ó¥×¥ë.
-    v1 = TclTkVariable.new(ip, nil); global.e(v1); v1.set("r1")
-    me11.e("add radiobutton -label radio1 -value r1 -variable", v1)
-    me11.e("add radiobutton -label radio2 -value r2 -variable", v1)
-    me11.e("add radiobutton -label radio3 -value r3 -variable", v1)
-    # cascade ¤Ë¤è¤ê mb11 ¤¬µ¯Æ°¤µ¤ì¤ë¤è¤¦¤Ë¤¹¤ë.
-    me1.e("add cascade -label cascade -menu", me11)
-
-    # checkbutton ¤Î¥µ¥ó¥×¥ë.
-    v2 = TclTkVariable.new(ip, nil); global.e(v2); v2.set("none")
-    me1.e("add checkbutton -label check -variable", v2)
-    # separator ¤Î¥µ¥ó¥×¥ë.
-    me1.e("add separator")
-    # command ¤Î¥µ¥ó¥×¥ë.
-    v3 = nil
-    cb.push(c = TclTkCallback.new(ip, proc{
-      global.e(v1, v2, v3); print "v1: ", v1.get(), ", v2: ", v2.get(),
-      ", v3: ", v3.get(), "\n"}))
-    me1.e("add command -label print -command", c)
-
-    ## tk_optionMenu
-
-    v3 = TclTkVariable.new(ip, nil); global.e(v3); v3.set("opt2")
-    om1 = TclTkWidget.new(ip, t1, tk_optionMenu, v3, "opt1 opt2 opt3 opt4")
-
-    pack.e(b1, mb1, om1, "-side left")
-  end
-
-  # listbox ¤Î¥µ¥ó¥×¥ë.
-  def test_listbox(ip, parent)
-    clipboard, frame, grid, listbox, lower, menu, menubutton, pack, scrollbar,
-      selection = ip.commands().values_at(
-      "clipboard", "frame", "grid", "listbox", "lower", "menu", "menubutton",
-      "pack", "scrollbar", "selection")
-    t1, b1, cb = inittoplevel(ip, parent, "listbox")
-
-    ## listbox/scrollbar
-
-    f1 = TclTkWidget.new(ip, t1, frame)
-    # ¥³¡¼¥ë¥Ð¥Ã¥¯Æâ¤Ç»²¾È¤¹¤ëÊÑ¿ô¤ÏÀè¤ËÀë¸À¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤.
-    li1 = sc1 = sc2 = nil
-    # ¼Â¹Ô»þ¤Ë, ¸å¤í¤Ë¥Ñ¥é¥á¡¼¥¿¤¬¤Ä¤¯¥³¡¼¥ë¥Ð¥Ã¥¯¤Ï,
-    # ¥¤¥Æ¥ì¡¼¥¿ÊÑ¿ô¤Ç¤½¤Î¥Ñ¥é¥á¡¼¥¿¤ò¼õ¤±¼è¤ë¤³¤È¤¬¤Ç¤­¤ë.
-    # (Ê£¿ô¤Î¥Ñ¥é¥á¡¼¥¿¤Ï¤Ò¤È¤Ä¤Îʸ»úÎó¤Ë¤Þ¤È¤á¤é¤ì¤ë.)
-    cb.push(c1 = TclTkCallback.new(ip, proc{|i| li1.e("xview", i)}))
-    cb.push(c2 = TclTkCallback.new(ip, proc{|i| li1.e("yview", i)}))
-    cb.push(c3 = TclTkCallback.new(ip, proc{|i| sc1.e("set", i)}))
-    cb.push(c4 = TclTkCallback.new(ip, proc{|i| sc2.e("set", i)}))
-    # listbox
-    li1 = TclTkWidget.new(ip, f1, listbox,
-      "-xscrollcommand", c3, "-yscrollcommand", c4,
-      "-selectmode extended -exportselection true")
-    for i in 1..20
-      li1.e("insert end {line #{i} line #{i} line #{i} line #{i} line #{i}}")
-    end
-    # scrollbar
-    sc1 = TclTkWidget.new(ip, f1, scrollbar, "-orient horizontal -command", c1)
-    sc2 = TclTkWidget.new(ip, f1, scrollbar, "-orient vertical -command", c2)
-
-    ## selection/clipboard
-
-    mb1 = TclTkWidget.new(ip, t1, menubutton, "-text edit")
-    me1 = TclTkWidget.new(ip, mb1, menu)
-    mb1.e("configure -menu", me1)
-    cb.push(c = TclTkCallback.new(ip, proc{
-      # clipboard ¤ò¥¯¥ê¥¢.
-      clipboard.e("clear")
-      # selection ¤«¤éʸ»úÎó¤òÆɤ߹þ¤ß clipboard ¤ËÄɲ乤ë.
-      clipboard.e("append {#{selection.e('get')}}")}))
-    me1.e("add command -label {selection -> clipboard} -command",c)
-    cb.push(c = TclTkCallback.new(ip, proc{
-      # li1 ¤ò¥¯¥ê¥¢.
-      li1.e("delete 0 end")
-      # clipboard ¤«¤éʸ»úÎó¤ò¼è¤ê½Ð¤·, 1 ¹Ô¤º¤Ä
-      selection.e("get -selection CLIPBOARD").split(/\n/).each{|line|
-        # li1 ¤ËÁÞÆþ¤¹¤ë.
-        li1.e("insert end {#{line}}")}}))
-    me1.e("add command -label {clipboard -> listbox} -command",c)
-
-    grid.e(li1, "-row 0 -column 0 -sticky news")
-    grid.e(sc1, "-row 1 -column 0 -sticky ew")
-    grid.e(sc2, "-row 0 -column 1 -sticky ns")
-    grid.e("rowconfigure", f1, "0 -weight 100")
-    grid.e("columnconfigure", f1, "0 -weight 100")
-    f2 = TclTkWidget.new(ip, t1, frame)
-    lower.e(f2, b1)
-    pack.e(b1, mb1, "-in", f2, "-side left")
-    pack.e(f2, f1)
-  end
-
-  # canvas ¤Î¥µ¥ó¥×¥ë.
-  def test_canvas(ip, parent)
-    canvas, lower, pack = ip.commands().values_at("canvas", "lower", "pack")
-    t1, b1, cb = inittoplevel(ip, parent, "canvas")
-
-    ## canvas
-
-    ca1 = TclTkWidget.new(ip, t1, canvas, "-width 400 -height 300")
-    lower.e(ca1, b1)
-    # rectangle ¤òºî¤ë.
-    idr = ca1.e("create rectangle 10 10 20 20")
-    # oval ¤òºî¤ë.
-    ca1.e("create oval 60 10 100 50")
-    # polygon ¤òºî¤ë.
-    ca1.e("create polygon 110 10 110 30 140 10")
-    # line ¤òºî¤ë.
-    ca1.e("create line 150 10 150 30 190 10")
-    # arc ¤òºî¤ë.
-    ca1.e("create arc 200 10 250 50 -start 0 -extent 90 -style pieslice")
-    # i1 ¤ÏËÜÅö¤Ï, ¤É¤³¤«¤ÇÇ˲õ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤¬, ÌÌÅݤʤΤÇÊü¤Ã¤Æ¤¢¤ë.
-    i1 = TclTkImage.new(ip, "photo", "-file maru.gif")
-    # image ¤òºî¤ë.
-    ca1.e("create image 100 100 -image", i1)
-    # bitmap ¤òºî¤ë.
-    ca1.e("create bitmap 260 50 -bitmap questhead")
-    # text ¤òºî¤ë.
-    ca1.e("create text 320 50 -text {drag rectangle}")
-    # window ¤òºî¤ë(¥¯¥í¡¼¥º¥Ü¥¿¥ó).
-    ca1.e("create window 200 200 -window", b1)
-
-    # bind ¤Ë¤è¤ê rectangle ¤ò drag ¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë.
-    cb.push(c = TclTkCallback.new(ip, proc{|i|
-      # i ¤Ë x ¤È y ¤ò¼õ¤±¼è¤ë¤Î¤Ç, ¼è¤ê½Ð¤¹.
-      x, y = i.split(/ /); x = x.to_f; y = y.to_f
-      # ºÂɸ¤òÊѹ¹¤¹¤ë.
-      ca1.e("coords current #{x - 5} #{y - 5} #{x + 5} #{y + 5}")},
-      # x, y ºÂɸ¤ò¶õÇò¤Ç¶èÀڤ俤â¤Î¤ò¥¤¥Æ¥ì¡¼¥¿ÊÑ¿ô¤ØÅϤ¹¤è¤¦¤Ë»ØÄê.
-      "%x %y"))
-    # rectangle ¤Ë bind ¤¹¤ë.
-    ca1.e("bind", idr, "<B1-Motion>", c)
-
-    pack.e(ca1)
-  end
-end
-
-# test driver
-
-if ARGV.size == 0
-  print "#{$0} n ¤Ç, n ¸Ä¤Î¥¤¥ó¥¿¥×¥ê¥¿¤òµ¯Æ°¤·¤Þ¤¹.\n"
-  n = 1
-else
-  n = ARGV[0].to_i
-end
-
-print "start\n"
-ip = []
-
-# ¥¤¥ó¥¿¥×¥ê¥¿, ¥¦¥£¥¸¥§¥Ã¥ÈÅù¤ÎÀ¸À®.
-for i in 1 .. n
-  ip.push(Test1.new())
-end
-
-# ÍÑ°Õ¤¬¤Ç¤­¤¿¤é¥¤¥Ù¥ó¥È¥ë¡¼¥×¤ËÆþ¤ë.
-TclTk.mainloop()
-print "exit from mainloop\n"
-
-# ¥¤¥ó¥¿¥×¥ê¥¿¤¬ GC ¤µ¤ì¤ë¤«¤Î¥Æ¥¹¥È.
-ip = []
-print "GC.start\n" if $DEBUG
-GC.start() if $DEBUG
-print "end\n"
-
-exit
-
-# end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/sample2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tcltklib/sample2.rb
deleted file mode 100644 (file)
index 110e81e..0000000
+++ /dev/null
@@ -1,451 +0,0 @@
-#!/usr/local/bin/ruby
-#----------------------> pretty simple othello game <-----------------------
-# othello.rb
-#
-# version 0.3
-# maeda shugo (shuto@po.aianet.ne.jp)
-#---------------------------------------------------------------------------
-
-#       Sep. 17, 1997   modified by Y. Shigehiro for tcltk library
-#          maeda shugo (shugo@po.aianet.ne.jp) »á¤Ë¤è¤ë
-#          (ruby/tk ¤Ç½ñ¤«¤ì¤Æ¤¤¤¿) ruby ¤Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à
-#               http://www.aianet.or.jp/~shugo/ruby/othello.rb.gz
-#          ¤ò tcltk ¥é¥¤¥Ö¥é¥ê¤ò»È¤¦¤è¤¦¤Ë, µ¡³£Åª¤ËÊѹ¹¤·¤Æ¤ß¤Þ¤·¤¿.
-#
-#          ¤Ê¤ë¤Ù¤¯¥ª¥ê¥¸¥Ê¥ë¤ÈƱ¤¸¤Ë¤Ê¤ë¤è¤¦¤Ë¤·¤Æ¤¢¤ê¤Þ¤¹.
-
-require "observer"
-require "tcltk"
-$ip = TclTkInterpreter.new()
-$root = $ip.rootwidget()
-$button, $canvas, $checkbutton, $frame, $label, $pack, $update, $wm =
-   $ip.commands().values_at(
-   "button", "canvas", "checkbutton", "frame", "label", "pack", "update", "wm")
-
-class Othello
-   
-   EMPTY = 0
-   BLACK = 1
-   WHITE = - BLACK
-   
-   attr :in_com_turn
-   attr :game_over
-   
-   class Board
-   
-      include Observable
-      
-      DIRECTIONS = [
-         [-1, -1], [-1, 0], [-1, 1],
-         [ 0, -1],          [ 0, 1],
-         [ 1, -1], [ 1, 0], [ 1, 1]
-      ]
-      
-      attr_accessor :com_disk
-   
-      def initialize(othello)
-         @othello = othello
-         reset
-      end
-   
-      def notify_observers(*arg)
-         if @observer_peers != nil
-            super(*arg)
-         end
-      end
-      
-      def reset
-         @data = [
-            [EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY],
-            [EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY],
-            [EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY],
-            [EMPTY, EMPTY, EMPTY, WHITE, BLACK, EMPTY, EMPTY, EMPTY],
-            [EMPTY, EMPTY, EMPTY, BLACK, WHITE, EMPTY, EMPTY, EMPTY],
-            [EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY],
-            [EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY],
-            [EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY]
-         ]
-         changed
-         notify_observers
-      end
-      
-      def man_disk
-         return - @com_disk
-      end
-      
-      def other_disk(disk)
-         return - disk
-      end
-      
-      def get_disk(row, col)
-         return @data[row][col]
-      end
-      
-      def reverse_to(row, col, my_disk, dir_y, dir_x)
-         y = row
-         x = col
-         begin
-            y += dir_y
-            x += dir_x
-            if y < 0 || x < 0 || y > 7 || x > 7 ||
-                  @data[y][x] == EMPTY
-               return
-            end
-         end until @data[y][x] == my_disk
-         begin
-            @data[y][x] = my_disk
-            changed
-            notify_observers(y, x)
-            y -= dir_y
-            x -= dir_x
-         end until y == row && x == col
-      end
-      
-      def put_disk(row, col, disk)
-         @data[row][col] = disk
-         changed
-         notify_observers(row, col)
-         DIRECTIONS.each do |dir|
-            reverse_to(row, col, disk, *dir)
-         end
-      end
-      
-      def count_disk(disk)
-         num = 0
-         @data.each do |rows|
-            rows.each do |d|
-               if d == disk
-                  num += 1
-               end
-            end
-         end
-         return num
-      end
-      
-      def count_point_to(row, col, my_disk, dir_y, dir_x)
-         return 0 if @data[row][col] != EMPTY
-         count = 0
-         loop do
-            row += dir_y
-            col += dir_x
-            break if row < 0 || col < 0 || row > 7 || col > 7
-            case @data[row][col]
-            when my_disk
-               return count
-            when other_disk(my_disk)
-               count += 1
-            when EMPTY
-               break
-            end
-         end
-         return 0
-      end
-      
-      def count_point(row, col, my_disk)
-         count = 0
-         DIRECTIONS.each do |dir|
-            count += count_point_to(row, col, my_disk, *dir)
-         end
-         return count
-      end
-      
-      def corner?(row, col)
-         return (row == 0 && col == 0) ||
-            (row == 0 && col == 7) ||
-            (row == 7 && col == 0) ||
-            (row == 7 && col == 7)
-      end
-      
-      def search(my_disk)
-         max = 0
-         max_row = nil
-         max_col = nil
-         for row in 0 .. 7
-            for col in 0 .. 7
-               buf = count_point(row, col, my_disk)
-               if (corner?(row, col) && buf > 0) || max < buf
-                  max = buf
-                  max_row = row
-                  max_col = col
-               end
-            end
-         end
-         return max_row, max_col
-      end
-   end #--------------------------> class Board ends here
-   
-   class BoardView < TclTkWidget
-      
-      BACK_GROUND_COLOR = "DarkGreen"
-      HILIT_BG_COLOR = "green"
-      BORDER_COLOR = "black"
-      BLACK_COLOR = "black"
-      WHITE_COLOR = "white"
-      STOP_COLOR = "red"
-      
-      attr :left
-      attr :top
-      attr :right
-      attr :bottom
-      
-      class Square
-         
-         attr :oval, TRUE
-         attr :row
-         attr :col
-         
-         def initialize(view, row, col)
-            @view = view
-            @id = @view.e("create rectangle", 
-                          *(view.tk_rect(view.left + col,
-                                         view.top + row,
-                                         view.left + col + 1,
-                                         view.top + row + 1) \
-                            << "-fill #{BACK_GROUND_COLOR}") )
-            @row = row
-            @col = col
-            @view.e("itemconfigure", @id,
-              "-width 0.5m -outline #{BORDER_COLOR}")
-            @view.e("bind", @id, "<Any-Enter>", TclTkCallback.new($ip, proc{
-               if @oval == nil
-                  view.e("itemconfigure", @id, "-fill #{HILIT_BG_COLOR}")
-               end
-            }))
-            @view.e("bind", @id, "<Any-Leave>", TclTkCallback.new($ip, proc{
-               view.e("itemconfigure", @id, "-fill #{BACK_GROUND_COLOR}")
-            }))
-            @view.e("bind", @id, "<ButtonRelease-1>", TclTkCallback.new($ip,
-               proc{
-               view.click_square(self)
-            }))
-         end
-         
-         def blink(color)
-            @view.e("itemconfigure", @id, "-fill #{color}")
-            $update.e()
-            sleep(0.1)
-            @view.e("itemconfigure", @id, "-fill #{BACK_GROUND_COLOR}")
-         end
-      end #-----------------------> class Square ends here
-   
-      def initialize(othello, board)
-         super($ip, $root, $canvas)
-         @othello = othello
-         @board = board
-         @board.add_observer(self)
-         
-         @squares = Array.new(8)
-         for i in 0 .. 7
-            @squares[i] = Array.new(8)
-         end
-         @left = 1
-         @top = 0.5
-         @right = @left + 8
-         @bottom = @top + 8
-         
-         i = self.e("create rectangle", *tk_rect(@left, @top, @right, @bottom))
-         self.e("itemconfigure", i,
-            "-width 1m -outline #{BORDER_COLOR} -fill #{BACK_GROUND_COLOR}")
-
-         for row in 0 .. 7
-            for col in 0 .. 7
-               @squares[row][col] = Square.new(self, row, col)
-            end
-         end
-         
-         update
-      end
-      
-      def tk_rect(left, top, right, bottom)
-         return left.to_s + "c", top.to_s + "c",
-            right.to_s + "c", bottom.to_s + "c"
-      end
-      
-      def clear
-         each_square do |square|
-            if square.oval != nil
-               self.e("delete", square.oval)
-               square.oval = nil
-            end
-         end
-      end
-      
-      def draw_disk(row, col, disk)
-         if disk == EMPTY
-            if @squares[row][col].oval != nil
-               self.e("delete", @squares[row][col].oval)
-               @squares[row][col].oval = nil
-            end
-            return
-         end
-            
-         $update.e()
-         sleep(0.05)
-         oval = @squares[row][col].oval
-         if oval == nil
-            oval = self.e("create oval", *tk_rect(@left + col + 0.2,
-                                           @top + row + 0.2,
-                                           @left + col + 0.8,
-                                           @top + row + 0.8))
-            @squares[row][col].oval = oval
-         end
-         case disk
-         when BLACK
-            color = BLACK_COLOR
-         when WHITE
-            color = WHITE_COLOR
-         else
-            fail format("Unknown disk type: %d", disk)
-         end
-         self.e("itemconfigure", oval, "-outline #{color} -fill #{color}")
-      end
-      
-      def update(row = nil, col = nil)
-         if row && col
-            draw_disk(row, col, @board.get_disk(row, col))
-         else
-            each_square do |square|
-               draw_disk(square.row, square.col,
-                         @board.get_disk(square.row, square.col))
-            end
-         end
-         @othello.show_point
-      end
-      
-      def each_square
-         @squares.each do |rows|
-            rows.each do |square|
-               yield(square)
-            end
-         end
-      end
-      
-      def click_square(square)
-         if @othello.in_com_turn || @othello.game_over ||
-               @board.count_point(square.row,
-                                  square.col,
-                                  @board.man_disk) == 0
-            square.blink(STOP_COLOR)
-            return
-         end
-         @board.put_disk(square.row, square.col, @board.man_disk)
-         @othello.com_turn
-      end
-      
-      private :draw_disk
-      public :update
-   end #----------------------> class BoardView ends here
-   
-   def initialize
-      @msg_label = TclTkWidget.new($ip, $root, $label)
-      $pack.e(@msg_label)
-      
-      @board = Board.new(self)
-      @board_view = BoardView.new(self, @board)
-      #### added by Y. Shigehiro
-      ## board_view ¤ÎÂ礭¤µ¤òÀßÄꤹ¤ë.
-      x1, y1, x2, y2 = @board_view.e("bbox all").split(/ /).collect{|i| i.to_f}
-      @board_view.e("configure -width", x2 - x1)
-      @board_view.e("configure -height", y2 - y1)
-      ## scrollregion ¤òÀßÄꤹ¤ë.
-      @board_view.e("configure -scrollregion {", @board_view.e("bbox all"),
-         "}")
-      #### ¤³¤³¤Þ¤Ç
-      $pack.e(@board_view, "-fill both -expand true")
-      
-      panel = TclTkWidget.new($ip, $root, $frame)
-      
-      @play_black = TclTkWidget.new($ip, panel, $checkbutton,
-        "-text {com is black} -command", TclTkCallback.new($ip, proc{
-         switch_side
-      }))
-      $pack.e(@play_black, "-side left")
-            
-      quit = TclTkWidget.new($ip, panel, $button, "-text Quit -command",
-         TclTkCallback.new($ip, proc{
-         exit
-      }))
-      $pack.e(quit, "-side right -fill x")
-      
-      reset = TclTkWidget.new($ip, panel, $button, "-text Reset -command",
-         TclTkCallback.new($ip, proc{
-         reset_game
-      }))
-      $pack.e(reset, "-side right -fill x")
-      
-      $pack.e(panel, "-side bottom -fill x")
-      
-#      root = Tk.root
-      $wm.e("title", $root, "Othello")
-      $wm.e("iconname", $root, "Othello")
-      
-      @board.com_disk = WHITE
-      @game_over = FALSE
-      
-      TclTk.mainloop
-   end
-   
-   def switch_side
-      if @in_com_turn
-         @play_black.e("toggle")
-      else
-         @board.com_disk = @board.man_disk
-         com_turn unless @game_over
-      end
-   end
-   
-   def reset_game
-      if @board.com_disk == BLACK
-         @board.com_disk = WHITE
-         @play_black.e("toggle")
-      end
-      @board_view.clear
-      @board.reset
-      $wm.e("title", $root, "Othello")
-      @game_over = FALSE
-   end
-      
-   def com_turn
-      @in_com_turn = TRUE
-      $update.e()
-      sleep(0.5)
-      begin
-         com_disk = @board.count_disk(@board.com_disk)
-         man_disk = @board.count_disk(@board.man_disk)
-         if @board.count_disk(EMPTY) == 0
-            if man_disk == com_disk
-               $wm.e("title", $root, "{Othello - Draw!}")
-            elsif man_disk > com_disk
-               $wm.e("title", $root, "{Othello - You Win!}")
-            else
-               $wm.e("title", $root, "{Othello - You Loose!}")
-            end
-            @game_over = TRUE
-            break
-         elsif com_disk == 0
-            $wm.e("title", $root, "{Othello - You Win!}")
-            @game_over = TRUE
-            break
-         elsif man_disk == 0
-            $wm.e("title", $root, "{Othello - You Loose!}")
-            @game_over = TRUE
-            break
-         end
-         row, col = @board.search(@board.com_disk)
-         break if row == nil || col == nil
-         @board.put_disk(row, col, @board.com_disk)
-      end while @board.search(@board.man_disk) == [nil, nil]
-      @in_com_turn = FALSE
-   end
-
-   def show_point
-      black = @board.count_disk(BLACK)
-      white = @board.count_disk(WHITE)
-      @msg_label.e("configure -text",
-         %Q/{#{format("BLACK: %.2d    WHITE: %.2d", black, white)}}/)
-   end
-end #----------------------> class Othello ends here
-
-Othello.new
-
-#----------------------------------------------> othello.rb ends here
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkalignbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkalignbox.rb
deleted file mode 100644 (file)
index 32915a5..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-#
-#  tkalignbox.rb : align widgets with same width/height
-# 
-#                                            by Hidetoshi NAGAI
-#
-#  The box size depends on 'reqheight' and 'reqwidth' of contained widgets. 
-#  If you want to give the box size when those requested sizes are 0, 
-#  please set box.propagate = false (See the test routine at the tail of 
-#  this file).
-
-require 'tk'
-
-class TkAlignBox < TkFrame
-  def initialize(*args)
-    if self.class == TkAlignBox
-      fail RuntimeError, "TkAlignBox is an abstract class"
-    end
-    @padx = 0
-    @pady = 0
-    if args[-1].kind_of? Hash
-      keys = _symbolkey2str(args.pop)
-      @padx = keys.delete('padx') || 0
-      @pady = keys.delete('pady') || 0
-      args.push(keys)
-    end
-    super(*args)
-    @max_width = 0
-    @max_height = 0
-    @propagate = true
-    @widgets = []
-  end
-
-  def _set_framesize
-    fail RuntimeError, "TkAlignBox is an abstract class"
-  end
-  private :_set_framesize
-
-  def _place_config(widget, idx, cnt)
-    fail RuntimeError, "TkAlignBox is an abstract class"
-  end
-  private :_place_config
-
-  def align
-    widgets = []
-    @widgets.each{|w| widgets << w if w.winfo_exist?}
-    @widgets = widgets
-    cnt = @widgets.size.to_f
-    @widgets.each_with_index{|w, idx| _place_config(w, idx, cnt)}
-    @widgets = widgets
-    _set_framesize if @propagate
-    self
-  end
-
-  def add(*widgets)
-    widgets.each{|w|
-      unless w.kind_of? TkWindow
-        fail RuntimeError, "#{w.inspect} is not a widget instance."
-      end
-      @widgets.delete(w)
-      @widgets << w
-      sz = w.winfo_reqwidth
-      @max_width = sz if @max_width < sz
-      sz = w.winfo_reqheight
-      @max_height = sz if @max_height < sz
-    }
-    align
-  end
-
-  def <<(widget)
-    add(widget)
-  end
-
-  def insert(idx, widget)
-    unless widget.kind_of? TkWindow
-      fail RuntimeError, "#{widget.inspect} is not a widget instance."
-    end
-    @widgets.delete(widget)
-    @widgets[idx,0] = widget
-    sz = widget.winfo_reqwidth
-    @max_width = sz if @max_width < sz
-    sz = widget.winfo_reqheight
-    @max_height = sz if @max_height < sz
-    align
-  end
-
-  def delete(idx)
-    ret = @widgets.delete_at(idx)
-    @req_size = 0
-    @widget.each{|w|
-      sz = w.winfo_reqwidth
-      @max_width = sz if @max_width < sz
-      sz = w.winfo_reqheight
-      @max_height = sz if @max_height < sz
-    }
-    align
-    ret
-  end
-
-  def padx(size = nil)
-    if size
-      @padx = size
-      align
-    else
-      @padx
-    end
-  end
-
-  def pady(size = nil)
-    if size
-      @pady = size
-      align
-    else
-      @pady
-    end
-  end
-
-  attr_accessor :propagate
-end
-
-class TkHBox < TkAlignBox
-  def _set_framesize
-    bd = self.borderwidth
-    self.width((@max_width + 2*@padx) * @widgets.size + 2*bd)
-    self.height(@max_height + 2*@pady + 2*bd)
-  end
-  private :_set_framesize
-
-  def _place_config(widget, idx, cnt)
-    widget.place_in(self, 
-                    'relx'=>idx/cnt, 'x'=>@padx, 
-                    'rely'=>0, 'y'=>@pady, 
-                    'relwidth'=>1.0/cnt, 'width'=>-2*@padx, 
-                    'relheight'=>1.0, 'height'=>-2*@pady)
-  end
-  private :_place_config
-end
-TkHLBox = TkHBox
-
-class TkHRBox < TkHBox
-  def _place_config(widget, idx, cnt)
-    widget.place_in(self, 
-                    'relx'=>(cnt - idx - 1)/cnt, 'x'=>@padx, 
-                    'rely'=>0, 'y'=>@pady, 
-                    'relwidth'=>1.0/cnt, 'width'=>-2*@padx, 
-                    'relheight'=>1.0, 'height'=>-2*@pady)
-  end
-  private :_place_config
-end
-
-class TkVBox < TkAlignBox
-  def _set_framesize
-    bd = self.borderwidth
-    self.width(@max_width + 2*@padx + 2*bd)
-    self.height((@max_height + 2*@pady) * @widgets.size + 2*bd)
-  end
-  private :_set_framesize
-
-  def _place_config(widget, idx, cnt)
-    widget.place_in(self, 
-                    'relx'=>0, 'x'=>@padx, 
-                    'rely'=>idx/cnt, 'y'=>@pady, 
-                    'relwidth'=>1.0, 'width'=>-2*@padx, 
-                    'relheight'=>1.0/cnt, 'height'=>-2*@pady)
-  end
-  private :_place_config
-end
-TkVTBox = TkVBox
-
-class TkVBBox < TkVBox
-  def _place_config(widget, idx, cnt)
-    widget.place_in(self, 
-                    'relx'=>0, 'x'=>@padx, 
-                    'rely'=>(cnt - idx - 1)/cnt, 'y'=>@pady, 
-                    'relwidth'=>1.0, 'width'=>-2*@padx, 
-                    'relheight'=>1.0/cnt, 'height'=>-2*@pady)
-  end
-  private :_place_config
-end
-
-################################################
-# test
-################################################
-if __FILE__ == $0
-  f = TkHBox.new(:borderwidth=>3, :relief=>'ridge').pack
-  f.add(TkButton.new(f, :text=>'a'),
-        TkButton.new(f, :text=>'aa', :font=>'Helvetica 16'),
-        TkButton.new(f, :text=>'aaa'),
-        TkButton.new(f, :text=>'aaaa'))
-
-  f = TkHBox.new(:borderwidth=>3, :relief=>'ridge', 
-                 :padx=>7, :pady=>3, :background=>'yellow').pack
-  f.add(TkButton.new(f, :text=>'a'),
-        TkButton.new(f, :text=>'aa', :font=>'Helvetica 16'),
-        TkButton.new(f, :text=>'aaa'),
-        TkButton.new(f, :text=>'aaaa'))
-
-  f = TkVBox.new(:borderwidth=>5, :relief=>'groove').pack
-  f.add(TkButton.new(f, :text=>'a'),
-        TkButton.new(f, :text=>'aa', :font=>'Helvetica 30'),
-        TkButton.new(f, :text=>'aaa'),
-        TkButton.new(f, :text=>'aaaa'))
-
-  f = TkHRBox.new(:borderwidth=>3, :relief=>'raised').pack(:fill=>:x)
-  f.add(TkButton.new(f, :text=>'a'),
-        TkButton.new(f, :text=>'aa'), 
-        TkButton.new(f, :text=>'aaa'))
-
-  f = TkVBBox.new(:borderwidth=>3, :relief=>'ridge').pack(:fill=>:x)
-  f.propagate = false
-  f.height 100
-  f.add(TkFrame.new(f){|ff| 
-          TkButton.new(ff, :text=>'a').pack(:pady=>4, :padx=>6, 
-                                            :fill=>:both, :expand=>true)
-        }, 
-        TkFrame.new(f){|ff| 
-          TkButton.new(ff, :text=>'aa').pack(:pady=>4, :padx=>6, 
-                                             :fill=>:both, :expand=>true)
-        }, 
-        TkFrame.new(f){|ff| 
-          TkButton.new(ff, :text=>'aaaa').pack(:pady=>4, :padx=>6, 
-                                               :fill=>:both, :expand=>true)
-        })
-
-  Tk.mainloop
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkballoonhelp.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkballoonhelp.rb
deleted file mode 100644 (file)
index c2c95f7..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-#
-# tkballoonhelp.rb : simple balloon help widget
-#                       by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
-#
-# Add a balloon help to a widget. 
-# This widget has only poor featureas. If you need more useful features, 
-# please try to use the Tix extension of Tcl/Tk under Ruby/Tk.
-# 
-# The interval time to display a balloon help is defined 'interval' option
-# (default is 1000ms). 
-#
-require 'tk'
-
-class TkBalloonHelp<TkLabel
-  def _balloon_binding(interval)
-    @timer = TkAfter.new(interval, 1, proc{show})
-    def @timer.interval(val)
-      @sleep_time = val
-    end
-    @bindtag = TkBindTag.new
-    @bindtag.bind('Enter',  proc{@timer.start})
-    @bindtag.bind('Motion', proc{@timer.restart; erase})
-    @bindtag.bind('Any-ButtonPress', proc{@timer.restart; erase})
-    @bindtag.bind('Leave',  proc{@timer.stop; erase})
-    tags = @parent.bindtags
-    idx = tags.index(@parent)
-    unless idx
-      ppath = TkComm.window(@parent.path)
-      idx = tags.index(ppath) || 0
-    end
-    tags[idx,0] = @bindtag
-    @parent.bindtags(tags)
-  end
-  private :_balloon_binding
-
-  def initialize(parent=nil, keys={})
-    @parent = parent || Tk.root
-
-    @frame = TkToplevel.new(@parent)
-    @frame.withdraw
-    @frame.overrideredirect(true)
-    @frame.transient(TkWinfo.toplevel(@parent))
-    @epath = @frame.path
-
-    if keys
-      keys = _symbolkey2str(keys)
-    else
-      keys = {}
-    end
-
-    @command = keys.delete('command')
-
-    @interval = keys.delete('interval'){1000}
-    _balloon_binding(@interval)
-
-    @label = TkLabel.new(@frame, 'background'=>'bisque').pack
-    @label.configure(_symbolkey2str(keys)) unless keys.empty?
-    @path = @label
-  end
-
-  def epath
-    @epath
-  end
-
-  def interval(val)
-    if val
-      @timer.interval(val)
-    else
-      @interval
-    end
-  end
-
-  def command(cmd = Proc.new)
-    @command = cmd
-    self
-  end
-
-  def show
-    x = TkWinfo.pointerx(@parent)
-    y = TkWinfo.pointery(@parent)
-    @frame.geometry("+#{x+1}+#{y+1}")
-
-    if @command
-      case @command.arity
-      when 0
-        @command.call
-      when 2
-        @command.call(x - TkWinfo.rootx(@parent), y - TkWinfo.rooty(@parent))
-      when 3
-        @command.call(x - TkWinfo.rootx(@parent), y - TkWinfo.rooty(@parent), 
-                      self)
-      else
-        @command.call(x - TkWinfo.rootx(@parent), y - TkWinfo.rooty(@parent), 
-                      self, @parent)
-      end
-    end
-
-    @frame.deiconify
-    @frame.raise
-
-    @org_cursor = @parent['cursor']
-    @parent.cursor('crosshair') 
-  end
-
-  def erase
-    @parent.cursor(@org_cursor) 
-    @frame.withdraw
-  end
-
-  def destroy
-    @frame.destroy
-  end
-end
-
-################################################
-# test
-################################################
-if __FILE__ == $0
-  TkButton.new('text'=>'This button has a balloon help') {|b|
-    pack('fill'=>'x')
-    TkBalloonHelp.new(b, 'text'=>' Message ')
-  }
-  TkButton.new('text'=>'This button has another balloon help') {|b|
-    pack('fill'=>'x')
-    TkBalloonHelp.new(b, 'text'=>'configured message', 
-                      'interval'=>200, 'font'=>'courier', 
-                      'background'=>'gray', 'foreground'=>'red')
-  }
-
-  sb = TkScrollbox.new.pack(:fill=>:x)
-  sb.insert(:end, *%w(aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll mmm))
-=begin
-  # CASE1 : command takes no arguemnt
-  bh = TkBalloonHelp.new(sb, :interval=>500, 
-                         :relief=>:ridge, :background=>'white', 
-                         :command=>proc{
-                           y = TkWinfo.pointery(sb) - TkWinfo.rooty(sb)
-                           bh.text "current index == #{sb.nearest(y)}"
-                         })
-=end
-=begin
-  # CASE2 : command takes 2 arguemnts
-  bh = TkBalloonHelp.new(sb, :interval=>500, 
-                         :relief=>:ridge, :background=>'white', 
-                         :command=>proc{|x, y|
-                           bh.text "current index == #{sb.nearest(y)}"
-                         })
-=end
-=begin
-  # CASE3 : command takes 3 arguemnts
-  TkBalloonHelp.new(sb, :interval=>500, 
-                    :relief=>:ridge, :background=>'white', 
-                    :command=>proc{|x, y, bhelp|
-                      bhelp.text "current index == #{sb.nearest(y)}"
-                    })
-=end
-=begin
-  # CASE4a : command is a Proc object and takes 4 arguemnts
-  cmd = proc{|x, y, bhelp, parent|
-    bhelp.text "current index == #{parent.nearest(y)}"
-  }
-
-  TkBalloonHelp.new(sb, :interval=>500, 
-                    :relief=>:ridge, :background=>'white', 
-                    :command=>cmd)
-
-  sb2 = TkScrollbox.new.pack(:fill=>:x)
-  sb2.insert(:end, *%w(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ KKK LLL MMM))
-  TkBalloonHelp.new(sb2, :interval=>500, 
-                    :padx=>5, :relief=>:raised, 
-                    :background=>'gray25', :foreground=>'white',
-                    :command=>cmd)
-=end
-#=begin
-  # CASE4b : command is a Method object and takes 4 arguemnts
-  def set_msg(x, y, bhelp, parent)
-    bhelp.text "current index == #{parent.nearest(y)}"
-  end
-  cmd = self.method(:set_msg)
-
-  TkBalloonHelp.new(sb, :interval=>500, 
-                    :relief=>:ridge, :background=>'white', 
-                    :command=>cmd)
-
-  sb2 = TkScrollbox.new.pack(:fill=>:x)
-  sb2.insert(:end, *%w(AAA BBB CCC DDD EEE FFF GGG HHH III JJJ KKK LLL MMM))
-  TkBalloonHelp.new(sb2, :interval=>500, 
-                    :padx=>5, :relief=>:raised, 
-                    :background=>'gray25', :foreground=>'white',
-                    :command=>cmd)
-#=end
-
-  Tk.mainloop
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkbiff.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkbiff.rb
deleted file mode 100644 (file)
index c669962..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-#!/usr/bin/env ruby
-
-if ARGV[0] != '-d'
-  unless $DEBUG
-    exit if fork
-  end
-else
-  ARGV.shift
-end
-
-if ARGV.length == 0
-  if ENV['MAIL']
-    $spool = ENV['MAIL']
-  else  
-    $spool = '/var/spool/mail/' + ENV['USER']
-  end
-else 
-  $spool = ARGV[0]
-end
-
-require "parsedate"
-require "base64"
-
-include ParseDate
-
-class Mail
-  def Mail.new(f)
-    if !f.kind_of?(IO)
-      f = open(f, "r")
-      me = super
-      f.close
-    else
-      me = super
-    end
-    return me
-  end
-
-  def initialize(f)
-    @header = {}
-    @body = []
-    while line = f.gets()
-      line.chop!
-      next if /^From / =~ line  # skip From-line  
-      break if /^$/ =~ line     # end of header
-      if /^(\S+):\s*(.*)/ =~ line
-        @header[attr = $1.capitalize] = $2
-      elsif attr
-        sub(/^\s*/, '')
-        @header[attr] += "\n" + $_
-      end
-    end
-
-    return unless $_
-
-    while line = f.gets()
-      break if /^From / =~ line
-      @body.push($_)
-    end
-  end
-
-  def header
-    return @header
-  end
-
-  def body
-    return @body
-  end
-
-end
-
-require "tkscrollbox"
-
-my_appname = Tk.appname('tkbiff')
-$top = TkRoot.new
-if ((TkWinfo.interps($top) - [my_appname]).find{|ip| ip =~ /^tkbiff/})
-  STDERR.print("Probably other 'tkbiff's are running. Bye.\n")
-  exit
-end
-
-$top.withdraw
-$list = TkScrollbox.new($top) {
-  relief 'raised'
-  width 80
-  height 8
-  setgrid 'yes'
-  pack
-}
-TkButton.new($top) {
-  text 'Dismiss'
-  command proc {$top.withdraw}
-  pack('fill'=>'both','expand'=>'yes')
-}
-$top.bind "Control-c", proc{exit}
-$top.bind "Control-q", proc{exit}
-$top.bind "space", proc{exit}
-
-$spool_size = 0
-$check_time = Time.now
-
-def check
-  $check_time = Time.now
-  size = File.size($spool)
-  if size and size != $spool_size
-    $spool_size = size
-    pop_up if size > 0
-  end
-  Tk.after 5000, proc{check}
-end
-
-if defined? Thread
-  Thread.start do
-    loop do
-      sleep 600
-      if Time.now - $check_time > 200
-        Tk.after 5000, proc{check}
-      end
-    end
-  end
-end
-
-def pop_up
-  outcount = 0;
-  $list.delete 0, 'end'
-  f = open($spool, "r")
-  while !f.eof?
-    mail = Mail.new(f)
-    date, from, subj =  mail.header['Date'], mail.header['From'], mail.header['Subject']
-    next if !date
-    y = m = d = 0
-    y, m, d = parsedate(date) if date
-    from = "sombody@somewhere" if ! from
-    subj = "(nil)" if ! subj
-    from = decode_b(from)
-    subj = decode_b(subj)
-    $list.insert 'end', format('%-02d/%02d/%02d [%-28.28s] %s',y,m,d,from,subj)
-    outcount += 1
-  end
-  f.close
-  if outcount == 0
-    $list.insert 'end', "You have no mail."
-  else
-    $list.see 'end'
-  end
-  $top.deiconify
-  Tk.after 2000, proc{$top.iconify}
-end
-
-$list.insert 'end', "You have no mail."
-check
-Tk.after 2000, proc{$top.iconify}
-begin
-  Tk.mainloop
-rescue
-  `echo #$! > /tmp/tkbiff`
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkbrowse.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkbrowse.rb
deleted file mode 100644 (file)
index 4893f57..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env ruby
-#
-# This script generates a directory browser, which lists the working
-# directory and allows you to open files or subdirectories by
-# double-clicking.
-
-# Create a scrollbar on the right side of the main window and a listbox
-# on the left side.
-
-require "tkscrollbox"
-
-# The procedure below is invoked to open a browser on a given file;  if the
-# file is a directory then another instance of this program is invoked; if
-# the file is a regular file then the Mx editor is invoked to display
-# the file.
-
-$dirlist = {}
-
-def browsedir (dir)
-  if $dirlist.key? dir
-    $dirlist[dir]
-  else
-    top = if $dirlist.size > 0 then TkToplevel.new else nil end
-    list = TkScrollbox.new(top) {
-      relief 'raised'
-      width 20
-      height 20
-      setgrid 'yes'
-      pack
-    }
-    list.insert 'end', *`ls #{dir}`.split
-
-    # Set up bindings for the browser.
-
-    list.focus
-    list.bind "Control-q", proc{exit}
-    list.bind "Control-c", proc{exit}
-    list.bind "Control-p", proc{
-      print "selection <", TkSelection.get, ">\n"
-    }
-
-    list.bind "Double-Button-1", proc{
-      for i in TkSelection.get.split
-        print "clicked ", i, "\n"
-        browse dir, i
-      end
-    }
-    $dirlist[dir] = list
-  end
-end
-
-def browse (dir, file)
-  file="#{dir}/#{file}"
-  if File.directory? file
-    browsedir(file)
-  else
-    if File.file? file
-      if ENV['EDITOR']
-        system format("%s %s&", ENV['EDITOR'], file)
-      else
-        system "xedit #{file}&"
-      end
-    else
-      STDERR.print "\"#{file}\" isn't a directory or regular file"
-    end
-  end
-end
-
-# Fill the listbox with a list of all the files in the directory (run
-# the "ls" command to get that information).
-
-if ARGV.length>0 
-  dir = ARGV[0]
-else
-  dir="."
-end
-
-browsedir(dir)
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkcombobox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkcombobox.rb
deleted file mode 100644 (file)
index 1840270..0000000
+++ /dev/null
@@ -1,426 +0,0 @@
-#
-#  tkcombobox.rb : TkAutoScrollbox & TkCombobox
-# 
-#                         by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
-#
-require 'tk'
-
-class TkAutoScrollbox < TkListbox
-  include TkComposite
-
-  @@up_bmp = TkBitmapImage.new(:data=><<EOD)
-#define up_arrow_width 9
-#define up_arrow_height 9
-static unsigned char up_arrow_bits[] = {
-   0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7c, 0x00,
-   0x7c, 0x00, 0xfe, 0x00, 0x00, 0x00};
-EOD
-
-  @@down_bmp = TkBitmapImage.new(:data=><<EOD)
-#define up_arrow_width 9
-#define up_arrow_height 9
-static unsigned char down_arrow_bits[] = {
-   0x00, 0x00, 0xfe, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x38, 0x00, 0x38, 0x00,
-   0x10, 0x00, 0x10, 0x00, 0x00, 0x00};
-EOD
-
-  ############################
-  private
-  ############################
-  def initialize_composite(keys={})
-    keys = _symbolkey2str(keys)
-
-    @initwait = keys.delete('startwait'){300}
-    @interval = keys.delete('interval'){150}
-    @initwait -= @interval
-    @initwait = 0 if @initwait < 0
-
-    @lbox = TkListbox.new(@frame, :borderwidth=>0)
-    @path = @lbox.path
-    TkPack.propagate(@lbox, false)
-
-    @scr = TkScrollbar.new(@frame, :width=>10)
-
-    @lbox.yscrollcommand(proc{|*args| @scr.set(*args); _config_proc})
-    @scr.command(proc{|*args| @lbox.yview(*args); _config_proc})
-
-    @up_arrow   = TkLabel.new(@lbox, :image=>@@up_bmp, 
-                              :relief=>:raised, :borderwidth=>1)
-    @down_arrow = TkLabel.new(@lbox, :image=>@@down_bmp, 
-                              :relief=>:raised, :borderwidth=>1)
-
-    _init_binding
-
-    @lbox.pack(:side=>:left, :fill=>:both, :expand=>:true)
-
-    delegate('DEFAULT', @lbox)
-    delegate('background', @frame, @scr)
-    delegate('activebackground', @scr)
-    delegate('troughcolor', @scr)
-    delegate('repeatdelay', @scr)
-    delegate('repeatinterval', @scr)
-    delegate('relief', @frame)
-    delegate('borderwidth', @frame)
-
-    delegate_alias('arrowrelief', 'relief', @up_arrow, @down_arrow)
-    delegate_alias('arrowborderwidth', 'borderwidth', @up_arrow, @down_arrow)
-
-    scrollbar(keys.delete('scrollbar')){false}
-
-    configure keys unless keys.empty?
-  end
-
-  def _show_up_arrow
-    unless @up_arrow.winfo_mapped?
-      @up_arrow.pack(:side=>:top, :fill=>:x)
-    end
-  end
-
-  def _show_down_arrow
-    unless @down_arrow.winfo_mapped?
-      @down_arrow.pack(:side=>:bottom, :fill=>:x) 
-    end
-  end
-
-  def _set_sel(idx)
-      @lbox.activate(idx)
-      @lbox.selection_clear(0, 'end')
-      @lbox.selection_set(idx)
-  end
-
-  def _check_sel(cidx, tidx = nil, bidx = nil)
-    _set_sel(cidx)
-    unless tidx
-      tidx = @lbox.nearest(0) 
-      tidx += 1 if tidx > 0
-    end
-    unless bidx
-      bidx = @lbox.nearest(10000) 
-      bidx -= 1 if bidx < @lbox.index('end') - 1
-    end
-    if cidx > bidx
-      _set_sel(bidx)
-    end
-    if cidx < tidx
-      _set_sel(tidx)
-    end
-  end
-
-  def _up_proc
-    cidx = @lbox.curselection[0]
-    idx = @lbox.nearest(0)
-    if idx >= 0
-      @lbox.see(idx - 1)
-      _set_sel(idx)
-      @up_arrow.pack_forget if idx == 1
-      @up_timer.stop if idx == 0
-      _show_down_arrow if @lbox.bbox('end') == []
-    end
-    if cidx && cidx > 0 && (idx == 0 || cidx == @lbox.nearest(10000))
-      _set_sel(cidx - 1)
-    end
-  end
-
-  def _down_proc
-    cidx = @lbox.curselection[0]
-    eidx = @lbox.index('end') - 1
-    idx = @lbox.nearest(10000)
-    if idx <= eidx
-      @lbox.see(idx + 1)
-      _set_sel(cidx + 1) if cidx < eidx
-      @down_arrow.pack_forget if idx + 1 == eidx
-      @down_timer.stop if idx == eidx
-      _show_up_arrow if @lbox.bbox(0) == []
-    end
-    if cidx && cidx < eidx && (eidx == idx || cidx == @lbox.nearest(0))
-      _set_sel(cidx + 1)
-    end
-  end
-
-  def _key_UP_proc
-    cidx = @lbox.curselection[0]
-    _set_sel(cidx = @lbox.index('activate')) unless cidx
-    cidx -= 1
-    if cidx == 0
-      @up_arrow.pack_forget
-    elsif cidx == @lbox.nearest(0)
-      @lbox.see(cidx - 1)
-    end
-  end
-
-  def _key_DOWN_proc
-    cidx = @lbox.curselection[0]
-    _set_sel(cidx = @lbox.index('activate')) unless cidx
-    cidx += 1
-    if cidx == @lbox.index('end') - 1
-      @down_arrow.pack_forget
-    elsif cidx == @lbox.nearest(10000)
-      @lbox.see(cidx + 1)
-    end
-  end
-
-  def _config_proc
-    if @lbox.size == 0
-      @up_arrow.pack_forget
-      @down_arrow.pack_forget
-      return
-    end
-    tidx = @lbox.nearest(0)
-    bidx = @lbox.nearest(10000)
-    if tidx > 0
-      _show_up_arrow
-      tidx += 1
-    else
-      @up_arrow.pack_forget unless @up_timer.running?
-    end
-    if bidx < @lbox.index('end') - 1
-      _show_down_arrow
-      bidx -= 1
-    else
-      @down_arrow.pack_forget unless @down_timer.running?
-    end
-    cidx = @lbox.curselection[0]
-    _check_sel(cidx, tidx, bidx) if cidx
-  end
-
-  def _init_binding
-    @up_timer = TkAfter.new(@interval, -1, proc{_up_proc})
-    @down_timer = TkAfter.new(@interval, -1, proc{_down_proc})
-
-    @up_timer.set_start_proc(@initwait, proc{})
-    @down_timer.set_start_proc(@initwait, proc{})
-
-    @up_arrow.bind('Enter', proc{@up_timer.start})
-    @up_arrow.bind('Leave', proc{@up_timer.stop if @up_arrow.winfo_mapped?})
-    @down_arrow.bind('Enter', proc{@down_timer.start})
-    @down_arrow.bind('Leave', proc{@down_timer.stop if @down_arrow.winfo_mapped?})
-
-    @lbox.bind('Configure', proc{_config_proc})
-    @lbox.bind('Enter', proc{|y| _set_sel(@lbox.nearest(y))}, '%y')
-    @lbox.bind('Motion', proc{|y| 
-                 @up_timer.stop if @up_timer.running?
-                 @down_timer.stop if @down_timer.running?
-                 _check_sel(@lbox.nearest(y))
-               }, '%y')
-
-    @lbox.bind('Up', proc{_key_UP_proc})
-    @lbox.bind('Down', proc{_key_DOWN_proc})
-  end
-
-  ############################
-  public
-  ############################
-  def scrollbar(mode)
-    if mode
-      @scr.pack(:side=>:right, :fill=>:y)
-    else
-      @scr.pack_forget
-    end
-  end
-end
-
-################################################
-
-class TkCombobox < TkEntry
-  include TkComposite
-
-  @@down_btn_bmp = TkBitmapImage.new(:data=><<EOD)
-#define down_arrow_width 11
-#define down_arrow_height 11
-static unsigned char down_arrow_bits[] = {
-   0x00, 0x00, 0xfe, 0x03, 0xfc, 0x01, 0xfc, 0x01, 0xf8, 0x00, 0xf8, 0x00,
-   0x70, 0x00, 0x70, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00};
-EOD
-
-  @@up_btn_bmp = TkBitmapImage.new(:data=><<EOD)
-#define up_arrow_width 11
-#define up_arrow_height 11
-static unsigned char up_arrow_bits[] = {
-   0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x70, 0x00, 0x70, 0x00, 0xf8, 0x00,
-   0xf8, 0x00, 0xfc, 0x01, 0xfc, 0x01, 0xfe, 0x03, 0x00, 0x00};
-EOD
-
-  def _button_proc(dir = true)
-    @btn.relief(:sunken)
-    x = @frame.winfo_rootx
-    y = @frame.winfo_rooty
-    if dir
-      @top.geometry("+#{x}+#{y + @frame.winfo_height}")
-    else
-      @btn.image(@@up_btn_bmp)
-      @top.geometry("+#{x}+#{y - @top.winfo_reqheight}")
-    end
-    @top.deiconify
-    @lst.focus
-
-    if (idx = values.index(@ent.value))
-      @lst.see(idx - 1)
-      @lst.activate(idx)
-      @lst.selection_set(idx)
-    elsif @lst.size > 0
-      @lst.see(0)
-      @lst.activate(0)
-      @lst.selection_set(0)
-    end
-    @top.grab
-
-    begin
-      @var.tkwait
-      if (idx = @var.to_i) >= 0
-        @ent.value = @lst.get(idx)
-      end
-      @top.withdraw
-      @btn.relief(:raised)
-      @btn.image(@@down_btn_bmp)
-    rescue
-    ensure
-      begin
-        @top.grab(:release)
-        @ent.focus
-      rescue
-      end
-    end
-  end
-  private :_button_proc
-
-  def _init_bindings
-    @btn.bind('1', proc{_button_proc(true)})
-    @btn.bind('3', proc{_button_proc(false)})
-
-    @lst.bind('1', proc{|y| @var.value = @lst.nearest(y)}, '%y')
-    @lst.bind('Return', proc{@var.value = @lst.curselection[0]})
-
-    cancel = TkVirtualEvent.new('2', '3', 'Escape')
-    @lst.bind(cancel, proc{@var.value = -1})
-  end
-  private :_init_bindings
-
-  def initialize_composite(keys={})
-    keys = _symbolkey2str(keys)
-
-    @btn = TkLabel.new(@frame, :relief=>:raised, :borderwidth=>3, 
-                       :image=>@@down_btn_bmp).pack(:side=>:right, 
-                                                    :ipadx=>2, :fill=>:y)
-    @ent = TkEntry.new(@frame).pack(:side=>:left)
-    @path = @ent.path
-
-    @top = TkToplevel.new(@btn, :borderwidth=>1, :relief=>:raised) {
-      withdraw
-      transient
-      overrideredirect(true)
-    }
-
-    startwait = keys.delete('startwait'){300}
-    interval = keys.delete('interval'){150}
-    @lst = TkAutoScrollbox.new(@top, 
-                               :startwait=>startwait, 
-                               :interval=>interval).pack(:fill=>:both, 
-                                                         :expand=>true)
-    @ent_list = []
-
-    @var = TkVariable.new
-
-    _init_bindings
-
-    delegate('DEFAULT', @ent)
-    delegate('height', @lst)
-    delegate('relief', @frame)
-    delegate('borderwidth', @frame)
-
-    delegate('arrowrelief', @lst)
-    delegate('arrowborderwidth', @lst)
-
-    if mode = keys.delete('scrollbar')
-      scrollbar(mode)
-    end
-
-    configure keys unless keys.empty?
-  end
-  private :initialize_composite
-
-  def scrollbar(mode)
-    @lst.scrollbar(mode)
-  end
-
-  def _reset_width
-    len = @ent.width
-    @lst.get(0, 'end').each{|l| len = l.length if l.length > len}
-    @lst.width(len + 1)
-  end
-  private :_reset_width
-
-  def add(ent)
-    ent = ent.to_s
-    unless @ent_list.index(ent)
-      @ent_list << ent
-      @lst.insert('end', ent)
-    end
-    _reset_width
-    self
-  end
-
-  def remove(ent)
-    ent = ent.to_s
-    @ent_list.delete(ent)
-    if idx = @lst.get(0, 'end').index(ent)
-      @lst.delete(idx)
-    end
-    _reset_width
-    self
-  end
-
-  def values(ary = nil)
-    if ary
-      @lst.delete(0, 'end')
-      @ent_list.clear
-      ary.each{|ent| add(ent)}
-      _reset_width
-      self
-    else
-      @lst.get(0, 'end')
-    end
-  end
-
-  def see(idx)
-    @lst.see(@lst.index(idx) - 1)
-  end
-
-  def list_index(idx)
-    @lst.index(idx)
-  end
-end
-
-
-################################################
-# test
-################################################
-if __FILE__ == $0
-  v = TkVariable.new
-  e = TkCombobox.new(:height=>7, :scrollbar=>true, :textvariable=>v, 
-                     :arrowrelief=>:flat, :arrowborderwidth=>0, 
-                     :startwait=>400, :interval=>200).pack
-  e.values(%w(aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu))
-  #e.see(e.list_index('end') - 2)
-  e.value = 'cc'
-  TkFrame.new{|f|
-    fnt = TkFont.new('Helvetica 10')
-    TkLabel.new(f, :font=>fnt, :text=>'TkCombobox value :').pack(:side=>:left)
-    TkLabel.new(f, :font=>fnt, :textvariable=>v).pack(:side=>:left)
-  }.pack
-
-  TkFrame.new(:relief=>:raised, :borderwidth=>2, 
-              :height=>3).pack(:fill=>:x, :expand=>true, :padx=>5, :pady=>3)
-
-  l = TkAutoScrollbox.new(nil, :relief=>:groove, :borderwidth=>4, 
-                          :width=>20).pack(:fill=>:both, :expand=>true)
-  (0..20).each{|i| l.insert('end', "line #{i}")}
-
-  TkFrame.new(:relief=>:ridge, :borderwidth=>3){
-    TkButton.new(self, :text=>'ON', 
-                 :command=>proc{l.scrollbar(true)}).pack(:side=>:left)
-    TkButton.new(self, :text=>'OFF', 
-                 :command=>proc{l.scrollbar(false)}).pack(:side=>:right)
-    pack(:fill=>:x)
-  }
-  Tk.mainloop
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkdialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkdialog.rb
deleted file mode 100644 (file)
index 00cc12a..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/env ruby
-require "tk"
-
-root = TkFrame.new
-top = TkFrame.new(root) {
-  relief 'raised'
-  border 1
-}
-msg = TkMessage.new(top) {
-  text "File main.c hasn't been saved to disk since \
-it was last modified.  What should I do?" 
-  justify 'center'
-  aspect 200
-  font '-Adobe-helvetica-medium-r-normal--*-240*'
-  pack('padx'=>5, 'pady'=>5, 'expand'=>'yes')
-}
-top.pack('fill'=>'both')
-root.pack
-
-bot = TkFrame.new(root) {
-  relief 'raised'
-  border 1
-}
-
-TkFrame.new(bot) { |left|
-  relief 'sunken'
-  border 1
-  pack('side'=>'left', 'expand'=>'yes', 'padx'=>10, 'pady'=> 10)
-  TkButton.new(left) {
-    text "Save File"
-    command "quit 'save'"
-    pack('expand'=>'yes','padx'=>6,'pady'=> 6)
-    top.bind "Enter", proc{state 'active'}
-    msg.bind "Enter", proc{state 'active'}
-    bot.bind "Enter", proc{state 'active'}
-    top.bind "Leave", proc{state 'normal'}
-    msg.bind "Leave", proc{state 'normal'}
-    bot.bind "Leave", proc{state 'normal'}
-    Tk.root.bind "ButtonRelease-1", proc{quit 'save'}
-    Tk.root.bind "Return", proc{quit 'save'}
-  }
-}
-TkButton.new(bot) {
-  text "Quit Anyway"
-  command "quit 'quit'"
-  pack('side'=>'left', 'expand'=>'yes', 'padx'=>10)
-}
-TkButton.new(bot) {
-  text "Return To Editor"
-  command "quit 'return'"
-  pack('side'=>'left', 'expand'=>'yes', 'padx'=>10)
-}
-bot.pack
-root.pack('side'=>'top', 'fill'=>'both', 'expand'=>'yes')
-
-def quit(button)
-  print "You pressed the \"#{button}\" button;  bye-bye!\n"
-  exit
-end
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/Orig_LICENSE.txt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/Orig_LICENSE.txt
deleted file mode 100644 (file)
index 71e3595..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-
-  #########################################################################
-  ### The following text is the original file of the Tcl/Tk extension.  ###
-  ### Icon data files ( those are 'tkIcons', 'tkIcons-sample.kde', and  ###
-  ### 'tkIcons.kde' ) are quoted from the source archive of ICONS       ###
-  ### extension. As the following document describes, those icon images ###
-  ### are not applied the license.                                      ###
-  #########################################################################
-
-
-IMPORTANT LICENSE INFORMATION
-=============================
-
-The following terms (based on the standard TCL/TK license) apply to all files
-contained in this package, <b>except</b> the icon images.
-
-The icon images can be freely distributed. If you require clarification of
-copyright/license details for the images, please contact the appropriate
-creator/maintainer.
-
-ICONS: LICENSE TERMS
-====================
-
-This software (ICONS) is Copyright 2002 by Adrian Davis (adrian@satisoft.com).
-The following terms apply to all files associated with the software except
-where noted above. 
-
-The author hereby grants permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that
-this notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file
-where they apply. 
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY
-OF SUCH DAMAGE. 
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
-OR MODIFICATIONS. 
-
-GOVERNMENT USE: If you are acquiring this software on behalf of the
-U.S. government, the Government shall have only "Restricted Rights"
-in the software and related documentation as defined in the Federal
-Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
-are acquiring the software on behalf of the Department of Defense,
-the software shall be classified as "Commercial Computer Software"
-and the Government shall have only "Restricted Rights" as defined in
-Clause 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing,
-the authors grant the U.S. Government and others acting in its behalf
-permission to use and distribute the software in accordance with the
-terms specified in this license.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/tkIcons b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/tkIcons
deleted file mode 100644 (file)
index 0d5b2c8..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-actattach16:act act16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBPz+/AQCBAAAACH5BAEAAAAALAAAAAAQABAAAAI2hAOCxg2h0nJHyEshi9HpxU1GOCLdZoKpQ15nibUoprKp9lh2oucUxsBRXsJh4Hjs/QTMpr8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actbookmark16:act act16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCwqLLSytLy+vERGRFRWVDQ2NKSmpAQCBKyurMTGxISChJyanHR2dIyKjGxubHRydGRmZIyOjFxeXHx6fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVbICACwWieY1CibCCsrBkMb0zchSEcNYskCtqBBzshFkOGQFk0IRqOxqPBODRHCMhCQKteRc9FI/KQWGOIyFYgkDC+gPR4snCcfRGKOIKIgSMQE31+f4OEYCZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actbookmarknew16:act act16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCwqLLSytLy6vERGRFRWVDQyNKSipAQCBMTGxKyurISChJSSlJyanHR2dIyKjPz+xISGhPz+BGxubMTCBHx+fPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVfICACwWieY1CibCCsrBkMb0zchTEcNYsIiYHiwIOdEAvigdFQGE0Ix4NBbSAgsWjk+jBIAlcUYrJASChnSXZSoUDelKfoKpFALJA61ueGI2IAZmhogGFmCGGAgXsifiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-actcheck16:act act16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBMT+xATCBASCBARCBAQCBEQCBAAAACH5BAEAAAAALAAAAAAQABAAAAM2CLrc/itAF8RkdVyVye4FpzUgJwijORCGUhDDOZbLG6Nd2xjwibIQ2y80sRGIl4IBuWk6Af4EACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actcross16:act act16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/PwCBMQCBEQCBIQCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMuCLrc/hCGFyYLQjQsquLDQ2ScEEJjZkYfyQKlJa2j7AQnMM7NfucLze1FLD78CQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actexit16:act act16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBDQyNHR2dCH5BAEAAAAALAAAAAAQABAAAAI4hI+pFrHb3nEg1iWiDiINCwYDko0V9XUTda6I1TIsUMpGinyzbB6ZeGuoEr+GUDL4CXqSphPhLwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-acthelp16:act act16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQ6XAQCBCyCvARSjAQ+ZGSm1ARCbEyWzESOxIy63ARalAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQ/EEgQqhUz00GEJx2WFUY3BZw5HYh4cu6mSkEy06B72LHkiYFST0NRLIaa4I0oQyZhTKInSq2eAlaaMAuYEv0RACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actitemadd16:act act16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBARCZPz+/Mzq9BTC3ITC1HSyzGSivAw+XBSStIS6zHy2zAQCDFyatAQOHFSStEyOtAQSJBSq1DR2nCxunCRmlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVbICCOQTmeaCAMRIC+AVu47xkTBl2Ld16XQNYBQTQBVIOkMHFQJBeMI4tAbSSu2IRDSnhAvFfI97sFRM6RwOMacbjLKckVvgvIJ5EdSU7J648VgXQ7Dmd/hyJ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actitemdelete16:act act16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBARCZPz+/Mzq9BTC3AQCDAQOHFSStAQSJAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQwEMhJq704681n+GAISoEwnGg6EAUQrEQsz4ThEkeu77kNIAagMEj0dY7IpHI58UcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actlock16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaVAQCBKSipDQyNMTCxISChFxaLFxSJEQ+FExGHCQiDBwaDGxiLHxyNHRuPIR+TIyGZJSSfFxaRFxWJGRiLJyaXNzWpNTOnMzGnLy2hJSKTGReLKyqjPTu1NzarMS+jLSyfKyibJySXIyGVCQeDLSytPT29Ozu7OTi5NTS1KyurJSSjGxqVFxaXLS2tKSebOzuzLSufJSOXExGLGRiTExONAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaTQIBwGCgGhkhkQDBoEpLKQoBACAyOUID1qTVwoQGvMPxNFgVjAxp6QCQUicSCwVgkG44HJCKRRCYUCAxIFRYXhxgZGhYbHINEHR4fGCAhIiMkFSVKJicoKSoFKwMsLZtDLison6GjLA92qCueoAUvpC2xQhWqrLYDErmEMDEXlDIwMxAHukI0NS01EzY2NAmPAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actredo16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBxOHBxSHBRGHKzCtNzu3MTSzBQ2FLzSxIzCjCSKFCyeHDzCLAxGHAwuFDSCNBxKLES+NHSmfBQ6FBxWJAQaDAQWFAw+HDSyLJzOnISyjMTexAQOBAwmDAw+FMzizAQODDymNKzWrAQKDAwaDEy6TFTGTFSyXDyKTAQCBAwiFBQyHAwSFAwmHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ2QIBwSCwaj0hAICBICgcDQsEgaB4PiIRiW0AEiE3sdsFgcK2CBsCheEAcjgYjoigwJRM2pUK0XDAKGRobDRwKHUcegAsfExUdIEcVCgshImojfEUkCiUmJygHACkqHEQpqKkpogAgK5FOQywtprFDKRwptrZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actreload16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCRaJBxWJBxOHBRGBCxeLLTatCSKFCymJBQ6BAwmBNzu3AQCBAQOBCRSJKzWrGy+ZDy+NBxSHFSmTBxWHLTWtCyaHCSSFCx6PETKNBQ+FBwaHCRKJMTixLy6vExOTKyqrFxaXDQyNDw+PBQSFHx6fCwuLJyenDQ2NISChLSytJSSlFxeXAwODCQmJBweHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaBQIBQGBAMBALCcCksGA4IQkJBUDIDC6gVwGhshY5HlMn9DiCRL1MyYE8iiapaSKlALBdMRiPckDkdeXt9HgxkGhWDXB4fH4ZMGnxcICEiI45kQiQkDCUmJZskmUIiJyiPQgyoQwwpH35LqqgMKiEjq5obqh8rLCMtowAkLqovuH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actrun16:act act16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/ISChKSipMTCxLS2tLy+vMzOzMTGxNTS1AAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARlEMgJQqDYyiDGrR8oWJxnCcQXDMU4GEYqFN4UEHB+FEhtv7EBIYEohkjBkwJBqggEMB+ncHhaBsDUZmbAXq67EecQ02x2CMWzkAs504gCO3qcDZjkl11FMJVIN0cqHSpuGYYSfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-actstop16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/Gw6NGQuLHQ6NGQmJFweHFQaFPTm5PTa3PTW1Oy+vOS6tNSinKReVDQWFPz+/Nx6fNyCfNyGhNR+dMxybMRiXLxGRIwWFNx2dNx+fNx2bMxuZLQWFBwWFPTu7Pzy9NRqZNRuZMRSVLwmJGwWFNR2dMQiHPTKxMxmXMQyLMxmZNx6dMxiXMRSRMRaVKxybMxaVEQWFMQuJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaaQIAQEBAMCAWDYcgkHhAJxYLRcDQBggckIplQKpaLdRh4YDIaSWa94Vw6woAHgv6AMKGPaMQhwQMJJRkfhHmEJhdvRCcgGSCEkCgpbnAECiorGYYfLCItlAAFCygQj5AfbYlwBQwVE5AukG6KBi8tMC0fLi0pHxyzcAAxFxwmMny/wEwOxMm/qlcdJCSJ1H5XQh3a28HY3kx+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actundo16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBxSHBxOHMTSzNzu3KzCtBRGHCSKFIzCjLzSxBQ2FAxGHDzCLCyeHBQ+FHSmfAwuFBxKLDSCNMzizISyjJzOnDSyLAw+FAQSDAQeDBxWJAwmDAQOBKzWrDymNAQaDAQODAwaDDyKTFSyXFTGTEy6TAQCBAQKDAwiFBQyHAwSFAwmHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ1QIBwSCwaj0hiQCBICpcDQsFgGAaIguhhi0gohIsrQEDYMhiNrRfgeAQC5fMCAolIDhD2hFI5WC4YRBkaBxsOE2l/RxsHHA4dHmkfRyAbIQ4iIyQlB5NFGCAACiakpSZEJyinTgAcKSesACorgU4mJ6uxR35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actunlock16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaVAQCBKSipDQyNMTCxISChFxaLFxSJExGHEQ+FCQiDBwaDBweDGxiLHxyNHRuPIR+RIyGZJSSfFxaRGxmLJyaXNzWpNTOnMzGnMS+jJSKTGReLKyqjPTu1NzarLSufKyibJySXIyGVGxiNFxaXLSytPT29Ozu7OTi5NTS1KyurGxqVCQeDJSSjLS2tNTW1KSmpGRiLKSebOzuzJSOXExONExGLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaVQIBwOAwYA8SkMCAYOAnKYiFAIAQGyOgVCggYuEovVxztMpdnwAGRSCgUCwOjIeQ6HpCIZDKRUNYMRBUWF4UYGRoWGxyBRR0eHxgaICEiIyR0QyUmJygpKgUrAxMsLUQlKyieoKIuEAunK52fBS8DLiywQySpnjC1Mbi6QjIzNBeSIBY1EQfDQgosLAEUNjY3Co1DfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-appbook16:app app16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBDyKhDSChGSinFSWlEySjCx+fHSqrGSipESOjCR6dKTGxISytIy6vFSalBxydAQeHHyurAxubARmZCR+fBx2dDyKjPz+/MzKzLTS1IyOjAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVkICCOZGmKQXCWqTCoa0oUxnDAZIrsSaEMCxwgwGggHI3E47eA4AKRogQxcy0mFFhgEW3MCoOKBZsdUrhFxSUMyT7P3bAlhcnk4BoHvb4RBuABGHwpJn+BGX1CLAGJKzmKjpF+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-appbookopen16:app app16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBExCNGSenHRmVCwqJPTq1GxeTHRqXPz+/DwyJPTq3Ny+lOzexPzy5HRuVFSWlNzClPTexIR2ZOzevPz29AxqbPz6/IR+ZDyKjPTy5IyCZPz27ESOjJySfDSGhPTm1PTizJSKdDSChNzWxMS2nIR6ZKyijNzOrOzWtIx+bLSifNTGrMy6lIx+ZCRWRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaeQEAAQCwWBYJiYEAoGAFIw0E5QCScAIVikUgQqNargtFwdB9KSDhxiEjMiUlgHlB3E48IpdKdLCxzEAQJFxUTblwJGH9zGQgVGhUbbhxdG4wBHQQaCwaTb10emB8EBiAhInp8CSKYIw8kDRSfDiUmJ4xCIxMoKSoRJRMrJyy5uhMtLisTLCQkC8bHGBMj1daARgEjLyN03kPZc09FfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-appboxes16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMT+xAT+BASCBATCBMT+/AT+/ASChATCxPz+xPz+BISCBMTCBAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEEgZwrwYBCFqvhs3DNYXjChRlWBRjIRqGN4UuEUczMZxsDeXykdEsDQVVSLhQxhBCkVlmXA+KVHFYhFYOoHbMGN6pTQaW8YYiQmcG+q16a0+Zipw+4e9B/gjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-appbox16:app app16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+xISCBMTCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANECKoR6ys2IVqokF08yMTA1gwkYX5WQK5ma4VceTYPxXnBWdtY6+0834/Bowgzm6APWRQcH4TiMhPK2WYRiZWW7XK7/gQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-appbrowser16:app app16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxONCROfCRKfKx6LNy+bNTOpGSS1DRupAwyXBRSnPTSjPTqvOzqzMzSvHSSlKy6ZDxutAxCpBQ2XBxepLTKvPzqzPzy5OTShLS2dLSqRFR2jBRerBQ+jOTixOzetNS2XHx6XDR2tCRexBwyTDyKzOTavPzq1OzKdCx23BRKtCQ6VCQmHFSa7IyirOzSnGSGpIR+bFSO1DyK7DR+5CRixBw2VDQuHFye7IS27NzGXISuhEyS5DR25BRWxBQ+lBQyXCQqPCxSfGyu7GyerKy2ZFR+rERqfCRmxBROtBQ+fBwuTBwmNDSW9JyabLyqRIx+TExSXBQ6bAQCBBQ6ZBxapDR+zBxq3LyaLJySRHxqPGxeNBxGbCRmrHRyRERONDRKNDQ2JCQuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFhgABAQIDh4MBBAUGBwgDCYcKCwwNDg8QERIThRQVFhcNGBkaGxwdoYMDHhcXHxggISIjEiSvJSYXJwsoISkpIyorLIIDLS4WLzAxMjM0NSo2N8o4OS46OzwzPSk+P0BBgkI8Q0NERUZHCEhJSktMgwk4Qy1NTk9QUVJLphCiUsWKlStYsmjZQiJgIS4KuijQ4iXAFxYCDVFJwGUFmDBhMjYSw0KMyEYoBfkJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-appcalc16:app app16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBISChPz+/AQCBCH5BAEAAAAALAAAAAAQABAAAAI4hI9pwe0Ogpi00hHF2LzzzFlTsIHD45SSx6oCeW4wjK2tl83y7t64pIsJaxrfh2bEAJIlhRPhLwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-appclock16:app app16 16:photo:16 16:R0lGODlhEAAQAIIAALy+vAQCBPwCBMQCBIQCBISChPz+/MTCxCH5BAAAAAAALAAAAAAQABAAAANbCLHcrSLKOZcYmDSCsR1aUABAsXDDJwJGa5SBFwgaWxbCG3CWaBwG3C8Y67FawpYiNQscg65fsVkYuoAmJs1pBR522lQB6ILJLqHRwQQOZzYdZnw+dzruDIA/AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-appdate16:app app16 16:photo:16 16:R0lGODlhEAAQAIQAAASC/AQCBPzerPyqXMRaBIQCBISChPz+/KSipMTCxPz+BMTCBPwCBPz+xPzCxMQCBISCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVxICCOQGCeJjkGwkC8RFEEavkax2G8dB0QuRyhhzoBg8MSYsncJXKJZIDZHCoWP1ogGIwGrtnSgUFmHLyNRHhrdpjRamnO/SYkromHdnxwnwkKVxByZW8DgQsQM2JcfwZXO0MBCZSVBgMuLzJaRZ0pfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-apppencil16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/IQCBMQCBPzCxAQCBPz+/MTCxISChDQyNKSipEQCBAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARDEMhJZRBD1H2z3lMnjKCFjUJQimOgcmcbELCXzjXq0hV785WCQYcDFQjDXeloMByKG6YTAdwIDAlqSZJSVFeKLcUfAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-appsheet16:app app16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBAT+/Pz+/KSipPz+BAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANFCBDc7iqIKUW98WkWpx1DAIphR41ouWya+YVpoBAaCKtMoRfsyue8WGC3YxBii5+RtiEWmASFdDVs6GRTKfCa7UK6AH8CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-apptool16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBISChGRmZMTCxKSipLS2tHx6fPz+/OTm5FxaXOzu7DQyNMzOzAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAReEMhAq7wYBDECKVSGBcbRfcEYauSZXgFCrEEXgDCSeIEyzKSXZoBYVCoJVIqBGByKu0Cy8QHxmgNngWCkGgqsGWFseu6oMApoXHAWhWnKrv0UqeYDe0YO10/6fhJ+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-apptools16:app app16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBExKTERCRAQCBOzu7Nze3MzKzLy+vCxqZBQ2NJyanKyqrGRiZDRydKza3FRWVPT29LSytDw6PMTm5EySjCxaXGRaJFSanCRSVGxqbPTmvMSqVJTW1GSurHS6vOzq7KSipISChFRKHJSGNPz23GxKFBQ6PKyurCwqLMyufJx2RAQGBJSWlEwyDIRiLNy+lLSKVDwmDJRuNOTOrLyabGRCFDx2dKSCVOzWtHzCxOTGnNSyhAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAahQIBwCAgIBAOiUiggFAyHASKxDAwUC8Zg0HAglA9IZPGQABoTSqJCFTIOEIsFgHBcEhhHUpKJFCwaGxYYHB0VEx4IEh8gIQwiIyQbJRMcHokmEicfDygAkCkqJQgIGG0rLElCLS4vMCWqQwMCQg0UMTIzNDVLQjaIGDE3ODQlS785CEkxKjowvEOHybG4O6JDCdNKuDUxRAmxRDHeveUAfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-appuser16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/MTCxISChMT+/ATCxASChFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEMg5gw00yyDGIAR1YUDggeFWFIZhnSBZrsZxdIOFEGTA2oeBAHeyuGwvzxBlYdUOLROMFzDQntJPrNoqAKUBaqnV+k57ZORruykHDj2LqIzUVKp1u0iuB/gjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-appusers16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTCxISChAT+BMRaBPyqXARCBPz+/FxaXAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARLEIRJa5Ui673nsGAgeKE1Bl9AUEXbiqTlFlZaGUZoszm4BzhDAVf5BYbAXI+TAR6CS2ZGSZSEiIIqYIsSIEaJ7GRrlY7J1lKA7I8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-appwp16:app app16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBKSinJyOfPz27Pzy7AwKDExOTJyWlERCRKSelPz69LyyrKymnPz+/MS2fDQyJAQCBOTazLSiXOzivMS2jKSSVOzmxPz25NzSpPTu5KyebOzixNTGjOTWpMSydMSybCwqFGReVKyaXNzSnGxeNJSCVMS2nPz23MSuZIR+bJyShLyqnOTOtGxiXIR6XOTSvIx6RMSubIyCdKSalMS6pOTWxMzKvKSabJyKTOzezHxuPGRmZKyurMTCvPTq3AAAACH5BAEAAAAALAAAAAAQABAAAAajQIBwCAgIiEhiYEA4FgwHRDKhIBAWz4OhgGQ0FAPHA7qFEBONb0Qy0ULeQ2+aUrFcMI+3GYBOZzQbHB0eHyAhIQByDREiEwMjFRIkJQImAgJ+jScjHigkKSorLC0AKg2NFSMoki4qCy+IQgITKDAxkjIzNDWkQxQoJaskMgk2Eb1DNzgoOCoHDDY5yEIwJToAOzw9ET7TQiREAhkZ3kmy5QB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-cal1day16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANOCLrMEUDIOUS9AFLLhx8LIRZjKYZmMRCkaChFLHty/AIiS3y6q+QtT49wq8VotRtQJGwRf6Zmrlj7DJLQXsupTJmeEIN4TB5nII20wp8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-cal5days16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANMCLrMEUDIOUS9AFLLhx8LIRZjKYbj55GioRRwoQ5x4QIiIdMmcec7jy53q81qP9OO5VMAj8RXTFWzOZW95HDLdEEM4LA4nIE0zgp/AgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-cal7days16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANPCLrMEUDIOUS9AFLLhx8LIRZjKYbj55GioRRwoQ5x4QIiwcp0fucsj873qvGMv5Jw2FIACUsW4WakGW1O046I05qmGYBhTC6TM5CGWuFPAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-calappointment16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBAQC/AQCjPz+/MTCxPz+BISCBISChKSipAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARbEMhJaQhA6D1E/wDGeeRgDhOhFoTBEi+REgdrIHScSEVvAD9Xr7cDqGSGpFEnQSqTv2NxCFQOiU1VEAiTZmstHFg1vQKuw+LxxfYaV/AuOQRI2O/4ewhT6Uv8EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-calbell16:cal cal16 16:photo:16 16:R0lGODlhDwAOAIIAAPwCBISCBPz+BIQCBMTCxISChPz+/AQCBCH5BAEAAAAALAAAAAAPAA4AAAM+CLrR+zCIAWsgLVRGRBhOVQiG94WPVAbHaZHYAWqRYLbge88RsbInGuBCEhRYrZYm4xk4nYdoKzKIbiKHawIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-callist16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBAQC/AQCjPz+/KSipPzerMRaBEQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARDEMhJaQhA6D1E/wDGeeRgDhOhruyatjBRSIRxxOsMEAdC0BUZDcfSEYvDo3Bn++2Cxt7RqFxWhZiCdsvdhjCVsMQfAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-calmonth16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANSCLrMEUDIOUS9AFLLhx8LIRZjKYbiRxLFIBpK0Q6z7MkwkJIe8b0KEeuWchFysuStVsjtfMbeMQitWpG25YfmNK1WU53XNIUYzug0OgNpuBX+BAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-caltoday16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBAQC/AQCjPz+/MTCxKSipPyCBMRaBPyqXAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARTEMhJaQhA6D1E/wDGeeRgDhOhFmurpi5LyIQhFfiBIAfuFzaAioBIJBCummRYPCaDPh3vhwsOZdihNfa8Ub/AJXemFZPPNBvGwG672yFMZS7xRwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-caltodo16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBAT+BAQC/AQCjPz+/MTCxPzCxKSipPwCBMQCBIQCBAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARaEMhJaQhA6D1E/wDGeeRgDhOhFmurpi5LyMYhFXiuFwZiA6qZYbbqJX5BIw2RAPxwAAWCyWMCCsiXFGEEErKz6LQZfOqiTR1YJiGq1rFyyHmo2+/1EKbCl/gjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-connecting16:connect connect16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBPz+BMTCBISCBAQCBPz+/MTCxMTGxISChFxaXMzGzKSipAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEMhJZbihUiz60FPnfaA0iBpBVGdHEYWxToEoSHBRHHM9AgSEQRcj+AYkYAJxIPKQFUJiOdTJQFIDU6dYzKKFhTCM+E5g4mXaDAyrlogEG+DGTecA7wsP8EcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-connectno16:connect connect16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBPz+BMTCBAQCBERCBPz+/MTCxMTGxISChFxaXMzGzKSipAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARPEMhJq704axBEHoPUEdhQGMNYFuwxkKInDYjBniEnwMCQIIebSzXx/WwsFK+YMABZikWuYlrUCtZpEYv4WRPaHhb064YB41kCfJFSQBh/BAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-connectyes16:connect connect16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/KSipDQyNMTCxMTGxISChFxaXMzGzAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEMhJZxCjgsAtDtUlCOA1gJQ4kl/IDatAoF7xxkS6GgEBr6jAobCyBX42SQBxMOx6A8MhiGASR8YDgrYsNEeJ0zaEGZY7uoH2oB6nOUwtbdLaVOeTUwo/8UcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-devcdmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXISChNTS1MzKzMTGxMy+vNSytAQCBOzq7OTi5Nza3Oy6vPy2tOTStPz6/Ozu7Nze3MTKxOS2tOzOvNTqvLT2tDw+BPTy9MzOzLS2tPy+tLz+tLz2tLSynLzqvLzavLTOtNTW1KSipPz+/LzKvMTCxDQyNASCBARCBDTSJIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAa0QIBQGBAYA8Ok0DggFAwHBEIJECQUi8GT0XBMh9YHJDKQTBqUiuUCVmAeiYzmsKlwOt/AAKFIFAIIFx4WHyAhUwIDIgsZFyMkFxchJSYmiBkSBBoIJJwIGgOhiCYFJSEnFyQjFwNZewABISAfFiYnCAEmCREIrwAIFhwVGwcaBAkPGApsQsAVFA0GBQMRbxBTKM0ODQwTEq192ClDgROkBHvYKuNJUu5CKCorX1RDKCkpUn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-devcdunmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXISChNTS1MzKzMTGxMy+vNSytAQCBOzq7OTi5Nza3Oy6vPy2tOTStPz6/Ozu7Nze3MTKxOS2tNzmvLT2tDw+BPTy9MzOzLS2tPy+tLz+tLz2tLSynLzqvLzavLTOtNTW1KSipPz+/MTCxLy6vDQyNOTm5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAapQIBQGBAYA8Ok0DggFAwHBEIJECQUi8GT0XBMh9YHJDKQTLqUigWsuDwSmMxBQ9lwvoEBQpEoBBAWHRseHyBTAgMhCxgWIiMWFiASJCSHEgQSGQgjmwglGKCHBQUSICYWIyIWAwshIVMBIB8eFSQmCAEFCREIekIIFRsUGgcZEgkPFydrvxUUDg0GBSEREGJfv9AMEySsJxDYQ4DcEhh64UpS6lTs7QB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-devdiskmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBDQyNIRuVKyCXMSKROzSrOzKpOTGnLSafLySZKxuLMSOVPTWvPzixLSehNyibOzOrGxaVJx+XOzGnFw2FJRuPKx+TPTSrHRWPKyKZPTOpHxOJKyKXFw+HKSipISChMTCxFxaXIRiPNSWXExOTOS2hLR+PLRyLPTWtMyOTASCBARCBPz+/DTSJIyKjIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaTQIBwCAgYA8SkMCAYDARI5ZJQMBwQiWgyoFgwrA3HQ7scQAqFAcEQOUi0zAkFUSFYLghMBloUCDQNGxwdHhwHekcfICEhICIfIxkLJBABJUYCICABIhAOBiYnKJaXmH4CGSkYCCqkSAEfTKenrkOwsrQll0IrS7G5uwArLLaxLbXCLsTFLyDBKy4wZEVHvCwsRn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-devdiskunmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBDQyNIRuVKyCXMSKRPTWtOzKpOTGnLSafLySZKxuLMSOVOzOrPzm1LSehNyibGxaVJx+XOzGnFw2FJRuPKx+TPTSrHRWPKyKZPTWvHxOJKyKXFw+HPTOpKSipISChMTCxFxaXIRiPHxaNLRyLNSWXExOTPzixOS2hLR+PMyOTPz+/IyKjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaIQIBwCAgYA8SkMCAYDARI5ZJQMBwQiWgyoFgwGgiD46FdDiCFwoDQAEe0TMkEQSFULIcLBloUCDIaDRscHRsNHhhHHyAhISAiHyMkJSYQASdGAiAgASIQKA0pKguXmJl+AiQGFwgrpUgBH0yoqK9DsbO1J5hbsrq8SrgstlJFHy0gwMVFR1J+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-devfloppymount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBMTCxARmZPz+/FSWlLSytKSipERCRIyOjISChOTm5HRydNza3GRiZFRSVASCBARCBDTSJIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVrICCOQBCQKBkIw5mqLFG47zoQ+FwbN57TosDhgPD5dMEEIqE04kwlBWKBUEiNVYFpyqAyGEUCgqEtERiNNMLhQKzLQYJg7n7Y4aMAwbCUPvAQeWNgfzQQETAIhSMQEogwgBITQEGGEREmfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-devfloppyunmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTCxARmZPz+/FSWlLSytKSipERCRIyOjISChOTm5HRydNza3GRiZFRSVCH5BAEAAAAALAAAAAAQABAAAARcEMgJQqCYBjFu1hxReN82EOhYGieaklJwHIjrqnGCJLqNWhUFYoFQCG1FgWXIIDIYNQKCoawQGI0swuFAbKsxgmDsfZjBkwDBsNM90Jot9A3DbBD0Dwiur9QnfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-devnetwork16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBISChPz+/Nza3ARaZESanCyKlARudARGTLy+vNzq7ARmbMTCxARufAROVMzOzKSipARyfOzq7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVmICAGZFmKQiACweCSBImq41AYB5IodLq2hwWO0ejRWDac48Gb/QKNqNRoqspmrVcAUuIJBANS8sBIFCORUgooPEh4J8B67NgdsVBp9C5XWfl9LRMTCyReX19hARNojWlWLH+AAH4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-devpc16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBISChHx+fPz+/AQCBAQC/AT+/AQCxAQChAT+BLy+vAR+BAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARYEIAgqK1YzsG754QUDERpmkEpkkXrtoK6EcVgHIibhnNx564Yb0TDvQq7FQ34EiqPOhnREqhWSUPsyZSQAbbg7GcMEgwUiYVivTa1R+y4XEGoWO/4AMAfAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-devscanner16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/MT+/ASChARCRATCxMTCxFxaXKSipDQyNAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARTEMgJgqWBVivEldkUdKSXhVjZfenommglDERh3Tc4E4ZRHAGgkEPr9X6H5AHBERSMRyWzkug8jQXFEhWoOo8dRYxqLXSmGjIJnVaz29Q3fAP3RwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-devscreen16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXFRSVPz+/PT29OTm5OTi5DQyNDw+PERGRExKTHx+fISChIyKjHRydFxeXDQ2NCQmJBQSFAQCBERCRMTGxHR2dGRiZExOTDw6PCQiJAwODCwuLFRWVOzu7BweHAwKDCwqLHx6fBQWFGxqbGRmZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAanQIBwSCwKAwKkMslEAgSDqDRKqBYKhkNgcDggEorkMrDQchkNhuOhgEQkk0l5S2lUGpYLJqPZTAwMHB0DCmhqAW0Rfh5zAxgOkBcCFAcfIBMECxwBBAEPFw8dChkhcBMDDAcdnQqtFKSWcQMimx4dGRkQBxGxsg6bBQEawx8jl3GnJFoFHRNXVVNRJYIFDAsL1tgiDiQXFx0HABwcXeQH5OjkRutEfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-devspeaker16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBFxaXAT+/DQyNATCxMTCxPz+/AQCBKSipASChAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARWEMgJQqCXziDG2JoUEENhZBkmHIWJVptAmqcIW/Js1MiF56TBzkckAAcHoa9nMRKeA4TyJk0knsHhTeK5khBaH2VwLYVh40TJhQ6RzeIQV32Quz8hfwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-editcopy16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIUAAFxaXPwCBNze3GxubERCRPz+/Pz29Pzy5OTe3LS2tAQCBPTq3PTizLyulKyqrOzexLymhLy+vPTy9OzWvLyifMTCxHRydOzSrLyihPz6/OTKpLyabOzu7OTm5MS2nMSqjKSipDQyNJyenLSytOTi5NTS1JyanNTW1JSWlLy6vKyurAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAaUQIBwCAgYj0eAYLkcEJBIZWFaGBie0ICUOnBiowKq4YBIKIbJcGG8YDQUDoHTKGU/HhBFpHrVIiQHbQ8TFAoVBRZeSoEIgxcYhhkSAmZKghcXGht6EhwdDmcRHh4NHxgbmwkcCwIgZwqwsbAhCR0CCiIKWQAOCQkjJAolJrpQShK2wicoxVEJKSMqDiAizLuysiF+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editcut16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/ISChCH5BAEAAAAALAAAAAAQABAAAAIwhI9pwaHrGFRBNDdPlYB3bWHQ1YXPtYln+iCpmqCDp6El7Ylsp6ssR1uYSKuW0V8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-editdelete16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbPT29GxubMzOzDQyNIyKjHRydERCROTi3IyKhPz29Ox6bPzCxPzy7PTm3NS6rIQCBMxCNPTq3PTi1PTezMyynPTm1PTaxOzWvMyulOzGrMymhPTq5OzOtNTKxNTOzNTCtNS+rMSehAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaKQAAgQCwahcihYMkcBAiBpLJApRoOBWgyIKhSEQkFgrBAcr1URiPhKAsDD3QB8RhA3FM0IlLHnyUTVBMSFBUWfl0XGBMTGBcZGodmcQWKjpAbHIgIBY2LHRoempOdjooTGx8giIOPFYofISJ+DyMXI6AfFySyfiUmJSUnKBYcICIpfgELzM3OZX5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-edit16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaVMR+RPzKjNze3AQCBMR6RPzGjPyODPz+/MzOzPyKDPyKBPz29OTWzPyGDPyGBOx6BOza1OR2BKROBNSOXKRKBBwOBOzu7PTWxPzizOySZPyCDFxaXOy2lNRyRMxmJCQOBPTm1OzStPTKrMR+XIRWLFxGNCQSBDQyNIRSNDQuJERGRLyqlNzSvIx6ZKRuVEw6LLSyrLymhKSShBwaFFROTJyWjMS+vNzW1OTazNzKrHRqXOzezOTOpPTq3OzWvOTStLyedMS+rLy2pMSynMSulAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAewgAAAAYSFhoQCA4IBBI2OjgUGBwiLBAmXlpcKkgsMlZcJBA0JDpIPEBGVjwkSBgOnExSfmBIVBxAMExYXswkYGRobHLq8gh2PHhoeHyAWIYKzIiMkJSYnKCnQg5YNHtQqKywtK9qMBC4vMDEBMjIz2dCMDTQ1Njc4OToz5PEEOzw3ZPToMcLHO23HfogQ0QMIkCA+hPBbhAPHECJFjMyYIUQIvEUpUqwQOXKkSEF+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-editpaste16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQiFHRqNIx+LFxSBDw6PKSaRPz+/NTOjKyiZDw+POTe3AQCBIR2HPT23Ly2dIR2FMTCxLS2tCQmJKSipExGLHx+fHR2dJyenJyanJSSlERCRGRmZNTW1ERGRNze3GxubBweHMzOzJSWlIyOjHRydPz29MzKzIyKjPTq3Ly2rLy+vISGhPzy5LymhISChPTizOzWvKyurPTexOzSrDQyNHx6fCwuLGxqbOzKpMSabAQGBMS2nLyulMSidAAAACH5BAEAAAAALAAAAAAQABAAAAa7QIBQGBAMCMMkoMAsGA6IBKFZECoWDEbDgXgYIIRIRDJZMigUMKHCrlgul7KCgcloNJu8fsMpFzoZgRoeHx0fHwsgGyEACiIjIxokhAeVByUmG0snkpIbC5YHF4obBREkJCgon5YmKQsqDAUrqiwsrAcmLSkpLrISLC/CrCYOKTAxvgUywhYvGx+6xzM0vjUSNhdvn7zIMdUMNxw4IByKH8fINDk6DABZWTsbYzw9Li4+7UoAHvD+4X6CAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editshred16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbGxubMzOzPz69DQyNIyKjERCRPz29PT29OTi3IyKhPz27PTu5PTy5Pz6/Pzy7PTq3OzexLyqlPTm1PTizOzavLyqjOzWvOzaxLyifOzizOTOpAQCBOzezAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaEQAAgQCwahcihYMkcBAiBpLJApRoOBWgyIKhWEQkFYYHkeqkMxKFBFpq9jgdkEGlPqwrJhCIY2N8FFRYUFxcYGX9dgRKEGhiHiYEOhBcbGBwdiQEOARcBGwEeAZllAgEUnQEfoQEgmp4hrCKtrwEYsrRlTiMBJAG8syN/IyMAxMXHSH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-edittrash16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBKSipFxaXPz+/MTCxISChDQyNCH5BAEAAAAALAAAAAAQABAAAANQCKrRsZA5EYZ7K5BdugkdlQVCsRHdoGLMRwqw8UWvIKvGwTICQdmGgY7W+92GEJKPdNwBlMYgMlNkSp3QgOxKXAKFWE0UHHlObI3yyFH2JwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-fileclose16:file file16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCQiJBwaHAQCBDQyNDw6PFxaXFRSVERGRCwqLAwODGRiZHx6fPz+/GxqbAwKDCQmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVaICCOZGmeqBgEwjCkRGEcSKK4JrEcBrMgAdeLVDg0GguGsYEbBQyGYyN6FDoPDIf0+LCKBIgetQERDgGDBGIpNY8GioAU0m6KXFw883w3+/l9f4AkfimGIn4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-filedocument16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJSWjPz+/Ozq7GxqbJyanPT29HRydMzOzDQyNIyKjERCROTi3Pz69PTy7Pzy7PTu5Ozm3LyqlJyWlJSSjJSOhOzi1LyulPz27PTq3PTm1OzezLyqjIyKhJSKfOzaxPz29OzizLyidIyGdIyCdOTOpLymhOzavOTStMTCtMS+rMS6pMSynMSulLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaQQIAQECgajcNkQMBkDgKEQFK4LFgLhkMBIVUKroWEYlEgMLxbBKLQUBwc52HgAQ4LBo049atWQyIPA3pEdFcQEhMUFYNVagQWFxgZGoxfYRsTHB0eH5UJCJAYICEinUoPIxIcHCQkIiIllQYEGCEhJicoKYwPmiQeKisrKLFKLCwtLi8wHyUlMYwM0tPUDH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-filefind16:file file16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBCQmJDw+PBQSFAQCBMza3NTm5MTW1HyChOT29Ozq7MTq7Kze5Kzm7Oz6/NTy9Iza5GzGzKzS1Nzy9Nz29Kzq9HTGzHTK1Lza3AwKDLzu9JTi7HTW5GTCzITO1Mzq7Hza5FTK1ESyvHzKzKzW3DQyNDyqtDw6PIzW5HzGzAT+/Dw+RKyurNTOzMTGxMS+tJSGdATCxHRydLSqpLymnLSijBweHERCRNze3Pz69PTy9Oze1OTSxOTGrMSqlLy+vPTu5OzSvMymjNTGvNS+tMy2pMyunMSefAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe4gACCAAECA4OIiAIEBQYHBAKJgwIICQoLDA0IkZIECQ4PCxARCwSSAxITFA8VEBYXGBmJAQYLGhUbHB0eH7KIGRIMEBAgISIjJKaIJQQLFxERIialkieUGigpKRoIBCqJKyyLBwvJAioEyoICLS4v6QQwMQQyLuqLli8zNDU2BCf1lN3AkUPHDh49fAQAAEnGD1MCCALZEaSHkIUMBQS8wWMIkSJGhBzBmFEGgRsBUqpMiSgdAD+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-filenew16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbPz6/GxubNTKxDQyNIyKhHRydERCROTi3PT29Pz29Pzy7PTq3My2pPzu5PTi1NS+rPTq5PTezMyynPTm1Pz69OzWvMyqjPTu5PTm3OzOtOzGrMSehNTCtNS+tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ/QAAgQCwWhUhhQMBkDgKEQFIpKFgLhgMiOl1eC4iEYrtIer+MxsFRRgYe3wLkMWC0qXE5/T6sfiMSExR8Z1YRFRMWF4RwYIcYFhkahH6AGBuRk2YCCBwSFZgdHR6UgB8gkR0hpJsSGCAZoiEiI4QKtyQlFBQeHrVmC8HCw21+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-fileopen16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBOSmZPzSnPzChPzGhPyuZEwyHExOTFROTFxaVFRSTMSGTPT29Ozu7Nze3NTS1MzKzMTGxLy6vLS2tLSytDQyNOTm5OTi5Ly+vKyqrKSmpIyOjLR+RNTW1MzOzJyenGxqZBweHKSinJSWlExKTMTCxKyurGxubBQSFAwKDJyanERCRERGRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaRQIBwGCgGhkhkEWA8HpNPojFJFU6ryitTiw0IBgRBkxsYFAiGtDodDZwPCERCEV8sEk0CI9FoOB4BEBESExQVFgEEBw8PFxcYEBIZGhscCEwdCxAPGA8eHxkUGyAhIkwHEREQqxEZExUjJCVWCBAZJhEmGRUnoygpQioZGxsnxsQrHByzQiJxz3EsLSwWpkJ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-fileprint16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFRKNAQCBPz+/MTCxExKLPTq5Pz29Pz6/OzezPT29PTu7PTy7NzClOzm1PTu5LSabJyanPTm3FxaXOzCjOTKrOzi1OzaxOTSvJyenGRmZLyyTKSipDQyNERCROTi5Hx+fMzKzJSSlIyOjISChLS2tAT+BDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaYQIBwKAwIBMTkMDAYEApIpVBgOCAOg4RRGlAoEAuGIdGITgWOq4LxcCQgZkEkIHksHgYJOR6ZQCgVFhYJFxgTBVMZihoCfxUYDWUbUBGKGREcjBoQEB2TAB4CAx+Vl5WMhyACHiEhH6IfIiMktCQgE0cZJQStr6O2t6EARxO6vK6iEx4dZsMCxbsmBB4nzUTEutVSSUdmfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-filesave16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBFRSVMTCxKyurPz+/JSWlFRWVJyenKSipJSSlOzu7ISChISGhIyOjHR2dJyanIyKjHx6fMzOzGRiZAQGBFxeXGRmZHRydGxqbAwODOTm5ExOTERGRExKTHx+fGxubNza3Dw+PDQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaAQIAQECgOj0jBgFAoBpBHpaFAbRqRh0F1a30ClAhuNZHwZhViqgFhJizSjIZXQCAoHOKHYw5xRBiAElQTFAoVQgINFBYXGBkZFxYHGRqIDBQbmRwdHgKeH2YgHpmkIR0HAhFeTqSZIhwCFIdIrBsjAgcPXlBERZ4Gu7xCRZVDfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-folder16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBwWHMzKzOzq7ERCRExGTCwqLARqnAQ+ZHR2dKyqrNTOzHx2fCQiJMTi9NTu9HzC3AxmnAQ+XPTm7Dy67DymzITC3IzG5AxypHRydKymrMzOzOzu7BweHByy9AyGtFyy1IzG3NTu/ARupFRSVByazBR6rAyGvFyuzJTK3MTm9BR+tAxWhHS61MTi7Pz+/IymvCxulBRelAx2rHS63Pz6/PTy9PTu9Nza3ISitBRupFSixNTS1CxqnDQyNMzGzOTi5MTCxMTGxGxubGxqbLy2vLSutGRiZLy6vLSytKyurDQuNFxaXKSipDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCAAECg4eIAAMEBQYHCImDBgkKCwwNBQIBBw4Bhw8QERITFJYEFQUFnoIPFhcYoRkaFBscHR4Ggh8gIRciEiMQJBkltCa6JyUoKSkXKhIrLCQYuQAPLS4TEyUhKb0qLzDVAjEFMjMuNBMoNcw21QY3ODkFOjs82RM1PfDzFRU3fOggcM7Fj2pAgggRokOHDx9DhhAZUqQaISBGhjwMEvEIkiIHEgUAkgSJkiNLmFSMJChAEydPGBSBwvJQgAc0/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-folderhtml16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBERGRBQWFMzKzOzq7CwqLDw6NARqnAQ+XHR2dKyqrOTm5ExKTERCRHRydMTi7NTu9HS+1KSmpBweHDy67DyixHS61ITG3AxypByu7DxinBw+ZERmdIySjITC3ARypExOTDRurIR2RPTSdJyulEyGvBw+bFSyzJTK3LzKvPzivOTixNTChLSybGyCfCRSnBQqRASGtFyuzDw+PCRShPzy5OzerOTShKyaTEx6pCxerGRufBR+rOTezPTShNy6bER+1BxCfBQuRAxelFSixBw2VISq3GySrPTWlHyanIyitFSO3IymtCRujAxWhCRqlCQ6XGyWvNS2bFyGvDxuvCRSpLy+vMS+vGxqbFyO1GSi3EyO1FRaVCQuPLS2tDxyzKyWNFxaNCQyPGxubCxajERSVExKNJyenAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfZgACCAAECg4eIAAMEBQICBomDBwgJCgsEDA0BDg8BhwYQERKUDxOYDAyeghQVFhehGBmVlwwOqxobHB0eH6EfIAkPIYIiIyQlJhsnKBcpvrYiKissLS4vMDEyFjOvNAA1LDY3ODk6Oyc8PTIyFzQ1Jj42P0A6QTtCQ0REIEUORkdIkihZwsSekBhNnDyBciCKiSNSplDRUcWKkRhXCGDJYgiGli1cpuTocsILjytfFmRpACAGRTBhRogZgzHlAjKGWnIoY+bMgRgBDHRBo/LAIZoxuhwKatRPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-folderlocked16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQSFMzKzOTm5CwuLERCRARqnAQ+XHR2dKSmpOzm5GxqbCQiJMTi7NTu9HS+1HRydOTm1Ozq7Dy67DyixHS61ITC3AxypERGRBweHByu7ASGtFyy1DSOtDRmfExOTBSazBR+rCwqLAxWhAxelByGtDSaxAwODHy+1Dw+PPT29IyqvCxujOzu7NTW1Nza3ExGJJyebKyqfMTCpFRSPOTi5DQqHOTezDw2NMTGxKyqhMTGrGxmXDQ2NMTCxMTGpHx6bHx2bBQWFIyOXDQuDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCAAECg4eIAAMEBQICBomDBwgJCgsEDAKFDQGHDg8QEZQSlxMUDJ2CDhUWF6AYGZWXFBqCGxwdFh4XGK8fIAohtiIIIx25EZwBDREHgiQjJSYmGScoKSoRKQ8rggIsDC0uJS4oGygoAyjdAAcsLxQUMDEyMzQ1EzapBy8MDDc36tFwgONFjlQ6dgCEEZBHDx8+ctRIRehHAyAwZASZIGRIEBoUBwUwIGMCiwFEaBQJichIjo9FZLBsacRIAB0A/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-foldernew16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBPz+hPz+BOSmZPzSnPzChFxaXMTCBPyuZPz+xPzGhEwyHExOTPz+/MSGTFROTPT29OTm5KyurDQyNNza3Ozq5Nze3LR+RLy+vJyenMzKzNTS1Ly6vJSWlFRSTMzOzMTGxLS2tKSmpGxubBQSFAwKDKSinJyanIyOjCQiJERCRERGRBweHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaNQIBwSCwaj8ikcokMCIqBaEDoBAQG1meAUDAQpIcBQoy1dg2JdBqhECgQ1IWB0WgcBIOBwIHXBwwPEBEREhIBbG4IExR/DBUVFhIXV2NjDVYYDY8SFU4ZVxpVAQwbGxynGxkdTh6XVh8gGSGzGSITIxokJUImGSMTwLcnKCkprgAqDSt1zCssKxQtQ35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-folderopen16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQWFOzi1Ozq7ERCRCwqLPz+/PT29Ozu7OTm5FRSVHRydIR+fISCfMTCvAQ6XARqnJSKfIx6XPz6/MzKxJTa9Mzq9JzO5PTy7OzizJSOhIyCdOTi5Dy65FTC7HS2zMzm7OTSvNTCnIRyVNza3Dw+PASq5BSGrFyqzMyyjMzOzAR+zBRejBxqnBx+rHRmTPTy9IyqvDRylFxaXNze3DRujAQ2VLSyrDQ2NNTW1NTS1AQ6VJyenGxqbMTGxLy6vGRiZKyurKyqrKSmpDw6PDw6NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfCgACCAAECg4eIAAMEBQYCB4mHAQgJCgsLDAEGDQGIkw4PBQkJBYwQnRESEREIoRMUE6IVChYGERcYGaoRGhsbHBQdHgu2HyAhGSK6qxsjJCUmJwARKCkpKsjKqislLNIRLS4vLykw2MkRMRAGhDIJMzTiLzDXETUQ0gAGCgU2HjM35N3AkYMdAB0EbCjcwcPCDBguevjIR0jHDwgWLACBECRIBB8GJekQMiRIjhxEIlBMFOBADR9FIhiJ5OnAEQB+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mailforward16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRydHxubHxmZGxiXHRmZFxOTFxGPFxKTPwCBLymlMy+pOze3PTq3PTu5Pzy7LSmnOTaxOzm5LyqlNzOtPz69Pz27MzCtLyqrPT27IRubPzuzNTGvNTCxLSelPz25Bw+ZFxKPPzy1Pz65LyupBxKdCxWfPTm1Pz23LyinBxGbGzO5DRafBxWfBxajCymxHTS5BxSdBxKbFTK3EzG1CSGvCyKvCSSxCSavGTO5GRaVPzqzFzK5EzG3BSCtAwiPGxaVPTivPzy3NzKpBxObCRefBxqlPTmzJR2bKyahAwyRPzmvOTOpKyObNS+nPz21AQOFKyOfPzuxAQCBGRORLSadPzyzLymjMy2lOzetDwuJFRCPEw6NEQ6LEQyLEQ6NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAQABAAAAfhgAABAgIDBAQFBgcIBwmOCQIKCwwNDg8OEBESjY8CDBMUFRYVFxgZDJyOGhsPChwVHR4fFSAhjwkaIiMOJBQQDRUVJSa3GicoHw4pEA8SGSorLI8tLtQu19gqLzDECTEyMzQ14zY1Njc3ODkqCTo7MjIxNCs5PD03PjctPwlAQUIihhBpQbCIihtG+CUocASFkAhIkogQ8kFJwkcFlogIkoRJEydPnkBR6GiAxiQLgiiIIkXElFQJqESoMsRKkAhXqkhhApNKFSxZggTJ4nHIEJhaDhzYwoVLFy1avHyB6ScQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-mailget16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAxKdBRSfCyGvFSm1BxKfCSWzCyWzBRCXCRKfBwuRAQGDDw6PHy23Cym1CSSxByCxBxunBQSFKyurMTCxExihNza3NTW1JSSlMzKzFxaXLS2tNze3KSipCQmJGxmbNTS1KSepLy2vISGhJSWlHx+fERGRPz6/IyKjDw+POzq7JyenMzOzKSmpCwuLDQyNIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaeQIBwGBAIAsOkUjAgFJRQQMHgjC4PBIEVgAh4D4aEYrGAMhINxwPyiCgYSsmEUmk82grLRZJkYCgXaAEKFxYZcEISGhsZFxwFeY0WHR5CDB8dGCAXG5shGxQicBIMpSMUGxgTGSQlpQwSJicnEwwdI7gdKAwTsykpKiobr8QMKxeHDBcsGRvOzxsT0i0uL9HSHdkT2ZkoMJXF4a8AfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mail16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBGxaVOTe1Oze3OTWxOTWvNzStNzKpEQ6LOTezPz+/Pzy7Pz69Pz27Pz25Pz21PzuzPzuxEQyLLyinLSmnPz67Pz23LSafKyObDwuJMzCtLSelPzy1My6nLymjNTCxLyqnPzq1LyihKyOfOzavOzetEQ6NPTq3NzOtLymnNTGxJR2bOTOpPTivNTGvLymlKSShKyahEw+NOTe3PTm1Pzu1Pzy3FRCPPz65LSadFxGPOzm3PzqzPTmzPzmvEw6NCH5BAEAAAAALAAAAAAQABAAAAaqQIBwSCwaj8ikMhloOp/QpmAgqAoIhELBUDgcEIGEYrFgNBoLx+IBiRwkgQnFoWAwKhWLhX3BZAILGhsCDXgODhwdGB5vgAofICBlDiEiIx4kJSYBJ2UoEykqHSMrLC0nLWAnFS4UCycvMAcEMR0RLTIBMwaSahw0NTYtFwclNwEdLws4eoc2DxwQOR06ASk7PBAhIRE9Pj0tLSUY1T8I5gjn6Qgy7D8SfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mailreplyall16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRubHxubHxqbHxmZGxeXHRmZGROTFRCPFxKTFxGPPwCBLymlMy6pOTa1PTq3PTu5Pz27Dw+POzi3PTm1OTWvPz25FRSVERCRLympPzuzPTu7NTGvFxaXKSmpPzu1Pz65Hx6fHxqZPzq1Pz23HR2dBw+ZHx+fISChJSWlDQmJHRydCxWfBxGbJyenExKTHRiXPzqzPzy3CQmJDRafGTO5ExOTERKTGxWVCRSfHTS5CymxBxajBxWfPTmvPzy1CyixCSaxCySxDSaxDSWxDSSvDyaxGS21PTmzPz21AwiPBRejCSavByGtCSezEzG3FzK5FzG3GzO5FTK3CQ2bPTixBxqlCRefBxSdBxSfBx2nCQ+dHxmXPzmvLSafAwmRAwyRPzyzDw6POzavNzKpAQOFPzuxBwWTBw2ZGRORLyWdMy2lOzetPTivAQCBKyObOTOpAweNBwWVEQyLEw2LEQ2LDwuJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAf4gAABAgMEBQUGBwgJCguOCwEMDQ4PEBESDA4TjY8DFAwVERYXGBkRm4+QGhsMHB0eGB8bDpyOARogEBceIRgXv8COIiMkGB4lJSYnIcwoKb/DGyoXKywtKS4pHinMLzAxJDIzNDUtNjcv6B0hLzgfMh85OjstPDw99zwd7T4/LTVAgggZQqSIECNHevSAgSSJkiVMmjh5AiWKlClAiFARUeVHFSVWmLS40gNLlh5agGzh0kWDlwZfrIDREKaCAjEqrFA5MMYLmTAxlJTxYoZMozNozqRRs4ZNmy5s3LwhA0dBnDNn5MxBoAABnTp17IitowDrmQV+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mailreply16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRubHxubHxqbHxmZGxeXHRmZGROTEw+NFxKTFxGPPwCBLymnMy6pOTa1PTm1Pzy7LymlOzi3HxqZOTWvPz69Pz25My+tLympFRGRHxuZPzu1LymjNTGvNTCxBw+ZPz23PzuzPz65PTu5NzOtCxWfBxKbPzq1DRafGTO5BxGbPzy9HTS5CymxBxajHRiXPzqzCyixCSaxCySxDSaxDSSvGS21GxWVAwmRBRejCSavByGtCSezEzG3FzK5FzG3CQ2bPzuxAwiPBxqlBxKdCRefBxWfBxSdBxSfBx2nCQ+dPzy1CRqlAwyRDQmJPTmvPTixLSafOTOpAQOFPz21BwWTBw2ZPzmvNS6nPTivAQCBAweNBwWVNzKpPzyzLyihGRORLyWdMy2lOzetKyObEQyLEw6NEw2LDwuJEQ2LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAfqgAABAgMEBQUGBwgJCguOCwEMDQ4PEJYRDhKNjxMPDBQVFhAXGBUSGY8LGhsQHB0VHh8gFQ6bjgEhIiMMJCUmFbS2CwMnG6IoKSorI7WpEycWFiUsLSou1yXXji8wFiopMTIzNDUz4zbZNxsbODk6Ozw9Pj8pPzEzQDdB60JDOkRFjBw5giRJDCWdlmxwIIRJExAWKDRyMgTIiydLoESRImQKlSUSF1SxUoXAlSBRsGSJoCVICIlbqlThcoBClC5eYFD4EiVIFwUyqywAE0ZMlqNjpJDpIkUBl0dlFChAYOZMmTJoyqQR5icQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-mailsend16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRubHxubHxqbHxmZGxeXHRmZGROTFRCPFxKTFxGPPwCBHxqZLyqlMy6pOze3PTq3PTu5Pz27Pzy7LyinOTaxOzi3Ozq3LymlOTOtPz69Pzy5My+tLympPzqzNTGvLSelPzy3BxGbBQ6VPzuzPz65LyupNzOtPz+/GzO5BRejPzq1Pz23LymjHTS5CyixCSavBxqlPz25LymnGTO5CymxCSaxByGtHRiXPzy1CySxCSezGxWVPzuxKyOhMy6nDSaxEzG3PTivNzKpKyOfPzu1FzK5PTmzJR2ZLyihLSWfKyObOzmzPzmvDyaxOzavLSafGRORMy2lOzetDwuJEw6NEw2LEQyLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAfUgAABAgMEBQUGBwgJCguOCwwNDg8QERITFBUWjY8DFxgZGhsaHB0aD5yODB4TGB+kICEaIiOPCwEkJRcmJyYPKCIpKrWqKywTmC0SIi4vMDHEDCsyMg8zEyI0NTY3z7U4Hhs5Mx+0IyI6OyPrIzw9Gys+PxIy2EBBxAs8Qjk5Q0RFWFxAZySfgSMsilRAkiRECHQ08hHgJ0TJkCU/mECU2ISEkowUlpAQ4QTfowNPoAzJIeRJCyjm8kVRIkWIzSkXhwxJtYAKgp9VrFi5QoWKFZ5+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nav1downarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIYhI+py+0PUZi0zmTtypflV0VdRJbm6fgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-nav1leftarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAP///wAAACH5BAEAAAAALAAAAAAQABAAAAIdhI+pyxqdwoNGTmgvy9px/IEWBWRkKZ2oWrKu4hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nav1rightarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIdhI+pyxCtwoNHTmpvy3rxnnwQh1mUI52o6rCu6hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nav1uparrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIYhI+py+0PWwhxzmetzFpxnnxfRJbmufgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-nav2downarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIfhI+pq+EPXYpxUckoO3AjbF3dJwahllXe6AFgC8d+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-nav2leftarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAImhI+pyxf5VohmSlsxmpjTzAHeN5ak6UHpqKRi2GpwvH3Q3eT64RcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nav2rightarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAImhI+pq5HOAjQyVnqfhHue7oAaKH5kiW0AmnLqaHomkj02g+e6XwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nav2uparrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIghI+pyxfR0HsRzNnuXVqn3mVQZWFRyIDjp65Ga5Ly4hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-navback16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRSdBRObCQ2TBxObISevAQCBNzu/BRGZPz6/FzC3Pz+/HTS5ByyzJze7Mzq9ITC3AQWLAyWvBSavFyuxAwaLAwSHBRafBSOrDzW5AyixCS61ETW3CzG1AQeLAweLAxefBSStEze7CSWtCyatBSCnBRWfAwmPBRWdByixAQSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZiQIBwSCwah4HjUTBQFgkFg3MoKBykU0QhoUAIAuAksbpgNByPxQMSGVsVDYlkIqdUiJYLJqORbDgcHRseRR8gISIaEyMkGCVYRBEmeyAnlgaQkSgpmU4RAZ1OKqFOpFNGfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-navdown16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRObCRKZBxCXAwyTKTK3Ozy/NTm9GSivAQWHNzu/FzC3IzO5CySrAQOHAyuzETS3CSWtAyOtETa5Aw2VLze7ByWtBy61BSavAxWdBRCXAwqPAQCBDR+nKTe7FS+1Eze7ByixBRmjPz+/AyexAyixAQKFBRqjAQGDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZeQIBwSCwaj0hAYCkYEJLKguGASEADigWj4bgaHpBINykwSCYRa5HCFFQsF0xGo9lwhpSOwfORYC4gISJ3RAQdIyQYJSAlImNrh4uNJkl5CoKUUBQnjlB4KJ6hokN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-navforward16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAwyTBRObAw2VDR+nCRKZOzy/KTe7Pz+/KTK3Nzu/Lze7FS+1AyexAyuzBSavAyOtBSmzOTy/BRqjNTm9IzO5ETS3ETa5By61AyixByixBRmjAQGDBxCXGSivCySrCSWtBTC3AQOHAQWHAxWdEze7AQKFBRCXAwqPAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZjQIBwSCwahYGjUjBQGgWEpHNYMBCaT4G2UDggos+EwmBYMBpf6VBgYDgeEMgjIpmoAQVKxXLBPDIXGhscRB0eHyAgDSGBGyJFASMiIiMkJYImUwAnmJqbjp4AKCmhAKSlTn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-navhome16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBDw6PBQWFCQiJAQCBFxeXMTCxJyanDwyLDQqLFRSVLSytJSSlISChCQmJERGRFRWVGxubKSmpJyenGRmZLy+vOzq7OTi5Ly6vGRiZPTy9Pz6/OTm5ExOTPT29BwaHNza3NS6tJRqRGQqBNy6pIyKjDwGBPTe1JSWlDQyNOTGrNRiBGwmBIRaLNymdLxWBHxGFNySXCwqLKyqrNR6LKxGBNTS1NTW1Jw+BEweDDQ2NAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaoQIBwCAgIiEjAgAAoGA6I5DBBUBgWjIZDqnwYGgVIoTGQQgyRiGRCgZCR1nTFcsFkHm9hBp2paDYbHAsZHW9eERkYGh4eGx4ag3gfSgMTIBshIiMkGyAlCCZTEpciJyQjGxcoKUQBEhcbIiorLB4XEltDrhcaLS4vtbcJra8bMDHAGrcyrTMXHjA0NSypEsO6EzY3IzU4OdoTzK0BCAkDMgkIOjJlAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-navup16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRObAwSHBRSdISevBRWfAweLNzu/BSOrAQWLPz6/FzC3DzW5BxObHTS5ByyzAyixEze7BSStBRWdAyWvByixAQSHCQ2TAQCBBRGZJze7CS61BSavAxefMzq9ETW3CSWtAwmPPz+/CzG1ITC3FyuxBSCnAQeLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZfQIBwSCwaj8hhQJAkDggFQxMQIBwQhUSyqlgwsFpjg6BwPCARySSstC4eFAqEURlYhoMLBpPRUDYcHXt7RgUeFB8gIU0BIoiKjAcUIwiLSQUkJRsmGIwJJwmEU6OkfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-playeject16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+py+0R3IFQUtruXVqn3kkWyIARR4rqKvoFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-playend16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIjhI+py8Eb3ENRggrxjRnrVIWcIoYd91FaenysMU6wTNeLXwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-playpause16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIfhI+py+1vgoxzyUCxrZd18ClfmIyVyJ1lqkHuC0N+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-playstart16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIjhI+pyxudwlNyguqkqRZh3h0gl43hpoElqlHt9UKw7NG27BcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-playstop16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+py+1vgpySUWpvXXqrHmSaeJEYhKYq6hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textblock16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+py40Bo5SOzRvrwlgrfnkJOIkPaaaJXwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textbold16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIihI+py70BowPQ1HZpwNv212Vg9IGHmIjoWa4ey5DSRNd+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-textbottom16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIVhI+py+0Po5y0hYtzrkB7zH0fN/kFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-textcenter16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+pm+EPIZsnRkqtDnhu1zHfFSpjaY4PavgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-textitalic16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+py+0BgztwUmmjBXX3jE0auHHhM5Yq4xcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textleft16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+pm+EPIZsgRoqr3Vnt102fFSJjUC6nlPoFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-textmiddle16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIXhI+py+0PT5i01pisphjt3UmfFZYm5hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textmove16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+pm+EPIZsg2kfZvblXbwTg10WlA4rjyvgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-textright16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+pm+EPIZstSrqsDhhv1ylfFE5jiYwX6hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textsortdec16:text text16 16:photo:16 16:R0lGODlhEAAQAIIAAAT+BPwCBAQCBAQC/FxaXAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM5CBDM+uKp8KiMsmaAs82dtnGeCHnNp4TjNQ4jq8CbDNOroIe3ROyEx2A4vOgkOBzgFxQ6Xa0owJ8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-textsortinc16:text text16 16:photo:16 16:R0lGODlhEAAQAIIAAAT+BAQC/AQCBPwCBFxaXAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM4CAqxLm61CGBs81FMrQxgpnhKJlaXFJHUGg0w7DrDUmvtPQo8qyuEHoHW6hEVv+DQFvuhWtCFPwEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIlhI8Jwe2/AmpTynqPTXSqrnBM+I0kdmpmGmUp+K4nPMvhYx9+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-texttop16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIWhI9pwe2uYnq0yQtqxbz7D4biSIZ+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-textunder16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIjhI+pu+FxXoOIKpds1oBH7hlYxYxRCaIZ01lhJbHy9tTv7BcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewchoose16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMzCLrcGlAs6UAYgwLdLtEcI4ygQo7VVp2oupGpG4vmaUVTemX523qlFcw0a4RqNlkx5k8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-viewdetailed16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMmCLrc/i1IAVkYg1Z1iRYUKCqitp1oikqBWV3ZOnhkWNagqu+qnwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewicon16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMwCLrcG1AwGOQbw6qANeCEB3pCSZpO6pgowJZqLKuUGE0dnuEhf8IL1kz1shSHDX8CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-viewmag-16:view view16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQmJDw+PAwODAQCBMza3NTm5MTW1HyChOTy9Mzq7Kze5Kzm7OT29Oz6/Nzy9Lzu7JTW3GTCzLza3NTy9Nz29Ize7HTGzHzK1AwKDMTq7Kzq9JTi7HTW5HzGzMzu9KzS1IzW5Iza5FTK1ESyvLTa3HTK1GzGzGzG1DyqtIzK1AT+/AQGBATCxHRydMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ+QIAQEBAMhkikgFAwHAiC5FCASCQUCwYiKiU0HA9IRAIhSAcTSuXBsFwwk0wyYNBANpyOxPMxIzMgCyEiHSMkGCV+SAQQJicoJCllUgBUECEeKhAIBCuUSxMKIFArBIpJBCxmLQQuL6eUAFCusJSzr7Kmpl0CtLGLvbW2Zn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-viewmag16:view view16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQmJDw+PAwODAQCBMza3NTm5MTW1HyChOTy9Mzq7Kze5Kzm7OT29Oz6/Nzy9Lzu7JTW3GTCzLza3NTy9Nz29Ize7HTGzHzK1AwKDMTq7Kzq9JTi7HTW5HzGzMzu9KzS1IzW5Iza5FTK1ESyvLTa3HTK1GzGzGzG1DyqtIzK1AT+/AQGBATCxHRydMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ8QIAQEBAMhkikgFAwHAiC5FCASCQUCwYiKiU0HA9IRAIhSAcTSuXBsFwwk0wyYNBANpyOxPMxIzMgCyEiHSMkGCV+SAQQJicoJCllUgBUECEeKhAIBCuUSxMKIFArBIpJBCxmLQQuL6eUAFCusJSzr7GLArS5Q7O1tmZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-viewmag+16:view view16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQmJDw+PAwODAQCBMza3NTm5MTW1HyChOTy9Mzq7Kze5Kzm7OT29Oz6/Nzy9Lzu7JTW3GTCzLza3NTy9Nz29Ize7HTGzHzK1AwKDMTq7Kzq9JTi7HTW5HzGzMzu9KzS1IzW5Iza5FTK1ESyvLTa3HTK1GzGzGzG1DyqtIzK1AT+/AQGBATCxHRydMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaBQIAQEBAMhkikgFAwHAiC5FCASCQUCwYiKiU0HA9IRAIhSAcTSuXBsFwwk0wyYNBANpyOxPMxIzMgCyEiHSMkGCV+SAQQJicoJCllUgBUECEeKhAIBCuUSxMKIFArBIpJBCxmLQQuL6cAsLECrqeys7WxpqZdtK9Ct8C0fsHAZn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-viewmulticolumn16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMwCLrc/ixI0WSgKoyBl+beQFACpo1AqXbKCr1wLAMWS08hGG3dSZqin4sxnBmPD38CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-viewtext16:view view16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIchI+py40BTQSwuovp3DXkv1ia1IHmIXLiyWJ+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-viewtree16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBDQyNPz+/PzerAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAMuCLHcri4yGISlj4kxcANgNRBQCIbL6U1Su7bB62rXvGydG25kqpwfIGxILBr9CQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actattach22:act act22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBMTCxPz+/DQyNKSipAQCBISChFxaXDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARrEMgJgqA4zzus/gLhFd5HCcZAXqsphYPUdhcYFNRcZnvdtpnDqPTbUWgAJKBYwzBlw+bRo3xmkNWoBgm0OrVLn3GC9RgCk8DhUw7c0rHPr4CDu5SYQNyEt7uSY3p/UAKFhYKDSQOLiwgFdhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-actbookmark22:act act22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBCQmJCwqLMTGxAQCBBwaHMTCxLSytERGRFRWVLy+vKyqrKSmpHR2dJSSlJyanISGhGxubIyOjKyurGxqbFxeXGRmZHx+fKSipLy6vGRiZLS2tFRSVHRydJSWlHx6fCH5BAEAAAAALAAAAAAWABYAAAWWICCOZGmewamaQrq+wUC8azHINGocOI38iIRAceDNaISFYklkGHOEhoNBfUAOhuOLEJE8HoPiRKFdESiQBqViuTDIUAsEcyAeGJmyiqC5RCwJGg0YcEh9D0V3Dxt6JwQVDRYVHBUdi40mjw0PTgwQHgeYJQQJfxUXFxAOoTkFpQ0fsRSimQkWEQ0VtI62HLt7vjl7JQYhACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actbookmarknew22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBCwqLCQiJCQmJMTGxAQCBLy+vLSytERGRFRWVKyurKyqrLS2tKSmpHR2dJSWlKSipISGhGxubIyOjGxqbIyKjFxaXGRmZHx+fPz+NGRiZPz+ZPz+HMTCBKSiHPz+jFxeXPz+XPz+tPz+zPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAamQIBwSCwaj4Gj0hgQLJ+AAaEAVQoI06pRYDhkoYgwIhEgKBTfZ2FhaBsYDS8VWnA8Go0FJIKeqyUTDw8EDHBpSwUUFQ4UFhcYDQYFfkoFFxEQDG8KEAUZlEeWGBIakw4FG1STiBoYBRwdBR4fHgUdHKBEBSCnIR8iIyIfIblFu6ceIyQjtcXGCbLKzAUKzrq+wMLEVa+xs7W31kOTk6nkWuOf6Ea5QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actexit22:act act22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBAQCBHR2dDQyNCH5BAEAAAAALAAAAAAWABYAAAJOhI+py90RnIMyRUOxhDfzJkACdoXBuEDDkQFDi5go0MrKx16kns80b7qdELCgBYaEGWwL5nG1ePFiKp9A6kuYRNuho8vxVrrZivmMRtMLACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-acthelp22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBCQuNBwiJAwiLAwaJAwSHAwSFIy+3ERynCw2PCQuPAwmPCxOZCxWdJzG3FSazBwmNAQKDAQGBDRmhBQyTDxujDR2rIy21AwWJDyGxCxmjAwmNDRihAQOFDxmhCxunBQWFAwaLCRahDR6rESGvDQ2PCRWdDRunDSGvCRSdAwWHCwuLDSOzHSmxDyKxBxCZBwqNHSu1DyOzAQSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAahQIBwCAgIBAPCoGAgOoeBAyKhWCwYDUf0CX1AIhLiJEGpBLiAAaRxdgYsl7Ybk8igBZoN5xmAdDxoanp8HyANISF8EBsiXBMjJBolBEQmGHFoRScbKHIKDykqK5lFAZRCnyknTaROLA8tq61OChgtKqyzQgEYEJi6UC4vI3LAASkbMBPARAEBdszR0sACEaPSMTIQM8W6KzNl3bo0NOJDdEEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-actlock22:act act22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBHRudFxaXExGTERCRAwGDGxubPz+/Pz2/Ozm7Nza3NTS1KympFRSVHR2dNTO1JSSlKyqrKSipDQyNMTGxDw+PLSutKymrMTCxAQCBHRqLBQODJyanDQuFFxSJFRSJFRGJERCHExCHISChHxyLEQ6HGRaJExKHLSmbLy2fOzitPz23KSiZHxuNHxyNJSOTNTOnMTCjLSudKSaXJSKRJyOTOTetNzWpHxuPOTi5MzKzLS2tFxWXOzq7Ly6vOTe5Ix+RLSqdNzSpLyydKyqbKyiZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4IBAgMEBQKEjI0GBwgJCgsMDY2XjwkOAgQBDxCLl4QNCaGCBBGWooINCAqqrBKgqwATFKaDFRYVtBMXsIMNGBm0GRADjQIJxKIaGxwdHh8gISIhGyMZzIwkGholJiYfJiAfJyEZISDbg90oKCkqKwcHKyooLC0f7IIuLzD2YMSQgW8GDRri+AFoUMOGvRsxUhSsQQPHvmQSchyQtEAHhh0WJHDQcJERjwsKDvRI0BGDjwgicXhQyCOjSgUKPO6AObIkIQESfmxk6REDT4s0bfaYpDNkT4VAha5s+TLmzEYtatwIOHAiDZIKNQAJYk9IjCFEisyoocFEB4UACtBpm0t3LiF4gQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-actredo22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBCReDJzGjMzivOTu3Pz+/JTWbHy+VHTCTMTivPT69BxGDESuJDyiHESiHEymJIzKZAQCBFS2LFzKNGzWPDRqHCxqDFSqLHy2XESCHAwaBAQOBBQqBDyWJHyqZDyKFGSiVESeJBQ6BAwSBGTGPFyWPFSSLEyOLESGJBQiDAwiBBQmDCRGFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaoQIBwSCwaj8hkMcBkKpcBwYAwEDif0YLhwEUkFItFMkAwMBoOR+PxgHwjRDggamhIJpQ8ZbKGKOQLcgEFdhUWEYgRF3sNfhELBHALAhgZFhobRBwREhQdEAIEHpIKHwsaSJwUDQgQIJINARxKESESDQ0dgCIjSpAkDAwPco+ZSJAlJicnKHIAIrNHidOIQxunT0kpCyrZSCss0d5Fj6jjRonn6uvs2QZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actreload22:act act22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBCRSFCRSHBw+DBxCFCQ6FBwyDBQWBBxGFCxyLGTChMzqzLzmvHzKjDyOTER+RERyNDSqXNzy3LzivFS+fCyCPBQmBCQiBBxKFBQqDOTy3LTitES2dDR+PCxuJOT25KTarCx+PESSTCxKHDSeVCyKRNT21ESWVDSGPBQyDAQCBBQSFDRuLDSyZDySTGzChCRiJKSmpExKTDS2ZGzGhLy+vGxqbISChDSKRMzKzGxubDQ2NIyOjCQiJCwqLBQWFCwuLKSipERCRERGRHR2dAwKDDw6PFRWVIyKjCQmJFRSVBwaHKyurAQGBExOTBweHFxeXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf9gACCg4IBAgMEBQYHhI2ECAkKCwwNDg8QBAOOhAQREhMUFQgWBxcHGBmbggkaGxwPB4yDB6SbBJIKHQaqtY0eHyAhsqrDgx4aCiKpqoQHAyMjJBMKJaSxzAAHIRsmJgonKA0LHSmDKiuOBywRLSQuLyEwwyoxMuiN6iUzNBXy5jU2bsgoJugABBz95uXQsUMGD3vpPPgTpKIGwx4+HMr4kW4YkCA2hAzxAQSIECI+imBTwVIFESNHerRUgc0cEiFHkjiiyYzeDiVLdvLcySSkkKGEWiZVweSGkIHMmvQosoQlkaZOjvhosvKJjIAxoOAsgpRZkQNLnvSoqspAIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actrun22:act act22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBAwKDAwKBCQiHNze3AQCBBwWFDw6NPTy9PTy/Dw2NKyytOTi3LS2tMTKzMzOxLy+tLy+vBQODNze5NTS1JyalIyCbIx6VIRyVISGfJyelOTq7EQ+NMTGxKyurGxeRLyKPOSmROSuVOy2XOSiTLzCzNTOzDw+NCwqLHxuVOy6bPzGfOSuXNTW1LSyrMSWRNymTOSmTKSCTPTGjPzSnPzWnMyaVBQSDMTCxPz+/KyahNSeRHxeLJRyTPzmtPzarOy6fJyajNza1Ly6vLyulFRCJPzirPTOlMS2pNTSzMTCvJyenBQWFNzKtPz6vPzyvPzqtOzGlOTe1AwGBFxWTLy6tPTm1PzSpPzutPz2xPTSnOTSxOy2dPzapPzerOzm5IR+dPzu5Pzu1PzqxPzy5Pz+9GRiXGxuZKympHR2bOTm5Pz6/MzSzBwaFJSSjCQmHPz2/AwODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeEAQKIjIIDBAQDjYMFBoMHCAkKgwYFhwULDAUKCg0ODxCkBQgRnoUSExMUDxUWFxgZGpAbFIuGHB0eHyAhIiMkIB8lJieIKCUpJCTGIyorLCktKIUDpC4YLzAxIjIyMzQ1NhgdpJI3ODktJTowOyM8Ejc9Pj9AQUIEclAocCMIBQhDiOwgoaKIoCI+jBxBkkSJkCWemIyq0GSHCBVHihRx8gRKFCmpKhGaQqWKFYZXsGR5kkXLFgRUXBUqkCGCFS5AjnTx0sXKlyA6CRVgAAHMAilhxIwhU6ZFkBY5kgKYUoXBAzMKzixZ4AJNGgVm1KxhM0WpmQpUMtooaOPGxAM3Nw60oYLGjNYCbzYJOgAnRzNBJ95oPYQCgpJtkwzFoULlRuRPiy9fNhAIACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actstop22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAASC/CQKDBwKDCwODNyKjPzq7My+vIxiXAQCBOSOjPz6/OSelNySjNyGhMR+fLRaTGQ2LPz+/Nx+dNR2bNRybMxuZMxeXMxiZLQSFJQaHFwqJNyKhOSCfNyCfNR6dMxmXMxWVMRORLQODOR+fOSSjNR2dMQ2LJQWFMRWTLwWDNSCfMxeVLwaFKQODNR+fNx+fMxiXKQSDOSWlMRSTMxaVMQ6NMxORMQyJOTS1MxqXLwWFLRORMxKPMQaHMxKTLQWFCH5BAEAAAAALAAAAAAWABYAAAb2QIBwSCwajwGBcikIHIsDQmFKNRwQT2EgoVgsGOCG4wHBIgmRhWRCqVQsF0xGYyYGNgoGh9PpeCQfICEic3UAAWgLIxwRJBsbHSUREyYYJ3RDAQULexGejhueESgpl3WaCxsqJKKsChEUKywtmFoFDC4vCayikzCyMbWHt38NCTKiHhUfMyzBdQIFKsodob0VNDWzwppuKxMRrx6iNjcitNA4bh+iEzkwojc66JkOOxcf7G35PBE9KS1MEUGgIQOIFfk++KjRw9wJgUUIZvhRoyLDFCliQDQisUWLGCJOeNx4hKCGkyhPGnqCoKVLl1liypyZxUAQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actundo22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBCReDJzGjMzivOTu3PT69MTivHy+VJTWbIzKZEymJESmFESiHDyiHESqLAQCBFzKNGzWPFS2LNTmzCxqDDRqHPz+/KTGnBQqBAQOBAwaBESCHHy2XBxGDOzy7HTCTEyyJDSqFHzWTAwSBBQ6BIy+dESKJFySPFSSNAwiBCRGFBQmDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAalQIBwSCwaj8ikMsBkKotMwYAwEDiXgYLhwD0gCFZiQKxNKBYMRqPh+D6G16y5AYnYIxBJAyF4AwITTAUJdBESD4gPFBV6Fn6ABBcJDIYPGEQZGhQbHAIdfx4JHw2VSBodGwWfAR4LDSALfkgYAQurBiAhICKfSSMkvQElGyYnGyi9Rxkdj4nOskUYyU9FpxnURikdGtjRKivdRKfQ2Inh5+jpRwZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actunlock22:act act22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBGxqbFxaXExOTEQ+RAQCBPz+/PTy9Ozq7Nza3NTS1KSipFRSVOTi5Hx2fJSSlKyqrJyenJyWnDw6PMzKzKyurDQyNFxWXMTCxJyanHRuLHxuLGReJFxSLFROJFxWJExCHERCHBQODISChHxyLHRqNIRyNHRmLLSqbKyiZLy6fOTarPz67Pzy3OzitKymZFxSJJySTNTSnPTy3NzSpMTChLSydKyqbKSaXJySVIyGRGReLPz23NTOnMzCjHxuPLy2vKSmpOTe5LS2tLSutHxuNHRuPMS+xFxWLIR+RDw2HFRKJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SDAQIDBAUChY2EAQYHCAkKCwyOjZANDgIEAQoPjJiDAg2iggQQp5gMBwmrDBESl6MTFKuoFQSjABYRF40CGAW8BRm7hQwNxBobHB0eHx4gISIjBdiEAhYFJBslHOHSHh4hBSHlxIUmJygpKissBiwtLi8pGjDqhBoxMjMuaNSwcSMFjhw6dnjYRyrGCh4ueviw4Q5HDB0/PjAUJCBCAwMIGiiggAEIBFk/FgYLIgRkggQkhxAJkqGExkYMFnxsIGRkSQgLHhRRWUjAggQgG8AsSWRBBiP6VrYMOfKIyaBDNwLo+HHSUplOSyDRqiEHjRkretRQkcLgxayNF0wksQGQxsSKMTIq0QpgCba/gAE7IhMIACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-appbook22:app app22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBDyGhCyCfFSWlESOjDyKjDSGhCx+fGSinGSenFyanEySjHSqpHSqrGympEySlBx2dISytHyyrCR6dKTGxHyurHSurHyytGSipCR6fARmZFSalEyWlBRubAxubBRydDyKhDSChLSytPz+/MzKzIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbFQIBwSCwaj8ikMhBQIpmCQdM5ZBIKhgNiugwkFAsCI7pNMhuOxkNBgBgEiAi3GkBLJpJHYgEpaClyREwVFhcSEhgOGQoMfgMaERtcARQBFRMYExZ6HB0FUYAekkIBHxqWFmlrC1haESAfG6MBGx+VFRgKYH0hInGRklO0ppYXCwwMWQiQHkwjgrWnFRdYZHIBJCTP0LaWGAcDW9jZ2nMAw9IWTOQkJSZMRsOV49nu8E+19PbmR7TY+1TovONH5V7Ag0QMBAEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-appbookopen22:app app22 22:photo:22 22:R0lGODlhFgAWAIYAAAQCBAQ2NPwCBHSurIS2tBx2dBweHPz+/Ozm1GxiTGyqpPz6/Pz69GSqpOzaxPzy5HxuVLSmlOTazPz27PT29NzClPTexHxuXLSmjAxqbFSinPTy9KyehNy+lPTy5Pz29HxyXNzWxKSahOzexPzy7IR2ZOTWtESenPTy7KSWfIyCbKyijAQGBDyalPTu3KSSdDSOjJyOdCSGhPzu3OzizJSGdPTq1PTq3JySdMy6lAyKhOzWtOzi1OTOrJyKbMS2nJySfMS+rAwCBNzOrNTCpNzKpJSGZKyafLSifLyylIx+ZHx6ZDSChAQuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAAAWABYAAAf/gAABAoSFhoeHAAMAiI2IAAQFjI6EAAaJkQeTjwAICYkKBQcLm5WdBwyfhgChB66bp64HCQC1lQ2irqQCAA4PowsLEBESE4wAuLIHFAAVFr+uDBcYxRm1GrmuGxwdFh4Mrh8gGCET1gDYyhsiFSMkDAsMDCUYJhvnJ9kHKCnODwwfPlBQsULCPRYAWogK9sHFiwoOPEyQh0JFPXO1YBSYwBEFghjdHkwQOYGgwQwIZRR44GHGDBogabhAsYEEihrUMAIoUMCEDRs3HODIYQHFA6MPcJA7KICFjgw7eIzo4cOfiwc/gKwIUm2SkKdDdlDt4AABDaU/iIRwwbTSUyJFOow4S3Hkx9oNDDZgXPU0h1wcSIgEGUw4ibVET5WoWMKksePHpdxmyKADAEIWly9HJtQkQJMmlAgZCAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-apppencil22:app app22 22:photo:22 22:R0lGODlhFgAWAIMAAASC/IQCBPwCBPyChMQCBPzCxAQCBPz+/MzKzISChKyqrDQyNEQCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARYEMhJ6wxiEMtpIAWxddwXiqRlikSQeiAbuC+wirNR322gv7zcLobzDU+9XypoBBKTR1lz+RTWDgip8nUwZK1XLyIx5XoVicX2RUAo1DVKi7GOBxjxfNwQAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-apptool22:app app22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBISChFxaXNze3NTS1Ly6vKSipNTO1Ly2vNza3Pz+/MzOzOTe5DQyNOzu7MTCxGRmZMTGxPTy9Ozm7Hx6fPTu9MzGzGxmbAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAW1ICCOZGmeaEoGbBsI6joMRGEcbQwESDIrtVtAF1gwDLNaAmfKiVgLBJKgwB1KxQZrBHU0FAXmavFoQLYiB6TxFXMj5AZBwnJI2I3wcNWALyYEcgoKXxRhOHs7XxEVCwsWFgoUDRYUFwwQB25ZCxiNjo6GkwUXN2NsCxEYqhUHoQ0MEglYRQQXErcHrI55FycuB2YSmoyOBTEtB2sXuhU6XAENC2a6z9AKCwq+1tAN3E2J3ySkIQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-connecting22:connect connect22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBPz+BMTCBISCBAQCBPz+/MTCxOTi5AQGBNze3Ly6vISChNza3FxaXKSipAAAACH5BAEAAAAALAAAAAAWABYAAAR4EMhJqwzY6omD+MNGdR8YilNZnug0qGzrqrL1lnV1fyJBVB6VQEMoGH4ADGwQkxQPBwMiKGA2J8VEAnq0tgiKg5aL/C7C2gTjKCM0zowDQ8tuNQznNL7cKzjOUQsNfER+gguIg19+Pm6ChBZFDmWNi5M5FIyYFHQRACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-connectno22:connect connect22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBPz+BMTCBERCBAQCBPz+/MTCxOTi5Nze3OTm5Ly6vNza3ISChFxaXKSipAAAACH5BAEAAAAALAAAAAAWABYAAARiEMhJq7046827/+AVCKE0Dh9BAGdaGISAToFGFMcBU+11I4hDYseSZQiKwwKoI/QwBIYiuFDCZseGdIlYEjUNg1SpY6w2N4cUIW6cjwW1lsFwo+MqgtZuw0/ydw5vH34lBhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-connectyes22:connect connect22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBKyirPz+/KymrOTi5KSipMzCzNza3OTe5Ozi7MzGzPTq9OTm5ISChMS+xFxaXNze3GReZIyCjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAWLICCOZGmeaBkAQpoGg7C6JizTQT7CxPwOwFWgYPChYIXkIHC4uQKGAiKRKCyNpxxUUVViVYNFLkqtLo+DAkMMLXQPXwAy2WCTF4544FGtKuwPDhB6DnxuUmyCcXIQhV1uYoMuEAcOBxEKCHg6TzGFCJUSizuejROKOAM9OY2SnUU7nD89NCcDsLUnIQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-devscreen22:dev dev22 22:photo:22 22:R0lGODlhFgAWAIcAAPwCBAQCBPTy9PTu9Ozq7OTi5Nze3OTe5Nza3NzW3NTS1MzOzMzKzMzGzMTCxMTGxOzm7AwGDBQOFBQSFCQeHCwmLCwuLDQyNDw6PERCRFROVEQ+RDQ2NLy+vKSipISChGxqbExKTOzu7OTm5Pz+/GRiZMS+xLy6vBQWFLy2vCwiHFQ+NMSmfNSyhIxmTDwuLJx+bLS2tCwmHMyyhMyqfPTqpPzyvLSWbLSWfPzitIx+ZDw2PAwKDCQiJGxWRPTmrPTerMyuhPzqtPz63PTWnPz6zNy+nIRiVDQuLKyWbOTanPz21NS2jNS6lDQqJHRaTPzmrPTSnPzyxOTClPz2xNSuhPTqxPzuvOzSpAQGDOTKnMy2jOzSrPTu1NzKnOzOnBwWHJRuXLSWdPTatPzqvNzClCwmJOzSnOTOnPTuxOzKlOzerOzarOzitJR6ZNTO1IxmXPTWrNSyjPzOjPTSpLSehHRqZOzirOTCjPS+fPzGhOy6bOzKhGROPMy2lPz+1PzmtKRyRHRiNNTCdPz+zNzCjEQ2NKySdDQmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAj/AAEIHEiwoMGBARIqXMhQIUIBAwYQIFCggIEDCBIoULBgAYMGDgIIDEBAwMSKBRBk3NjxAciQIwdACBBBwgQKFSxcwJBBwwYMHBx0EAmA5EwPH0CEsCChoYgOQ0cSGCHhA4kSS5syJGDiBNEAFVGUKKEBAwWFFM6SNJHi64gDFEKE4FBBggoKK1i0cPECxokYXw0gsECYggQZM2jAqGHjBo4cOtqOxLhDAg8ePXz8ABJEyBAWRIoYOfJipEoMCZEkuaFkSAslS5jUGJKkSRAnRREo0JDwCZQoTKQAmUKlihQrVa5gKZ1lI+oAK7QM2cJlSZMuU4Z4+TJEx0iNOwKAggkjZkyOFmS8kClzpcUQLRRGbjRD4MgZNEzSqKG+ZgobI2248dUbDDDwABzcxSEHEFpgEcUcdMRRhx1fFejAAx0cgcYdSxiBRx566LEHH0d8QFRRNC3Uhx985CHEH0MAEkhCBxWkgiCDFEFIEYUYUmONMhyCRxVH/PgjBYioYJAdAQEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-editcopy22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFPz+/DQyNISChDw6PMzKzMTGxERGRIyKjFxaXMTCvKSmpHR2dPz6/Pz29PTq3MS2rPz69MTCxFxWVHx6dJyWjNzSzPz27Pzy7Pzu5PTm3NTKvIR+fJyGfHxuZHxqXNTCtPTq5PTi1PTezNS+rExOTFRORMyylPTaxOzWxOzSvNze3NTOxMy2nMyulMyqjAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbYQIBwSCwahYGkUnk0BgTQ6IAQaBKfUWhBYKhaAU+CgXAQIAyChLeJzSIQhcH6GFaM0QtGY5kstqEODw8QEQELAhJTc08KBBMEFBUWDRcBE1pca20SGBkaEBscAY5maFRIAgoLHRQRHh8gIQFlZnByqA8ZGSIQIyQjJQEmYgJ5p2ACrK4gJx4gKIZZAgdeAQ4ZI9kjKSor0AwEjeAs1S0cHAslLi4vMDDRWeRIfEsxMeET4ATyVoYLC5fizXEiAR84BeMG+pEm8EsAFhAjSlR4hR6fLxiF0AkCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-editcut22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBAwCBPz+/OTi5JyanOzq7DQyNGxqbAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARbEMhJq704gxBE0Bf3cZo4kRJqBQNRfBucyudgvJS6VaxLzyMa6/bLiWA9HOg4VIIkL5vzuRkcpkvRIIAorphJLzBW84WEuRZWp6uaT7J2Sh1Hit3OY/ZO7WvsEQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editdelete22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIYAAASC/FRSVExKTERCRDw6PDQyNCwuLBweHBwaHAwODAwKDAQCBExOTNze3NTW1MTGxLS2tJyanPz+/Ozu7BQSFCwqLDw+POTi5PTu7MzKxIR+fCQmJPz6/Oze1NTGvPz69Pzy7Pz29LyyrPy+vPyupPTm1BQWFIQCBPwCBMS6rPzSzNTOxPTi1NS+rPTezNzOxPTizOzWxMy2pOzaxMy2nPTaxOzOtMyynOzSvMyqjPx+fOzGpMSihPTq3OzKrOTCpNzKxNTCtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf8gACCAQIDBAUGBwgJCgsLgpCRAAwNlZYODxALEY+SkAMNEqKjEw0UD5yegqCjrRMVEqidkgWhraMWF7GptLa3EgEWFRSOnhW+vxgZEBqzkBvItxwdHryRCNGjHyAhHSLOgtgSI60c2yQjJd+eJqEnKK0hJCgnJSngAO0SF+8qEvL0VrBogW+BLX4oVKgIyMIFQU8KfDV4R+8FDBcxZBREthAFiRIsOsygsVEUh4Un3pGoUcPGjZInK65QicPlxg8oX5RwqNJGjo0hdJwQ6EIkjRM6dvDYCKIHSBc1Ztjw4eOH0oIrsgIJEqSFDBo0cuTgsdSTo7No0xYTZCcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-edit22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBISGhISChHx+fHx6fHR2dGxqbGxubGRmZGRiZFxeXFxaXFRSVIxSLPyuXMzKzMzKxMTCtExOTPzqrPz+/NTS1MS+tOSaVPyWNPz6/IxeNPzavPyKBNTW1PyCBPyGBJxmNPzOpLx6PNRqBMSCRNySTPyCDPSGBMxiBKROBHRydPSylOyydMxmBJxKBAwODPS2lPTq3OyabJxGBPTy5PTGrOyOXPR+DPz69PzmzPzevNxuPORqLMReFPzy7MyCXKxiNIRKHBQWFNTOxPzixJRaPFxONHRqVPz27PTy7PzStCwqJDQyLJSGdIx6ZPz29PTu5HRmTLSKbMSGZHROPFxKPJSKfJyShKyehMyuhDQmHEQuJJyOfLSijMSynMS6pLSefDQyNHx2bKSahLyqhLymhOzi1FRGNIR+bNzKtOTOtOTKrOTKpLyedAQCBFRWVPTq5NzOvLyunLSmlNTCrOTOrNzGrLyidMS+rLyynKyijLymjLyqjAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gAAAAQECAwQFBQYHBggJCgsLDAwADQ6CAQ8QD5ydEJ+gERKWE4ICDxSpqhWqqhYNFxMYphCtqaytGRoXGxgcggSoth25u70eH8APFR0VzMzNziAXIRjIvwAFwq3EqSLUGB/iI4LathS4JCXVJh8nKCmCKrXDFCss1eIfLS4v8ssdmgWsAGNDDBnt3s3wJ+jAtlUhaNSwccNEi4WCBBl4SAHHihw6ZOzg0QNjRgAG6KXK4CNEjBU/gDQI8kLISQAIADobAoMIzCINjLw4YvNkAno4kCRRUuNHESNLmDRxUjSjAlRPfECJImUKlSpMrFzBIqWqoKtJaWSJomULAy5XXrp4+QKGYcYFoCBEWRImi5gmY7CQyVLGriAGD2jEMHMmCxc0Xb6kUbOGTRs3N988gLM4jpw5Y+iwqcOGjZ07mE8yiGABz5c8c/Ts4cOnDJkybS7fdMO7t+/fvDMaCAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-editpaste22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBQWFDw6FHRuFGRaBFxSBAQCBAQKBCQiBIx6HPz6/NTOfKyiXDQuFOTm5Pz+/Ozu7PTq5Pz63PTyxNTOjKSeRExGLMTGxMzKzNTS1NTW1Dw2NKSmpKyqrKSipJyanNzWlLy6ZLSuVIx6FISChIyKhJSSlCQiJLS2tDw6NDQyNCQiFCQmHBQSDGRiZHRydGxubHx6dGxqbFxeXGRmZFxaXCwuLOzq7KyurHx+fDwmFEQuFCweFCQWDBQODBwaHBweHKSinJSWlOTi5JyepHR2dDw6PBQSFNze3ERGRIyKjIyOjISGhPz29Pzy7MS2rMzOzFRWVHx2dHxybDQiFPz27Pzu5PTq3PTm1NTCtJyGdHxuZHxqXPzq3PTaxNS6pFxWVFRKRNS2nPTi1PTStNSulNzOxNSynMymhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCgwABAgMEBYSLggaOjgcICQoLDA2Pj4MGDg8QEZ4FDxITFBUWFxcYGRobjQ8cHR4fCQ8gCyEiFSMWJCUkJieNEB4dKB4pKissK8wrLS4vMDHBAAYQHx8dFx0fJDIzNDU0M+IyHzaNNyg43Ng5Ojs7Ojw9Pj9AMkCNDiZB/h9CSOx4QLCgihItqBkYgqIDESElitAYWJCgkQcXjjRCgi1Ihw4BB5LAQOLCgyQYHihpUU3DBw5ElpAgAYNixSRJjKjQaECDCRPZPDB5IbIGSQwKLnh4wbInLA4kmJB4oaPiAwVNnER40hRK1BIAaVatUZJEFCkmpmjgCeWDCalFe4q4oFKwSRUrEa5gycLzwq8lUnPQ4PEgSpYcUZ5o2cIlS1O/JHLEDdfjQZMIVrpgweLFy5e+M6WSmBGlxYMYYBRzCaOFi5imHWBIfOEiShLTVjaP6eyFTBmN1TA5OvLDjJksWb58OVMGDRqWjAYdmU79SIvpjqJr104nEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editshred22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBFRSVExKTERCRDw6PDQyNCwuLBweHBwaHAwODAwKDAQCBExOTNze3NTW1MTGxLS2tJyanOze1Pz+/Ozu7BQSFCwqLDw+POTi5MzKxPTu7LyyrIR+fCQmJPz6/Pz69Pzy7Pz29OzaxPTu5PTq3PTm3My6pPzu5PTq5NS+rPTm1PTi1PTezOzWxPz27MyynOzSvMyulOzOtOzKrMymhOzGpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbpQIAwIBgMCAXDAZFQLBbCqJTRqFobjgdkEYFKowPJZEyeUBqVR/crHDTKZYplovZKCW84+YKZZNZSBXl6EwEEBhVPXxZihGMaGRscdkIdg4QeEnVfCH2OHyAhIhuUAAiXZSEhIyQlJqWnjiEnKCWupRWoYyEgJK0SKaUKjam0JCorLMFfC6iqx8giLa/MGAsT1wsuCyULKwssC9RSzdkfCyALKuALLQsvpeXYIQso3gsiCzALMfENC+dGcMNHUAY/f+jq3ctncMYCGggFrsvHcEGNh/EyPFmg8cmrJxAVkVO0EUDJklHoBAEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-edittrash22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBERGRExOTDQyNISChBQSFCQiJCwuLPT29Nze3GxqbDw6PGxubHR2dJyanLSytJSWlJSSlOzq7Pz6/Nza3Ly6vFRWVBQWFIyKjMTCxHx6fIyOjLS2tOTi5PTy9OTm5Hx+fNTW1KyurKSmpJyenExKTMzKzKSipFxeXCwqLMzOzKyqrMTGxLy+vHRydBwaHNTS1DQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb8QIBwSCwaj8KAMoA8LgUDQsFwQByay4RiwWg4GA9IRGk0SCYJSsUCsVwwGQ1EsmESD5xOp+L5gDwhBRIZDhcDdkMGDgEiIxAkJQ8Ok5MmAohDAQ1xJxUlKCUlEg0pKpiZJRoLCxmtCw1eURhOcR4rbQ8cGRwLAwgGtBYTDywtGRKjvQTARgEZLhMcKC0OrQMvAirMRc7CHCTU1g2+20TO0NIn1RwDCya/wdHT1Rnt5LToKOq79trx0tR02YPX7Jm8fRxMOIhSLhOJE/LCJSTlr5kFEBQsWDiR4UGGBgsuHDg1BEYAfTE6oEBR4AIBAiS5yWBAAAGBAyaPGAgCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-fileclose22:file file22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBERGRERCRDw6PCwqLExOTFRWVHRydGxqbGRiZCQiJISChIyKjHx6fDQyNBwaHJSWlKSipBQWFJyanPz+/JSSlCQmJAwKDCwuLBweHBQSFGxubExKTISGhDQ2NFxeXFRSVDw+PAwODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbZQIBwSCwaj8jkMSAYDAgEJbFgOBwQCUOAoJAaFgvGonHIBhyP5BcSgUAYDWxggD4WFmx3e3HQngkSRgYMEBMUFG4MCId0BGlEAQeEhocVDYcUdBYKF0QCB3gRlJgUAQEYBBkaRAMbDZMMpAYcT46rQwMJrgsdC6QcfwoPnUMOBgkIV6SHHg6bw0QEAQYfBpggBZjPGsRD0gEchxwCIR6HChnQRQ8DIU4DTR4Em+ncRw8O+fmoXPXdRg+gQLFgIYM/KRIkoDP4QMKFf0o0aBAh4qGUixgzCrETBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-filefind22:file file22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBQSFJyanLS6vLzCxISChNTe3OTu9Oz6/Nzy9Nzy/NTy/OT2/Nzi5Mzu9Lzq9KTe7LTq9PT+/Pz+/Nz2/Mzu/Kzm9Jza5HzK1LTi9PTu9IzW5ITO3FxaXNT2/KTi7Iza7GzC1LzW3FRSVMzO1MTq7HTS3Fy6zFS2vKzm7Lze5MTGzHzS5FTG1Ey2xEyyvJze7JzW3ITa5FTK3EymrGS+zFxWXKymrMzi7ESirEyqvLSyrKze7MzOzMTCxKSepAz+/NzW3MzKzBwWHLzS3ERCRAzi3KyurNze3MzGzLy2vLSutCQiJAyytHRydOTe5MTGxLy6tLyqpKyelJSCdOze3NS+tLyupLSmnKSOhCwuLPzy9Pzu7Oze1OzazOTOvMyihOTi5PTm3Pzi1PTazPTWxOzOtNSunDQyNPzy7Pzu5OzKrNzSzNzGvNS6rMyynMymjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCgwGFhYOIiYQBAgMEAwKHiokBBQYHCAkKCwwFAZOEBQ0IDAsODxARCZ6gAAEGEhMSFBUWFxgZCJ+TjBoMEpkRERscGBGRih0BBAgeFBQOER8gISEfIruIIwEkCCUVwhcgJicoKSrZg9srCRkRGdMsLS4vMNiK2wIKMRsbMiwzXtCocSydIBs3AuCIwIFDiBMucugAoWvSiB2VNPDg0ELHwA0MkCXr4aNSggg8NoDIQOFHgBtAkgURMiDAEAFEVBCJFKCIkSMGOyDRkETJEkOFmABoUsRJQkQdnkzQACWKlBtTplBR6qopxkFRJ0ytYuWKFCxZtBBq+hRA2AlbRrh08fLlCxi1a51g+dQhDFwuYsaQKWPmDBpKXgNETaNGjJgyhNfcVdTTiWI2XpK0cePmzRk4YA5T5otGixY0qFOXbgXAQCAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-filenew22:file file22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBExOTERCRDw6PCwuLBwaHAwODAQCBOze1NTW1OTi5Nze3MTGxLS2tJyanPz+/Ozu7OTi3BQSFCwqLDw+PDQyNFRSVPTu7MzKxLyyrIR+fCQmJPz6/NTOxPz69Pzy7PTu5Pz29Pzu5PTq5PTm1My6pBQWFPTq3PTm3NS+rAwKDPTi1PTezOzWxMy2pPz27PTazOzSvMyynOzaxOzOtPTaxOzKrMyqjOzGpMymhPTizOTCpNzSzNTGvMymjMSihCH5BAEAAAAALAAAAAAWABYAAAboQIBwSCwaiYGAYEAgFAqGg/Q4DCASCsTiymgcHAcqQLB4mM+QiIQBppLPcMjkwQ4bB2X4maKgt4sVCHpnFhQTElNFE3mDDxcYGRp2RBuMgxwIHX9EBZZwHh8gCBmTQ52NISEiIyQlpUImng8hHyInKAgprwAqgnC0IKwrLLpGB4wctLYkwy0uuwd9Z8AnJywsLcVFx2YcL7UnJCwwLTEy0GXJoSgrCCwzNDTnxgjeH9UrKzXwNDY36LRGhEOwLx4NHDmgJbh3QoeOgv127EhojEeHDj16pEhRQoZHHzl+QJNCsqTJSXaCAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-fileopen22:file file22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBAQCBCQWDCwaDDwmFPSubPzGhPzCfPy2dOSmZPzKlPzSnPzOlPzKjBQODPzChPzWnPy2bPSmXPyuZOyeXIRSLEQuFEwyHEQqFDQiFCweDKRuPFRSTPT29PTy9Ozq7OTi3Nze3NTW1MzOzMTGxMTCxLy6tLSytKyurDQyNMzKxOTm5OTi5Nza1NTS1MTCvLS2tLSyrKSmpJyenJSWlIyKjHx+fFxeXBwaHKxuPMzKzLy6vIyOjHx6fDw6NPy6dGxubLy+vISChCQmJNza3KyqrBQSFLR2RKSinJyanGxqZAwGBJSSlCwqLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeDAYqKiIeLj4wBjQCMhY+NkoiLk5qbhQIDoJyGBAUGBwgEo4MECQoLDA2pDrS1tKQPEAwHERITE77AvxKqhAQNDA8UFRYXFs8YBAQZGqGPxw0RGxwdHR4eHyAhIiMkJSYnKCgpBAYPEhcqHyssLS4kLzAxMjM0NTY3cBA4UCAHBw8gVnhgEcKFjhc7UPDj0cMHAAI/KFgY4YLFio/jRpTYsW8GDyCSCEQw2DChOHIqgsCQSEPIEEEEJFhAoUNECCJEyOk4d6KIyRtGcB7hIJKjixEjHu4oimSGEIs4d8IIUoKECnNB0ElMwkNJJgBLlJBAcQKGiR07KGAURVGViY0mhIwwSTKjr99+THjUoIg0r48hTRIrRtxkiOMhDgrZCQQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-fileprint22:file file22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBFxaXDQyNFxSTPTizOzi1FxORDw2NExKLPTi1Pzy9Pz6/FRWVPz29Pz2/PTy7PTu9OzezPzu5OzavAQCBPzy7PTm3OzazOzKrPTu5FxSRERCRGReXPTq5Pzu7ExGTMS+xKSmpOTKpPTq3JSCDNzSfHRydLyadOzCjOzOtOzSvLyyTMTCxKSipGRiZFROLPz+/KyurJyenJyWnGxmbLSabOzClOzm7LSutJSWlJSSlJyanGxqbNze3OTm5IyGjNTO1Nza3NzW3OTe5IyKjHx6fMzGzMTGxMzOzNTW1IR+hISGhKymrLy6vLSytERGRGxubKyqrLy2vLS2tDQ2NEQ+RASKBAT+BFxeXHRudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4QBAgOEiYqEAgQFBgcGi5MICQoLmAQDh5OEDA2YCw4ODxARApKUCaGYEAsSCRMUnQysCwoVEhYXGLOLCBCgDqK5GQUXGooCAhscBB0euBUZEAUJvQgIgx8gIR8iCSPiHuIFEREDJCXaANwhJhsnKCnWERcRKiopFCvsBywhQrRwQWGAPAz5EhpQ9wIABRgKYsiYMTEEDQocatiwkUIEP18fbkCAAcMBjhwzdOyQwYNCgBMfKJSgMItBjxs+btwgCSGGjhw/ZoRgQKGZCRMUPgABEgSIkCE3SZok8qNqkR85NtDUEcPIkaVAkCR5SrJBDCVKlmzQ6pCCiRlMTJo4YUH3K5AeMBYYWctW0BOaUH60cBJFypQmII6wyEpFQBVFMSm4UAI3hJUrOGh8oOJrklYKWIromJGDR99Ogz5j4ZGlM+pEnwmBCwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-filesave22:file file22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBGxqbAQCBLy+vERCRExKTHRydIyKjMTCxFxaXGRiZFRSVFRWVPz6/Nze3Nzm5Pz+/JyanDw+PExOTHR2dMTGxBQWFLSytHx+fISChOzy9Ly6vAQGBJSWlMzKzAwODJSSlHx6fIyOjOTi5DQ2NISGhGxubCwuLOzq7ERGRFxeXNTW1CwqLPT29Dw6PGRmZKSmpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb/QIBQGBAMj8ikUDAgFAzKKCBwQCQUCcICKh0SEAhGw5EIZAmBrgCxeDQgcDJWyz0GIggJfL+XGwQJRxNgC3yGDwwUFUZDFhdthnwMGAZNQwEZFwQakXANBBQbHIIdERIBnRAOiR4ERx8gsSEMBBmGCyEGG3YGBwcgIr8UCwQHECOgG4xCtRkEJAvBJRklJgkSFBQeJ68hJiEoESkFKiEZIbkGARsLlwEGExENGhorGSkpFAYm66NDLAECpGiBYsUIFA8wLHBBQMWLVkdUCFCwaYVFBOymkVCgYEMgOykEpICBccMBAhhELFigTEqAAgIIwCiQ4eRKDyS6EAlJIAI0EpaudF4iIKDAAn9CkRT5eMROEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-foldernew22:folder folder22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBNzaTPT2FISCBCQaDPz+BExKBDwmFPSubPzChPzCfPy2dPz6BMzOTAQCBOSmZPzKlPzSnPzOlPzKjBQODPz+rPz+3PzWnPyuZPSmXNyaXPTyhISCLIRSLEQuFEwyHPy2bKRuPFRSTPT29PTy9Ozq7Pz+xJyanDQyNPzGhMzKzOTi3Nza3OTiVBQWFDwqFKxuPOTi5JSSjISChHR2dGRmZFxeXPS2dNTSzNTS1OTm5KSipLS2tLSytKyqpIyKhGRiZNze3NTW1MTGxMTCvLy6tIyKjCQmJMTCxMzOzMzKxJyenHx6fLR2RLy6vJSSlHx+fDw6NLy+vIyOjAwGBGxqZKyurCwuLBQSFJSWlCwqLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeIiYqLjI2MAY6HAgOHBJYEhJCDBQaDmgcICQoLB4MGDA0OAQUBDg2cAAcPEBESE6QUuQasFRYVq5SxCRcSCggYGRjIGgYbFs8bHIMHExIJGR0eHx7cB83PFhsDDuTUEyAhIiMjJCQluwEmvsAnKAcp1x4qKyUrLLupWrByxcnFiwQIYIggEaNEiRgBZMyYQaNADRs2REA6cCODBxw5+OnQgWMHjx4+BND4MQOIg1gI0gUREkTHiplDhhApEoCGkRlHBL3I8MEHEhz+WAhJogTJySVMfthwIehAExE5jubAkYQpESc8fOx4AiXKNA8+ekhBgqSpzh5hPHcsmVLjpSAqVZBY6VGkiJMiPQKLnTvjCiEsWU4o3nGC8YksMmT8YCmC6iAXKLRc2cz5yGYtR0JjKWQgEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-mailforward22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIcAAJR6fIxydIxubIRqbIRmZHxeXHRaXHRWVGxSVGROTFxGRFxCRFQ+PEw6PEw2NEQuLPwCBJR2dLyijPTixPz69Pzq3Pzy3Pzu5PTu7Ozi1LyelOzavPz+/DwqLLyafPTmvPz67Pz29Pzy7LSWlPzmzPz6/LyajPTitOTSzMyurPz25PTatPTi3KyOjPzuxAwqVDQiJHxiZPTetKySlPzqvPz27BQ6bAwmTPTexLyinNzGxDRunPzy5KySjCQ+ZNzq9KTO7JzC3Nzq/Ozu/LzW7FSm1BR6vGSWvFyq1AyGxAxytAx6vBSKxAxSjMyujLSunES+5BSi1ByGvAQCBNzCrOTaxNTOvMS6rKyelCx6rBx6tBQKDOTWvPzu1PTq1OzezAQOHAxGdBROhAQGFPzy1NzOvIRqXLyynOzarPz21Jx2XPTWrLSShAw2XKSCbPzuzAwePAQCDPzyzPzqzPTmxOzWtAwGBKyObOTSrNzGrKyGbOzatEQyNKyCZOzWrOTGpNS2lCweHCQaHCQWFBwSFBQODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBhBwgQKFSpY0HgBQwYNGzh0mDhRAAUPHziACEGBpYgRJDiUGEkSwoCQJk6opNASRQoOFETQJDkggwoOJlYApcCihQuVL2DUhBDjhIqjJmRwwDCDhswaNm5MjYHjKggOOU7o0CGTA9gdYknG2KCCBw8VJVL0uBgihAUfP+CSNGCjsI/DiBPbAMJBsEQbQYQM+UG5smUiRYw0jlvYxhEkSYyIHm1EyRLTTH40EZvAyZPOR4pAmU07ipIkUKQ0mQIhAZUqVq5gKXzkSBYtyLVEyd1ki8QFXLp4+WJFQowbYLJnD5NbzJiJCjaQnhnvpYwZM0/OPFlvQ/f3iQvQpBlvQc0aCWy4VKnCpY0Y5yQxgEYXZFjghgwZUOHGCW90YQEccUwloBwGyjAHHXUoSAMZb0xhx1QOoMHDHSfIwSEOdTjhAQ1d4MFbTQ6Q4MYacrzxhhx04JCHHhvQsMeLJPHRBxpr+LHCGnusgccfgKixQR1ATtTBlDDAEIggggxCCCGFbLGFHVFKZEdAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-mailget22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBQ6bCQ+ZAwePKTC5Ozu/NTi9GSWvAwSJGSu3JS+5CR+rAQOHPTy/AyKzES23AwOHCw+bOTq/BR6xES+5AwmTBw6ZMTW9Ax6tByi1BRGdAw2XAQCBDQuNDRupKzS9FSm1BR2vBym3EzC7CSGxBROhNTW1Pz+/OTm5NTO1AQGFNzW3Ozq7Ozm7IyKjJyWnMzOzNzq9Nze3OTa5Ly6vCQiJGReZISChKyqrAwqVBRWlOTi5MS6xJSWlNza3OTe5Ly2vGxmbKymrIyGjMzGzISGhKSepCQmJDw6PHR2dJSOlPTy9MTGxLy+vLS2tMzKzLSutMTCxLSytKSipJyenKyurJyanCwqLCwmLCwuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4IBhgIBA4SLjAABBAUGBwiNlY4FCQoLDJaNAQ0ODwsQnYwREhMUE5ylFYYRFhcYGRgaGxsDHJUdFR4SHyAhEyIjJCUcuo0cJr0nExihxgwoyYscKSnMHicOIw4lKissLdWDHC4vMCu9McYqMjMyNOUANTY3OPEoOTolDCszdrSgwaMcBxs9TMxYOCMHBx8zfPj48QNINQ5BbMBIIUShDIUoTAhR94PHPEEHbQwZckOGjBQviMxYUWQIDCMmdXE4gqRnkiFETAxR8iKFjJU2evZEdmLJkgJIbqS4wXJIUapImj5FtuSEVyRVV1IVi4RIChhEkLVAgcJHEqVwVJUmYdKkiRNkALMRecKECRG/ff8CEQJFCA5kMKJEoUHDCQ/HkB9LmWKECpUeyKoIMSLEyosen0OD7iH2xg1dV7BkqXGlBpbWNTq4Zn2khu0aAAwEAgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-mail22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBDQyNCwqLCQiJBwaHBQSFAwKDAQCBDw6PPz+/Pz69Pz27PTy7PTy5PTu5PTu3PTu1PTq1PTqzOzmzPzuvOzitPTmvOzivAQGBDw+POzevPz67Pz25Pz23Pzy1PzyzPzqvOTavERCRKSilPz21OTevIR+ZExKTOTi3JyanLS2tPz6/Pz65KyihJSKbMS6lExOTNTW1JSWlJSKZMSylNTOrNTKpFRSVPz29MTCxPTmzKymjIyCdOTWxOzexOTWrBQWFFRWVOzu7MzKxJyalOzatLSulMzKtOzmxOTarFxaXKyqnPTmtIyGdIR+bOzetOzixBweHGRiZOzm3NzWzNzSrOTetGRmZOzizOTexOzm1JSKdGxqbHRydJySdHR2dOzapHx6fKyijOTixCwuLHx+fFxeXERGRDQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeIiYqLAQECjwORAwSUBZYFBpkHmwgJCgsMDA0OD6UQERITFBMVFhcVGBkangq1ChsLGxwcHQ0dHR4fICEGIiMSCbS3uLq8wCQUJSYGJygpKhQJKyvLLM4Nwi0uLwUwDQsxMtmeuQveHR8UMzQ1NgU3Dgo41jk6ns0cKOzgYaOHjx9AgjTAUUvIECLZNmxoUISHkSM9KiBJQkCJA4kKEoBQoWJJAiYtmjh5AmVCsCJRpHzckKCCySlUUvBYUqUHDysSPnxIEuXKA5pPRiRwxwFLFhRaIEDYUoEChCcDuECoOWKFuwW7nHkg4WELkw8/BHRRwESpt10dU8SSHevlRxIBX6C0WBE27q8GZMkKbTADjIAwYlb4GLMYShYoPTRo6FGiSJEKPyzMIFMmzJcvXbhwkSLFjJkbQW6cOHNGhAgEAdAsmk27tm0ABgIBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-mailreplyall22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIcAAJR6fIxydIxubIRqbIRmZHxeXHRaXHRWVGxSVGROTFxGRFxCRFQ+PEw6PEw2NEQuLPwCBLyejPTixPz29PTu3Pzu5Pzy7Ozi1LyelPTavPz+/DwqLPz67PTetPz69ERCRLSWlPTmzPz6/OzexLyajPzqvDw+PDQ2NMyurDQiJPz23PTatJyenAQCBPTevPz25LSajOzq7HxiZPTexPz65JyanBQ6bKSmpBwuTOTi5OzaxBRCdHySvGRiZHx6fBQSFERGRNzq9IyOjHx+fGxqbPzu3BwaHFSq3Aw6XAxKfPzy3Gy63ByWzJzO7Mzi9OzavBRytAx6vCSazGRKTPzy1AQKHBRGdBRyrDy63ES+3Cym1CR6rBwWVAQSLAx+xCyCtBRmnPzuzAQWLAwePPzyzKSCbAQOJByGvOTWvPTmxBQODFQ6PPTWrPzqzOzatAwGBKyObLSWfPTivKyCZEQyNKyGZOzWrOzWtOTSrOTGpNS2lJx2XDQmJCweHCQaHCQWFBwSFBQKDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBgggoQJFCpkzGjhAoYMGjZMpMghQgcNFjh4mODhA4gQGkSIHAmBwAgNJEpo8KDSxAkUGjhMSEGz5gUVIiKs2PmBRQudHiwQpUnAxYsXImB0aBqjBcuoU0fKmPGChgUNH2qIqGHjg9u3bicWIFs2rYgbNnDkyGFhb8cccQ3ouJqWQo0dPFr0WMy4h48LFj4gsKriB5AeNngEaSGks+chPnwQOXFAh4oXRYxk9nAEyY7XO2wksWHDx5ATCDIoUXEBsYclTJo4cWJhuIjhSXacSPBEiZLMQY4wgRKluvXqUpyIsDElAxUqVaxcwcGCPQuWLOixaNHCZAsXBU+oqKDSxQqULF6ifNmyn/8VMOtxwcAK36kQRhdJQIFFEmKM4eCDYGyhhYAEkqFEGSuYYcUZLaDxXRpqSNRCEu6twYaFZXTQhgRd2NCCG9918AYELTjoXgNuKAFHB2RQEUYHVbQQRwlUpPHGGFwkyQUEDsgxx4lh9BhCBy2U8UQJcrSg5JIQ0FEHG3bc0QGYK+CRhx57PEGlkhM9sAEffKTQhx9+/AEIIIGoEUgLLRRFR0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mailreply22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIcAAJR6fIxydIxubIRqbIRmZHxeXHRaXHRWVGxSVGROTFxGRFxCRFQ+PEw6PEw2NEQuLPwCBMSihPTixPz69PTq5Pzy1Pzu5PTq1Pzy7Pzu7Ozi1LyelPTavPz+/DwqLLSajPTetPz27LSWlPzmzPz6/PTexPz67Pz29OTSzMyurPz25LyajBRCdPzuvDQmJOzexPTevOzq5BQ6bBwuTDQiJHxiZPz23Pz65LyinPzmvBxCbHySvAQCBOTi3OTq9CweHOzaxFSq3Aw6XGy63ByWzJzO7Mzi9OzavNzq9BRytAx6vBR6tPzy3AwOHDy63Ax+xCSazCym1CR6rBwWVOzizAQSLES+3CyCtBRyrBRmnGRKTPzu1MzGtAxKfAQWLAwePPTizMy6nByGvNzWxOzWrNzOtBQKDJR2ZNS2lPTmvBQODPTatKSCbOTaxLyqlAQKHFQ6PPzyzPzqzPTu1PTivOzWtKyObPzuzOTOtLSWfPzqvAwGBKyCZPTWrPTmxNzKrEQyNOzatOTGpJx2XCQaHCQWFBwSFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBgggoQJFCpYuIDBQgYNGzh08DCR4oQPIDqEmDBhJQYRIzqQIFkSAoESJCKkDGFiwgkUKTpMwECz5IASKjqsSMlSA4sWQjG4qGnzhYoQSmF0iCFjBgmWGWhQrVHCxg2sOHLo2MGjB0sLYmsWQHq1p4wdPtqemGDhB1UDQFSouKHi7oQgQmSwUMyYxcQDZQWz2EFiCJEiRoyQyLzZyGIIB47YKLwDSRAiSZSoXq1kCRHNLBK8YGKjCYskTp4ogeKkt+8oUaBImZKAAxMmVKrctqL7ihTnz7FkAT5FC4cKFbZwadIFdxcvX8KLss8iJcoUBUcq2KgAJoxyMTy4jCFTxoxEHl2GLyCDncmWM2hUIQMPY2CXhhoTfTEcA2tgVwEba7Thxhs88FdBD/ZB8MUUHMJBRhw2sAGCHBKU4UaFc1RAhxnhcdhhHUzYAUIcFdxRAh4R5KGHinu4OIVEDqTBRx81xhGHHzD8wQYQetDRI4cTAcIHGWT0EQgZa1ApCBqDcBAID1Q94IEHLtBAAyGEFGKIIWqYYQYPYNZkQEAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mailsend22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIcAAIR6fIRydHxubHRqbHRmZGxeXGxaXGRWVFxSVFxOTFRGRExCREw+PEQ6PDw2NDwuLPwCBLSijOzixPz69PTq3PTu5PTu3PTu7OTi1KyelOzavPz+/DQqLPz67LSafOzetPz27Pz29KyajPTmzPz6/NzSzLyurCwiJPz25Ozi3JyOjPzuxBRGbAwSHOzexPz23KSSlPzqvBROdISavBxSdAwaLHRiZLSinNTGxMy+vBxGZNzu9BSGrAwWJMSyrKSSjFy61ETO3BRWfPz65PTqzHTK3ByqzBSWxEzW5AQWJOTWxBRCXOTu9BSOvDzO3ByavBRKbOzaxOzizKSWlCQ2TAQCBJza7BRWdNzSxJSCbMzq9BSOtCSKrAwiPOTavPzy3LymlCySrAwmPFRKTPzy1NTGrPzu1JR+bOzatPzyzCy61ByGpOzWtJyCbPTmvPzuzIS+3FymxCSuzBR6nJyCZOTWvKSObMSujOzivAwKDOTSrNzKrJyGbDwyNOzWrMy2lIx2XBwWFBQSFBQODAwGBAQGBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBgggoQJFCpYqMDxAoYMGjZwmEixg4cPGzqA6BBiAggRIzaQGEkSwgAMJCKgnNBhQogSJlKGOFHTpgYUG0TsnJBCxQoSE1i0KErAxYsOJJRuuAAjhkwZM2jUqGnDBQoUHTbciIEjx4YNOmbs4CGjB8kCZlGAALHBx4+YcTcACcJDyFSJBo6iGNIhhQkiG8BOKGLkCBK6SSQisHoWhZIbG5bMYALECI8mTZw8gTL1QJQXZ6VMiUylSpUlVpoYaXLFtm0EGmCjwJLlA2O9MrRsccKlC8kEXr7AdgEmwtkhX2SQ2BIkjBiSYzSQr/nyhUKZLIrJJOcexvlEBV7IvCBjRkmAMzHOaufhxDvJBWiQISAFxUUQQRovJNeEGmu4JxEDbKQhXxsfuFDGGW68IQMcccgxRxUkNRDhC3R8QMQIdZwXQ11JJGFbiB+QYccHaaTxhgt13OFBDGTgkUdRDrhAhx5k2JjGCB/swYcXMXwAYk190OGHHx/4wUaVepTxByAaoPEkSQ5wwMEJZAZipiCDDJIHIYV8OZEdAQEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nav1downarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBBQSFAQGBDQyNExKTHx6fGxqbFxeXGRiZFRWVDw+PAwKDJSWlOzu7LSytJyenJSSlISGhISChIyOjFxaXDw6PPz+/MTCxLS2tIyKjKSmpKSipJyanAwODDQ2NHRydERCRFRSVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZzQIBwSCwaj8ikcslsOp/OgHRKlQoCgymRUDAcEIkwYgxWFBYERpHQcDwgEclEQmk8DhWL2kiIXDBwExMNGRoJaUkEEH8bEQ0cGgcWAksEHX8QHBKSHk1sfxMHH5ROBBsOICGkT2wiq1CIULKztLW2t0h2QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-nav1leftarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAQCBExKTJSSlHx6fAQGBOzu7GxqbJyenPz+/LSytFxaXMTCxGRiZKSmpISGhFxeXISChAwKDFRWVHRydJSWlBQSFERCRIyKjDQ2NIyOjLS2tDw6PBwaHFRSVDw+PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZ5QIBwSCwaj8ikchgQLJGBgfNZDBAKBirRekBMtYGEYsHIgsWNhOO7tCrShDU18Hg/CJAIG0o4wCUQcksTFBUSCRYSEnpUFxgIGQkJGYyNGggbHBaVjR2QCxEeWkITHQ4IH3tPFwEMA2ajAKUgqlQTTbFEE7W5vUgGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-nav1rightarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNGReZAQCBMTCxGRiZMzGzOTm5LSytPTy9Pz+/CwqLOTi5Ly6vCwmLMzKzJyanJSSlBQWFKymrIyGjCQeJJyWnISChISGhHx2fKyurDw6PAwODHx6fHRydDw2PERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZ2QIBwSCwaj8hkMRBQKgOCgRMZIBSk06XhEM0SA4iE4uoVLhCMhqLrdSAekMgYO5VM4BQ521mxIC4UFxBWdEkSERYYFxETGQGFSBKCGBEaGRuQSBwdeZaPXpsQCB6YZQMdEI6ZSgMepKusHh+wrCC0rLdlursGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-nav1uparrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBFxeXDw+PMTGxHRudPz+/JSSlLSytIyKjHR2dISChIyGjIyOjLSutLy6vKSepJyanISGhJSOlOzm7Ozu7MzGzKyurJyenDQyNGReZKSmpIR+hCwuLCQiJBwaHBQSFAwKDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZtQIBwSCwaj8ikcslsOp9QYyAQFQYEAyr0Sihkn1fDAeHVLsOJNELxVaITC0bDUU6GH5AIQ8KYrNtFVxQVFBYWFxgRCREYdUQZGhYEDwgIGxAHCQocCgWOQhmhGR0epR8gqCFTq1Wtrq+wsUt0QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-nav2downarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBAQGBBwaHDQyNExKTHx6fGxqbFxeXGRiZFRSVDw+PAwKDJSWlOzu7LSytJyenJSSlISGhISChIyOjFRWVDw6PPz+/MTCxLS2tGRmZDQ2NAwODJyanKSmpKSipIyKjHRydBQSFERCRExOTFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAasQIBwSCwah4FkQKBsDpoBIqFgOCASCYRWm1AUFgRGkdBwPCARiWRCaTwOFYvYSIhcMOiJpJGZaDYcR0IEHXceEQ0fICEWIoJDhHcQHxIHgI9SEHeVG46YUh8OISOen1INCqWmUnOYTUxQAU9NUlRWWFtbCiRgrYNlZ2lriG8lYUd1khETE24gCZeCkRgeFBAQIAeNn9OTlXKrBJoYnKrcoaPmpmSpq3S+7u50QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-nav2leftarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAQCBExKTJSSlHx6fAQGBOzu7GxqbJyenPz+/LSytFxaXMTCxGRiZKSmpISGhFxeXISChAwKDFRWVHRydJSWlBQSFERCRIyKjDQ2NIyOjLS2tDw6PBwaHFRSVDw+PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAavQIBwSCwaj8gkMiBYNpeDZzEQXRIKBmPgmtUSDgipcAsWjxOKBaN7Tq+n6EbCIQ3E5+KtQk6gjwl7CX11D3sPBBARTQGFDYeJT2R8EhB0koKUfgATFBUSCRYSEoqcnqCiikMXGAgZCQkZqautr7FiFxoIGxwWqQC4ury+qh2tCxEexMbIRhMdDggfYs7Q0kcXAQwDbELY2txEziBmmx3jSRNMR+nk4e2b70ry80QGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-nav2rightarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNFxeXAQCBMTGxOzm7CwqLLy2vPTy9Pz+/Ly6vCQiJLSytLS2tLSutOTi5MzGzKSepIyKjJSOlKSmpMzKzJyanIyOjBwaHIyGjISGhJSSlISChBQSFJyenIR+hGxubDw+PHRydHR2dEQ+RHx6fERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa6QIBwSCwaj8hkIIBcJgEBweAYnTYJUmMAa9USClniFtwlGg6IRFhoUKTXwwWj0FB3F46Hwl6UQyISfAB+EROCQgsUFRYSF3yJEIyBaxgWDBkaGRtclQwSHBIbEGEdGx4fGhcOICEDGBsWHBmqIq1CHRIWGRMMIyRTHRy6Er22tyONq8YdJRe0xkIDwr2/QwMfliMmZQADIxasZd4e4UYDIr7c59rc0eVFA+/m0EQD9PDt0flP/P3+BkEAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-nav2uparrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBGReZDQyNMTCxHx6fPz+/JyWnKyurHx2fDw6PJSSlISGhIyKjIyGjISChLy6vJyanOTm5PTy9OTi5MzKzLSytKSepMTGxMzGzLS2tLSutKymrHRydCQiJCwmLBwWHAwODLy2vHx+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAajQIBwSCwaj8RAAMkUBgSDZdP4JBSi06TAcEAkFNLp07BgLLzY5njRcDzO3zB1C4lEGI83Wj58SiYUFRUWdg0XEXFFAwIYGRoWGxwRZQUFHZdgRAObmx4fHiChISFKpVlKWUdPaalOAlasp1sHG4myZGZ7Yltsbgu1mUhjdRF5egmxfQJ/gYOFdrZDi40iFgiSCw8jBQmYcpydn6Ego6WorUwGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-navback22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VCRGZAxCZGyavExmjHyatOTy9CxihISevPz+/KzO3BRylAw+XAQCBDRWbPz6/FzC3CSuzDyexJzO5Mzq9CxSdAQOFISmxNzu9HTS5BSmxAyexDSuzJTa7Mzu9Kzi7GS21CRmjAQOHHSWtLze7AyWvHzG3BRihAQKFCTO3BS+1AyixBSWvBSOtBSStAQWJBSixDzW5BTC3BSqzBS21CTC1ETW3AQSHEze7BRqlBRmjAQCDBR+pBRefBRSdCH5BAEAAAAALAAAAAAWABYAAAalQIBwSCwaj8ikMqBcMpvHgGAANQYIhWdVGDAcENQtIJBQLBgNx0MQaDuQXcghIplQDhBIxXKJYiAZGhscHR4VHyAhIiNWJBklGhIbJoQnFCcTKIxFKSgbKissJi0mJi4vLiYoMEcXKDEyMzQ1Nje2NisoOEg4KDU5K6g6OwwoKAN9SCOeMmgwz884PEq9PT4NYkPLP9jZQikN3d4AKVrjKePp3gZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-navdown22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VCRKZDRSbBxCXJTC1Mzi7Nzq9NTm9Bx2nAQCBNzu9JzG3Hy+1HzG3IzO5BRmjPz6/LTe7Dy61AyStCTC1FzC1AyGrETS3ETC1ETa5BRulAyuzBRylAw+XMTe7Gy+3CSqzAyexBTC3DR+nIS21KTW5Nzu/KzO3FzC3Pz+/ByixEze7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaRQIBwSCwaj8ikcnkMBAQDgjPAFAYKhsMBkVBUAYEFo+F4QLzVQEQyoVTOX/XBcsHA0+vMRbNBMwkRDhxuHX5GTlIeHh8gISIjFAEeiVRECiQlDAUmgxQjIhwiJHdFlycoKSIUFCEjGiGkRpcqCxYijxorsUezcxYsuoZJsxLAu0qXB7DCTJfHVQrMX9PU1Uh0QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-navforward22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VAQCBBxCXDR+nIS21Aw+XJTC1Nzu/KzO3Pz+/Nzq9Pz6/MTe7KTW5FzC1Nzu9CRKZMzi7IzK3Lzi7LTe7HzG3Gy+3AyuzAyexFzC3DRSbHy+1Dy61CSqzAySvAyStLze7IzO5AyGrETa5ByixBRmjCTC1ETS3BTC3Bx2nAyWvEze7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaYQIBwSCwaj8hkMqBsBgTN5IAAjRoDBaq1aDggtMuAWDzoJhTgY+CwYLgZDccDwkgXI5IJZVGxXDAZGnR2QxsLHB0PHRgeHyAZDyFfVUQDCyIgIyCPIB+QJCUmlEMBEiInKCQnKSkeKSQeomoqJrUmKiArKSwZsmoCwMEBGCyxo1EGHr3HUQEEvltCBtDRAAbMW0zV29xDBkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-navhome22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBAQCBCQiJNze3ERCROTi5MzGzLy6vDw6PKyqrKyurBQSFGRiZGxqbGRmZISChEQ+RExKTExOTHRydDQyNOTe5FROVLSurCwqLMTCxPT29Pz6/LSutFxeXLyytLSytPz+/JSWlKympPTq7KSipNzW3BwaHHx6fKx2VJRWNHQmBFweDOzq7Ly+vNTW1JxWNLSajPTe1Ny6pKxWJNTS1IyOjJRmbPTi3OzKrNSSXMSGVHQiBHx+fJSSlPzy9IxOVOzWxOSyjNSCPLxeDJyWnIRGTOTGtMxmDLRWBHwqBIxGTLRSDDQuNNSunKxKBGwyNMSafMxqHMReDKRGDPTu9LxuPLxaDJQ+DIR+hGQqNIQyBGQiBNTO1EQKBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4QBAYSIiYQCAwQCiokEhwACBQYHBAiQhAiHlQYJCgkEC5uCkp8MDQ4NDwylmwgQlgQRERIEBBOkmxQVBgQWFwUFFxEEDLyJGAUZtQoFGhsFHLYdyoOVHsEf0SAbIAUex8mwlAUhtSIFG+3uIyTWvAIGJMEkJe76GyXbEeWUBJg4USKaBhQpVKzYoIFFiwYUBBJa8MAFCw0vYMSQMWOhBhoTKCQSUKMEiw02buDIoWOHBg0GeIhEFKAHDR8afgAJImSIioYliMws1MPkhiJGchxBkmTDCBo1hg4KQMTiBiUyhBxZ8pNFiR5MEtU0WqSJVidJNDyNKraHC5xPNKBEkTLlJ5WvUgWNvfikyhArV34+7ZEXQAAsB2iUyHLlihYtW0pwOYAFgyJDmDNr7jIIWiAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-navup22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VAQCBHSWtBRmjAQOHISmxNzu9BSmxBRihHyatPz6/Lze7CTO3BSixHTS5BTC3DzW5ByyzPz+/OTy9AyexEze7ByixGyavKzO3FzC3AyWvBS+1BR+pAQKFCRGZExmjCxihBRylCSuzBSWvBS21BSOtBRSdAw+XAxCZDyexDSyzCTC1JzO5JTa7DSuzETW3BRqlAQWJDRWbOT2/Mzq9HzG3JzS5Kzi7BSStGS21CxSdCRmjAQOFAQSHAAAACH5BAEAAAAALAAAAAAWABYAAAaeQIBwSCwaj8ikcqkMCJjHwIBQgBIDhgMiUbUGFAtGw0GFfheHByQi4S6/E8pDUoFYLm5kAEPJaBAVGxIcER0JHlEfICEiIxUkGyUmIgknKIhXASkonCorgSwmKQGcKE9IAi0uLxUwMTJWMzQ1NiYwBLBQHws1N7avXgs4NjkcCblMATU6KhvGyG87PAnUKV1MAj0+2zIFp1bg4eJJdkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-playeject22:play play22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAwKDJSWlFRSVBQSFKymrOzq7HRydERCRPz+/MzGzISGhJyenKSmpGxqbJyWnJSOlKSepLy2vIyOjGRiZPTu9IyGjLSutFxaXExOTHx2fGReZAQCBAQGBBwaHCQiJLSytKyurJSSlFxeXNze3LS2tIyKjFxWXHRudAwGDBQOFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa1QIBwSCwaj8ikcqkMCJjHwIBQgBIDhgMiUbVKFQsGItBdBhpgh4PxIJvRC8cA4oiMy8bvQhJhMAYTFBVOURAWEw0QFxcMERAYCBluVxobDxkVHJocmBwEGgmEQx0dHh0CpKmkH6odVlanBR8FtAIFtiCkSB0LISEiGCIGIxAPDySuRwIOBwrOzwoHJRHJRh0jJgMj2gMnERQUCNVFHQQoCBvo6CkICATjRB0qp7b1K6qv+foyQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-playend22:play play22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNFxeXAQCBMTCxGReZBQSFOzm7AwKDKymrJSSlFRSVCwqLLy6vPTy9OTe5Ozq7CQiJLSytOTi5BwaHPz+/HRydMzKzKSepJSOlKSipJyanIyGjIyKjKyurISGhMzGzJyWnHR2dISChIyOjLSutDw+PERCRHx6fJSWlIR+hJyenGRmZHx2fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa6QIBwSCwaj8ikMBBQKgOCgRMZIBSkxYHWoDVWD9EigpBQLLBERsPxCA8NDUhjgTBGJJNGG02RVBQWdUV3FxgZe0IGfoAGdhoXGxwdiAYef4FGFBoeHB8dGSBRihUhIo1FBhkbIyMkJRYmAwYal4JEBh2RChIWJ1IIGxUZFqdECCgkHR6wWAYpFR2YWSobvL5vFgfDaEMDIivMRBEsD9HcQgMWvecDLB0tZ0btsfJa9vLXU/X6/P3+b0EAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-playpause22:play play22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBAwODMTCxKSmpJSWlFRSVAQGBBwaHLSutOzq7Ly6vCQeJPz+/Hx2fBQWFGxubLSytJSOlBQOFAwKDJSSlJyWnIyOjHRydNze3GRiZAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAWBICCOZGmeaKqubOumQSDEgRjPMSoMRGEcol3vh0IkFAtDDWBEKlGMRKPgEIii0yrqIS1ArADu9KuLNCSOSdCMVp8ohEZFC4DL6SaBpXGh6/l4JX8XZACDhXkYCn1LAoqMUBAZEhBLDJKUSyYBGmhPAJyemiU0NDaloy+qq6ytI8whACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-playstart22:play play22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAQCBExOTAwKDAQGBJSSlHx+fBQSFMTCxKymrFRSVOzu7GxqbLSytLy6vJyanPz+/GReZBwaHHRydKSepKSipGRiZJyWnAwODLSutKSmpISChPTu9ISGhFxaXJSWlIyGjJSOlERCRIyKjDw2PIyOjLy2vOzm7Dw6PLS2tCQmJOTe5GxmbDQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa7QIBwSCwaj8ik0hgQLJGBgbMoqBIKU2LAcMgOEQmFYeEFbBmNMgDhYDwWBC0k4pCoJ46IgRIXBioRCRYXamwRGBQIfgaBFhiERhkaenxmCoEbBhyQRYaIGVsdghgem4UWegcEBB8UHhsgIaZGBBgRIpUIIxQhChginEQIIBEklWslFyYnBsFfFCi4WQgpFBwqFxNGKxcsxl4IAS0NZEYCF3vlwgEfUuZV8JEuI2pPAARN9kcE9fr+SwaCAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-playstop22:play play22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBAwKDBQSFBwaHCQmJJSSlISChJSOlJSWlGxqbGRiZNTS1PTy9Pz+/Ozm7OTi5FRSVIyKjOTe5MTCxIR+hExOTHR2dLy6vLSytLy2vHRydFxWXIyGjIyOjPz2/FRWVHx6fExKTMzOzJyanKSmpKyqrKSipAQGBLSutHx2fDw6PAwODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa1QIBwSCwaj8ikcslsAgKCAWEQjQ4KgSwyYDAcugZEQqFYYJECA6PhaLcfEEUkgJZAGJB8fkKpWOhHAxcOGBQZGBoaGQgbHIBGAhUOGR0SBxISBh4Xf0iCHxQSlRIIXhsgj0UCIaCXmJgHGyKpRJ+hmB5dHQqOaCENIx0epBIkBhdzngoPGCQlJifQJBvJRygRKRcKGxcXGypys1srEREc5SLnICLiR1koLFVUWfRO9vf4+UwyQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-textblock22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py30Bo5zBWUWzvNzo33GfFl5jVlonlTrr1DbvFi9vjeeNUQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textbold22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIxhI+py+0Powm0VnknjVkH2AEhE45LZ55Wqn6e65TsMc5eYosbksswubJIhsSiccgvAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-textcenter22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py30Bo5zBWUbz3Sh7yIWfFHKjVl4nmFrr1Lpr7LwkjeeIUQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textitalic22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py+0P4wqUSlQvttrkDnyaOHIdeaGRupplAIauVM3xjeeOUQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textleft22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+pyw0Bo5zB2UXz3Sp7yG2fFJajVjonmIor2TJvfL0wjecIXQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textright22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py30Bo5zBWUfz3SZ7yIXdF4kWqZkbCqoMO7kXLC+wVOe6YRQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text22:text text22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBBwaHAwKDBQSFLy+vLS2tJSWlBQWFKyqrFRSVCwqLDQyNNTS1GxqbFxaXJyanIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAVcICCOZGmKQSoMaZsShBsQBdAapHvgaIDUqUPJlRjSbAoT0fRDKgODRbF0PLUYjZO2F2Bst9evNix+dsvDlGKK5jraudQb7qbX6a2HEJ+ycyF+LRE8ZTI+fX5oGCEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textunder22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIvhI+py+0PowmUnhpeVVnb1DkbCI1I2JhX+Z0sOr2cTHpwK7a4rUr+hAnufsTirwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewchoose22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBFRSVExKTDQyNPz69PTq5Pz+/OzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARTEMhJq70466Cl+AMxBVwnFIVRAmQHCIeBrC1L3tQgJ/SaEbeeC1PLBHE2ybFI9A1HzstHEIK6YCmhDTmBybQaHYJn7QC5zKeytIQe1+pKNE6P2yMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewdetailed22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBFRSVExKTDQyNPz+/Pz69PTq5AQCBOzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAQ+EMhJq7046817+MLQUQFRGMc4lQaSAkcMx3QltMmrDrSu/sCgEPgJhIiFk89DaL1qPRnlhsgBebWhdstVESIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewicon22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBFRSVExKTDQyNPz69PTq5AQCBPz+/OzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARWEMhJq7046z2DF0PlBeAVEERhiKhqHgWyUgEsX0KczFOO7JeBYciTCImc5ITIXDKHyqhU9AnRqq9UEVDTvmLbGhin2/qAliOUot5OLc81IO5+2+8WewQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewmag-22:view view22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFJyanKy2tLzCxHyChNTa3Nzq7Nz29Nzy9Mzy9MTu9OTy9Nzi5Oz6/OT29MTi5Kzi7NTy9KTm7JzW3ITO1Lzq7IzW5HzK1LS+vMTq7Jze7ITW3GTCzGS+zLTS1MzOzLzq9Kzm7Jze5ITW5HTS3FS2vLze5EzCzEyyvEyutJTa5NTu9ITa5FTK1ESirLTm7Mzi5FS6xEy2vESerESmtFSutESmrKyqrAz+/Dw+RAzi3ASutHRydAQCBAAAACH5BAEAAAAALAAAAAAWABYAAAbKQIBQGCgWh8jksCgYEAaCozIZKBgOiIRiwSgEpstCw/HYQiKRhBcMCBgQDodkMaFU0t9pQHCIyy0TFxgYEVF6GQ4LCQkaERscHR4RH3lUIAkWCyEiIyQlHiYjEJVIAQQJJ2gjJSUoKSorlHoCLBQcHC0lLikvHjCGejEiHBgeMjM0NRwPpFQFDBHFNjceHAjAYFWoI7cnCVE4OWxtex8QH1EBOjs4zUpGUjw6Pe3j2fP19u/47vrq9P3s/avno2BBf/MCClSob4iBIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-viewmag22:view view22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFJyanKy2tLzCxHyChNTa3Nzq7Nz29Nzy9Mzy9MTu9OTy9Nzi5Oz6/OT29MTi5Kzi7NTy9KTm7JzW3ITO1Lzq7IzW5HzK1LS+vMTq7Jze7ITW3GTCzGS+zLTS1MzOzLzq9Kzm7Jze5ITW5HTS3FS2vLze5EzCzEyyvEyutJTa5NTu9ITa5FTK1ESirLTm7Mzi5FS6xEy2vESerESmtFSutESmrKyqrAz+/Dw+RAzi3ASutHRydAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbIQIBQGCgWh8jksCgYEAaCozIZKBgOiIRiwSgEpstCw/HYQiKRhBcMCBgQDodkMaFU0t9pQHCIyy0TFxgYEVF6GQ4LCQkaERscHR4RH3lUIAkWCyEiIyQlHiYjEJVIAQQJJ2gjJSUoKSorlHoCLBQcHC0lLikvHjCGejEiHBgeMjM0NRwPpFQFDBHFNjceHAjAYFWoI7cnCVE4OWxtex8QH1EBOjs4zUpGUjw6Pe3j2fP19u/47vrq9P3s/cunr9S8gAIRFhTCLAgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewmag+22:view view22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFJyanKy2tLzCxHyChNTa3Nzq7Nz29Nzy9Mzy9MTu9OTy9Nzi5Oz6/OT29MTi5Kzi7NTy9KTm7JzW3ITO1Lzq7IzW5HzK1LS+vMTq7Jze7ITW3GTCzGS+zLTS1MzOzLzq9Kzm7Jze5ITW5HTS3FS2vLze5EzCzEyyvEyutJTa5NTu9ITa5FTK1ESirLTm7Mzi5FS6xEy2vESerESmtFSutESmrKyqrAz+/Dw+RAzi3ASutHRydAQCBAAAACH5BAEAAAAALAAAAAAWABYAAAbQQIBQGCgWh8jksCgYEAaCozIZKBgOiIRiwSgEpstCw/HYQiKRhBcMCBgQDodkMaFU0t9pQHCIyy0TFxgYEVF6GQ4LCQkaERscHR4RH3lUIAkWCyEiIyQlHiYjEJVIAQQJJ2gjJSUoKSorlHoCLBQcHC0lLikvHjCGejEiHBgeMjM0NRwPpFQFDBHFNjceHAjAYFWoI7cnCVE4OWxtex8QH1EBOjs4zUpGUjw6Pe3j2fP19u/4zT766vRI+fvHD4CPgwcJ9qg0UB85JA0dDjEQBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-viewmulticolumn22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBFRSVExKTDQyNPz+/Pz69PTq5AQCBOzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARTEMhJq7046813+MJQfUF4BURhHGO6noSBsEcNoDJtS4KcsJQe4ncZ1HYT47HDbDqfUAnJRJmKLIGCCjjJbmE5wBI3EyOFxKCPS1EiJW52dE6vZyIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewtext22:view view22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIkhI+py+0Po2ShBlOxzbP7n2yaJoLm+ZTcxqHuC6hXzML2HVEFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-viewtree22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBFRSVExKTDQyNPz+/Pz69Pzu5PTq5OzaxBQOFOzKpFRWVFxWXOzexPTexCH5BAEAAAAALAAAAAAWABYAAARPEMhJq704g6A779kHCORAgNskFMYhakE8FkjyBcoWv+JwJItXaELYCTFHlCSpZKKcoB5jYHpOGgUadLKbIRw3jhEzQDyCSuI4zW673yhDBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/tkIcons-sample.kde b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/tkIcons-sample.kde
deleted file mode 100644 (file)
index 51f76a0..0000000
+++ /dev/null
@@ -1,658 +0,0 @@
-1downarrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIYhI+py+0PUZi0zmTtypflV0VdRJbm6fgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-1leftarrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAP///wAAACH5BAEAAAAALAAAAAAQABAAAAIdhI+pyxqdwoNGTmgvy9px/IEWBWRkKZ2oWrKu4hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-1rightarrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIdhI+pyxCtwoNHTmpvy3rxnnwQh1mUI52o6rCu6hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-1uparrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIYhI+py+0PWwhxzmetzFpxnnxfRJbmufgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-2downarrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIfhI+pq+EPXYpxUckoO3AjbF3dJwahllXe6AFgC8d+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-2leftarrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAImhI+pyxf5VohmSlsxmpjTzAHeN5ak6UHpqKRi2GpwvH3Q3eT64RcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-2rightarrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAImhI+pq5HOAjQyVnqfhHue7oAaKH5kiW0AmnLqaHomkj02g+e6XwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-2uparrow-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIghI+pyxfR0HsRzNnuXVqn3mVQZWFRyIDjp65Ga5Ly4hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-abs-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBIQChAQCBBQSFCH5BAEAAAAALAAAAAAQABAAAAIwhI95ocn2GlySTiME1iC+DIKdNWxANl4HaqWr055cy6Bs6dahmJsyXVFFJJ7gyF8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-airbrush-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/AQCBPzCxMQCBIQCBPz+/MTCxKSipFxaXDQyNISChAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARUEMhJZxCjanBH3hY2EFJgVt0YcEW7liLxBoVxzPHL2msqUzSeT2c5HBC5jQmROKgAhCgKEVBQo6YAqVQIHBQ93ZbmBWt+nDJRgiYMvmuoThWXT/wRACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-attach-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBPz+/AQCBAAAACH5BAEAAAAALAAAAAAQABAAAAI2hAOCxg2h0nJHyEshi9HpxU1GOCLdZoKpQ15nibUoprKp9lh2oucUxsBRXsJh4Hjs/QTMpr8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-back-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRSdBRObCQ2TBxObISevAQCBNzu/BRGZPz6/FzC3Pz+/HTS5ByyzJze7Mzq9ITC3AQWLAyWvBSavFyuxAwaLAwSHBRafBSOrDzW5AyixCS61ETW3CzG1AQeLAweLAxefBSStEze7CSWtCyatBSCnBRWfAwmPBRWdByixAQSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZiQIBwSCwah4HjUTBQFgkFg3MoKBykU0QhoUAIAuAksbpgNByPxQMSGVsVDYlkIqdUiJYLJqORbDgcHRseRR8gISIaEyMkGCVYRBEmeyAnlgaQkSgpmU4RAZ1OKqFOpFNGfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-blend-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBARCRAQCBASChATCxATCBASCBAAAACH5BAEAAAAALAAAAAAQABAAAANHCLrc/izISauYI5NduvlXMIjEQBSnUYCYxnmsSJrouhqh6J4wLo0mWuqWy5heN58seBrGdEdeMgQsNW0ggXbL7Qog4HDDnwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-bookmark_add-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCwqLLSytLy6vERGRFRWVDQyNKSipAQCBMTGxKyurISChJSSlJyanHR2dIyKjPz+xISGhPz+BGxubMTCBHx+fPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVfICACwWieY1CibCCsrBkMb0zchTEcNYsIiYHiwIOdEAvigdFQGE0Ix4NBbSAgsWjk+jBIAlcUYrJASChnSXZSoUDelKfoKpFALJA61ueGI2IAZmhogGFmCGGAgXsifiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-bookmark_folder-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBExKTBQWFOTi5OTm5CwqLPz+/PTy9Ozu7FRSVNza3PT29KSmpAQ6XARqnNTS1JyenGRiZJTa9Mzq9JzO5MTGxIyOjKSipFxeXMzOzDw+PDy65FTC7HS2zMzm7MzKzKSenASq5Bx+rBSGrFyqzLSytDw6NAR+zBRejBxqnLSyrERCRIyqvDRujKyurMTCvOzq7AQ2VDQ2NNze3KyqrGxqbLS2tLy6vCwuLDw6PAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAawQIAQEBAMh4GjcEAoCAQGYSCpDBwQiQJBEVhQj1YGo1DoNqZTx8PhODAWZUik0ZAkHRNKZe0IWC4RGBkBGhsOHB0eFR97bBdcICEbAA4iIyQlioxrGhEmJ5QoKSoqJCOZiw4rGixEYi0uo6WYDi8wkwAsCTFksLIuMi+tADMLNAsLEBAgLSMpMjW4RCc2MCAgFjA3MA4R0kgzGS84Ny8vDqBKSDkKETUOOurqAQagfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-bookmark-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCwqLLSytLy+vERGRFRWVDQ2NKSmpAQCBKyurMTGxISChJyanHR2dIyKjGxubHRydGRmZIyOjFxeXHx6fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVbICACwWieY1CibCCsrBkMb0zchSEcNYskCtqBBzshFkOGQFk0IRqOxqPBODRHCMhCQKteRc9FI/KQWGOIyFYgkDC+gPR4snCcfRGKOIKIgSMQE31+f4OEYCZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-bookmark_toolbar-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCwqLLSytLy6vERGRFRWVDQ2NKSipAQCBKyqrMTCxKyurISGhJSSlJyanHR2dIyKjGxubIyOjISChHx+fPz+/MTGxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVpICACwWieY1CibCCsrBkMb0zchTEcNYskCsXiwIOdEAzioeFIGE2IB6RBbT5HiAhEIpk6Y9kJBMJoHK6iLIU8kZxFlXhlIp/XJ4BKUIGoWIJ9f3x5e32FeoB5goGAfokTCJEIFJKTlX4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-bottom-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRObCRKZBxCXAwyTKTK3Ozy/NTm9GSivAQWHNzu/FzC3IzO5CySrAQOHAyuzETS3CSWtAyOtETa5Aw2VLze7ByWtBy61BSavAxWdBRCXAwqPAQCBDR+nKTe7FS+1Eze7ByixBRmjPz+/AyexAyixAQKFBRqjAQGDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZhQIBwSCwaj0hAYCkYEJLKguGASEADigWj4bgaHpBINykwSCYRa5HCFFQsF0xGo9lwhpSOwfORYC4gISJ3RAQdIyQYJSAlImNrh4uNJkl5CoKUUBQnjlB4KFAcoqOknkh+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-brace-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBIQChAQCBBQSFCH5BAEAAAAALAAAAAAQABAAAAI2hI9pEXq8mnsNzggsEMJwbHGimFXS4HUfpKUIq3QJ036vuakyWvbjCJLYbL2WgyW5WIw3g78AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-brackets-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBIQChAQCBBQSFCH5BAEAAAAALAAAAAAQABAAAAIzhI8JwXocllMxTlSREGY/2W2iJ1nAEAJklpCfeXAJG8sY6JGowY7jW0sBL0NiqTGBAPwFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-charset-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAInhI+pqxH8kFsvsgtm1vvEaoBZSH6j5FSaRY4me4pyq1ochuf6fvgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-colorize-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPz+BAQCBPz+/MTCxISC/AQChMTC/ERCBPyqXMRaBATCxASChPzerKSipMT+/MQCBATCBASCBARCRISChMT+xDQyNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVnICAGgWieZyCQKGuqZPkGgwyv60gONRDvNlqt9Pv5BgRCYVj8IQ3L4qE4KFiZzRiP90MgEj+FYtGLIRiJQaMxUDjIxFoi8YBAIo3FQjIJ7iAUERNqDTI6PBGJfT0oFVpsMSgzkSh+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-colorpicker-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBARCBDQyNMT+xATCBASCBPz+/FxaXISChAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQ/EMhJZRCjahBIMdlmeV8gBl3xCabWGarBihwBz+eB2O0WHIFEp1f5BU1EilFI4wCZtGWy+JwWj00OynrNTvwRACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-completion-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+/Ly+vHx+fAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM/CLrcGjBKCYK4+NoMs+jWIBIdZ50QuWGgMASD+oGnO5beR+x7UE3AyGKV0wxnpeSxyDoGN74Hszl8QhxYhj8BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-configure-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBISChGRmZMTCxKSipLS2tHx6fPz+/OTm5FxaXOzu7DQyNMzOzAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAReEMhAq7wYBDECKVSGBcbRfcEYauSZXgFCrEEXgDCSeIEyzKSXZoBYVCoJVIqBGByKu0Cy8QHxmgNngWCkGgqsGWFseu6oMApoXHAWhWnKrv0UqeYDe0YO10/6fhJ+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-connect_creating-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBPz+BMTCBISCBAQCBPz+/MTCxMTGxISChFxaXMzGzKSipAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEMhJZbihUiz60FPnfaA0iBpBVGdHEYWxToEoSHBRHHM9AgSEQRcj+AYkYAJxIPKQFUJiOdTJQFIDU6dYzKKFhTCM+E5g4mXaDAyrlogEG+DGTecA7wsP8EcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-connect_established-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/KSipDQyNMTCxMTGxISChFxaXMzGzAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEMhJZxCjgsAtDtUlCOA1gJQ4kl/IDatAoF7xxkS6GgEBr6jAobCyBX42SQBxMOx6A8MhiGASR8YDgrYsNEeJ0zaEGZY7uoH2oB6nOUwtbdLaVOeTUwo/8UcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-connect_no-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBPz+BMTCBAQCBERCBPz+/MTCxMTGxISChFxaXMzGzKSipAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARPEMhJq704axBEHoPUEdhQGMNYFuwxkKInDYjBniEnwMCQIIebSzXx/WwsFK+YMABZikWuYlrUCtZpEYv4WRPaHhb064YB41kCfJFSQBh/BAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-contents2-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBDyKhDSChGSinFSWlEySjCx+fHSqrGSipESOjCR6dKTGxISytIy6vFSalBxydAQeHHyurAxubARmZCR+fBx2dDyKjPz+/MzKzLTS1IyOjAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVkICCOZGmKQXCWqTCoa0oUxnDAZIrsSaEMCxwgwGggHI3E47eA4AKRogQxcy0mFFhgEW3MCoOKBZsdUrhFxSUMyT7P3bAlhcnk4BoHvb4RBuABGHwpJn+BGX1CLAGJKzmKjpF+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-contents-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBExCNGSenHRmVCwqJPTq1GxeTHRqXPz+/DwyJPTq3Ny+lOzexPzy5HRuVFSWlNzClPTexIR2ZOzevPz29AxqbPz6/IR+ZDyKjPTy5IyCZPz27ESOjJySfDSGhPTm1PTizJSKdDSChNzWxMS2nIR6ZKyijNzOrOzWtIx+bLSifNTGrMy6lIx+ZCRWRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaeQEAAQCwWBYJiYEAoGAFIw0E5QCScAIVikUgQqNargtFwdB9KSDhxiEjMiUlgHlB3E48IpdKdLCxzEAQJFxUTblwJGH9zGQgVGhUbbhxdG4wBHQQaCwaTb10emB8EBiAhInp8CSKYIw8kDRSfDiUmJ4xCIxMoKSoRJRMrJyy5uhMtLisTLCQkC8bHGBMj1daARgEjLyN03kPZc09FfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-contexthelp-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQChAQCBAAAACH5BAEAAAAALAAAAAAQABAAAAIzhH+hIeiwVmtOUcjENaxqjVjhByaBSZZVl24Y1V6iEVMzkD4bqD700bshgh1fzwd0IfwFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-crop-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBMT+xATCBASCBISChPz+/AAAACH5BAEAAAAALAAAAAAQABAAAAM0CLrc/iG+FsQgYapKbp7c4IFCZ2FQOQQE6oSl9Koxabrz/eVDDXat3atAlEEMSKFmyfAnAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-decrypted-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaVAQCBKSipDQyNMTCxISChFxaLFxSJExGHEQ+FCQiDBwaDBweDGxiLHxyNHRuPIR+RIyGZJSSfFxaRGxmLJyaXNzWpNTOnMzGnMS+jJSKTGReLKyqjPTu1NzarLSufKyibJySXIyGVGxiNFxaXLSytPT29Ozu7OTi5NTS1KyurGxqVCQeDJSSjLS2tNTW1KSmpGRiLKSebOzuzJSOXExONExGLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaVQIBwOAwYA8SkMCAYOAnKYiFAIAQGyOgVCggYuEovVxztMpdnwAGRSCgUCwOjIeQ6HpCIZDKRUNYMRBUWF4UYGRoWGxyBRR0eHxgaICEiIyR0QyUmJygpKgUrAxMsLUQlKyieoKIuEAunK52fBS8DLiywQySpnjC1Mbi6QjIzNBeSIBY1EQfDQgosLAEUNjY3Co1DfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-down-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRObCRKZBxCXAwyTKTK3Ozy/NTm9GSivAQWHNzu/FzC3IzO5CySrAQOHAyuzETS3CSWtAyOtETa5Aw2VLze7ByWtBy61BSavAxWdBRCXAwqPAQCBDR+nKTe7FS+1Eze7ByixBRmjPz+/AyexAyixAQKFBRqjAQGDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZeQIBwSCwaj0hAYCkYEJLKguGASEADigWj4bgaHpBINykwSCYRa5HCFFQsF0xGo9lwhpSOwfORYC4gISJ3RAQdIyQYJSAlImNrh4uNJkl5CoKUUBQnjlB4KJ6hokN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editclear-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/ISChCH5BAEAAAAALAAAAAAQABAAAAIuhI+pm+EPnwmi2msDoLgLzQWDV4HlSJof6qki+W0n7LKdCpdyrm/Rr2EIhwp/AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editcopy-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAFxaXPwCBNze3GxubERCRPz+/Pz29Pzy5OTe3LS2tAQCBPTq3PTizLyulKyqrOzexLymhLy+vPTy9OzWvLyifMTCxHRydOzSrLyihPz6/OTKpLyabOzu7OTm5MS2nMSqjKSipDQyNJyenLSytOTi5NTS1JyanNTW1JSWlLy6vKyurAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAaUQIBwCAgYj0eAYLkcEJBIZWFaGBie0ICUOnBiowKq4YBIKIbJcGG8YDQUDoHTKGU/HhBFpHrVIiQHbQ8TFAoVBRZeSoEIgxcYhhkSAmZKghcXGht6EhwdDmcRHh4NHxgbmwkcCwIgZwqwsbAhCR0CCiIKWQAOCQkjJAolJrpQShK2wicoxVEJKSMqDiAizLuysiF+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editcut-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/ISChCH5BAEAAAAALAAAAAAQABAAAAIwhI9pwaHrGFRBNDdPlYB3bWHQ1YXPtYln+iCpmqCDp6El7Ylsp6ssR1uYSKuW0V8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-editdelete-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbPT29GxubMzOzDQyNIyKjHRydERCROTi3IyKhPz29Ox6bPzCxPzy7PTm3NS6rIQCBMxCNPTq3PTi1PTezMyynPTm1PTaxOzWvMyulOzGrMymhPTq5OzOtNTKxNTOzNTCtNS+rMSehAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaKQAAgQCwahcihYMkcBAiBpLJApRoOBWgyIKhSEQkFgrBAcr1URiPhKAsDD3QB8RhA3FM0IlLHnyUTVBMSFBUWfl0XGBMTGBcZGodmcQWKjpAbHIgIBY2LHRoempOdjooTGx8giIOPFYofISJ+DyMXI6AfFySyfiUmJSUnKBYcICIpfgELzM3OZX5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-edit-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaVMR+RPzKjNze3AQCBMR6RPzGjPyODPz+/MzOzPyKDPyKBPz29OTWzPyGDPyGBOx6BOza1OR2BKROBNSOXKRKBBwOBOzu7PTWxPzizOySZPyCDFxaXOy2lNRyRMxmJCQOBPTm1OzStPTKrMR+XIRWLFxGNCQSBDQyNIRSNDQuJERGRLyqlNzSvIx6ZKRuVEw6LLSyrLymhKSShBwaFFROTJyWjMS+vNzW1OTazNzKrHRqXOzezOTOpPTq3OzWvOTStLyedMS+rLy2pMSynMSulAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAewgAAAAYSFhoQCA4IBBI2OjgUGBwiLBAmXlpcKkgsMlZcJBA0JDpIPEBGVjwkSBgOnExSfmBIVBxAMExYXswkYGRobHLq8gh2PHhoeHyAWIYKzIiMkJSYnKCnQg5YNHtQqKywtK9qMBC4vMDEBMjIz2dCMDTQ1Njc4OToz5PEEOzw3ZPToMcLHO23HfogQ0QMIkCA+hPBbhAPHECJFjMyYIUQIvEUpUqwQOXKkSEF+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-editpaste-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQiFHRqNIx+LFxSBDw6PKSaRPz+/NTOjKyiZDw+POTe3AQCBIR2HPT23Ly2dIR2FMTCxLS2tCQmJKSipExGLHx+fHR2dJyenJyanJSSlERCRGRmZNTW1ERGRNze3GxubBweHMzOzJSWlIyOjHRydPz29MzKzIyKjPTq3Ly2rLy+vISGhPzy5LymhISChPTizOzWvKyurPTexOzSrDQyNHx6fCwuLGxqbOzKpMSabAQGBMS2nLyulMSidAAAACH5BAEAAAAALAAAAAAQABAAAAa7QIBQGBAMCMMkoMAsGA6IBKFZECoWDEbDgXgYIIRIRDJZMigUMKHCrlgul7KCgcloNJu8fsMpFzoZgRoeHx0fHwsgGyEACiIjIxokhAeVByUmG0snkpIbC5YHF4obBREkJCgon5YmKQsqDAUrqiwsrAcmLSkpLrISLC/CrCYOKTAxvgUywhYvGx+6xzM0vjUSNhdvn7zIMdUMNxw4IByKH8fINDk6DABZWTsbYzw9Li4+7UoAHvD+4X6CAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editshred-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbGxubMzOzPz69DQyNIyKjERCRPz29PT29OTi3IyKhPz27PTu5PTy5Pz6/Pzy7PTq3OzexLyqlPTm1PTizOzavLyqjOzWvOzaxLyifOzizOTOpAQCBOzezAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaEQAAgQCwahcihYMkcBAiBpLJApRoOBWgyIKhWEQkFYYHkeqkMxKFBFpq9jgdkEGlPqwrJhCIY2N8FFRYUFxcYGX9dgRKEGhiHiYEOhBcbGBwdiQEOARcBGwEeAZllAgEUnQEfoQEgmp4hrCKtrwEYsrRlTiMBJAG8syN/IyMAxMXHSH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-edittrash-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBKSipFxaXPz+/MTCxISChDQyNCH5BAEAAAAALAAAAAAQABAAAANQCKrRsZA5EYZ7K5BdugkdlQVCsRHdoGLMRwqw8UWvIKvGwTICQdmGgY7W+92GEJKPdNwBlMYgMlNkSp3QgOxKXAKFWE0UHHlObI3yyFH2JwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-encrypted-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaVAQCBKSipDQyNMTCxISChFxaLFxSJEQ+FExGHCQiDBwaDGxiLHxyNHRuPIR+TIyGZJSSfFxaRFxWJGRiLJyaXNzWpNTOnMzGnLy2hJSKTGReLKyqjPTu1NzarMS+jLSyfKyibJySXIyGVCQeDLSytPT29Ozu7OTi5NTS1KyurJSSjGxqVFxaXLS2tKSebOzuzLSufJSOXExGLGRiTExONAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaTQIBwGCgGhkhkQDBoEpLKQoBACAyOUID1qTVwoQGvMPxNFgVjAxp6QCQUicSCwVgkG44HJCKRRCYUCAxIFRYXhxgZGhYbHINEHR4fGCAhIiMkFSVKJicoKSoFKwMsLZtDLison6GjLA92qCueoAUvpC2xQhWqrLYDErmEMDEXlDIwMxAHukI0NS01EzY2NAmPAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-eraser-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAAT+BMTC/AQCBISC/AQChPzCxPz+/MQCBIQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQ/EMhJZRA120GwnsEgdh8QiqKXnSi5oqNKsbFWGEYrT8Vx4JydpOf7uSrEIkIISPqWtkIS+pH2qCUptgTYavwRACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-exec-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBEQ+PBwaHLy+vMzOzGxqZHx+dKyqnKymnIR+dNTW1MTCxJyOfLySVMSaVMSeVMSebJyWhOSmTOSuVNyubPS+dKSWhHR2dDw+PIyKhNymTNSaTEw+JOy+fPzSnLSyrISChDQyNDw6NMzKzLy2rMyiXGxWLAQCBHRqTPzerNy+lMzGvCwuLAwKDDQyLJyWlNy6jPTGhGxaRGxiRPz2vOTStLy2tFRSTMS+tOzGlPzmtPTixGRiXCwqJLy6tOTWxPTq1MzKxMzOxISCfHRybLS2tHR2bCQmJExORMTCvMTGxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeogACCg4SFhoIBAYeDAogDA4oAjYQCBAEFBgcICQUBCpODAQsMDQ4PEBGWhgUMDxITFBUUFheDGAYZCA0aGxwcHR4QHwwgISILIyQlGiYnJygpKisEIywALS4vMBoxMjM0KTU2LC2ENzg5wDo6Owo8hT0+Lx8/OztAQR9C1oInQz4FMBAp8sEIhgIEMpwYdASJCwAYkihR5OLGkUUAMmTACK8Hx4+C/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-exit-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBDQyNHR2dCH5BAEAAAAALAAAAAAQABAAAAI4hI+pFrHb3nEg1iWiDiINCwYDko0V9XUTda6I1TIsUMpGinyzbB6ZeGuoEr+GUDL4CXqSphPhLwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-fileclose-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCQiJBwaHAQCBDQyNDw6PFxaXFRSVERGRCwqLAwODGRiZHx6fPz+/GxqbAwKDCQmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVaICCOZGmeqBgEwjCkRGEcSKK4JrEcBrMgAdeLVDg0GguGsYEbBQyGYyN6FDoPDIf0+LCKBIgetQERDgGDBGIpNY8GioAU0m6KXFw883w3+/l9f4AkfimGIn4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-filefind-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBCQmJDw+PBQSFAQCBMza3NTm5MTW1HyChOT29Ozq7MTq7Kze5Kzm7Oz6/NTy9Iza5GzGzKzS1Nzy9Nz29Kzq9HTGzHTK1Lza3AwKDLzu9JTi7HTW5GTCzITO1Mzq7Hza5FTK1ESyvHzKzKzW3DQyNDyqtDw6PIzW5HzGzAT+/Dw+RKyurNTOzMTGxMS+tJSGdATCxHRydLSqpLymnLSijBweHERCRNze3Pz69PTy9Oze1OTSxOTGrMSqlLy+vPTu5OzSvMymjNTGvNS+tMy2pMyunMSefAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe4gACCAAECA4OIiAIEBQYHBAKJgwIICQoLDA0IkZIECQ4PCxARCwSSAxITFA8VEBYXGBmJAQYLGhUbHB0eH7KIGRIMEBAgISIjJKaIJQQLFxERIialkieUGigpKRoIBCqJKyyLBwvJAioEyoICLS4v6QQwMQQyLuqLli8zNDU2BCf1lN3AkUPHDh49fAQAAEnGD1MCCALZEaSHkIUMBQS8wWMIkSJGhBzBmFEGgRsBUqpMiSgdAD+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-filenew-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbPz6/GxubNTKxDQyNIyKhHRydERCROTi3PT29Pz29Pzy7PTq3My2pPzu5PTi1NS+rPTq5PTezMyynPTm1Pz69OzWvMyqjPTu5PTm3OzOtOzGrMSehNTCtNS+tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ/QAAgQCwWhUhhQMBkDgKEQFIpKFgLhgMiOl1eC4iEYrtIer+MxsFRRgYe3wLkMWC0qXE5/T6sfiMSExR8Z1YRFRMWF4RwYIcYFhkahH6AGBuRk2YCCBwSFZgdHR6UgB8gkR0hpJsSGCAZoiEiI4QKtyQlFBQeHrVmC8HCw21+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-fileopen-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBOSmZPzSnPzChPzGhPyuZEwyHExOTFROTFxaVFRSTMSGTPT29Ozu7Nze3NTS1MzKzMTGxLy6vLS2tLSytDQyNOTm5OTi5Ly+vKyqrKSmpIyOjLR+RNTW1MzOzJyenGxqZBweHKSinJSWlExKTMTCxKyurGxubBQSFAwKDJyanERCRERGRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaRQIBwGCgGhkhkEWA8HpNPojFJFU6ryitTiw0IBgRBkxsYFAiGtDodDZwPCERCEV8sEk0CI9FoOB4BEBESExQVFgEEBw8PFxcYEBIZGhscCEwdCxAPGA8eHxkUGyAhIkwHEREQqxEZExUjJCVWCBAZJhEmGRUnoygpQioZGxsnxsQrHByzQiJxz3EsLSwWpkJ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-fileprint-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFRKNAQCBPz+/MTCxExKLPTq5Pz29Pz6/OzezPT29PTu7PTy7NzClOzm1PTu5LSabJyanPTm3FxaXOzCjOTKrOzi1OzaxOTSvJyenGRmZLyyTKSipDQyNERCROTi5Hx+fMzKzJSSlIyOjISChLS2tAT+BDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaYQIBwKAwIBMTkMDAYEApIpVBgOCAOg4RRGlAoEAuGIdGITgWOq4LxcCQgZkEkIHksHgYJOR6ZQCgVFhYJFxgTBVMZihoCfxUYDWUbUBGKGREcjBoQEB2TAB4CAx+Vl5WMhyACHiEhH6IfIiMktCQgE0cZJQStr6O2t6EARxO6vK6iEx4dZsMCxbsmBB4nzUTEutVSSUdmfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-filequickprint-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/AQCBPz+/ISChERCBDQyNPz+xPz+BFxaXPwCBMTCxAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARWEMhAq5UYBME7D9kkBMNGjqHmeWBoDhwsEIS7coVx1NhbCrmdzROk9SyU4GEJ2twECISOUNokEopsVrobKCgCrZa73IHFYy4VyZ5WNIO4vBhvse8gfwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-filesave-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBFRSVMTCxKyurPz+/JSWlFRWVJyenKSipJSSlOzu7ISChISGhIyOjHR2dJyanIyKjHx6fMzOzGRiZAQGBFxeXGRmZHRydGxqbAwODOTm5ExOTERGRExKTHx+fGxubNza3Dw+PDQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaAQIAQECgOj0jBgFAoBpBHpaFAbRqRh0F1a30ClAhuNZHwZhViqgFhJizSjIZXQCAoHOKHYw5xRBiAElQTFAoVQgINFBYXGBkZFxYHGRqIDBQbmRwdHgKeH2YgHpmkIR0HAhFeTqSZIhwCFIdIrBsjAgcPXlBERZ4Gu7xCRZVDfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-fill-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/AQCBMT+xASCBMQCBATCBPwCBIQCBISCBAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARSEMhJq50hXBvE0JsUEMXwhYFBmOeVDsVqgpS6luRc32RR6hLCTSCQ/VqEwwDhK5Z+Ao3wEPAViL6BR6PSZKyCa6uLAbcAZEznLDHQ1BZDiOKPAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-filter-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBKSipMTCxISChMTGxAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM3CLrcDiGGt6IQQ7pI8PjSVHUeqFVBNxRfFjXSZYqwENoUNFx4rve+wI6WEwKLQ5/CSCw2lQ9/AgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-find-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQmJDw+PAwODAQCBMza3NTm5MTW1ISChOTy9Mzq7Kze5Kzm7HyChOT29Oz6/Nzy9Lzu7JTW3GTCzERCRLza3NTy9Nz29Mzu9Kzq9Ize7HTGzHzK1AwKDMTq7JTi7HTW5HzGzKzS1IzW5Hza5FTK1ESyvLTa3HTK1GzG1DyqtLzu9IzK1AT+/Dw+RAQGBATCxHRydMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaSQIAQEBAMhkjBUEAoGA4EJXKJSCQUC0ZDCmg0hATHAxKRTCIEYYMiMFYsF0xGs+FUOl0BJRAweCIRHyATIRhpRAEAHSILIyQgJSYhJ4dIBBEoISkmKiuVSQgRIyEsEQgELVNCLgQVCiJRLQSfli9pMAQxMrRcQ1G6tAC9AL+7al+qxALACG1Kw8oxBGt7yWBpfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-finish-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAwyTBRObAw2VDR+nAQCBCRKZOzy/KTe7Pz+/KTK3Nzu/Lze7FS+1AyexAyuzBSavAyOtBSmzOTy/BRqjNTm9IzO5ETS3ETa5By61AyixByixBRmjAQGDBxCXGSivCySrCSWtBTC3AQOHAQWHAxWdEze7AQKFBRCXAwqPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZtQIBwSCwahYGjUjBQGgWE5LCgNBwITSFVKOgKDAZEIqodChSLw4HRcIyTW4Dg0HhAIhGIZEIJxA0VFhcYGRAaGBscHXEeHyAhIQ4iiBwjAHEBJCMjJCUmiSdlRyigU0oolURxRSmrTpevsUN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-flag-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/AQCBMTCxPz+/MQCBPzCxPwCBAAAACH5BAEAAAAALAAAAAAQABAAAAM5CLrcruG9QCULokqKR44NJQykQGgXSRaEcYJLsLLu6wSFoRMvCuk1kO9ni8GMt6MForQMl89NxJ8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-folder_new-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBPz+hPz+BOSmZPzSnPzChFxaXMTCBPyuZPz+xPzGhEwyHExOTPz+/MSGTFROTPT29OTm5KyurDQyNNza3Ozq5Nze3LR+RLy+vJyenMzKzNTS1Ly6vJSWlFRSTMzOzMTGxLS2tKSmpGxubBQSFAwKDKSinJyanIyOjCQiJERCRERGRBweHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaNQIBwSCwaj8ikcokMCIqBaEDoBAQG1meAUDAQpIcBQoy1dg2JdBqhECgQ1IWB0WgcBIOBwIHXBwwPEBEREhIBbG4IExR/DBUVFhIXV2NjDVYYDY8SFU4ZVxpVAQwbGxynGxkdTh6XVh8gGSGzGSITIxokJUImGSMTwLcnKCkprgAqDSt1zCssKxQtQ35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-forward-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAwyTBRObAw2VDR+nCRKZOzy/KTe7Pz+/KTK3Nzu/Lze7FS+1AyexAyuzBSavAyOtBSmzOTy/BRqjNTm9IzO5ETS3ETa5By61AyixByixBRmjAQGDBxCXGSivCySrCSWtBTC3AQOHAQWHAxWdEze7AQKFBRCXAwqPAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZjQIBwSCwahYGjUjBQGgWEpHNYMBCaT4G2UDggos+EwmBYMBpf6VBgYDgeEMgjIpmoAQVKxXLBPDIXGhscRB0eHyAgDSGBGyJFASMiIiMkJYImUwAnmJqbjp4AKCmhAKSlTn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-frac-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBAQGBIQChCH5BAEAAAAALAAAAAAQABAAAAInhA9hig0SAmQOxeouPrFTzHzbCAzmiZ4k2S1ryHKsoo3tptXg3fgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-frameprint-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFRKNAQCBPz+/MTCxExKLPTq5Pz29Pz6/OzezPTy7PT29NzClPTu7PTu5PTm3LSabJyanOzi1FxaXOzCjOTKrOTSvJyenGRmZLyyTKSipDQyNERCROTi5MzKzIyOjLS2tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaPQIBwKAwIBMTkMDAYEApIpVBgOCAOg4RRGlAsEAqFIcGITqnWRcPxSEDMgkhAonA4DO3yMD6BUCoSCYIWEwVTF4gYAhAMFRUMZRlQEYgXERqKGBAQG5IAHAIDHYiUEUcDpwIcHh4doR0fH02zqAIXIASsrqi0TQBHE7e5HqG0Zr8CwSC9qFJHxbRSU7W1fkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-gear-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBISChMTCxDQyNFxaXKSipPz+/CH5BAEAAAAALAAAAAAQABAAAANdCLobwbAFMciLwBFSihBEFHSG8QnmpQQEBX6loI5G5QTlcMgrZSmEmsGxKqRWNV3hMrFlBtDoA1eTEaKHJdMYhR6+gxkF++UMGbiDzvDVioyHAJSHcchuGLQq4k8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-gohome-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBDw6PBQWFCQiJAQCBFxeXMTCxJyanDwyLDQqLFRSVLSytJSSlISChCQmJERGRFRWVGxubKSmpJyenGRmZLy+vOzq7OTi5Ly6vGRiZPTy9Pz6/OTm5ExOTPT29BwaHNza3NS6tJRqRGQqBNy6pIyKjDwGBPTe1JSWlDQyNOTGrNRiBGwmBIRaLNymdLxWBHxGFNySXCwqLKyqrNR6LKxGBNTS1NTW1Jw+BEweDDQ2NAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaoQIBwCAgIiEjAgAAoGA6I5DBBUBgWjIZDqnwYGgVIoTGQQgyRiGRCgZCR1nTFcsFkHm9hBp2paDYbHAsZHW9eERkYGh4eGx4ag3gfSgMTIBshIiMkGyAlCCZTEpciJyQjGxcoKUQBEhcbIiorLB4XEltDrhcaLS4vtbcJra8bMDHAGrcyrTMXHjA0NSypEsO6EzY3IzU4OdoTzK0BCAkDMgkIOjJlAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-goto-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBEQCBAAAACH5BAEAAAAALAAAAAAQABAAAAIohI8RyKciVnMwTlrlDfkm5QFgaHBWMo0lp22dZ57wO8vpGrLk2iJ+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-help-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQ6XAQCBCyCvARSjAQ+ZGSm1ARCbEyWzESOxIy63ARalAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQ/EEgQqhUz00GEJx2WFUY3BZw5HYh4cu6mSkEy06B72LHkiYFST0NRLIaa4I0oQyZhTKInSq2eAlaaMAuYEv0RACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-history-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBEQ2LEw6POTSrOzWtNS2lAQCBOzatPTm3PTq3MyyjEw+NOzm1Pz29Pz+/Pz6/Pz27FRGPFxKRPTu3Pzy7Pz69Pz67KSGbPzy3Pzu3PTizPzu1Pzq1PTmzOzaxPTixPTmxOzWvOTOtKyWdOTGpOTStNS+nIRmVLymhNzCnOzavLyefAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaHQIBwGCgOj0jBgFAwGJDJAyJBUDihwgWj4XhAqhEJNDKhVLwUSUDyPJIrlgYlLSG0hYELhgLJTBJOd1kaGxgYHB0egkQfHBwgHyEigkUBIwMkBwcEJSZ3ARYWJCcnKCYpJJ5HAQUqFhSjJysoKItOCgehJBISI4tCtyERa79HTrx2WEiBUH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-idea-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+BPzerPz+xPyqXPz+/ISChFxaXKSipDQyNAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARMEEgZap14BjG6CJkmEMVQCF+4mQPBpthWtuYJxkJJGK6dbQRCgMBB3XCDzQamMhpDGlvuCFUyoQDLBUsJHBDUKuKQCKsUCIVZtc34IwAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-int-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBIQChAQCBAwODAQGBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMwCKqx/iw0CNukzuJ8d1yCAAziIyliCKjck1ZuaV4igZ1r+raongE4j8YT6QiJC38CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-locationbar_erase-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/AAAACH5BAEAAAAALAAAAAAQABAAAAIshI+py40Bo1SywgSFiDq+oG3hZHDhVpUmagFrl7pgN3oqPNuqpe+8Awwi/AUAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-lock-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaVAQCBKSipDQyNMTCxISChFxaLFxSJEQ+FExGHCQiDBwaDGxiLHxyNHRuPIR+TIyGZJSSfFxaRFxWJGRiLJyaXNzWpNTOnMzGnLy2hJSKTGReLKyqjPTu1NzarMS+jLSyfKyibJySXIyGVCQeDLSytPT29Ozu7OTi5NTS1KyurJSSjGxqVFxaXLS2tKSebOzuzLSufJSOXExGLGRiTExONAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaTQIBwGCgGhkhkQDBoEpLKQoBACAyOUID1qTVwoQGvMPxNFgVjAxp6QCQUicSCwVgkG44HJCKRRCYUCAxIFRYXhxgZGhYbHINEHR4fGCAhIiMkFSVKJicoKSoFKwMsLZtDLison6GjLA92qCueoAUvpC2xQhWqrLYDErmEMDEXlDIwMxAHukI0NS01EzY2NAmPAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-lsub-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBIQChAAAACH5BAEAAAAALAAAAAAQABAAAAImhI+pFu2+QpxKVppsxkh3fnhh9DyGcC6IwLbqir4HK58tLcfx6xcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-lsup-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBIQChAQCBAAAACH5BAEAAAAALAAAAAAQABAAAAIlhI95YawYonwp0uoukFO7rCXCSJKPcKYKuqqii7BvS892XJZ+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-mail_forward-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRydHxubHxmZGxiXHRmZFxOTFxGPFxKTPwCBLymlMy+pOze3PTq3PTu5Pzy7LSmnOTaxOzm5LyqlNzOtPz69Pz27MzCtLyqrPT27IRubPzuzNTGvNTCxLSelPz25Bw+ZFxKPPzy1Pz65LyupBxKdCxWfPTm1Pz23LyinBxGbGzO5DRafBxWfBxajCymxHTS5BxSdBxKbFTK3EzG1CSGvCyKvCSSxCSavGTO5GRaVPzqzFzK5EzG3BSCtAwiPGxaVPTivPzy3NzKpBxObCRefBxqlPTmzJR2bKyahAwyRPzmvOTOpKyObNS+nPz21AQOFKyOfPzuxAQCBGRORLSadPzyzLymjMy2lOzetDwuJFRCPEw6NEQ6LEQyLEQ6NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAQABAAAAfhgAABAgIDBAQFBgcIBwmOCQIKCwwNDg8OEBESjY8CDBMUFRYVFxgZDJyOGhsPChwVHR4fFSAhjwkaIiMOJBQQDRUVJSa3GicoHw4pEA8SGSorLI8tLtQu19gqLzDECTEyMzQ14zY1Njc3ODkqCTo7MjIxNCs5PD03PjctPwlAQUIihhBpQbCIihtG+CUocASFkAhIkogQ8kFJwkcFlogIkoRJEydPnkBR6GiAxiQLgiiIIkXElFQJqESoMsRKkAhXqkhhApNKFSxZggTJ4nHIEJhaDhzYwoVLFy1avHyB6ScQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-mail_generic-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBGxaVOTe1Oze3OTWxOTWvNzStNzKpEQ6LOTezPz+/Pzy7Pz69Pz27Pz25Pz21PzuzPzuxEQyLLyinLSmnPz67Pz23LSafKyObDwuJMzCtLSelPzy1My6nLymjNTCxLyqnPzq1LyihKyOfOzavOzetEQ6NPTq3NzOtLymnNTGxJR2bOTOpPTivNTGvLymlKSShKyahEw+NOTe3PTm1Pzu1Pzy3FRCPPz65LSadFxGPOzm3PzqzPTmzPzmvEw6NCH5BAEAAAAALAAAAAAQABAAAAaqQIBwSCwaj8ikMhloOp/QpmAgqAoIhELBUDgcEIGEYrFgNBoLx+IBiRwkgQnFoWAwKhWLhX3BZAILGhsCDXgODhwdGB5vgAofICBlDiEiIx4kJSYBJ2UoEykqHSMrLC0nLWAnFS4UCycvMAcEMR0RLTIBMwaSahw0NTYtFwclNwEdLws4eoc2DxwQOR06ASk7PBAhIRE9Pj0tLSUY1T8I5gjn6Qgy7D8SfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mail_get-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAxKdBRSfCyGvFSm1BxKfCSWzCyWzBRCXCRKfBwuRAQGDDw6PHy23Cym1CSSxByCxBxunBQSFKyurMTCxExihNza3NTW1JSSlMzKzFxaXLS2tNze3KSipCQmJGxmbNTS1KSepLy2vISGhJSWlHx+fERGRPz6/IyKjDw+POzq7JyenMzOzKSmpCwuLDQyNIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaeQIBwGBAIAsOkUjAgFJRQQMHgjC4PBIEVgAh4D4aEYrGAMhINxwPyiCgYSsmEUmk82grLRZJkYCgXaAEKFxYZcEISGhsZFxwFeY0WHR5CDB8dGCAXG5shGxQicBIMpSMUGxgTGSQlpQwSJicnEwwdI7gdKAwTsykpKiobr8QMKxeHDBcsGRvOzxsT0i0uL9HSHdkT2ZkoMJXF4a8AfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mail_replyall-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRubHxubHxqbHxmZGxeXHRmZGROTFRCPFxKTFxGPPwCBLymlMy6pOTa1PTq3PTu5Pz27Dw+POzi3PTm1OTWvPz25FRSVERCRLympPzuzPTu7NTGvFxaXKSmpPzu1Pz65Hx6fHxqZPzq1Pz23HR2dBw+ZHx+fISChJSWlDQmJHRydCxWfBxGbJyenExKTHRiXPzqzPzy3CQmJDRafGTO5ExOTERKTGxWVCRSfHTS5CymxBxajBxWfPTmvPzy1CyixCSaxCySxDSaxDSWxDSSvDyaxGS21PTmzPz21AwiPBRejCSavByGtCSezEzG3FzK5FzG3GzO5FTK3CQ2bPTixBxqlCRefBxSdBxSfBx2nCQ+dHxmXPzmvLSafAwmRAwyRPzyzDw6POzavNzKpAQOFPzuxBwWTBw2ZGRORLyWdMy2lOzetPTivAQCBKyObOTOpAweNBwWVEQyLEw2LEQ2LDwuJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAf4gAABAgMEBQUGBwgJCguOCwEMDQ4PEBESDA4TjY8DFAwVERYXGBkRm4+QGhsMHB0eGB8bDpyOARogEBceIRgXv8COIiMkGB4lJSYnIcwoKb/DGyoXKywtKS4pHinMLzAxJDIzNDUtNjcv6B0hLzgfMh85OjstPDw99zwd7T4/LTVAgggZQqSIECNHevSAgSSJkiVMmjh5AiWKlClAiFARUeVHFSVWmLS40gNLlh5agGzh0kWDlwZfrIDREKaCAjEqrFA5MMYLmTAxlJTxYoZMozNozqRRs4ZNmy5s3LwhA0dBnDNn5MxBoAABnTp17IitowDrmQV+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mail_reply-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRubHxubHxqbHxmZGxeXHRmZGROTEw+NFxKTFxGPPwCBLymnMy6pOTa1PTm1Pzy7LymlOzi3HxqZOTWvPz69Pz25My+tLympFRGRHxuZPzu1LymjNTGvNTCxBw+ZPz23PzuzPz65PTu5NzOtCxWfBxKbPzq1DRafGTO5BxGbPzy9HTS5CymxBxajHRiXPzqzCyixCSaxCySxDSaxDSSvGS21GxWVAwmRBRejCSavByGtCSezEzG3FzK5FzG3CQ2bPzuxAwiPBxqlBxKdCRefBxWfBxSdBxSfBx2nCQ+dPzy1CRqlAwyRDQmJPTmvPTixLSafOTOpAQOFPz21BwWTBw2ZPzmvNS6nPTivAQCBAweNBwWVNzKpPzyzLyihGRORLyWdMy2lOzetKyObEQyLEw6NEw2LDwuJEQ2LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAfqgAABAgMEBQUGBwgJCguOCwEMDQ4PEJYRDhKNjxMPDBQVFhAXGBUSGY8LGhsQHB0VHh8gFQ6bjgEhIiMMJCUmFbS2CwMnG6IoKSorI7WpEycWFiUsLSou1yXXji8wFiopMTIzNDUz4zbZNxsbODk6Ozw9Pj8pPzEzQDdB60JDOkRFjBw5giRJDCWdlmxwIIRJExAWKDRyMgTIiydLoESRImQKlSUSF1SxUoXAlSBRsGSJoCVICIlbqlThcoBClC5eYFD4EiVIFwUyqywAE0ZMlqNjpJDpIkUBl0dlFChAYOZMmTJoyqQR5icQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-mail_send-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRubHxubHxqbHxmZGxeXHRmZGROTFRCPFxKTFxGPPwCBHxqZLyqlMy6pOze3PTq3PTu5Pz27Pzy7LyinOTaxOzi3Ozq3LymlOTOtPz69Pzy5My+tLympPzqzNTGvLSelPzy3BxGbBQ6VPzuzPz65LyupNzOtPz+/GzO5BRejPzq1Pz23LymjHTS5CyixCSavBxqlPz25LymnGTO5CymxCSaxByGtHRiXPzy1CySxCSezGxWVPzuxKyOhMy6nDSaxEzG3PTivNzKpKyOfPzu1FzK5PTmzJR2ZLyihLSWfKyObOzmzPzmvDyaxOzavLSafGRORMy2lOzetDwuJEw6NEw2LEQyLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAfUgAABAgMEBQUGBwgJCguOCwwNDg8QERITFBUWjY8DFxgZGhsaHB0aD5yODB4TGB+kICEaIiOPCwEkJRcmJyYPKCIpKrWqKywTmC0SIi4vMDHEDCsyMg8zEyI0NTY3z7U4Hhs5Mx+0IyI6OyPrIzw9Gys+PxIy2EBBxAs8Qjk5Q0RFWFxAZySfgSMsilRAkiRECHQ08hHgJ0TJkCU/mECU2ISEkowUlpAQ4QTfowNPoAzJIeRJCyjm8kVRIkWIzSkXhwxJtYAKgp9VrFi5QoWKFZ5+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-matrix-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBIQChCH5BAEAAAAALAAAAAAQABAAAAIrhI9pwQHt4Jru2Vsjna919lXKeEimh6UZp1lrCEvkfILyirOby3q1OEv4CwAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-misc-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBISChMTCxDQyNFxaXKSipPz+/CH5BAEAAAAALAAAAAAQABAAAANdCLobwbAFMciLwBFSihBEFHSG8QnmpQQEBX6loI5G5QTlcMgrZSmEmsGxKqRWNV3hMrFlBtDoA1eTEaKHJdMYhR6+gxkF++UMGbiDzvDVioyHAJSHcchuGLQq4k8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-move-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAImhA8RyKja2HtRrmrxNfDszm3JMpXmiULg6Hyto4kYO49Tfdc04xcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-news_subscribe-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/ERCBDQyNAQCBPz+/FxaXIQCBMQCBKSipMTCxATCBMT+xISChASCBAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARsEEgZxLxYDlJsvsJGDN0nFQRhpKR3DSJxrGMphYQgpDI9WLhdTtjjAFApXZI30m2UQwICVigcEzzolKAYIAIFBAKbQjQX3YGGISZvFtzFQr1uDxT4PH0yYE8FCg0/Jn0MAwsNOiY3IQMBEn4RACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-news_unsubscribe-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/ERCBDQyNAQCBPz+/FxaXIQCBMQCBMTCxPzCxKSipAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARiEEgZxLxYDlJsvsJGDN0nFQRhpKR3DSJxrGMphYQgpDI9WLhdTtjjAFApXZI30m2UwxjsiOApB4kNLFtQKKopxeCQxR4GAJIXPCInzmhN9zvCljNq8ZvswmzhZHEfOhpofhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-next-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBFwyXAQCBOze9BwCHNx21LQCvPSi5NRi7AAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQ3EMhJqwUhAMG7DQOxdVwFFuI1nYZIethwIK0aFwjtwrfh15cAYUjcvWyvkm1Z4TGfkyN0avFHAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-ok-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBMT+xATCBASCBARCBAQCBEQCBAAAACH5BAEAAAAALAAAAAAQABAAAAM2CLrc/itAF8RkdVyVye4FpzUgJwijORCGUhDDOZbLG6Nd2xjwibIQ2y80sRGIl4IBuWk6Af4EACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-openterm-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXFRSVPz+/PT29OTm5OTi5DQyNDw+PERGRExKTHx+fISChIyKjHRydFxeXDQ2NCQmJBQSFAQCBERCRMTGxHR2dGRiZExOTDw6PCQiJAwODCwuLFRWVOzu7BweHAwKDCwqLHx6fBQWFGxqbGRmZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAanQIBwSCwKAwKkMslEAgSDqDRKqBYKhkNgcDggEorkMrDQchkNhuOhgEQkk0l5S2lUGpYLJqPZTAwMHB0DCmhqAW0Rfh5zAxgOkBcCFAcfIBMECxwBBAEPFw8dChkhcBMDDAcdnQqtFKSWcQMimx4dGRkQBxGxsg6bBQEawx8jl3GnJFoFHRNXVVNRJYIFDAsL1tgiDiQXFx0HABwcXeQH5OjkRutEfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-paintbrush-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBMTC/AQChPz+/MTCxKSipDQyNCH5BAEAAAAALAAAAAAQABAAAAM7CLrMIS2qN2Sj1U4xugaYZxFE1wUaURQnKpFBYQTuFRiyXDsCd8y7RYhmCQ2IkiHywmkFN84ibfrxJwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-paren-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBIQChAQCBBQSFCH5BAEAAAAALAAAAAAQABAAAAI3hI+JEQq8mnvyzSOhEWJ3CgLcOILV4IlfUx1cwirfYiEvXL83arANSer5UipM5tIzXjRCh8ZfAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-pencil-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/IQCBMQCBPzCxAQCBPz+/MTCxISChDQyNKSipEQCBAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARDEMhJZRBD1H2z3lMnjKCFjUJQimOgcmcbELCXzjXq0hV785WCQYcDFQjDXeloMByKG6YTAdwIDAlqSZJSVFeKLcUfAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-player_eject-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+py+0R3IFQUtruXVqn3kkWyIARR4rqKvoFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-player_end-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIjhI+py8Eb3ENRggrxjRnrVIWcIoYd91FaenysMU6wTNeLXwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-player_pause-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIfhI+py+1vgoxzyUCxrZd18ClfmIyVyJ1lqkHuC0N+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-player_start-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIjhI+pyxudwlNyguqkqRZh3h0gl43hpoElqlHt9UKw7NG27BcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-player_stop-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+py+1vgpySUWpvXXqrHmSaeJEYhKYq6hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-previous-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBFwyXOzC7PTq9OTK7IQyhBwCHNRi7LQCzPSi5IQ6jLwKzORy7AAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQ8EMhJKwg4W5o1EGAIbt8wEERhHJ0mIEmiLAH5IYxi1JcnvTOeTdDYcVo1gfHY+hxs0IkvSpV2qtgswB8BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-prod-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBIQChCH5BAEAAAAALAAAAAAQABAAAAIihI+py50Bo4SKHlsDwk9fn21gJzIcV37miKpuZ0nOTBt+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-queue-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBMTC/Pz+/CH5BAEAAAAALAAAAAAQABAAAAI5hI+pFrEahGgPtCinS2GMlknU0Xkflm2l6YEiw8aRGssTXLe3lZsznvuRViwholEcLZCfynGT8BcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-redo-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBxOHBxSHBRGHKzCtNzu3MTSzBQ2FLzSxIzCjCSKFCyeHDzCLAxGHAwuFDSCNBxKLES+NHSmfBQ6FBxWJAQaDAQWFAw+HDSyLJzOnISyjMTexAQOBAwmDAw+FMzizAQODDymNKzWrAQKDAwaDEy6TFTGTFSyXDyKTAQCBAwiFBQyHAwSFAwmHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ2QIBwSCwaj0hAICBICgcDQsEgaB4PiIRiW0AEiE3sdsFgcK2CBsCheEAcjgYjoigwJRM2pUK0XDAKGRobDRwKHUcegAsfExUdIEcVCgshImojfEUkCiUmJygHACkqHEQpqKkpogAgK5FOQywtprFDKRwptrZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-reload-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCRaJBxWJBxOHBRGBCxeLLTatCSKFCymJBQ6BAwmBNzu3AQCBAQOBCRSJKzWrGy+ZDy+NBxSHFSmTBxWHLTWtCyaHCSSFCx6PETKNBQ+FBwaHCRKJMTixLy6vExOTKyqrFxaXDQyNDw+PBQSFHx6fCwuLJyenDQ2NISChLSytJSSlFxeXAwODCQmJBweHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaBQIBQGBAMBALCcCksGA4IQkJBUDIDC6gVwGhshY5HlMn9DiCRL1MyYE8iiapaSKlALBdMRiPckDkdeXt9HgxkGhWDXB4fH4ZMGnxcICEiI45kQiQkDCUmJZskmUIiJyiPQgyoQwwpH35LqqgMKiEjq5obqh8rLCMtowAkLqovuH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-remove-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/PwCBMQCBEQCBIQCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMuCLrc/hCGFyYLQjQsquLDQ2ScEEJjZkYfyQKlJa2j7AQnMM7NfucLze1FLD78CQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-revert-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAAQCBPwCBPz+/PTizCQeHDQyNBweHAQGBAwKBDQ2NPzu5PTi3ERGRCQiJHR2dPTi1CwqLPz6/Mya/Mxm/GQCzFRWVGRmZAwODFxeXExOTExKTERCRBQWFMTCxKSipMzKzCH5BAEAAAEALAAAAAAQABAAAAV9ICCOQWkGIiqsQloCKCqy7UC8MC4URSsMhsDBNWOJEK4TYJfoGU8vmmJBGI5SyyYj0XDQjMvVQwBxRCQTilowFGwrjG5kTo+0x4OdpcLvV0YXIhcGGH0ZFRobOSccfB2PHR4FiyYAGQwdAI8eEAdQKBsZmR+RBpSVVyMHfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-rotate_ccw-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBFxaXIQChEQCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM0CLrcHjA6JcK4ET68MrNDoIgjOYbdJ4IXagIa3IqVFAMEOqpfn067ErBxG0qGsCJyyQT4EwAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-rotate_cw-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBIQChFxaXEQCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMzCLrcHjA6FaG4YbS6At5BR31UKI4mADGhd31rpbmCuZ6qQLA8XvqT2+QhHLKKxqSy4U8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-rotate-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBFxaXIQChEQCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM0CLrcHjA6JcK4ET68MrNDoIgjOYbdJ4IXagIa3IqVFAMEOqpfn067ErBxG0qGsCJyyQT4EwAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-rsub-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBIQChAAAACH5BAEAAAAALAAAAAAQABAAAAInhI8Jwd26YJBUTVvT1Rlt3x2f6DjQeQiGigLCC7crK7+yC9sty/oFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-rsup-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBIQChAQCBAAAACH5BAEAAAAALAAAAAAQABAAAAImhI+pGtZ7gpwQyWofnnQ7I4SiuAjlqZgpmqgti7gxfMh1OY6LXwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-run-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/ISChKSipMTCxLS2tLy+vMzOzMTGxNTS1AAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARlEMgJQqDYyiDGrR8oWJxnCcQXDMU4GEYqFN4UEHB+FEhtv7EBIYEohkjBkwJBqggEMB+ncHhaBsDUZmbAXq67EecQ02x2CMWzkAs504gCO3qcDZjkl11FMJVIN0cqHSpuGYYSfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-signature-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAFxaXPwCBAQCBDQyNPz+/KSipERCBAQChISCBMTCBPz+xMTC/AQC/MTCxPzerAAAACH5BAEAAAEALAAAAAAQABAAAARwEMhJZwgCiM17DoMkEGRpAmGhmSxhAOrakim6DgeLJApRhCPCgJRT8AhGEVFIQigAxgSQsBgwms8oIrDKDZNGxJY7GuYQULHhQj4shAmAuNAQsFc9xY4uUNgvMiQOBIMOfncjeUhICocXAx6RfwF+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-spellcheck-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/AQCBPzCxPwCBMQCBIQCBAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM7CLrcGuHBNZ+NIOJ9O4MTaH2e1nDoiFYZJjgwIAzwy8yEgy84RhWDQa4HCwAHxJgxSPApC83YyQnwJwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-sqrt-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBIQChAQCBAwODAQGBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMyCLrcDiHK6eIL9WmsmwWCAAyiwkGKGILihzLq8p1s9onE9a48Iy28ko/WgRCLyGTDnwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-stamp-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+xMTCBISCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANCCLrR+zAIMQKMguh6GR2g1QEBCBLiGGjo+DSpS3IqXNqxNAnwzisSk3BowRltM8IAZVMqi84lLNoqUVfLrOhoVPgTACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-start-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRSdBRObCQ2TAQCBBxObISevNzu/BRGZPz6/FzC3Pz+/HTS5ByyzJze7Mzq9ITC3AQWLAyWvBSavFyuxAwaLAQSHBRWfBSOrDzW5AyixCS61ETW3CzG1AQeLAweLAxefBSStEze7CSWtCyatBSCnAwmPBRWdByixAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZrQIBwSCwah4HjUTBQEogFw/M4BQgMh2pxijAkFAhBYJwUPq8LRsPxWDwgkSHhelA0JJIJnlKRWy4YGRoSGxwcHRsecgAfICEiGhMjJBglVVMRgBkgJp0El0MRJyhaRFqipUoAFqmqrapHfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-stop-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/Gw6NGQuLHQ6NGQmJFweHFQaFPTm5PTa3PTW1Oy+vOS6tNSinKReVDQWFPz+/Nx6fNyCfNyGhNR+dMxybMRiXLxGRIwWFNx2dNx+fNx2bMxuZLQWFBwWFPTu7Pzy9NRqZNRuZMRSVLwmJGwWFNR2dMQiHPTKxMxmXMQyLMxmZNx6dMxiXMRSRMRaVKxybMxaVEQWFMQuJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaaQIAQEBAMCAWDYcgkHhAJxYLRcDQBggckIplQKpaLdRh4YDIaSWa94Vw6woAHgv6AMKGPaMQhwQMJJRkfhHmEJhdvRCcgGSCEkCgpbnAECiorGYYfLCItlAAFCygQj5AfbYlwBQwVE5AukG6KBi8tMC0fLi0pHxyzcAAxFxwmMny/wEwOxMm/qlcdJCSJ1H5XQh3a28HY3kx+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-sum-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBIQChCH5BAEAAAAALAAAAAAQABAAAAIdhI+py60BowyPJriwQ3qb7oGNyJCZtZHixHpu4xcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text_block-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+py40Bo5SOzRvrwlgrfnkJOIkPaaaJXwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text_bold-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIihI+py70BowPQ1HZpwNv212Vg9IGHmIjoWa4ey5DSRNd+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-text-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIlhI8Jwe2/AmpTynqPTXSqrnBM+I0kdmpmGmUp+K4nPMvhYx9+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-text_italic-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+py+0BgztwUmmjBXX3jE0auHHhM5Yq4xcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text_under-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIjhI+pu+FxXoOIKpds1oBH7hlYxYxRCaIZ01lhJbHy9tTv7BcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-toggle_log-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBATCxMTCBPz+xPz+/ERCBASChISCBARCRAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEIQJqpXBBjFI1oGncYU4EUXxSWQZlum6DXDQpeo0tR6KqqgdLXiLBWepHgyYIxF/TKHv9XvtDDfb0So5YHuTgThYCXgH4Q6hqvEGEIm4PLGSyHX4OkZv8UcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-top-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBBRObAQSHBRSdISevBRWfAweLNzu/BSOrAQWLPz6/FzC3DzW5BxObHTS5ByyzAyixEze7BSStBRWdAyWvByixCQ2TBRGZJze7CS61BSavAxefMzq9ETW3CSWtAwmPPz+/CzG1ITC3FyuxBSCnAQeLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZjQIBwSCwSA8ik0kgUDJhGQsFwgA4FBUTCoLBiF4zGtmt0FBYPSEQyoZCvWQakUok0LISnkHBBYjIVGhscS0UGHRUeHyBWAAIhiYuNAggVIgmMVgYjJBolAZMKJgpIjaanRH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-transform-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBMTCBPz+/Pz+xFxaXAQChAAAACH5BAEAAAAALAAAAAAQABAAAANOCLrcEDAGt4K4F46wmcVCQIzE4F1DukksehVkiUlDYcdfCAyEGI+D2aP3G+UmPF/MAJpwnpuNgMmcKHKgabWSvRi+ums3a32wzmWKw58AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-undo-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBxSHBxOHMTSzNzu3KzCtBRGHCSKFIzCjLzSxBQ2FAxGHDzCLCyeHBQ+FHSmfAwuFBxKLDSCNMzizISyjJzOnDSyLAw+FAQSDAQeDBxWJAwmDAQOBKzWrDymNAQaDAQODAwaDDyKTFSyXFTGTEy6TAQCBAQKDAwiFBQyHAwSFAwmHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ1QIBwSCwaj0hiQCBICpcDQsFgGAaIguhhi0gohIsrQEDYMhiNrRfgeAQC5fMCAolIDhD2hFI5WC4YRBkaBxsOE2l/RxsHHA4dHmkfRyAbIQ4iIyQlB5NFGCAACiakpSZEJyinTgAcKSesACorgU4mJ6uxR35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-unlock-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaVAQCBKSipDQyNMTCxISChFxaLFxSJExGHEQ+FCQiDBwaDBweDGxiLHxyNHRuPIR+RIyGZJSSfFxaRGxmLJyaXNzWpNTOnMzGnMS+jJSKTGReLKyqjPTu1NzarLSufKyibJySXIyGVGxiNFxaXLSytPT29Ozu7OTi5NTS1KyurGxqVCQeDJSSjLS2tNTW1KSmpGRiLKSebOzuzJSOXExONExGLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaVQIBwOAwYA8SkMCAYOAnKYiFAIAQGyOgVCggYuEovVxztMpdnwAGRSCgUCwOjIeQ6HpCIZDKRUNYMRBUWF4UYGRoWGxyBRR0eHxgaICEiIyR0QyUmJygpKgUrAxMsLUQlKyieoKIuEAunK52fBS8DLiywQySpnjC1Mbi6QjIzNBeSIBY1EQfDQgosLAEUNjY3Co1DfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-up-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRObAwSHBRSdISevBRWfAweLNzu/BSOrAQWLPz6/FzC3DzW5BxObHTS5ByyzAyixEze7BSStBRWdAyWvByixAQSHCQ2TAQCBBRGZJze7CS61BSavAxefMzq9ETW3CSWtAwmPPz+/CzG1ITC3FyuxBSCnAQeLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZfQIBwSCwaj8hhQJAkDggFQxMQIBwQhUSyqlgwsFpjg6BwPCARySSstC4eFAqEURlYhoMLBpPRUDYcHXt7RgUeFB8gIU0BIoiKjAcUIwiLSQUkJRsmGIwJJwmEU6OkfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-view_choose-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMzCLrcGlAs6UAYgwLdLtEcI4ygQo7VVp2oupGpG4vmaUVTemX523qlFcw0a4RqNlkx5k8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-view_detailed-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMmCLrc/i1IAVkYg1Z1iRYUKCqitp1oikqBWV3ZOnhkWNagqu+qnwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-view_icon-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMwCLrcG1AwGOQbw6qANeCEB3pCSZpO6pgowJZqLKuUGE0dnuEhf8IL1kz1shSHDX8CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-viewmag--16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQmJDw+PAwODAQCBMza3NTm5MTW1HyChOTy9Mzq7Kze5Kzm7OT29Oz6/Nzy9Lzu7JTW3GTCzLza3NTy9Nz29Ize7HTGzHzK1AwKDMTq7Kzq9JTi7HTW5HzGzMzu9KzS1IzW5Iza5FTK1ESyvLTa3HTK1GzGzGzG1DyqtIzK1AT+/AQGBATCxHRydMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ+QIAQEBAMhkikgFAwHAiC5FCASCQUCwYiKiU0HA9IRAIhSAcTSuXBsFwwk0wyYNBANpyOxPMxIzMgCyEiHSMkGCV+SAQQJicoJCllUgBUECEeKhAIBCuUSxMKIFArBIpJBCxmLQQuL6eUAFCusJSzr7Kmpl0CtLGLvbW2Zn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-viewmag-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQmJDw+PAwODAQCBMza3NTm5MTW1HyChOTy9Mzq7Kze5Kzm7OT29Oz6/Nzy9Lzu7JTW3GTCzLza3NTy9Nz29Ize7HTGzHzK1AwKDMTq7Kzq9JTi7HTW5HzGzMzu9KzS1IzW5Iza5FTK1ESyvLTa3HTK1GzGzGzG1DyqtIzK1AT+/AQGBATCxHRydMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ8QIAQEBAMhkikgFAwHAiC5FCASCQUCwYiKiU0HA9IRAIhSAcTSuXBsFwwk0wyYNBANpyOxPMxIzMgCyEiHSMkGCV+SAQQJicoJCllUgBUECEeKhAIBCuUSxMKIFArBIpJBCxmLQQuL6eUAFCusJSzr7GLArS5Q7O1tmZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-viewmag+-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQmJDw+PAwODAQCBMza3NTm5MTW1HyChOTy9Mzq7Kze5Kzm7OT29Oz6/Nzy9Lzu7JTW3GTCzLza3NTy9Nz29Ize7HTGzHzK1AwKDMTq7Kzq9JTi7HTW5HzGzMzu9KzS1IzW5Iza5FTK1ESyvLTa3HTK1GzGzGzG1DyqtIzK1AT+/AQGBATCxHRydMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaBQIAQEBAMhkikgFAwHAiC5FCASCQUCwYiKiU0HA9IRAIhSAcTSuXBsFwwk0wyYNBANpyOxPMxIzMgCyEiHSMkGCV+SAQQJicoJCllUgBUECEeKhAIBCuUSxMKIFArBIpJBCxmLQQuL6cAsLECrqeys7WxpqZdtK9Ct8C0fsHAZn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-view_multicolumn-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMwCLrc/ixI0WSgKoyBl+beQFACpo1AqXbKCr1wLAMWS08hGG3dSZqin4sxnBmPD38CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-view_text-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIchI+py40BTQSwuovp3DXkv1ia1IHmIXLiyWJ+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-view_tree-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBDQyNPz+/PzerAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAMuCLHcri4yGISlj4kxcANgNRBQCIbL6U1Su7bB62rXvGydG25kqpwfIGxILBr9CQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-window_fullscreen-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAASC/AQCBNTW1MzOzMTGxLy6vKyurJyenHR2dOTm5Pz+/IQCBOTm1Pz+9Pz+7Pz+5OTmzOTmxOTm3Pz+3OTmvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVuICCOZAkEaKquqzAQRWEYR32gSK7vO5oowKAQmPAtjkPFccEwLoaNhuPYDCSeT2B0+lhAfMHF1kF+PL5W7ZhrjqAk4gW53J0s3AG4nP6Y2BcUKAxLZn1+S4EBDAwQEIsUDBQRFJSJLJcoJpojfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-window_new-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIUAAFxaXGRmZFRWVGQmhFwmfFxeXOTm5MTCxLyWzLySzKyCvKSCvJxyrJRmrIxipIxWpNze3AQCBMTGxJRWtJRatIxOrIRCpHw+pHw6nHQ2lGwulOzu7Pz+/Pz+9Ozu5Pz+7NzexPz+5Pz+hPz+3NzevPz+BMTCBNzetMTCDPz+xNze1NzezPwCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACwALAAAAAAQABAAAAaVQEBAMCAUj0aCYFkwHBAJhWLBYDQcD8ghIjhIJhRKxXLBZDQaiYQLABDe8PiSu+HY7/dOh+PhQvB4eh8fIH6Adh2DHyGFAn+BiQAiISMkhnmSIQAlI5KXHIkfAiUmpCUnhoKLISgpIikmAlwqtCArkiUlIhwiuSKyEcHCESausMEsycrJEaaly9ARIizN1NPQ0dfJfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-window_nofullscreen-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIQAAASC/AQCBNTW1MzOzMTGxLy6vKyurJyenHR2dIQCBPz+/OTm5Pz+9OTm1Pz+7OTmzPz+5OTmxPz+3OTmvOTm3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVsICCOZAkEaKquqzAQRWEYR32gSK7vO5oowKAQmEAtfr9hgpFoGBWJpDDqcAaOUSHDEU08nkOG2AGBfK/aMYQMiRi7Ywe5674yE3I2JCqZoChLeGwSEgmFfgFNDQ8NjQ0TEROSRSyVKSaYI34hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-wizard-16:actions actions16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+xPz+BMTCBPz+/MTCxISChDQyNAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAREEMhJg6BYWhAGv5k2EKMXToSgEqc1DEIhvGAWpOvJFSXZyoXOxxY0BDahQDGg4xgOxmbgiWDqpoeqlGrVcZuSbLfpjwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-abbrowser-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBKSipMTCxISChPyqXPzerPz+xPz+/FxaXAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARhEMgJQqC4Xms1tkIgDEMYXpMYEEJRCIT6Ea5R2DHFtQZBG6dNoHQrsAyH14DDWiENBsQhBtskEs4Dohe4oiqE5So2zElECEKCrCYgQmcRVnRKnFIdC0L4/az7GXiBg4N+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-access-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBGRufLzi7PT6/NTq9OTy9MTm7LTW5LTS5LTO5KzC1FyGrExSXHzG3Gy+3FSStPz+/ESGpFSmxEySvEyKrER6nERylExqjFSSrKze7EyCrDxulKzG3GSuzGSitEyWvER2nEx6pKzO5DxmhLze7DxqjExihERadLS6xERulEyOrLTC1KzK3ERWbERujFRefGR+nKTO3LS6zLS+zFRmbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAQABAAAAa1QEBgSCwWhYIBocA0CA6IhEKwYAQKDccDAolIJpSK5aKwFhyYDGSQoWgqm4uFYyV0PAeIIPIeayZlVw4OFV19FxoSGoFnH1tcayASIRciVgYfEWoQIxcLk4gHlxQCnJBcJBUSdAEHhQediSV5ExWBBxYQGSZelLkHJyhWsHmSISkHKpsrViwWJ1xPXCAtesIBCiUaGHm6LiYvLybXMAQCMQosBwcoMjIzMTQMAC0M9vf49wB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-acroread-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIEAAASC/PwCBPz+/AAAACH5BAEAAAAALAAAAAAQABAAAAIlhI+pELshmkOhzmTvyZrFDglRxVEiGUoUualtx7gOC36gDGt+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-agent-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBKSipISChPz+BMTCBISCBERCBCH5BAEAAAAALAAAAAAQABAAAANLCLrcHkFBt4IY8EYKYCAT9xVBYRhbM5KFeaRVy56oSsgQ/TLrB567ym10ChiCnRIRaJx8lDdd86UkEWjHaURZwlKRHpM0xPOYGf4EACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-aktion-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/AAAACH5BAEAAAAALAAAAAAQABAAAAI5hG+hIuigAmMvLTlfnJiePQndt4SMFFioeaagaEbvySlQF6I2BLPRwYntDLlaylH8VXLDpaiJ8BcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-alevt-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/Pz+/AQCBAT+BPwCBAT+/Pz+BMTCxCH5BAEAAAAALAAAAAAQABAAAANFCLrc/i3ISadQYQhSehFecAGiYJ6oiJmaZrymSrKCJhinXLYmHo+l2skn0KGOPwyBUHPhOrqKVIWsmhqHyqhhPUG+Cn8CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-applixware-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBKSipAAAACH5BAEAAAAALAAAAAAQABAAAAIyhI+pGbsBHYtHCGARbMhms1HVB0TieJhcl23liXkinAmhy7732UL9GnsZeixczChB+AsAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-ark-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/PwCBAQCBPyCBPzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANCCLoQwTBK6dy8WNQgptAbB33DQGzlx3xE65RpBwgtCw9sR7e1gO8EGYs3DMoUH5rPqFylSrzaygcjHqdQVUYL8ScAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-arts-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPz+/KSipPwCBISChAT+BARCBMTCxDQyNAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAMALAAAAAAQABAAAARTEIQ5xbgYAwJksFhhaFTVdeLpURYwAOL7cp6gpmcZHEQPGyIOLRAkiI4GTqmIDG5QwGihuRIBU8boasLzZbEd082QK7VkrvTwo2pvP5m4GxHP+CMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-background-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAAQCBJx6NJR2LIxyNJR6NKSORKyaTJyGRJyORKSWTJyKRKSWRKyOPKSKPHRKLEwiFDwSDEQeDGxGJLSeTKSSRKyaVLyaPLyaTGQqFFwyHGwyFEQWFDQKDDQKFEwmFMSiTMyiVJRuNLx+LOS2VOy2ZNSKTFQeFGRGJLyqXMymVOSiVOy6ZOymZKxyTEQODDQOFLymVKxuNMRyJOSeNMx2FLxiJLRiHFQaDDwOFDQODFw+HLSiVHxSLFQiFIQ+HKxmNJxOLJRSLIxGHDwODGw+HNSSPOSWNNRyFOyyVOSOPARihNSORKRSFLR6TPz+/MTCxKTi9JTW7GSy1Lx2THw+FNSOXJRWNISChASq3ASWxARynEQaFMx+JJRSJFRWVARafARSdHxeLFw6HPz+7Pz+5GxKJDwSFIRSNHxGNPz+3MSCPNSWTMyGNPz+9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAQABAAAAfXgACCg4SFggECAgMEBQYHBwgJCAoLggsMDA0ODxAREg0TCxQVghYWFxgZGhscHR4LE7GCHyAhIiMkJSatJyi+giApGCokKywtLhwvBzAwgiMxGDIzNDU2Nzg5OjsTghc8PT4/QEFC2EMeCZUARKpFRkdISUr09YIYET0qS0wqTUpOnkCJIkWQhxsbpsigUsWKkidXsGTRIkjHgy0YuMjoYkKJFy9KvoARFEZMBAg3UkIA6MTJGDKCBpQ5aebMGTQsx4xJU/FBBIxq1rAB4KTNS56Gkg7yEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-bell-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBEwuFLR6PLRqJHQ6DNyuhLx6LKxiHDwiDMSOXLx2NKxaHAQCBHxSLGw+FKRyLFRSHLR6NIRKFExGHNTStOzm1KyqfIRmNHx6PIyGRFxeJNzavOzq1MTGpKymfKyqhKSmdGxqNDw+FPTy7KyuhNzevISGTJSSXLy6jOzq3Ly+lJyabHRyNCQmDKSifAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ6QIBwGCgOj8iAYEAIIJ+BguGAeCYTigXDegw0DI4tl/gQj4WB8hkAgUQeEsaEC6FULBdMRjN/QjYcHR4fICEiVn8jFCAkHxiHfiUjHRYfHyZmR4kdICAeJ5lCECgVKSorJysrLC1IEBgVFSgunSAaoWwTIi28DL5HfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-blender-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBDwiDPSyNOyKLDweBFQuDFQyDPSeNEQmDIxSHFQ2DEQqDARWjARGdASO5AR6xAQiPOymNAQ2XARqtAQKHOSmNEQiDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVqICCOQBCQKBkIA5G+63C+RW3UrIsSQt8fA+CMREAQgIkaUEdSsBK6hZBUeJ4YjRLQIKoOBgVAw/GAAAqRk+EJBkgmDQrAUDGxTAMBAgCR89oFOgF5YQAWdy8EeTeILyV5jY5nBAGFkpJ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-clock-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAASC/AQCBPzerPyqXMRaBIQCBISChPz+/KSipMTCxPz+BMTCBPwCBPz+xPzCxMQCBISCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVxICCOQGCeJjkGwkC8RFEEavkax2G8dB0QuRyhhzoBg8MSYsncJXKJZIDZHCoWP1ogGIwGrtnSgUFmHLyNRHhrdpjRamnO/SYkromHdnxwnwkKVxByZW8DgQsQM2JcfwZXO0MBCZSVBgMuLzJaRZ0pfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-colors-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPz+BAQCBAQC/MQCxATCxATCBPyqXPwCBPzerAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARWEMgZ6rwYBCFsvtXWeWA1DBU3ggRhomJQBm14dlJYFFXrbjKNwVDZ9Vw4TWWoKyCDgcNhyXQClVLpMmANIRAhLdGa+36j07GrfM4GiKTAGfsOlmYZfwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-cookie-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBNzeDJR+BOzmVNSqPOSmBNSCBKRCJFwuBOSOjMRSTLRaXFQODMxiXOS6vIwiJGwKDHx6fKyqrMSOjNRWVLRaVFwCBJyanJSKhHRydPTy9PT29OyytIQSFPz+/JSSlOTGxIQyLMTGxNTW1Nze3Ozq7OTe3FxSTGxqZNza3Ozu7OTm5MzKzLy6vLS2tNTS1FRKPGxWRMSypJyOhKSOfPTu7LyupFQ6HMzOzEw+NJR2XKyOdFxGNHRSNJx6XGRCLHRCDMy+tGxONDwaBHRiVDwyLEQuHJRyVJyCZLSilIxiPIRePHxOJIRWJFwyFEwqDCwWBBQOBDweBKSCbHRKLHRKHIROHGQyBFwyDDQaBIxqTHxOLGQ2DDwiDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe4gACCgwABAoSIiAMEiY0ABQaHjoQHCJOECQoLDJeCDQ4PEJMRERITFBUWFxgZhKQaGhsKHB0WHrcfEQARGxu3HiAKIRgiIyQlJicoGym+KissLRIuIi8jJTAwJjEyGzIYKxszNDU2Nzg5MDY6OyQ8PT4jP0BBQkNERUZHOkhJSktMZDQBcsTJEyhRpOybcuSIEipVrFxBgEVKFigATkiRgkSLki1UgFzh8kRKFEQbN3aR0qULIT+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-date-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAASC/AQCBPzerPyqXMRaBIQCBISChPz+/KSipMTCxPz+BMTCBPwCBPz+xPzCxMQCBISCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVxICCOQGCeJjkGwkC8RFEEavkax2G8dB0QuRyhhzoBg8MSYsncJXKJZIDZHCoWP1ogGIwGrtnSgUFmHLyNRHhrdpjRamnO/SYkromHdnxwnwkKVxByZW8DgQsQM2JcfwZXO0MBCZSVBgMuLzJaRZ0pfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-dlgedit-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBMTCxFxaXKSipPz+/AQChAAAACH5BAEAAAAALAAAAAAQABAAAANLCLHcrSLKOVccAuvMLf2Rlw0bYRKFGBGZWQioRc4kPKfB+qFFL9ODF+EmKxh6vZOreETCbLiMESkcxnIgATXK2XgFqmxI4SgvAP4EACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-emacs-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBDQyNKSipPz+/FxaXISChMTCxCH5BAEAAAAALAAAAAAQABAAAANJCBASoXCFoVi8VdL6HHQeB4YjSAxnYQygSLzoSTjbEs9vMF86cbyH34NX+AELQ4zO+Nopm6cBC1PBEQwG6gd3SGo7Xa1STIb4EwAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-email-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBGRWVAQCBOTWvKSShDwyLOTazOTaxPTuzLSilOzi1OzezPzy7Pzu1NTKtKySfPzy5Ozm3Pzy3PTq1NTCrMS2rNzWvNzOvMy+rLSmlPz69LSejIx2bPz29ISChPz6/Oze1HR2dOTi5Pz+/EQyLJyanKSipOTm5MTCxHx+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaGQIBwSAQEAoJi8RgYEApK49FgOCAS0CFTsVAwEA2CIysMJB6QCEQyoVQsZOMFk3loJoeNAk4MGBQOFAQcDw8IfFoLDB0cEBMICIRxAV6NEB4aHwICk4wLIBYhIiObSxwLBSQkJaOlfQUFpCYnIyMoSVGbtQK3UQCbKCYprkq8m8S+uL4AfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-energy-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBBQSFASiBHS2/JzK/KzW/JzO/ASWBATCBASKBHy+/Hy6/ByuHASCBAR+BATOBARyBIzC/MS+BASeBASOBARaBFym/Pz6BASuBEyW5AR2BJS+7Gyq7PT2BARKBDyC1FSS3IR+BJyaBLy2BPz+BCxuxAQ+BDw+BOzmBARiBCxyxBxetPTyBAQCPAxOpAQ6BAQ6jAQ2fAQ2hLy6BAQubAQydAQmXAQmVAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAahQIBwSCwaj0hAYBkQBJDLAaFgOBCWxcAAkVAsGIyG4/EUBh4ICCIicUAgkwTZjKBULISL3oHJzAMaDhscHYEODhMeExEfSyAhGxsgICIYHiMWJCUYSyYYJw8kIigoKSomKxgmSywYfC0YGCJ8rSwuS7EYJBYYLi+xE5tkARMoMCoYEzEiJDIzMjQiSzExMxGkNTY2NTc4NTNPTOLjWElHfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-enhanced_browsing-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBOTWzIyCrFRSTMy+tCQmVOzi3ExKhAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARFEMhJq6UhyHy3GNmnAeNEFAZwpuRRBiIMkkOBjKuKTsHtgbISybTLYX6hGc+lSxk3tVtMVOkFck9MMNjB7jqkEQdMlvgjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-filetypes-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMT+/ISChKSipPz+/PyqXMTCxFxaXPzerPz+xAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARfEEgZqg0zV8EHF5XWEUMxkBwGBB9REIZLfBgrkEaen+l6F4cYgpA4vEC+ASIYSxQRnlrncEgoFFQP0laCHpSmnk+AEJQ8ZeRkw0mDVJT3JZQZw+trC77Ouu8pfn8AfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-fonts-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/AQCBPz+/KSipMTCxPwCBFxaXMQCBCH5BAEAAAAALAAAAAAQABAAAANBCLoQ/C+I4GAMY1ZGN80UJ2jA0BFbUxhjF6BWsQroawEyWhN37vKxQo0ChPhOPaGDIhhADr5FinE4TG5PrBbiTwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-gimp-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBISChPz+/FxaXMTCxAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM6CLrc/izAJVWoD4MgtL2R0F2k6HFiOgjDSRBq0FLUKxYDTmKBnf6gGqz3egWFhEvSQ9kxJ9CotOFPAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-go-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBERGRFRSVDw6PDQ2NDw+PPz+/ERCROTi5Pz6/AQCBKyurERGPOzq7ISGhNTS1DQyNLSytExKTLy+vKx+RGRiZPTipEQ6LOzu7PT29JSOjOzWlEw+LIyKjIx+dLy6vOy6ZEwuFHQ+DCwqLGQ6HNSWPMymfIxmPMyqjKSipCwuLMzKzHx+fBweHOTm5GxubJSSlAQGBHR2dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAadQIBwGAgIiMXhgAAoGAwH4QCRKAgVCwSB8AwwCo2n9ZpwMMSFhyEBGQoLEa5BMnkO3G/Kef2sMIdfCxYXT2oGGAIHCk0ZCBobHE8dHk8MFR+LgSAhXSIRdmNCBxScBiObCAYZI25wJE8SJSYECVVDCg8dERchJygPKSqsQgQNKwQFCw8fLC0KLi+LxH9YMDFX0ngAzzLZ2m4K3kN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-gv-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/AAAACH5BAEAAAAALAAAAAAQABAAAAIxhI+pwaHZ2jNMWMFmvXk1GznHF4DhWF4cJlKpynpwB73ms3Etiq00EAr+hJGJ0eAvAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-gvim-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBAT+BPz+/ASCBMTCxISChAQChCH5BAEAAAAALAAAAAAQABAAAANUCBDMEqupNWoNJNgBV/mfwYCFqASgmA1h57VaO71lXLtPytZEBggZ0E7Vy2BQJEaRcDghP6iGb/IsNKBWKghZzb5EUau4g1KFz1QId+ydRRZwiD8BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-help_index-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPz+BAQCBPwCBAQC/IQCBATCxMT+/Pz+/ISChAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARTEIRJJZ1ACjF3GGAYaKNFDNfXldLJqmQWcKhcW6tkl1NhFJhdRmIwHIq8m8R3LAIlykCxiZQNl8XsU3eVZg0Y2LD3CyAQlassbEaz1N32Gz5m+SMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-hwinfo-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBBQ+XBRCZAw+XAw6XBRCXCRObCxihCxqjCRijBRSfAwyVCxehDx6nER+pPz+/BxKZAwmPFyWtGyevCRSbBxWfAxGbHSqxGSatCxulBxahBRKbAQiNEyKrBRKdAw6ZAwiNESSLCyCDBxWBDRulBwyRHS6ZDSWHCyKFDQyNCxqlAQmRAwiPMzalPyCBMQCBCx+DAwuRBQqPITCdFxaXCyOFAQeNAwmRAxKdPz6/GyyVMTCxKSirAQCBGzKZAwqTAweNFyuRDyeJFzCTITOdAQiPAQaNHzCbES6NEy6PESyNDyqLDymJPz+xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfBgACCAAECAwSDiYMFBgcICQoLC4qCBQwNDg8PEJERlAYNEhOaFBUWnokBBw4SFxgOGRobCxyJBQkNHZoPpR4fICEiIiMBCSSYmgoKFgslJicoKQQKCSoZmgW+KywtLi8pMDEbFRqaAcwyMyc0NSkiNjc4ObsrKyU6Ozw97j4lNhGSfsgAEkQIDxr7YAwh0qKIDSM2jgRpgbDHPhFIMiZRsoTJkhMgobUDMKKkySYjUKockYJSypcrWypKQbOmTT+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-icons-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAASC/AQCBPz+/ISChIQChFxaXKSipPzCxPzC/MQCBISCBPyqXMT+/MTCxPwCBMQCxMT+xPz+xMTCBPzerPz+BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV+IBCMZBkAqCgMa8uyJxoMRFHUtz3Eqk0MBhxBwJsRaqTcLhUQ3AyHAMI0EtEI0pGrpU38SANFQazYGY+LqUChYDQUxCbB8YjOFJAIpGEePOpZAhITIxJxAg8JDwQPMxISERESfXSVTRIQAZKHLyuOFI8US1RNnTApqCJUAH4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-iconthemes-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAASC/AQCBPz+xISCBPz+/ISChPz+BIQChFxaXMRaBPyqXIQCBPzC/MT+/MTCxMQCxPzCxMT+xMTCBPzerMQCBPwCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAWLIBCMwhgMJqCKRBEIpWAMBRGsQXG8sIAiLpwNZpAFEAcbjlc0OI9BVcAWSDgHT9MtF1AsZrmamNpNBAyjwgCxpo0U5h1jOhg0HAMbPHB4QNIDEQIRDi5xfgFzBBITIxJUBQ8UD305EhIwEi45FQ+dFVMSES+PIy2nLgUSBpcGQVomqKc3K7WwIwB+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-input_devices_settings-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/MTCxHx+fISChKSipKSirATCxAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARQEMgQpL03iEEx1gOxdR5YbCJXZUbqjusUhGitZkFri0VFUodXoTfjWCi6oY8Skxl6k4FhxZRRRxMC1TBdWn0CAbcZQFAH4WnGjDPiPICYPwIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kab-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBISChFxaXKSipDQyNAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANICLocHiyqIMQYUE5Ses8S1V0FGInFIJTalKpsS5FxKDxB/EzV4GUBQsXR87BQnRtNtxphfJ9FAAqbRqUXVfPaMH5MDRx44U8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kappfinder-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBExOTDw+PExKTPz+/ISChAQCBPz6/FRSVIyKjJSSlIyOjGRmZNTS1Ozq7Ozu7AxyzPTy9ERCRBQWFIyqxPT29AQ2vOTi5IzG7DR2zNze3Nza3BQSFISy5CRyvBQenISmvBQitMzOzAQGBAw6rDR61Hx6fMzKzAz+/IzW7ASyvCwuLMTGxMTCxBwWFDQyNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAahQAAgEBAYj0ahckAoEJ5QgkE5fBYO0SeCOigkFE2DeEFgUAUNBwGBeBAcCMHirF4gnhBCBCE5PydqBBQVFhdTSgJPBk8YGRQaG4dCiQQcDh0eHyAhIiN+BHYXJCUNIggmfhUOAQgbJ6YCKGcVKSUaChwGHCYqCyuIDhkhGyIsLcccCL6TFxsNJ8fRLS7KvyNi2GIrAQwK1AsvVOJULi4AfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-karm-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPz+BAQCBPz+/ISChMTC/MTCxPzCxMQCBPwCBAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARTEIRJa5Ui66H3FETHdcTwdcIofkVbUIJbmAEoZl95aoXxUrNdpnAIDFomgRA3yxxhIdxAlaKhAgUNYshyYVGxnMZInS6VzVSQPG0bkWaJZT4B+CMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kcalc-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPz+BAQCBATCxARCRASChAT+BMTCxFxaXEQCBPzCxPwCBAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARPEIBAq5U4iM17wJMwjORIfJkYFCs7nKA2rJQLp0Su66ikGcAg8OYTGA6BA/KAIIYsFudPGJQal8uAFVqxUg2JxBYbUGh7k5J6BppwKyB/BAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kcharselect-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBISChPz+/MTCxAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANBCLrR+zCIGWCcI1cLpNCa5YHZsCmj2QTlxrZmmRFVSs4E7X13TqMTXsl36gSHuSIQQ+QYP0kncPCTokzWh3LhTwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kchart-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/AQCBPz+/ATCBAS6BPyqXPzerPz6/Pz+BPwC/MQCBAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARcEMgJQqB4WiFulhvXfaEwiJ4mEgExFCMVcENgBEXepdVhG7dcABGr/IJCQ8ICAt4IUIuSKAW2XMOD0qC42AIHV4277YIqKHKCy5txbIoyDy2Nr80yjyVwn5OYfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kcmdevices-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPyCBPyqXPzerPz+xPz+/AAAACH5BAEAAAAALAAAAAAQABAAAANMCLrcHjA6BcW4Q8AWLL7EFSwdOIRoOAKBiZ5EPJYvBMeDba5BQfg52ik4KPgKOVYqZiwYjLzb7/c0JCnSo3VFasFEXE5kMymbzwp/AgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kcmdf-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMT+xAT+BASCBATCBMT+/AT+/ASChATCxPz+xPz+BISCBMTCBAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEEgZwrwYBCFqvhs3DNYXjChRlWBRjIRqGN4UuEUczMZxsDeXykdEsDQVVSLhQxhBCkVlmXA+KVHFYhFYOoHbMGN6pTQaW8YYiQmcG+q16a0+Zipw+4e9B/gjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kcmdrkonqi-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPzerPz+/PyqXMTCxPz+xAAAACH5BAEAAAAALAAAAAAQABAAAANKCAoRy+6pIESkVuLaKl8b53lOaA3EyIXBUBjpWHKDYNhxNrWv/aaRiWBwKwoIDZCH2EN+TMQjyzR0yhgqiyo4vT4wl48E8g0C/AkAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kcmkicker-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBFxaXPz+/ISChMTCxPzerPyqXDQyNAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEEgQqr11AjG6/4FGDEVZBOapWSXbToFhoKkZUjJGEEJvyUDDYQaKATElBOJklB0OgY5SWgnmpFJm4PkMjDxLFYXFGSCyN8mocDaD0xsSO6wUS6K1FBzDD/gjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kcmkwm-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCRiXCRaVPz+/CRmZFRWVISGhMTCxESSjPT29DR6dDyOhDyCfPTy9CxqZOzu7Ozq7ERubOTm5ARehAxefPz6/ByaxBSOvBSGrAxynAxqlBR6nBRylAxmhARWdFxaXCH5BAEAAAAALAAAAAAQABAAAAWHICCKQTCeqCgMhJCihXEYSPuKRWIoC6PYsEZikHA4FA4CEJdoJh4QgXRwiOAeQudDIpEZIpPwhCImhyGGAmBSOVgumExG055w1ZPZhpPpUDwzExBqAAUDhxUVTQ0QEgWOOIcDiU1QjoSFFYiKDZYFmAWJlE9bkCM5iouWpiIfBa6frrKYAH4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kcmmemory-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBISChAQCBMTCxCH5BAEAAAAALAAAAAAQABAAAAI6hA+Bu+HCmgiiRuNoHZBRXQlc84TmcHzm2WVryE1YvMaZIdbVd2zw7lj4bDKGbxK8hHgX3K2JUDD8BQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kcmmidi-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBFxaXKSipMTCxPz+/AAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM7CLEL/pDJAONs1V2W1ebWJ46kKJxomi5D2QZEwRSyVMNyngf7Eg8FYHAIZMRoyCSNMSA0n85oszTxJwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kcmpartitions-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMT+xAT+BASCBATCBMT+/AT+/ASChATCxPz+xPz+BISCBMTCBAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEEgZwrwYBCFqvhs3DNYXjChRlWBRjIRqGN4UuEUczMZxsDeXykdEsDQVVSLhQxhBCkVlmXA+KVHFYhFYOoHbMGN6pTQaW8YYiQmcG+q16a0+Zipw+4e9B/gjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kcmpci-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAADQyNATCBASCBKSipFxaXAQCBMTC/ISChAQC/IQCBPyCBPz+xPwCBMTCxPz+/AAAACH5BAEAAAwALAAAAAAQABAAAARVEMhJqww4a33F+EL4jUI3EEXoEWzaFbAKzyUQeLihDqrpHQhBQkHyqY49iWCxbDKfJQbASYUCpJbslcHter+NQ3gsLo8bBYd6zWYf0u24GjWr22f+CAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kcmprocessor-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBKSipMTCxISChFxaXDQyNAAAACH5BAEAAAAALAAAAAAQABAAAAM7CLrc/jDGQCWgIleH88jCdgXgB4JVQJxsVgQXIQvrWdwwJc/0jcOG0Y7gqwQVQR3R+EgyJcGjZUoF+BMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kcmscsi-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+/MTCxKSipISChAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANCCLoQwZAFIV6UYgxi79Qa52WDE3bKV6YOpFpO3L5pJcckLBB8/wQEDezWAQpZqIWxFNAUkqkg6HmJOqGuArUqwfoTACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kcmsound-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQC/AQCxFxaXAQChAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM7CLrcDiE+F4SQU4UBLH6VoHjT1okQR6mnuTYuJMWaGlkXW2u4QOipRYDws82AjJsHKez9MgrigAkF+BMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kcmsystem-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBGxqFAQCBPz+/PTqtOTOfMSyPNze3Ozi5KyeLMTCxMzGzKSipOTe5MTGxAAAACH5BAEAAAAALAAAAAAQABAAAARfEMhJQah4ihFunsFAEIVXCVJACIJhoBK6CerawsA8HAhbuAnYZrBDKBYMWpCy4S2QSRazyBIwrrjcoNFQzK4KR1bQcHhZjGM2BgWLMYJ2enForHPJtNj+kfHvcB8AfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kcmx-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIAAAASC/PwCBCH5BAEAAAAALAAAAAAQABAAAAIlhI+pm+HB4HkS1flszOCq7C2Qw0wdJ2Lk16BGeK5dSZX2jS9+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kcontrol-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/CRyBBxSBExOTNzipOTijOz67NT21LzutJTmlGzaXPz+/OTi5AQCBLy+JKSiJES2NES2LESyLDQyNLy+vLzWhLzWjLS2tGRiZDymJASChIQCBDyuLLzShDyiJMQ2LATCxMQKDDSaHDSWFCQ6tMT+/PzCxLzuvCyKDDSSFKyqrMTCxGzabDw+PISChASSBAT+BDzOPNTW3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAacQEBgSAwIBsikkFAwHBAJhWBBpTIaAccDAolEJIKJWEzBMiuWCyYjaLjd5exDIsE02A1NY9OIMzkcHRkebW99WFoVahkfbSANIYdCBh52IiOFb2VCByIWIh0kbSUNJpIBJ6CgKJlwDUIJKSooswIUt7crrwEsKC2+rC7CLzAuuzEoycmtbgAAAtDR0DLGztYALbm426/Wht9vzn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kcron-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAADxePARCBAQuBNTS1OTi3LSytAQeBMTC/Pz+/AQCBOTi5MTCtISCZAQiBISCfKSipFRWZGRiZERCRHRyZMTOxDxOPMTCxIyCjCQiJAQOBLS2tAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAQABAAAAWFIBCMpCCQpDgQLFusLVEYAXEgOJIQOXIkNF5v19MFWQrCgsFYxIC1InEYvOWmuF9QKrw2aoSkYtksOBwEaBeXeEAiiIdD8rUNJw8EBUGobIcQFggXLglgCohLGA95CQMOGVFDEQ4YGhERdAEWCZ2dDwsSEHMOEA0ABqmqGRkGDQ2pDRV+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kdevelop-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBGSKXEx6RFR+RFSORISidJzCjJS+hISydHSqZDxuNIyuhKzOpLTSrKTGlHyybGyqVDx2LHyedKzKpLzWtMzexLzavIS2fFyWTDyCLCxiHNTmzPT29PT69NTm1GSWVESKNCRmFOz27Pz69PT27MTKxJymnIS6dESGNDR6HFyCTIy2fNzm1Ozy5JyenISKhISOhMTKvESGLBxaFOzy7JSWlIySjCx2FBxGDIyOjOTu5BQ+DFSGRDR+JCx6FBxODDx2NGyaXCRyFCx2HCRqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAexgACCg4SFhgABAgMEh4MFBQYHCAkCCocLDA0MDgcPEAQRhRITFBUWDAcXEBgZGoQIFBscHRweBgkfICGDAQcUIiMdJCUmJxgoKbsAKissLSQuLzAxFgQyKTOCKgk0NS/fNiQtBBk3OIIEEC0cMDkvJiQ6ICk3O4M8FCQcNjAcJBM9fPwgBCQICxI0XtBgQeCGEHuEFGCYwILFBAJCHh7SEGJIRiI/IDaagSNko5OF/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kdisknav-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBERCBBQWFPz+xPz+BISCBERCRPz+/OTm5HRydAQ+XHR2dKSmpNTS1Hy+1AxypNTu9ITC3ARypExOTFSyzHS61JTK3MTi7CwqLBR+rASGtDyixFyuzDw+PAxWhAxmnBRypISitCRujAxelAxmlFSixMzKzCRqlMzOzMTGxMS+vGxubLy+vLy6vKyurCwuLGRiZLSytFxaXJyenGxqbDw6PDw6NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAafQIAQEBAYh0jkQEAoFAxJ5EGAaAoSh8BBEUBSrQtGw5EodwHfgsBgeEAWijGW2XTaDRHJJExBrwl1AhUWFxgRDwdCGWkCGhsbHB0WGB5CjB8fICGOGxaJaWwGIiMfJCUTJh50dk4ODiejHyiff2oGDikqK7osiUIGai0pJyouxi+9v2pEMDEyLTIyDckCy0gBMDM0DTU2flFDARk3AH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kdmconfig-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/MTCxISChMT+/ATCxASChFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEMg5gw00yyDGIAR1YUDggeFWFIZhnSBZrsZxdIOFEGTA2oeBAHeyuGwvzxBlYdUOLROMFzDQntJPrNoqAKUBaqnV+k57ZORruykHDj2LqIzUVKp1u0iuB/gjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kdvi-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/MTCxCH5BAEAAAAALAAAAAAQABAAAAJCRI4ZwCYPo1gsiIHHxY86KXmWdiGkCA1Wp6Htc07NOsEv2oVyldLHbuBgEhORJhOxGEkkiLJybCZ3iqrD08hmF/4CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-keditbookmarks-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCwqLLSytLy+vERGRFRWVDQ2NKSmpAQCBKyurMTGxISChJyanHR2dIyKjGxubHRydGRmZIyOjFxeXHx6fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVbICACwWieY1CibCCsrBkMb0zchSEcNYskCtqBBzshFkOGQFk0IRqOxqPBODRHCMhCQKteRc9FI/KQWGOIyFYgkDC+gPR4snCcfRGKOIKIgSMQE31+f4OEYCZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kedit-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBASCBPz+xPyqXERCBARCBISChMTCxPz+/FxaXAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARXEMgpQ6B4WnGzDgJHWWMYdkAwEF1QFKe2oqDZztr7GpfKjrvAAeFDpQq8ISIRYBotSoTUkiC2ostqYps49BSKIVfaBbcC4MMWcTAbU+iw21NBk+gjuj8CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-key_bindings-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBISChPz+/MTCxAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANMCAoRy2IEuYIQDsrBld0NN4XaJF5iCppWxBGtCscEAbkDfH2wh+ogiudD5AhvoZWoJEFtckBTE1dzKKfQjMtUjfQUzizjeBN7HgB/AgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-keyboard-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBISChPz+/MTCxAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANBCLrR+zCIGWCcI1cLpNCa5YHZsCmj2QTlxrZmmRFVSs4E7X13TqMTXsl36gSHuSIQQ+QYP0kncPCTokzWh3LhTwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-keyboard_layout-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPz+BAQCBPwCBMT+/AQC/Pz+/PzCxKSipISChAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARSEEgZqr1hUjFIEQXBZVogDt/XYWxgoEVFzEUt3MGNm7SND4aarPfBFQYCQmtpiTErh+ahMK1SqVHoYcvtUptX67SWDXTPXWltva5q0WfEs+WPAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-keystone-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBMTCxISChPz+/MT+/AAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM/CBDcHkoFQasVUIrBe8fRNDwMAWpjUThmtmxk0IYwOaPx/V6XG3hAjmsRa0Qkg6NSOVo6F0nG88g4TUNDpT8BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kfax-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/AQCBPz+/MTCxISChERCBFxaXPwCBAT+BARCRAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARVEMhJQ6C4imEzDkLIXR4ADqFAThYRoFu4ti6YbhfdFm+aEzWgAWhB5QyGAMEwWA4PlpyFCWwOkAhCgla1EqxXKbD7vSJnyuUXyV5JuOxtqZV0z+3+CAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kfind-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBExOTDw+PExKTPz+/ISChAQCBPz6/FRSVIyKjJSSlIyOjGRmZNTS1Ozq7Ozu7AxyzPTy9ERCRBQWFIyqxPT29AQ2vOTi5IzG7DR2zNze3Nza3BQSFISy5CRyvBQenISmvBQitMzOzAQGBAw6rDR61Hx6fMzKzAz+/IzW7ASyvCwuLMTGxMTCxBwWFDQyNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAahQAAgEBAYj0ahckAoEJ5QgkE5fBYO0SeCOigkFE2DeEFgUAUNBwGBeBAcCMHirF4gnhBCBCE5PydqBBQVFhdTSgJPBk8YGRQaG4dCiQQcDh0eHyAhIiN+BHYXJCUNIggmfhUOAQgbJ6YCKGcVKSUaChwGHCYqCyuIDhkhGyIsLcccCL6TFxsNJ8fRLS7KvyNi2GIrAQwK1AsvVOJULi4AfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kfloppy-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPz+BAQCBISChKSipFxaXPyCBAQChMQCBPz+/AQC/MTCxATCxAQCxAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARWEMgZgggz5zAIBp9GFV8oSqRkikFanapBVgccGAiJBDWL74jd4UUxGBI/IcJQMigSimPSsMDcEFCFVkptKhCDgSBB7m4sA2y5eqqMF2YYKMBgys8nfwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kfm-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBGRiZERGRPz+/MTCxAQCBMTGxPzerLy+vLy6vPyqXLS2tLSytKyurKyqrKSmpKSipJyenISChJyanJSWlJSSlIyOjIyKjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV+IBCMZCAIQKoGw0C8MFEUqmgYrTwXL50GhtegcCgedr4AIpEYHhQKopEWSCwYw1fUeBQxGo3hiBCIUR2OxyAwG8OoD0hkICFABMiZKBKZ0GNkPiIUFBUuEoiIMisVFRZ/MWwqAheVfxICdZIpmZZ1kYIAMxcuJWWhKXl5Kn4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kfm_home-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBDw6PBQWFCQiJAQCBFxeXMTCxJyanDwyLDQqLFRSVLSytJSSlISChCQmJERGRFRWVGxubKSmpJyenGRmZLy+vOzq7OTi5Ly6vGRiZPTy9Pz6/OTm5ExOTPT29BwaHNza3NS6tJRqRGQqBNy6pIyKjDwGBPTe1JSWlDQyNOTGrNRiBGwmBIRaLNymdLxWBHxGFNySXCwqLKyqrNR6LKxGBNTS1NTW1Jw+BEweDDQ2NAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaoQIBwCAgIiEjAgAAoGA6I5DBBUBgWjIZDqnwYGgVIoTGQQgyRiGRCgZCR1nTFcsFkHm9hBp2paDYbHAsZHW9eERkYGh4eGx4ag3gfSgMTIBshIiMkGyAlCCZTEpciJyQjGxcoKUQBEhcbIiorLB4XEltDrhcaLS4vtbcJra8bMDHAGrcyrTMXHjA0NSypEsO6EzY3IzU4OdoTzK0BCAkDMgkIOjJlAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kfract-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBAQCxAAAACH5BAEAAAAALAAAAAAQABAAAAInhI+pyxudwoNACiFbuBzHt3XeEYbiBF5mN5HpyayqVrY0hdj4vvgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kghostview-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/MTCxCH5BAEAAAAALAAAAAAQABAAAAJCRI4ZwCYPo1gsiIHHxY86KXmWdiGkCA1Wp6Htc07NOsEv2oVyldLHbuBgEhORJhOxGEkkiLJybCZ3iqrD08hmF/4CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-khelpcenter-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/FRWVExOTKwCBJQCBIwaHFRSVPz6/LxSVOSqrNyanIQKDHwKDHwCBPz+/OTm5Ozu7JwCBMRKTMxubLxCRNTW1IyOjDQyNEwCBGQCBJyanMRaXNyOjKQODIRydKQqLOzCxEQCBNze3Ly6vJQKDDQ2NIQCBCwCBGwCBFwCBDw6PNyipDwCBKSipEQ6PDw+PJR2dMRiZHwSFPz29BQSFIwODJwuLMTGxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAabQIBwSCwaAQHBgFA4Cg2BwwGRUCwYxobD8YBEBpLJoEGMUA4VywWTaUQOmstww+l45MKM5/DAf0AIDSFFBiIHI3IEHCSDRgEOFSUAJhQNJ0coYikAKpB4RQwrJiycWy0uRQ2AKKQAL3wwKEMCMDEdGEMvWxIKDTICIzMQKZdDKQ0dMSAxBzMPGjRGGCkoNTYaNzTRThgnJ9pFfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-khexedit-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTC/Pz+/MTCxFxaXPz+xPyCBKSipAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARZEEgZ6rw4CB3wrJUggt03nANIoCUQoDDcvqJAaHXqunBxywFDZWArDHy4lOEwTBEKgYJRyeQJEIEnYrQsvU63abBKIYq2m+4s5mTeTLVRSFdmyy6kvGXijwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kicker-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+/FxaXMTCxDQyNAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANECLrcEDDKGYQV4+qbie9eGIJEVxTe+QmjUFgnXLLr615oF8x2v0I8DWpF2GV6slkLKSMdYT4nS0WgSkXYAWUbcXgX/gQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kiconedit-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwC/AQCBMRaBPyqXPzerPyCBPzCxPwCBPz+xMTCBPz+BISCBMT+xATCBAT+BASCBMTC/AQCxAQC/AQChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVkICCOpBicZQoEwjAE6hgQQwvH81AU8OnfuR3QYDgcgAKhjGj8+UgzQkHHw+2mQlQpgEAkFInEYnGDhr/h8VPGYDQcjcZj/iiv4u84vQ6FQCISERETgxN2AX6AgoQThlBOkCR+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-killustrator-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBAT+/Pz+/KSipPzerPyqXAAAACH5BAEAAAAALAAAAAAQABAAAANHCLrcGzBK+YK4OAcAx4AXIURj4J2fJYhWh35pOHKoG8+mFxS5HimmXU8HBH4MQyJD+FI+kM3Ug9eENALQk9VhDW4c1y/YnwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kit-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCxCH5BAEAAAAALAAAAAAQABAAAAIghI+pFrHbXmpRMmoBxXB75IWcKIKk022ZunJtdlSw5BcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kjots-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPzerISChPz+/MTCxMTC/AAAACH5BAEAAAAALAAAAAAQABAAAAM8CAHc7kGsR1mc9d1Md/icIgXDB1YXMZQnZBJEIbdKABPGTbSfnuc8mw8W1OlotYER2fgod5iMKRqiNvwJACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-klaptopdaemon-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/KSipAT+BISChFxaXPz+BMRaBPyCBMTCBDQyNAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARtEIBAq5w1TBGEGIM2ESTlVUNhaAFJUAcXgAXCZkFyJEoiIArWYQjj+Xi2yfBA0SU6CuAts4MCk4EdcxbznFhOCsjrWUxRhbRBBk48Z6kCZ2GeuN9xucF8FqcEBnt1OW4saSp7IoRPEjgiGBV+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-klipper-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFQyDEwuFEQuDISGhFRSVEQqFEQuFPz+/PTy7Nze3PT29Ozu7DQyNJx6VIxuRIRiLEwuDIxSFHxSHKSipLSytGRiZGRCHDwmFOzm3HxOHIRWHOTazHRCFHxOFEwyFNTKvHROHFxeXJRqLIxWFFw6DFQ2DNTCrIRaJJxuPMSynHRKHIxqRMSqjGRGHMSifJxeFKyGXHxKFLyaXKyObGxGFEwyDKyOXIxeHKSOdFQ6FIx2THRKFFw+FKx6NKRmFKxuFLyCPLyOTLyabLSefLyijFw6FJRmJIxWHHRGFFQ2FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfFgAAAAQIDBAWIiAMGA4IABwgJCgUICwwKDQ4PEBGCEQsSEwUUFQQWDRepGJ4ZEggIDbENrxobAZ4cHa+7uxAeH4IGICEIIsbGFggjJCWCJicovLwpIcAAGCorCBbc3AoILB2rgy2u0q8OLrcAJS8wr8nJrzEy6yUz79sivDQ1jQA2buB4tU8eghw6xgnYwePcqxcdbAjq4eMHECA+ggiZMYRIESPjShyBgQPJBB48OsiokaTDOoACItgwYULJhw8BbIzzEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kljettool-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/MTCxKSipISChFxaXATCBDQyNATCxASChAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAReEMg5Q6CYBiFsxhvXXZklimRlDWenBQNRzKJRXCsxHPFcIDGcILYbGHqzAY41NCQSiuNgMLPAmNTElFoFWKecqe8mCRAIq6nt5imb0TC2wZByny3zdslMr3+8fgB+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-klpq-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTCxFxaXISChPz+/ISCBPz+BKSipAT+BAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEMhJqwUh3xqEz8EWDKT3aVNAFAVBDqYQYitbjARhGDJt34Nc4SBAZAomoDAhKAwyTZZp5XE+O0lp9QVFeLNWUpflJXheTww2ijiLKSBPW/C+xOmzjQRU8UcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kmail-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPyqXPz+/PzerMTCxFxaXIQCBPyCBAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAReEMgJgrWU4iAGIUFWFYMldF+okUPJeeAUDEY7FFzXqnNdkIGDgHAKzWgsDuJAFBhbtd1peTAWDFjpaZg6skonYfOZzC3HlduuMj1UZUDZ6RMblTTDokylQYsyFwB+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kmenuedit-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTCxAT+/ATCxASChPyqXPz+xMRaBISChAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARLEMhAq5UY2B3yFGDIYcFgnuNErGwQCl1VzHSJBsbBUSxBIbnEC0YrxICHhFKZCiATlldn8gSlNE7YEurRQHdd19Aa3m6nmV0F448AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kmid-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/AQCBKSipISChMTCxPz+BAT+BFxaXPwCBATCxARCRAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARUEMgJgqVYWsFv3lwoeFMwEIQYkkFhouoQlIFhHvCgz9oxjoeDblc6+Q4B4ZBXCSBQx+GIZhNAOURaACsYypq0kNeSSLC2uxm5fGZqAgqFO0OjT/wRACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kmidi-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/Lz+/CH5BAEAAAAALAAAAAAQABAAAAIzhI+By7oBo5RH2GvDRRhre0xiVHXZVpqfEI5iKkQxalzQIIPGhI+pSAN4cjqA68VIHvwFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kmix-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBFxaXAT+/DQyNATCxMTCxPz+/AQCBKSipASChAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARWEMgJQqCXziDG2JoUEENhZBkmHIWJVptAmqcIW/Js1MiF56TBzkckAAcHoa9nMRKeA4TyJk0knsHhTeK5khBaH2VwLYVh40TJhQ6RzeIQV32Quz8hfwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-knewsticker-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBMTCBPz+xPzCxISCBKSipISChCH5BAEAAAEALAAAAAAQABAAAANTCBCsysEpseQDI08KSPdYNmwUYSraUDRC64iAMbIuLGtOS423BhKFmgj2C+5EhsOoWEsOnB0FsKl0jnLUp3IG0O2sMNpRVHBAJpjyA8KOmNsMfwIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-knode-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAABwaDAQCBPwCBDw6NERCFJSWJAwGBLy+rPz+7IyOJJyeLBQWDIRqZIxydPzCxDQuHPTWzOSypBweDKyqLJyWJKySjPTOxKSCfOyCfOyKhJSSJJSSLFRWTDw+NOSqnOR+dOyWjOzGvNza1ERGFJSWLLy+ZPTGvOTOxOSSjOy6rLSypJSWjKSinAwODHR2HISCJOTWtPTe1Pz+9Ozu5IyKfNzazPy6tExCHMzKfPTy7KyupKSmnEQ2HHx+HKSiLKSiJPz65OzuzOTmrKSmLIyKJLS2TPTyxOzuvNTSlLy6fHx6RLy+RJyaNLS2NNTSnLy6lLy6dMzKpGxqXCQiDKyuNMS+PLy6VMTGPMzKrOzq1CwmDLy+PMzGTNTWxMzOxERCPKSiNCQmJERCRERCHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAAAQABAAAAffgAABAoQBhoOEAgOGBAUEAocBBoOLBwgBBAkKBAsMAQ0ODwOWEBEBEhMUFAQVFhejCBYYGRCGGhsKFBwdlh4fICEIIoMjBRQkJSYnKCkWCCorLIMtLgUvCjAxMjIzNCw1KoY2NxovFDjbMjk6OjuHNjw9Pj8lMggIQEFCATaDBD4JhhApgsDIESFIkigxJGDEkiJFmDQB4uQJFBxPokgRMIVKkypFrFxBgCVjlnuXtARQUGTLFS4yunipgRLBF0I3moChgsQeAg5hxDBMNCUAlyAcOCBKxJTQmKVNBfgJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-knotes-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/AQCBISChMTCxPz+xPwCBPz+/ISCBPz+BMTCBIQCBAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARIEMhJZQg1z6vzxR0VCKE4gCE2lhcRnF1LuAInBjNRfDMn64WCQRCcHS6IRE6nyB0Sx0ACkcwloFiflKp8Pm2bbRblkYJZHX8EACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-knotify-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+/Pz+BPyqXMRaBAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMyCLoQznAFIUKE09krZ+VS9XBaMBBbZKIBUaSYa40kTIPNhyvazje+G2gFI8l8jaLCnwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-konqueror-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxONCROfCRKfKx6LNy+bNTOpGSS1DRupAwyXBRSnPTSjPTqvOzqzMzSvHSSlKy6ZDxutAxCpBQ2XBxepLTKvPzqzPzy5OTShLS2dLSqRFR2jBRerBQ+jOTixOzetNS2XHx6XDR2tCRexBwyTDyKzOTavPzq1OzKdCx23BRKtCQ6VCQmHFSa7IyirOzSnGSGpIR+bFSO1DyK7DR+5CRixBw2VDQuHFye7IS27NzGXISuhEyS5DR25BRWxBQ+lBQyXCQqPCxSfGyu7GyerKy2ZFR+rERqfCRmxBROtBQ+fBwuTBwmNDSW9JyabLyqRIx+TExSXBQ6bAQCBBQ6ZBxapDR+zBxq3LyaLJySRHxqPGxeNBxGbCRmrHRyRERONDRKNDQ2JCQuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFhgABAQIDh4MBBAUGBwgDCYcKCwwNDg8QERIThRQVFhcNGBkaGxwdoYMDHhcXHxggISIjEiSvJSYXJwsoISkpIyorLIIDLS4WLzAxMjM0NSo2N8o4OS46OzwzPSk+P0BBgkI8Q0NERUZHCEhJSktMgwk4Qy1NTk9QUVJLphCiUsWKlStYsmjZQiJgIS4KuijQ4iXAFxYCDVFJwGUFmDBhMjYSw0KMyEYoBfkJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-konsole-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXFRSVPz+/PT29OTm5OTi5DQyNDw+PERGRExKTHx+fISChIyKjHRydFxeXDQ2NCQmJBQSFAQCBERCRMTGxHR2dGRiZExOTDw6PCQiJAwODCwuLFRWVOzu7BweHAwKDCwqLHx6fBQWFGxqbGRmZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAanQIBwSCwKAwKkMslEAgSDqDRKqBYKhkNgcDggEorkMrDQchkNhuOhgEQkk0l5S2lUGpYLJqPZTAwMHB0DCmhqAW0Rfh5zAxgOkBcCFAcfIBMECxwBBAEPFw8dChkhcBMDDAcdnQqtFKSWcQMimx4dGRkQBxGxsg6bBQEawx8jl3GnJFoFHRNXVVNRJYIFDAsL1tgiDiQXFx0HABwcXeQH5OjkRutEfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-korganizer-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBASCBISChFxaXPz+/Pz+vKSipLy+/MTCxPz+BPyqXLxaBAQ+BPy+vAAAACH5BAEAAAAALAAAAAAQABAAAARmEIRJqw1ikM37FsFQjMZ4lAVKBESBjCYsFiuBkkk5KG1dJL+CZjBYMES+l2x3RCBqtxHBOFD6DkHmAQj0yXgzmFdIhY2erBJBwTiczDSWq0Eg1gvYrvyHxcMdUEojYWIYHocbDX4RACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-korn-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/AQCBMTCxPz+/PwCBMQCBFxaXISChKSipAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARSEMgQpL03CEExDkO4dR6ghSFBkJa2CSlRcNX0voNQ5Ebn3pvdAWHo/W6IHUJwGFCAm+SrSTm+ZgcY6XnDhlim3wwxKNYymiX17HmCSxO4/OKPAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kpackage-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+xERCBMTCBISCBDQyNAAAACH5BAEAAAAALAAAAAAQABAAAANPCLoR+7AJ0SALYkxd79za12FgOTlAQBDhRxUFqrKEG8PyOqwEfMeKwGDI8zVGul0vFsAFdaxB43ecKZfUKm1lZD6ERZgBZWn0OpYvGeJPAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kpager-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBFxaXISChASChATCxKSipMTCxDQyNERCBPz+/MTC/AAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARWEMhJZ7hADFI4+RpwBYBxFJ1HmMiYJUgiJPI8Bwmp7HyvyBOfMCHR+QwzhAAhMvZKSFgRIOwtJczqboFoBasGGVNUKVNGaEyTlEYL1sX2pYXOyO8XfwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kpaint-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPz+BAQCBMTCxPz+/PwCBPzCxPz+xPyqXASCBMQCxAQC/AQChPyCBATCBMT+/ATCxASChIQCBKSipISChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV1ICCOYxCI5kmigTCYBKGW7WAH8QyYrn3LNFesYDgEjCVXIRYzGgWqgA2BICQUx9pMSkUssgsbFOWighW+7c24KDAKDccjCjVCHAEGo/GYl+wPLwwRfF8oT2mDAwuGWVJiARERAxITJkhaJhMSlJY7NDQpAH4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kpixmap2bitmap-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwC/AQCBMRaBPyqXPzerPyCBPzCxPwCBPz+xMTCBPz+BISCBMT+xATCBAT+BASCBMTC/AQCxAQC/AQChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVkICCOpBicZQoEwjAE6hgQQwvH81AU8OnfuR3QYDgcgAKhjGj8+UgzQkHHw+2mQlQpgEAkFInEYnGDhr/h8VPGYDQcjcZj/iiv4u84vQ6FQCISERETgxN2AX6AgoQThlBOkCR+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kpm-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTCxKSipPz+/ISChAQChMTCBATCBPyqXAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARbEIBAa5BYUsHF+FQ2EUTHfUOoFQVpeuAVGAbrnmg603U7FD8UxXDgGQgoYMyAIBoSyI9Sx2seoj/lRlDFTmUBDs0L0gg2CGwFs93oWJdMOwCPiybhguout2f8EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kppp-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAAT+BGSOhERadDxKbDRKZExWXKzG/KzO9KS+tER+lBQyNERaVOTu5PT6/OTy9Lza5LTatISylHSilCQ6LNzq9MTa/LzevKzKzIS6dBwuZISi9MzizLTW3Iyy1IymjHyGbCwuLDRGXHya3HSe9Jy+/MTe5Pz+nPzmhOTSbGyGXGx+XCwyLHyinISe/NzifFRKTFRqXCQmJExSVFyafFyC9MTCvAQCBMTCxExKTDw+PMTGxLy+vNTS1Ly6vMzOzNza3MzKzHRybERCPDQyNPzCxPQODHR6dAwODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAengACCggECAwQBg4qDBQIGBwgJCouDCwwNDg8QERITlIUUDhUWFxgBC4mKGRoGFQcbHB0eHyCLISIjJCUmJygpKiuLEywjLRYuLy8pMDGLATIzNMk1Nck2lCDJN9TcLziKOTg63DvcPD0ygjk+P9zcQDVBQekAQkMgPjzcPfLy1wAgiBQBAYIHkH5BbPwTBGKIQBBBjAQBsXCRDYJGZFSkJOhIM45+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kpresenter-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwC/AQCBMQCxPwCBAT+/MTCBASChATCxPz+BPz+/ASCBAT+BKSipAQC/AQChARCBCH5BAEAAAAALAAAAAAQABAAAARhEMhJq70YhM2D5UIYDARHBUWxEcRgHKgncWyLuPEc1MOAJLfBRsNSEBYbH8kw3BEUyABjZHzJdsiGI6AYLBQG5qykDSy+jwdLpimj1aVhe7tIr00a6Q4uP02dfRVygRZ+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kruler-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBFRGDPTijPzmnKSGDOzWdPTahOTGXOzOZOTKXNzCTNy6RNS2NMyqHNSuJCH5BAEAAAAALAAAAAAQABAAAARkEMhJKwg4643FEIQHimHRfaiYmoFxvMLhwi5r3IaA37rBIomgABhEDBM/hHLJVCBYCwFjYVxQBdYFi8GQertSLqshaJgFZbK5wXI4BO63W/Bwt+HzON7BKvj/gIAcgxoWhhN+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kscd-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/AQCBKSipFxaXARCRPyqXPwCBAT+BMTCxMT+/AT+/PzCxASCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARbEIRJa5Ui672nsNYgegFhFoRhCuJAEgcsE+wYfHIc0y3JbT2QsOJCGG+/zyShMCICregEsUgEnNCe6/rsPkPTY2LxZLEOh4DEqbBmRQyGen0kjgB4ySSPp+D9EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kscreensaver-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXAQCBOzu7Ozq7OTi5Pz+7Pz+xISChHx+fMTCBARWlARepOTm5ISCBNze3ARalARanKSmpARSlHzC9ARGfLy+vKSipARKhAROhARKfJyenNTW1AROjARSjMTCxJyanNTS1JSWlMzOzNza3MzKzJSSlMTGxLy6vLSytKyqrAT+BIyOjPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAalQEBgOBQYj0fhYEAoCAyHqPRgDAyIggPikOAeFFVCYMHImqnfaiPAKH8VcLij+ghAGJFFlnuUCAJ1ExR5AnACFRUWF39/CxETXQoYGRoaFht/HAEdE2AeGRgVFBUfIH8hmx4doBihGokifyMPAiQcISEjJR+7HyZ/JScfFigpKSoSFxsiKywCAEjR0QDU1AIJFi0tFgnP1dYJ4QgJ4+Xe1tLTAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-ksirc-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAAT+BMROTPz+/KQGBFxaXAQCBDQyNGSGzDRivAw6lAQmbCRGlAw2jHSS1BxGpAwiVGyO1CRWvBRKtJSq3AxCrEx2xAxGtAw+pAw6nDRmxAQmZAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVYICCOQBCQKCoMaRsMbCvPNE3cRA0QRWEciIQigQLyfAtGqtFwPI6GFgQReex60WJEYr36UpOtQgQlUQAVieUyLoskY8Bhi3liEZJ6MaOmWCgJGjYGhCl+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-ksnapshot-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/AQCBATCBFxaXISChAT+BASCBAT+/PwCBPzCxAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARLEMhJKw3YViw6HkRgBUVnCkG4GUV5otthsO6A3KJEHm6R3AOYTtAy2QqzHCDwMpiSk8DsxIFGpc6T9YJ9GpSb7laDSYI1yzNa448AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kspreadcalc-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPz+BAQCBATCxARCRASChAT+BMTCxFxaXEQCBPzCxPwCBAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARPEIBAq5U4iM17wJMwjORIfJkYFCs7nKA2rJQLp0Su66ikGcAg8OYTGA6BA/KAIIYsFudPGJQal8uAFVqxUg2JxBYbUGh7k5J6BppwKyB/BAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kspread-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBAT+/Pz+/KSipPz+BAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANFCBDc7iqIKUW98WkWpx1DAIphR41ouWya+YVpoBAaCKtMoRfsyue8WGC3YxBii5+RtiEWmASFdDVs6GRTKfCa7UK6AH8CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-ksysctrl-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBISChHx+fPz+/AQCBAQC/AT+/AQCxAQChAT+BLy+vAR+BAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARYEIAgqK1YzsG754QUDERpmkEpkkXrtoK6EcVgHIibhnNx564Yb0TDvQq7FQ34EiqPOhnREqhWSUPsyZSQAbbg7GcMEgwUiYVivTa1R+y4XEGoWO/4AMAfAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-ksysguard-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBExKTERCRERGRAQCBFxeXKSinIyOjJSWlKyurKyqrKSqxPTy9LSmxNzS1Nzm7JyitJyipMzOzLS2tOz6/OzW1Ozy9Oy6vNyCjNRydMR+lNza3LSurFReZMTG3Pz29OSmrMx6hDw6PKS2zMTCvOyytOSWnMzi5MTa3NTS1LzCvNTe5Pzm7PTK1PS6vOSapMyKjNTy9KzCzMzS1GxqbISKxOzq7Ozm5Oza3MyytLzS1Nz29OTy9LTS5GyGtOTe3MzKzOT29OTm5KS2vKSurNzy9LTW5OTi5Mza7NTm5KS61KyytOT2/HyChHSChHx6fNTy/LzKzMTCxLS+vMze5KSmpLzS3Ky61JSSlLTGzLTa5FRSVJyanKSipJSWnJyWlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfagACCggECAQEDBIOLAAEFBgcHCAgJAYqLAQoICwwNDg8QERKXjQYTFBUWFxgZGhsJHJcdHB4fHxUgrCEiIyQCjRwWthUlJiG7IycoKQQBKisfLC0uLzACJzExMjMBNBI1Njc4FTkBOjs8PT4/3UBBQjc8FkNEQTtFRUZHhyQySEkHOAyxgOCcEhkSLC1ZwSRGEx1OnBx4EgNKFCmKAkyh0uNADBpDOpyQ0YNEAEJVIFjBZg/bFRIRSAXAwiFLDyNaesiYEJMRgS1cupDg4OXLFlI+DwkQgBSAn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-ksysv-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+/MTCxISChIQCBAT+BAAAACH5BAEAAAAALAAAAAAQABAAAANWCLoQzlA5IVyIK1S9L7PDsFHBIJXDFFaViYYEUQpy6orEqq12Aw+FmkjQQxEKwQCBSCz5BrGYkuc06nKU4s8gW4q0UAN3+q3CZJfJRhJ6fDwZOGbhTwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-ktalkd-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBKSipMTCxARCRFxaXASChDQyNATCxISChAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARYEMgZqqXU6gCuDIJQDQTBBQX3hUFpmN2hFaxhIPCJDrRo46dPglf7BTvDXsB2OwaSCd8tZ0kWgZ3Uk+hDvHRV5bfyybACPNmkY2EVZKpM5UBPre8fD94fAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kthememgr-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBASCBATCBAQCBDQyNPz+/MTCBPz+xISCBAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAReEMhJaw1V6Bs0HgIWYFMnhSERkiU6ekM1FO9IGMcxIFK3jgGDzRADhAypQipI7A0OId1IaGhKntHDjWogTLCB3JbpvULD2ir5i0SPDYjy9ZgWDuQUwqBLLFq+ehZ+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-ktimemon-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPz+BHSG5PxSVDRW9PwuLPQKDFze1AQi7CH5BAEAAAAALAAAAAAQABAAAANDCLrc/lCFGeKi1YktAH5c92mcR4HloA4P4RLAyjovLLdvvD5FX+gqgGFoUPh+N2IRcAQcngch0ehzQqVDas/6xBb9CQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-ktip-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBGxubFxeXAQCBOzu7OTi5NTS1PT29Pz6/Ozq7Nza3PTy9Pz+/Nze3MzKzMzOzOTm5MTCxLS2tKSipNTW1Ly+vKyqrMTGxJyenISChAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVwICCOQRkIY0oORFEYqCoGw4EcSaHEarAgDESu4RioBIMfA1doPIwpZGJBhTQMEWh04GoqDBLtCKkYNL5hGUAwoZQfFYs46lBQLnK1SICJUCR5egMZGBgZcyoDGAwTh3oiAxMMhogpioyOjwADnIh+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-kuser-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTCxISChAT+BMRaBPyqXARCBPz+/FxaXAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARLEIRJa5Ui673nsGAgeKE1Bl9AUEXbiqTlFlZaGUZoszm4BzhDAVf5BYbAXI+TAR6CS2ZGSZSEiIIqYIsSIEaJ7GRrlY7J1lKA7I8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kview-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPz+BAQCBPz+/PzCxFxaXPwCBPyCBPzerPz+xASCBMTC/PyqXATCxMT+/ATCBASChIQCBAQChISChMTCxKSipARCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV0ICCOYxCQaBkIwpmKJsu6qDkIREDMZFwUAYNwRVuxgLfDAUGEsRIJo2LRapUE0ABDsa1aAcZoo+stsnIMwcDQcDQUV9MjF4Q4GJFiQJJuGSYOFHkwezJ+ExUUEicmYDITARATAoomLiuQJhKTlTRgepYBfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kwin-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBFxaXISChASChATCxKSipMTCxDQyNERCBPz+/MTC/AAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARWEMhJZ7hADFI4+RpwBYBxFJ1HmMiYJUgiJPI8Bwmp7HyvyBOfMCHR+QwzhAAhMvZKSFgRIOwtJczqboFoBasGGVNUKVNGaEyTlEYL1sX2pYXOyO8XfwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kword-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPz+BAQCBPz+/FxaXISChPwCBEQCBIQCBMQCBMTC/ASChARCRAQC/AQChMTCxAAAACH5BAEAAAAALAAAAAAQABAAAARiEMgpQ6B4WnGzDkLIeVs4DAIBWFcpnKJVzCUcz8ZxVOKN/AWNKRQo5HQYELHwQxQSHR7HqDuwMIRisxBQLBbRFdUaYCwYjUZHywIxGI53K0jolRkJdLkhtKwaeWpJYW0AfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-kwrite-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBKSinJyOfPz27Pzy7AwKDExOTJyWlERCRKSelPz69LyyrKymnPz+/MS2fDQyJAQCBOTazLSiXOzivMS2jKSSVOzmxPz25NzSpPTu5KyebOzixNTGjOTWpMSydMSybCwqFGReVKyaXNzSnGxeNJSCVMS2nPz23MSuZIR+bJyShLyqnOTOtGxiXIR6XOTSvIx6RMSubIyCdKSalMS6pOTWxMzKvKSabJyKTOzezHxuPGRmZKyurMTCvPTq3AAAACH5BAEAAAAALAAAAAAQABAAAAajQIBwCAgIiEhiYEA4FgwHRDKhIBAWz4OhgGQ0FAPHA7qFEBONb0Qy0ULeQ2+aUrFcMI+3GYBOZzQbHB0eHyAhIQByDREiEwMjFRIkJQImAgJ+jScjHigkKSorLC0AKg2NFSMoki4qCy+IQgITKDAxkjIzNDWkQxQoJaskMgk2Eb1DNzgoOCoHDDY5yEIwJToAOzw9ET7TQiREAhkZ3kmy5QB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-laptop_battery-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/KSipAT+BISChFxaXPz+BMRaBPyCBMTCBDQyNAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARtEIBAq5w1TBGEGIM2ESTlVUNhaAFJUAcXgAXCZkFyJEoiIArWYQjj+Xi2yfBA0SU6CuAts4MCk4EdcxbznFhOCsjrWUxRhbRBBk48Z6kCZ2GeuN9xucF8FqcEBnt1OW4saSp7IoRPEjgiGBV+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-laptop_pcmcia-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwC/AQCBMRaBMTCxPyqXKSipFxaXASChISChMTCBPz+BPz+/PwCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARfEMhJaw3Y2iDGyJoUEIVRfIHGEcaBHCc4jcWbGG2cAuuhKIZE4mX68EgI3M/wORgQGAHr4HICD4NCKoBIJqsv7w6DKDgNi0VuN+O+GIxFl00hlxjakIhbo4cwfnoWfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-locale-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/AQCBPz+/MTCxISChMxKTKSipFxaXERGRGxqbCQiJDQ2NJQaHMwmJDQyNFRSVOR6fGwSFNxSVKQqLFQODJwaHOyGhOySlNRCRMSuBPz65PzupPyCBJyOLMxyJOTKRLSiNIR6JExCFGxaHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaPQEBgGAAYhcWjUMAUEAMDQtIIZRauBaZhKhwIsFjBgFu9HgKHrHNI9QYQCQQarWB313D5Ik68BxgIDQwOCgcJD2wBWwENEBANEQwMEBITFEIOQhWNkhENFhcYl0l/GRobHB0MGBAeo1QdHxsaICEfpyAiQlQhICMiHyMgs8FKASMjRiK/yLrGStDRXNFGfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-looknfeel-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAASC/ERGRExKTLy+vKSmpAQCBPTy9Pz+/IwKFLQWNPT29GwOFExOTIyKPHx2NPz2pIQSHLwWNMzGXFxaLLSytERCHCQmJNze3GxubLS2tHR2dAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAWNICCKgVCWYwoEwUAMhXEQhhocRuHCMpIgiJVBptC9DojDIrFYwRS4wgGJZAIYuwL00Ej6FjOGEXZwPByQCNjAyrnKj4NkAqYUBIIoXC5pVGYUFgIXU2Z8fgdGFhgZiRqHf1EDFgCJGAcafX9aUSIFlxoFBX8vMYmemKJSY6Ijn6oHF26tKbAEGCaUKX4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-lyx-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBAQChARCRKSipASChFxaXISChPyCBATCxPyqXMT+/Pz+xPzerPz+/AAAACH5BAEAAAAALAAAAAAQABAAAARZEMg5Q6C4BnGzHsRgeVZRGIbYaekxuAFijUGRBOqMKPxlJQsLQxjoVWyWBsMxNEp+iRuj2VvVCklHLCZjiRrawGFmNQUajQ129RwYyCMSau2pcNh1AB7jjwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mathematica-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBISChPwC/FxaXIQCBAQCxAQC/KSipAQChPyqXPyCBEQCBARCBASCBDQyNCH5BAEAAAAALAAAAAAQABAAAARlEMhJ6wxChiFFCBUhENtQGIcBUghWDsHxWck7wMpKfXz/ZYBAYeCpKRQLWwkjMCpQJQ3TE8gdUgxPUMDlflINhzfocJB6BNEDqLnKpgRLTJZjBuIUAf1TExR0EyRASWmAFocAfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mouse-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBDQyNKSipPz+/MTCxISChPzCxATCBISC/MTC/AAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARSEIRJqw0Sg32rAANBFNwlhIQhGkNGAaSaouW0iYUBEIdYgzsUIqHAuWAoQlGEE9gMJKaU8IPupqLWy3qVkioAFqkLc9nCg3G5oxFr2ecavOOPAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-mozilla-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/JxqBHRKBGw6BHwuBHQuBKwmBKQmBIRWBGRGBMQeBKwaBHxSBFQ6BDwaBEwqBEQuBGQuBFQOBGwSBGxGBHQ+BOQiBPQmBLQaBKQaBCQGBIwWBLQeBDwKBHQSBGQ+BIRaBHweBIQWBNQiBKQeBJw6BPxGBNQuBLwiBPwmBKweBIQiBJQmBHwyBIxeBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZzQIBwSCwahYHA8SgYLI2EwpMoMBwQU2FCsRAYGQ3HwwGJSCYPCNnRoAgrlgsmo8hkLJpNpEjhbBYdHhYZEh9HICEiGRMjJAxPJSYmJxkoSocjKSorExYNSwMXLAwgDhYVSwUtRAMORwGfRR8uRpdGWEJ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-multimedia-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBIR+hKSipPz+/MTCxMRaBMTGxOTe5MzGzNyytPyqrPyurLz+tKzqrPTy9LSytNTS1Pz6/Nze3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAWAICCKQWmOKFAKQ9uWacAOJcEWQjDKrxHYJZxONRAQaL+c76DjyY4D4A+RC9B8xkPiQKCySsjAQZAojHMva9pk8iGrCsWC0Wg4HCvT4wApyO0FEAcRJhKGhzUEioolDw8TgYQBEYITCIQqE4IRCnQOEXyYJAFxCwt1dzAxbCcjfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nedit-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAAQChPwCBAQCBPz+/MTCxKSipFxaXAAAACH5BAEAAAEALAAAAAAQABAAAANDCBoK8TAC8Vy8QUyGr9BaFwmDZonZp66sIhBwLBMFlRl4rhv1IxiDoHDYuw1yw2Dxl0wugTqnjdkUPmezJWv7QXX8CQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-netscape-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAEyStPwCBNTKrHRqPAxSfLR6VNzWvAQCBEyOrFxGPMSWdKx6XPz69Ozm1PTy7NTOtOTOxKRqRGxCJPz6/MzGnMS6jDwmHEyGpPz+/Hx2bGxiPOTexFxWNLSmhMy6jLyGXNSqjHxSLLyuhMSyhLSqhDQeDJyWdJyOVNTKtPTu5KSONMS+rLyqdMy+lFxSNOTezKySPEw+FEQ6JKSOPDw6LNSylHxSNKyWPLSeXExGLDQuFIRiRCRCVEwyJAwODLyyjIx+TNzaxMy+jBwaHNzGvMS2hMS2jKSWXGw+JFw6LKR2XCQ6TDw2HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAfVgAABg4QCA4SIBAQFiAYHiIQICQoLAQwNDg0PgxARg4oSChMOBg0UAgYVBRaDFxcIGA4ZGhscHB0eHISKoxkfARsHICEiI7oBrg0kGiUfpCEBJiIngygbKQ0bG5kjKisbFSwtAi4HLx0cBwYiMDEyJh4zMjSKKBQuNTY3Mb8vODk6kLky0GEHjxUyeiigMMPHJ0UCKvw4sQFIECEqhgQUSCSChRFFWhg5MkMjkk9JlJRY4uIEixk5fOhAsuOkqyFLXF1oQYOJTiQIAigaqohCD6JD/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-noatun-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBCQ2PARehAwODASCtASi5ASq7JTK5PT29MzS1JyipISGjAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARlEMgJgrg3zDHkCEQoEhrnVYXBDUVRdmagHjT7AnExHPtg3LldzYXr4FA6juHnMXZkqaiGMpEtOdOmETpAIEy473fV9Xphq7P6DEgMFIpFWm1sJ+4JBec8SFAnd3pveH+AeHcSfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-package_applications-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAFxaXGRmZFRWVARehAxehFxeXOTm5MTGxKze7JzO3ITC1HSyzGSmvFSWtESKpCx6nBxulNze3MTCxAQCBByezByWxBSOtBSGrAx2nAxqlARijARafARWdARSdARKbARGZARCXOzu7Pz+/Pz+9Ozu5Nza3Pz+7NzexPz+5NzivGxqbGxubNze1NS+vPTCvMzKzLz6vLzevPwCBNzevAwOBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADIALAAAAAAQABAAAAamQEBAMCAMikfjQMAsGA6IhGLBaDgeEEJEMhFIJBRKxXLBYDKajeTQBQAGG05n7vl8QABBNyTq+/8iIyRdJSJrgCMjJiYnhCIHEn+JiygpXQaGB32JKgErKiuNAoV+iQIGLBItLhOOgYkrmAYvLikwl6+Lo5gTtjFdLMHCKy8vEyITxV2tzBMFMTCWIgYlEzLX2NcwMy4vstngAS4tLyUGNODprdl+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-package_development-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/GxKFAQCBNSyhFQ2FOTGnJRuNOzWtPz23FRWVERGRJSGNMyyZHRydOzu7PTy9Ly6vOzq7Nza3JyanMTCxHQCBLxWVKQaHOTm5NyOjMxqbJQSFHwGBDw+POTi5LQiJJwWFPz+/Pz6/PT29NyWlMReXNyenLQqLIwSFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ9QIBwSCQGBMWkMDAgKIuBgsH5FBIO0+oSka0mFAsGtdpwLMbPxONBgCDJEQkEMnkn1RLKRGF3+CtCDRJ7AoUSEgAWFw+AChB8hYUYGRobHIwAHZGbHh8gayEhIqGiIw9+GBgSJBoliiGUrhcOJq0WJyAbKBUhnrocDr4ofkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-package_editors-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBLS2tHx6fOTm5Ozq7OTi5Hx+fPTy9Ozu7PT29Ly+vMTCxPz6/IRuPHROLPz+/LyOdLSCTNSmnOS6vPzmzISGhExOTJSCZPTSxPTKtPS6jPSujNyKZGxqbDQyNDw+PHRaTKRqVLRqRLxqTMxmPOR6NKyurDQqLExCRFxKLKRSFNza3KyqrKSmpDQ6PGwyBNze3NTS1LSytAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaWQIBwSCwahwFA8kgMOAVLpjMgGBCixamgECAYsELtoUAuXJtPRCCRMBu44ecBoVC0F2aC8qkIKBAICQx5X3INh3UMbQMOD05/AQ0QDQoMERITFBUVThZ1Cg0XFxgZGhobHB1KHp4NCR8gISIjJCQlJmGsCAULAicoKSoqDytIrAkGBCwMLS4vKTBNrAUJCzEBMjMuM35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-package_favourite-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/AQCBPz+xISCBMTCBPyCBMQCBIQCBPwCBPzCxAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARYEEgZwrQzVyFq6Bj1gQOxgcBYDSzhnl7Azm7tpWT7VhdHmoFXzweqmYZE4I5C5AQKhkMAYbCMfM9EIWBAIKzNLNRbTRHCBUT6ewn6TOlyJuX2sOftS8YfAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-package_games-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/AQCBPz+xISCBMTCBPwCBMTCxMQCBPz+/KSipISChAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEEgZwrQzVyFq6Bj1gQMxgsBYDSxhqunKtu5bpSQdFDfFkS9DgHD5cTwBIdFnFLiSw2IzGGX+AocDNHQ6GhCJQCJsGRqThm/CoMBUCNc1W9HWmD2Jdsh+CfkjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-package-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+xISCBMTCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANECKoR6ys2IVqokF08yMTA1gwkYX5WQK5ma4VceTYPxXnBWdtY6+0834/Bowgzm6APWRQcH4TiMhPK2WYRiZWW7XK7/gQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-package_graphics-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAASC/MQmJPz+/LwuLLw2NLQiJNTKVNTOZOyydNRaXMxGRJQmJFQuXFRypFySdHS+VLTOfNzWhJQeHFwCBGyGtHyqlIzKdPTapAQCBGRCbKTSjOzqxLzG3MzmxJyanBQSFJSSlBwaHCQmJGxqbFxaXNzmxPzmzOSenExKTLSytAwKDAQGBMTS5LzerOSaTFRWVHR2dJzOhLTKdNyiNDw6PFxeXDw+PLSmvKS2zIyynLzSjNTKXNSGNIx2lIx6tISavNzSbLwmJHRWfNzWfIRurIyexOSmPJweHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAejgACCg4SFAYWIgwECAQMEA4mCBYwGBwgICQoFhowLDA0ODxARCAQSkp0TgwwUFRYHFxeLARITGIUZFBobEgUBC7aRHB0eBcC3iRgfGAIgISKRGCMeIhgkJSYniBkoKSgqKywtES6bgy8iMCgYyhwxMjOb7Bg0NTYr7Dc4OTo7PPIrQoRgJ6iHjx8xgMwIEgmAkIMxhsw4lYgBkSI5LEQwcsRPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-package_multimedia-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaXHx+fHR2dGxubISChNTS1MzKzLS2tLSmpNSytAQCBOzu7Ozm1Nza3MTGxNS+vOy6vPy2tOTStOzq7Pz6/Nze3MTCxOzOvNTqvLT2tDw+BOTm5MzOzPy+tLz+tLz2tOTi5LSynLz6tPz+/NTW1KSipMy6THx6fMTKxKyOLNTGVPTmbLTOtBQOBBQSBKySLHReFLzKvLzavAQGBCQiDNzKVOTSXLSWLNzGVLyiPNTCTOTaZLymPMSqROzebOzeZMSuPBwaDMyyRFRKHAwKBOzibMSmPMy6RLSaNLyaNDwyFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfKgACCgwECAwQBg4qCBQUGBwgJCgsLiwAFDA0OBg8QERITlYMFFBUMFgYXEBIYGRoboxwMFRQdCAoeGR8glAABBgshFA8BCxsiI5QklY4lJQYbJiQbypQnACgpB5ALy92UKissAAQXDyktlBUuLzALMeG+MjPKNDU2LDc47yqC1Qs5dODYwYJHj3f/Yrxb4QPHiR9Aqr0I4kNFDCExdgxRQaSItyA8jJw4YvFFjBdCGtCotECFjhssVgRR8W8QkgVJlOBb8k3UID+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-package_network-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBPz+/CRKfERCRAQCBFxONKx6LDw+PDR2rAwyXMzOzOzq7AwKDHSSlKy2ZDxutAxCpExOTBRavBQ+fBQ2XOTi5OzWhFRSVBw2VGRmZDw6POzKdCQ6ZBRKrCQmHAwODIyirGSGpIR+bCRixBRKtCQ6VDQ2JBw2XIS27DRKNISuhESK5DR+5BQ+jCQqPCxSfFSa5Gyu7GyerOzetBw+XBwuTBwmNFSa7Eye7DSW9JyabLyqRBQ+dBRerDR+zDx+3Bxq3LyaLJySRHxqPGxeNBRSnCRmrHRyRERONDw+NCQuLCwqHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFhoeEAQGJigIChQEDBIIFBgEHBAgCCYMBCgQBCwyhDA0ODxCcAAqRihGXiooSExSCsYoVDBYEFwEEEBiCrBmgGgUbigMcHRgeth8gAR8hIgQECyMkJSaCAicoICkqASssvi0YLoIvMDExMg4zrjQTNTaDCTcxODk6OwQYJmCYNIhHDx8/gAQRMoRIDRcEBwkoYqTIkSMFkNiISCjBCR40UiQxwdGQEg9LSvoJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-package_settings-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBISChGRmZMTCxKSipLS2tHx6fPz+/OTm5FxaXOzu7DQyNMzOzAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAReEMhAq7wYBDECKVSGBcbRfcEYauSZXgFCrEEXgDCSeIEyzKSXZoBYVCoJVIqBGByKu0Cy8QHxmgNngWCkGgqsGWFseu6oMApoXHAWhWnKrv0UqeYDe0YO10/6fhJ+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-package_system-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBGxqFAQCBPz+/PTqtOTOfMSyPNze3Ozi5KyeLMTCxMzGzKSipOTe5MTGxAAAACH5BAEAAAAALAAAAAAQABAAAARfEMhJQah4ihFunsFAEIVXCVJACIJhoBK6CerawsA8HAhbuAnYZrBDKBYMWpCy4S2QSRazyBIwrrjcoNFQzK4KR1bQcHhZjGM2BgWLMYJ2enForHPJtNj+kfHvcB8AfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-package_toys-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBJxyLJRqJGxKFIReHKR6NJx2NMSmbEwyFKyGTMSibFw6FMSqdCQWDIxeHNS6hAQCBDQiDNS+jOzexCwiDCQiHLyeXFxGHLSWXJwuJGweFHQiFMx2bLRGNGQeFNTClOzSrLxKPLQ+LLxOPGxOHIxmLEwWDOzatNS+lKyKTIRiJJx2PIRmPJRuNKyGRIReJJxuLKyKRMSqbKSCPEw6HNzKnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAauQIAQEBAMhITCcTg0CA6IhGJwICyYwgWjEQg4HIgHBCuMBCCSM6FBHiIOk4cg0hYiKAFFxUJBtC8YGQgBFhAaBVdMAw8bHB0eHh0cGh9LAAMgAxAhHiKPIxAkH1cXEiVjJiQnKCljECoWCAgEFGUrKBYsYwARKnQIRxG0Ky0QtAAIvwcuAwQpLxDCGDAIMTKyMSczs7sQATQz2mMIMyAXu0IQNDUu6AgQ6EPwu35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-package_utilities-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBExKTERCRAQCBOzu7Nze3MzKzLy+vCxqZBQ2NJyanKyqrGRiZDRydKza3FRWVPT29LSytDw6PMTm5EySjCxaXGRaJFSanCRSVGxqbPTmvMSqVJTW1GSurHS6vOzq7KSipISChFRKHJSGNPz23GxKFBQ6PKyurCwqLMyufJx2RAQGBJSWlEwyDIRiLNy+lLSKVDwmDJRuNOTOrLyabGRCFDx2dKSCVOzWtHzCxOTGnNSyhAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAahQIBwCAgIBAOiUiggFAyHASKxDAwUC8Zg0HAglA9IZPGQABoTSqJCFTIOEIsFgHBcEhhHUpKJFCwaGxYYHB0VEx4IEh8gIQwiIyQbJRMcHokmEicfDygAkCkqJQgIGG0rLElCLS4vMCWqQwMCQg0UMTIzNDVLQjaIGDE3ODQlS785CEkxKjowvEOHybG4O6JDCdNKuDUxRAmxRDHeveUAfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-package_wordprocessing-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBHx6fPT29FxaXPTy9AQCBHRydPT25Pz6/ERGRIR6PJyORHR2LDQyNLy+vNTW1Ozq7Ozu7LSiVKSiTIyKJJyenMTCxMTGxNTGlNTSjLyyRExGTExKTBwaHOzivMy+XBQWFExOTNzOhIyKjFxeXDQuNMSyjNzOnBQSFNTGjDQuLCQiJAwODCwqLGRmZHR2dAwKDCwmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAafQIAwQCwWhcihYMkUDJLIAKG5fEILhoOAgGAmCgXFgsEoNByOxwMCiTTAEsmEAq5ULJbLxQEuYCQZGn0JGwkcCR1gCUIeHyCJfX2JIUIHIiANCQMGIwYkCSUgi0KPHSYdJyAnKCkdHQ1IrhgdGCC1s7UqSCsdKLi0wL2xHY/FxMcssS0JIS4vIy8uIQktHUkgKygsMNwwKCAxUOLjAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-panel-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+/FxaXMTCxDQyNAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANECLrcEDDKGYQV4+qbie9eGIJEVxTe+QmjUFgnXLLr615oF8x2v0I8DWpF2GV6slkLKSMdYT4nS0WgSkXYAWUbcXgX/gQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-panel_settings-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBMTCxPz+/PzerISChPyqXAAAACH5BAEAAAAALAAAAAAQABAAAANKCLobwRAG4SJw7w5BswoEkQXbRn0h5ggF14FhbIhb68SiOgnbLRsPEovjwwVLRIdhCfwMiR/VZ1A7WS4tntWyynquq+01+h1//AkAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-password-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+/MTCBPz+BISCBPz+xAAAACH5BAEAAAAALAAAAAAQABAAAANECLrcGi6CIAKUKwxSb/ZasXWPMFwBQRQiZwlqAVnEGbRwKz/ndMep3QNUqKV6kpQh6HFoCIaBMDmQTpOsJsaC6XoZ/gQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-penguin-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+/ISChPz+BMTCBISCBAAAACH5BAEAAAAALAAAAAAQABAAAANHCLrRsTC6F6UId1TYiNtMQRQNqARDOlAgJrzlhr7vqlUufbHMoMO8k+8XY4yGtc9pREIORKRTYVoYDgxUVmBqmGCLJzDYnwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-pixie-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBFxaXPz+/DQyNAQCBKSipPz+xPzerPyqXPyCBERCBISCBMTCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARdEMg5Q6C4BjEGyZIlCEFHfJQonEERnB8sE6RxIMkAnGtPBzacjqBQLBiMxS+Y2xmRx+WtSTgmkwQLcwhNKqRCz3VRBOeGvh5wqpPMzO3JQFBguWAYxeiNwnRAEn4RACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-plan-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTCxPz+/Pz+xMTCBISChASCBMRaBAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEIRJKwU4iD23FwEmDeAwBGYaZiehWutEFK6JqtlM7KZhHhOJbuizIUKBHVGFOOaUPgPlGEsSDNjbKWBgcT0oX5CV2qakIg24OTGA0sxjeSWpUC2ivESf90cAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-proxy-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+/KSipFxaXAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANGCAHcziuIuFy44045WxhZpkxCB4GEKA1lpIAiVG7XB1bjPMHxqds3y++S6nGOL1ikpYlkbBSZM/oYfXBVaS8LuXCr2IY/AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-pybliographic-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBMTG5OTi7Nze/NTS5LSuxOTm/MTCxGxaFIRmFJR6JLy+zOzq9IRqJJR2HLSaNKSirNTOxKySLIR6VLS2vOzu/LSqhNzOXHxqNMzK1KSGJHxmFKSabLy2pIx2JJyCJIRyNNS+VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZhQIBwSCwaj8WAEplULpkAZ0AQgEaVA4K0alQWDAdEQrHgNguMRsHxgJiJgcEg0pA4Jk84ZVCoWC4TGG9CAQkZGnUIG3lDAQocCh0eFB+MjRsgIAsLIYNwASKCnk2WVkR+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-realplayer-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIYAAAwWVBwC7BwC9BQC3BQOvBQCtBQCrBQCvBQO1AwKPAwOVBwC/AwGnAwCXAQGNAQCJAQCHAQGLAQGTAwKjBwG7AQCNAQKRAQGDAQCBAQGJAQGPAQGFAQKVAQGBGRiZBweHFxaXDw+PExKRBQSFERGPFxeXCQqJLy+vAwCjJSanFRSVLzCxJSSjIyGhGxubNTW1KyurAQGHAwODKyqrHR2dBwO7AwSZCwqRDQyLCwuLAQKFAwSjAQCLAQCFAQCDAwSbAwGbBQKvBQCzBQC1AQSNBQKtAwOdBQKnBQCxAQabCwOLDQSNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAQABAAAAe/gAABAgGFAwQFBgcIgwEJCguRDA0ODxCXERITFBUWCwMNDxcYpKUYGRobFQEcFx0dGLCxrx6kFQcYHyAhIiIhIyQlJiekESgYHikqKywtLi0vIDCkMQQbLiQyMzQgLDQzJSCkMjU2NzIYOCYyOSYmH+gYOjUBOzw9PT6mGD4P/AORahj4IaECBFI9gAQhJSSSw0g2fGggsEAIw4eRhhBhEGBBgCKkjAgZSRLFESFIRibZx5KlkpYtlbyEuW+Jn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-remote-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBDQyNISChJyGPGReLAQCBMy+hERCHKSipAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARFEEgZqp0Y1KxD9twEapg1kqhwBgKFvqIIjgMRdy4wFIaNbiiCYXDIAUcH328EQsxiIBXAqWn9MtTSTZLNybizEweY8UcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-samba-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIUAAAQCBDQyNFRWVASC/Pz+/PTW1OyytNTW9LSy7PTGxOSenNx2dMTG9Jye5OSKjNxiZMw6PIyK5GRi3AwODMwmJLQCBCQmzPS+DPTejPTaJLR+DPT21OzqtNT21MTCxPTyxOTmnNzedMTyxPz6/ISChOTijNzaZMzOPIzijMzKJLS2BPT29Nza3PTmxKSipOzu7LyGJPTKRNSeDFxaXERCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAMALAAAAAAQABAAAAacQIBwCAgIBsjkAEAoGJgHxFC5TCgWAEajyFUCHA8IICJhTggAr4NSGVsAF8wlnSQWBYLMRUNHMjccTB0AGh5dfh8gIQAiAAJCIyRCfiUmJwEokARok0slKSqPApukAZNDRpqbkZMjSROOI5srLAGwS34tGgEuBCMvAjCBA64ALRgxuyzAMnItQmgaMRcypjMByNR9QjQ0adzeaX5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-scsi-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+/MTCxKSipISChAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANCCLoQwZAFIV6UYgxi79Qa52WDE3bKV6YOpFpO3L5pJcckLBB8/wQEDezWAQpZqIWxFNAUkqkg6HmJOqGuArUqwfoTACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-style-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBOzqBLS2BPz+HPz+rPz+BPz+lPz+zPz+9Pz+1Pz+nPz+hNyuhPz+pIQCBMTCBIQyBPz+/MTCxFwmfCQiJIxOrHw6nJRWtJxmvJxuvJxyvAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVvICACwWieYiCUwVCiKVEEhjHA6YEcxooHBURCsXihaAYGglEzngKBhsMmMDhH0YcBAu16SY2IKiApm81RMXTCblPelDCrXJlI6hSL5SJOSewVdRMUGHtGZICChHsmZHeAgxkaG41/bWxnjV6bUH4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-terminal-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBMTCxISChPz+/MT+/AAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM/CBDcHkoFQasVUIrBe8fRNDwMAWpjUThmtmxk0IYwOaPx/V6XG3hAjmsRa0Qkg6NSOVo6F0nG88g4TUNDpT8BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-wabi-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/ISChPz+xAQC/AQCxPz+BFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARUEMhJgw20XsHxvIEwcKQHBESaDkShmqhKsMb7tW1RHPwOH4ZdYcBDGH+8A2JgLH2MzZHAJgmRBAgZAabNqg7cJMGb5BKSZF4Yfb5Uzmp3piqfS/wRACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-window_list-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCRiXCRaVPz+/CRmZFRWVISGhMTCxESSjPT29DR6dDyOhDyCfPTy9CxqZOzu7Ozq7ERubOTm5ARehAxefPz6/ByaxBSOvBSGrAxynAxqlBR6nBRylAxmhARWdFxaXCH5BAEAAAAALAAAAAAQABAAAAWHICCKQTCeqCgMhJCihXEYSPuKRWIoC6PYsEZikHA4FA4CEJdoJh4QgXRwiOAeQudDIpEZIpPwhCImhyGGAmBSOVgumExG055w1ZPZhpPpUDwzExBqAAUDhxUVTQ0QEgWOOIcDiU1QjoSFFYiKDZYFmAWJlE9bkCM5iouWpiIfBa6frrKYAH4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-winprops-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPz+/ASChATCxISChFxaXKSipPz+xMTCxMTCBPwCBAAAAAAAAAAAAAAAAAAAACH5BAEAAAoALAAAAAAQABAAAARXEMhJqwxAjM23wBMhjGQJEFKhriwrGUcsE3JsvPWBFAAiT7BaIYAA/HAxWk9CO9wAwd0SkJA9g8NiomnDoYqnHDAGroqRyVy3F2i7326LnKKo2+94hT8CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-wp-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBAQCxAQChKSipPz+xPz+/ARCRFxaXEQCBMTCxPyqXDQyNPzerISChISCBASCBERCBMTC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAV1ICCOZDkGgSgMg0AUZWAExyHc7YCQclLYtxtieAoUEApFUIBgnRYMhUHRCDYcDoUIRUhOlYLkYwcIDLvSpAsBiYx0CPQUgXNv4V0ZWEByDBgRcTMGDislTX+CMgISJk1+AQ4zWiYiCCiRDmRbmJ2eKZWhAH4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-xapp-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBISChAQCBAAAACH5BAEAAAAALAAAAAAQABAAAAIyhI9pIa0nYAtPUGlTRszJ10UA8xiNRZZmJKoA25boqW7npeHvlKRHyIn9aKYaz6XwFwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-xcalc-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBISChPz+/AQCBCH5BAEAAAAALAAAAAAQABAAAAI4hI9pwe0Ogpi00hHF2LzzzFlTsIHD45SSx6oCeW4wjK2tl83y7t64pIsJaxrfh2bEAJIlhRPhLwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-xclipboard-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+/MTCxPz+xPzerMRaBISChCH5BAEAAAAALAAAAAAQABAAAANICLoQwdBJIaRjgYbBR66Lo1nfowTER61aWGRd1y5GyrLm+QrxMJ81FQ4T2MV+jUPwBgpVdrdcQ6AUIj8Ha/N06Hq/UpLY5E8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-xclock-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAALy+vAQCBPwCBMQCBIQCBISChPz+/MTCxCH5BAAAAAAALAAAAAAQABAAAANbCLHcrSLKOZcYmDSCsR1aUABAsXDDJwJGa5SBFwgaWxbCG3CWaBwG3C8Y67FawpYiNQscg65fsVkYuoAmJs1pBR522lQB6ILJLqHRwQQOZzYdZnw+dzruDIA/AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-xconsole-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+/ISChMTCxAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM7CLrcGjBKCYK4OGcohv/gxw2aRgyjYJXCmVpr5loke82dfaO03vI5Ha5mwxGOyOSRF2qKKpMoxEFl+BMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-xedit-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/AQCBMRaBPyCBMQCBMTCxPz+BPz+/KSipFxaXPzerPyqXIQCBARCRDQyNISChCH5BAEAAAAALAAAAAAQABAAAARnEMg5gw00yyDGIJi2FUHhDWEWeEXrgaphHEOBJF8KBLKyLINEIAHbyA6/hbDACDSMBt9PIBA6n4HfIElFXTeKg2LbtTSeu7BiPegIvuA1mwrfOB5r4PusCjimZmgUF4F8IhJnhiJ+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-xemacs-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBDQyNKSipPz+/FxaXISChMTCxCH5BAEAAAAALAAAAAAQABAAAANJCBASoXCFoVi8VdL6HHQeB4YjSAxnYQygSLzoSTjbEs9vMF86cbyH34NX+AELQ4zO+Nopm6cBC1PBEQwG6gd3SGo7Xa1STIb4EwAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-xeyes-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/ISChCH5BAEAAAAALAAAAAAQABAAAAI4hI+py50Bw4lyBiEggFjvi2VcqIFhdnaDSabZKrbjS3W1OHz2CkJD/vHlKD/Er2g4Ah3MptPgLwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-xfig-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+BMTCBISCBARCBATCBASCBCH5BAEAAAAALAAAAAAQABAAAANQCLocwbAJ8SIMYgwHHO9Opk2V5xGEplZK0alaui0eDLOB8QTykOKGQ6mnKQWFPILDN8sdng7l69c5CjuKAHNnZb2KnUOhcG3MsmMv7aK2+BMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-xfmail-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPyqXMRaBPz+/AAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANACLHcAVCJSWcYLwaxSPAXBj2bswyiIlUWSr5muGhbdaZjTd1ZzvKMFaOFcbCIpiOnGGs2FM5gLkLrTalQLMCfAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-xload-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAImhI+py+3hEoxnUmBpyBjNzWXfJnkGKJ4dBlbjS7Jni9Zsjec66hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-xmag-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBKSipMTCxPz+/IQCBPyCBMRaBCH5BAEAAAAALAAAAAAQABAAAANICKrR+6+JIRxkc4RBww1TQBBNB21io2rRRKpltaDvis4hvJmzBmuslo+zkZ0yu0rBcwJ1AgXD8gJQMaJTaqRwyGqvzO9M4U8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-xosview-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIMAAPwC/AQCBPz+/MTCxAQChPyCBAT+BPz+BAT+/PwCBAQC/AAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARFEIRJa5Ui663HFEQojqEXCAVhrCxLmGB4kCJM03aIHEdC5rfaJ6UotlavT3AEIxaNLuAyd2wlT0thYMDter0BiWU8AfgjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-xpaint-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBPzerMQCBPz+/AQCxPz+BMTCBASCBPyCBPzC/PyqXMQCxIQChKSipMRaBDQyNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVtICCOYmCaZGoKLBuMbykMA1EURFwCgWAQwKBAxxMQDocgAjEkrYAsoS6QGEYJCgWhWVq4tgJGY+iAVbcBB5jLq/aMbzJsYXK0Arky7JFY+BcJDyckDgEPh4d1aUSFJ2l6ARApDpSUKkQpmSJ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-xv-16:apps apps16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/AQCBPyqXPz+xPyCBPwCBAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM8CLrc/jC+oIK9Lgg7RuietWhCSWkkVZUbEBBnWxXFSVP1eLt7kPM3X86nEhJrtx/P0tuNilCVZEqtNvwJACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-3floppy_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBMTCxARmZPz+/FSWlLSytKSipERCRIyOjISChOTm5HRydNza3GRiZFRSVASCBARCBDTSJIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVrICCOQBCQKBkIw5mqLFG47zoQ+FwbN57TosDhgPD5dMEEIqE04kwlBWKBUEiNVYFpyqAyGEUCgqEtERiNNMLhQKzLQYJg7n7Y4aMAwbCUPvAQeWNgfzQQETAIhSMQEogwgBITQEGGEREmfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-3floppy_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTCxARmZPz+/FSWlLSytKSipERCRIyOjISChOTm5HRydNza3GRiZFRSVCH5BAEAAAAALAAAAAAQABAAAARcEMgJQqCYBjFu1hxReN82EOhYGieaklJwHIjrqnGCJLqNWhUFYoFQCG1FgWXIIDIYNQKCoawQGI0swuFAbKsxgmDsfZjBkwDBsNM90Jot9A3DbBD0Dwiur9QnfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-5floppy_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBFxaXPz+/DQyNISChASCBARCBMT+xAT+BAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARMEMgJQqCYBiFu1sIwdJ+0hSKZnZw4ehPLoW88c0Q7X7JABLlbp+eT/UyzgpADqwgKxKYpeIMZQNWJ4YBhWRHcrgpgQCSkJu3hYPFHAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-5floppy_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBFxaXPz+/DQyNISChAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM+CLoQwZAFIV6UYox61cwaF32UtlkLSYFnulJEuT6qQATxW9W2enurgo6CaggKvKIn91K6mh0gMepydqwAfwIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-cdaudio_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXISChNTS1MzKzMTGxMy+vNSytAQCBOzq7OTi5Nza3Oy6vPy2tOTStPz6/Ozu7Nze3MTKxOS2tOzOvNTqvLT2tDw+BPTy9MzOzLS2tPy+tLz+tLz2tLSynLzqvLzavLTOtNTW1KSipPz+/LzKvMTCxDQyNASCBARCBDTSJIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAa0QIBQGBAYA8Ok0DggFAwHBEIJECQUi8GT0XBMh9YHJDKQTBqUiuUCVmAeiYzmsKlwOt/AAKFIFAIIFx4WHyAhUwIDIgsZFyMkFxchJSYmiBkSBBoIJJwIGgOhiCYFJSEnFyQjFwNZewABISAfFiYnCAEmCREIrwAIFhwVGwcaBAkPGApsQsAVFA0GBQMRbxBTKM0ODQwTEq192ClDgROkBHvYKuNJUu5CKCorX1RDKCkpUn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-cdaudio_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXISChNTS1MzKzMTGxMy+vNSytAQCBOzq7OTi5Nza3Oy6vPy2tOTStPz6/Ozu7Nze3MTKxOS2tNzmvLT2tDw+BPTy9MzOzLS2tPy+tLz+tLz2tLSynLzqvLzavLTOtNTW1KSipPz+/MTCxLy6vDQyNOTm5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAapQIBQGBAYA8Ok0DggFAwHBEIJECQUi8GT0XBMh9YHJDKQTLqUigWsuDwSmMxBQ9lwvoEBQpEoBBAWHRseHyBTAgMhCxgWIiMWFiASJCSHEgQSGQgjmwglGKCHBQUSICYWIyIWAwshIVMBIB8eFSQmCAEFCREIekIIFRsUGgcZEgkPFydrvxUUDg0GBSEREGJfv9AMEySsJxDYQ4DcEhh64UpS6lTs7QB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-cdrom_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXISChNTS1MzKzMTGxMy+vNSytAQCBOzq7OTi5Nza3Oy6vPy2tOTStPz6/Ozu7Nze3MTKxOS2tOzOvNTqvLT2tDw+BPTy9MzOzLS2tPy+tLz+tLz2tLSynLzqvLzavLTOtNTW1KSipPz+/LzKvMTCxDQyNASCBARCBDTSJIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAa0QIBQGBAYA8Ok0DggFAwHBEIJECQUi8GT0XBMh9YHJDKQTBqUiuUCVmAeiYzmsKlwOt/AAKFIFAIIFx4WHyAhUwIDIgsZFyMkFxchJSYmiBkSBBoIJJwIGgOhiCYFJSEnFyQjFwNZewABISAfFiYnCAEmCREIrwAIFhwVGwcaBAkPGApsQsAVFA0GBQMRbxBTKM0ODQwTEq192ClDgROkBHvYKuNJUu5CKCorX1RDKCkpUn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-cdrom_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXISChNTS1MzKzMTGxMy+vNSytAQCBOzq7OTi5Nza3Oy6vPy2tOTStPz6/Ozu7Nze3MTKxOS2tNzmvLT2tDw+BPTy9MzOzLS2tPy+tLz+tLz2tLSynLzqvLzavLTOtNTW1KSipPz+/MTCxLy6vDQyNOTm5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAapQIBQGBAYA8Ok0DggFAwHBEIJECQUi8GT0XBMh9YHJDKQTLqUigWsuDwSmMxBQ9lwvoEBQpEoBBAWHRseHyBTAgMhCxgWIiMWFiASJCSHEgQSGQgjmwglGKCHBQUSICYWIyIWAwshIVMBIB8eFSQmCAEFCREIekIIFRsUGgcZEgkPFydrvxUUDg0GBSEREGJfv9AMEySsJxDYQ4DcEhh64UpS6lTs7QB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-cdwriter_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBFxaXISChERCBMTCxKSipAQCBMTCBPzCxPz+xPzerMT+xDQyNMTC/ASCBPyqXPz+BARCBAT+BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAWIICCKgWAGYyoKA+EWhGGogOAaB6Lr8ygUCYWCkEMoEovBSHZUFI8LGYloODJkhWijMbMdiAwBQEbYxmpExFlkgN3QrliXAcvNAuVt4coYKtQ9BlwLCQQFMAlVSmwEUX8IB1UJiQAObEE6BA9VEDMOEUsDDzoHkZ4LoCkyqyIOCxI9NCOfETJ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-cdwriter_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBFxaXISChERCBMTCxKSipAQCBMTCBPzCxPz+xPzerMT+xDQyNMTC/PyqXPz+BCH5BAEAAAAALAAAAAAQABAAAAR3EEgZhA0zSzGIL4RhaIDgGQeiquMkFImiECmiJMswibdS3wsRhWa4MUSFYKMxMh1oDAFARFiGSjTEVWIAnbCeUJMBSo0C1WXhyJgptC0Dc5EgFECJoo5LCL4RB0UJeRkGMSoEDkUPLYUDDioHgY0kIpYkmJkAfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-dvd_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXISChNTS1MzKzMTGxMy+vNSytAQCBOzq7OTi5Nza3Oy6vPy2tOTStPz6/Ozu7Nze3MTKxOS2tOzOvNTqvLT2tDw+BPTy9MzOzLS2tPy+tLz+tLz2tLSynLzqvLzavLTOtNTW1KSipPz+/LzKvMTCxDQyNASCBARCBDTSJIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAa0QIBQGBAYA8Ok0DggFAwHBEIJECQUi8GT0XBMh9YHJDKQTBqUiuUCVmAeiYzmsKlwOt/AAKFIFAIIFx4WHyAhUwIDIgsZFyMkFxchJSYmiBkSBBoIJJwIGgOhiCYFJSEnFyQjFwNZewABISAfFiYnCAEmCREIrwAIFhwVGwcaBAkPGApsQsAVFA0GBQMRbxBTKM0ODQwTEq192ClDgROkBHvYKuNJUu5CKCorX1RDKCkpUn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-dvd_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXISChNTS1MzKzMTGxMy+vNSytAQCBOzq7OTi5Nza3Oy6vPy2tOTStPz6/Ozu7Nze3MTKxOS2tNzmvLT2tDw+BPTy9MzOzLS2tPy+tLz+tLz2tLSynLzqvLzavLTOtNTW1KSipPz+/MTCxLy6vDQyNOTm5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAapQIBQGBAYA8Ok0DggFAwHBEIJECQUi8GT0XBMh9YHJDKQTLqUigWsuDwSmMxBQ9lwvoEBQpEoBBAWHRseHyBTAgMhCxgWIiMWFiASJCSHEgQSGQgjmwglGKCHBQUSICYWIyIWAwshIVMBIB8eFSQmCAEFCREIekIIFRsUGgcZEgkPFydrvxUUDg0GBSEREGJfv9AMEySsJxDYQ4DcEhh64UpS6lTs7QB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-hdd_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBDQyNIRuVKyCXMSKROzSrOzKpOTGnLSafLySZKxuLMSOVPTWvPzixLSehNyibOzOrGxaVJx+XOzGnFw2FJRuPKx+TPTSrHRWPKyKZPTOpHxOJKyKXFw+HKSipISChMTCxFxaXIRiPNSWXExOTOS2hLR+PLRyLPTWtMyOTASCBARCBPz+/DTSJIyKjIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaTQIBwCAgYA8SkMCAYDARI5ZJQMBwQiWgyoFgwrA3HQ7scQAqFAcEQOUi0zAkFUSFYLghMBloUCDQNGxwdHhwHekcfICEhICIfIxkLJBABJUYCICABIhAOBiYnKJaXmH4CGSkYCCqkSAEfTKenrkOwsrQll0IrS7G5uwArLLaxLbXCLsTFLyDBKy4wZEVHvCwsRn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-hdd_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBDQyNIRuVKyCXMSKRPTWtOzKpOTGnLSafLySZKxuLMSOVOzOrPzm1LSehNyibGxaVJx+XOzGnFw2FJRuPKx+TPTSrHRWPKyKZPTWvHxOJKyKXFw+HPTOpKSipISChMTCxFxaXIRiPHxaNLRyLNSWXExOTPzixOS2hLR+PMyOTPz+/IyKjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaIQIBwCAgYA8SkMCAYDARI5ZJQMBwQiWgyoFgwGgiD46FdDiCFwoDQAEe0TMkEQSFULIcLBloUCDIaDRscHRsNHhhHHyAhISAiHyMkJSYQASdGAiAgASIQKA0pKguXmJl+AiQGFwgrpUgBH0yoqK9DsbO1J5hbsrq8SrgstlJFHy0gwMVFR1J+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-memory-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBISChAQCBMTCxCH5BAEAAAAALAAAAAAQABAAAAI6hA+Bu+HCmgiiRuNoHZBRXQlc84TmcHzm2WVryE1YvMaZIdbVd2zw7lj4bDKGbxK8hHgX3K2JUDD8BQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-mo_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBKSipDQyNPz+/MTC/PzC/ISChASCBARCBMT+xAT+BAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARTEMgJQqCYBjFu1hxBeN82iCIJDgWaYhtntC4ZCzItdhWOD7mdwHLrAAczoKViIh6Vto5lcDjglppp9UpCTALULRaASGS5E4TCnB2rFyqJO5Gw+CMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mo_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBKSipDQyNPz+/MTC/PzC/ISChCH5BAEAAAAALAAAAAAQABAAAANHCLoQwZAFMV6UlBB759Aahw0FGEITZZQmlwoqq1UNDA/xLDhvhQ8rnKPh4f2EropjcDjAhpJl8ylaBJhTaCelvRC7XqLXnwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nfs_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBExKTGRmZPz+/ExOTMTCxAQCBDw6PCwqLIyCRHxyNCQiJOzmxMSybFxSHHRmLIx+NFROHERCRFxaXASCBARCBDTSJIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVWICCOZGmeaEoGKiCwwUAI5zsUBnAUQ0CLNhxLFEDwDAnFzTAsBRYJRsORSwUeDUiEWYtJIhFj7+eKCUdPHmxyNj0nFABXRam0RBSLvZW/VFN1FQYGfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nfs_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBExKTGRmZPz+/ExOTMTCxAQCBDw6PCwqLIyCRHxyNCQiJOzmxMSybFxSHHRmLIx+NFROHERCRFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVLICCOZGmeaEoGKiCwwUAI5zsUBnAUQ0CLNhxLFEDwDAnFzTAsBRYJRsORSwUeDUiEWYtJIhFj7+eKCUdPHmxyNj0nOa6q2qrbW/4QACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-printer1-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBFRWVPz+/Ly+vISChMTCxFxaXPT29DQyNJSSlHR2dERCRFRSVERGRBSmnExOTExKTAT+/NTW1MzOzMzKzMTGxLy6vLS2tGRiZFxeXOTm5IyKjISGhLSytKyqrGRmZNTS1Nze3Nza3Hx6fKSmpKSipAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaUQIBwSCwaA0ikkRgQDJCE5LFgOAicUKUwUCAgBuDE9RkFcL3ggbgQUCwYyIIA8VU32ASDwoEcIAoHCQkHbA8EBBARSX0DXQEPEgQCDYpJExQVAWCHBwcNDUkKChQWBBcYARkanaABExsbHB0FGB4fIKoHAWYhpCIBIyQLJSAJGbtbULUTISa4yEVJJSbO0EtmUkR+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-printer2-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBKSipAQCBPz+xPz+/MTCBISCBISChMTCxFxaXAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEMggqrwYVDGGzRLXEZ0HhgMpFIXxZZzRBsHxXquAUHqCCBgB6YcoFhNAXMWISCQOv6Dt6DMmQwQntHjwXTVL6mH83Ry31qBO8CSQSmVg2GM74aAVij2UTPojACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-scanner-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/MT+/ASChARCRATCxMTCxFxaXKSipDQyNAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARTEMgJgqWBVivEldkUdKSXhVjZfenommglDERh3Tc4E4ZRHAGgkEPr9X6H5AHBERSMRyWzkug8jQXFEhWoOo8dRYxqLXSmGjIJnVaz29Q3fAP3RwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-tablet-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBMTC/Pz+/MTCxFxaXKSipAAAACH5BAEAAAAALAAAAAAQABAAAANECLrc/iosCUEQlEYdRp6dZ4lgKBBEp1kmmpLRMBQu6qWLEdYBn+81F0wnC8oCK+LAQDgGDIaG0vOMPnRIaEUBtW6//gQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-zip_mount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIMAAPz+BAQCBFxaXMTCxPz+/ASChPwCBKSipASCBARCBMT+xAT+BAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARTEMgJQqCYBiFs1lwwdF8VEsR4YVuXoirYFcWbkmY31wPqma2ZwReqBEODQutwEY04oeWqMniGOEzW4HAVZAEImVSCSLDGYIX5/EMoFtNSOWHxRwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-zip_unmount-16:devices devices16 16:photo:16 16:R0lGODlhEAAQAIIAAPz+BAQCBFxaXMTCxPz+/ASChPwCBKSipCH5BAEAAAAALAAAAAAQABAAAANICLoQwZAFIVyUNIx6WybE9kBTFYIiVhXFGXJetbYDaHnlathZk2eDQunw0GwomeGoMThmKETS4PAURCMlZccHXXYct60Y4E8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-blockdevice-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMT+xAT+BASCBMT+/ATCBAT+/ARCRPz+xARCBPz+BATCxISCBDQyNMTCBCH5BAEAAAAALAAAAAAQABAAAARhEMgZwrwYBCFsvhs3eF8wDMJAVBVmnupazKRmGDFxzMVBBjcDQXfYHRA/QmKpKBYRSMoysVgwGEeoJ1ClLhpXhlbiqJobjcA1Sn48qug06+JwP+I1UMCNzmcqaR8lghN+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-chardevice-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/AQCBMTCxISChPz+/MQCBPwCBAAAACH5BAEAAAAALAAAAAAQABAAAANCCBDcHkoFQasVUIrBe8fRNDwMAWojMTZmtmzByp6v7LQhTOLadbkxj3AUWZAcxcUgyYwQm8wYoOCCLgoGK5Nq9ScAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-desktop-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBExKTDQyNHRydFRWVKyqpGxubExOTERCRLy6vFxaXBweHFRKPFxeXAQCBIyKjCwqLMS+tKyurDw+PNze3ERGPPTu5Pz+/Pz6/Nza3MzOzKSipISChOzq7NTW1Ly+vHx2ZOzm3Ix2XJx2XIyOjKyqrJSSlPTexPTixKR2VKxyPCQiJPTy9JSWlHRmTOzSrMzKzJyCbKR+XCwuLOTi5CQmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaeQIBwKAwIiEjkgJBsAgoGwcE5RCQUgAWj0WwcHA8FRLhAcIcKhyIiMSwcwglc2ABTDA2Eo9KQoy0PFxgYGRobDxwBDHRgF44YHQ4bHgkfHBUMHQ8gFp2dISIjEQwfBwIkJR0mICcoJycpKgweCisAEAcPGSwtLi8vsQkNtkMrBxswCQ8uMTINY0kzBCQwNB/DVAArBC0NNdlDM9BDfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-file_broken-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBFxaXDQyNAQCBMTCxPz+/KSipPz+xPzerAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARWEEgQahVijMmD/oRAbBw1FCgaFFrppeo5didsZTSMDoRBSi/dgfUz6Va7HPIQGB6KnpW0EEB4Oshp5ZlTFRBfFs3ZLDihtTAYwZ14nGbzoS3JfO4ffwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-file_important-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBExGTKQqLPz+/KQqNAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM7CLoQwZAFIV6Es15Jqd2ZtzXUMIhXZqJYaZ5aK7zwp6h0zc05i+c6Eg8oCnWOR0eHQGEKnEWHdDoF+BMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-file_locked-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBFxaXDQyNAQCBMTCxPz+/KSipPz+xISCBERCBAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARTEEgQahVijMmD/oRAbBw1FCgaFFrppeo5didsZTSMDoRBSi/dgfUz6Sq7XGp1CByKQZUUWjsgrtcENYXNUodWhAahVRa65G9hmGgnnpzMZ/7xRwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-folder_blue-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBwWHMzKzOzq7ERCRExGTCwqLARqnAQ+ZHR2dKyqrNTOzHx2fCQiJMTi9NTu9HzC3AxmnAQ+XPTm7Dy67DymzITC3IzG5AxypHRydKymrMzOzOzu7BweHByy9AyGtFyy1IzG3NTu/ARupFRSVByazBR6rAyGvFyuzJTK3MTm9BR+tAxWhHS61MTi7Pz+/IymvCxulBRelAx2rHS63Pz6/PTy9PTu9Nza3ISitBRupFSixNTS1CxqnDQyNMzGzOTi5MTCxMTGxGxubGxqbLy2vLSutGRiZLy6vLSytKyurDQuNFxaXKSipDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCAAECg4eIAAMEBQYHCImDBgkKCwwNBQIBBw4Bhw8QERITFJYEFQUFnoIPFhcYoRkaFBscHR4Ggh8gIRciEiMQJBkltCa6JyUoKSkXKhIrLCQYuQAPLS4TEyUhKb0qLzDVAjEFMjMuNBMoNcw21QY3ODkFOjs82RM1PfDzFRU3fOggcM7Fj2pAgggRokOHDx9DhhAZUqQaISBGhjwMEvEIkiIHEgUAkgSJkiNLmFSMJChAEydPGBSBwvJQgAc0/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-folder_blue_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQWFOzi1Ozq7ERCRCwqLPz+/PT29Ozu7OTm5FRSVHRydIR+fISCfMTCvAQ6XARqnJSKfIx6XPz6/MzKxJTa9Mzq9JzO5PTy7OzizJSOhIyCdOTi5Dy65FTC7HS2zMzm7OTSvNTCnIRyVNza3Dw+PASq5BSGrFyqzMyyjMzOzAR+zBRejBxqnBx+rHRmTPTy9IyqvDRylFxaXNze3DRujAQ2VLSyrDQ2NNTW1NTS1AQ6VJyenGxqbMTGxLy6vGRiZKyurKyqrKSmpDw6PDw6NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfCgACCAAECg4eIAAMEBQYCB4mHAQgJCgsLDAEGDQGIkw4PBQkJBYwQnRESEREIoRMUE6IVChYGERcYGaoRGhsbHBQdHgu2HyAhGSK6qxsjJCUmJwARKCkpKsjKqislLNIRLS4vLykw2MkRMRAGhDIJMzTiLzDXETUQ0gAGCgU2HjM35N3AkYMdAB0EbCjcwcPCDBguevjIR0jHDwgWLACBECRIBB8GJekQMiRIjhxEIlBMFOBADR9FIhiJ5OnAEQB+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-folder_cyan-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBwWHNTKzOzq7ExGTCwqLERCRBSKjBRSVGxubKymrNTS1Hx2fCQiJMzq7NTy7IzKxHR2dFTW1Ey2rITKzNzy9JTSzBySlHRydKSipDTW1ByelGzCvIzOzByOjFRSVCy2rCSalGS+tJzSzBxudCR6hCSCjITGxMTm5Pz+/JSutDyChBxydCyOlITKxPz6/PTy9Nza3ISqrGSyrOzm7MzKzDQyNMzGzNze3OTi5MTCxNTO1Ly6vLSutGRiZKyurHRudDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe2gACCAAECg4eIAAMEBQYGB4mDCAkKCwwNjYUOAYcPEBESlBMMjAUFnIIPFBUWEBcYGQoaG5gGggMcHRUeFh+fGCCVIakiICMduiQWJa4fCKkdJicoCcjJKSrPAAIrBSwtLtMv1jDaCDEyMgUzNC3SKCA12gYFMjY2KzMzN98uLdo4cujYoa9BAx4IeSywJSgAjgU8evTIgdDHj4WJHAL54cPiDyAMIzkMsSGIkCGREAU4gAOAn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-folder_cyan_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQWFNze3Ozq7ERCRCwqLPz+/PT29Ozu7OTm5FRSVHRydIR+fIyCdMzGxAxOTBSGhIx6XJSKfMzKzERGRAxOVKTq5Mzy7KTW1Ozi1OzizEzSxGTWzHzCvNTq5OTSvNTCnIRyVNTS1BzKvCSalGy6tAQ6XMyyjMzOzDw+PByqtCR6fCyGjHRmTMS+vJSytDyChCyWlGReVOTi5AxGRKyurDQ2NNza3NTW1AxKTJyenGxqbMTCxMTGxLy6vLS2tLSurKyqrCwuLFxaXKSmpDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfEgACCAAECg4eIAAMEBQYCB4mHAQgJCgsLDAEGDQGIkw4PBQkJBZcQnRESEREIDwoPExSipBUWFxgZGhIXFwkbHBQToQQGFx0eHxoguhEXHCEiIyQGABclJiYnycsSKCkjKisAESwtLi7Y2soXLzDUAaMxMuYuM9kXNDDiAAYFBTU15NGTYeMGNQA4ahAgkEMHiQoxZrTYwWMfIRw9fKio8MMHECAReByUhIPGDSBBhAyJYDFRACJFeBi5cCSSpwM4APgJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-folder-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBwWHMzKzOzq7ERCRExGTCwqLARqnAQ+ZHR2dKyqrNTOzHx2fCQiJMTi9NTu9HzC3AxmnAQ+XPTm7Dy67DymzITC3IzG5AxypHRydKymrMzOzOzu7BweHByy9AyGtFyy1IzG3NTu/ARupFRSVByazBR6rAyGvFyuzJTK3MTm9BR+tAxWhHS61MTi7Pz+/IymvCxulBRelAx2rHS63Pz6/PTy9PTu9Nza3ISitBRupFSixNTS1CxqnDQyNMzGzOTi5MTCxMTGxGxubGxqbLy2vLSutGRiZLy6vLSytKyurDQuNFxaXKSipDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCAAECg4eIAAMEBQYHCImDBgkKCwwNBQIBBw4Bhw8QERITFJYEFQUFnoIPFhcYoRkaFBscHR4Ggh8gIRciEiMQJBkltCa6JyUoKSkXKhIrLCQYuQAPLS4TEyUhKb0qLzDVAjEFMjMuNBMoNcw21QY3ODkFOjs82RM1PfDzFRU3fOggcM7Fj2pAgggRokOHDx9DhhAZUqQaISBGhjwMEvEIkiIHEgUAkgSJkiNLmFSMJChAEydPGBSBwvJQgAc0/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-folder_green-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBwWHNTK1Ozq7ExGTCwqLERCRByGRBROLGxubKymrNTS1Hx2fCQiJMzm1NTy3ITGnKSipFzShFSydIzKnMzq1Nzy5JzSrByKTBweHDzOdCSaTGy+jJTOrFRSVDSuZCySVMzq3IzKpBxuRCR+TCSCVGy6hPz+/JSunDyCXCSOTCyWVCyeVPz6/PTy9IyqlCSCTGSuhPTu9Ozm7Nza3Dx+VBxyRDQyNMzGzNze3OTi5MTGxMTCxLy6vLSutGRiZLSytDQuNKyqrHRudDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe+gACCAAECg4eIAAMEBQYGB4mDCAkKCwwNjYUOAYcPEBESlA4TjAUFnIIPFBUWFxgZGpWXjYIbHB0VHhKtER+UCyC1ISIdxbkSGSMYJAiCByIlJicaxbgoEhDNAAYpBSorJScnLC0uHRLaCC8wMAUNMeAnMgkz2gY0NDUFKTYNBDE3cKzQlkPHDh42djRo0KNhjwUGBgXIscAHgQY6fPz4AQRioolBhGwUIiRIxEiEhoCYQKSIEZSHAhzIAcBPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-folder_green_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQWFNze3Ozq7ERCRCwqLPz+/PTy9PT29FRSVHRydIR+fISCfOzu7OTm5OTi5MzGxAxOLByCRJSKfIRyVERGRKTmvNTu3KTWvOzi1OzizIx6XIyCdFTOfGzSjITClAxGJOTSvNTCnNTW1Dw+PAxKJCTCVCyWVGy2jAQ6XMyyjMzKzByuZCR+TCyGVNTm3HRmTLy6vJSypESCXGReVLSurDQ2NNTS1MzOzKSipGRiZMTGxMTCxJyanDQyNLSytKyqrCwuLDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfCgACCAAECg4eIAAMEBQYCB4mHAQgJCowLAQYMAYiTDQ4FCgoPEBESnBMUExMIoBUWFaEKBRIXExgZGqoTChscFR0epQYTHyAhGrkUIhMcIyQWJSYAJygpKSrIyissFi0GABMuLzAv19kaMRMyM+ABojQ15ObYEzYz0wAGBQUbBPHkYNQQcQMcABwEEhLIkUMHjRQvTuzIRwgHjx45evTwMWPGiR8GJQGxcWNGkBtCTlBMFGDIgh9CJhCJ1OkADgB+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-folder_grey-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBExKTBwWHMzKzOzq7ERCRExGTCwqLHx2fKyqrNTS1PTy9CQiJNza3OTi5GxubJSSlISChLSytFxWXDQuNKSipBweHISGhFxaXIR+hLSutFROVHR2dFRSVGReZKymrLy6vFxeXNTW1Pz+/KSepERGRPz6/PTu9Ozm7DQyNMzGzMTCxMTGxGxqbNTO1Ly2vHRydKyurHRudDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAawQIAQEBAMj0jAgFAwHBDJoUGASCgWDEMxETg2HA8FFaJgFgpdYSMiUYAnlErCsmgKL5iMJqJwPzYcCB0eahAZH4gSESAhYAoGQggiBh4eFB8iehEWI5AABiQFFpMeHCIiiCWeJicMDAUOEZMcHBkSngYMKCkpJA4OBCWTk0IqKw8PvwsLLCwtLBCeRCouLC8vK80wGzEHSQEqHxMhMBMyLtLfKh4WCjM0UUgBCCoAfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-folder_grey_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBExOTBQWFNze3Ozq7ERGRCwqLPz+/PTy9Ozu7OTi5HRydIR+fISCfPT29Pz6/PTy7MTCxCwuLJSKfIx6XMzKzDQyNOzizJSOhIyCdOTm5Dw+PJSSlKSipLy+vOzi1OTSvNTCnIRyVNTW1GRiZFxaXAQ6XMyyjNTS1GRmZFxeXHRmTFRWVKSmpKyurMzOzGxqbMTGxLS2tJyenKyqrDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAauQIAQEBAMj0jAgFAwCA7JYwCRUCwWgoCBEUBOG47CAxJhSrqT5wERplQoC8ijYDEcJASJ4HKIYDAZFRoFGxwXHR4eH3lqICEiIyQcAAcMJSaIeHonKCMpkxMqAismKyuIixMsH5MBDw8eJS0mJpcdByYSkwAcEQUEBC4lo7UHL7sXwMAkKTAeogceu0QXMRIwFjISMxITNNNDARcmLx8zNTUH4F64NDUTNlHsk35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-folder_home-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBDw6PBQWFCQiJAQCBFxeXMTCxJyanDwyLDQqLFRSVLSytJSSlISChCQmJERGRFRWVGxubKSmpJyenGRmZLy+vOzq7OTi5Ly6vGRiZPTy9Pz6/OTm5ExOTPT29BwaHNza3NS6tKx6XGQqBNy6pIyKjDwGBOzOvJSWlDQyNIRaLNRiBGwmBNyidLxWBHxGFNySXCwqLKyqrNR6LKxGBNTS1NTW1Jw+BEweDDQ2NAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaoQIBwCAgIiEjAgAAoGA6I5DBBUBgWjIZDqnwYGgVIoTGQQgyRiGRCgZCR1nTFcsFkHm9hBp2paDYbHAsZHW9eERkYGh4eGx4ag3gfSgMTIBshIiMkGyAlCCZTEpciJyQjGxcoKUQBEhcbKiQrLB4XEltDrhcaKi0utbcJra8bLzDAGrcxrTIXHi8zNCypEsO6EzU2IzQ3ONoTzK0BCAkDMQkIOTFlAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-folder_html-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBERGRBQWFMzKzOzq7CwqLDw6NARqnAQ+XHR2dKyqrOTm5ExKTERCRHRydMTi7NTu9HS+1KSmpBweHDy67DyixHS61ITG3AxypByu7DxinBw+ZERmdIySjITC3ARypExOTDRurIR2RPTSdJyulEyGvBw+bFSyzJTK3LzKvPzivOTixNTChLSybGyCfCRSnBQqRASGtFyuzDw+PCRShPzy5OzerOTShKyaTEx6pCxerGRufBR+rOTezPTShNy6bER+1BxCfBQuRAxelFSixBw2VISq3GySrPTWlHyanIyitFSO3IymtCRujAxWhCRqlCQ6XGyWvNS2bFyGvDxuvCRSpLy+vMS+vGxqbFyO1GSi3EyO1FRaVCQuPLS2tDxyzKyWNFxaNCQyPGxubCxajERSVExKNJyenAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfZgACCAAECg4eIAAMEBQICBomDBwgJCgsEDA0BDg8BhwYQERKUDxOYDAyeghQVFhehGBmVlwwOqxobHB0eH6EfIAkPIYIiIyQlJhsnKBcpvrYiKissLS4vMDEyFjOvNAA1LDY3ODk6Oyc8PTIyFzQ1Jj42P0A6QTtCQ0REIEUORkdIkihZwsSekBhNnDyBciCKiSNSplDRUcWKkRhXCGDJYgiGli1cpuTocsILjytfFmRpACAGRTBhRogZgzHlAjKGWnIoY+bMgRgBDHRBo/LAIZoxuhwKatRPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-folder_image-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPz+BAQCBExKTBQWFMzKzOTm5CwuLERCRARqnAQ+XHR2dKSmpHRydCQiJMTi7NTu9HS+1Dy67DyixITC3BR2pBweHByu7ASGtFSyzHS61AxypExOTBSazBRupJQOFBSCtDxKfKTa9AxelNz61MTaxDw+PPzGpLweHJTO3ESu3DRilFymXCxKRBRypBR+rDwCBNxmVORiRKQWFCyKvJTWhDSOPCRONFSixDQaHNROPNQ2JLRubHTC5DR6rHx6fFSqRCRyLGRmXGxqbIymtCRujAxWhMySjMQ2JMyqrKTW5ERijJSenFSGXGRmZLy+vMTGxMTCvERGRMxCNOzq7NTe5LSurISKhHR2fLy6vLS2tKyurGxubCwqLOSKfOzy9Nza3KSmrIyGjGxmZKyqrIRqZIyKjFxaXJyenDw6PDw6NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAffgACCAAECg4eIAAMEBQICBomDBwgJCguMAoUMAYcNDg8QlAyXBaWcgg0REhCfExSVpIYAFRYXEhgZE60aCQwbghUcHRQXtri6DxMHgh4fICEiIyTFtxkOJQAeJicoKSojKywtLsUZJS8wMTIpMyA0NTYKIiIaNwc4OTo7PD0+P0BBhAwhUkTFAQNGjiBJomQJExsMmjh5AkVIFANQpEyhsqSKlStXmmDJomVLFC5Gunj5QiALmDAKxGSpMsYiAC5kqjhZUOaKmUdmzoAJgkaQgQYCmogJEmRQAC5pAPgJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-folder_important-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBExGTKQqLPz+/KQqNAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM7CLoQwZAFIV6Es15Jqd2ZtzXUMIhXZqJYaZ5aK7zwp6h0zc05i+c6Eg8oCnWOR0eHQGEKnEWHdDoF+BMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-folder_locked-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQSFMzKzOTm5CwuLERCRARqnAQ+XHR2dKSmpOzm5GxqbCQiJMTi7NTu9HS+1HRydOTm1Ozq7Dy67DyixHS61ITC3AxypERGRBweHByu7ASGtFyy1DSOtDRmfExOTBSazBR+rCwqLAxWhAxelByGtDSaxAwODHy+1Dw+PPT29IyqvCxujOzu7NTW1Nza3ExGJJyebKyqfMTCpFRSPOTi5DQqHOTezDw2NMTGxKyqhMTGrGxmXDQ2NMTCxMTGpHx6bHx2bBQWFIyOXDQuDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCAAECg4eIAAMEBQICBomDBwgJCgsEDAKFDQGHDg8QEZQSlxMUDJ2CDhUWF6AYGZWXFBqCGxwdFh4XGK8fIAohtiIIIx25EZwBDREHgiQjJSYmGScoKSoRKQ8rggIsDC0uJS4oGygoAyjdAAcsLxQUMDEyMzQ1EzapBy8MDDc36tFwgONFjlQ6dgCEEZBHDx8+ctRIRehHAyAwZASZIGRIEBoUBwUwIGMCiwFEaBQJichIjo9FZLBsacRIAB0A/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-folder_man-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQWFMzKzOzq5ERCRCwqLARqnAQ+XHR2dKSmpHRydCQiJMTi7NTu9HS+1KyqrMzOzOTi5Ozu5Dy67DyixHS61ITC3ARypOzq7ERGRFRWVJyanByu7ASGtFyy1Hy+1FRSVOzu7BSazBR+rFSyzJTK3Dw+PFxaXPTy7LSyrAxWhAxelLy6vMTGxNTS1Ly6tFyuzMS+vPz69NTW1MTCvIyOjPT29OTm5HRybFSixLy+tLS2tISGhGxubIymtCRujCRqlHx6fNza1GRiZMTCxGxqZLy+vFxeXLSytKyurGxqbISChFxeZDw6PDw6NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAffgACCAAECg4eIAAMEBQYCB4mDBggJCguMBgEGDAGHDQ4PEJQKERITFBOdgg0VFhegGBmVlxobABwdHh8WIBchsLIKIiIjCyQZJR+7JhcnoBAoKSoqKywtLi8wMbsyrwYpGhowHTMqNCqkyR8XKBwTNTY3KjgFOTopLS0ZO98wPD0+JhR490MAkCAshHyTsCLCEAlEYEgoIsCIjRlHDNzy0UFBDBtIbBzZ4KJHBB0aAQhIoqCHESQ9dAjooWQJE1uCBBRpkoSDExEcUnRYwOTJIQECNmwQwEFQgANQAPgJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-folder_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQWFOzi1Ozq7ERCRCwqLPz+/PT29Ozu7OTm5FRSVHRydIR+fISCfMTCvAQ6XARqnJSKfIx6XPz6/MzKxJTa9Mzq9JzO5PTy7OzizJSOhIyCdOTi5Dy65FTC7HS2zMzm7OTSvNTCnIRyVNza3Dw+PASq5BSGrFyqzMyyjMzOzAR+zBRejBxqnBx+rHRmTPTy9IyqvDRylFxaXNze3DRujAQ2VLSyrDQ2NNTW1NTS1AQ6VJyenGxqbMTGxLy6vGRiZKyurKyqrKSmpDw6PDw6NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfCgACCAAECg4eIAAMEBQYCB4mHAQgJCgsLDAEGDQGIkw4PBQkJBYwQnRESEREIoRMUE6IVChYGERcYGaoRGhsbHBQdHgu2HyAhGSK6qxsjJCUmJwARKCkpKsjKqislLNIRLS4vLykw2MkRMRAGhDIJMzTiLzDXETUQ0gAGCgU2HjM35N3AkYMdAB0EbCjcwcPCDBguevjIR0jHDwgWLACBECRIBB8GJekQMiRIjhxEIlBMFOBADR9FIhiJ5OnAEQB+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-folder_orange-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBwWHNTO1Ozq7ExGTDQuNERCRJxmDFw6DGxubKymrMzOzOzu7Hx2fCwqLOzaxPTm1NSyfKSipBweHOSmRMSKRNy2jJxuFFw+DKyqrOSeJKxqFMyaXNSyhNSufFRSVMSCJKRyHLRuFMSORNy6nPTezHxaFIxmFJxqDJxyHPz+/LyqjJR2NPz6/NTS1KyehIxqNJRmDLyWXPTu9PTy9Ozm7Nza3MzKzMzK1OTi5MTCxMTGxDQ2NMzGzLy+vLy2vKyurGRiZLSytLy6vFxaXHRudDw6PDQyNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe/gACCAAECg4eIAAMEBQYGB4mDCAkKCwwNDgYBBg8BhxAREhOUDxSMBQWeghUWFxOhGBkaCxuMBqscHRceHyCwCbMhqyIZIx0kJR4gJicSIAiCECMoKSorKyS6yhHQAAYsBS0uKSkZHSsdHc+CCC8vqDAxMtQzJDTdBjU2NwUsODg5Wsxz0e2ADhw7/sEgwKOHwwW3BAXwsYAHARg/eAAJIgRiogAHhhApEoSIkCERI4E0QmHDESSREAWAkASAn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-folder_orange_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQWFOTm5ERCRCwqLPz+/PTy9PTy7OTi5FRSVHRydISCfIR+fPT29Ozu7MTCxFw+BJxqBFQ+BJSOhIRyVMTGxPzSlPzmxOTGnOzizIx6XIyCdOyeLPSuTNSubOTSvNTCnNza3Dw+POSGBLRyDMyeXAQ6XMyyjMzKzMyWBKx6FJx2FHRmTLy+xDw6PLyqjJR2LJRyDFxaXOzq7JRuLEw2BKyurDQyNNze3NTW1NTS1MzOzJyenDQ2NGxqbLy6vJyanGRiZLS2tKyqrCwuLKSmpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfEgACCAAECg4eIAAMEBAUCBomHAQcICQoECwEFDAGIkw0OBA8PEIwRnRITFBIHDRAVFhWipBcFEhgZGhMSEg8bGxUcHQQKth4fIBoburwbISIWIyQAEiUmJicnyrooKRYqBdQrEywt1yfJGxQuLzCEozEyM+XnEjQv4QAFEDUKCjE2JrRoYeMGjmkAchAYoWPEDh49YrBQ5SMfoR9AXvRQcSFCkBcUhFgcFCDHEBxBiOAoQgFhpABGaPg4IiFHJE8GbPoJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-folder_red-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBExKTBwWHMzKzOzm7ERCRExGTCwqLIw6FFQiDHx2fKyqrOzu7CQiJOzOxPTe1MySfKymrOzq7Nx2TLxmTNSelJQ+FMzOzNxiNKw+HMR6ZMyWhNSajHRydFRSVLxSLJRKJKRKJKQ+HNSWhNSmnHQ6FIRGHJRCHPz6/LSajIRONPTu9Nza3KyShLR6ZPz+/DQyNOTi5NTS1MTCxGxubGxqbMzGzLy6vLSytGRiZHRudDw6PAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAanQIAQEBAMj0jAgFAwHBDJoSGhWDAIDUHgsAgcHQ9IhLqQMAsTr9BBqUTClktVgmkYhIOMprLhdOBUHh9rICEiIyN8JCVwdwAOIiYnJyiHiRtvjgYpBSorJgknIpYRmikpLAUtLp+hIy+aLKkFMC0tGJ4mK44xBDKqLTMEBDTFNY5EMTY0MzM3NDg4OR7IQwExOjnROTk6B1FC1x8SEjs84EcBCDEAfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-folder_red_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQWFOTi5OTm5CwqLPz+/PTy9Ozu7Nze3Ozq7HRydISCfPT29PTy7MTGxFQiDIw6FJSKfIx6XPz6/MzKzERGRNyypPTWzOzi1OzizIyCdDw+PNRuTNyCZMSSfOzW1OTSvNTCnIRyVNTS1ERCRMxGFJxGJIRKJLyCbAQ6XMyyjLRWFHRmTLy+xLSelIxWPEQeBGReVIxOJIRSPKyurDQyNNTW1JxOLEwiDKSipGRiZMTCxLy6vJyenLS2tCwuLFxaXKSmpDQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe+gACCAAECg4eIAAMEBQICBomHAQcICQoLAoUMAYiTDQ0LDg4PCgQQnBESEREHoBMUEwUVDgsWFxEYGRiqEQ8aG68cBQQdER4fIBghu6saIiMkJSYAEScoKSrJyxIrLNEd1C0p1ygo2coRLi/gAaIwMSnx5SoyM+uCHQ8LChrv8TQ1ZNiYBuCGgoMKcJSwACNHCh07wAkK0IFHj4UQevjwEeGHREk3ZtjwAcSGjQgfEwUIIuTHEJSROhkgAsBPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-folder_sound-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQWFMzOzOTm5ERCRCwqLARqnAQ+XHR2dKyqrMzKzHRydCQiJMTi7NTu9HS61KSmpDy67DyexExSVITC3AxypBweHByu7FRiZDRiZHy+1ARypExaXBy2xGRqZFSyzJTK3AQ+RByqtASCtASGtFyuzDw+PATC1ByGlFxeXISGhJSWlFRWVAxmlBR2pBR+rAQ2PAS2xHS2vMTCxJyenLS2tCRujAxWhAxelFSixAQaHARibARudAR2hEySnPTy9Nza3GRiZNTS1IymtCRqlARWXDyCjPz6/MTGxLy+vMS+vGxqbAQiJARaZEx+hLy6vKyurERGRBQuNCw6PISanFxaXDw6PCQ2NDRGRDw6NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfYgACCAAECg4eIAAMEBQYCB4mDBggJCgsMBQIBBg0Bhw4PEBGUDRKMBQWegg4TFBUVEBYXlZeNghgZGhsCFRyhFh0JDRWCAx4fGg0gCiERIqEcBoIjHyQeDcMlJhQnEQ8oANQpKissLS4vMDEmJhEoMjPxNDU2Ny44OTo6FzsGPD0+fgABEUTIECIMiuAzIk3GkR5IbgRJMoSAkiVKmDSRBsDJEyg1hBQYUqNGlBtSGkwZRGUDEyILWCxYcmPBgiYrB1WxEsBTgANXbCwYggVRFi2Ifm4B4CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-folder_tar-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQWFMzKzOTm5ERCRCwqLARqnAQ+XHR2dKSmpHRydCQiJMTi7NTu9Hy+1ARypDy67DyixHS61ITC3Ozq7BweHJySbJyWbAxypExOTPz21KyqjPz67OzmxFSyzJTK3LSujASGtDw+PKSehPz69Pz23OzitPTqvOzerKSaZBR2pBR+rKSefMy+dKyeTIR2NAxWhAxelFSixJyadOzirLyubLyqVJySPHRmJIymtCRujCRqlPTqzOzW5OzSzNzSrLyqXLSeTJSGNMTGxMS+vLy6vGxqbJSKZOzOxNzGtNzOhKSSRIR+LGReHLy+vKyurOTWlHxyJFxSFLS2tKyqrERGRHRuRNzKfNTGdGxeJGxiNFxaXJyenDw6PDw6NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfcgACCAAECg4eIAAMEBQYCB4mDBggJCguMAgEGDAGHDQ4PEBEJDJcFp52CDRITFKAVo6UEFgaCFxgZGRgUFa8apBsAuhwdHh+5IBQhrwYZIh3PHdAdGSMTyQ4kJR4mJycdKCkqKywtIyMUJC4cKR7EKC8wMTIzMxE0BjUmJjY2NzgwcuggsIOHjB7NfPwAEkTIkBxEdBQxUuQIEgNJgihZwgRGEyJOnhyBciTKxSRSpDBh0iRGjClUjlSJYgXJFQBYbmTREmOLDi4BDnTxsgDJl0E5uXBBFBQMAD+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-folder_txt-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAMR6RPwCBAQCBExKTPzGjBQWFMzOzOTm5ERCRCwqLPyGBPzKjARqnAQ+XHR2dKSmpMzKzHRydPyGDNTu9Hy+1OR2BNSOXHS+1MTi7ITC3AxypOzq7KRKBPyCDOySZPzizPTWxFSyzHS61ITG3FROTCQSBMxmJNRyROy2lOy2nASGtDyixJTK3FxGNIRWLMR+XPzStPTKrBRupBR+tFyuzDw+PDQuJIRSNAxWhAxmnBR2pBR+rPT29FxaVEw6LKRuVIx6ZISitCRujAxelAxmlFSixOzu7JyWjBwaFKSShNTW1MTGxDQ2NMTCxNze3Nza3HRqXMS+vGxubGRiZLSytCwuLERGRJyenGxqbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAfLgAABgwIDg4eIAQSCBQYHCAMJiYMKCwAMDQ4PEAcDAggRApQSlhMUmJqOBweiFQoKBBYXGBMZGpkPBhsIHBUdHh8gISIjtCOoJCUcJicoHykqK8MstBQIASUtLi8wMTIzKtE0Ihg1gwg2Ny8xKDg5OjvhItcBCDw9Pj9AQUI4Q0QMipirZ2TDERJIkihZwg+HEHpMmjg58OQIFANLomSUQi+AACZTohiAkDEKFSocJwmoMoWKSSoPpFiZdEhAgh5XHmBhQjORTZ5+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-folder_video-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExOTBQWFMzKzOTm5ERCRCwqLARqnAQ+XHR2dKSmpHRydCQiJMTi7NTu9Hy+1Hx6dJyenLy6vIyOjDy67DyixHS61ITC3ARypOzq7ERGRFxaPKyqrBweHByu7ASGtFSyzITG3KSOPKyurBSazBR+rJTK3HS+1Hx6ZNzObAxWhAxelAxmlBRupBR+tFyuzDw+POzibNzOZIyqvCRujLyiPJyCPJSWlNTS1ISitFSixHxiFGxeJFxWLExKNCRqlDw2BFROHHxqPMSqVISChMzOzGxqZISCbLSaRKSWTFxWPNzGZNTCZLy+vLSytGxubJSSfGRiTMyyVLymTLyiRMSqTEQ+JGxqbNS+XNzKZOTWbLy2ZFxaXDw6PIyGbOzidOzifMy6XCwmFGxmXDw6LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfigACCAAECg4eIAAMEBQYCB4mDBggJCguMAgEGDAGHDQ4PEJQREowFBZ0TFA0VFhegGBkJEZcaGxwdHh8gFiEXGKAiowIjHCQlCCYgvL4noCgGKSoGCyssLS4vyxYwrzEyM9MSNDUrK9jKIBcGNiMjNwY4Gjk65dcIOwY8PT0+PwYUAuTIQaDeCiAGgggZMoQDEQNFchghMIHiEQNIkihZwoRJkx8RCDhxMuEJFAMGokiZQoRKFStXjpQk0QHLBgDRrEzJomULlwFHukhYgMWLIANfwIAJw+WKmDFkAjQoA8BPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-folder_violet-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBExKTBwWHMzKzOzq7ERCRExGTCwqLHQWhEQOVHR2dKyqrNTS1PTy9Hx2fCQiJOTK7OzW9LyKzGxubLRW1JxOtLyCzMSS1HwijKSipLQ61HwinKxuvHQajFRSVJQytIQqlKRqvMSe1GQebHQihLSCxNzG5Pz+/KyStHQ6hPz6/PTu9Nza3KSGrJxmrOzm7MzOzDw6PDQyNOTi5MzGzMTCxGxqbLy6vLSytHRudGRiZLy2vDQuNFxaXDQ6NCH5BAEAAAAALAAAAAAQABAAAAaoQIAQEBAMj0jAgFAwHBDJoSGhWDAaDkPxEThCIpIJlcJgFgpdIaRiuYAxGcVD02gKBxuOpXPBvD1VH2ogISEceiIXI2ATBmohJAklGYaIJieOAAIoBSkqJCUlHJUmmQYrDiwFLS6foRwvpqkwMCstDTGtJCoyQjMELTQttw01Nsc3B0MBMxQ2DSfGNjg5OplHzDs5ODw5DMlRQgE9PhoMOjPh2BA/AH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-folder_violet_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQWFOTi5OTm5CwqLPz+/PTy7Ozu7HRydISCfPT29Ozq7Nze3MTGxEQOTGwahDwKRJSKfIx6XOzi1Pz6/MTKxNSi5OTS7Mym1OzizJSOhIyCdDw+PKxSzLRq1LSCxOTSvNTCnIRyVNTW1JwixHwqlKRutOTS5AQ6XMyyjNTS1JwerHQmfIQylHRmTLzCvKyWtHRChHwuhFxaXERCRHQ+fLSytDQ2NKSmpGxqbLy6vDwOTJyenDQyNKyqrCwuLDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCAAECg4eIAAMEBQICBomHAQcICYwChQoBiJMLCwUMBw0NDg+bEBESEAcLDRMUExUMFggXAhAYGRoREBAIGxscFB0EBB4QHyAhGrq8EBsiIyQlHgAQJicnKMspuyorJCzVEi0uLy7Z2xopEDAx1QEMDDIzLjTZ2hI174I2CQ0EHMi4ge7EDQk4qgHI4aChAxYsLsg4J0GHQkI5dsSIeCFGDB49fFwcFOBHDRw8cOAAAmEkpyA1fOjoISQSJwPV/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-folder_wordprocessing-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExOTBQSFMzKzOTm5ERCRDQuLARqnAQ+XHRydKSmpExKTCQiHMTi7NTu9HS+1HR2dCQiJDy67DyixHS61ITC3AxypKyqrBweHGxqbGRmZFxaXFRSVERGRPz+/ITG3JyalOze1PTm3Ozi1PTm1Hx2bJTK3IyOjPTy9CQqJFyuzDw+PNTGnDQyNPTq3Ozq7MS2hASGtKyaXCwqHBwaHFxWTKyahLSijKyehHRmXHRqNFSixHxyNAwKDERCPAQGBCwqLIymtCRujAxWhCRqlMS+vMTGxIyCVJSSfLy6vLS2tLSytGxubCwqJExGJEQ+JBQWFJyanDw6NDQ2NBQaFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfUgACCAAECg4eIAAMEBQIGB4mDBggJCguMDAEGCgGHDQ4PEJQRlwWmnYISExQVoBYXCREYjAaCGREaGxwdHh8PIJQKhgAhIiMkJSQkJhUnrrUGKCkf1B8pGyoUK60sLSouIS8vMCUhBw0xMjIVBjM0NTY3ODk5Og0NOwgXPCw9AD4BBvwwMABIgCBChhApUqtBhgw1INaIWMPIESMaGiIRsbFjkhpKlmDQYKgGx5MdDyxhgqFJLSdPoMiU+YRGFA5SRk4RRCWDix9TnFRxISiAE6J+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-folder_yellow-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBwWHMzKzOzq7ExGTCwqLERCRJSSDFxWDGxubKyqrNTS1Hx2fCQiJOzqzPTy1NTKfHRydOTWTMSyTNTKjNzOjJyWFHR2dKymrOTaLKyaFLyyRMS6ZFRSVLy2JKSeHNTOnNTKhHR2FISGHIyKHKyeFOzmxPz+/LS2lIyCNJSWJMzKfPz6/PTy9Nze3KyqhLS2XPTu9Ozm7Nza3MzK1LSyjIyONDQyNOTi5NTO1MTGxMTCxMzGzLy6vLSutGRiZLy2vKyurKSipAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe0gACCAAECg4eIAAMEBQYGB4mDCAkKCwwNjYUOAYcPEBESlBMMjAUFnIIPFBUWnxcYChkajAaCAxscHR4SrREWlBkfqSAYIRy5uyKfIwipISQlJhgnx7oSKM0ABikFKivQCSwn1C3ZCC4vLwUwMd/RGDLZBjPqNCk1NTY33zjZOQQ1dOBrsIMHjx49FtQSFCDHgh47GvhA+AOIwkQNgwARUnHIxUiEcnwgwmBBDpCHAjw46ScQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-folder_yellow_open-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQWFNze3Ozq7ERCRCwqLPz+/PTy9PT29FRSVHRydIR+fISCfOzu7OTm5MTCxFRWBIyOFFRSBJSKfIRyVOzqnPTuzNzapOzi1OzizIx6XIyCdNzORNzSZMTCfOzqzOTSvNTCnNTW1NTGFKSaHLy6ZAQ6XMyyjMzKzDw+PLS+DHyGHIySJHRmTLy+xLS2lIyKPISGJGReVOTi5ISGNExKBKyqrDQyNNza3NTS1JyeJKSipGxqbMzOzLS2tJyanKyurLy6vKyutCwuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCAAECg4eIAAMEBQYCB4mHAQgJCowLAQYMAYiTDQ4FCgoPEBARnBITFBIIoBUWFaEKBREGFBcYGaoUChobFRwdBRAGEh4fIBkhuqsbIiMWJAYAFCUmJifJG7ooKRYqK9QsLS4T19kZGxIvMNMBojEyMy4u5xQ0EeEABgUFBDUxbJBzYeMGjmkAchBYqGPHjggxeMy40UMfoRw+IvxQoSICEBgUgiCUlIOGkCFAiOCgYDFRgCILgqxsGYnQgRwA/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-ftp-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaXNze3LSyrJyanPz+/Ozq7GxqbDxinBw+ZERmdIySjHRydMzOzPT29CwuNDRurIR2RPTSdJyulEyGvBw+bLzCxIyKhGxubERCRLzKvPzivPTmxNTChLSybGyCfCRSnBQqPLy6vLy2rCRShOTixPzy5OzerOTShLyaVEx6nCxerGRyhOTi3OzaxPTShNy6bEx6rER6zDRitBxCfPTq3LyulBw2VISq3GySrPTWlHyanIyitFSO3PTm1Ozi1LyqjDQyNCQ6XHSq3GyWvDxuvCRSpLSqpOzezAQCBCxGZCRKZExGLDQuHAwaLBQWHKymnOzexARCBJzOnGy2bDyePCxKJOzWvLymhAx6DAyGDDROLOTOpHRmVLyidLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfRgACCAAGFhoaDiQECjIwDAQQBiYKLBZYFBgcFkZMICQoLlwwNDgQPghAREhMUCBUWBRcMGBmnEBobHB0eHyAhIg4CIxenJCUmJygpKisVLAIGLSMPJBQuJi8wMTIzNCEWJjU2Dzc4OTo7PD0yK94DPj9AQUIUQ0QwFDFFRjchRz5IbARJEkLJkiVMmDRx8uQBlCgbgDyQMmUKlYpTqlSsYsXFFSwTK2bRMmWkyCxbuICkmKVlySwvpXTh4mWilJs4c3bB8uXLqUEBHggdSvSBn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-link-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBFxaXPz+/AQCBKSipAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMgCLrc/jDKSau9OL/AuwxCKAzfOIwlcZIRKLJQMMyz5CcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-network-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBISChPz+/Nza3ARaZESanCyKlARudARGTLy+vNzq7ARmbMTCxARufAROVMzOzKSipARyfOzq7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVmICAGZFmKQiACweCSBImq41AYB5IodLq2hwWO0ejRWDac48Gb/QKNqNRoqspmrVcAUuIJBANS8sBIFCORUgooPEh4J8B67NgdsVBp9C5XWfl9LRMTCyReX19hARNojWlWLH+AAH4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-pipe-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBISChMTCxPz+/ARCBFxaXASChCH5BAEAAAAALAAAAAAQABAAAAM2CLoazpAFIV6UYZB6Yd5BtwRbEYqkYIqAQRir6KpnN8cdCddXivcbAy+S2qEOAuPx8MtZRP4EACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-shredder-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBERCBAQCBMTCBPz+xFxaXPz+/AQChISCBISC/DQyNPz+BARCRAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARcEMgZhBUzgzuIH4G2FYThnZUlCab5Ed0hC6nZ3Yh8JIKyLjCYboeZKIK6BDHTGwyViopEoWAkdwfqoKhIKLFUwXY79coUtLG4CFAcOOstWyNWyEXMO57p2/vxfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-socket-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+xMTCBFxaXKSipDQyNPz+/MTCxISChAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARKEMgZpr1SjFqx1QHoTaA4AuV2EmmHEUUxsKoHB7FMGPbhI7gCgnchII6+AyJBtBhjx0KC2TsIp9QXcpm1HafNEQF8mhAOCdfEHwEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-trashcan_empty-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBKSipERCBARCRPz+/MTCxISChFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARREEgZapiYWjGIvVNQjEZ5BKUAApVgjEWJzCtAnIGgC8eZ5bre7ICosQQFVY9Y/CGVwiYmlwwsac7qVRp6WqNGKpQZ9m7DojH2t+lVMtMP3B8BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-trashcan_full-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/Pz+xATCxMTCxMTCBKSipPyqXISCBFxaXISChAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARbEIAQJJU4BzEoIdSFbcNQnIVhBJ02GAeFIGxZjUl8KoHRagfeYqgo3kaxQOEwXPAyk4Mgtgg6jxYp1foETgPEKzSgBXOx0W9VIfZu2d3R5t3WhA5BEdQSQgP8EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-www-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaXNze3LSyrJyanPz+/Ozq7GxqbDxinBw+ZERmdIySjHRydMzOzPT29CwuNDRurIR2RPTSdJyulEyGvBw+bLzCxIyKhGxubERCPLzKvPzivOTixNTChLSybGyCfCRSnBQqPLy6vOTi3Ly2rCRShPzy5OzerLyaVEx6nCxerGRyhOTezPTShNy6bEx6rER6zDRitBxCfPTu5PTq3LyqjBw2VISq3GySrPTWlHyanIyitFSO3LSqpPTm1DQyNCQ6XHSq3GyWvDxuvCRSpKyurOzizAQCBCxGZCRKZExGLDQuHAwaLBQWHKymnPTmxOzaxHx+fMTCvOzWvLymhHRmVExGPOTOpExOTERCRLyedBwaHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfWgACCAAGFhoaDiQECjIwDAQQBiYKLBZYFBgcFkZMICQoLlwwNDgQPghAREhMUCBUWBRcMGBmnEBobHB0eHyAhIg4jJBenJRwmJxIoKSoVKwIGwg8lFCwmLS4vMDEyIRYzNDUPNjc4OTo7PDAq3T0+Pj0/QBRBQi4UL0NENiFFPkbijoRAkiSJEiVLmDR54OQJFHEPREQRIWWihYlRMkCZQuXBgyIBihSpIjLAowBWroj7gaUIlpYvXWLJUuWKlgdbHvz44XHnzgdVami5qUinR50/efoJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-zip-16:filesystems filesystems16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBIQChPzC/AQCBMQCxAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMeCBCh/i+IAesShNo4+v5gKI5kaZ7oxzCilLVvq/kJACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-cal1day-16:korganizer korganizer16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANOCLrMEUDIOUS9AFLLhx8LIRZjKYZmMRCkaChFLHty/AIiS3y6q+QtT49wq8VotRtQJGwRf6Zmrlj7DJLQXsupTJmeEIN4TB5nII20wp8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-cal5days-16:korganizer korganizer16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANMCLrMEUDIOUS9AFLLhx8LIRZjKYbj55GioRRwoQ5x4QIiIdMmcec7jy53q81qP9OO5VMAj8RXTFWzOZW95HDLdEEM4LA4nIE0zgp/AgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-cal7days-16:korganizer korganizer16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANPCLrMEUDIOUS9AFLLhx8LIRZjKYbj55GioRRwoQ5x4QIiwcp0fucsj873qvGMv5Jw2FIACUsW4WakGW1O046I05qmGYBhTC6TM5CGWuFPAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-calappointment-16:korganizer korganizer16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBAQC/AQCjPz+/MTCxPz+BISCBISChKSipAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARbEMhJaQhA6D1E/wDGeeRgDhOhFoTBEi+REgdrIHScSEVvAD9Xr7cDqGSGpFEnQSqTv2NxCFQOiU1VEAiTZmstHFg1vQKuw+LxxfYaV/AuOQRI2O/4ewhT6Uv8EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-calbell-16:korganizer korganizer16 16:photo:16 16:R0lGODlhDwAOAIIAAPwCBISCBPz+BIQCBMTCxISChPz+/AQCBCH5BAEAAAAALAAAAAAPAA4AAAM+CLrR+zCIAWsgLVRGRBhOVQiG94WPVAbHaZHYAWqRYLbge88RsbInGuBCEhRYrZYm4xk4nYdoKzKIbiKHawIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-callist-16:korganizer korganizer16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBAQC/AQCjPz+/KSipPzerMRaBEQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARDEMhJaQhA6D1E/wDGeeRgDhOhruyatjBRSIRxxOsMEAdC0BUZDcfSEYvDo3Bn++2Cxt7RqFxWhZiCdsvdhjCVsMQfAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-calmonth-16:korganizer korganizer16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANSCLrMEUDIOUS9AFLLhx8LIRZjKYbiRxLFIBpK0Q6z7MkwkJIe8b0KEeuWchFysuStVsjtfMbeMQitWpG25YfmNK1WU53XNIUYzug0OgNpuBX+BAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-caltoday-16:korganizer korganizer16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBAQC/AQCjPz+/MTCxKSipPyCBMRaBPyqXAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARTEMhJaQhA6D1E/wDGeeRgDhOhFmurpi5LyIQhFfiBIAfuFzaAioBIJBCummRYPCaDPh3vhwsOZdihNfa8Ub/AJXemFZPPNBvGwG672yFMZS7xRwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-caltodo-16:korganizer korganizer16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBAT+BAQC/AQCjPz+/MTCxPzCxKSipPwCBMQCBIQCBAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARaEMhJaQhA6D1E/wDGeeRgDhOhFmurpi5LyMYhFXiuFwZiA6qZYbbqJX5BIw2RAPxwAAWCyWMCCsiXFGEEErKz6LQZfOqiTR1YJiGq1rFyyHmo2+/1EKbCl/gjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-adjustcol-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBGRiZAQCBPz+/CH5BAEAAAAALAAAAAAQABAAAAI7hI8JAWL+IgvwUSSY2Lz7VTXXkS2NdJ6TwiSaB3PNQNdCbc/4cO9OjwPmhDQiTxfcHY1MpE35g0IB/gIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-adjustrow-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBGRiZAQCBPz+/CH5BAEAAAAALAAAAAAQABAAAAI5hI8JEcItooxG1oEzBoJ7oWlHd4VbNZpbx3LqUFGuajTPhI8kSLfsO0rRUCXT5wPkyHhGhsOJs/gLACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-black_sum-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIdhI+py60BY2QwhVYdytpw/WFXF1LjcW6S1LVu6xcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-border_all-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAAQCBPwCBCH5BAEAAAEALAAAAAAQABAAAAIjhI+pq+FuHjwyRInqfRkDTXkgQ5YLOH6it00pyqqcPJk26RcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-border_bottom-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAAQCBPwCBCH5BAEAAAEALAAAAAAQABAAAAInRIynGe0PFTQz2kdxzHf72iSiRDpc2F1niaafBroYQNe2fdx6HfgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-border_fall-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAAQCBPwCBCH5BAEAAAEALAAAAAAQABAAAAIrRIyneRYP4wPUKWmr3E5b+DVh9GkYuFALiqnsJp6nObYZB5ow2a3Jvwv6CwAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-border_horizontal-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAAQCBPwCBCH5BAEAAAEALAAAAAAQABAAAAImRIynGe0PFTQz2kdxzHf7CoTiSB7kKUpa1Vlc86rtSjvxnOSL4hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-border_inside-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAAQCBPwCBCH5BAEAAAEALAAAAAAQABAAAAIrRIygxxYPF4zzyenqxfVk2m0g9lnKiabqqoYl43YwGcqiFWv22zRnD/AXAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-border_left-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAAQCBPwCBCH5BAEAAAEALAAAAAAQABAAAAInBHKJmxYPY3TyVCozsjMbrk3gM27KyZDlioVQS3qwO7Nl6KC6q/kFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-border_outline-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAAQCBPwCBCH5BAEAAAEALAAAAAAQABAAAAIrhI8ZybgQYoTy2YqtwVTunVVfN3HQsaTnc5Kp2Ibw5Zm0PHJ2w7O8I5P5CwAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-border_remove-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAAQCBPwCBCH5BAEAAAEALAAAAAAQABAAAAIjRIynGe0PFTQz2kdxzHf72iSiRDpc2F1niaafBrraSMuQXwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-border_right-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAAQCBPwCBCH5BAEAAAEALAAAAAAQABAAAAInRIynaOEPH5hRRVrzbJBLn32g1TXJuWBdpYYiy47hBl+yRqH6HfoFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-border_top-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAAQCBPwCBCH5BAEAAAEALAAAAAAQABAAAAImhI8ZyRgPo3xgVnmnprbvnUEhx1XmgpLRmH7e+rowFssleuaBXwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-border_up-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAAQCBPwCBCH5BAEAAAEALAAAAAAQABAAAAItRIynwOEPH0vRuGkjnFKjpmgX2FVkuBwNhapZKZ3VyMKcGJPv5eJmAkz5RP4CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-border_vertical-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAAQCBPwCBCH5BAEAAAEALAAAAAAQABAAAAIrRIygxxYPF4zzyenqxfVk2m0g9llmsiCmVjJh65Jh59GtGMuzqqQNDQz4CwAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-cell_edit-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/ISChCH5BAEAAAAALAAAAAAQABAAAAIshI+pm+EPnwmi2msDoLgLzQWDV4HlSJof6qki+W0nrMKlbN9bxGvMDwwG/QUAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-cell_layout-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+/PzerMTCxPyqXHx+fAAAACH5BAEAAAAALAAAAAAQABAAAANCCLrc/i3ISacKIuutA8ACxWUeJg0DqBHhd6ZiRpQBag9F2n13FRis0q1QUAmCvFuKRTAYWhIi0bhz+SqQrHbL9ScAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-chart-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBAQCxAQC/AT+/MTC/Pz+BAAAACH5BAEAAAAALAAAAAAQABAAAANMCLocHiyuIASU6lE7Xx7DdgEBQVwBKE4mqlZjeT4vl7VFkYZUjOuGkMFiuJ1yKUNAWTQGkEKDknUESpdXkkYjnWIWzOVX0SyPJwx/AgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-comment-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+BPz+/Hx+BAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM5CLrc/i3ISacKYuStuwhAMBATKRHkAGJeu60qagqmuHK4B6Pn3N0u147Ha8FyOVCowlRCntAo1J8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-deletecell-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/AQCBPz+/PwCBMQCBISChAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANICLrc/i3ISacKIuutA8BcKAwfNwwmQYDZoJ6tWrBZoRKuXIb2XRS7UG4wC25yOIGHFvu9PJ8KcRbQOVzAheoxbRCyDOKj4E8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-delete_table-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/AQCBPz+/PwCBMQCBISChAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANPCLHcDDCIOSUVAaqLeY5O+G2XRQVDdA0DNxCEwrwEu9AFORVw3ee6Cu8HFKFgA2AQQ6uNTJNXYZgCNZKFBay4IhQuMBUFW/LKZlkHoOBPAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-dissociatecell-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIEAAASC/AQCBPz+/PwCBCH5BAEAAAAALAAAAAAQABAAAAI0hI+pm+EPoQlC0GqxnfV2HUzR6HDWgA5Bqppr+qIhcMUqO5Oki+M87KN1ejCRTsJIKhP+AgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-first_letter_upper-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIohI+py72RIJOHRmBt3QaGz2GVBGJfKW4aiXhX2sHxbKKneDv6zht+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-fontsizedown-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAInhI+pELHqmIkQNZrwfXYvzE1fBUrWoZniOjWdp0agjLL2i7rhDvgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-fontsizeup-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAImhI+pEeoNIFyIzXStw3q/T4VVhJHHlDGjgZ6n1bLyCrqPyuJe4hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-funct-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAImhI+py60R3IkRVHQzo9BwD1qhqGneRU4gSqlVJ8Zy0mKPhOe6XwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-insertcell-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBPz+/Pz+BATCBAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAM7CLoa/k7IKQCEdNobc+UOMCijCD5jGjAMOowrIc/Wm77ATIe2leuETcrEYpSOJ88HpNxwmqdi40Tl+BMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-inserttable-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/AAAACH5BAEAAAAALAAAAAAQABAAAAIuRI6JwCH/HBSBmUlxbarvO0nQJ0aa5XWodjZsiKbJGrbgaMuzW8M87jPoDgx/AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-lower-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIqhI+pELHqmIkQNZrwfXYvzE0QKGniQWmNhbYSeqXn6zJOBJLTuuuh4i8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-mergecell-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/ATCBCH5BAEAAAAALAAAAAAQABAAAAIyhI+pm+EPoQlC0GqxnfV2HUzR6HDWgKZpCFyBCrMurMoPvZovPsgd39MBbaQI44hU+AsAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-money-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/AQCBPz+BPwCBASCBATCBAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM+CLrcHMHJIEaUD16sqIUcQAne5pQaBglkZS6lxb6dRoIAQTzuphcFXWeW0xl/utIPGDQOSUdnA7IUhoocfwIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-oscilloscope-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBOTm5Hx+fLy+vAQCfAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANKCLrcGjDK+IS9494AgrbEJ3CeUBRWpp2daaHhhZKuq75jh8pxTRaEQbAgFAIHv1VvR/vsdrnSCmdpagYnjfXS27Q+N29nQuYA/AkAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-percent-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIkhI+py70RUHxxQmosu6BOdWkNR35PVm1etqEsaKXnwTn2DfgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-precminus-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/AAAACH5BAEAAAAALAAAAAAQABAAAAIthH8RiJvrmHogVoXNtFRDpjUf6JWkeUoXlpGBAMfC+cowbd+uwL54/rMFZf4CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-precplus-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/AAAACH5BAEAAAAALAAAAAAQABAAAAI2hG8Rp4y9IGgszqhyspLueYHih43hiX7Iui5XprGTQNeCPNNBje86L9vBdr2a7xY0AllHm78AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-removecell-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIEAAAQCBASC/Pz+/PwCBCH5BAEAAAEALAAAAAAQABAAAAI5hG+hq+IvAGPwydlqxAohvnjHMChkR6YDcKaougZqCMdyGYqSG+jXKQtoNkGTUHPBDJMTH+jJ8RcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-removecomment-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/AQCBPz+BPz+/Hx+BPwCBMQCBISChCH5BAEAAAAALAAAAAAQABAAAANVCLrc/i3ISacKYuStuwhAMBATKRHkUIScUBSeahhigBbzK+HGgXmHmYHXC41MqKDwcGDFMryCz4gi3YQwkKiFY+ZAoYrUF5g1HV3G7DFuFBvSx8GfAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-resizecol-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBFxaXAQCBDQyNPz+/AAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMyCLrcG0A4CZ90saohuv+XEgxYxkDhQp2lyIBwKhB0bct2TuB6zfe7F5D26xV1x9zFnwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-resizerow-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBFxaXAQCBPz+/CH5BAEAAAAALAAAAAAQABAAAAIyhI+pmxHinph0GnqH3hoIDwocd3zZ2F0lmoInWq5s/I60xw5hmF8WPnNAhJUK44hM+AsAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-series-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBGRiZAAAACH5BAEAAAAALAAAAAAQABAAAAIjhI+py+0fUGRhGrswVtr1FgiGsGlhZVWAuarr9byyB8f24hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-sort_decrease-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIIAAAT+BPwCBAQCBAQC/FxaXAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM5CBDM+uKp8KiMsmaAs82dtnGeCHnNp4TjNQ4jq8CbDNOroIe3ROyEx2A4vOgkOBzgFxQ6Xa0owJ8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-sort_incr-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIIAAAT+BAQC/AQCBPwCBFxaXAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM4CAqxLm61CGBs81FMrQxgpnhKJlaXFJHUGg0w7DrDUmvtPQo8qyuEHoHW6hEVv+DQFvuhWtCFPwEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-special_paste-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+xPz+BNTS1MzGLMRaBMzOzPz+rPyqXPz+/MzGNDQyNKSipAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARoEMgJQhBySGx7IEQwFKMWGKgRHNZRIAJSVAm6usIwCEo+BDWVJ/CKzYAplWJZItGSgSVPZBEgU9EFQyGyWoK25XJ4DTO2iob6CxVLe2ys4rw9e8HKd8ybVJ7ndgEVQz09e1YUEmQefhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-strike_out-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBGRiZAAAACH5BAEAAAAALAAAAAAQABAAAAIghI+py+0BgwOS1gXnuS/b6ClCpCUcclJMmKIGWcby5BcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text_bottom-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIVhI+py+0Po5y0hYtzrkB7zH0fN/kFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-text_center-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+pm+EPIZsnRkqtDnhu1zHfFSpjaY4PavgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-text_left-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+pm+EPIZsgRoqr3Vnt102fFSJjUC6nlPoFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-text_middle-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIXhI+py+0PT5i01pisphjt3UmfFZYm5hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text_multirow-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+pm+EPIZsg2kfZvblXbwTg10WlA4rjyvgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-text_right-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+pm+EPIZstSrqsDhhv1ylfFE5jiYwX6hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text_top-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIWhI9pwe2uYnq0yQtqxbz7D4biSIZ+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-upper-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAImhI+pEeoNIFyIzXStw3q/dR2hhEVcJqamuq6Z9brlNtKMeHuKXwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-vertical_text-16:kspread kspread16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIihI+pFrHqQHynTRrvyxQ12YWQWJGMpC0f2E1psr4eaj5+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-applix-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFRSVFxaXFxeXNze3Ly2rJyanOTi3Pz+/Ozq7HRydFxaVISGhGxubMzOzDQuLExKTCwqLIyKjGxqbERCRCwuLJSSlOTi5BQSFPT29IyKhDQyNISChDw6PBweHMS6pPz69Pz29PTq3Ozm3MSynMTGxAwKDPTu5Ozi1LyulExOTCQiJPTm1OzezLyqlLSyrDw2NOTazOzizOzaxLyqjKSipBwaHOTStLymhLymfGRmXNzKtOTOpLyidMTCtMS+rCH5BAEAAAAALAAAAAAQABAAAAa9QIAQEBAMikfjcCkgOJ2FgCGwFAYOiCwioUAYFtUrgtFFNBzeB5OAgESyEsWEUjFYAJYJ4hLBoDMHBRobAAaGehwdHnoZCQcfEUKHCBQBAxsgISIjJIRCeSUmHAYmJSInKCmRkgYqGw4ZKxMiLC0unoUvFBQQMBQRMTIzNBVDFjUrGwO9Nh8zNzi4BhM2LyIvGhgLNzc5akM6DsEyMjsfPDw9uAALPj4/HyQ0ND31q0ICFRv6FTAb/xE2+AkCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-binary2-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFRSVFxaXFxeXFRWVNze3Ly2tJyalHR2dISCfLSyrPTy9Pz+/Ozq7GxubJyanKSmpMTCxMzKzLy6vNTS1JSSlCwuLLy6tMzGxOTi3KSipKyurHx6fOTi5IyKjGxqbERGRDQyNMzOzOzu7GxmZIyKhHRydLS2tNTW1ERCROzm5MS6pIyOjDw+PPTu5PTq3LSqnOTazOzi1GRmZJSWlCQeHPTm1OzizLyqjISGhExOTGxqZDw6PNzSxOzaxGRiZExKTCQiHEQ+NLyulOzavOzWvLymhHRybLyypNTGtOTOpOzexLyidMTCtMS+rMSynLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfqgACCAAECAwQCiIiDjAIFj48GAgcBjIIICQoLDAwNDgwPA4MIBhAREgkTmw4UDBUWAxcYFAUZGggbHB0eDh8gIQkiHSMeFRoUDyQRIxkGJRYmFScTKCcHCCkgJyoNGSsWHCwKCCgIASAgLQoZLi8wISUbEyQUJAEDKQEKMS8yMBYeZmCgMcEcghog9tm4gSNEjgEPdEDYEQJEDR4aetzwgcPCjw8VfiAAwqNFECFDehApYiSEoCMQBVjQkQBJkpVKjFhgNGBGzSRLVhZRwsTloAFNmjhZ8WQIDiZQoOwcFMCCVQshrmYN4ScQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-binary-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbPz69HRydMzOzDQyNIyKhERCRPT29GxubPTy7Pzy7PTu5Ozm3LyulPTq3Ozi1OzezLyqjPz27OzaxLymhPz29OTStLyifPTm1OzavOTOpLyedMS+rMS6pMSynAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaJQIAQECgajcNkQMBkDgKEQFK4LFgLhgMiOq0WDgVEQrFdKAXfhJWRODTMQ6+64BAMGHAq+pB4hCF2eURoVwgREhMUgl5/EBUWimdWB4cVDxcYiwJiGQcVfBobmhwPEgkWFg8dmWcQEgcWFw99HpoVFR8XGiAhISKLI8EkJRgYGyK/SgvLzM0LfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-colorscm-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIcAAPz+BFxaXNze3Ly2rJyanPz+/Ozq7GxqbJxaLLxOFLQ+HLQ6NMSOnOzi5GxubMzOzDQyNMx6JOSSXOSedNx+ZMxaXLQ6ZKRalNzW3IyKjERCRNSWPPTKnNReNMRGVLxalJRGpHRanNTS3PTy9OTi3ISGfLySNOzCfPTatOy2dNxuFMw6DJxGrHROvEROnHyKrMSmTOzanNzShOSqRNyCFMxCHJxGnFxavDxqxCRmrCxijPTq3Ozm3LyulLyyZOTenNTGZMS6VISKbCyCzASGxAR6rBxmhKyqpOzi1JyuXLTShJzKdHS+XES2XCy6pDSy3Bym3AySxAR2pBxadKyinPTm1OzezLyqjGSWTHS6ZFy+ZCyyVCS2dDy61Dyq1CSOtBRqjExqZKyilOzaxLymhDyeTCSuVByyZCS6hDS2vDSatCx2lCxabIR+dBSKTByeZCSmhCymnCyanCR6hNTCrOTOpLyedCxmVCR+bCR2bCRmZExqbMy+pOTStKSelKyejMSynLyqlLymfLyifAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAjqAAEIBBCgoEGDAxMGEMCQ4YAABAIkFLiwgMUCBg4UiJgQQQIFCxg0sOjgwUYIAiNImEChgoULGApkcHBAA8oNHDhI6ODhA4gQIkaQGFACgokTKFKoWGGBRQsXLwQIHQABRgwZM2jUsHEDRw4dA3bw6AHBxw8ZQIIIGUKESBEjR3YgIZtEyRImTZw8gRJFyhQqVaxcgYAli5YtXJx08fIFTBgxVsaQQVnGzBk0TtKoWcOmzZExklECcPMGThw5czqLoYOijh3RAO7gyaNnTxsxfOr0cQ2boBg/f44AChRI0KDXCiEoX84cgp+AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-core-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAASC/PzuBFxaVNza3Ly2tJyanPyuBPQCBPz+/Ozq7GxqbFRSVHx6dKSmpHRybMzOzDQyNGRiZHRydHx2fExKRCwqLPTy9ISGhERCRCwuLERGTIyOjBQSFGReXJSSlFRSTDQ2NAwKDNze3OTi3Ly2rFxaXAQCBFxeXMzKxOzm3LyqlDw6NCQiJFROTLy2pDw+PGRiXMS2pOzi1CwqJBwaHAwODAQGDJSOhOzWvLymhKSajNTGrJyWhOTOpLSyrKymlKSelMS+rLyidMTCtMS6tMS6pMSynLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfVgAAAAQAChoeHgoqCAgOOjgQCBQKCBoMABwMImwgJCggFC4sGDAQNDZoIDg+gEAcABhESEwoUFQsWFw4KGBmCGhsFGwoLEBwYCRYEFxCEHRceFwofIBwhDSIjJBCCCxISDiUaGRwmJygpKr4AGAIl4issISYtLuncgi8YLxAs5SYwYshQgQ8AixksaNSwYYLDDRc4chS0USMEQxMhHOjYEbEggBUWTQhwwANiD4mLBPj4AYTHjyA9cPQQsq7bkCFEihhRkSPHkSMeBUDIAGFo0aMZ/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-deb-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/FxaXNza3Nze3Ly2rJyanPz+/Ozu7GxqbPz6/JwCBMw+PMQCBLQCBNx6fPT29GxubMzOzIyKhDQyNLwqLLRWVLxaXNyurERCRMzKxOzq5Ozq7MQ2NMRmZLwCDOTi3Ly2tMReXOS2tMTCvPTu5Ozm3LyulMSSlNTOxPTq3Ozi1OSytPTm1OzezLyqjNyqpLxaVNzSxOzaxPTy9Ozm1OzexOzavLymhOzWvOTOpOTStLyidMyShMSulLyifLyedCH5BAEAAAAALAAAAAAQABAAAAa0QIAQECgajcNkQDAYCASEQCGQFC4NWMMBkZhWFQtGw/EwQCIGyWSoaFAqFgblIkEgMGthQ5HRbAQcFAcaBGp6DQEJCx0XFx4ZGx8geQ1ECyECByIMIyQlJnkMRBwnBwYODSgpKqB6RCIcK6gEKiwtLpQKiS8WMAQxKi0yuEOICTM0LSo0NTY2N3kAbhoHBzQ0zjg50EkKHC80LCo2ODo5O9FEBCE8Pe49Pj8/6QET9vf4E35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-document2-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJSWjPz+/Ozq7GxqbJyanPT29HRydMzOzDQyNIyKjERCROTi3Pz69PTy7Pzy7PTu5Ozm3LyqlJyWlJSSjJSOhOzi1LyulPz27PTq3PTm1OzezLyqjIyKhJSKfOzaxPz29OzizLyidIyGdIyCdOTOpLymhOzavOTStMTCtMS+rMS6pMSynMSulLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaQQIAQECgajcNkQMBkDgKEQFK4LFgLhkMBIVUKroWEYlEgMLxbBKLQUBwc52HgAQ4LBo049atWQyIPA3pEdFcQEhMUFYNVagQWFxgZGoxfYRsTHB0eH5UJCJAYICEinUoPIxIcHCQkIiIllQYEGCEhJicoKYwPmiQeKisrKLFKLCwtLi8wHyUlMYwM0tPUDH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-document-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbPz69HRydMzOzDQyNIyKhERCRFQ6LJSKfNTOxJSOhPT29PTy7PTu5Ozm3LyulOzi1PTq3OzezLyqjOzavPz29Pzy7OzWvLymhOTOpOzaxOTStLyedMS+rMTCtMS6pMSynAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaLQIAQECgajcNkQMBkDgKEQFK4LFgLhgMiOq0WCAREQrFdKAVXKyNxaJgBjgck4khLBAPGm4r+ghETeHtEfVaAFBUWg15gjReKZ4YTFBgYGRpvcQoPDggRnwwMG5hnHB2UFxcbHh+LAh0YDA+zDyCtZ5UXIRsiIiAjiyQlJCYnGhofI8BKC83Ozwt+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-dvi-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAASC/FxaXNze3Ly2pJyanKyijPz+/Ozq7GxubIx+RIRyLHRyVGxqbMzOzDQyNHxyTHRqNGxiJHRiLJySVIyKhERCRGQmLMy6ZNS+TMSuPLSePIRaNGReLHRuTPT29FxOFKymdIRmLHRiHGxKLDQuDPTy7Ly2tHQqLLwyPIxqVGw6LIx2LGRSHDwyDDwyFNTOxOzm3LyqlIQuNLy+zKSGdKSSfJRSRKSSNExKJLSmnOzi1LyulIyCZIxiPJyGLExGFOTSvOzezLyqjLyyXAQCBNzGRLyeREw+DFRONNzSvOzaxGxqVKSelJSCNEQ6DFRKFKSajMS2pNzOtOTStLyidEQ+FLSunOTOpIyKdMSulLymhLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfVgACCAAGFhoaDiQECjIwDAQQBiYIBBQUGmAcIBpGTCQqgC5gMDZwOgw8KEBESEwkGFAgMFacAFhcYGRobEBwdHgIDFKcWHwYgBiEhIiMkAyUCJg4nKCgp1SorLC0uBC8wMQ4yMzQnNTM2Nx84LTkNOjunNjY88z0+Hz8kOUBBQqdDiHQoYiREhBZHkORIouSfIAghjCiI8IHEEiYDgAApUAtAEwgfnDzBASWKFCBTqHQE8ONIFRwErFxRcuWKSkU8sBTIkSWLFi1btqwM4KCo0aMO/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-font_bitmap-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAASC/FRWVFxaXNze3Ly2tJyanPz+/Ozq7GxubGxqbNTS1DQyNPS+vPw2NNQeHFw6PPTy9IyKjERCRPzi5PyGhHRWVOTi5PT29OTi3IyKhPza3LySlLQGBGQCBNza3Pz69PTy7MS6pKRubPy6vGQ2NKRSVIxmZPTq3LyqjLQqLHRydPxydHwCBNTSzPTu5Ozi1MSynKQCBOQ+PKwCBIReXJwCBExOTMzGtOzezOzWvEQeHLSytOR+fIxaTOzexLymhEwCBDweHNTOzPTm1LRORIQ6PJyOfOTOpOTe1OTSvLyedMTCtMS+rLyulLyifAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe6gACCAAEChYeGg4oCA42NBAEFAYqCAQMGmAYHCAaSlJaZmAkKnQuKAQwNDg8QBhEJCRKmgwITFA4VFgYXGAQZs5UaGxwdHgYfIAMhwAAiIyQlHCYgECcnKMwpKSoKKywtLicvMMwcHDEyMjM0L+3YgzUsNgH0HCw3ODnvgjU6OwMvBvCQ0cNHjh+zOgAJIqTaECJFOhg5gvAUEmsvksBAAeOIEmYBbixhEgJGExROlHw8taCly5cL/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-font_truetype-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFRSTFxaXFxeXNze3Ly6vJyanPz+/Ozq7GxubHx6fCwuLDQyNIyKjKSmpPTy9PT29HRydMzOzCQmJAQCBKyqrFRSVLy+vGRiZNTS1GxqbERCRMzKzJyenOTm5JSWlLy2rIyKhMzK9KSm1Kyq3OTi3OTi5JyezBQSJExOTLy6/CwuXLy+5LyulMTC3LSytHx+7Ly2pLSyxLyqlNza3Gxq1OTWxMS6pLyqjPzy7OzexPTq3LyynOzWvLymhPTy7DQ2bOTOpGRmhERCfNzGpLyedMTCtMy+rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfIgACCAAECA4WHhoOLAgSOjgUBBgGLggEEB5kHCAkHBgKCCgsKBgwNDg8HEBESngwAExQVBhYXGBmZDREaGwuDHB0CHh+4qgQgIa+CBMEiIyQiJNAlIMoAJgYDJygpKisWLAMtvoIe2S4pLzArMTIBM9YHBRUeNAQ1KwU2NzjWFAwDDEDIgS+GDh39Fl3ykGMHPh46evggJ2gAgR87HAKZYSOID2uECGQUMkRIAiJBioAUYMTIkRs8cODwUUSlQgY4GSzQuVOnn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-font_type1-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAASC/FxaXNze3Ly2rJyanExKRPz+/Ozq7GRmZPz6/HRydMzOzDQyNJRmZPSmpIQuLGwWFKxeXPTy7IyKhNxSVGxCRLy6vPQ+PPT29GQ2LPTCxOROTPz69KQ2NPSGhPTq3Ozm5LyqlGwODPxiZOzi1LyulLwKDORydBQSDOx+fNw+PNS2tOzi3PTm1OzezLyqjNQaHPRubJx+fMS6rOzizOzaxMwuLKQWFHRaXOQuLJSShNzOvOzavOzWvLymfCwiHHx6dOzexOTOpOTStLyedMTCtMS+rMS6pMSulLymhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfFgACCAAGFhoaDiQECjIwDAQQBiYIFAgaXBgcIBgQFk4uYBgkKC5wMiQ0ODxAOERITCggFp4MUFRYCFxUCGAIDE7QAFBkWCRobChIcEr60HR0IHAYeHQQYEh8gIbQbIgjGIw8WEtgkJacmJyjfKSoFKywfLS4vpzAxEAgnHSYyJjMkaNSoB0CEChs3cMjIYULHDho8evig9aPiAQFAHAap0UPIREXYPpAIEnGIECLBABQoYmTGESRIfCQhglIRg5s4czLwEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-gf-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIMAAPz+BFxaXDQyNAQCBMTCxPz+/ISChKSipERCBMTC/Pz+xPzerMQCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARwEEgQahVijMmD/oRAbBw1FCgaFFrppeo5UtILWxlAGNWZHocA4bAxGAnDg9GA8LQCxGTQoHwVNYYEMEHtKYrEA0tctVIOo0Fl2Ct8AQLlKMnzLFg1KIHBCGoUbiR5VSd3C28TThpubgqIEhkfkh9+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-html-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFRaVNze3Ly2tJyanPz+/Ozq7GxqbDxinBw+ZERmdIySjMzOzPT29DQyNDRurIR2RPTSdJyulFSGxLzCxIyKjHRydERCRLzKvPzivPTmxNTChLSybGyCfCRSpBQqRLy6vPTy7OTi3IyKhCRShOTixPzy5OzerOTShLyaVEx6nCxerGRyhOzi1LSyrEyGvOzaxPTShNy6bEx6rDxyzDRitCRCfPTq3LyulBw2VISq3GySrPTWlHyanIyitEyO1ER6zBxCfLSqnCQ6XHSq3GyWvFyGvDxuvLSqpPTm1OzezLyqjCxajFyO1GSi3NS2bKyaTCQuPGRufOzexLSmlER2vKyWNFxaNHx6dLyunOzWvLymfERSVExKNDRCNKyilMy+pOTOpLyifFxaVLyidMSynMSulLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfYgACCAAGFhoaDiQECjIwDAQQBiYKLBZYFBgcFkZMICQoLlwcMDQQOgg8QERITnhQFFRYHF6cPGBkaGxwdHh8gISIDI6ckJSYnKCkqKwksAiEtLg4kLzAhMTIzNDU2HxQ3NzgOOTo7PD0+P0A1QR8uNy1CDkMvREUyRjNHHjkfSElKlpxi0sTJjydQAiSIIkXIFBhUTn14UIWGFQhXHHzAkgWGli2nAHxIwIRLFy8bv4DREkZMSEEfYo4hQAVMGJZkXhIaIERImTJmlogRc0ZnAAdIkyp14CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-image-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPz+BFxaXNze3Nza3Nza1LS2tJyanPz+/PTu5GRqZOTi3HRydMzOzDQyNJQOFDxKfKTW5OTy/OT23MTaxISKhGxmZERCRCwuLJQSFPzGpLweHJTO3ESu3DRilNz61FymXCxKRMTCxPTy7Ly2rIyKhDwCBORiRKQWFEy23CyKvJTWhDSOPCRONDQaHNROPNQ2JLRubHTC5DR6rHR+jFSqRCRyLGxqbOzm3LyulCwqLMySjMQ2JMyqrERijJSenFSGXGRmXMS6tPTq3Ozi1MS+vMxCNKyqrHR2dPTm1OzezOSKfNTe5KSmpIyGjLy2pOzWvLyqjIRqZIyKjHR2fExKTHx2bLyynOzexLymhERGRGRmZKSWhMS6pOTOpLyedMTCtMS6rMSulLymfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfcgACCAAGFhoaDiQECAwICBAUBBgGJggEEB5kHCAkHk5UBCpqZCwyeDYIOAA8QERITmRQLFRYXABgZGhscHR4fICEiAiMkDSUmJicoKQ8qKywLAwgKIxctLi8wMTIzNDUJNiEINzgNOTo7PBA9Pj/QQEFCQzg5F0RFEQQ+RhRHswVIkpS7oEMJgiUhCjBpcqSCkyFPoNjKEYVJCCNSpgSgUsXKlSdYUAG4kCOLlgpAgFTZwuVJFyy2Bi0gEsSJzZYuvYi09OULGC44wmAR48VLDkU5zClt0OACUz+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-info-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaXNze3Ly2rJyanDROXHSSpISetPz+/Nzm7GxqbGyGnMTS3MzW3JyuvERujLzG1HRydMzOzPT29DQyNMze5Iy2zLTS3Cx+pCRijLS+zIyKhGxubERCRFR6lGSivFyavISuxAxajBRejAxGdDxihJyyvCR6pBRqnAxelAxOfPTu5OTi3IyqvFSOtJy+1IyyzFxyhOzm3LyqlGySrAxejAQ6ZFxqfMzKxPTq3Ozi1LyulCxulAQuVISKjMzGvPTm1OzezLyqjBwmLBROdExOTKSinNTOvOzexBQeLAw2XAQmTCwyPLy2pOzaxOTWxLyedCQmJAQKFAQWJKSalOzavOzWvOTOpLymhKyqpMS+rOTStMSulLymfLyidAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfVgACCAAGFhoaDiQECjIwDAQQBiYIFBgcImAkKCJGJCwwNDg8QmBESEwQUgg4VFhcYGBkaCBsRHB2qHgwfIAghIiMkAhMCAxsUJSYhJygiKc4qCysrLAPILS4oLwgwKcExEisyMxQFNBg1Nb7ONjc4OTo7yAU8IiIIDiIqPT4/QEFCVA0hooJBAg0eehQxciQIEnKCktiYqGQJEwJNnCB5AkWVoChSpkwpQmXAkypWrmDxKAhSlixaTlrZcqWjIi0/BmjhsgNLFy82BwWgQDQK0aNE/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-kmultiple-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBFxaXPz+/AQCBISChPz+xMTCxPzerKSipAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARWEIRJgb04iLEJwaAmjMTwgVbAjeaESmNcGMGrxmOhDqE8HAOVJ7MSFH4qhOmiOQIPNIGB4JJwnIaDaFaTUL4iYxc0MJidQVvROc4Yfz+a+g3V2sAVfwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-log-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaXNze3Ly2rJyanPz+/OTm5GxqbMTCxARiTARSPARCNAQ6LAQyJGx+fGxubMzOzDQyNCxGPARyVARqTARaRLSyBCRGHFRuZIyKhERCRDRuXAx+ZPz+BIyOBFRybOTi3AyGbAx2XExaDBROLOzm3PTy7DRORDyeXBx2VEymVHyuJGRyDPTu5LyqlFyGTBxaNAxqVDR6PARKNPTq3Ozi1LyulCRuTCxeNBSCZDxmJEx6bOzWvPTm1OzezLyqjCSSdCSmhBySdBR+ZARqVEx+bNzSxOzizESCdAQCBNzOvOzexLymhOTStOTOpMS6pLyedMS+rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfIgACCAAGFhoaDiQECjIwDAQQBiYKLBZYFBgcFkYIICQkKCgsLDA0ODxCbEQASExQJFRYXpBgZDwcaqxscrgkdHqMfBiADGasIIRwiHSMdJB0YJSYCA6snKCkqFgorHSwdIC0lLqsvvx0wMTIWMxgCNDU2xzcdOBw5EzoKOzw9Pj/WgAQRIiTEkAlEihg5wgMgACRBkpwQIpGDRCVLeDCJACGJx48gAzRxspHQoZNPRkJZNSjAkygDntiwwYQJlJWKIujcyTOCn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-make-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxWVFxaVOTi3Nza3LS2tJyalGRmZMTCxPTy9Pz69Pz+/Ozq7GxubJyWnFRWVHx6fHRydMzKzDQyNHx2bHx+dIyKjERCRGRiZKyilLSifMTCtLy+tISGhOS2bPzerPzuvOzetJSSjFxaXOzu7PTy7MS6pGxqbKSWdPS+dMSidOTerPzqtISCfKyurOzq5LSqnMzKxPS6ZEw6HJSKbOTStHR2dMzGvPTq3OzizLyulFRSTOyyVNymXOy+dKyqpPTm1OzezLyqjJyCTOSqTOSmRLSupNzSxOzaxOzexOzWvOTOpKyinMS6rNTGrLyedMSynAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfagACCAAEChoeGg4oCAwQEjQUCBgGKggcICQoKCwwNCg4CiwQPCBAFmRESCwYTghQCEgYHDBUSChYNDRetGAQZGhscHAIFDAoDHB2tAQYeHyAhIiMIJAolBCYTAicoKSorLBItGC4DLy8wExExKjIzNB81CBI2Nzg5Oq07KDw9Ph4mdgj4IQFIECGtHrgYQqRIjQoPjBzJkQMJQgANkrngYGFAhB8UkyjR0EpQAAkUKkQQkCGHEiVLLg6y8IDJhiZOXsJ8UtLkhpsmoAgRouIJT0UPJihdynSCn0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-man-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaXFRWVNze3OTi3Ly2tJyanNza1Pz+/Ozq7GxubMzOzDQyNOzq5KSmpNTS1IyKjGxqbERCRPTy7PT29LSytOTi5MTCvMTCxLy6vMS6rISChLy+vPz69HR2dLSyrLy2rNTW1IyOjOzu7OTm5HRybHx2ZNTOxLyulLS2tIyKhHRuVMS+tHx6fGRmZLyqjISGhJyenMTCtGxqZGxmVMS2pFxeZGxiTMSynLymhHx6dGRiZFxeXFRSVLyifGxmTKSSfLyidMS+rLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCAAEChYeGg4oBAwMEjQUCBgGKggEHCJkICQoIBgKKkgSamQoLngyWDQ4PpAgQChESqQACExQVFgkXGA8ZBBobtAENDQsGHB0dEx4fBCC0AhYhGCIjFA0kJSYnKMMPHCkqFg0DIQorLN6WCx8OLQsHIQsuKxovtIQwMR4ZHDIYZtCogU+RjQAeUmDAkELBDRw58hHSsWMDjx4XV6DwIZGYCRc/aNz4AeRFkI4sZAipgePFCx9BhkgUwKCmzZsM/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-metafont-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaXNze3Ly2rJSWlPz+/Ozq7GxqbKSajPT29GxubNTS1DQyNIyKjERCROzi5Ly+vKyqrKSipKSmpKyurISChKyinHRybISGhGRiXJyanIyOjFxeXJyenJSSjMzGxMzOzMTGxLS2tISGjExOTLyulMTCxISWpGx6jExifFxufJyepJymrFRSVLSupLyqjERKROza1OTKzNS6vGRmZLy6vPz29Hx6dMTCvHRydJSKfOTStLymhNTCxLSOjKx6fMS6pLyifLSytHx+fOzWvOTOpLyedMSulLyidAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCAAGFhoaDiQECjIwDAQQBiYKLBZYFBgcFCJKKApcFCQoLBQQMnqAFDQoHDqeDAQ8QERITBhQVFhWnF4IVsxgKGRobHB0DrxUeHyAhIiMeGCQVFCWvACYCJygWKSoTFxcD1oMJGissJiwjFC0ZLi+nMBoLMTIPFDMzDS00FvEAYlyQUMNGiBs4OuQgoWMHj2sDe/j44aNCBh1AdgS5BoCGBhNChlxAQGRHESMcYXCI5sHCkRdIkKBUxKCmzZsM/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-midi-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Nza3Ly2tJyanPz69Pz+/ISChOzm3GxqbKSipAQCBHRydMzOzDQyNIyKhERCRPT29OTi3PTu5PTy7LyqjOzi1OzezOzWvLyidOzaxOTOpMS6pMSynLymhLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaOQIAQECgajcOjUTAYEAKFgDBgOFQNiMHhkFAYosQFg2HNbg0Nx/dB3W7NW0hDEWEjxm+BWzIhINhVbnBUFH12eAeDFRQUFoBuiVoGRRQXjgGQiQQLCwELBZaHZJGMARgLGZeZCARRUKgaom8DCAEZGwscqm5YrZyfHLFKRQQdHhYWHxogD0NED9DR0g9+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-mime_empty-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbPz69HRydMzOzDQyNIyKhERCRPT29PTy7Pzy7PTu5Ozm3LyulPTq3Ozi1PTm1OzezLyqjOzexOzavPz29OzWvLymhOzizOTOpOTStLyedMS+rMTCtMSynLymfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaBQIAQECgajcNkQMBkDgKEQFK4LFgLhgMiOq1eEQnFdqEUXK2MxKFBHnqvDsGA0aaaz4iHvE68WxEQERITfG+ADxQVhGV/DxEWFBcYhQIIgBEUFBkak2UbgYkZHBwdlIgUHh4aHB+lZZkVF6sgHyGFIiMiAyQYGCUhtkoLw8TFC35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-misc_doc-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFRSVFxaXFxeXFRWVOTi3NzW1Nze3Ly2rJyanPz+/Ozq7GxqbMzOzDQyNHRydExKRERGRExKTERCRCQiJIyKjCwuLGxubDw+PDw6PDQ2NBweHAQCBPT29IyKhNz+3HzmfDTCNASaBBxaHCQmJPz69PTu5JTqlGTOZCSmJAR+BBxSHOzm3LyqlFTKVASCBARmBBxGHNTSzPTq3Ozi1MSynAyeDAROBCQ+JBQSFNTOxPTm1OzezLyqjCwuNAQyBCQ2JMzGtOzexAwODOzaxOzWvLymhMzCrOTOpNTKvMS+rLyifMTCtLyulLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfcgACCAAECAwQCiIiDjAMFBgeRCAMJAYyCAQUKmwoLDAoJA5eZnJsMDaAOAA8BEBESExETFAsVDwwTFgAXAhgOGBkaGhscHQUIHqoDAR8gISIjJBQGJSbHugMSJygpKisU0x0mLC2qAhEuKS8wMRsbMiYzNDW6ARM26zc4ORQ6Mzs8evgAACGDChg3fgDhF6SAECE9VEXQYKGiDwtDKAQRQqSIEV25KGzIQZIDhSNFiiAxomoQAwM6kgRRgiQlkiW6BgVIwkQJghpNeixx4qQlJiAWHCh1kFSpBT+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-netscape_doc-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaXNTW1Nze3Ly2rJyanPz+/Ozq7GxubPz6/OTi1Ozq3GxiTMzOzCwuLMSijGROLLSqjGRiZOze1LSOdIyKjEw+NHxGJNSqjMTGxPTy7Ozm1NzWxLSSfFw+LMzKvHRuVKyeZHxybOTazOTi3Ly2tDQyNOzm3MS6jFxaRPTu5LyulOzi1KSehMTCxKSOdHxuRMzCpJSGXOTStLyqlHRqRIR2TFRKLLyedLyqdGxWLIR6XOzezJyCZJySbEQqHKyKdFRONJSKfOzaxNTCpKSWbJSSjExKNHxuNOzWvLymhIyKhOTOpHRydHx6bIR+dOTOrLyidAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfVgACCAAGFhoaDiQECA40CBAEFAYmCAQMGmAYHCAmSlAEKCwyZCA2dDoIPEIsREgkTFBUICBaoABcYGRobHAodHhkDBBW2AB8fIBwMESEiIxokJSaDJxAUKAwQESkaKicrqBssLS4vBzAfMTIRMwo00zU2LTc4OToQOzU3DDwr04Ixeljw8QNIiCBCYgyJUIxIESMfjuxAwoDDkCRK/j244CNHjhBIPDxYMoPJA1sXIDRxkuOIkycXHsyAEqUYoRk7GDAh8uJFDhw4/lUy4aCo0aJE/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-news-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/AQCBERCBPz+/FxaXIQCBMQCBMTCxISChKSipDQyNAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARXEEgZwrxYikFsvtUwBN0nEWIhkh4YiIOhjiX1hqIsHlb4jr8VwoJa/XCCBG4ZZA2bRxEi0QkgeLAloUZKYGEDhLgG6H5JBEFrYg4ItmsMCaGomFyEiz8CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-pdf-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAASC/FxaXNze3Nza3LyypJSSlPz+/Pz69Pzq5Ozq7GxqbJyanNyGhNx6dGxubMzOzDQyNERCRPz6/My+vLxaVJxeXKSmpNTGxIyKjNTS1OTi5OzCxLRSVMTCxKyWjOTi3Ly2tIyKhLxmZLSWlOTe3MzKzOza3MyytNyOjAQCBKyqrOzm3LyulPSajMRWXOSGhOyGhKxiXOzi1OxyXKRORIxSTNTKzMy6vLyenLRubLwqLMxiZNSurJRybOzezLyqjJxCRGxSTLy6vGQiJMw+LJR+dMzCrOzaxIyOjKyurHxydNxWPNTCrOTStLymhIR2dKyKhIxuZIR+dJyShOTOpHRmZKSKhJyCdKyilMSulNTCpLyedMS+rMS6pLyidAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfQgACCAAGFhoaDiQECAwKMBAEFAYmCAQMGBwgHCQoGC5OKAgYMDZcODwYFEIkREhMUFRYXGA4OEauCGRkaGxwZHR4ZHyAhuAAdCQgiFR8aHSMkHwS4JRomIicoJykqHh0rLKstLhQcFC8wMR0FHgQy4TM0HDU2Nzg5Ojs8PQQ+P6tAggjRVaLEjiFEihg58k+QBSQdQCTpoITIkhBMmjgxVsBCxydQokiZYoTKxkRVrFy5EgJLFi1NqGwxRohLBy5dsmT54cXLTEUQggodCsFPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-pk-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/IQChFxaXDQyNAQCBPzC/MTCxMQCxPz+/ISChKSipERCBMTC/Pz+xPzerMQCBCH5BAEAAAAALAAAAAAQABAAAAR6EIAQhLVjECJlKISwjcZgcFNxhATiugKyTaP4wu0JiOyNXBqAIWFpvRQKgUHBSTgNS4UzseBxBMxoMiG1NTcJBpLBLTaaTIVM3fXuFKeQMmk7AwbSU5QocsgkFnAPD0kbFBQdO1hELQ4fK4lWLQ0IASsoEhojIwEjfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-postscript-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxWVFRWVFxaXOTi3Nze3LS2tKSajPT29Pz+/Ozq7GxqbJyanISChPz6/HRydNTS1CwqLMTCxISGhOzu7ERCRDQyNERGRLy2rIyKhExOTAQCBKyqrOTm5KSmpHR2dNza3AQGBNzSxOzm3LyulBweHBQSFKSilOzaxAwKDOzezDw6PJSSlDw+PKSelNzOvLymhAwODNzGrOTStLyqjExKRHRqZLymfMTCvMS+tMS6rLyynMS6pOTOpLyifMTCtMS+rMS2pMSynLyidLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfPgACCAAECA4aIA4OLAgSOBQQGAgcBi4KNCAmaCgsJDAKWjQkNCA4JDxCeEYwSDQ4TFKMPCxUWAA0BEQ0GDggQDxcIBBgZthobExwICB0eFRsSHcOrER8QCwYIIA8bIRwiIyS2JSYVHgsQzhsbJygEJKsl6ykeH9zrJyIq4gAp6xsrWLT45+IFChi2YqwLwcLEvxgHZMygsarBOgsCBGioUcNGxBk3bA0SgCOHjh0oeczo4WPVoAA/fgAJIoQGjSFEiIgUNCCCBZ8Wggq14CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-readme-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaXNze3Ly2rJyanDROXHSSpISetPz+/Nzm7GxqbGyGnMTS3MzW3JyuvERujLzG1HRydMzOzPT29DQyNMze5Iy2zLTS3Cx+pCRijLS+zIyKhGxubERCRFR6lGSivFyavISuxAxajBRejAxGdDxihJyyvCR6pBRqnAxelAxOfPTu5OTi3IyqvFSOtJy+1IyyzFxyhOzm3LyqlGySrAxejAQ6ZFxqfMzKxPTq3Ozi1LyulCxulAQuVISKjMzGvPTm1OzezLyqjBwmLBROdExOTKSinNTOvOzexBQeLAw2XAQmTCwyPLy2pOzaxOTWxLyedCQmJAQKFAQWJKSalOzavOzWvOTOpLymhKyqpMS+rOTStMSulLymfLyidAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfVgACCAAGFhoaDiQECjIwDAQQBiYIFBgcImAkKCJGJCwwNDg8QmBESEwQUgg4VFhcYGBkaCBsRHB2qHgwfIAghIiMkAhMCAxsUJSYhJygiKc4qCysrLAPILS4oLwgwKcExEisyMxQFNBg1Nb7ONjc4OTo7yAU8IiIIDiIqPT4/QEFCVA0hooJBAg0eehQxciQIEnKCktiYqGQJEwJNnCB5AkWVoChSpkwpQmXAkypWrmDxKAhSlixaTlrZcqWjIi0/BmjhsgNLFy82BwWgQDQK0aNE/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-recycled-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaXNze3Ly2rJyanGRmZKyqrMTGxPz+/Ozq7KSinOTi3LzatLTGpJSSlMzKzGxubMzWzPT29DQyNMS+rOTy5KzWlEymLDSSDKTClIyKjGxqbERCRGx+bNzu1Hy+ZESeHDSWDCyKDCyGFMTKxHx6fOTi5ISCfFRuVKzGnJzKjDSOFJy2lNTSzJSSjPTy7Ozm3FR6RJzChGSqRFSePHyqdMzOzLSytNTOvLyulExyREyWPESSJMS+vKyurMzKxPTq3Ozi1BxeDDSCHNTS1Ly+vHx+dIyOfPTm1OzezLyqjBw6FBxmDFSKRMzGxERONOzavBQ6DBROBHSOdCxeLDRCJKSelOzexOzWvLymfCw6LBxGHFRiTOTOpERGRKyqpMy+rLyedMTCtLy2pMSynMSulAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfWgACCAAGFhoaDiQECjIwDAQQBiYIFBgcImAkFCJGJCgsMDQ4PmBAREgQTghQVFhcYGZYIGhAbHKodHh8gISIjJCUCEiYDJxMoKSogGCsjLC0GLgkvMAMTMTIzIjQ1LDYHNxo4CTA5Ezo7PDstEQ8HPT4nP0BB5jpCQxFE7kU3RkcHkCRRomoJkyYHnBQZ0OEJARxJoBAUFEWKjilUolSxMiDJFSxZVAnSEmVLFC4EBnzE0iVkIi8EvnwBs5JlGJGCAogRQ2EMmTJZsoS5qWiC0aNIJ/gJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-resource-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFRSVFxaXFxeXFRWVOTi3NzW1Nze3Ly2rJyanPz+/Ozq7GxqbMzOzDQyNHRydExKRERGRExKTERCRCQiJIyKjCwuLGxubDw+PDw6PDQ2NBweHAQCBPT29IyKhNz+3HzmfDTCNASaBBxaHCQmJPz69PTu5JTqlGTOZCSmJAR+BBxSHOzm3LyqlFTKVASCBARmBBxGHNTSzPTq3Ozi1MSynAyeDAROBCQ+JBQSFNTOxPTm1OzezLyqjCwuNAQyBCQ2JMzGtOzexAwODOzaxOzWvLymhMzCrOTOpNTKvMS+rLyifMTCtLyulLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfcgACCAAECAwQCiIiDjAMFBgeRCAMJAYyCAQUKmwoLDAoJA5eZnJsMDaAOAA8BEBESExETFAsVDwwTFgAXAhgOGBkaGhscHQUIHqoDAR8gISIjJBQGJSbHugMSJygpKisU0x0mLC2qAhEuKS8wMRsbMiYzNDW6ARM26zc4ORQ6Mzs8evgAACGDChg3fgDhF6SAECE9VEXQYKGiDwtDKAQRQqSIEV25KGzIQZIDhSNFiiAxomoQAwM6kgRRgiQlkiW6BgVIwkQJghpNeixx4qQlJiAWHCh1kFSpBT+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-rpm-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/FRaVNze3Ly2tJyanFRSVOTi3PT29Pz+/Ozq7GxqbFxaXHRydNzazDQyNIyKjERCRGRmZExOTLyipOSytLy6vIyCfBweHMzOzNS+vMRqZMRSTNzGxAQCBLxCPMzGvLyulCQmJPz69IxKRIwWFLSGfLyynAwODERGRMTGxGRiXLyqjHR6dIyOjBQWFLSqnNTCpNTKtLyidPTm1OzezOzavOzWvOTOpMTCtMy+rMSynLymfLyedAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAazQIAQECgajcNkQMBkDgKEQFJYMBwQ2ITiEJ0uDFjsgdHgOpIFQRj7UCggZyEksIgoJBPKwVCxnBUXEgwYBgkGGRobHAYDDgUdFx1fawceHh8gDiEdnEthIgcjJCUmDh0nKJwdCCmcKh0WJiumQh0sFR0tFyYuLycwK5u1nBYsFwMuJicTs0MdEhUpDRkxMRkwMDJxQl8zBjM0NTY3N9poKTg5JjorKzsyPNtEDvT19CH0fkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-shellscript2-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaXNze3LyypJyanPz+/Ozq7GxqbPT29HRydMzOzPz69DQyNHRaJKyONJR2LJyCJKyCHKSCHMSqZNTOvIyKjGxubERCRGxSFIxyRKR+HMyeHOTCLMSOHLyWFMzGtIyKhHx2bKSGZNyiFHxeDOTi3Ly2rMyudOTCpOTKxLyqjJR2VJxuDLSGHLSunPTu5Ozm3LyulJx6NNSyXOTCjOzWvPzi3MyqhGxSLFQ2DLSKLNSqTPTWtPzq7NS2nIxyVIx6ZOzezFxCFOy2POSyROTGlPTazPTWxLSiZLSSVMy+rOzaxKyCJMyeNOSyTNy+dLymXLyePNyqPKSWfOTStLymfKR6HMyaPMyaNJR6TMy6pFxKLHxWFKR2FIxiDOTOpLyedMTCtIyCbMSulAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfQgACCAAGFhoaDiQECjIwDAQQBiYKLBZYFBgcFkZOVlwgJCgsEDIINDg8QERITFAUVFgcXpYIYGRobHB0eHwgCAyC0giEiIg8bIyQCCCUmtCInKCkpKissLS4vMDGlMjM0NQsINjc4OQ0U26U6OzQ8CAg9Pj8uQBRBKgxCQ0QzRUY2jiDRkURJkCX5ADBp4uQJjRNQokhpMSUIlSqlcFjpQOQKESlYWmTRQuUirS1cumy04qWBlhpUvoARRihMGDFaBoxRUQXMTEUMggodysBPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-shellscript-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFRWVFxaXNza3OTi3Nze3Ly2tJyanPz+/Ozq7GxubNzSxMzOzMTGxHRybDQyNLy+vHRydHx6fKSipISChIyKjGxqbERCRCwuLLy6vGRiZExKTCQiJAwKDLSytLy2rJSSlHx+fDw6PKyqrBQWFPTu5Ozm3LyulLS2tCQmJAQCBPTq3Ozi1MSynCwqLAQGBOTazOzizOzezLyqjBweHNzSvOzaxKyurHRuZNzOtLymhDw+PIyCdOzWvOTOpLyidNzKtOTStLyifMTCtMS+rLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfZgACCAAEChYeGg4oCAwQFjgYBBwGKggEECJkICQoIkwADCwwNDY2mDA4Lng8QDhESsLARExQVDhYXGBkWExIaGw8cHR4SCQQfFQ8eFgUgIQEiwiMSBMYfGB4atwEXDyQd0wQlJicPKAHoFyIpJCoeDgMrLC0YKBsX6i4kL+4OMDEyZijr5oLGNxUqUCioEcPGDAwjPNyI6MEDChQjcOSwsUDHgw07RIgI4KCkAgs8cvTw8eOBogAxQtXIASTISiEuBwUYMoRIixYnZggpUgTDywdIkWJIitRPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-sound-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaXFRWVExSVNze3Ozi1Ly2rJSWlPz+/Gx6dNTS1Ozq7GxubGxqbDRmbDQyNFRiXBy6xFRmZLy6vIyKjERCRAQ+RBy2xByqtHRydIyOjPT29PTy9OTi3ISGhAQ2PATC1ByGlPz6/MS2pAS2xHS2vMTCxJyenLS2tPTq3Ozm3LSmnAQaHARibARudAR2hEySnOTm5MzGvLyulARKTARWXDyCjOzaxAQiJEx+hNza3MzCtOzexOzavLymhBQuNCxqdLy+vKSelOzWvLymfDxOVISipAQCBNzOtOTOpFRybKSejMS6pOTStLyedMS+rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfLgACCAAEChYeGg4oDBAUEjwYBBwGKggEICQkKCAsMCJOVAw0OA4wIDZsHD4oQERINDRMIFA0MFauCFhcYARkJGhscHRMeuB8RICEQHgcaBCIcBSOrHyTWJSYnKB4KHCkqK6ssLS4vMA0LMRoyKe0zuDQ1LTYoHBwU7Ck374M4NTkmdHDIsKMAjx4+cAn6ASSIAhRCdvDgMYSIQkJFjBzJsALJjSFJLCoSUKCIkiVMegxpksTJxQATnjwZMWMGER9OXI58wLOnzwd+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-source_c-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbIyKjMTCtPT29GxubMzOzPz69DQyNHRydERCROTi3IyKhIyOjPzy7PTu5Ozm3LyqjPz29PTq3Ozi1LyqlPTm1OzizOzWvLymhGxudGRmdFxedFRWdERKdDQ+dHR2dFxidAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaHQIAQECgajcNkQMBkDgKEQFK4LFgLhkMhOl0iElbFgtEgOJQC8BXxOEDOw0DkGhYMJHCq4FuYJBQUEQN5RGlWYBQVFheEVWEYFRkaG40RXw2JGX6MaIiRHGCccQKAkRodHh4fjQ+tICEiIyQkJY0mJg8FJwWzJbVKD7gnI7K+v3EOycrLDn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-source_cpp-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbIyKjMTCtPT29GxubMzOzPz69DQyNHR2bERCROTi3IyKhIyOjPTy7Pz29PTq3Ozm3LyqlPTu5Ozi1LyulPzy7LyqjPTm1OzizOzWvLymhHRydHR2ZHR2XHRyTHRyRHRyPHR2dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaHQIAQECgajcNkQMBkDgKEQFK4LFgLhkMhOl0iElbFgtEgOJQC8BXxOEDOw0DkGhYMJHCq4FuYJBQUEQN5RGlWYBUWFxiEVWEVGRYaG40RXw0ckV8djYaZFh5gnGgKnx4fICAhjSIPrSMkJCUmJ6woBQ8FJAUlJ7VKDygPD7G9vo0OycrLDn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-source_f-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbIyKjMTCtPT29GxubMzOzPz69DQyNGR2ZERCROTi3IyKhIyOjPTy7PTm1LyqlPzy7PTq3LyulLyqjPTu5OzexOzWvLymhHRydHR2bFx2XFx2VFR2TEx2RHR2dFR2VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaHQIAQECgajcNkQMBkDgKEQFK4LFgLhkMhOl0iElbFgtEgOJQC8BXxOEDOw0DkGo4MJHCq4FuYJBQUdnlEaVZgCgYVFoNVYRcYGBEZjBFfDRePEgkajIUXGxgVYJxoCp+hHBwdHowfIK4PDyEiIyStJSUFDwUmJiS2Sq8PILG+v4wOycrLDn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-source-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbIyKjMS+rPT29GxubMzOzPz69DQyNMTCtHRydERCROTi3IyKhIyOjPzy7PTu5Ozm3LyqjPz29PTq3Ozi1MSynPz27PTm1OzizOzaxOzWvLymhLyifOzexLyedLymfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaJQIAQECgajcNkQMBkDgKEQFK4LFgLhkMhOl0iElbFgtEgOJSCx7WAgBwi52FAsi4oBINJnCpAqCkPChUSA3tEEmoFahUWFxiGSwphGRYaGxyQEn4NHZVfj2iLlR5qoHICGYyWHyAhIpB9Dxp+IYAjsGokaiFqJZAJDwkDHBwYJiW+Sg7LzM0OfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-source_h-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxubPT29IyKjMTCtMzOzDQyNHRydERCROTi3IyChIyOjPzy7Pz27PTu5Ozm3LyulPz29PTq3Ozi1Pz69LymhOzizLyqjPTm1OzWvIyGhIR6dIRubIRmZHxaVHxSTHxCPIRydIReXHxWVHxKRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaIQIAQECgajcNkQMBkDgKEQFK4LFgLhgMiOl0mFFbEYVEgMJQC8DXRODjOw8DjGhYMIHCq4FuIKBASDwN5RGlWYBMUFRaEVWEXFBgZjEoPXxoSkX4bjYaZGBxgHZ2AkR4cHx+cSiAJCRAhIiMkJSaNCREgBScFKCkqtkq4sLK0JsFxDMrLzAx+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-source_java-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFRWVFxaXNza3OTi3Nze3Ly2tJyanPz+/Ozq7GxubFRWXHRydMzOzDQyLIyKjGxqbERCRCwuLHx6dKSinKymnLyyrNza1PTy9Ly2rIyKhDQyNGReXKyejKSWhIx+bJSCdIRuZCQiJISCfGxaPJSKdHxuVHReRHxiVHxeVGRGPKSajMS+tMSynAQCBFxeXGROLFxCLFxCNFw6LGxiXFxiZMTCtOzi1ERGRLSytJSWlERKTNzSxOzaxKymlOTi5JSSjISChBwaFNzGrLyqjKSmpDw+PMS+rOTStLyqlLyifGRmZKyqpLyidAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfWgACCAAEChYeGg4oCAwQFjgYBBwGKggEECJkICQoIk5ULmJoIDA2eDoqXowgPDBAREoIRExQVFhYEBA0XGBkaGwAcHR4dHx4gIRMGDBcEFg4iIyQlJicoISkqISssBC0OLi8lMDAxMiozNDUUNjctEjg5OjklDCEcOy4OFDw9Pg4QfuQAEgTCDglCHAQYMaQHEVRFBhRhIACHAyMLIHg4guShIAg6KDwYMYHBhBVJhiBRgmrQkhxMKlBo0ULlkCYtLbGwYYNmCyJNguYk5KBoUQlGi/oJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-source_l-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbIyKjMTCtPT29GxubMzOzPz69DQyNHRydERCROTi3IyKhIyOjPzy7PTu5Ozm3LyqjPz29PTq3Ozi1LyqlPTm1OzizOzWvLymhGxudGRmdFxedFRWdERKdDQ+dHR2dFxidAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaHQIAQECgajcNkQMBkDgKEQFK4LFgLhkMhOl0iElbFgtEgOJQC8BXxOEDOw0DkGhYMJHCq4FuYJBQUEQN5RGlWYBQVFheEVWEYFRkaG40RXw2JGX6MaIiRHGCccQKAkRodHh4fjQ+tICEiIyQkJY0mJg8FJwWzJbVKD7gnI7K+v3EOycrLDn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-source_moc-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIQAAPz+BKSipISChERCBPz+/AQCBMTC/MTCxISC/FxaXDQyNASChARCRPzCxAQC/PzerMRaBPyCBPyqXISCBPwC/MQCxIQChATCxMT+xATCBASCBIQCBARCBPwCBMQCBMTCBCH5BAEAAAAALAAAAAAQABAAAAWOICACQRkI6DCuJOG+JysGL1wIMm0YNHEUBNwqsDMgEL5AIqEYIhZPxqtwUI0CzwRDSih4E6KGeLl1vB4FMAASkTC1icmjmxZBKBXL4YLJaAoPgWoQEBsbGX4JHHR1Ih0eChkTGoqADQ9qMwR+GhwcXlSZAAJzDQNogZeiAUBeaAcNHw2iAygocQkCuQN+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-source_o-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbIyKjMTCtPT29GxubMzOzPz69DQyNGR2ZERCROTi3IyKhIyOjPTy7PTm1LyqlPzy7PTq3LyulLyqjPTu5OzexOzWvLymhHRydHR2bFx2XFx2VFR2TEx2RHR2dFR2VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaHQIAQECgajcNkQMBkDgKEQFK4LFgLhkMhOl0iElbFgtEgOJQC8BXxOEDOw0DkGo4MJHCq4FuYJBQUdnlEaVZgCgYVFoNVYRcYGBEZjBFfDRePEgkajIUXGxgVYJxoCp+hHBwdHowfIK4PDyEiIyStJSUFDwUmJiS2Sq8PILG+v4wOycrLDn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-source_p-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTCxDQyNPz+/FxaXKSipPz+xPzerISChATCBARCBASCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARVEEgQqrUz3yqGCJlUESRZEFVooWZAfJpbEkU9gNMqo4KBi7vSAfWjyFxIUnEkJAwPy9EugEDFSE+nMzojVKvLREGsKCgWjMVybDaj0eH2OZ2Objb+CAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-source_pl-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbIyKjMS+rPT29GxubMzOzPz69DQyNMTCtHRydERCROTi3IyKhIyOjPzy7PTu5Ozm3LyqjPz29PTq3Ozi1MSynPz27PTm1OzizOzaxOzWvLymhLyifOzexLyedLymfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaJQIAQECgajcNkQMBkDgKEQFK4LFgLhkMhOl0iElbFgtEgOJSCx7WAgBwi52FAsi4oBINJnCpAqCkPChUSA3tEEmoFahUWFxiGSwphGRYaGxyQEn4NHZVfj2iLlR5qoHICGYyWHyAhIpB9Dxp+IYAjsGokaiFqJZAJDwkDHBwYJiW+Sg7LzM0OfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-source_py-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaXNza1Nze3Ly2rJyanPz+/Ozq7GxqbPz6/NTSzDQyNKSujIyKhHRydERCRGR2PHyaLLzObIyqNKzCZIymRKy6jPTy7OTi3ISChFx+HISaNKyuPJyaBKTCRKS+VISiVGyKJHSGPLzWdKS+TMzefISCJHRiBGySJJSyNLTGbKzKRHSaHJSWhLyulHSKNJy6RKzCXISWRLTOZJSuVIyuJGyOHHyWLOzaxJSqTGyGJJSmXHySPJS+JHSOHIy2JHR2XLyqlERaHGSGHFRqJHSOJGR+JFxmPNTOxIySbHyORHSWJPTm1ISiHHyiJFRuHMSqjPTu5OzexFx6LMTCtMS+rJyidISqJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfKgACCAAGFhoaDiQECAwMCAgQBBQGJggEDBpkGBwgJk5WXmgYJCAqeC4kFAwysCQYNDggPqIMQERITFBUWFxgEGagaGhsVHB0eH8ggvQQLISIjJCUmJygpKissLRcuCy8wMSMqMhszMzQ1Njc43QA5Njo0Ozw9Pig/LCxAQbRCOkM2iBQxgsLGjyJH+CXKoEABkiRKWCxhQYQBLUsYLhxgwkRJEydPoFwkhCEKRylKbNSYIlIRASpVCFj5UeMKhJaDAizYybPnAj+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-source_s-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbIyKjMTCtPT29GxubMzOzPz69DQyNHRydERCROTi3IyKhIyOjPzy7PTu5Ozm3LyqjPz29PTq3Ozi1LyqlPTm1OzizOzWvLymhGxudGRmdFxedFRWdERKdDQ+dHR2dFxidAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaHQIAQECgajcNkQMBkDgKEQFK4LFgLhkMhOl0iElbFgtEgOJQC8BXxOEDOw0DkGhYMJHCq4FuYJBQUEQN5RGlWYBQVFheEVWEYFRkaG40RXw2JGX6MaIiRHGCccQKAkRodHh4fjQ+tICEiIyQkJY0mJg8FJwWzJbVKD7gnI7K+v3EOycrLDn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-source_y-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxubPT29IyKjMTCtMzOzDQyNHRydERCROTi3IyChIyOjPzy7Pz27PTu5Ozm3LyulPz29PTq3Ozi1Pz69LymhOzizLyqjPTm1OzWvIyGhIR6dIRubIRmZHxaVHxSTHxCPIRydIReXHxWVHxKRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaIQIAQECgajcNkQMBkDgKEQFK4LFgLhgMiOl0mFFbEYVEgMJQC8DXRODjOw8DjGhYMIHCq4FuIKBASDwN5RGlWYBMUFRaEVWEXFBgZjEoPXxoSkX4bjYaZGBxgHZ2AkR4cHx+cSiAJCRAhIiMkJSaNCREgBScFKCkqtkq4sLK0JsFxDMrLzAx+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-tar-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaXNze3Ly2tJyanPz+/Ozq7GxqbJySbJyadPT29Pz69GxubMzOzDQyNPz21LSujPz25OzmxNTS1IyKhERCRKyqjLy2rKSehPz67Pz23OzerKSaZMzGxPTy7PTqvOzirMy+dKyeTIR2NPTq3LyubLyqVJySPHxyJOzi1LyunPTqzOzW5OzSzNzOrJSGNGxiNLy2pPTm1OzezLyqjJSKZOTStOzOxNzGtOTSjKSSRIR+LGReHLyynOzexLymhOTWlNzOhFxSFHRuRNzKfNTGdHxuLGxeJIyCbMy6pLyifLyqlNS+pOTOpLyedHRydJySfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfLgACCAAGFhoaDiQECjIwDAQQBiYKLBZYFBgcFkZMICAkICgULDA0LBA6Cnw8QERKgExQHDBWpCBAQFrm4EAkKAhcUqRgRGRqsGxIbHB0eAgOpCRofCw8WICEiIwMkJBDRCwsgICUmIico3CkqtissLS7mJy8wMTIzNKk1Njc4OSI6Xuzg0WOGjx/6gOQIEkTHiB0ohKjwYQOhoCEliBQxcuQIDCRJbNhQkmoQRhgflzAR2cRJSUFPekDpQbMHjR9OXCpywLOnTwd+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-tex-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTCxDQyNPz+/FxaXAQChKSipPz+xPzerAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARgEEgQqrUz3yqGCJlUESRZEFU4lkQREJ/2skU9BEaezzmRCwccwDCc+XwIFGhI0ZEMxiURxzIQkghp0+qjJlDDHdRnQPSyGu4oEfguRTrs9fqmWAjfPHpSkWMReyIbg34RACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-tgz-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBIQChFxaXMQCxNze3Ly2tJyanPzC/Pz+/OTi3GxubJySbJyWbPT29MzOzPz69DQyNPz21LSujPz67OzmxJyadNTS1IyKjGxqbERCRKyqjLymhLy2rIyKhKSehPz23Pz+9OTevOzmtKSaZMzGxPTu5PTqzMy+dKyeTIR2NPTq3LyulOzirLyubLyqVJySPHxyJOzi1OzW5OzOxNzOrJSGNHRmJOzezJSKZOTSjGReHLyunOzaxOTWlNzOhKSSRIR+LFxSFLyynOzWvHRuRNzKfNTGdGxeJGxiNIyCbMy6pNS+pNzSrAQCBHRydLSunMSynAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfYgACCAQKFhoaCiQOEBI2NBQIGAooHjAiXCAkKCJIAAZ8BCwsMCw2XCg4PBhCCohESExQVCxYXChgZrAsSvBIaGxIbDA0JHB2sHh8gHx8SISIiIyQlBBysFR8mzBIiJygpBSUqK9cPEywiLS4oLzAFKjHkAAwmMjM06y81NgUmNxuscNCYQSIHuxopdOy4wQMgABw9cvjw8SMFEBhBhPAY4hAAkRZFjKQ4cgRJEiWgAiTy2AKJSSFLmAQ4MKDJSidPFggRAmXFhgADNthMJACC0aMQAjRZ6icQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-txt-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaVPzKjMR6RNze3Ly2tJyanPyODPz+/Ozq7GxqbPyKBPyGDPzGjPT29HRydMzOzDQuJOx6BPyGBPyKDOTWzIyKjERGRDQyNKROBOR2BOzezIyKhBwOBKRKBNSOXOza1CQOBPyCDOySZPzizPTWxPTy7Pz69Pz29PTq3LyqlMxmJNRyROy2lPTu5OTi3MSulFxGNIRWLMR+XPTKrOzStPTm3IRSNOzizOzavLymhLSyrEw6LKRuVIx6ZNzSvOzexNzWxNzW1FROTBwaFKSShOzWvOTOpOTazJyWjHRqXNzKrOTStLyifMS+vMS+rMS6pLymfLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfOgACCAAGFhoaDAgOCAQSOjgUBBgGCB4qEBAiaCAkKCJMACwwNA42bCA4PEA4GERITFKQVpwgWDwoXGBkaE6MDG6cOBAUcGB0eGgsTDR8gmw4OGwURACHIIiMkJSYIJygpKSoYgtYrLC0kLdAuKS8w1IIdMTIzNDUbLjYpG+KDABcRbtRrYWMDjhw6xg0KsCMAjx4+fmwAEiShvwBCChgYQqSIkRpHdMBjZCIFkh1JlCxhcqSJQkZOnjyBAgOGjihSpLwkhAFDBJ9Ae0bwEwgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-unknown-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXIyKjNTW1Nze3LS2tJyanER2RGS+VPz+/PTu5GxqbPz69BQ6BCxeLFSqRPT29HRydMzOzDQyNERmPKSypCRWHIyKhERCRDyGPKz2nESiLBxGHCyCHGxubPz6/PTy7Ozi1Ly2rKSipOzm3LyqlKSWhCRyFOzizLymhNTKtNzOvOzaxOTStPz27OzWvOTOpLSupLyedMS+rMS6pMSulLyqjLymfLyifAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAamQIAQECgajcOkYEBoDgoBQyAJOCCuiENCsWBIh9aGw9F4HCARiXciRDQoBUnlYRlcIgsMG5CxXAgMGhscBRAEBRd7AB0eBBoIgxUfICEiikSPgyMMIAokJZcBkBybJgomIaBJAZoMpyCmqkMBFCcVCrgKKAwpoSorKqchKCwtvasIFBIhLiYvLzDHsxQNMcMKLDAwMqEz3jQ1NTY3ONyrE+jp6hN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-vcalendar-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBFxaXDQyNAQCBMTCxPz+/ISChAQChKSipAQC/Pz+xPzerPyqXMRaBAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARyEEgQahVijMmD/oRAbBw1FCgaFFrpEbB6jt1g3OpFAscxwATUiIAgBRKJXiqIYJEMBQNSWSAYgptrMDo9FJqKrHArTR4WLGisSkbebE12gXFFGRBFyd3eaFSvbx1xCDBXC2E1e1EECo07ABkaBh4fGn4RACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-vcard-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBFxaXDQyNAQCBMTCxPz+/ISChKSipISC/ERCBMTC/Pz+xPzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARvEEgQahVijMmD/oRAbBw1FCgaFFrppeo5drKhXqQUEIfREyweqWIoHo4GDYtkGxwQ0CjitEkUrCyfYjtdbJoFW/agmLJWWZSY3B0EbGJ4uAwcHlK2HpTg7YgHBgQjDH0THoGBCwULjDkAGR+RH34RACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-video-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaTFxaXIxuHJyCLHx6ZLy6vJSSlNze3Ly2rMy2RNS+TKyqrMzKzPz+/Ozq7GxubJyanLSePKySNKSSPNTS1JSWlDQyNMSqPLSmVNzKZJyenIyKjHRydGxqbERCROTWXNS6XOzidNzOZPT29MS6rISChLSulMy2TLyeNKSOPJyCPOTi3JSSfHxiFGxaJFxWLFROLPTu5Ozm3ISCdDw2BFRKHHxqPFxWPLymTMzCvPTq3OzezKSWTMzCbNzGZExKNHx6dLyqjMy6XMSqTMSmTEQ+JHRybMSynISCbMyyVOTWbLy2ZBQWFGxqZOzifDw6LCwiDISCZJR6LIRqJBwWDExKRHRuXHxmJGxeJFxSHCQiFFRGFGRSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfhgACCAAECAoWHhoMDBAUGBwiRkQkCBwGCCgsLBQwNDp8ODxAOEQIAChITFJwVoA4QnhYXEhgZBRoFG62fHB0eHxcgIQUiIyO5uyQIJSYXJwUoKSoUKwEWniQkLCUXHy0DLi8vMDEfBw0kMjMnFwAfNDU2Nzc4OTgmOjs87ILvEj04NPj4ASRICR5C2vVrEWAIEQwSihg5giThIHdJiCgJMWIJkyZOLA4K8CHJkycimEAJEcWJQkECEHyQEqIHFAJTqFSxcjGAjhIfrlzAkkWLDS1bel5Y+mELly5YCEyQ4CcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-wordprocessing-16:mimetypes mimetypes16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFRSVFxaXFxWTNze3Ly2rJyanPz+/Ozq7GxqbHR2dHRydGRmZERGRMzOzCwqLJyWjOzi1Oze1PTm1PTm3IyKjDQyNERCPPTy7HRmXCwqJPT29DQ2NNTGnOzm3PTq3CQqJMS2hDQuLKyaXCQmHBwaHKyahLSijKyehBQaFCQiHHRqNPTu5LyulCwuLHxyNAQGBBQSFERCRBweHOzezIyCVJSSfOzavLyqjOzexOzWvLymhExGJEQ+JExCJExGLCwqHOTOpDw6POTStLyifMTCtMSynMSulLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfWgACCAAECAwIChYeDjAIEj48FAgYBjIIBBAeaBwgJBwYDjAoLDIkNmgsOnw+CEBESExQSEgsHFQsJDRYAFxWbmhgZGhsEBRUcHQ8cEB4fzhAWICEYxSIjJCUDJicnKBkpKissFC0uLwAwMDEyFzHpDxgfES27DyozMyX6+TMTEzQtWJWoIYGgQRsl/t3AsStFQRoGIYrIkUPHDhcANPDo0cMHxx9AUtzQEWQHKwAcSDy4IAQbh5FDghDZNShAkZsFjBzBgaQnh0YcHojgIMIFBwtBXfgJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-1downarrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBBQSFAQGBDQyNExKTHx6fGxqbFxeXGRiZFRWVDw+PAwKDJSWlOzu7LSytJyenJSSlISGhISChIyOjFxaXDw6PPz+/MTCxLS2tIyKjKSmpKSipJyanAwODDQ2NHRydERCRFRSVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZzQIBwSCwaj8ikcslsOp/OgHRKlQoCgymRUDAcEIkwYgxWFBYERpHQcDwgEclEQmk8DhWL2kiIXDBwExMNGRoJaUkEEH8bEQ0cGgcWAksEHX8QHBKSHk1sfxMHH5ROBBsOICGkT2wiq1CIULKztLW2t0h2QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-1leftarrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAQCBExKTJSSlHx6fAQGBOzu7GxqbJyenPz+/LSytFxaXMTCxGRiZKSmpISGhFxeXISChAwKDFRWVHRydJSWlBQSFERCRIyKjDQ2NIyOjLS2tDw6PBwaHFRSVDw+PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZ5QIBwSCwaj8ikchgQLJGBgfNZDBAKBirRekBMtYGEYsHIgsWNhOO7tCrShDU18Hg/CJAIG0o4wCUQcksTFBUSCRYSEnpUFxgIGQkJGYyNGggbHBaVjR2QCxEeWkITHQ4IH3tPFwEMA2ajAKUgqlQTTbFEE7W5vUgGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-1rightarrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNGReZAQCBMTCxGRiZMzGzOTm5LSytPTy9Pz+/CwqLOTi5Ly6vCwmLMzKzJyanJSSlBQWFKymrIyGjCQeJJyWnISChISGhHx2fKyurDw6PAwODHx6fHRydDw2PERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZ2QIBwSCwaj8hkMRBQKgOCgRMZIBSk06XhEM0SA4iE4uoVLhCMhqLrdSAekMgYO5VM4BQ521mxIC4UFxBWdEkSERYYFxETGQGFSBKCGBEaGRuQSBwdeZaPXpsQCB6YZQMdEI6ZSgMepKusHh+wrCC0rLdlursGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-1uparrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBFxeXDw+PMTGxHRudPz+/JSSlLSytIyKjHR2dISChIyGjIyOjLSutLy6vKSepJyanISGhJSOlOzm7Ozu7MzGzKyurJyenDQyNGReZKSmpIR+hCwuLCQiJBwaHBQSFAwKDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZtQIBwSCwaj8ikcslsOp9QYyAQFQYEAyr0Sihkn1fDAeHVLsOJNELxVaITC0bDUU6GH5AIQ8KYrNtFVxQVFBYWFxgRCREYdUQZGhYEDwgIGxAHCQocCgWOQhmhGR0epR8gqCFTq1Wtrq+wsUt0QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-2downarrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBAQGBBwaHDQyNExKTHx6fGxqbFxeXGRiZFRSVDw+PAwKDJSWlOzu7LSytJyenJSSlISGhISChIyOjFRWVDw6PPz+/MTCxLS2tGRmZDQ2NAwODJyanKSmpKSipIyKjHRydBQSFERCRExOTFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAasQIBwSCwah4FkQKBsDpoBIqFgOCASCYRWm1AUFgRGkdBwPCARiWRCaTwOFYvYSIhcMOiJpJGZaDYcR0IEHXceEQ0fICEWIoJDhHcQHxIHgI9SEHeVG46YUh8OISOen1INCqWmUnOYTUxQAU9NUlRWWFtbCiRgrYNlZ2lriG8lYUd1khETE24gCZeCkRgeFBAQIAeNn9OTlXKrBJoYnKrcoaPmpmSpq3S+7u50QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-2leftarrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAQCBExKTJSSlHx6fAQGBOzu7GxqbJyenPz+/LSytFxaXMTCxGRiZKSmpISGhFxeXISChAwKDFRWVHRydJSWlBQSFERCRIyKjDQ2NIyOjLS2tDw6PBwaHFRSVDw+PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAavQIBwSCwaj8gkMiBYNpeDZzEQXRIKBmPgmtUSDgipcAsWjxOKBaN7Tq+n6EbCIQ3E5+KtQk6gjwl7CX11D3sPBBARTQGFDYeJT2R8EhB0koKUfgATFBUSCRYSEoqcnqCiikMXGAgZCQkZqautr7FiFxoIGxwWqQC4ury+qh2tCxEexMbIRhMdDggfYs7Q0kcXAQwDbELY2txEziBmmx3jSRNMR+nk4e2b70ry80QGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-2rightarrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNFxeXAQCBMTGxOzm7CwqLLy2vPTy9Pz+/Ly6vCQiJLSytLS2tLSutOTi5MzGzKSepIyKjJSOlKSmpMzKzJyanIyOjBwaHIyGjISGhJSSlISChBQSFJyenIR+hGxubDw+PHRydHR2dEQ+RHx6fERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa6QIBwSCwaj8hkIIBcJgEBweAYnTYJUmMAa9USClniFtwlGg6IRFhoUKTXwwWj0FB3F46Hwl6UQyISfAB+EROCQgsUFRYSF3yJEIyBaxgWDBkaGRtclQwSHBIbEGEdGx4fGhcOICEDGBsWHBmqIq1CHRIWGRMMIyRTHRy6Er22tyONq8YdJRe0xkIDwr2/QwMfliMmZQADIxasZd4e4UYDIr7c59rc0eVFA+/m0EQD9PDt0flP/P3+BkEAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-2uparrow-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBGReZDQyNMTCxHx6fPz+/JyWnKyurHx2fDw6PJSSlISGhIyKjIyGjISChLy6vJyanOTm5PTy9OTi5MzKzLSytKSepMTGxMzGzLS2tLSutKymrHRydCQiJCwmLBwWHAwODLy2vHx+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAajQIBwSCwaj8RAAMkUBgSDZdP4JBSi06TAcEAkFNLp07BgLLzY5njRcDzO3zB1C4lEGI83Wj58SiYUFRUWdg0XEXFFAwIYGRoWGxwRZQUFHZdgRAObmx4fHiChISFKpVlKWUdPaalOAlasp1sHG4myZGZ7Yltsbgu1mUhjdRF5egmxfQJ/gYOFdrZDi40iFgiSCw8jBQmYcpydn6Ego6WorUwGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-abs-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBIQChAQCBBQSFCH5BAEAAAAALAAAAAAWABYAAAJLhI+pF+vW4HMR1InqxbJzBiLCeIxCaIkneQJk6rkl+2qlONzeNi+2YvKhEIOW4iczvJSoSDDIbCpbq2oGBXUtd59r7IPshsHdB70AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-airbrush-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAASC/AQCBPyChMwCBIQCBPz+/MzKzKyqrISChDQyNPwCBAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAR8EMhJKw3BahvEyNvWDV+ojQMBAhgmeukaFHSxTqh6FYZx3CyYbtf7XYRAFs8nQ56WxiBpyOEdjLkkrnA9IAKGqXbnTYAP1NDMe0Z8JYR4nPP1seEqTHpWZMupVHx2by03Q4JXbxuBfYoaaVZ3i4YKbo4WaQAKBCxjcEAGEQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-appearance-22:actions actions22 22:photo:22 22:R0lGODlhFwAWAIYAAPz+BAQCBBweHPTy7Ozq5ExKRPTu5NzStLy2lCQmJAQGBOTezNTKrLyylNTKpOzm3NzWvOzm1MTCpNzaxISuvBSGvLy+pKSehOTexISutKTa7IzS7GSarJTW9HTK7CyazBRypMzGpDw2LOTaxEyKpCSSxARGbERCROTizMS6nDx2jARajIR+bOzi1OTi1MzCnLy6lOSupNx6dGS2rJS6pMy+pOS2pNxGTKwaLDSmpHTOzES2tIyuhLSmjPyqrMw6RLSOhLzSrGyqbFSmXJSyhNTOtGTCvLzm5CyOjEQ+NPRqbOxOVKyKfMzizKzepFyuZJSqlBR6fCRmZJSKdDw6NLxqZLQiNIwyNLSejDSCRJzWnEyiVHySbBRiZDQyJMSijGS6ZHSCZJyafDRmPISKbJyifDw6LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAXABYAAAf/gACCg4SFhoYBAgGHjIQBAwQEBYwBlYiQAwYGi4UBBwcInIIJA6WRBAqdCwcMDA2pggEEDpUODwSiAAEQnwwHnI8RwBIGsLoLExQVFg4XiwEPD6IKGBjAExkaGxUcocfSgwHV1uITFR0eHyAhIroRERLAC/PVIxMkJSUgJvHH1RAKTixAgQzZhAkpVKwwwYKWrgnzFrRY4IIgBoMTRryQAGPjs4zzYsgYQdIgsgMzaNRw0CCBLgn2bNzAceMgSZITcujYwaNGj2sjcPjw8QNIECFDiEgoYuSIDiQOkoSTMAGHkiU4mAhp4uQJDyhRjOSQMiUXFQdVrOC4giWLFidbRri8QBKlyxQviIp8udKjRhYwYLKEedFAjJgvucI5cFBEgoMxkMm82PjFmCERix1wLCNmcg8viRGZ6aHZcQ8zoRtVWp16UCAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-attach-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBMTCxPz+/DQyNKSipAQCBISChFxaXDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARrEMgJgqA4zzus/gLhFd5HCcZAXqsphYPUdhcYFNRcZnvdtpnDqPTbUWgAJKBYwzBlw+bRo3xmkNWoBgm0OrVLn3GC9RgCk8DhUw7c0rHPr4CDu5SYQNyEt7uSY3p/UAKFhYKDSQOLiwgFdhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-back-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VCRGZAxCZGyavExmjHyatOTy9CxihISevPz+/KzO3BRylAw+XAQCBDRWbPz6/FzC3CSuzDyexJzO5Mzq9CxSdAQOFISmxNzu9HTS5BSmxAyexDSuzJTa7Mzu9Kzi7GS21CRmjAQOHHSWtLze7AyWvHzG3BRihAQKFCTO3BS+1AyixBSWvBSOtBSStAQWJBSixDzW5BTC3BSqzBS21CTC1ETW3AQSHEze7BRqlBRmjAQCDBR+pBRefBRSdCH5BAEAAAAALAAAAAAWABYAAAalQIBwSCwaj8ikMqBcMpvHgGAANQYIhWdVGDAcENQtIJBQLBgNx0MQaDuQXcghIplQDhBIxXKJYiAZGhscHR4VHyAhIiNWJBklGhIbJoQnFCcTKIxFKSgbKissJi0mJi4vLiYoMEcXKDEyMzQ1Nje2NisoOEg4KDU5K6g6OwwoKAN9SCOeMmgwz884PEq9PT4NYkPLP9jZQikN3d4AKVrjKePp3gZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-blend-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQmJAQyNAQ6PARGRARSVARmZARubARuXARmTARiPAReLARaHARKBAROBAQCBERydESChESOjESanESmpESytES+vETKzETKtETCpES+lES2fESybESqXESiRAQ+PARiZARybASGhASWlASmpAS6tASynASqhASiZASaTASSNASKHAR+BARiBARydAR+fAS2tARKTDRaXARaXASOjASKdASCZAR+TAR2PARuJARqFAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa3QIBwSCwaj8ikcslcBp6CAaFQMBwOiIRiwWg4HA9hAAKJSCaUiuVywWQ0G07H4wkDxp8CKCQakUolJicoKSorLC12eHouL34lMIKEhoiKEFMgLn0kMIGDhSyVYhADjJuAkoWHiaMEMXuOnJ6Tq5alBpp+nSeflKx3l6a6s6CiwKWZm52pvpaue8rEzaPIubLMta2Mscu9ob8BMgIfBDPJNDQ1Njc4OTotDXYP8/T19vZN+fr7SXRBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-bookmark_add-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBCwqLCQiJCQmJMTGxAQCBLy+vLSytERGRFRWVKyurKyqrLS2tKSmpHR2dJSWlKSipISGhGxubIyOjGxqbIyKjFxaXGRmZHx+fPz+NGRiZPz+ZPz+HMTCBKSiHPz+jFxeXPz+XPz+tPz+zPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAamQIBwSCwaj4Gj0hgQLJ+AAaEAVQoI06pRYDhkoYgwIhEgKBTfZ2FhaBsYDS8VWnA8Go0FJIKeqyUTDw8EDHBpSwUUFQ4UFhcYDQYFfkoFFxEQDG8KEAUZlEeWGBIakw4FG1STiBoYBRwdBR4fHgUdHKBEBSCnIR8iIyIfIblFu6ceIyQjtcXGCbLKzAUKzrq+wMLEVa+xs7W31kOTk6nkWuOf6Ea5QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-bookmark-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBCQmJCwqLMTGxAQCBBwaHMTCxLSytERGRFRWVLy+vKyqrKSmpHR2dJSSlJyanISGhGxubIyOjKyurGxqbFxeXGRmZHx+fKSipLy6vGRiZLS2tFRSVHRydJSWlHx6fCH5BAEAAAAALAAAAAAWABYAAAWWICCOZGmewamaQrq+wUC8azHINGocOI38iIRAceDNaISFYklkGHOEhoNBfUAOhuOLEJE8HoPiRKFdESiQBqViuTDIUAsEcyAeGJmyiqC5RCwJGg0YcEh9D0V3Dxt6JwQVDRYVHBUdi40mjw0PTgwQHgeYJQQJfxUXFxAOoTkFpQ0fsRSimQkWEQ0VtI62HLt7vjl7JQYhACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-border_all-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAI+hI+pyw0Bo5wR0TttUJDv0yWhRopfaYzguaKt6aasrGFYbVPxM/O7Snv9WEAfTIgMKpNGWU63emYc1GrVUAAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-border_bottom-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIyhI+pyw3xIpwyOgOv1dvl+2lhMzIlyZ1KQLUVm8Zch4ozbcq6l7L+D4QhgsTf7Xi0FwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-border_fall-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAI/hI+pyw3xIpwypgBRdg/v9h2eyBnZCIKYxX2oEsJruVKjHS8vk3duKZnpHKjeRSTU0HYpTcxWgRqB1KrVYC8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-border_horizontal-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIyhI+pyw3xIpwyOgOv1dvl+2lhMzIlyZ1KwLbuyybw7KY216Einpv377FRhhUV78igFwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-border_inside-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAI7hI+pyw3xIgxTRvcg1oku3njbBx4liV3dqYbsSsXyLBr0Pad1iCovsmOwgjbdz9TrGHWWSeWZikoXhgIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-border_left-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAI6hI+pyw0Rnox0ygNXdG9z43Xal30gUiYhk5LoenJQRVtti5FwE+Kx4+O9RrIda6gwDmvMi+kJjTIMBQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-border_outline-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAI8hI+pyw0Bo5ww0SttcKci/ymgMTZl+Yjbt3Jn26lautX0A+OizHJkjsrper7XbkZ0ATEYDZPii0qnU3sBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-border_remove-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIthI+pyw3xIpwyOgOv1dvl+2lhMzIlyZ1KQLUVm8Zch4ozbcq6F7s+fgsKb4YCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-border_right-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAI7hI+pyw3xIpzyQRdVuIZj+3nHhogOiZng+I1qoqIdRVfbWy5y1u5M7MFphB1dsDULGXO15goJjUoRhgIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-border_top-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIyhI+pyw0Bo5ww0SvdCdrw7oGfNnZlczIpKorc+8RwZbZgXOc2uevOqpjJhrCb8QgwFAAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-border_up-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAI/hI+pyw3xIpwyOgNRyPq+zTkcuIQKaV3T1pgHinmfm7AUedMa64Vw3bLJMr9TiZcSFUsnkw54q0Rl1KrVYSgAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-border_vertical-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAI6hI+pyw3xIgxTRvcg1oku3njbBx4liV3dqYbsalFeJTp1iCovcjNsb9iZhMFcJwXUxTJLYuoJjR7sBQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-bottom-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VCRKZDRSbBxCXJTC1Mzi7Nzq9NTm9Bx2nAQCBNzu9JzG3Hy+1HzG3IzO5BRmjPz6/LTe7Dy61AyStCTC1FzC1AyGrETS3ETC1ETa5BRulAyuzBRylAw+XMTe7Gy+3CSqzAyexBTC3DR+nIS21KTW5Nzu/KzO3FzC3Pz+/ByixEze7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaXQIBwSCwaj8ikcnkMBAQDgjPAFAYKhsMBkVBUAYEFo+F4QLzVQEQyoVTOX/XBcsHA0+vMRbNBMwkRDhxuHX5GTlIeHh8gISIjFAEeiVRECiQlDAUmgxQjIhwiJHdFlycoKSIUFCEjGiGkRpcqCxYijxorsUezcxYsuoZJsxLAu0qXB7DCTJfHvArR0tPSSNTX1V/a20J2QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-brace-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBIQChAQCBBQSFCH5BAEAAAAALAAAAAAWABYAAAJRhI+pGbHYVHzQnUnrtXn7/gEYIJRHKRgYZraGuXLp28LcNL/Dqd4cYmJYRqegsKcY5DRIUhHYFDlQJGMuVn1ljdhqjhoiZrogKbMjFh/LHUMBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-brackets-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBIQChAQCBBQSFCH5BAEAAAAALAAAAAAWABYAAAJRhI+pyw0Bg3vxwImu0Zha2XkbaAjmYQrjh6qnCpwcB8evTGp1PKDrnzglZqTWDsg5DI5IUE1Yatpc0BrRFr2xfiljJlecXEPjDjG5iIRDCHsBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-centrejust-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIhhI+py+1vgpy0TogztlT7j3CiBJbZWJlqg4rry7jw/BoFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-charset-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIIAAPwCBAQCBAQGBFxaXAwKDBQWFAAAAAAAACH5BAEAAAAALAAAAAAWABYAAANLCLrc/jDKuQK1zmKo3/YVJSpBSZYmKaTkAAwYoQwFELjvpisyaTM7H6AH+3lQMZQwExrOOiBh7/cJGokaXHGpQVaUo7B4TC6bw4AEACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-colorize-22:actions actions22 22:photo:22 22:R0lGODlhFwAWAIYAAPz+BAQCBBweHPTy7Ozq5ExKRPTu5NzStLy2lCQmJAQGBOTezNTKrLyylNTKpOzm3NzWvOzm1MTCpNzaxISuvBSGvLy+pKSehOTexISutKTa7IzS7GSarJTW9HTK7CyazBRypMzGpDw2LOTaxEyKpCSSxARGbERCROTizMS6nDx2jARajIR+bOzi1OTi1MzCnLy6lOSupNx6dGS2rJS6pMy+pOS2pNxGTKwaLDSmpHTOzES2tIyuhLSmjPyqrMw6RLSOhLzSrGyqbFSmXJSyhNTOtGTCvLzm5CyOjEQ+NPRqbOxOVKyKfMzizKzepFyuZJSqlBR6fCRmZJSKdDw6NLxqZLQiNIwyNLSejDSCRJzWnEyiVHySbBRiZDQyJMSijGS6ZHSCZJyafDRmPISKbJyifDw6LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAXABYAAAf/gACCg4SFhoYBAgGHjIQBAwQEBYwBlYiQAwYGi4UBBwcInIIJA6WRBAqdCwcMDA2pggEEDpUODwSiAAEQnwwHnI8RwBIGsLoLExQVFg4XiwEPD6IKGBjAExkaGxUcocfSgwHV1uITFR0eHyAhIroRERLAC/PVIxMkJSUgJvHH1RAKTixAgQzZhAkpVKwwwYKWrgnzFrRY4IIgBoMTRryQAGPjs4zzYsgYQdIgsgMzaNRw0CCBLgn2bNzAceMgSZITcujYwaNGj2sjcPjw8QNIECFDiEgoYuSIDiQOkoSTMAGHkiU4mAhp4uQJDyhRjOSQMiUXFQdVrOC4giWLFidbRri8QBKlyxQviIp8udKjRhYwYLKEedFAjJgvucI5cFBEgoMxkMm82PjFmCERix1wLCNmcg8viRGZ6aHZcQ8zoRtVWp16UCAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-colorpicker-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBMT+xASaBASyBASCBARCBPz+/KyqrISChAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARZEMhJ6wzBahvEyNvWEcMXcgJBFuApjavRhlgaz6J9u5dQDAUZ73VA+FhDQOAQQCQEQt6ymcjgREznlZatJpXdLZYq1ky137M3qS5zwl8lOR5IIDBx5TpviAAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-configure-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBISChFxaXNze3NTS1Ly6vKSipNTO1Ly2vNza3Pz+/MzOzOTe5DQyNOzu7MTCxGRmZMTGxPTy9Ozm7Hx6fPTu9MzGzGxmbAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAW1ICCOZGmeaEoGbBsI6joMRGEcbQwESDIrtVtAF1gwDLNaAmfKiVgLBJKgwB1KxQZrBHU0FAXmavFoQLYiB6TxFXMj5AZBwnJI2I3wcNWALyYEcgoKXxRhOHs7XxEVCwsWFgoUDRYUFwwQB25ZCxiNjo6GkwUXN2NsCxEYqhUHoQ0MEglYRQQXErcHrI55FycuB2YSmoyOBTEtB2sXuhU6XAENC2a6z9AKCwq+1tAN3E2J3ySkIQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-connect_creating-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBPz+BMTCBISCBAQCBPz+/MTCxOTi5AQGBNze3Ly6vISChNza3FxaXKSipAAAACH5BAEAAAAALAAAAAAWABYAAAR4EMhJqwzY6omD+MNGdR8YilNZnug0qGzrqrL1lnV1fyJBVB6VQEMoGH4ADGwQkxQPBwMiKGA2J8VEAnq0tgiKg5aL/C7C2gTjKCM0zowDQ8tuNQznNL7cKzjOUQsNfER+gguIg19+Pm6ChBZFDmWNi5M5FIyYFHQRACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-connect_established-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBKyirPz+/KymrOTi5KSipMzCzNza3OTe5Ozi7MzGzPTq9OTm5ISChMS+xFxaXNze3GReZIyCjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAWLICCOZGmeaBkAQpoGg7C6JizTQT7CxPwOwFWgYPChYIXkIHC4uQKGAiKRKCyNpxxUUVViVYNFLkqtLo+DAkMMLXQPXwAy2WCTF4544FGtKuwPDhB6DnxuUmyCcXIQhV1uYoMuEAcOBxEKCHg6TzGFCJUSizuejROKOAM9OY2SnUU7nD89NCcDsLUnIQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-connect_no-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBPz+BMTCBERCBAQCBPz+/MTCxOTi5Nze3OTm5Ly6vNza3ISChFxaXKSipAAAACH5BAEAAAAALAAAAAAWABYAAARiEMhJq7046827/+AVCKE0Dh9BAGdaGISAToFGFMcBU+11I4hDYseSZQiKwwKoI/QwBIYiuFDCZseGdIlYEjUNg1SpY6w2N4cUIW6cjwW1lsFwo+MqgtZuw0/ydw5vH34lBhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-contents2-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBDyGhCyCfFSWlESOjDyKjDSGhCx+fGSinGSenFyanEySjHSqpHSqrGympEySlBx2dISytHyyrCR6dKTGxHyurHSurHyytGSipCR6fARmZFSalEyWlBRubAxubBRydDyKhDSChLSytPz+/MzKzIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbFQIBwSCwaj8ikMhBQIpmCQdM5ZBIKhgNiugwkFAsCI7pNMhuOxkNBgBgEiAi3GkBLJpJHYgEpaClyREwVFhcSEhgOGQoMfgMaERtcARQBFRMYExZ6HB0FUYAekkIBHxqWFmlrC1haESAfG6MBGx+VFRgKYH0hInGRklO0ppYXCwwMWQiQHkwjgrWnFRdYZHIBJCTP0LaWGAcDW9jZ2nMAw9IWTOQkJSZMRsOV49nu8E+19PbmR7TY+1TovONH5V7Ag0QMBAEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-contents-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAAQCBAQ2NPwCBHSurIS2tBx2dBweHPz+/Ozm1GxiTGyqpPz6/Pz69GSqpOzaxPzy5HxuVLSmlOTazPz27PT29NzClPTexHxuXLSmjAxqbFSinPTy9KyehNy+lPTy5Pz29HxyXNzWxKSahOzexPzy7IR2ZOTWtESenPTy7KSWfIyCbKyijAQGBDyalPTu3KSSdDSOjJyOdCSGhPzu3OzizJSGdPTq1PTq3JySdMy6lAyKhOzWtOzi1OTOrJyKbMS2nJySfMS+rAwCBNzOrNTCpNzKpJSGZKyafLSifLyylIx+ZHx6ZDSChAQuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAAAWABYAAAf/gAABAoSFhoeHAAMAiI2IAAQFjI6EAAaJkQeTjwAICYkKBQcLm5WdBwyfhgChB66bp64HCQC1lQ2irqQCAA4PowsLEBESE4wAuLIHFAAVFr+uDBcYxRm1GrmuGxwdFh4Mrh8gGCET1gDYyhsiFSMkDAsMDCUYJhvnJ9kHKCnODwwfPlBQsULCPRYAWogK9sHFiwoOPEyQh0JFPXO1YBSYwBEFghjdHkwQOYGgwQwIZRR44GHGDBogabhAsYEEihrUMAIoUMCEDRs3HODIYQHFA6MPcJA7KICFjgw7eIzo4cOfiwc/gKwIUm2SkKdDdlDt4AABDaU/iIRwwbTSUyJFOow4S3Hkx9oNDDZgXPU0h1wcSIgEGUw4ibVET5WoWMKksePHpdxmyKADAEIWly9HJtQkQJMmlAgZCAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-contexthelp-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBAQCBAQChAAAACH5BAEAAAAALAAAAAAWABYAAAJQhI8Qy5F/ghBsLuOgpHHy+0hZ94HINiqWwoQrtjYpNqJ0A8Hcjbs73yPNZEHVDygTJohJWqiZe0JPM5ajtXxFMkXnklqNgsPiWzmHPatzhgIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-crop-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBMT+xASyBASCBASaBISChMTCxPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARUEMhJq704681r+EFHBcIwEKFImmfKkURhoh1cyO0rxEWZa7bezIUJ7gg04O62A22MyeeyF1XymrUSs5pZmbA61u+FLBOBhrThozq4D2cgYo6IawwRACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-decrypted-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBGxqbFxaXExOTEQ+RAQCBPz+/PTy9Ozq7Nza3NTS1KSipFRSVOTi5Hx2fJSSlKyqrJyenJyWnDw6PMzKzKyurDQyNFxWXMTCxJyanHRuLHxuLGReJFxSLFROJFxWJExCHERCHBQODISChHxyLHRqNIRyNHRmLLSqbKyiZLy6fOTarPz67Pzy3OzitKymZFxSJJySTNTSnPTy3NzSpMTChLSydKyqbKSaXJySVIyGRGReLPz23NTOnMzCjHxuPLy2vKSmpOTe5LS2tLSutHxuNHRuPMS+xFxWLIR+RDw2HFRKJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SDAQIDBAUChY2EAQYHCAkKCwyOjZANDgIEAQoPjJiDAg2iggQQp5gMBwmrDBESl6MTFKuoFQSjABYRF40CGAW8BRm7hQwNxBobHB0eHx4gISIjBdiEAhYFJBslHOHSHh4hBSHlxIUmJygpKissBiwtLi8pGjDqhBoxMjMuaNSwcSMFjhw6dnjYRyrGCh4ueviw4Q5HDB0/PjAUJCBCAwMIGiiggAEIBFk/FgYLIgRkggQkhxAJkqGExkYMFnxsIGRkSQgLHhRRWUjAggQgG8AsSWRBBiP6VrYMOfKIyaBDNwLo+HHSUplOSyDRqiEHjRkretRQkcLgxayNF0wksQGQxsSKMTIq0QpgCba/gAE7whEIACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-down-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VCRKZDRSbBxCXJTC1Mzi7Nzq9NTm9Bx2nAQCBNzu9JzG3Hy+1HzG3IzO5BRmjPz6/LTe7Dy61AyStCTC1FzC1AyGrETS3ETC1ETa5BRulAyuzBRylAw+XMTe7Gy+3CSqzAyexBTC3DR+nIS21KTW5Nzu/KzO3FzC3Pz+/ByixEze7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaRQIBwSCwaj8ikcnkMBAQDgjPAFAYKhsMBkVBUAYEFo+F4QLzVQEQyoVTOX/XBcsHA0+vMRbNBMwkRDhxuHX5GTlIeHh8gISIjFAEeiVRECiQlDAUmgxQjIhwiJHdFlycoKSIUFCEjGiGkRpcqCxYijxorsUezcxYsuoZJsxLAu0qXB7DCTJfHVQrMX9PU1Uh0QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editclear-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBAQCBPz+/ISChCH5BAEAAAAALAAAAAAWABYAAAJBhI+py+0PYZi0WnqC2Lx7HhjaR3YhMArBUHpnuramCLLy9tY3TuP2nfPtVD3VTxY0DpNDHqo5E12mlYj1is1e7QUAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-editcopy-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFPz+/DQyNISChDw6PMzKzMTGxERGRIyKjFxaXMTCvKSmpHR2dPz6/Pz29PTq3MS2rPz69MTCxFxWVHx6dJyWjNzSzPz27Pzy7Pzu5PTm3NTKvIR+fJyGfHxuZHxqXNTCtPTq5PTi1PTezNS+rExOTFRORMyylPTaxOzWxOzSvNze3NTOxMy2nMyulMyqjAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbYQIBwSCwahYGkUnk0BgTQ6IAQaBKfUWhBYKhaAU+CgXAQIAyChLeJzSIQhcH6GFaM0QtGY5kstqEODw8QEQELAhJTc08KBBMEFBUWDRcBE1pca20SGBkaEBscAY5maFRIAgoLHRQRHh8gIQFlZnByqA8ZGSIQIyQjJQEmYgJ5p2ACrK4gJx4gKIZZAgdeAQ4ZI9kjKSor0AwEjeAs1S0cHAslLi4vMDDRWeRIfEsxMeET4ATyVoYLC5fizXEiAR84BeMG+pEm8EsAFhAjSlR4hR6fLxiF0AkCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-editcut-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBAwCBPz+/OTi5JyanOzq7DQyNGxqbAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARbEMhJq704gxBE0Bf3cZo4kRJqBQNRfBucyudgvJS6VaxLzyMa6/bLiWA9HOg4VIIkL5vzuRkcpkvRIIAorphJLzBW84WEuRZWp6uaT7J2Sh1Hit3OY/ZO7WvsEQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editdelete-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAASC/FRSVExKTERCRDw6PDQyNCwuLBweHBwaHAwODAwKDAQCBExOTNze3NTW1MTGxLS2tJyanPz+/Ozu7BQSFCwqLDw+POTi5PTu7MzKxIR+fCQmJPz6/Oze1NTGvPz69Pzy7Pz29LyyrPy+vPyupPTm1BQWFIQCBPwCBMS6rPzSzNTOxPTi1NS+rPTezNzOxPTizOzWxMy2pOzaxMy2nPTaxOzOtMyynOzSvMyqjPx+fOzGpMSihPTq3OzKrOTCpNzKxNTCtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf8gACCAQIDBAUGBwgJCgsLgpCRAAwNlZYODxALEY+SkAMNEqKjEw0UD5yegqCjrRMVEqidkgWhraMWF7GptLa3EgEWFRSOnhW+vxgZEBqzkBvItxwdHryRCNGjHyAhHSLOgtgSI60c2yQjJd+eJqEnKK0hJCgnJSngAO0SF+8qEvL0VrBogW+BLX4oVKgIyMIFQU8KfDV4R+8FDBcxZBREthAFiRIsOsygsVEUh4Un3pGoUcPGjZInK65QicPlxg8oX5RwqNJGjo0hdJwQ6EIkjRM6dvDYCKIHSBc1Ztjw4eOH0oIrsgIJEqSFDBo0cuTgsdSTo7No0xYTZCcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-edit-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBISGhISChHx+fHx6fHR2dGxqbGxubGRmZGRiZFxeXFxaXFRSVIxSLPyuXMzKzMzKxMTCtExOTPzqrPz+/NTS1MS+tOSaVPyWNPz6/IxeNPzavPyKBNTW1PyCBPyGBJxmNPzOpLx6PNRqBMSCRNySTPyCDPSGBMxiBKROBHRydPSylOyydMxmBJxKBAwODPS2lPTq3OyabJxGBPTy5PTGrOyOXPR+DPz69PzmzPzevNxuPORqLMReFPzy7MyCXKxiNIRKHBQWFNTOxPzixJRaPFxONHRqVPz27PTy7PzStCwqJDQyLJSGdIx6ZPz29PTu5HRmTLSKbMSGZHROPFxKPJSKfJyShKyehMyuhDQmHEQuJJyOfLSijMSynMS6pLSefDQyNHx2bKSahLyqhLymhOzi1FRGNIR+bNzKtOTOtOTKrOTKpLyedAQCBFRWVPTq5NzOvLyunLSmlNTCrOTOrNzGrLyidMS+rLyynKyijLymjLyqjAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gAAAAQECAwQFBQYHBggJCgsLDAwADQ6CAQ8QD5ydEJ+gERKWE4ICDxSpqhWqqhYNFxMYphCtqaytGRoXGxgcggSoth25u70eH8APFR0VzMzNziAXIRjIvwAFwq3EqSLUGB/iI4LathS4JCXVJh8nKCmCKrXDFCss1eIfLS4v8ssdmgWsAGNDDBnt3s3wJ+jAtlUhaNSwccNEi4WCBBl4SAHHihw6ZOzg0QNjRgAG6KXK4CNEjBU/gDQI8kLISQAIADobAoMIzCINjLw4YvNkAno4kCRRUuNHESNLmDRxUjSjAlRPfECJImUKlSpMrFzBIqWqoKtJaWSJomULAy5XXrp4+QKGYcYFoCBEWRImi5gmY7CQyVLGriAGD2jEMHMmCxc0Xb6kUbOGTRs3N988gLM4jpw5Y+iwqcOGjZ07mE8yiGABz5c8c/Ts4cOnDJkybS7fdMO7t+/fvDMaCAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-editpaste-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBQWFDw6FHRuFGRaBFxSBAQCBAQKBCQiBIx6HPz6/NTOfKyiXDQuFOTm5Pz+/Ozu7PTq5Pz63PTyxNTOjKSeRExGLMTGxMzKzNTS1NTW1Dw2NKSmpKyqrKSipJyanNzWlLy6ZLSuVIx6FISChIyKhJSSlCQiJLS2tDw6NDQyNCQiFCQmHBQSDGRiZHRydGxubHx6dGxqbFxeXGRmZFxaXCwuLOzq7KyurHx+fDwmFEQuFCweFCQWDBQODBwaHBweHKSinJSWlOTi5JyepHR2dDw6PBQSFNze3ERGRIyKjIyOjISGhPz29Pzy7MS2rMzOzFRWVHx2dHxybDQiFPz27Pzu5PTq3PTm1NTCtJyGdHxuZHxqXPzq3PTaxNS6pFxWVFRKRNS2nPTi1PTStNSulNzOxNSynMymhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCgwABAgMEBYSLggaOjgcICQoLDA2Pj4MGDg8QEZ4FDxITFBUWFxcYGRobjQ8cHR4fCQ8gCyEiFSMWJCUkJieNEB4dKB4pKissK8wrLS4vMDHBAAYQHx8dFx0fJDIzNDU0M+IyHzaNNyg43Ng5Ojs7Ojw9Pj9AMkCNDiZB/h9CSOx4QLCgihItqBkYgqIDESElitAYWJCgkQcXjjRCgi1Ihw4BB5LAQOLCgyQYHihpUU3DBw5ElpAgAYNixSRJjKjQaECDCRPZPDB5IbIGSQwKLnh4wbInLA4kmJB4oaPiAwVNnER40hRK1BIAaVatUZJEFCkmpmjgCeWDCalFe4q4oFKwSRUrEa5gycLzwq8lUnPQ4PEgSpYcUZ5o2cIlS1O/JHLEDdfjQZMIVrpgweLFy5e+M6WSmBGlxYMYYBRzCaOFi5imHWBIfOEiShLTVjaP6eyFTBmN1TA5OvLDjJksWb58OVMGDRqWjAYdmU79SIvpjqJr104nEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editshred-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBFRSVExKTERCRDw6PDQyNCwuLBweHBwaHAwODAwKDAQCBExOTNze3NTW1MTGxLS2tJyanOze1Pz+/Ozu7BQSFCwqLDw+POTi5MzKxPTu7LyyrIR+fCQmJPz6/Pz69Pzy7Pz29OzaxPTu5PTq3PTm3My6pPzu5PTq5NS+rPTm1PTi1PTezOzWxPz27MyynOzSvMyulOzOtOzKrMymhOzGpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbpQIAwIBgMCAXDAZFQLBbCqJTRqFobjgdkEYFKowPJZEyeUBqVR/crHDTKZYplovZKCW84+YKZZNZSBXl6EwEEBhVPXxZihGMaGRscdkIdg4QeEnVfCH2OHyAhIhuUAAiXZSEhIyQlJqWnjiEnKCWupRWoYyEgJK0SKaUKjam0JCorLMFfC6iqx8giLa/MGAsT1wsuCyULKwssC9RSzdkfCyALKuALLQsvpeXYIQso3gsiCzALMfENC+dGcMNHUAY/f+jq3ctncMYCGggFrsvHcEGNh/EyPFmg8cmrJxAVkVO0EUDJklHoBAEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-edittrash-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBERGRExOTDQyNISChBQSFCQiJCwuLPT29Nze3GxqbDw6PGxubHR2dJyanLSytJSWlJSSlOzq7Pz6/Nza3Ly6vFRWVBQWFIyKjMTCxHx6fIyOjLS2tOTi5PTy9OTm5Hx+fNTW1KyurKSmpJyenExKTMzKzKSipFxeXCwqLMzOzKyqrMTGxLy+vHRydBwaHNTS1DQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb8QIBwSCwaj8KAMoA8LgUDQsFwQByay4RiwWg4GA9IRGk0SCYJSsUCsVwwGQ1EsmESD5xOp+L5gDwhBRIZDhcDdkMGDgEiIxAkJQ8Ok5MmAohDAQ1xJxUlKCUlEg0pKpiZJRoLCxmtCw1eURhOcR4rbQ8cGRwLAwgGtBYTDywtGRKjvQTARgEZLhMcKC0OrQMvAirMRc7CHCTU1g2+20TO0NIn1RwDCya/wdHT1Rnt5LToKOq79trx0tR02YPX7Jm8fRxMOIhSLhOJE/LCJSTlr5kFEBQsWDiR4UGGBgsuHDg1BEYAfTE6oEBR4AIBAiS5yWBAAAGBAyaPGAgCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-encrypted-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBHRudFxaXExGTERCRAwGDGxubPz+/Pz2/Ozm7Nza3NTS1KympFRSVHR2dNTO1JSSlKyqrKSipDQyNMTGxDw+PLSutKymrMTCxAQCBHRqLBQODJyanDQuFFxSJFRSJFRGJERCHExCHISChHxyLEQ6HGRaJExKHLSmbLy2fOzitPz23KSiZHxuNHxyNJSOTNTOnMTCjLSudKSaXJSKRJyOTOTetNzWpHxuPOTi5MzKzLS2tFxWXOzq7Ly6vOTe5Ix+RLSqdNzSpLyydKyqbKyiZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4IBAgMEBQKEjI0GBwgJCgsMDY2XjwkOAgQBDxCLl4QNCaGCBBGWooINCAqqrBKgqwATFKaDFRYVtBMXsIMNGBm0GRADjQIJxKIaGxwdHh8gISIhGyMZzIwkGholJiYfJiAfJyEZISDbg90oKCkqKwcHKyooLC0f7IIuLzD2YMSQgW8GDRri+AFoUMOGvRsxUhSsQQPHvmQSchyQtEAHhh0WJHDQcJERjwsKDvRI0BGDjwgicXhQyCOjSgUKPO6AObIkIQESfmxk6REDT4s0bfaYpDNkT4VAha5s+TLmzEYtatwIOHAiDZIKNQAJYk9IjCFEisyoocFEB4UACtBpm0t3LiEsgQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-eraser-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBMTC/AQChAQCBISC/PzCxPz+/MQCBIQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARfEMhJKwhi2F0DIRnHeR+oiRRZmqikrmD7wgI6r+EI4+d2l7lNwWDYsTiFw4FI61mSymXxE3xGo8xqBXpVGrQUbveAcG7H0bKowEar12wx2SyMp+lI+7s1ie/5fX8tBhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-exec-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBAwKDAwKBCQiHNze3AQCBBwWFDw6NPTy9PTy/Dw2NKyytOTi3LS2tMTKzMzOxLy+tLy+vBQODNze5NTS1JyalIyCbIx6VIRyVISGfJyelOTq7EQ+NMTGxKyurGxeRLyKPOSmROSuVOy2XOSiTLzCzNTOzDw+NCwqLHxuVOy6bPzGfOSuXNTW1LSyrMSWRNymTOSmTKSCTPTGjPzSnPzWnMyaVBQSDMTCxPz+/KyahNSeRHxeLJRyTPzmtPzarOy6fJyajNza1Ly6vLyulFRCJPzirPTOlMS2pNTSzMTCvJyenBQWFNzKtPz6vPzyvPzqtOzGlOTe1AwGBFxWTLy6tPTm1PzSpPzutPz2xPTSnOTSxOy2dPzapPzerOzm5IR+dPzu5Pzu1PzqxPzy5Pz+9GRiXGxuZKympHR2bOTm5Pz6/MzSzBwaFJSSjCQmHPz2/AwODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeEAQKIjIIDBAQDjYMFBoMHCAkKgwYFhwULDAUKCg0ODxCkBQgRnoUSExMUDxUWFxgZGpAbFIuGHB0eHyAhIiMkIB8lJieIKCUpJCTGIyorLCktKIUDpC4YLzAxIjIyMzQ1NhgdpJI3ODktJTowOyM8Ejc9Pj9AQUIEclAocCMIBQhDiOwgoaKIoCI+jBxBkkSJkCWemIyq0GSHCBVHihRx8gRKFCmpKhGaQqWKFYZXsGR5kkXLFgRUXBUqkCGCFS5AjnTx0sXKlyA6CRVgAAHMAilhxIwhU6ZFkBY5kgKYUoXBAzMKzixZ4AJNGgVm1KxhM0WpmQpUMtooaOPGxAM3Nw60oYLGjNYCbzYJOgAnRzNBJ95oPYQCgpJtkwzFoULlRuRPiy9fNhAIACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-exit-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBAQCBHR2dDQyNCH5BAEAAAAALAAAAAAWABYAAAJOhI+py90RnIMyRUOxhDfzJkACdoXBuEDDkQFDi5go0MrKx16kns80b7qdELCgBYaEGWwL5nG1ePFiKp9A6kuYRNuho8vxVrrZivmMRtMLACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-fileclose-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBERGRERCRDw6PCwqLExOTFRWVHRydGxqbGRiZCQiJISChIyKjHx6fDQyNBwaHJSWlKSipBQWFJyanPz+/JSSlCQmJAwKDCwuLBweHBQSFGxubExKTISGhDQ2NFxeXFRSVDw+PAwODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbZQIBwSCwaj8jkMSAYDAgEJbFgOBwQCUOAoJAaFgvGonHIBhyP5BcSgUAYDWxggD4WFmx3e3HQngkSRgYMEBMUFG4MCId0BGlEAQeEhocVDYcUdBYKF0QCB3gRlJgUAQEYBBkaRAMbDZMMpAYcT46rQwMJrgsdC6QcfwoPnUMOBgkIV6SHHg6bw0QEAQYfBpggBZjPGsRD0gEchxwCIR6HChnQRQ8DIU4DTR4Em+ncRw8O+fmoXPXdRg+gQLFgIYM/KRIkoDP4QMKFf0o0aBAh4qGUixgzCrETBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-filefind-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBQSFJyanLS6vLzCxISChNTe3OTu9Oz6/Nzy9Nzy/NTy/OT2/Nzi5Mzu9Lzq9KTe7LTq9PT+/Pz+/Nz2/Mzu/Kzm9Jza5HzK1LTi9PTu9IzW5ITO3FxaXNT2/KTi7Iza7GzC1LzW3FRSVMzO1MTq7HTS3Fy6zFS2vKzm7Lze5MTGzHzS5FTG1Ey2xEyyvJze7JzW3ITa5FTK3EymrGS+zFxWXKymrMzi7ESirEyqvLSyrKze7MzOzMTCxKSepAz+/NzW3MzKzBwWHLzS3ERCRAzi3KyurNze3MzGzLy2vLSutCQiJAyytHRydOTe5MTGxLy6tLyqpKyelJSCdOze3NS+tLyupLSmnKSOhCwuLPzy9Pzu7Oze1OzazOTOvMyihOTi5PTm3Pzi1PTazPTWxOzOtNSunDQyNPzy7Pzu5OzKrNzSzNzGvNS6rMyynMymjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCgwGFhYOIiYQBAgMEAwKHiokBBQYHCAkKCwwFAZOEBQ0IDAsODxARCZ6gAAEGEhMSFBUWFxgZCJ+TjBoMEpkRERscGBGRih0BBAgeFBQOER8gISEfIruIIwEkCCUVwhcgJicoKSrZg9srCRkRGdMsLS4vMNiK2wIKMRsbMiwzXtCocSydIBs3AuCIwIFDiBMucugAoWvSiB2VNPDg0ELHwA0MkCXr4aNSggg8NoDIQOFHgBtAkgURMiDAEAFEVBCJFKCIkSMGOyDRkETJEkOFmABoUsRJQkQdnkzQACWKlBtTplBR6qopxkFRJ0ytYuWKFCxZtBBq+hRA2AlbRrh08fLlCxi1a51g+dQhDFwuYsaQKWPmDBpKXgNETaNGjJgyhNfcVdTTiWI2XpK0cePmzRk4YA5T5otGixY0qFOXbgXAQCAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-filenew-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBExOTERCRDw6PCwuLBwaHAwODAQCBOze1NTW1OTi5Nze3MTGxLS2tJyanPz+/Ozu7OTi3BQSFCwqLDw+PDQyNFRSVPTu7MzKxLyyrIR+fCQmJPz6/NTOxPz69Pzy7PTu5Pz29Pzu5PTq5PTm1My6pBQWFPTq3PTm3NS+rAwKDPTi1PTezOzWxMy2pPz27PTazOzSvMyynOzaxOzOtPTaxOzKrMyqjOzGpMymhPTizOTCpNzSzNTGvMymjMSihCH5BAEAAAAALAAAAAAWABYAAAboQIBwSCwaiYGAYEAgFAqGg/Q4DCASCsTiymgcHAcqQLB4mM+QiIQBppLPcMjkwQ4bB2X4maKgt4sVCHpnFhQTElNFE3mDDxcYGRp2RBuMgxwIHX9EBZZwHh8gCBmTQ52NISEiIyQlpUImng8hHyInKAgprwAqgnC0IKwrLLpGB4wctLYkwy0uuwd9Z8AnJywsLcVFx2YcL7UnJCwwLTEy0GXJoSgrCCwzNDTnxgjeH9UrKzXwNDY36LRGhEOwLx4NHDmgJbh3QoeOgv127EhojEeHDj16pEhRQoZHHzl+QJNCsqTJSXaCAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-fileopen-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBAQCBCQWDCwaDDwmFPSubPzGhPzCfPy2dOSmZPzKlPzSnPzOlPzKjBQODPzChPzWnPy2bPSmXPyuZOyeXIRSLEQuFEwyHEQqFDQiFCweDKRuPFRSTPT29PTy9Ozq7OTi3Nze3NTW1MzOzMTGxMTCxLy6tLSytKyurDQyNMzKxOTm5OTi5Nza1NTS1MTCvLS2tLSyrKSmpJyenJSWlIyKjHx+fFxeXBwaHKxuPMzKzLy6vIyOjHx6fDw6NPy6dGxubLy+vISChCQmJNza3KyqrBQSFLR2RKSinJyanGxqZAwGBJSSlCwqLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeDAYqKiIeLj4wBjQCMhY+NkoiLk5qbhQIDoJyGBAUGBwgEo4MECQoLDA2pDrS1tKQPEAwHERITE77AvxKqhAQNDA8UFRYXFs8YBAQZGqGPxw0RGxwdHR4eHyAhIiMkJSYnKCgpBAYPEhcqHyssLS4kLzAxMjM0NTY3cBA4UCAHBw8gVnhgEcKFjhc7UPDj0cMHAAI/KFgY4YLFio/jRpTYsW8GDyCSCEQw2DChOHIqgsCQSEPIEEEEJFhAoUNECCJEyOk4d6KIyRtGcB7hIJKjixEjHu4oimSGEIs4d8IIUoKECnNB0ElMwkNJJgBLlJBAcQKGiR07KGAURVGViY0mhIwwSTKjr99+THjUoIg0r48hTRIrRtxkiOMhDgrZCQQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-fileprint-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBFxaXDQyNFxSTPTizOzi1FxORDw2NExKLPTi1Pzy9Pz6/FRWVPz29Pz2/PTy7PTu9OzezPzu5OzavAQCBPzy7PTm3OzazOzKrPTu5FxSRERCRGReXPTq5Pzu7ExGTMS+xKSmpOTKpPTq3JSCDNzSfHRydLyadOzCjOzOtOzSvLyyTMTCxKSipGRiZFROLPz+/KyurJyenJyWnGxmbLSabOzClOzm7LSutJSWlJSSlJyanGxqbNze3OTm5IyGjNTO1Nza3NzW3OTe5IyKjHx6fMzGzMTGxMzOzNTW1IR+hISGhKymrLy6vLSytERGRGxubKyqrLy2vLS2tDQ2NEQ+RASKBAT+BFxeXHRudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4QBAgOEiYqEAgQFBgcGi5MICQoLmAQDh5OEDA2YCw4ODxARApKUCaGYEAsSCRMUnQysCwoVEhYXGLOLCBCgDqK5GQUXGooCAhscBB0euBUZEAUJvQgIgx8gIR8iCSPiHuIFEREDJCXaANwhJhsnKCnWERcRKiopFCvsBywhQrRwQWGAPAz5EhpQ9wIABRgKYsiYMTEEDQocatiwkUIEP18fbkCAAcMBjhwzdOyQwYNCgBMfKJSgMItBjxs+btwgCSGGjhw/ZoRgQKGZCRMUPgABEgSIkCE3SZok8qNqkR85NtDUEcPIkaVAkCR5SrJBDCVKlmzQ6pCCiRlMTJo4YUH3K5AeMBYYWctW0BOaUH60cBJFypQmII6wyEpFQBVFMSm4UAI3hJUrOGh8oOJrklYKWIromJGDR99Ogz5j4ZGlM+pEnwmBCwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-filesave-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBGxqbAQCBLy+vERCRExKTHRydIyKjMTCxFxaXGRiZFRSVFRWVPz6/Nze3Nzm5Pz+/JyanDw+PExOTHR2dMTGxBQWFLSytHx+fISChOzy9Ly6vAQGBJSWlMzKzAwODJSSlHx6fIyOjOTi5DQ2NISGhGxubCwuLOzq7ERGRFxeXNTW1CwqLPT29Dw6PGRmZKSmpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb/QIBQGBAMj8ikUDAgFAzKKCBwQCQUCcICKh0SEAhGw5EIZAmBrgCxeDQgcDJWyz0GIggJfL+XGwQJRxNgC3yGDwwUFUZDFhdthnwMGAZNQwEZFwQakXANBBQbHIIdERIBnRAOiR4ERx8gsSEMBBmGCyEGG3YGBwcgIr8UCwQHECOgG4xCtRkEJAvBJRklJgkSFBQeJ68hJiEoESkFKiEZIbkGARsLlwEGExENGhorGSkpFAYm66NDLAECpGiBYsUIFA8wLHBBQMWLVkdUCFCwaYVFBOymkVCgYEMgOykEpICBccMBAhhELFigTEqAAgIIwCiQ4eRKDyS6EAlJIAI0EpaudF4iIKDAAn9CkRT5eMROEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-fill-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAASC/AQCBMT+xASCBMQCBASaBPyChASyBATCBPwCBARmBAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAASCEMhJq704axB2DkLnVeAwiCNHDMWZcsbaul5ZyCaKBcZwFDcgDRNbHX7AmW4SMx2MSOFQQlitEAhosrVcDQQE7NMXzVGqA6xAgCUckabQpJoIYBFsxBspUKBiHQEHaoNvBQJTgBIBdnh5B4hLihONeJBTc0uMaphMS4uRGQYfny9EEQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-filter-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBAwKDMzKzMTGxNTS1MzOzAQGBLS2tLy+vKyqrLSytLy6vMTCxBQWFKyurCQmJBweHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAV7ICCOZGmeaHoGbKuOAjsQhVG764EgyT7YhaCBVQogFMhFImEABoUBknFxRDAazac2Kg00djystkA0sQ4BgzgYK6+Ch/bBseOmAmMD4gF5ifBCDwoRfiOABgyEhYYFCA6LUo19kH+Nj5QAaQh2kHibmJkFBJydpKCnfnYhACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-find-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBQSFJSWlFxaXJyanKy2tLzCxDw+PHyChNTa3Nzq7Nz29NTy9Mzu9OT29Nzi5Oz6/Mzy9Kzi7Jze5Lze5Nzy9JyenIyKjHR2dMTu9Kzm7JzW3ITW3ISChGxubERGROz+/Lzq9IzW5HzK1LTm7FRSVHTS3GS+zLTS1DQ2NMzOzMTq7Lzq7ITW5FS2vMTi5ExOTKTm7EzCzEy2vEyutJTa5FTK1ESirGy+zMzi5ESerESmtITa5OTy9KTe5KyqrAz+/Azi3ASutERCRExKTFRWVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCggGFhYOIAAIDiYUEBQYFAoeJAweKhAgJCgsLDA0OCAGJg4wBCA8QDhENEhMUFaKDFhcYgwEJCxAQDBkaGxwSFaMAFh0eAx8AAQIKECAODCEaIiMjJJMAtQMlygEGEBkVva4mJycTKKMYJd0pyyoOKyssGhMtIycuGi/EMB/vlhmoQEFDjHsmZMygUUMdqWUCGgCbYMKEjRk3cEjI9jBADg3Wzs3QsYOHA2IdO1SQkI/GjRMtFhBA2RFBDwk+OASrMPMHkIe3AhBA8QLFzAAHgvyg2dEQMSEHPCwltQgooSFSmVpSxKjjh6wPtwINgHVqsVpWESEFeywZ17RkED2s40YEgFirlIq4SwvUQCAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-finish-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VAQCBBxCXDR+nIS21Aw+XJTC1Nzu/KzO3Pz+/Nzq9Pz6/MTe7KTW5FzC1Nzu9CRKZMzi7IzK3Lzi7LTe7HzG3Gy+3AyuzAyexFzC3DRSbHy+1Dy61CSqzAySvAyStLze7IzO5AyGrEze7BRmjCTC1ETS3ETa5BTC3Bx2nAyWvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAakQIBwSCwaj8hkMqBsBgTN5IAAJQqqykCBasUmDQcEV3gtBs7oATihGJeJgcOCQWc0HA8Ig/seRiQTFAsVFhcYGRp6VH1CGwscHQ8dGB4fIBkPIWKMAAMLIiAjIJcgH5gkGSWcARIiJicoJikpHikoHqqrKiW8JSogKymoqgCrV8cCARgkuFWcRwYeqVjPRgEExEPVRQbZ2l5IBuBRQ0zk5+hRBkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-folder_new-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBNzaTPT2FISCBCQaDPz+BExKBDwmFPSubPzChPzCfPy2dPz6BMzOTAQCBOSmZPzKlPzSnPzOlPzKjBQODPz+rPz+3PzWnPyuZPSmXNyaXPTyhISCLIRSLEQuFEwyHPy2bKRuPFRSTPT29PTy9Ozq7Pz+xJyanDQyNPzGhMzKzOTi3Nza3OTiVBQWFDwqFKxuPOTi5JSSjISChHR2dGRmZFxeXPS2dNTSzNTS1OTm5KSipLS2tLSytKyqpIyKhGRiZNze3NTW1MTGxMTCvLy6tIyKjCQmJMTCxMzOzMzKxJyenHx6fLR2RLy6vJSSlHx+fDw6NLy+vIyOjAwGBGxqZKyurCwuLBQSFJSWlCwqLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeIiYqLjI2MAY6HAgOHBJYEhJCDBQaDmgcICQoLB4MGDA0OAQUBDg2cAAcPEBESE6QUuQasFRYVq5SxCRcSCggYGRjIGgYbFs8bHIMHExIJGR0eHx7cB83PFhsDDuTUEyAhIiMjJCQluwEmvsAnKAcp1x4qKyUrLLupWrByxcnFiwQIYIggEaNEiRgBZMyYQaNADRs2REA6cCODBxw5+OnQgWMHjx4+BND4MQOIg1gI0gUREkTHiplDhhApEoCGkRlHBL3I8MEHEhz+WAhJogTJySVMfthwIehAExE5jubAkYQpESc8fOx4AiXKNA8+ekhBgqSpzh5hPHcsmVLjpSAqVZBY6VGkiJMiPQKLnTvjCiEsWU4o3nGC8YksMmT8YCmC6iAXKLRc2cz5yGYtR0JjKWQgEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-forward-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VAQCBBxCXDR+nIS21Aw+XJTC1Nzu/KzO3Pz+/Nzq9Pz6/MTe7KTW5FzC1Nzu9CRKZMzi7IzK3Lzi7LTe7HzG3Gy+3AyuzAyexFzC3DRSbHy+1Dy61CSqzAySvAyStLze7IzO5AyGrETa5ByixBRmjCTC1ETS3BTC3Bx2nAyWvEze7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaYQIBwSCwaj8hkMqBsBgTN5IAAjRoDBaq1aDggtMuAWDzoJhTgY+CwYLgZDccDwkgXI5IJZVGxXDAZGnR2QxsLHB0PHRgeHyAZDyFfVUQDCyIgIyCPIB+QJCUmlEMBEiInKCQnKSkeKSQeomoqJrUmKiArKSwZsmoCwMEBGCyxo1EGHr3HUQEEvltCBtDRAAbMW0zV29xDBkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-frac-22:actions actions22 22:photo:22 22:R0lGODlhFwAWAIIAAPwCBAQCBAwODAwKDAQGBIQChAAAAAAAACH5BAEAAAAALAAAAAAXABYAAANICLrc/iwEJSEUQA45LcOKMHWeU5XWiUYZsZClOIjj+naqrS9F7/9A326YCYBypREOpMPBVifjkBRw7SpIG+eJIg2IWC5UikoAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-frameprint-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBFxaXDQyNFxSTPTizOzi1FxORDw2NExKLPTi1Pzy9Pz6/FRWVPz29Pz2/PTu9PTu5OzezPzu5OzavAQCBPzy7PTm3OzazOzOtPTu7ERCRGReXPzu7PTq5OzKrExGTMS+xKSmpOTKpPTq3JSCDNzSfHRydLyadOzCjOzSvLyyTMTCxKSipGxmbOzClFROLPz+/LSutJSWlJyWnOzm7JSSlJyenOTe5OTi5MzKzASKBAT+BNzW3OTm5KyurMzGzMTGxMzOzNTW1KyqrLy2vERGRGxubIyGjLSytGRiZISChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4QBAgOEiYqEAgQFBgcGi5MICQoLmAQDh5OEDA2YCw4LDxARApKUCaGYDwsSCRMUnQysCxUKEhYXGLOLCBCgow4VEhkFF6mMAhobBRAcChUVGR0FCR4UCAiDHyAhHyIJCRAjHOUJEREDJCXcAN4hJhonKBjXESn5Kdkq7wcrQoRg0YLCgBMuRFxIwTCFgXYvAFCA0SCGjBkYQxQMUE8EBhEUVPj6QOMBDBgLLM6oYYMFhYkvYcSkwOAGDho3TyqIUaPGyZ9AKXzIoWMHDx44bvQ4+WAi0KA1fPwAEiTIjyBCkDp9KlMiBRMzhhAhsqLsD64/fQEo8tLIERZIH8Ru5arow8skSmTMDdpJQ0y0XTsJ2gtU8GCZMBMbCAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-funct-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAI+hI+py+0PIwhUohpMXfl6103h1nTUNproEU6am62v1pLsPX/siO9Jiou9TD2XyHfMGUs65aVmiUqn1CrCUAAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-gear-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFCQiJERGRBwaHFxeXHx+fDw+PGRmZExOTGxubKSipDQyNHx6fIyKjJSSlJyanISGhISChLS2tIyOjHR2dAwKDAQGBJyenAQCBCwqLLy+vKyqrAwODMTGxKyurFRWVLSytLy6vMTCxMzOzGRiZNTW1CwuLMzKzFxaXJSWlOTm5Nze3Ozu7OTi5Ozq7GxqbDw6PHRydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb/QIBwSBwGBMVkMjAgFAwHBFJpPB4SiQJCsWAQqEJB4prdNhQNx7QYIFwLD0ikQZdMHgelOPGYULQVDg4QEAVfRAEBBwUTEE0WFwcYhAuNF0QDBQULDwwZGUIaEAuVGxgBRAIFEhwHHUQMCxwTHAVrAAwFFRwKFkQZsxseDqBDGXMSHwfFQiAhIiMeJApEBwcOcahDJcLSJCYcGkQKcRAnQhkF0SgmEykHXkObox8q1iEjKN8rENqYD7MmeBCmzwSLFS1I3AqzYIPDESS+sWCxgQMLEgOSJKjozeAKFyskCDigQFwSBhJMjDDhAlyLFyVA+dIzAUUKEi0eaNhAIg8YGiEMenkwASNDDBkLqRQAEEAkup9KDkEFgC4IACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-gohome-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBAQCBCQiJNze3ERCROTi5MzGzLy6vDw6PKyqrKyurBQSFGRiZGxqbGRmZISChEQ+RExKTExOTHRydDQyNOTe5FROVLSurCwqLMTCxPT29Pz6/LSutFxeXLyytLSytPz+/JSWlKympPTq7KSipNzW3BwaHHx6fKx2VJRWNHQmBFweDOzq7Ly+vNTW1JxWNLSajPTe1Ny6pKxWJNTS1IyOjJRmbPTi3OzKrNSSXMSGVHQiBHx+fJSSlPzy9IxOVOzWxOSyjNSCPLxeDJyWnIRGTOTGtMxmDLRWBHwqBIxGTLRSDDQuNNSunKxKBGwyNMSafMxqHMReDKRGDPTu9LxuPLxaDJQ+DIR+hGQqNIQyBGQiBNTO1EQKBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4QBAYSIiYQCAwQCiokEhwACBQYHBAiQhAiHlQYJCgkEC5uCkp8MDQ4NDwylmwgQlgQRERIEBBOkmxQVBgQWFwUFFxEEDLyJGAUZtQoFGhsFHLYdyoOVHsEf0SAbIAUex8mwlAUhtSIFG+3uIyTWvAIGJMEkJe76GyXbEeWUBJg4USKaBhQpVKzYoIFFiwYUBBJa8MAFCw0vYMSQMWOhBhoTKCQSUKMEiw02buDIoWOHBg0GeIhEFKAHDR8afgAJImSIioYliMws1MPkhiJGchxBkmTDCBo1hg4KQMTiBiUyhBxZ8pNFiR5MEtU0WqSJVidJNDyNKraHC5xPNKBEkTLlJ5WvUgWNvfikyhArV34+7ZEXQAAsB2iUyHLlihYtW0pwOYAFgyJDmDNr7jIIWiAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-goto-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBBQSDAwODAQCBCwiHDQuJExCNFRCNAwGBDwuJEw+NFxKPBQODEQ6LFxOPEw6NCwmHDQmJBwaFCQaFEQ2LCQeFDwyJBwWFDwyLDQqJAwKBAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAWSICCOJBkEQqmWA1EYR4Gsq5Aoy2EYKU0yDcPCkSP4SgShw2FoDI6jQeNxYD6MUBFCEXxAelkRgxCRhEWQiW/wXE2CataAUmiXKo+Fwg6YWxQWfCQEAxckUgoYDRSCR4gKB4ZnFVwUCgUMZ30KCRQUhJpzBRQQjUcSnmyaM32mPgQNmZpRBwmSsxAZBBqzUa4iBiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-help-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBCQuNBwiJAwiLAwaJAwSHAwSFIy+3ERynCw2PCQuPAwmPCxOZCxWdJzG3FSazBwmNAQKDAQGBDRmhBQyTDxujDR2rIy21AwWJDyGxCxmjAwmNDRihAQOFDxmhCxunBQWFAwaLCRahDR6rESGvDQ2PCRWdDRunDSGvCRSdAwWHCwuLDSOzHSmxDyKxBxCZBwqNHSu1DyOzAQSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAahQIBwCAgIBAPCoGAgOoeBAyKhWCwYDUf0CX1AIhLiJEGpBLiAAaRxdgYsl7Ybk8igBZoN5xmAdDxoanp8HyANISF8EBsiXBMjJBolBEQmGHFoRScbKHIKDykqK5lFAZRCnyknTaROLA8tq61OChgtKqyzQgEYEJi6UC4vI3LAASkbMBPARAEBdszR0sACEaPSMTIQM8W6KzNl3bo0NOJDdEEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-int-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIIAAPwCBIQChAQCBBwaHAQGBAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAANJCLrc/iDAuYKlU0r8NHfXB24iEyrCIAjAynakQLQuDS+vrTcnI1M9HyaIykFOKwUhZ6zEWC5oU9GrRY+kkqdUiXCdWW74SzYkAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-leftjust-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIihI+py+1vgpy0Tohzs1T7z3CiBJbQWJnqg4rre7jwTBtGAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-locationbar_erase-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBAQCBPz+/AAAACH5BAEAAAAALAAAAAAWABYAAAJChI+py+0PX5i0VmbzVboHPgmCJVoJJY5haR5VGsCa+6ZqZ2Sy95E2n0OVdi2A8EacIIS+YpC3WUIpi6kygs1qsYYCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-lock-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBHRudFxaXExGTERCRAwGDGxubPz+/Pz2/Ozm7Nza3NTS1KympFRSVHR2dNTO1JSSlKyqrKSipDQyNMTGxDw+PLSutKymrMTCxAQCBHRqLBQODJyanDQuFFxSJFRSJFRGJERCHExCHISChHxyLEQ6HGRaJExKHLSmbLy2fOzitPz23KSiZHxuNHxyNJSOTNTOnMTCjLSudKSaXJSKRJyOTOTetNzWpHxuPOTi5MzKzLS2tFxWXOzq7Ly6vOTe5Ix+RLSqdNzSpLyydKyqbKyiZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4IBAgMEBQKEjI0GBwgJCgsMDY2XjwkOAgQBDxCLl4QNCaGCBBGWooINCAqqrBKgqwATFKaDFRYVtBMXsIMNGBm0GRADjQIJxKIaGxwdHh8gISIhGyMZzIwkGholJiYfJiAfJyEZISDbg90oKCkqKwcHKyooLC0f7IIuLzD2YMSQgW8GDRri+AFoUMOGvRsxUhSsQQPHvmQSchyQtEAHhh0WJHDQcJERjwsKDvRI0BGDjwgicXhQyCOjSgUKPO6AObIkIQESfmxk6REDT4s0bfaYpDNkT4VAha5s+TLmzEYtatwIOHAiDZIKNQAJYk9IjCFEisyoocFEB4UACtBpm0t3LiF4gQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-lsub-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBAQCBIQChAAAACH5BAEAAAAALAAAAAAWABYAAAI9hI+pe+EPHTNhgjox04srn4CI2FgkZaaZurGd+5nRfAiCYVuJzfN6jbvdfrshEZE7ApNGXa+nZDaVVIOhAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-lsup-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBIQChAQCBAAAACH5BAEAAAAALAAAAAAWABYAAAI5hI+pF2G9YpszKgcgtgtyuX2I44UcRYkM5qmWAMcyzAn1/eKRnfe7vuD9fEGgQlgkHo2JmRPpStgLACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-mail_forward-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIcAAJR6fIxydIxubIRqbIRmZHxeXHRaXHRWVGxSVGROTFxGRFxCRFQ+PEw6PEw2NEQuLPwCBJR2dLyijPTixPz69Pzq3Pzy3Pzu5PTu7Ozi1LyelOzavPz+/DwqLLyafPTmvPz67Pz29Pzy7LSWlPzmzPz6/LyajPTitOTSzMyurPz25PTatPTi3KyOjPzuxAwqVDQiJHxiZPTetKySlPzqvPz27BQ6bAwmTPTexLyinNzGxDRunPzy5KySjCQ+ZNzq9KTO7JzC3Nzq/Ozu/LzW7FSm1BR6vGSWvFyq1AyGxAxytAx6vBSKxAxSjMyujLSunES+5BSi1ByGvAQCBNzCrOTaxNTOvMS6rKyelCx6rBx6tBQKDOTWvPzu1PTq1OzezAQOHAxGdBROhAQGFPzy1NzOvIRqXLyynOzarPz21Jx2XPTWrLSShAw2XKSCbPzuzAwePAQCDPzyzPzqzPTmxOzWtAwGBKyObOTSrNzGrKyGbOzatEQyNKyCZOzWrOTGpNS2lCweHCQaHCQWFBwSFBQODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBhBwgQKFSpY0HgBQwYNGzh0mDhRAAUPHziACEGBpYgRJDiUGEkSwoCQJk6opNASRQoOFETQJDkggwoOJlYApcCihQuVL2DUhBDjhIqjJmRwwDCDhswaNm5MjYHjKggOOU7o0CGTA9gdYknG2KCCBw8VJVL0uBgihAUfP+CSNGCjsI/DiBPbAMJBsEQbQYQM+UG5smUiRYw0jlvYxhEkSYyIHm1EyRLTTH40EZvAyZPOR4pAmU07ipIkUKQ0mQIhAZUqVq5gKXzkSBYtyLVEyd1ki8QFXLp4+WJFQowbYLJnD5NbzJiJCjaQnhnvpYwZM0/OPFlvQ/f3iQvQpBlvQc0aCWy4VKnCpY0Y5yQxgEYXZFjghgwZUOHGCW90YQEccUwloBwGyjAHHXUoSAMZb0xhx1QOoMHDHSfIwSEOdTjhAQ1d4MFbTQ6Q4MYacrzxhhx04JCHHhvQsMeLJPHRBxpr+LHCGnusgccfgKixQR1ATtTBlDDAEIggggxCCCGFbLGFHVFKZEdAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-mail_generic-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBDQyNCwqLCQiJBwaHBQSFAwKDAQCBDw6PPz+/Pz69Pz27PTy7PTy5PTu5PTu3PTu1PTq1PTqzOzmzPzuvOzitPTmvOzivAQGBDw+POzevPz67Pz25Pz23Pzy1PzyzPzqvOTavERCRKSilPz21OTevIR+ZExKTOTi3JyanLS2tPz6/Pz65KyihJSKbMS6lExOTNTW1JSWlJSKZMSylNTOrNTKpFRSVPz29MTCxPTmzKymjIyCdOTWxOzexOTWrBQWFFRWVOzu7MzKxJyalOzatLSulMzKtOzmxOTarFxaXKyqnPTmtIyGdIR+bOzetOzixBweHGRiZOzm3NzWzNzSrOTetGRmZOzizOTexOzm1JSKdGxqbHRydJySdHR2dOzapHx6fKyijOTixCwuLHx+fFxeXERGRDQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeIiYqLAQECjwORAwSUBZYFBpkHmwgJCgsMDA0OD6UQERITFBMVFhcVGBkangq1ChsLGxwcHQ0dHR4fICEGIiMSCbS3uLq8wCQUJSYGJygpKhQJKyvLLM4Nwi0uLwUwDQsxMtmeuQveHR8UMzQ1NgU3Dgo41jk6ns0cKOzgYaOHjx9AgjTAUUvIECLZNmxoUISHkSM9KiBJQkCJA4kKEoBQoWJJAiYtmjh5AmVCsCJRpHzckKCCySlUUvBYUqUHDysSPnxIEuXKA5pPRiRwxwFLFhRaIEDYUoEChCcDuECoOWKFuwW7nHkg4WELkw8/BHRRwESpt10dU8SSHevlRxIBX6C0WBE27q8GZMkKbTADjIAwYlb4GLMYShYoPTRo6FGiSJEKPyzMIFMmzJcvXbhwkSLFjJkbQW6cOHNGhAgEAdAsmk27tm0ABgIBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-mail_get-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBQ6bCQ+ZAwePKTC5Ozu/NTi9GSWvAwSJGSu3JS+5CR+rAQOHPTy/AyKzES23AwOHCw+bOTq/BR6xES+5AwmTBw6ZMTW9Ax6tByi1BRGdAw2XAQCBDQuNDRupKzS9FSm1BR2vBym3EzC7CSGxBROhNTW1Pz+/OTm5NTO1AQGFNzW3Ozq7Ozm7IyKjJyWnMzOzNzq9Nze3OTa5Ly6vCQiJGReZISChKyqrAwqVBRWlOTi5MS6xJSWlNza3OTe5Ly2vGxmbKymrIyGjMzGzISGhKSepCQmJDw6PHR2dJSOlPTy9MTGxLy+vLS2tMzKzLSutMTCxLSytKSipJyenKyurJyanCwqLCwmLCwuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4IBhgIBA4SLjAABBAUGBwiNlY4FCQoLDJaNAQ0ODwsQnYwREhMUE5ylFYYRFhcYGRgaGxsDHJUdFR4SHyAhEyIjJCUcuo0cJr0nExihxgwoyYscKSnMHicOIw4lKissLdWDHC4vMCu9McYqMjMyNOUANTY3OPEoOTolDCszdrSgwaMcBxs9TMxYOCMHBx8zfPj48QNINQ5BbMBIIUShDIUoTAhR94PHPEEHbQwZckOGjBQviMxYUWQIDCMmdXE4gqRnkiFETAxR8iKFjJU2evZEdmLJkgJIbqS4wXJIUapImj5FtuSEVyRVV1IVi4RIChhEkLVAgcJHEqVwVJUmYdKkiRNkALMRecKECRG/ff8CEQJFCA5kMKJEoUHDCQ/HkB9LmWKECpUeyKoIMSLEyosen0OD7iH2xg1dV7BkqXGlBpbWNTq4Zn2khu0aAAwEAgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-mail_replyall-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIcAAJR6fIxydIxubIRqbIRmZHxeXHRaXHRWVGxSVGROTFxGRFxCRFQ+PEw6PEw2NEQuLPwCBLyejPTixPz29PTu3Pzu5Pzy7Ozi1LyelPTavPz+/DwqLPz67PTetPz69ERCRLSWlPTmzPz6/OzexLyajPzqvDw+PDQ2NMyurDQiJPz23PTatJyenAQCBPTevPz25LSajOzq7HxiZPTexPz65JyanBQ6bKSmpBwuTOTi5OzaxBRCdHySvGRiZHx6fBQSFERGRNzq9IyOjHx+fGxqbPzu3BwaHFSq3Aw6XAxKfPzy3Gy63ByWzJzO7Mzi9OzavBRytAx6vCSazGRKTPzy1AQKHBRGdBRyrDy63ES+3Cym1CR6rBwWVAQSLAx+xCyCtBRmnPzuzAQWLAwePPzyzKSCbAQOJByGvOTWvPTmxBQODFQ6PPTWrPzqzOzatAwGBKyObLSWfPTivKyCZEQyNKyGZOzWrOzWtOTSrOTGpNS2lJx2XDQmJCweHCQaHCQWFBwSFBQKDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBgggoQJFCpkzGjhAoYMGjZMpMghQgcNFjh4mODhA4gQGkSIHAmBwAgNJEpo8KDSxAkUGjhMSEGz5gUVIiKs2PmBRQudHiwQpUnAxYsXImB0aBqjBcuoU0fKmPGChgUNH2qIqGHjg9u3bicWIFs2rYgbNnDkyGFhb8cccQ3ouJqWQo0dPFr0WMy4h48LFj4gsKriB5AeNngEaSGks+chPnwQOXFAh4oXRYxk9nAEyY7XO2wksWHDx5ATCDIoUXEBsYclTJo4cWJhuIjhSXacSPBEiZLMQY4wgRKluvXqUpyIsDElAxUqVaxcwcGCPQuWLOixaNHCZAsXBU+oqKDSxQqULF6ifNmyn/8VMOtxwcAK36kQRhdJQIFFEmKM4eCDYGyhhYAEkqFEGSuYYcUZLaDxXRpqSNRCEu6twYaFZXTQhgRd2NCCG9918AYELTjoXgNuKAFHB2RQEUYHVbQQRwlUpPHGGFwkyQUEDsgxx4lh9BhCBy2U8UQJcrSg5JIQ0FEHG3bc0QGYK+CRhx57PEGlkhM9sAEffKTQhx9+/AEIIIGoEUgLLRRFR0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mail_reply-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIcAAJR6fIxydIxubIRqbIRmZHxeXHRaXHRWVGxSVGROTFxGRFxCRFQ+PEw6PEw2NEQuLPwCBMSihPTixPz69PTq5Pzy1Pzu5PTq1Pzy7Pzu7Ozi1LyelPTavPz+/DwqLLSajPTetPz27LSWlPzmzPz6/PTexPz67Pz29OTSzMyurPz25LyajBRCdPzuvDQmJOzexPTevOzq5BQ6bBwuTDQiJHxiZPz23Pz65LyinPzmvBxCbHySvAQCBOTi3OTq9CweHOzaxFSq3Aw6XGy63ByWzJzO7Mzi9OzavNzq9BRytAx6vBR6tPzy3AwOHDy63Ax+xCSazCym1CR6rBwWVOzizAQSLES+3CyCtBRyrBRmnGRKTPzu1MzGtAxKfAQWLAwePPTizMy6nByGvNzWxOzWrNzOtBQKDJR2ZNS2lPTmvBQODPTatKSCbOTaxLyqlAQKHFQ6PPzyzPzqzPTu1PTivOzWtKyObPzuzOTOtLSWfPzqvAwGBKyCZPTWrPTmxNzKrEQyNOzatOTGpJx2XCQaHCQWFBwSFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBgggoQJFCpYuIDBQgYNGzh08DCR4oQPIDqEmDBhJQYRIzqQIFkSAoESJCKkDGFiwgkUKTpMwECz5IASKjqsSMlSA4sWQjG4qGnzhYoQSmF0iCFjBgmWGWhQrVHCxg2sOHLo2MGjB0sLYmsWQHq1p4wdPtqemGDhB1UDQFSouKHi7oQgQmSwUMyYxcQDZQWz2EFiCJEiRoyQyLzZyGIIB47YKLwDSRAiSZSoXq1kCRHNLBK8YGKjCYskTp4ogeKkt+8oUaBImZKAAxMmVKrctqL7ihTnz7FkAT5FC4cKFbZwadIFdxcvX8KLss8iJcoUBUcq2KgAJoxyMTy4jCFTxoxEHl2GLyCDncmWM2hUIQMPY2CXhhoTfTEcA2tgVwEba7Thxhs88FdBD/ZB8MUUHMJBRhw2sAGCHBKU4UaFc1RAhxnhcdhhHUzYAUIcFdxRAh4R5KGHinu4OIVEDqTBRx81xhGHHzD8wQYQetDRI4cTAcIHGWT0EQgZa1ApCBqDcBAID1Q94IEHLtBAAyGEFGKIIWqYYQYPYNZkQEAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mail_send-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIcAAIR6fIRydHxubHRqbHRmZGxeXGxaXGRWVFxSVFxOTFRGRExCREw+PEQ6PDw2NDwuLPwCBLSijOzixPz69PTq3PTu5PTu3PTu7OTi1KyelOzavPz+/DQqLPz67LSafOzetPz27Pz29KyajPTmzPz6/NzSzLyurCwiJPz25Ozi3JyOjPzuxBRGbAwSHOzexPz23KSSlPzqvBROdISavBxSdAwaLHRiZLSinNTGxMy+vBxGZNzu9BSGrAwWJMSyrKSSjFy61ETO3BRWfPz65PTqzHTK3ByqzBSWxEzW5AQWJOTWxBRCXOTu9BSOvDzO3ByavBRKbOzaxOzizKSWlCQ2TAQCBJza7BRWdNzSxJSCbMzq9BSOtCSKrAwiPOTavPzy3LymlCySrAwmPFRKTPzy1NTGrPzu1JR+bOzatPzyzCy61ByGpOzWtJyCbPTmvPzuzIS+3FymxCSuzBR6nJyCZOTWvKSObMSujOzivAwKDOTSrNzKrJyGbDwyNOzWrMy2lIx2XBwWFBQSFBQODAwGBAQGBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBgggoQJFCpYqMDxAoYMGjZwmEixg4cPGzqA6BBiAggRIzaQGEkSwgAMJCKgnNBhQogSJlKGOFHTpgYUG0TsnJBCxQoSE1i0KErAxYsOJJRuuAAjhkwZM2jUqGnDBQoUHTbciIEjx4YNOmbs4CGjB8kCZlGAALHBx4+YcTcACcJDyFSJBo6iGNIhhQkiG8BOKGLkCBK6SSQisHoWhZIbG5bMYALECI8mTZw8gTL1QJQXZ6VMiUylSpUlVpoYaXLFtm0EGmCjwJLlA2O9MrRsccKlC8kEXr7AdgEmwtkhX2SQ2BIkjBiSYzSQr/nyhUKZLIrJJOcexvlEBV7IvCBjRkmAMzHOaufhxDvJBWiQISAFxUUQQRovJNeEGmu4JxEDbKQhXxsfuFDGGW68IQMcccgxRxUkNRDhC3R8QMQIdZwXQ11JJGFbiB+QYccHaaTxhgt13OFBDGTgkUdRDrhAhx5k2JjGCB/swYcXMXwAYk190OGHHx/4wUaVepTxByAaoPEkSQ5wwMEJZAZipiCDDJIHIYV8OZEdAQEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-matrix-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBIQChCH5BAEAAAAALAAAAAAWABYAAAJHhI+pyw0Bw4sTVmmw1C/3/20ex2VUtJ2Uwx7oBb9eR45ziNfgy6tW2+pZhJicjXbTiZA7X2q4AjqIsajSuDsuty5n9SddGAoAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-message_get-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBFxatHx+/Hx69GRixFRWtHR29FxaxHx6/Gxq9ExKxGRm/FRW9Dw+xFxavFxazFRS1ExO9ERC/DQy5CQmzBwaxBQSpCwqLMS+xBwatExK/DQy9CQm/BQW3AQCjJyavAQCBMzGzAwOtDQ21DQy/Cwq/BQW9AwK5JSStOTi5AwKDKyurMTGxLS2xISGpNTS1IyKjJyanMTCxAQC1MzKzNza3MzOzCQiJGxqbHx6fKyqrLy61NTO1JSSlNTW1NzW3Nze3HRydKSipISChDw6PLy+vFxaXPTy9ISGhPz+/Ly6vLSytJSWlHx+fCQmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4IBAgIDBISLjIWHiY2RggWHBgeSkYYICQqYjQUICwwNnoMFDg8QDBESExQVFpgXGBkQERoSGxwdHh8gkiAhGCIjJCUmJx4oKb+NKissIS0iHcgeLi8pzI0gMDEyLzIiM9c0NTU2zYQ3ODk6L/A7yvDnPBjqgiA5PTYvPvU+fvh4AeQFDXwgggTBwEIIOB8sakB0iO7gIH05hvToIeQFBo4eNwoJEaIZiAtEUgbhWGQjRxk9hhhJSeQXiCM4jxBxyXMjEiI5bR5JQnRnT5dDiNCgIcNmCiBAfAShSZVmECVKltgc+MIGCxlgw4pdskKHEJtMZRTJuqStW7dCImLEYGLTrJC4PeYy0asXxpAhTZpdGHzBSWHDiBPfWCzIQCAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-misc-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFCQiJERGRBwaHFxeXHx+fDw+PGRmZExOTGxubKSipDQyNHx6fIyKjJSSlJyanISGhISChLS2tIyOjHR2dAwKDAQGBJyenAQCBCwqLLy+vKyqrAwODMTGxKyurFRWVLSytLy6vMTCxMzOzGRiZNTW1CwuLMzKzFxaXJSWlOTm5Nze3Ozu7OTi5Ozq7GxqbDw6PHRydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb/QIBwSBwGBMVkMjAgFAwHBFJpPB4SiQJCsWAQqEJB4prdNhQNx7QYIFwLD0ikQZdMHgelOPGYULQVDg4QEAVfRAEBBwUTEE0WFwcYhAuNF0QDBQULDwwZGUIaEAuVGxgBRAIFEhwHHUQMCxwTHAVrAAwFFRwKFkQZsxseDqBDGXMSHwfFQiAhIiMeJApEBwcOcahDJcLSJCYcGkQKcRAnQhkF0SgmEykHXkObox8q1iEjKN8rENqYD7MmeBCmzwSLFS1I3AqzYIPDESS+sWCxgQMLEgOSJKjozeAKFyskCDigQFwSBhJMjDDhAlyLFyVA+dIzAUUKEi0eaNhAIg8YGiEMenkwASNDDBkLqRQAEEAkup9KDkEFACUIACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-move-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAI6hI8RyJ26nAQQzlbrdWrP7nHRNh5gwpxmaZxWylJdRtf2fcux2rr7n8LsQrxQzyhE9mhIplKjPE5wBQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-news_subscribe-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAASC/Dw6PAQCBHRydPT29GxqbCQiJPz+9PTy9JwCBKwqLPz6/GRiZERCRPz+/FRSVDQyNBQSFBwaHDQ2NKSipJyanHx+fMzOzNza3FTCFGRmZCwqLAwODLzqpCwuLExOTLzqrFTGFAQGBES+BETCBEzCDDSqBBQ+BLTqnBRCBFRWVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb0QIBwCAgIiMgkckAoHJVQgEFAOCCc0WThcEgoDgvGMztFJLiJ83Ws3C4ODIY1jUCIlQ0Bd+FwMLZmCXV3Qw8CCAICfW9wBQhddVgAEIcCCwuJDlxWBQx1AhFPjlyJlwISj1ZWBJQTAImIerGqVwgEiAwUR46ysAeJcKoEoYkTVLGPvrWVDBUWEwEXF1aziMGfAhhiAhAVFdKPyMux2YkAEc3fF3WcdQTAGYkQQxAF3uAIGggbCBwCHfEEeEBiIB0+BB8cgHAQogMIKPXurRMxgkQJExjZELT3jUGDEyhMpDhxIouUOB8qqAhZ0iS9CJMStTQQBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-next-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBOze9ORy7Pzy/PSi5LQCvNSG1JQ2nNx21LQCzMRGzNRy3KQCpLwKzAAAACH5BAEAAAAALAAAAAAWABYAAARTEMhJq704axC671WAfR8VCOKUbudApCBHksVgHO+5agFiHwVBAuYZ+RQLBmLHatgMS8mMyREsDI7oRipEeLWsKVG8Fce26EspzeaR2vDQNE7PGCIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-openterm-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIcAAPwCBAQCBPTy9PTu9Ozq7OTi5Nze3OTe5Nza3NzW3NTS1MzOzMzKzMzGzMTCxMTGxOzm7AwGDBQOFBQSFCQeHCwmLCwuLDQyNDw6PERCRFROVEQ+RDQ2NLy+vKSipISChGxqbExKTOzu7OTm5Pz+/GRiZMS+xLy6vBQWFLy2vCwiHFQ+NMSmfNSyhIxmTDwuLJx+bLS2tCwmHMyyhMyqfPTqpPzyvLSWbLSWfPzitIx+ZDw2PAwKDCQiJGxWRPTmrPTerMyuhPzqtPz63PTWnPz6zNy+nIRiVDQuLKyWbOTanPz21NS2jNS6lDQqJHRaTPzmrPTSnPzyxOTClPz2xNSuhPTqxPzuvOzSpAQGDOTKnMy2jOzSrPTu1NzKnOzOnBwWHJRuXLSWdPTatPzqvNzClCwmJOzSnOTOnPTuxOzKlOzerOzarOzitJR6ZNTO1IxmXPTWrNSyjPzOjPTSpLSehHRqZOzirOTCjPS+fPzGhOy6bOzKhGROPMy2lPz+1PzmtKRyRHRiNNTCdPz+zNzCjEQ2NKySdDQmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAj/AAEIHEiwoMGBARIqXMhQIUIBAwYQIFCggIEDCBIoULBgAYMGDgIIDEBAwMSKBRBk3NjxAciQIwdACBBBwgQKFSxcwJBBwwYMHBx0EAmA5EwPH0CEsCChoYgOQ0cSGCHhA4kSS5syJGDiBNEAFVGUKKEBAwWFFM6SNJHi64gDFEKE4FBBggoKK1i0cPECxokYXw0gsECYggQZM2jAqGHjBo4cOtqOxLhDAg8ePXz8ABJEyBAWRIoYOfJipEoMCZEkuaFkSAslS5jUGJKkSRAnRREo0JDwCZQoTKQAmUKlihQrVa5gKZ1lI+oAK7QM2cJlSZMuU4Z4+TJEx0iNOwKAggkjZkyOFmS8kClzpcUQLRRGbjRD4MgZNEzSqKG+ZgobI2248dUbDDDwABzcxSEHEFpgEcUcdMRRhx1fFejAAx0cgcYdSxiBRx566LEHH0d8QFRRNC3Uhx985CHEH0MAEkhCBxWkgiCDFEFIEYUYUmONMhyCRxVH/PgjBYioYJAdAQEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-paintbrush-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBMTC/AQCtAQCdPz+/MzKzOzu7KyqrCwuLAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARZEMhJ6wxiDMsp1lvHfRohWuRAmOeVlUTQSukqz3U8A/nd9rtCAWTbAQoGg0q3OyANCOYPA0UgfCdMJnHFimre72sZ7pBWiTLqRUirK5hV7A0P2O3GvD5PjwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-paren-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBIQChAQCBBQSFCH5BAEAAAAALAAAAAAWABYAAAJThI+pGou9oDuS1hlqnkxu/niVQB6kYHzAiJYoUK7paLrxpr6GMJjWeqlFGirEaQhcDHQJnEQX2/1kMBv08Yu1ttNkFRr1ikHjIiYYjDjSWLIbUAAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-pencil-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAASC/IQCBPwCBPyChMQCBPzCxAQCBPz+/MzKzISChKyqrDQyNEQCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARYEMhJ6wxiEMtpIAWxddwXiqRlikSQeiAbuC+wirNR322gv7zcLobzDU+9XypoBBKTR1lz+RTWDgip8nUwZK1XLyIx5XoVicX2RUAo1DVKi7GOBxjxfNwQAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-percent-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIzhI+py+0P4wkU1XfDhBdo/zndF4qh1pkGKYFk2XpTqoJr9G5YfmOz3hixfBZa7IhMJg0FACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-player_eject-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAwKDJSWlFRSVBQSFKymrOzq7HRydERCRPz+/MzGzISGhJyenKSmpGxqbJyWnJSOlKSepLy2vIyOjGRiZPTu9IyGjLSutFxaXExOTHx2fGReZAQCBAQGBBwaHCQiJLSytKyurJSSlFxeXNze3LS2tIyKjFxWXHRudAwGDBQOFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa1QIBwSCwaj8ikcqkMCJjHwIBQgBIDhgMiUbVKFQsGItBdBhpgh4PxIJvRC8cA4oiMy8bvQhJhMAYTFBVOURAWEw0QFxcMERAYCBluVxobDxkVHJocmBwEGgmEQx0dHh0CpKmkH6odVlanBR8FtAIFtiCkSB0LISEiGCIGIxAPDySuRwIOBwrOzwoHJRHJRh0jJgMj2gMnERQUCNVFHQQoCBvo6CkICATjRB0qp7b1K6qv+foyQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-player_end-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNFxeXAQCBMTCxGReZBQSFOzm7AwKDKymrJSSlFRSVCwqLLy6vPTy9OTe5Ozq7CQiJLSytOTi5BwaHPz+/HRydMzKzKSepJSOlKSipJyanIyGjIyKjKyurISGhMzGzJyWnHR2dISChIyOjLSutDw+PERCRHx6fJSWlIR+hJyenGRmZHx2fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa6QIBwSCwaj8ikMBBQKgOCgRMZIBSkxYHWoDVWD9EigpBQLLBERsPxCA8NDUhjgTBGJJNGG02RVBQWdUV3FxgZe0IGfoAGdhoXGxwdiAYef4FGFBoeHB8dGSBRihUhIo1FBhkbIyMkJRYmAwYal4JEBh2RChIWJ1IIGxUZFqdECCgkHR6wWAYpFR2YWSobvL5vFgfDaEMDIivMRBEsD9HcQgMWvecDLB0tZ0btsfJa9vLXU/X6/P3+b0EAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-player_pause-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBAwODMTCxKSmpJSWlFRSVAQGBBwaHLSutOzq7Ly6vCQeJPz+/Hx2fBQWFGxubLSytJSOlBQOFAwKDJSSlJyWnIyOjHRydNze3GRiZAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAWBICCOZGmeaKqubOumQSDEgRjPMSoMRGEcol3vh0IkFAtDDWBEKlGMRKPgEIii0yrqIS1ArADu9KuLNCSOSdCMVp8ohEZFC4DL6SaBpXGh6/l4JX8XZACDhXkYCn1LAoqMUBAZEhBLDJKUSyYBGmhPAJyemiU0NDaloy+qq6ytI8whACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-player_start-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAQCBExOTAwKDAQGBJSSlHx+fBQSFMTCxKymrFRSVOzu7GxqbLSytLy6vJyanPz+/GReZBwaHHRydKSepKSipGRiZJyWnAwODLSutKSmpISChPTu9ISGhFxaXJSWlIyGjJSOlERCRIyKjDw2PIyOjLy2vOzm7Dw6PLS2tCQmJOTe5GxmbDQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa7QIBwSCwaj8ik0hgQLJGBgbMoqBIKU2LAcMgOEQmFYeEFbBmNMgDhYDwWBC0k4pCoJ46IgRIXBioRCRYXamwRGBQIfgaBFhiERhkaenxmCoEbBhyQRYaIGVsdghgem4UWegcEBB8UHhsgIaZGBBgRIpUIIxQhChginEQIIBEklWslFyYnBsFfFCi4WQgpFBwqFxNGKxcsxl4IAS0NZEYCF3vlwgEfUuZV8JEuI2pPAARN9kcE9fr+SwaCAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-player_stop-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBAwKDBQSFBwaHCQmJJSSlISChJSOlJSWlGxqbGRiZNTS1PTy9Pz+/Ozm7OTi5FRSVIyKjOTe5MTCxIR+hExOTHR2dLy6vLSytLy2vHRydFxWXIyGjIyOjPz2/FRWVHx6fExKTMzOzJyanKSmpKyqrKSipAQGBLSutHx2fDw6PAwODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa1QIBwSCwaj8ikcslsAgKCAWEQjQ4KgSwyYDAcugZEQqFYYJECA6PhaLcfEEUkgJZAGJB8fkKpWOhHAxcOGBQZGBoaGQgbHIBGAhUOGR0SBxISBh4Xf0iCHxQSlRIIXhsgj0UCIaCXmJgHGyKpRJ+hmB5dHQqOaCENIx0epBIkBhdzngoPGCQlJifQJBvJRygRKRcKGxcXGypys1srEREc5SLnICLiR1koLFVUWfRO9vf4+UwyQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-prec_minus-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBAQCBKSipPz+/CH5BAEAAAAALAAAAAAWABYAAAJAhI+py62RgnRnGguZ3BlTYIHdl13jh3goFpIleggvTK8ctw76Pswav/MtAkCd8NHj9HLFY6S4JEGdqdumtjAUAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-prec_plus-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBAQCBKSipPz+/CH5BAEAAAAALAAAAAAWABYAAAJHhI+py22hgjwSonktxBZU7GnhkyXc6JmmeDpnG2lg1YCOInT3zrvfxwsMhsSBrkYUDo8MpTEZNH6M0SV058xWi1Tsj9ZjGAoAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-previous-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBOzC7PTq9NSG1MxW3LQCzNRi7MRGzLQCvPz2/NRq3ORy7HQCdJwClAAAACH5BAEAAAAALAAAAAAWABYAAARUEMhJq70Yh813rl1HheInBYIwrEJwktxJFEbRmuOBJIXivp5LQLcj+HCnBaPBMBhdMBBjw0w8ccEA0/EzdQHaHywmnIyDyDSIrG4LQ+64OSqvx+kRACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-prod-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBIQChCH5BAEAAAAALAAAAAAWABYAAAI7hI+py+1/gpy0hlVRZlP19mmSE0YjeIoXuqpkarYYbJQeDdiJrrs77gvOZDVg7Eb8JXtFSpMJiUoB9AIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-queue-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIIAAPwCBAQCBKSipMTC/Pz+/AAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAANfCLrc/jDKEGQMQlDLKM5aZQXDQIHZ9nhleaLqEhAE1bofKCozXZO3l0bmK9qCQ2LRCDQlAb3lkoTZQaVS6jOKpWmt3O5X2fU6wWXfuBM2mmINCpbKkavho56VI9s7DAkAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-redo-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBCReDJzGjMzivOTu3Pz+/JTWbHy+VHTCTMTivPT69BxGDESuJDyiHESiHEymJIzKZAQCBFS2LFzKNGzWPDRqHCxqDFSqLHy2XESCHAwaBAQOBBQqBDyWJHyqZDyKFGSiVESeJBQ6BAwSBGTGPFyWPFSSLEyOLESGJBQiDAwiBBQmDCRGFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaoQIBwSCwaj8hkMcBkKpcBwYAwEDif0YLhwEUkFItFMkAwMBoOR+PxgHwjRDggamhIJpQ8ZbKGKOQLcgEFdhUWEYgRF3sNfhELBHALAhgZFhobRBwREhQdEAIEHpIKHwsaSJwUDQgQIJINARxKESESDQ0dgCIjSpAkDAwPco+ZSJAlJicnKHIAIrNHidOIQxunT0kpCyrZSCss0d5Fj6jjRonn6uvs2QZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-reload-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBCRSFCRSHBw+DBxCFCQ6FBwyDBQWBBxGFCxyLGTChMzqzLzmvHzKjDyOTER+RERyNDSqXNzy3LzivFS+fCyCPBQmBCQiBBxKFBQqDOTy3LTitES2dDR+PCxuJOT25KTarCx+PESSTCxKHDSeVCyKRNT21ESWVDSGPBQyDAQCBBQSFDRuLDSyZDySTGzChCRiJKSmpExKTDS2ZGzGhLy+vGxqbISChDSKRMzKzGxubDQ2NIyOjCQiJCwqLBQWFCwuLKSipERCRERGRHR2dAwKDDw6PFRWVIyKjCQmJFRSVBwaHKyurAQGBExOTBweHFxeXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf9gACCg4IBAgMEBQYHhI2ECAkKCwwNDg8QBAOOhAQREhMUFQgWBxcHGBmbggkaGxwPB4yDB6SbBJIKHQaqtY0eHyAhsqrDgx4aCiKpqoQHAyMjJBMKJaSxzAAHIRsmJgonKA0LHSmDKiuOBywRLSQuLyEwwyoxMuiN6iUzNBXy5jU2bsgoJugABBz95uXQsUMGD3vpPPgTpKIGwx4+HMr4kW4YkCA2hAzxAQSIECI+imBTwVIFESNHerRUgc0cEiFHkjiiyYzeDiVLdvLcySSkkKGEWiZVweSGkIHMmvQosoQlkaZOjvhosvKJjIAxoOAsgpRZkQNLnvSoqspAIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-revert-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAAQCBPwCBPz+/BQSFPTy9CQiJNTW1ERCRLSytAQGBISChMzKzFRWVDQyNCwqLMTCxFxeXOTm1KSipPz69BweHHR2dJSWlMya/Mxm/GQCzOzWxGRmZPzOzMzOzMzOnExOTDw6PNze3Ozq7OTi5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAWABYAAAbrQIBwSAwYAwDjUCloOgUDQlJJFCKfzoLAMF0ih9jmASGQfq3IBECgYC8YCsah4Rgc7+Bw2fCY4pNrCg8QboIIEX5HXXoEjWZ3eAIMgxITcRRVmVdOE50TBRV6TkJsD3EWDBUOoRcXGBmwsAJqT44aoKJNtAoVDAwWFRUFGwKxxhkCQhMEyxEcGrfEuWoGBgsdDwseHhQQvt++Hx8HmUQU4OHiICAJkHcDDB8hBCIj1QYfDomQAOIiHwxCPBiYr507JeNGAOQz8IC+g0YKrAtxAMQDBBgPFDB4EACIAwIHDkQAAhNEKuUStDMQBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-rightjust-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIhhI+py+1vgpy0Toizjvbur3WiBJbhSJnqgorri7nwDBoFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-rsub-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBAQCBIQChAAAACH5BAEAAAAALAAAAAAWABYAAAI+hI+pFu3f1gmSVUBrlnt19SUhMk5XaWnnqrYc+2rQfNWHIBi4feP+zssBdkJez5gAIodDYbH2+yGBymXCUAAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-rsup-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBIQChAQCBAAAACH5BAEAAAAALAAAAAAWABYAAAI6hI+pyxBhXlOv1omggxon6VFdGG1laFmkyQLCC8fvJNB2U+M3k/P70gP+FEHiMFFEHhFJJk0GXUkNBQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-run-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBOzq5MzOzPTy9KyurNze3PTy7IyOjOTi5MTGxNza3MTCxMzKzHx+fOTm5NTSzNTS1NTW1FxaXAQGBLy+vJSWlGxqbGRmZIyKhDw6PAQGDJyenAwKDLy6vLSytBQSFLy6tKyqrHR2dLS2tJyanJSSlISGhKSmpCQiJISGjCwqLBwaHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbcQIBwSCwaj8RAAMkUBgSDZdMpBQQIharyGDAclsoDYhtIKKrDwMEgUBMWiwSj3HCg0w+DfgGJQAYSDRMUTAELBhJ8fw0KFXdJBwkLEhYXGAUNDBUZj0pXkxYaARsIDRUMHJ5pAgQHkxEYUh0JFR4fHAVZTgMFCAt+sUIgBB4hIggOI1pKCQO8CB0gAgYkJGNbRQEKEYwNCa7VIhOPaRAKCpoV1QUl5E5mDJrFJAW4JuRlCuMnKB+94yVQ2DGi7QSYABcQgACTDF+VFChULJsiZIUCiRS5sMjIsQidIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-showmenu-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBBwaHERCRIyKjBQi/ERO7HR+1Ly+1Pz+/Ozq7MTCxOzu7NTS1AAAAAAAACH5BAEAAAAALAAAAAAWABYAAARkEMhJq7046z2D/2AoDAQVFGiqqsaBmGH8jWWX3Hiu3+YdKglPMIDrDXc+Is92zAmFi5pECWIkjySj0EkUZplb3JP4nV65WCmAqhR3yeo2Emmc0zsyGc3U6Pv/gAAKHISFhoQGEQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-signature-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAISGhISChHx+fHx6fHR2dHRydGxubGxqbGRmZGRiZFxeXFxaXFRWVFRSVExOTPwCBAQCBMzKzMzOzMTCtMS2dJSCTCwqLPz+/PTu1MzCtERCRMSydPTqxPz+9Pz6/MS+rNzKlKSSVOTarPz69ISCtGxurJyaxPT29MS6pOzmvNzSnHRyrPz29OTi5LyqXOzavMy6fFxanHR2rOzq5JyKTOzizPTqzKyWVGxqpPTy7LymZGRipLSy1PTu5KSSZFRKLExKTGRaNPz27PTq3LSiXPTq1GRWNDQ2NMTC3FxSNLymXGxqrPzy7IRyPDQyNCQmJGRinJSCdHxuVBQSDPTy5PTm1IR2RJyOfKSSfBweHGRenFxepNzGrKyejNS+pNTCnNzCpLyedBwaFBQWFNzOrOTOtOTOrBQSFOzStOTKpAwKBMS+tMS6rMS2nMSylMSulLymhLymfAQGBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAA8ALAAAAAAWABYAAAf/gAAAAQIDBAUGBwgJCgsMDQ4OD5MPEAEREpmYmJqaE5IPFBUWAxEXp6ipqJ+TFRgVBaaqsxcZGhUVGxwdBrK0qB4fFSAhIiMYCLIkJSa0JygVKSIhKSoJvhcrqh4sLRUuKR4vITAL2DGpMiMzNBs1FzYiKjcMER6oOKglLDkVOinwRMCAAcKBrx33eMTwkKPHPx8/RGxwEaICkIMXcOBgMaJfCgw/fMCgWCGIhoMlSOQQkmMIkSJGUoysGOTBEVlIZMTg16NHhSJJZCqhOenmqSU5cDDB0JJIzJlNak5yYoqHDBY7hmgN8aPGhhslKU16EgHJDiY9oGz9EcJFkChSaKaIfUC2I5UhMarU+GElyJUrWHzIFZslAtqWVbRs4dIFi5cvYMKImTsmQs8qVVrUePGCDJcyZkCEGUzpTAQMmGts5ozGTJo0XEbPVTNhDRsUbdy82Q0HTpwwwNXMlQOhuPHjyIWLNRAIACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-spellcheck-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAASC/AQCBFxaXBQWFAwKDPzCxPwaHPwiJNQGBOxKTPQ6PNQCBGwCBPQ+POwCBPwqLMwCBHwCBBwCBFQCBLQCBPwCBBQCBCQCBPQCBOQCBDQCBFwCBJQCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAWGICCOZGmeaAoErMi+4xuQgQAI8yoKw2rfOZ1LRIgJh0hhDncsyXKypNMIKAKbNGpwFjxukcza7jt8xmCAgkpVMKxRhQOCnTAVFAtGqtBwLEgFDxAREigBExQVFRAibYNdJhaIigmODBdvF4gYDwoZDBpvIhKIGYOFoi4bHBGQogESqKlvBiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-sqrt-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIIAAPwCBIQChAQCBBwaHAQGBAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAANPCLrc/jDCQKutkcqQJeCP5k3g6IjCIAjAynYt0brzUn7gW++i0i8CGcNiuyl0NlyysYKhXgQdUvmcNZtDTo/mmvo+ptMvjDOSzWey+mFIAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-start-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VAQCBCRGZAxCZGyavExmjHyatOTy9CxihISevPz+/KzO3BRylAw+XDRWbPz6/FzC3CSuzDyexJzO5Mzq9CxSdAQOFISmxNzu9HTS5BSmxAyexDSuzJTa7Mzu9Kzi7GS21CRmjAQOHHSWtLze7AyWvHzG3BRihCTO3BS+1AyixBSWvBSOtBSStAQWJDzW5BTC3BSqzBS21CTC1ETW3AQSHEze7BRqlBRmjAQCDBR+pBRefBRSdAQKFAAAACH5BAEAAAAALAAAAAAWABYAAAa0QIBwSCwaj8ikMqBcMpsCQTEwIDQBUWKgYHgqs8LAAZGwQqWAgGLBaDgEj0Fgjh5mxRBERDKhICAQFRYXRVEBGBAZGhscHR4VHyAhIiOFAiQZJRoSGyaNJxQnEyiVRFEoGykqKyYsJiYtLi0mKC+WFygrMDEyMzQ1wDQqKDaWADYoMzcqsjg5DSgoBISmaCOoMG4v29s2OsZCyDs8DldgQtc95WdFPg7rV0Y+XvHt9ff4SXRBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-stop-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAASC/CQKDBwKDCwODNyKjPzq7My+vIxiXAQCBOSOjPz6/OSelNySjNyGhMR+fLRaTGQ2LPz+/Nx+dNR2bNRybMxuZMxeXMxiZLQSFJQaHFwqJNyKhOSCfNyCfNR6dMxmXMxWVMRORLQODOR+fOSSjNR2dMQ2LJQWFMRWTLwWDNSCfMxeVLwaFKQODNR+fNx+fMxiXKQSDOSWlMRSTMxaVMQ6NMxORMQyJOTS1MxqXLwWFLRORMxKPMQaHMxKTLQWFCH5BAEAAAAALAAAAAAWABYAAAb2QIBwSCwajwGBcikIHIsDQmFKNRwQT2EgoVgsGOCG4wHBIgmRhWRCqVQsF0xGYyYGNgoGh9PpeCQfICEic3UAAWgLIxwRJBsbHSUREyYYJ3RDAQULexGejhueESgpl3WaCxsqJKKsChEUKywtmFoFDC4vCayikzCyMbWHt38NCTKiHhUfMyzBdQIFKsodob0VNDWzwppuKxMRrx6iNjcitNA4bh+iEzkwojc66JkOOxcf7G35PBE9KS1MEUGgIQOIFfk++KjRw9wJgUUIZvhRoyLDFCliQDQisUWLGCJOeNx4hKCGkyhPGnqCoKVLl1liypyZxUAQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-sum-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBIQChCH5BAEAAAAALAAAAAAWABYAAAIyhI+py+1/gpyUMrvm1bdhFTgfhIykYZ4pyZ2o5EZwDLSurc7ZFnqZDgLKKsQe7QihFwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text_block-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py30Bo5zBWUWzvNzo33GfFl5jVlonlTrr1DbvFi9vjeeNUQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text_bold-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIxhI+py+0Powm0VnknjVkH2AEhE45LZ55Wqn6e65TsMc5eYosbksswubJIhsSiccgvAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-text_center-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py30Bo5zBWUbz3Sh7yIWfFHKjVl4nmFrr1Lpr7LwkjeeIUQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBBwaHAwKDBQSFLy+vLS2tJSWlBQWFKyqrFRSVCwqLDQyNNTS1GxqbFxaXJyanIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAVcICCOZGmKQSoMaZsShBsQBdAapHvgaIDUqUPJlRjSbAoT0fRDKgODRbF0PLUYjZO2F2Bst9evNix+dsvDlGKK5jraudQb7qbX6a2HEJ+ycyF+LRE8ZTI+fX5oGCEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text_italic-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py+0P4wqUSlQvttrkDnyaOHIdeaGRupplAIauVM3xjeeOUQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text_left-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+pyw0Bo5zB2UXz3Sp7yG2fFJajVjonmIor2TJvfL0wjecIXQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text_right-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py30Bo5zBWUfz3SZ7yIXdF4kWqZkbCqoMO7kXLC+wVOe6YRQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text_under-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIvhI+py+0PowmUnhpeVVnb1DkbCI1I2JhX+Z0sOr2cTHpwK7a4rUr+hAnufsTirwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-toggle_log-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIYAAAQCBAQ2NPwCBATW1KSWfBweHATS1Pz+/Ozm1GxiTATOzPz6/Pz69ATGxKSahOzaxPzy5HxuVLSmlOTazPz27AS+vPT29NzClPTexHxuXLSmjAyKhPTy9KyehNy+lPTy5Pz29HxyXNzWxAS2tOzexPzy7IR6ZASytPTy7ASurPTu3KSSdIx+bASqrJyOdIyCbASmpJySfPzu3OzizJyKbKyijASipJSGdOTWtPTq1PTq3NS+lJySdOzWtOzi1My6lMS+rOTOrMS2nNTGrNTCpNzKpJSGZKyafLSifIx+ZHx6ZFR6bFR+dAQyNAQuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAAAWABYAAAf/gAABAoSFhoeHAAMAiI2IigSMjoQABYkGBAeSjwAICYkKmQublJ0HDJ+GAA0OB66bpq4HCQC1lA2ZrqMCAA8QBwvBERITFIwAFa2yFgAXGL+uDBkaxRu1FQQLshwdHhgfDK4gIRoiFNYAI8quHA4XJCUMCwwMJhLm6Ce5rigEzhAMQICwYKLcuVopWgUDoWLFhQcfKNCjwOLeQQAtCFDYiAKBC28QKITk8MIgOhgxIHyQIWOGi4cfIHAogYJGjWq1bNzAkSOHjgc0dmBAgQKCUR43S1jjVeFGDx8PcNAAKePDjxg1gOCThOxFEBxBgpJQMQGpkCETEIBYSqkpkSJGOYTyOCJkgg4OIDaybXvjh5ELLpAMUYEAgQ7COPbyTWJEiY3HkCOTaruESYVamDPbQtTESedJhOgEAgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-top-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBAw2VHSWtBRihAQOHISmxNzu9BSmxHyatPz6/Lze7CTO3AyixAQSHHTS5BTC3DzW5ByyzPz+/OTy9AyexEze7GyavKzO3FzC3AyWvBSqzBR+pAQKFCRGZExmjCxihBRylCSuzBSWvBS21BSStBRSdAw+XAxCZDyexDSuzCTC1BSOtJzO5JTa7ETW3BRqlAQWJDRWbOT2/Mzq9HzG3BRmjJzS5Kzi7GS21BS+1CxSdCRmjAQOFAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaoQIBwSCwaj8jkMMBsOp3Ip7SpHAoGhELVKDAcENmtNaFYMBoEh1hAPjwgEUlYyZ5QHpIKxALWIgUXFBgZCBUaG3AcBB1HAh4fICEiFRUjJCUhBCYnjEQCAignoikqhissKAKiJwFJAS0uKhovMDFiADIzNDUsLza2Yh4KNDcsEbW3Ago4NSUrBMBbAjQ5KRo60Mk7PATdKH5bAT0xDg4xPa236uvsShRBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-undo-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBCReDJzGjMzivOTu3PT69MTivHy+VJTWbIzKZEymJESmFESiHDyiHESqLAQCBFzKNGzWPFS2LNTmzCxqDDRqHPz+/KTGnBQqBAQOBAwaBESCHHy2XBxGDOzy7HTCTEyyJDSqFHzWTAwSBBQ6BIy+dESKJFySPFSSNAwiBCRGFBQmDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAalQIBwSCwaj8ikMsBkKotMwYAwEDiXgYLhwD0gCFZiQKxNKBYMRqPh+D6G16y5AYnYIxBJAyF4AwITTAUJdBESD4gPFBV6Fn6ABBcJDIYPGEQZGhQbHAIdfx4JHw2VSBodGwWfAR4LDSALfkgYAQurBiAhICKfSSMkvQElGyYnGyi9Rxkdj4nOskUYyU9FpxnURikdGtjRKivdRKfQ2Inh5+jpRwZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-up-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VAQCBHSWtBRmjAQOHISmxNzu9BSmxBRihHyatPz6/Lze7CTO3BSixHTS5BTC3DzW5ByyzPz+/OTy9AyexEze7ByixGyavKzO3FzC3AyWvBS+1BR+pAQKFCRGZExmjCxihBRylCSuzBSWvBS21BSOtBRSdAw+XAxCZDyexDSyzCTC1JzO5JTa7DSuzETW3BRqlAQWJDRWbOT2/Mzq9HzG3JzS5Kzi7BSStGS21CxSdCRmjAQOFAQSHAAAACH5BAEAAAAALAAAAAAWABYAAAaeQIBwSCwaj8ikcqkMCJjHwIBQgBIDhgMiUbUGFAtGw0GFfheHByQi4S6/E8pDUoFYLm5kAEPJaBAVGxIcER0JHlEfICEiIxUkGyUmIgknKIhXASkonCorgSwmKQGcKE9IAi0uLxUwMTJWMzQ1NiYwBLBQHws1N7avXgs4NjkcCblMATU6KhvGyG87PAnUKV1MAj0+2zIFp1bg4eJJdkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-view_choose-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBFRSVExKTDQyNPz69PTq5Pz+/OzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARTEMhJq70466Cl+AMxBVwnFIVRAmQHCIeBrC1L3tQgJ/SaEbeeC1PLBHE2ybFI9A1HzstHEIK6YCmhDTmBybQaHYJn7QC5zKeytIQe1+pKNE6P2yMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-view_detailed-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBFRSVExKTDQyNPz+/Pz69PTq5AQCBOzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAQ+EMhJq7046817+MLQUQFRGMc4lQaSAkcMx3QltMmrDrSu/sCgEPgJhIiFk89DaL1qPRnlhsgBebWhdstVESIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-view_icon-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBFRSVExKTDQyNPz69PTq5AQCBPz+/OzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARWEMhJq7046z2DF0PlBeAVEERhiKhqHgWyUgEsX0KczFOO7JeBYciTCImc5ITIXDKHyqhU9AnRqq9UEVDTvmLbGhin2/qAliOUot5OLc81IO5+2+8WewQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewmag--22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFJyanKy2tLzCxHyChNTa3Nzq7Nz29Nzy9Mzy9MTu9OTy9Nzi5Oz6/OT29MTi5Kzi7NTy9KTm7JzW3ITO1Lzq7IzW5HzK1LS+vMTq7Jze7ITW3GTCzGS+zLTS1MzOzLzq9Kzm7Jze5ITW5HTS3FS2vLze5EzCzEyyvEyutJTa5NTu9ITa5FTK1ESirLTm7Mzi5FS6xEy2vESerESmtFSutESmrKyqrAz+/Dw+RAzi3ASutHRydAQCBAAAACH5BAEAAAAALAAAAAAWABYAAAbKQIBQGCgWh8jksCgYEAaCozIZKBgOiIRiwSgEpstCw/HYQiKRhBcMCBgQDodkMaFU0t9pQHCIyy0TFxgYEVF6GQ4LCQkaERscHR4RH3lUIAkWCyEiIyQlHiYjEJVIAQQJJ2gjJSUoKSorlHoCLBQcHC0lLikvHjCGejEiHBgeMjM0NRwPpFQFDBHFNjceHAjAYFWoI7cnCVE4OWxtex8QH1EBOjs4zUpGUjw6Pe3j2fP19u/47vrq9P3s/avno2BBf/MCClSob4iBIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-viewmag-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFJyanKy2tLzCxHyChNTa3Nzq7Nz29Nzy9Mzy9MTu9OTy9Nzi5Oz6/OT29MTi5Kzi7NTy9KTm7JzW3ITO1Lzq7IzW5HzK1LS+vMTq7Jze7ITW3GTCzGS+zLTS1MzOzLzq9Kzm7Jze5ITW5HTS3FS2vLze5EzCzEyyvEyutJTa5NTu9ITa5FTK1ESirLTm7Mzi5FS6xEy2vESerESmtFSutESmrKyqrAz+/Dw+RAzi3ASutHRydAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbIQIBQGCgWh8jksCgYEAaCozIZKBgOiIRiwSgEpstCw/HYQiKRhBcMCBgQDodkMaFU0t9pQHCIyy0TFxgYEVF6GQ4LCQkaERscHR4RH3lUIAkWCyEiIyQlHiYjEJVIAQQJJ2gjJSUoKSorlHoCLBQcHC0lLikvHjCGejEiHBgeMjM0NRwPpFQFDBHFNjceHAjAYFWoI7cnCVE4OWxtex8QH1EBOjs4zUpGUjw6Pe3j2fP19u/47vrq9P3s/cunr9S8gAIRFhTCLAgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewmag+-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFJyanKy2tLzCxHyChNTa3Nzq7Nz29Nzy9Mzy9MTu9OTy9Nzi5Oz6/OT29MTi5Kzi7NTy9KTm7JzW3ITO1Lzq7IzW5HzK1LS+vMTq7Jze7ITW3GTCzGS+zLTS1MzOzLzq9Kzm7Jze5ITW5HTS3FS2vLze5EzCzEyyvEyutJTa5NTu9ITa5FTK1ESirLTm7Mzi5FS6xEy2vESerESmtFSutESmrKyqrAz+/Dw+RAzi3ASutHRydAQCBAAAACH5BAEAAAAALAAAAAAWABYAAAbQQIBQGCgWh8jksCgYEAaCozIZKBgOiIRiwSgEpstCw/HYQiKRhBcMCBgQDodkMaFU0t9pQHCIyy0TFxgYEVF6GQ4LCQkaERscHR4RH3lUIAkWCyEiIyQlHiYjEJVIAQQJJ2gjJSUoKSorlHoCLBQcHC0lLikvHjCGejEiHBgeMjM0NRwPpFQFDBHFNjceHAjAYFWoI7cnCVE4OWxtex8QH1EBOjs4zUpGUjw6Pe3j2fP19u/4zT766vRI+fvHD4CPgwcJ9qg0UB85JA0dDjEQBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-view_multicolumn-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBFRSVExKTDQyNPz+/Pz69PTq5AQCBOzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARTEMhJq7046813+MJQfUF4BURhHGO6noSBsEcNoDJtS4KcsJQe4ncZ1HYT47HDbDqfUAnJRJmKLIGCCjjJbmE5wBI3EyOFxKCPS1EiJW52dE6vZyIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-view_sidetree-22:actions actions22 22:photo:22 22:R0lGODlhFgAVAIUAAPwCBFRWVFxWXFxaXExKTNTO1NTS1Nze3Hx6fLSutMzGzLy6vMTCxDQyNMzOzPT29Pz6/Pz+/PTu9Ozq7OTi5Pz2/Ozm7MzKzGxmbIyKjAQCBPTy9FROVFRSVPTq5OzOpMS+xPzu5OTKpExOTJSOlOzu7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABUAAAb/QIBwSCwaAQFBcqlsLgcBAnFQqBqqhwIiUVB4F4wGMeB4QMyPSCFQkEwmlMlCPKRC7pCKmjpxTyxzUwVmEBF6FxiDbxZyUnUFdxERhQUZbX4TDBlEAgUVkQ8DogEDAqYBTwEaAw54eQNusRMPs319Gp0PFZ8PAhMRGpLCwxOrFw/IFRuwwMICHAIEkhK4lxK0A7/Bkh0RHtvFAwp9D27MGugRAh4f29TithIW2c2SBOjgqwxv/AIS9cOEvQPBiBEFetsidOhAQFqEcCDgWLBAwR9AARFCuMPFAMwCEAsQpuMQQkS+EQ1SNkBAwuKwe+kiUDuSzU0JPyUm5HSj4Qi+Bp9A8QEIAgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-view_text-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIkhI+py+0Po2ShBlOxzbP7n2yaJoLm+ZTcxqHuC6hXzML2HVEFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-view_tree-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBFRSVExKTDQyNPz+/Pz69Pzu5PTq5OzaxBQOFOzKpFRWVFxWXOzexPTexCH5BAEAAAAALAAAAAAWABYAAARPEMhJq704g6A779kHCORAgNskFMYhakE8FkjyBcoWv+JwJItXaELYCTFHlCSpZKKcoB5jYHpOGgUadLKbIRw3jhEzQDyCSuI4zW673yhDBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-window_fullscreen-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBNTW1NTS1MzOzMTGxLy+vLy6vLS2tKyurKyqrKSmpKSipJyenMzKzMTCxLSytFxaXPz+/Pz+9Pz+7IQCBMzOvMzOtPz+1MzOrPz+5Pz+3MzOpMzOnMzOxAAAACH5BAEAAAAALAAAAAAWABYAAAWxICCOZGmeKBqsbOu+rjAQRFEYxoEkibIwjUZMRnAUHjkEpPcLriLQqHQ6XRUk2Kw2O+lSKIUVoUKubLflikVcPnO75cvKkXZL4HG2pK31lilqc1lmfRNfgBQYGBlidl5fGhobGxqMAQNnXYaQkZOLjVgVmpsUkRoVnpZje2SkphtlGBUcbH+br5NptAF0rYe4G4plHSseaaW4irLDcxYOFtDRFhnU1B3X1zDa2indIwYhACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-window_nofullscreen-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBNTW1NTS1MzOzMTGxLy+vLy6vLS2tKyurKyqrKSmpKSipJyenMzKzMTCxLSytFxaXPz+/Pz+9Pz+7IQCBMzOvMzOtPz+5Pz+3MzOrPz+1Pz+zMzOpPz+xMzOxMzOnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbKQIBwSCwaj0hkYMlsOp9OwYBAKBQMhgMikVAsGI1GVEpwFB5ZBKT7DS8j8Lh8Pl8WJPiJfr/PTygUBUsEEhV4h4h+ExUUFoMVkIWJhxWLkBeDhZCGiXqbFRiYAYSanId7mxihSwOlphJ6gJ8ZGksOiqd/gKoYGRmipIh7gBSqvhkbtaOuw7sYn8mseJuxxcabGxwdmZ/EvL6f2o+Qz869yBUem9sBH4sYf7znG/Qb6h4gSx8fDh8W/wA1CBTYoSCIfFASQknCcIiBIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-wizard-22:actions actions22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBNzaTPz6BAQCBPz+BExKBMzOTPz+rPz+3ISCBPTyhISCLISChPz+xOTiVPz+/MTCxKSipKyqrExOTDw+PDQyNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAV+ICCOZAkEZqoKqoqKAzHAb1sIxhAQwWAQhRaJd0AcdgkhqaBAOBUL5WjAaD6TUqog0DAildqcg+cDtgaPACTCiM0AOhV6sG4DWOAHnf2uyfV1b1lsgVIwEgwTFHaGA2yKFYJgiJCSQo6JFJGGcJSalkKPn5wimZukAJWoIgYhACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/tkIcons.kde b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/tkIcons.kde
deleted file mode 100644 (file)
index 0d5b2c8..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-actattach16:act act16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBPz+/AQCBAAAACH5BAEAAAAALAAAAAAQABAAAAI2hAOCxg2h0nJHyEshi9HpxU1GOCLdZoKpQ15nibUoprKp9lh2oucUxsBRXsJh4Hjs/QTMpr8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actbookmark16:act act16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCwqLLSytLy+vERGRFRWVDQ2NKSmpAQCBKyurMTGxISChJyanHR2dIyKjGxubHRydGRmZIyOjFxeXHx6fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVbICACwWieY1CibCCsrBkMb0zchSEcNYskCtqBBzshFkOGQFk0IRqOxqPBODRHCMhCQKteRc9FI/KQWGOIyFYgkDC+gPR4snCcfRGKOIKIgSMQE31+f4OEYCZ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actbookmarknew16:act act16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCwqLLSytLy6vERGRFRWVDQyNKSipAQCBMTGxKyurISChJSSlJyanHR2dIyKjPz+xISGhPz+BGxubMTCBHx+fPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVfICACwWieY1CibCCsrBkMb0zchTEcNYsIiYHiwIOdEAvigdFQGE0Ix4NBbSAgsWjk+jBIAlcUYrJASChnSXZSoUDelKfoKpFALJA61ueGI2IAZmhogGFmCGGAgXsifiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-actcheck16:act act16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBMT+xATCBASCBARCBAQCBEQCBAAAACH5BAEAAAAALAAAAAAQABAAAAM2CLrc/itAF8RkdVyVye4FpzUgJwijORCGUhDDOZbLG6Nd2xjwibIQ2y80sRGIl4IBuWk6Af4EACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actcross16:act act16 16:photo:16 16:R0lGODlhEAAQAIIAAASC/PwCBMQCBEQCBIQCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMuCLrc/hCGFyYLQjQsquLDQ2ScEEJjZkYfyQKlJa2j7AQnMM7NfucLze1FLD78CQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actexit16:act act16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBDQyNHR2dCH5BAEAAAAALAAAAAAQABAAAAI4hI+pFrHb3nEg1iWiDiINCwYDko0V9XUTda6I1TIsUMpGinyzbB6ZeGuoEr+GUDL4CXqSphPhLwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-acthelp16:act act16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQ6XAQCBCyCvARSjAQ+ZGSm1ARCbEyWzESOxIy63ARalAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQ/EEgQqhUz00GEJx2WFUY3BZw5HYh4cu6mSkEy06B72LHkiYFST0NRLIaa4I0oQyZhTKInSq2eAlaaMAuYEv0RACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actitemadd16:act act16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBARCZPz+/Mzq9BTC3ITC1HSyzGSivAw+XBSStIS6zHy2zAQCDFyatAQOHFSStEyOtAQSJBSq1DR2nCxunCRmlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVbICCOQTmeaCAMRIC+AVu47xkTBl2Ld16XQNYBQTQBVIOkMHFQJBeMI4tAbSSu2IRDSnhAvFfI97sFRM6RwOMacbjLKckVvgvIJ5EdSU7J648VgXQ7Dmd/hyJ+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actitemdelete16:act act16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBARCZPz+/Mzq9BTC3AQCDAQOHFSStAQSJAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAQwEMhJq704681n+GAISoEwnGg6EAUQrEQsz4ThEkeu77kNIAagMEj0dY7IpHI58UcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actlock16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaVAQCBKSipDQyNMTCxISChFxaLFxSJEQ+FExGHCQiDBwaDGxiLHxyNHRuPIR+TIyGZJSSfFxaRFxWJGRiLJyaXNzWpNTOnMzGnLy2hJSKTGReLKyqjPTu1NzarMS+jLSyfKyibJySXIyGVCQeDLSytPT29Ozu7OTi5NTS1KyurJSSjGxqVFxaXLS2tKSebOzuzLSufJSOXExGLGRiTExONAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaTQIBwGCgGhkhkQDBoEpLKQoBACAyOUID1qTVwoQGvMPxNFgVjAxp6QCQUicSCwVgkG44HJCKRRCYUCAxIFRYXhxgZGhYbHINEHR4fGCAhIiMkFSVKJicoKSoFKwMsLZtDLison6GjLA92qCueoAUvpC2xQhWqrLYDErmEMDEXlDIwMxAHukI0NS01EzY2NAmPAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actredo16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBxOHBxSHBRGHKzCtNzu3MTSzBQ2FLzSxIzCjCSKFCyeHDzCLAxGHAwuFDSCNBxKLES+NHSmfBQ6FBxWJAQaDAQWFAw+HDSyLJzOnISyjMTexAQOBAwmDAw+FMzizAQODDymNKzWrAQKDAwaDEy6TFTGTFSyXDyKTAQCBAwiFBQyHAwSFAwmHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ2QIBwSCwaj0hAICBICgcDQsEgaB4PiIRiW0AEiE3sdsFgcK2CBsCheEAcjgYjoigwJRM2pUK0XDAKGRobDRwKHUcegAsfExUdIEcVCgshImojfEUkCiUmJygHACkqHEQpqKkpogAgK5FOQywtprFDKRwptrZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actreload16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCRaJBxWJBxOHBRGBCxeLLTatCSKFCymJBQ6BAwmBNzu3AQCBAQOBCRSJKzWrGy+ZDy+NBxSHFSmTBxWHLTWtCyaHCSSFCx6PETKNBQ+FBwaHCRKJMTixLy6vExOTKyqrFxaXDQyNDw+PBQSFHx6fCwuLJyenDQ2NISChLSytJSSlFxeXAwODCQmJBweHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaBQIBQGBAMBALCcCksGA4IQkJBUDIDC6gVwGhshY5HlMn9DiCRL1MyYE8iiapaSKlALBdMRiPckDkdeXt9HgxkGhWDXB4fH4ZMGnxcICEiI45kQiQkDCUmJZskmUIiJyiPQgyoQwwpH35LqqgMKiEjq5obqh8rLCMtowAkLqovuH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actrun16:act act16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/ISChKSipMTCxLS2tLy+vMzOzMTGxNTS1AAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARlEMgJQqDYyiDGrR8oWJxnCcQXDMU4GEYqFN4UEHB+FEhtv7EBIYEohkjBkwJBqggEMB+ncHhaBsDUZmbAXq67EecQ02x2CMWzkAs504gCO3qcDZjkl11FMJVIN0cqHSpuGYYSfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-actstop16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAASC/Gw6NGQuLHQ6NGQmJFweHFQaFPTm5PTa3PTW1Oy+vOS6tNSinKReVDQWFPz+/Nx6fNyCfNyGhNR+dMxybMRiXLxGRIwWFNx2dNx+fNx2bMxuZLQWFBwWFPTu7Pzy9NRqZNRuZMRSVLwmJGwWFNR2dMQiHPTKxMxmXMQyLMxmZNx6dMxiXMRSRMRaVKxybMxaVEQWFMQuJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaaQIAQEBAMCAWDYcgkHhAJxYLRcDQBggckIplQKpaLdRh4YDIaSWa94Vw6woAHgv6AMKGPaMQhwQMJJRkfhHmEJhdvRCcgGSCEkCgpbnAECiorGYYfLCItlAAFCygQj5AfbYlwBQwVE5AukG6KBi8tMC0fLi0pHxyzcAAxFxwmMny/wEwOxMm/qlcdJCSJ1H5XQh3a28HY3kx+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actundo16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBxSHBxOHMTSzNzu3KzCtBRGHCSKFIzCjLzSxBQ2FAxGHDzCLCyeHBQ+FHSmfAwuFBxKLDSCNMzizISyjJzOnDSyLAw+FAQSDAQeDBxWJAwmDAQOBKzWrDymNAQaDAQODAwaDDyKTFSyXFTGTEy6TAQCBAQKDAwiFBQyHAwSFAwmHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ1QIBwSCwaj0hiQCBICpcDQsFgGAaIguhhi0gohIsrQEDYMhiNrRfgeAQC5fMCAolIDhD2hFI5WC4YRBkaBxsOE2l/RxsHHA4dHmkfRyAbIQ4iIyQlB5NFGCAACiakpSZEJyinTgAcKSesACorgU4mJ6uxR35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actunlock16:act act16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaVAQCBKSipDQyNMTCxISChFxaLFxSJExGHEQ+FCQiDBwaDBweDGxiLHxyNHRuPIR+RIyGZJSSfFxaRGxmLJyaXNzWpNTOnMzGnMS+jJSKTGReLKyqjPTu1NzarLSufKyibJySXIyGVGxiNFxaXLSytPT29Ozu7OTi5NTS1KyurGxqVCQeDJSSjLS2tNTW1KSmpGRiLKSebOzuzJSOXExONExGLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaVQIBwOAwYA8SkMCAYOAnKYiFAIAQGyOgVCggYuEovVxztMpdnwAGRSCgUCwOjIeQ6HpCIZDKRUNYMRBUWF4UYGRoWGxyBRR0eHxgaICEiIyR0QyUmJygpKgUrAxMsLUQlKyieoKIuEAunK52fBS8DLiywQySpnjC1Mbi6QjIzNBeSIBY1EQfDQgosLAEUNjY3Co1DfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-appbook16:app app16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBDyKhDSChGSinFSWlEySjCx+fHSqrGSipESOjCR6dKTGxISytIy6vFSalBxydAQeHHyurAxubARmZCR+fBx2dDyKjPz+/MzKzLTS1IyOjAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVkICCOZGmKQXCWqTCoa0oUxnDAZIrsSaEMCxwgwGggHI3E47eA4AKRogQxcy0mFFhgEW3MCoOKBZsdUrhFxSUMyT7P3bAlhcnk4BoHvb4RBuABGHwpJn+BGX1CLAGJKzmKjpF+IQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-appbookopen16:app app16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBExCNGSenHRmVCwqJPTq1GxeTHRqXPz+/DwyJPTq3Ny+lOzexPzy5HRuVFSWlNzClPTexIR2ZOzevPz29AxqbPz6/IR+ZDyKjPTy5IyCZPz27ESOjJySfDSGhPTm1PTizJSKdDSChNzWxMS2nIR6ZKyijNzOrOzWtIx+bLSifNTGrMy6lIx+ZCRWRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaeQEAAQCwWBYJiYEAoGAFIw0E5QCScAIVikUgQqNargtFwdB9KSDhxiEjMiUlgHlB3E48IpdKdLCxzEAQJFxUTblwJGH9zGQgVGhUbbhxdG4wBHQQaCwaTb10emB8EBiAhInp8CSKYIw8kDRSfDiUmJ4xCIxMoKSoRJRMrJyy5uhMtLisTLCQkC8bHGBMj1daARgEjLyN03kPZc09FfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-appboxes16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMT+xAT+BASCBATCBMT+/AT+/ASChATCxPz+xPz+BISCBMTCBAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEEgZwrwYBCFqvhs3DNYXjChRlWBRjIRqGN4UuEUczMZxsDeXykdEsDQVVSLhQxhBCkVlmXA+KVHFYhFYOoHbMGN6pTQaW8YYiQmcG+q16a0+Zipw+4e9B/gjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-appbox16:app app16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBPz+xISCBMTCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANECKoR6ys2IVqokF08yMTA1gwkYX5WQK5ma4VceTYPxXnBWdtY6+0834/Bowgzm6APWRQcH4TiMhPK2WYRiZWW7XK7/gQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-appbrowser16:app app16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxONCROfCRKfKx6LNy+bNTOpGSS1DRupAwyXBRSnPTSjPTqvOzqzMzSvHSSlKy6ZDxutAxCpBQ2XBxepLTKvPzqzPzy5OTShLS2dLSqRFR2jBRerBQ+jOTixOzetNS2XHx6XDR2tCRexBwyTDyKzOTavPzq1OzKdCx23BRKtCQ6VCQmHFSa7IyirOzSnGSGpIR+bFSO1DyK7DR+5CRixBw2VDQuHFye7IS27NzGXISuhEyS5DR25BRWxBQ+lBQyXCQqPCxSfGyu7GyerKy2ZFR+rERqfCRmxBROtBQ+fBwuTBwmNDSW9JyabLyqRIx+TExSXBQ6bAQCBBQ6ZBxapDR+zBxq3LyaLJySRHxqPGxeNBxGbCRmrHRyRERONDRKNDQ2JCQuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAeygACCg4SFhgABAQIDh4MBBAUGBwgDCYcKCwwNDg8QERIThRQVFhcNGBkaGxwdoYMDHhcXHxggISIjEiSvJSYXJwsoISkpIyorLIIDLS4WLzAxMjM0NSo2N8o4OS46OzwzPSk+P0BBgkI8Q0NERUZHCEhJSktMgwk4Qy1NTk9QUVJLphCiUsWKlStYsmjZQiJgIS4KuijQ4iXAFxYCDVFJwGUFmDBhMjYSw0KMyEYoBfkJBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-appcalc16:app app16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBISChPz+/AQCBCH5BAEAAAAALAAAAAAQABAAAAI4hI9pwe0Ogpi00hHF2LzzzFlTsIHD45SSx6oCeW4wjK2tl83y7t64pIsJaxrfh2bEAJIlhRPhLwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-appclock16:app app16 16:photo:16 16:R0lGODlhEAAQAIIAALy+vAQCBPwCBMQCBIQCBISChPz+/MTCxCH5BAAAAAAALAAAAAAQABAAAANbCLHcrSLKOZcYmDSCsR1aUABAsXDDJwJGa5SBFwgaWxbCG3CWaBwG3C8Y67FawpYiNQscg65fsVkYuoAmJs1pBR522lQB6ILJLqHRwQQOZzYdZnw+dzruDIA/AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-appdate16:app app16 16:photo:16 16:R0lGODlhEAAQAIQAAASC/AQCBPzerPyqXMRaBIQCBISChPz+/KSipMTCxPz+BMTCBPwCBPz+xPzCxMQCBISCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVxICCOQGCeJjkGwkC8RFEEavkax2G8dB0QuRyhhzoBg8MSYsncJXKJZIDZHCoWP1ogGIwGrtnSgUFmHLyNRHhrdpjRamnO/SYkromHdnxwnwkKVxByZW8DgQsQM2JcfwZXO0MBCZSVBgMuLzJaRZ0pfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-apppencil16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAASC/IQCBMQCBPzCxAQCBPz+/MTCxISChDQyNKSipEQCBAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARDEMhJZRBD1H2z3lMnjKCFjUJQimOgcmcbELCXzjXq0hV785WCQYcDFQjDXeloMByKG6YTAdwIDAlqSZJSVFeKLcUfAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-appsheet16:app app16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBAT+/Pz+/KSipPz+BAAAAAAAACH5BAEAAAAALAAAAAAQABAAAANFCBDc7iqIKUW98WkWpx1DAIphR41ouWya+YVpoBAaCKtMoRfsyue8WGC3YxBii5+RtiEWmASFdDVs6GRTKfCa7UK6AH8CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-apptool16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBISChGRmZMTCxKSipLS2tHx6fPz+/OTm5FxaXOzu7DQyNMzOzAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAReEMhAq7wYBDECKVSGBcbRfcEYauSZXgFCrEEXgDCSeIEyzKSXZoBYVCoJVIqBGByKu0Cy8QHxmgNngWCkGgqsGWFseu6oMApoXHAWhWnKrv0UqeYDe0YO10/6fhJ+EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-apptools16:app app16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBExKTERCRAQCBOzu7Nze3MzKzLy+vCxqZBQ2NJyanKyqrGRiZDRydKza3FRWVPT29LSytDw6PMTm5EySjCxaXGRaJFSanCRSVGxqbPTmvMSqVJTW1GSurHS6vOzq7KSipISChFRKHJSGNPz23GxKFBQ6PKyurCwqLMyufJx2RAQGBJSWlEwyDIRiLNy+lLSKVDwmDJRuNOTOrLyabGRCFDx2dKSCVOzWtHzCxOTGnNSyhAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAahQIBwCAgIBAOiUiggFAyHASKxDAwUC8Zg0HAglA9IZPGQABoTSqJCFTIOEIsFgHBcEhhHUpKJFCwaGxYYHB0VEx4IEh8gIQwiIyQbJRMcHokmEicfDygAkCkqJQgIGG0rLElCLS4vMCWqQwMCQg0UMTIzNDVLQjaIGDE3ODQlS785CEkxKjowvEOHybG4O6JDCdNKuDUxRAmxRDHeveUAfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-appuser16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/MTCxISChMT+/ATCxASChFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEMg5gw00yyDGIAR1YUDggeFWFIZhnSBZrsZxdIOFEGTA2oeBAHeyuGwvzxBlYdUOLROMFzDQntJPrNoqAKUBaqnV+k57ZORruykHDj2LqIzUVKp1u0iuB/gjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-appusers16:app app16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTCxISChAT+BMRaBPyqXARCBPz+/FxaXAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARLEIRJa5Ui673nsGAgeKE1Bl9AUEXbiqTlFlZaGUZoszm4BzhDAVf5BYbAXI+TAR6CS2ZGSZSEiIIqYIsSIEaJ7GRrlY7J1lKA7I8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-appwp16:app app16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBKSinJyOfPz27Pzy7AwKDExOTJyWlERCRKSelPz69LyyrKymnPz+/MS2fDQyJAQCBOTazLSiXOzivMS2jKSSVOzmxPz25NzSpPTu5KyebOzixNTGjOTWpMSydMSybCwqFGReVKyaXNzSnGxeNJSCVMS2nPz23MSuZIR+bJyShLyqnOTOtGxiXIR6XOTSvIx6RMSubIyCdKSalMS6pOTWxMzKvKSabJyKTOzezHxuPGRmZKyurMTCvPTq3AAAACH5BAEAAAAALAAAAAAQABAAAAajQIBwCAgIiEhiYEA4FgwHRDKhIBAWz4OhgGQ0FAPHA7qFEBONb0Qy0ULeQ2+aUrFcMI+3GYBOZzQbHB0eHyAhIQByDREiEwMjFRIkJQImAgJ+jScjHigkKSorLC0AKg2NFSMoki4qCy+IQgITKDAxkjIzNDWkQxQoJaskMgk2Eb1DNzgoOCoHDDY5yEIwJToAOzw9ET7TQiREAhkZ3kmy5QB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-cal1day16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANOCLrMEUDIOUS9AFLLhx8LIRZjKYZmMRCkaChFLHty/AIiS3y6q+QtT49wq8VotRtQJGwRf6Zmrlj7DJLQXsupTJmeEIN4TB5nII20wp8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-cal5days16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANMCLrMEUDIOUS9AFLLhx8LIRZjKYbj55GioRRwoQ5x4QIiIdMmcec7jy53q81qP9OO5VMAj8RXTFWzOZW95HDLdEEM4LA4nIE0zgp/AgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-cal7days16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANPCLrMEUDIOUS9AFLLhx8LIRZjKYbj55GioRRwoQ5x4QIiwcp0fucsj873qvGMv5Jw2FIACUsW4WakGW1O046I05qmGYBhTC6TM5CGWuFPAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-calappointment16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBAQC/AQCjPz+/MTCxPz+BISCBISChKSipAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARbEMhJaQhA6D1E/wDGeeRgDhOhFoTBEi+REgdrIHScSEVvAD9Xr7cDqGSGpFEnQSqTv2NxCFQOiU1VEAiTZmstHFg1vQKuw+LxxfYaV/AuOQRI2O/4ewhT6Uv8EQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-calbell16:cal cal16 16:photo:16 16:R0lGODlhDwAOAIIAAPwCBISCBPz+BIQCBMTCxISChPz+/AQCBCH5BAEAAAAALAAAAAAPAA4AAAM+CLrR+zCIAWsgLVRGRBhOVQiG94WPVAbHaZHYAWqRYLbge88RsbInGuBCEhRYrZYm4xk4nYdoKzKIbiKHawIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-callist16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBAQC/AQCjPz+/KSipPzerMRaBEQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARDEMhJaQhA6D1E/wDGeeRgDhOhruyatjBRSIRxxOsMEAdC0BUZDcfSEYvDo3Bn++2Cxt7RqFxWhZiCdsvdhjCVsMQfAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-calmonth16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBAQC/AQCjPz+/MTCxKSipAAAACH5BAEAAAEALAAAAAAQABAAAANSCLrMEUDIOUS9AFLLhx8LIRZjKYbiRxLFIBpK0Q6z7MkwkJIe8b0KEeuWchFysuStVsjtfMbeMQitWpG25YfmNK1WU53XNIUYzug0OgNpuBX+BAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-caltoday16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBPwCBAQC/AQCjPz+/MTCxKSipPyCBMRaBPyqXAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARTEMhJaQhA6D1E/wDGeeRgDhOhFmurpi5LyIQhFfiBIAfuFzaAioBIJBCummRYPCaDPh3vhwsOZdihNfa8Ub/AJXemFZPPNBvGwG672yFMZS7xRwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-caltodo16:cal cal16 16:photo:16 16:R0lGODlhEAAQAIMAAAQCBAT+BAQC/AQCjPz+/MTCxPzCxKSipPwCBMQCBIQCBAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAARaEMhJaQhA6D1E/wDGeeRgDhOhFmurpi5LyMYhFXiuFwZiA6qZYbbqJX5BIw2RAPxwAAWCyWMCCsiXFGEEErKz6LQZfOqiTR1YJiGq1rFyyHmo2+/1EKbCl/gjACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-connecting16:connect connect16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBPz+BMTCBISCBAQCBPz+/MTCxMTGxISChFxaXMzGzKSipAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEMhJZbihUiz60FPnfaA0iBpBVGdHEYWxToEoSHBRHHM9AgSEQRcj+AYkYAJxIPKQFUJiOdTJQFIDU6dYzKKFhTCM+E5g4mXaDAyrlogEG+DGTecA7wsP8EcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-connectno16:connect connect16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBPz+BMTCBAQCBERCBPz+/MTCxMTGxISChFxaXMzGzKSipAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARPEMhJq704axBEHoPUEdhQGMNYFuwxkKInDYjBniEnwMCQIIebSzXx/WwsFK+YMABZikWuYlrUCtZpEYv4WRPaHhb064YB41kCfJFSQBh/BAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-connectyes16:connect connect16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/KSipDQyNMTCxMTGxISChFxaXMzGzAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARaEMhJZxCjgsAtDtUlCOA1gJQ4kl/IDatAoF7xxkS6GgEBr6jAobCyBX42SQBxMOx6A8MhiGASR8YDgrYsNEeJ0zaEGZY7uoH2oB6nOUwtbdLaVOeTUwo/8UcAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-devcdmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXISChNTS1MzKzMTGxMy+vNSytAQCBOzq7OTi5Nza3Oy6vPy2tOTStPz6/Ozu7Nze3MTKxOS2tOzOvNTqvLT2tDw+BPTy9MzOzLS2tPy+tLz+tLz2tLSynLzqvLzavLTOtNTW1KSipPz+/LzKvMTCxDQyNASCBARCBDTSJIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAa0QIBQGBAYA8Ok0DggFAwHBEIJECQUi8GT0XBMh9YHJDKQTBqUiuUCVmAeiYzmsKlwOt/AAKFIFAIIFx4WHyAhUwIDIgsZFyMkFxchJSYmiBkSBBoIJJwIGgOhiCYFJSEnFyQjFwNZewABISAfFiYnCAEmCREIrwAIFhwVGwcaBAkPGApsQsAVFA0GBQMRbxBTKM0ODQwTEq192ClDgROkBHvYKuNJUu5CKCorX1RDKCkpUn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-devcdunmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXISChNTS1MzKzMTGxMy+vNSytAQCBOzq7OTi5Nza3Oy6vPy2tOTStPz6/Ozu7Nze3MTKxOS2tNzmvLT2tDw+BPTy9MzOzLS2tPy+tLz+tLz2tLSynLzqvLzavLTOtNTW1KSipPz+/MTCxLy6vDQyNOTm5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAapQIBQGBAYA8Ok0DggFAwHBEIJECQUi8GT0XBMh9YHJDKQTLqUigWsuDwSmMxBQ9lwvoEBQpEoBBAWHRseHyBTAgMhCxgWIiMWFiASJCSHEgQSGQgjmwglGKCHBQUSICYWIyIWAwshIVMBIB8eFSQmCAEFCREIekIIFRsUGgcZEgkPFydrvxUUDg0GBSEREGJfv9AMEySsJxDYQ4DcEhh64UpS6lTs7QB+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-devdiskmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBDQyNIRuVKyCXMSKROzSrOzKpOTGnLSafLySZKxuLMSOVPTWvPzixLSehNyibOzOrGxaVJx+XOzGnFw2FJRuPKx+TPTSrHRWPKyKZPTOpHxOJKyKXFw+HKSipISChMTCxFxaXIRiPNSWXExOTOS2hLR+PLRyLPTWtMyOTASCBARCBPz+/DTSJIyKjIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaTQIBwCAgYA8SkMCAYDARI5ZJQMBwQiWgyoFgwrA3HQ7scQAqFAcEQOUi0zAkFUSFYLghMBloUCDQNGxwdHhwHekcfICEhICIfIxkLJBABJUYCICABIhAOBiYnKJaXmH4CGSkYCCqkSAEfTKenrkOwsrQll0IrS7G5uwArLLaxLbXCLsTFLyDBKy4wZEVHvCwsRn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-devdiskunmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBDQyNIRuVKyCXMSKRPTWtOzKpOTGnLSafLySZKxuLMSOVOzOrPzm1LSehNyibGxaVJx+XOzGnFw2FJRuPKx+TPTSrHRWPKyKZPTWvHxOJKyKXFw+HPTOpKSipISChMTCxFxaXIRiPHxaNLRyLNSWXExOTPzixOS2hLR+PMyOTPz+/IyKjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaIQIBwCAgYA8SkMCAYDARI5ZJQMBwQiWgyoFgwGgiD46FdDiCFwoDQAEe0TMkEQSFULIcLBloUCDIaDRscHRsNHhhHHyAhISAiHyMkJSYQASdGAiAgASIQKA0pKguXmJl+AiQGFwgrpUgBH0yoqK9DsbO1J5hbsrq8SrgstlJFHy0gwMVFR1J+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-devfloppymount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBMTCxARmZPz+/FSWlLSytKSipERCRIyOjISChOTm5HRydNza3GRiZFRSVASCBARCBDTSJIT+bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVrICCOQBCQKBkIw5mqLFG47zoQ+FwbN57TosDhgPD5dMEEIqE04kwlBWKBUEiNVYFpyqAyGEUCgqEtERiNNMLhQKzLQYJg7n7Y4aMAwbCUPvAQeWNgfzQQETAIhSMQEogwgBITQEGGEREmfiEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-devfloppyunmount16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBMTCxARmZPz+/FSWlLSytKSipERCRIyOjISChOTm5HRydNza3GRiZFRSVCH5BAEAAAAALAAAAAAQABAAAARcEMgJQqCYBjFu1hxReN82EOhYGieaklJwHIjrqnGCJLqNWhUFYoFQCG1FgWXIIDIYNQKCoawQGI0swuFAbKsxgmDsfZjBkwDBsNM90Jot9A3DbBD0Dwiur9QnfhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-devnetwork16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBAQCBISChPz+/Nza3ARaZESanCyKlARudARGTLy+vNzq7ARmbMTCxARufAROVMzOzKSipARyfOzq7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVmICAGZFmKQiACweCSBImq41AYB5IodLq2hwWO0ejRWDac48Gb/QKNqNRoqspmrVcAUuIJBANS8sBIFCORUgooPEh4J8B67NgdsVBp9C5XWfl9LRMTCyReX19hARNojWlWLH+AAH4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-devpc16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBISChHx+fPz+/AQCBAQC/AT+/AQCxAQChAT+BLy+vAR+BAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARYEIAgqK1YzsG754QUDERpmkEpkkXrtoK6EcVgHIibhnNx564Yb0TDvQq7FQ34EiqPOhnREqhWSUPsyZSQAbbg7GcMEgwUiYVivTa1R+y4XEGoWO/4AMAfAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-devscanner16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBAQCBPz+/MT+/ASChARCRATCxMTCxFxaXKSipDQyNAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARTEMgJgqWBVivEldkUdKSXhVjZfenommglDERh3Tc4E4ZRHAGgkEPr9X6H5AHBERSMRyWzkug8jQXFEhWoOo8dRYxqLXSmGjIJnVaz29Q3fAP3RwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-devscreen16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXFRSVPz+/PT29OTm5OTi5DQyNDw+PERGRExKTHx+fISChIyKjHRydFxeXDQ2NCQmJBQSFAQCBERCRMTGxHR2dGRiZExOTDw6PCQiJAwODCwuLFRWVOzu7BweHAwKDCwqLHx6fBQWFGxqbGRmZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAanQIBwSCwKAwKkMslEAgSDqDRKqBYKhkNgcDggEorkMrDQchkNhuOhgEQkk0l5S2lUGpYLJqPZTAwMHB0DCmhqAW0Rfh5zAxgOkBcCFAcfIBMECxwBBAEPFw8dChkhcBMDDAcdnQqtFKSWcQMimx4dGRkQBxGxsg6bBQEawx8jl3GnJFoFHRNXVVNRJYIFDAsL1tgiDiQXFx0HABwcXeQH5OjkRutEfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-devspeaker16:dev dev16 16:photo:16 16:R0lGODlhEAAQAIMAAPwCBFxaXAT+/DQyNATCxMTCxPz+/AQCBKSipASChAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAARWEMgJQqCXziDG2JoUEENhZBkmHIWJVptAmqcIW/Js1MiF56TBzkckAAcHoa9nMRKeA4TyJk0knsHhTeK5khBaH2VwLYVh40TJhQ6RzeIQV32Quz8hfwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-editcopy16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIUAAFxaXPwCBNze3GxubERCRPz+/Pz29Pzy5OTe3LS2tAQCBPTq3PTizLyulKyqrOzexLymhLy+vPTy9OzWvLyifMTCxHRydOzSrLyihPz6/OTKpLyabOzu7OTm5MS2nMSqjKSipDQyNJyenLSytOTi5NTS1JyanNTW1JSWlLy6vKyurAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAaUQIBwCAgYj0eAYLkcEJBIZWFaGBie0ICUOnBiowKq4YBIKIbJcGG8YDQUDoHTKGU/HhBFpHrVIiQHbQ8TFAoVBRZeSoEIgxcYhhkSAmZKghcXGht6EhwdDmcRHh4NHxgbmwkcCwIgZwqwsbAhCR0CCiIKWQAOCQkjJAolJrpQShK2wicoxVEJKSMqDiAizLuysiF+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editcut16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIEAAPwCBAQCBPz+/ISChCH5BAEAAAAALAAAAAAQABAAAAIwhI9pwaHrGFRBNDdPlYB3bWHQ1YXPtYln+iCpmqCDp6El7Ylsp6ssR1uYSKuW0V8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-editdelete16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbPT29GxubMzOzDQyNIyKjHRydERCROTi3IyKhPz29Ox6bPzCxPzy7PTm3NS6rIQCBMxCNPTq3PTi1PTezMyynPTm1PTaxOzWvMyulOzGrMymhPTq5OzOtNTKxNTOzNTCtNS+rMSehAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaKQAAgQCwahcihYMkcBAiBpLJApRoOBWgyIKhSEQkFgrBAcr1URiPhKAsDD3QB8RhA3FM0IlLHnyUTVBMSFBUWfl0XGBMTGBcZGodmcQWKjpAbHIgIBY2LHRoempOdjooTGx8giIOPFYofISJ+DyMXI6AfFySyfiUmJSUnKBYcICIpfgELzM3OZX5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-edit16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBFxaVMR+RPzKjNze3AQCBMR6RPzGjPyODPz+/MzOzPyKDPyKBPz29OTWzPyGDPyGBOx6BOza1OR2BKROBNSOXKRKBBwOBOzu7PTWxPzizOySZPyCDFxaXOy2lNRyRMxmJCQOBPTm1OzStPTKrMR+XIRWLFxGNCQSBDQyNIRSNDQuJERGRLyqlNzSvIx6ZKRuVEw6LLSyrLymhKSShBwaFFROTJyWjMS+vNzW1OTazNzKrHRqXOzezOTOpPTq3OzWvOTStLyedMS+rLy2pMSynMSulAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAewgAAAAYSFhoQCA4IBBI2OjgUGBwiLBAmXlpcKkgsMlZcJBA0JDpIPEBGVjwkSBgOnExSfmBIVBxAMExYXswkYGRobHLq8gh2PHhoeHyAWIYKzIiMkJSYnKCnQg5YNHtQqKywtK9qMBC4vMDEBMjIz2dCMDTQ1Njc4OToz5PEEOzw3ZPToMcLHO23HfogQ0QMIkCA+hPBbhAPHECJFjMyYIUQIvEUpUqwQOXKkSEF+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-editpaste16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQiFHRqNIx+LFxSBDw6PKSaRPz+/NTOjKyiZDw+POTe3AQCBIR2HPT23Ly2dIR2FMTCxLS2tCQmJKSipExGLHx+fHR2dJyenJyanJSSlERCRGRmZNTW1ERGRNze3GxubBweHMzOzJSWlIyOjHRydPz29MzKzIyKjPTq3Ly2rLy+vISGhPzy5LymhISChPTizOzWvKyurPTexOzSrDQyNHx6fCwuLGxqbOzKpMSabAQGBMS2nLyulMSidAAAACH5BAEAAAAALAAAAAAQABAAAAa7QIBQGBAMCMMkoMAsGA6IBKFZECoWDEbDgXgYIIRIRDJZMigUMKHCrlgul7KCgcloNJu8fsMpFzoZgRoeHx0fHwsgGyEACiIjIxokhAeVByUmG0snkpIbC5YHF4obBREkJCgon5YmKQsqDAUrqiwsrAcmLSkpLrISLC/CrCYOKTAxvgUywhYvGx+6xzM0vjUSNhdvn7zIMdUMNxw4IByKH8fINDk6DABZWTsbYzw9Li4+7UoAHvD+4X6CAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editshred16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbGxubMzOzPz69DQyNIyKjERCRPz29PT29OTi3IyKhPz27PTu5PTy5Pz6/Pzy7PTq3OzexLyqlPTm1PTizOzavLyqjOzWvOzaxLyifOzizOTOpAQCBOzezAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaEQAAgQCwahcihYMkcBAiBpLJApRoOBWgyIKhWEQkFYYHkeqkMxKFBFpq9jgdkEGlPqwrJhCIY2N8FFRYUFxcYGX9dgRKEGhiHiYEOhBcbGBwdiQEOARcBGwEeAZllAgEUnQEfoQEgmp4hrCKtrwEYsrRlTiMBJAG8syN/IyMAxMXHSH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-edittrash16:edit edit16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBAQCBKSipFxaXPz+/MTCxISChDQyNCH5BAEAAAAALAAAAAAQABAAAANQCKrRsZA5EYZ7K5BdugkdlQVCsRHdoGLMRwqw8UWvIKvGwTICQdmGgY7W+92GEJKPdNwBlMYgMlNkSp3QgOxKXAKFWE0UHHlObI3yyFH2JwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-fileclose16:file file16 16:photo:16 16:R0lGODlhEAAQAIQAAPwCBCQiJBwaHAQCBDQyNDw6PFxaXFRSVERGRCwqLAwODGRiZHx6fPz+/GxqbAwKDCQmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAVaICCOZGmeqBgEwjCkRGEcSKK4JrEcBrMgAdeLVDg0GguGsYEbBQyGYyN6FDoPDIf0+LCKBIgetQERDgGDBGIpNY8GioAU0m6KXFw883w3+/l9f4AkfimGIn4hACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-filedocument16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJSWjPz+/Ozq7GxqbJyanPT29HRydMzOzDQyNIyKjERCROTi3Pz69PTy7Pzy7PTu5Ozm3LyqlJyWlJSSjJSOhOzi1LyulPz27PTq3PTm1OzezLyqjIyKhJSKfOzaxPz29OzizLyidIyGdIyCdOTOpLymhOzavOTStMTCtMS+rMS6pMSynMSulLyedAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaQQIAQECgajcNkQMBkDgKEQFK4LFgLhkMBIVUKroWEYlEgMLxbBKLQUBwc52HgAQ4LBo049atWQyIPA3pEdFcQEhMUFYNVagQWFxgZGoxfYRsTHB0eH5UJCJAYICEinUoPIxIcHCQkIiIllQYEGCEhJicoKYwPmiQeKisrKLFKLCwtLi8wHyUlMYwM0tPUDH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-filefind16:file file16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBCQmJDw+PBQSFAQCBMza3NTm5MTW1HyChOT29Ozq7MTq7Kze5Kzm7Oz6/NTy9Iza5GzGzKzS1Nzy9Nz29Kzq9HTGzHTK1Lza3AwKDLzu9JTi7HTW5GTCzITO1Mzq7Hza5FTK1ESyvHzKzKzW3DQyNDyqtDw6PIzW5HzGzAT+/Dw+RKyurNTOzMTGxMS+tJSGdATCxHRydLSqpLymnLSijBweHERCRNze3Pz69PTy9Oze1OTSxOTGrMSqlLy+vPTu5OzSvMymjNTGvNS+tMy2pMyunMSefAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAe4gACCAAECA4OIiAIEBQYHBAKJgwIICQoLDA0IkZIECQ4PCxARCwSSAxITFA8VEBYXGBmJAQYLGhUbHB0eH7KIGRIMEBAgISIjJKaIJQQLFxERIialkieUGigpKRoIBCqJKyyLBwvJAioEyoICLS4v6QQwMQQyLuqLli8zNDU2BCf1lN3AkUPHDh49fAQAAEnGD1MCCALZEaSHkIUMBQS8wWMIkSJGhBzBmFEGgRsBUqpMiSgdAD+BAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-filenew16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFxaXNze3Ly2rJyanPz+/Ozq7GxqbPz6/GxubNTKxDQyNIyKhHRydERCROTi3PT29Pz29Pzy7PTq3My2pPzu5PTi1NS+rPTq5PTezMyynPTm1Pz69OzWvMyqjPTu5PTm3OzOtOzGrMSehNTCtNS+tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ/QAAgQCwWhUhhQMBkDgKEQFIpKFgLhgMiOl1eC4iEYrtIer+MxsFRRgYe3wLkMWC0qXE5/T6sfiMSExR8Z1YRFRMWF4RwYIcYFhkahH6AGBuRk2YCCBwSFZgdHR6UgB8gkR0hpJsSGCAZoiEiI4QKtyQlFBQeHrVmC8HCw21+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-fileopen16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBOSmZPzSnPzChPzGhPyuZEwyHExOTFROTFxaVFRSTMSGTPT29Ozu7Nze3NTS1MzKzMTGxLy6vLS2tLSytDQyNOTm5OTi5Ly+vKyqrKSmpIyOjLR+RNTW1MzOzJyenGxqZBweHKSinJSWlExKTMTCxKyurGxubBQSFAwKDJyanERCRERGRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaRQIBwGCgGhkhkEWA8HpNPojFJFU6ryitTiw0IBgRBkxsYFAiGtDodDZwPCERCEV8sEk0CI9FoOB4BEBESExQVFgEEBw8PFxcYEBIZGhscCEwdCxAPGA8eHxkUGyAhIkwHEREQqxEZExUjJCVWCBAZJhEmGRUnoygpQioZGxsnxsQrHByzQiJxz3EsLSwWpkJ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-fileprint16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBFRKNAQCBPz+/MTCxExKLPTq5Pz29Pz6/OzezPT29PTu7PTy7NzClOzm1PTu5LSabJyanPTm3FxaXOzCjOTKrOzi1OzaxOTSvJyenGRmZLyyTKSipDQyNERCROTi5Hx+fMzKzJSSlIyOjISChLS2tAT+BDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaYQIBwKAwIBMTkMDAYEApIpVBgOCAOg4RRGlAoEAuGIdGITgWOq4LxcCQgZkEkIHksHgYJOR6ZQCgVFhYJFxgTBVMZihoCfxUYDWUbUBGKGREcjBoQEB2TAB4CAx+Vl5WMhyACHiEhH6IfIiMktCQgE0cZJQStr6O2t6EARxO6vK6iEx4dZsMCxbsmBB4nzUTEutVSSUdmfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-filesave16:file file16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBFRSVMTCxKyurPz+/JSWlFRWVJyenKSipJSSlOzu7ISChISGhIyOjHR2dJyanIyKjHx6fMzOzGRiZAQGBFxeXGRmZHRydGxqbAwODOTm5ExOTERGRExKTHx+fGxubNza3Dw+PDQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaAQIAQECgOj0jBgFAoBpBHpaFAbRqRh0F1a30ClAhuNZHwZhViqgFhJizSjIZXQCAoHOKHYw5xRBiAElQTFAoVQgINFBYXGBkZFxYHGRqIDBQbmRwdHgKeH2YgHpmkIR0HAhFeTqSZIhwCFIdIrBsjAgcPXlBERZ4Gu7xCRZVDfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-folder16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBwWHMzKzOzq7ERCRExGTCwqLARqnAQ+ZHR2dKyqrNTOzHx2fCQiJMTi9NTu9HzC3AxmnAQ+XPTm7Dy67DymzITC3IzG5AxypHRydKymrMzOzOzu7BweHByy9AyGtFyy1IzG3NTu/ARupFRSVByazBR6rAyGvFyuzJTK3MTm9BR+tAxWhHS61MTi7Pz+/IymvCxulBRelAx2rHS63Pz6/PTy9PTu9Nza3ISitBRupFSixNTS1CxqnDQyNMzGzOTi5MTCxMTGxGxubGxqbLy2vLSutGRiZLy6vLSytKyurDQuNFxaXKSipDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCAAECg4eIAAMEBQYHCImDBgkKCwwNBQIBBw4Bhw8QERITFJYEFQUFnoIPFhcYoRkaFBscHR4Ggh8gIRciEiMQJBkltCa6JyUoKSkXKhIrLCQYuQAPLS4TEyUhKb0qLzDVAjEFMjMuNBMoNcw21QY3ODkFOjs82RM1PfDzFRU3fOggcM7Fj2pAgggRokOHDx9DhhAZUqQaISBGhjwMEvEIkiIHEgUAkgSJkiNLmFSMJChAEydPGBSBwvJQgAc0/QQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-folderhtml16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBERGRBQWFMzKzOzq7CwqLDw6NARqnAQ+XHR2dKyqrOTm5ExKTERCRHRydMTi7NTu9HS+1KSmpBweHDy67DyixHS61ITG3AxypByu7DxinBw+ZERmdIySjITC3ARypExOTDRurIR2RPTSdJyulEyGvBw+bFSyzJTK3LzKvPzivOTixNTChLSybGyCfCRSnBQqRASGtFyuzDw+PCRShPzy5OzerOTShKyaTEx6pCxerGRufBR+rOTezPTShNy6bER+1BxCfBQuRAxelFSixBw2VISq3GySrPTWlHyanIyitFSO3IymtCRujAxWhCRqlCQ6XGyWvNS2bFyGvDxuvCRSpLy+vMS+vGxqbFyO1GSi3EyO1FRaVCQuPLS2tDxyzKyWNFxaNCQyPGxubCxajERSVExKNJyenAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfZgACCAAECg4eIAAMEBQICBomDBwgJCgsEDA0BDg8BhwYQERKUDxOYDAyeghQVFhehGBmVlwwOqxobHB0eH6EfIAkPIYIiIyQlJhsnKBcpvrYiKissLS4vMDEyFjOvNAA1LDY3ODk6Oyc8PTIyFzQ1Jj42P0A6QTtCQ0REIEUORkdIkihZwsSekBhNnDyBciCKiSNSplDRUcWKkRhXCGDJYgiGli1cpuTocsILjytfFmRpACAGRTBhRogZgzHlAjKGWnIoY+bMgRgBDHRBo/LAIZoxuhwKatRPIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-folderlocked16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQSFMzKzOTm5CwuLERCRARqnAQ+XHR2dKSmpOzm5GxqbCQiJMTi7NTu9HS+1HRydOTm1Ozq7Dy67DyixHS61ITC3AxypERGRBweHByu7ASGtFyy1DSOtDRmfExOTBSazBR+rCwqLAxWhAxelByGtDSaxAwODHy+1Dw+PPT29IyqvCxujOzu7NTW1Nza3ExGJJyebKyqfMTCpFRSPOTi5DQqHOTezDw2NMTGxKyqhMTGrGxmXDQ2NMTCxMTGpHx6bHx2bBQWFIyOXDQuDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfDgACCAAECg4eIAAMEBQICBomDBwgJCgsEDAKFDQGHDg8QEZQSlxMUDJ2CDhUWF6AYGZWXFBqCGxwdFh4XGK8fIAohtiIIIx25EZwBDREHgiQjJSYmGScoKSoRKQ8rggIsDC0uJS4oGygoAyjdAAcsLxQUMDEyMzQ1EzapBy8MDDc36tFwgONFjlQ6dgCEEZBHDx8+ctRIRehHAyAwZASZIGRIEBoUBwUwIGMCiwFEaBQJichIjo9FZLBsacRIAB0A/AQCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-foldernew16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAQCBPz+hPz+BOSmZPzSnPzChFxaXMTCBPyuZPz+xPzGhEwyHExOTPz+/MSGTFROTPT29OTm5KyurDQyNNza3Ozq5Nze3LR+RLy+vJyenMzKzNTS1Ly6vJSWlFRSTMzOzMTGxLS2tKSmpGxubBQSFAwKDKSinJyanIyOjCQiJERCRERGRBweHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaNQIBwSCwaj8ikcokMCIqBaEDoBAQG1meAUDAQpIcBQoy1dg2JdBqhECgQ1IWB0WgcBIOBwIHXBwwPEBEREhIBbG4IExR/DBUVFhIXV2NjDVYYDY8SFU4ZVxpVAQwbGxynGxkdTh6XVh8gGSGzGSITIxokJUImGSMTwLcnKCkprgAqDSt1zCssKxQtQ35BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-folderopen16:folder folder16 16:photo:16 16:R0lGODlhEAAQAIYAAPwCBAQCBExKTBQWFOzi1Ozq7ERCRCwqLPz+/PT29Ozu7OTm5FRSVHRydIR+fISCfMTCvAQ6XARqnJSKfIx6XPz6/MzKxJTa9Mzq9JzO5PTy7OzizJSOhIyCdOTi5Dy65FTC7HS2zMzm7OTSvNTCnIRyVNza3Dw+PASq5BSGrFyqzMyyjMzOzAR+zBRejBxqnBx+rHRmTPTy9IyqvDRylFxaXNze3DRujAQ2VLSyrDQ2NNTW1NTS1AQ6VJyenGxqbMTGxLy6vGRiZKyurKyqrKSmpDw6PDw6NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAfCgACCAAECg4eIAAMEBQYCB4mHAQgJCgsLDAEGDQGIkw4PBQkJBYwQnRESEREIoRMUE6IVChYGERcYGaoRGhsbHBQdHgu2HyAhGSK6qxsjJCUmJwARKCkpKsjKqislLNIRLS4vLykw2MkRMRAGhDIJMzTiLzDXETUQ0gAGCgU2HjM35N3AkYMdAB0EbCjcwcPCDBguevjIR0jHDwgWLACBECRIBB8GJekQMiRIjhxEIlBMFOBADR9FIhiJ5OnAEQB+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mailforward16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRydHxubHxmZGxiXHRmZFxOTFxGPFxKTPwCBLymlMy+pOze3PTq3PTu5Pzy7LSmnOTaxOzm5LyqlNzOtPz69Pz27MzCtLyqrPT27IRubPzuzNTGvNTCxLSelPz25Bw+ZFxKPPzy1Pz65LyupBxKdCxWfPTm1Pz23LyinBxGbGzO5DRafBxWfBxajCymxHTS5BxSdBxKbFTK3EzG1CSGvCyKvCSSxCSavGTO5GRaVPzqzFzK5EzG3BSCtAwiPGxaVPTivPzy3NzKpBxObCRefBxqlPTmzJR2bKyahAwyRPzmvOTOpKyObNS+nPz21AQOFKyOfPzuxAQCBGRORLSadPzyzLymjMy2lOzetDwuJFRCPEw6NEQ6LEQyLEQ6NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAAAQABAAAAfhgAABAgIDBAQFBgcIBwmOCQIKCwwNDg8OEBESjY8CDBMUFRYVFxgZDJyOGhsPChwVHR4fFSAhjwkaIiMOJBQQDRUVJSa3GicoHw4pEA8SGSorLI8tLtQu19gqLzDECTEyMzQ14zY1Njc3ODkqCTo7MjIxNCs5PD03PjctPwlAQUIihhBpQbCIihtG+CUocASFkAhIkogQ8kFJwkcFlogIkoRJEydPnkBR6GiAxiQLgiiIIkXElFQJqESoMsRKkAhXqkhhApNKFSxZggTJ4nHIEJhaDhzYwoVLFy1avHyB6ScQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-mailget16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAxKdBRSfCyGvFSm1BxKfCSWzCyWzBRCXCRKfBwuRAQGDDw6PHy23Cym1CSSxByCxBxunBQSFKyurMTCxExihNza3NTW1JSSlMzKzFxaXLS2tNze3KSipCQmJGxmbNTS1KSepLy2vISGhJSWlHx+fERGRPz6/IyKjDw+POzq7JyenMzOzKSmpCwuLDQyNIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaeQIBwGBAIAsOkUjAgFJRQQMHgjC4PBIEVgAh4D4aEYrGAMhINxwPyiCgYSsmEUmk82grLRZJkYCgXaAEKFxYZcEISGhsZFxwFeY0WHR5CDB8dGCAXG5shGxQicBIMpSMUGxgTGSQlpQwSJicnEwwdI7gdKAwTsykpKiobr8QMKxeHDBcsGRvOzxsT0i0uL9HSHdkT2ZkoMJXF4a8AfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mail16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBGxaVOTe1Oze3OTWxOTWvNzStNzKpEQ6LOTezPz+/Pzy7Pz69Pz27Pz25Pz21PzuzPzuxEQyLLyinLSmnPz67Pz23LSafKyObDwuJMzCtLSelPzy1My6nLymjNTCxLyqnPzq1LyihKyOfOzavOzetEQ6NPTq3NzOtLymnNTGxJR2bOTOpPTivNTGvLymlKSShKyahEw+NOTe3PTm1Pzu1Pzy3FRCPPz65LSadFxGPOzm3PzqzPTmzPzmvEw6NCH5BAEAAAAALAAAAAAQABAAAAaqQIBwSCwaj8ikMhloOp/QpmAgqAoIhELBUDgcEIGEYrFgNBoLx+IBiRwkgQnFoWAwKhWLhX3BZAILGhsCDXgODhwdGB5vgAofICBlDiEiIx4kJSYBJ2UoEykqHSMrLC0nLWAnFS4UCycvMAcEMR0RLTIBMwaSahw0NTYtFwclNwEdLws4eoc2DxwQOR06ASk7PBAhIRE9Pj0tLSUY1T8I5gjn6Qgy7D8SfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mailreplyall16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRubHxubHxqbHxmZGxeXHRmZGROTFRCPFxKTFxGPPwCBLymlMy6pOTa1PTq3PTu5Pz27Dw+POzi3PTm1OTWvPz25FRSVERCRLympPzuzPTu7NTGvFxaXKSmpPzu1Pz65Hx6fHxqZPzq1Pz23HR2dBw+ZHx+fISChJSWlDQmJHRydCxWfBxGbJyenExKTHRiXPzqzPzy3CQmJDRafGTO5ExOTERKTGxWVCRSfHTS5CymxBxajBxWfPTmvPzy1CyixCSaxCySxDSaxDSWxDSSvDyaxGS21PTmzPz21AwiPBRejCSavByGtCSezEzG3FzK5FzG3GzO5FTK3CQ2bPTixBxqlCRefBxSdBxSfBx2nCQ+dHxmXPzmvLSafAwmRAwyRPzyzDw6POzavNzKpAQOFPzuxBwWTBw2ZGRORLyWdMy2lOzetPTivAQCBKyObOTOpAweNBwWVEQyLEw2LEQ2LDwuJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAf4gAABAgMEBQUGBwgJCguOCwEMDQ4PEBESDA4TjY8DFAwVERYXGBkRm4+QGhsMHB0eGB8bDpyOARogEBceIRgXv8COIiMkGB4lJSYnIcwoKb/DGyoXKywtKS4pHinMLzAxJDIzNDUtNjcv6B0hLzgfMh85OjstPDw99zwd7T4/LTVAgggZQqSIECNHevSAgSSJkiVMmjh5AiWKlClAiFARUeVHFSVWmLS40gNLlh5agGzh0kWDlwZfrIDREKaCAjEqrFA5MMYLmTAxlJTxYoZMozNozqRRs4ZNmy5s3LwhA0dBnDNn5MxBoAABnTp17IitowDrmQV+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mailreply16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRubHxubHxqbHxmZGxeXHRmZGROTEw+NFxKTFxGPPwCBLymnMy6pOTa1PTm1Pzy7LymlOzi3HxqZOTWvPz69Pz25My+tLympFRGRHxuZPzu1LymjNTGvNTCxBw+ZPz23PzuzPz65PTu5NzOtCxWfBxKbPzq1DRafGTO5BxGbPzy9HTS5CymxBxajHRiXPzqzCyixCSaxCySxDSaxDSSvGS21GxWVAwmRBRejCSavByGtCSezEzG3FzK5FzG3CQ2bPzuxAwiPBxqlBxKdCRefBxWfBxSdBxSfBx2nCQ+dPzy1CRqlAwyRDQmJPTmvPTixLSafOTOpAQOFPz21BwWTBw2ZPzmvNS6nPTivAQCBAweNBwWVNzKpPzyzLyihGRORLyWdMy2lOzetKyObEQyLEw6NEw2LDwuJEQ2LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAfqgAABAgMEBQUGBwgJCguOCwEMDQ4PEJYRDhKNjxMPDBQVFhAXGBUSGY8LGhsQHB0VHh8gFQ6bjgEhIiMMJCUmFbS2CwMnG6IoKSorI7WpEycWFiUsLSou1yXXji8wFiopMTIzNDUz4zbZNxsbODk6Ozw9Pj8pPzEzQDdB60JDOkRFjBw5giRJDCWdlmxwIIRJExAWKDRyMgTIiydLoESRImQKlSUSF1SxUoXAlSBRsGSJoCVICIlbqlThcoBClC5eYFD4EiVIFwUyqywAE0ZMlqNjpJDpIkUBl0dlFChAYOZMmTJoyqQR5icQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-mailsend16:mail mail16 16:photo:16 16:R0lGODlhEAAQAIYAAIx+fIRubHxubHxqbHxmZGxeXHRmZGROTFRCPFxKTFxGPPwCBHxqZLyqlMy6pOze3PTq3PTu5Pz27Pzy7LyinOTaxOzi3Ozq3LymlOTOtPz69Pzy5My+tLympPzqzNTGvLSelPzy3BxGbBQ6VPzuzPz65LyupNzOtPz+/GzO5BRejPzq1Pz23LymjHTS5CyixCSavBxqlPz25LymnGTO5CymxCSaxByGtHRiXPzy1CySxCSezGxWVPzuxKyOhMy6nDSaxEzG3PTivNzKpKyOfPzu1FzK5PTmzJR2ZLyihLSWfKyObOzmzPzmvDyaxOzavLSafGRORMy2lOzetDwuJEw6NEw2LEQyLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAsALAAAAAAQABAAAAfUgAABAgMEBQUGBwgJCguOCwwNDg8QERITFBUWjY8DFxgZGhsaHB0aD5yODB4TGB+kICEaIiOPCwEkJRcmJyYPKCIpKrWqKywTmC0SIi4vMDHEDCsyMg8zEyI0NTY3z7U4Hhs5Mx+0IyI6OyPrIzw9Gys+PxIy2EBBxAs8Qjk5Q0RFWFxAZySfgSMsilRAkiRECHQ08hHgJ0TJkCU/mECU2ISEkowUlpAQ4QTfowNPoAzJIeRJCyjm8kVRIkWIzSkXhwxJtYAKgp9VrFi5QoWKFZ5+AgEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nav1downarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIYhI+py+0PUZi0zmTtypflV0VdRJbm6fgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-nav1leftarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAP///wAAACH5BAEAAAAALAAAAAAQABAAAAIdhI+pyxqdwoNGTmgvy9px/IEWBWRkKZ2oWrKu4hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nav1rightarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIdhI+pyxCtwoNHTmpvy3rxnnwQh1mUI52o6rCu6hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nav1uparrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIYhI+py+0PWwhxzmetzFpxnnxfRJbmufgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-nav2downarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIfhI+pq+EPXYpxUckoO3AjbF3dJwahllXe6AFgC8d+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-nav2leftarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAImhI+pyxf5VohmSlsxmpjTzAHeN5ak6UHpqKRi2GpwvH3Q3eT64RcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nav2rightarrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAImhI+pq5HOAjQyVnqfhHue7oAaKH5kiW0AmnLqaHomkj02g+e6XwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nav2uparrow16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIghI+pyxfR0HsRzNnuXVqn3mVQZWFRyIDjp65Ga5Ly4hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-navback16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRSdBRObCQ2TBxObISevAQCBNzu/BRGZPz6/FzC3Pz+/HTS5ByyzJze7Mzq9ITC3AQWLAyWvBSavFyuxAwaLAwSHBRafBSOrDzW5AyixCS61ETW3CzG1AQeLAweLAxefBSStEze7CSWtCyatBSCnBRWfAwmPBRWdByixAQSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZiQIBwSCwah4HjUTBQFgkFg3MoKBykU0QhoUAIAuAksbpgNByPxQMSGVsVDYlkIqdUiJYLJqORbDgcHRseRR8gISIaEyMkGCVYRBEmeyAnlgaQkSgpmU4RAZ1OKqFOpFNGfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-navdown16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRObCRKZBxCXAwyTKTK3Ozy/NTm9GSivAQWHNzu/FzC3IzO5CySrAQOHAyuzETS3CSWtAyOtETa5Aw2VLze7ByWtBy61BSavAxWdBRCXAwqPAQCBDR+nKTe7FS+1Eze7ByixBRmjPz+/AyexAyixAQKFBRqjAQGDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZeQIBwSCwaj0hAYCkYEJLKguGASEADigWj4bgaHpBINykwSCYRa5HCFFQsF0xGo9lwhpSOwfORYC4gISJ3RAQdIyQYJSAlImNrh4uNJkl5CoKUUBQnjlB4KJ6hokN+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-navforward16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBAwyTBRObAw2VDR+nCRKZOzy/KTe7Pz+/KTK3Nzu/Lze7FS+1AyexAyuzBSavAyOtBSmzOTy/BRqjNTm9IzO5ETS3ETa5By61AyixByixBRmjAQGDBxCXGSivCySrCSWtBTC3AQOHAQWHAxWdEze7AQKFBRCXAwqPAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZjQIBwSCwahYGjUjBQGgWEpHNYMBCaT4G2UDggos+EwmBYMBpf6VBgYDgeEMgjIpmoAQVKxXLBPDIXGhscRB0eHyAgDSGBGyJFASMiIiMkJYImUwAnmJqbjp4AKCmhAKSlTn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-navhome16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBDw6PBQWFCQiJAQCBFxeXMTCxJyanDwyLDQqLFRSVLSytJSSlISChCQmJERGRFRWVGxubKSmpJyenGRmZLy+vOzq7OTi5Ly6vGRiZPTy9Pz6/OTm5ExOTPT29BwaHNza3NS6tJRqRGQqBNy6pIyKjDwGBPTe1JSWlDQyNOTGrNRiBGwmBIRaLNymdLxWBHxGFNySXCwqLKyqrNR6LKxGBNTS1NTW1Jw+BEweDDQ2NAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaoQIBwCAgIiEjAgAAoGA6I5DBBUBgWjIZDqnwYGgVIoTGQQgyRiGRCgZCR1nTFcsFkHm9hBp2paDYbHAsZHW9eERkYGh4eGx4ag3gfSgMTIBshIiMkGyAlCCZTEpciJyQjGxcoKUQBEhcbIiorLB4XEltDrhcaLS4vtbcJra8bMDHAGrcyrTMXHjA0NSypEsO6EzY3IzU4OdoTzK0BCAkDMgkIOjJlAH5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-navup16:nav nav16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBBRObAwSHBRSdISevBRWfAweLNzu/BSOrAQWLPz6/FzC3DzW5BxObHTS5ByyzAyixEze7BSStBRWdAyWvByixAQSHCQ2TAQCBBRGZJze7CS61BSavAxefMzq9ETW3CSWtAwmPPz+/CzG1ITC3FyuxBSCnAQeLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZfQIBwSCwaj8hhQJAkDggFQxMQIBwQhUSyqlgwsFpjg6BwPCARySSstC4eFAqEURlYhoMLBpPRUDYcHXt7RgUeFB8gIU0BIoiKjAcUIwiLSQUkJRsmGIwJJwmEU6OkfkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-playeject16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+py+0R3IFQUtruXVqn3kkWyIARR4rqKvoFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-playend16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIjhI+py8Eb3ENRggrxjRnrVIWcIoYd91FaenysMU6wTNeLXwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-playpause16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIfhI+py+1vgoxzyUCxrZd18ClfmIyVyJ1lqkHuC0N+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-playstart16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIjhI+pyxudwlNyguqkqRZh3h0gl43hpoElqlHt9UKw7NG27BcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-playstop16:play play16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+py+1vgpySUWpvXXqrHmSaeJEYhKYq6hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textblock16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+py40Bo5SOzRvrwlgrfnkJOIkPaaaJXwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textbold16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIihI+py70BowPQ1HZpwNv212Vg9IGHmIjoWa4ey5DSRNd+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-textbottom16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIVhI+py+0Po5y0hYtzrkB7zH0fN/kFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-textcenter16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+pm+EPIZsnRkqtDnhu1zHfFSpjaY4PavgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-textitalic16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+py+0BgztwUmmjBXX3jE0auHHhM5Yq4xcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textleft16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+pm+EPIZsgRoqr3Vnt102fFSJjUC6nlPoFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-textmiddle16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIXhI+py+0PT5i01pisphjt3UmfFZYm5hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textmove16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIbhI+pm+EPIZsg2kfZvblXbwTg10WlA4rjyvgFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-textright16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIahI+pm+EPIZstSrqsDhhv1ylfFE5jiYwX6hcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textsortdec16:text text16 16:photo:16 16:R0lGODlhEAAQAIIAAAT+BPwCBAQCBAQC/FxaXAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM5CBDM+uKp8KiMsmaAs82dtnGeCHnNp4TjNQ4jq8CbDNOroIe3ROyEx2A4vOgkOBzgFxQ6Xa0owJ8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-textsortinc16:text text16 16:photo:16 16:R0lGODlhEAAQAIIAAAT+BAQC/AQCBPwCBFxaXAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAM4CAqxLm61CGBs81FMrQxgpnhKJlaXFJHUGg0w7DrDUmvtPQo8qyuEHoHW6hEVv+DQFvuhWtCFPwEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIlhI8Jwe2/AmpTynqPTXSqrnBM+I0kdmpmGmUp+K4nPMvhYx9+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-texttop16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIWhI9pwe2uYnq0yQtqxbz7D4biSIZ+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-textunder16:text text16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIjhI+pu+FxXoOIKpds1oBH7hlYxYxRCaIZ01lhJbHy9tTv7BcAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewchoose16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMzCLrcGlAs6UAYgwLdLtEcI4ygQo7VVp2oupGpG4vmaUVTemX523qlFcw0a4RqNlkx5k8AACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-viewdetailed16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMmCLrc/i1IAVkYg1Z1iRYUKCqitp1oikqBWV3ZOnhkWNagqu+qnwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewicon16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMwCLrcG1AwGOQbw6qANeCEB3pCSZpO6pgowJZqLKuUGE0dnuEhf8IL1kz1shSHDX8CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-viewmag-16:view view16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQmJDw+PAwODAQCBMza3NTm5MTW1HyChOTy9Mzq7Kze5Kzm7OT29Oz6/Nzy9Lzu7JTW3GTCzLza3NTy9Nz29Ize7HTGzHzK1AwKDMTq7Kzq9JTi7HTW5HzGzMzu9KzS1IzW5Iza5FTK1ESyvLTa3HTK1GzGzGzG1DyqtIzK1AT+/AQGBATCxHRydMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ+QIAQEBAMhkikgFAwHAiC5FCASCQUCwYiKiU0HA9IRAIhSAcTSuXBsFwwk0wyYNBANpyOxPMxIzMgCyEiHSMkGCV+SAQQJicoJCllUgBUECEeKhAIBCuUSxMKIFArBIpJBCxmLQQuL6eUAFCusJSzr7Kmpl0CtLGLvbW2Zn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-viewmag16:view view16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQmJDw+PAwODAQCBMza3NTm5MTW1HyChOTy9Mzq7Kze5Kzm7OT29Oz6/Nzy9Lzu7JTW3GTCzLza3NTy9Nz29Ize7HTGzHzK1AwKDMTq7Kzq9JTi7HTW5HzGzMzu9KzS1IzW5Iza5FTK1ESyvLTa3HTK1GzGzGzG1DyqtIzK1AT+/AQGBATCxHRydMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAZ8QIAQEBAMhkikgFAwHAiC5FCASCQUCwYiKiU0HA9IRAIhSAcTSuXBsFwwk0wyYNBANpyOxPMxIzMgCyEiHSMkGCV+SAQQJicoJCllUgBUECEeKhAIBCuUSxMKIFArBIpJBCxmLQQuL6eUAFCusJSzr7GLArS5Q7O1tmZ+QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-viewmag+16:view view16 16:photo:16 16:R0lGODlhEAAQAIUAAPwCBCQmJDw+PAwODAQCBMza3NTm5MTW1HyChOTy9Mzq7Kze5Kzm7OT29Oz6/Nzy9Lzu7JTW3GTCzLza3NTy9Nz29Ize7HTGzHzK1AwKDMTq7Kzq9JTi7HTW5HzGzMzu9KzS1IzW5Iza5FTK1ESyvLTa3HTK1GzGzGzG1DyqtIzK1AT+/AQGBATCxHRydMTCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAaBQIAQEBAMhkikgFAwHAiC5FCASCQUCwYiKiU0HA9IRAIhSAcTSuXBsFwwk0wyYNBANpyOxPMxIzMgCyEiHSMkGCV+SAQQJicoJCllUgBUECEeKhAIBCuUSxMKIFArBIpJBCxmLQQuL6cAsLECrqeys7WxpqZdtK9Ct8C0fsHAZn5BACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-viewmulticolumn16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAPwCBDQyNAQCBPz+/PzerAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAAMwCLrc/ixI0WSgKoyBl+beQFACpo1AqXbKCr1wLAMWS08hGG3dSZqin4sxnBmPD38CACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-viewtext16:view view16 16:photo:16 16:R0lGODlhEAAQAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAQABAAAAIchI+py40BTQSwuovp3DXkv1ia1IHmIXLiyWJ+AQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-viewtree16:view view16 16:photo:16 16:R0lGODlhEAAQAIIAAAQCBPwCBDQyNPz+/PzerAAAAAAAAAAAACH5BAEAAAEALAAAAAAQABAAAAMuCLHcri4yGISlj4kxcANgNRBQCIbL6U1Su7bB62rXvGydG25kqpwfIGxILBr9CQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actattach22:act act22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBMTCxPz+/DQyNKSipAQCBISChFxaXDw6PAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARrEMgJgqA4zzus/gLhFd5HCcZAXqsphYPUdhcYFNRcZnvdtpnDqPTbUWgAJKBYwzBlw+bRo3xmkNWoBgm0OrVLn3GC9RgCk8DhUw7c0rHPr4CDu5SYQNyEt7uSY3p/UAKFhYKDSQOLiwgFdhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-actbookmark22:act act22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBCQmJCwqLMTGxAQCBBwaHMTCxLSytERGRFRWVLy+vKyqrKSmpHR2dJSSlJyanISGhGxubIyOjKyurGxqbFxeXGRmZHx+fKSipLy6vGRiZLS2tFRSVHRydJSWlHx6fCH5BAEAAAAALAAAAAAWABYAAAWWICCOZGmewamaQrq+wUC8azHINGocOI38iIRAceDNaISFYklkGHOEhoNBfUAOhuOLEJE8HoPiRKFdESiQBqViuTDIUAsEcyAeGJmyiqC5RCwJGg0YcEh9D0V3Dxt6JwQVDRYVHBUdi40mjw0PTgwQHgeYJQQJfxUXFxAOoTkFpQ0fsRSimQkWEQ0VtI62HLt7vjl7JQYhACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actbookmarknew22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBCwqLCQiJCQmJMTGxAQCBLy+vLSytERGRFRWVKyurKyqrLS2tKSmpHR2dJSWlKSipISGhGxubIyOjGxqbIyKjFxaXGRmZHx+fPz+NGRiZPz+ZPz+HMTCBKSiHPz+jFxeXPz+XPz+tPz+zPz+/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAamQIBwSCwaj4Gj0hgQLJ+AAaEAVQoI06pRYDhkoYgwIhEgKBTfZ2FhaBsYDS8VWnA8Go0FJIKeqyUTDw8EDHBpSwUUFQ4UFhcYDQYFfkoFFxEQDG8KEAUZlEeWGBIakw4FG1STiBoYBRwdBR4fHgUdHKBEBSCnIR8iIyIfIblFu6ceIyQjtcXGCbLKzAUKzrq+wMLEVa+xs7W31kOTk6nkWuOf6Ea5QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actexit22:act act22 22:photo:22 22:R0lGODlhFgAWAIEAAPwCBAQCBHR2dDQyNCH5BAEAAAAALAAAAAAWABYAAAJOhI+py90RnIMyRUOxhDfzJkACdoXBuEDDkQFDi5go0MrKx16kns80b7qdELCgBYaEGWwL5nG1ePFiKp9A6kuYRNuho8vxVrrZivmMRtMLACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-acthelp22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBCQuNBwiJAwiLAwaJAwSHAwSFIy+3ERynCw2PCQuPAwmPCxOZCxWdJzG3FSazBwmNAQKDAQGBDRmhBQyTDxujDR2rIy21AwWJDyGxCxmjAwmNDRihAQOFDxmhCxunBQWFAwaLCRahDR6rESGvDQ2PCRWdDRunDSGvCRSdAwWHCwuLDSOzHSmxDyKxBxCZBwqNHSu1DyOzAQSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAahQIBwCAgIBAPCoGAgOoeBAyKhWCwYDUf0CX1AIhLiJEGpBLiAAaRxdgYsl7Ybk8igBZoN5xmAdDxoanp8HyANISF8EBsiXBMjJBolBEQmGHFoRScbKHIKDykqK5lFAZRCnyknTaROLA8tq61OChgtKqyzQgEYEJi6UC4vI3LAASkbMBPARAEBdszR0sACEaPSMTIQM8W6KzNl3bo0NOJDdEEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-actlock22:act act22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBHRudFxaXExGTERCRAwGDGxubPz+/Pz2/Ozm7Nza3NTS1KympFRSVHR2dNTO1JSSlKyqrKSipDQyNMTGxDw+PLSutKymrMTCxAQCBHRqLBQODJyanDQuFFxSJFRSJFRGJERCHExCHISChHxyLEQ6HGRaJExKHLSmbLy2fOzitPz23KSiZHxuNHxyNJSOTNTOnMTCjLSudKSaXJSKRJyOTOTetNzWpHxuPOTi5MzKzLS2tFxWXOzq7Ly6vOTe5Ix+RLSqdNzSpLyydKyqbKyiZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4IBAgMEBQKEjI0GBwgJCgsMDY2XjwkOAgQBDxCLl4QNCaGCBBGWooINCAqqrBKgqwATFKaDFRYVtBMXsIMNGBm0GRADjQIJxKIaGxwdHh8gISIhGyMZzIwkGholJiYfJiAfJyEZISDbg90oKCkqKwcHKyooLC0f7IIuLzD2YMSQgW8GDRri+AFoUMOGvRsxUhSsQQPHvmQSchyQtEAHhh0WJHDQcJERjwsKDvRI0BGDjwgicXhQyCOjSgUKPO6AObIkIQESfmxk6REDT4s0bfaYpDNkT4VAha5s+TLmzEYtatwIOHAiDZIKNQAJYk9IjCFEisyoocFEB4UACtBpm0t3LiF4gQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-actredo22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBCReDJzGjMzivOTu3Pz+/JTWbHy+VHTCTMTivPT69BxGDESuJDyiHESiHEymJIzKZAQCBFS2LFzKNGzWPDRqHCxqDFSqLHy2XESCHAwaBAQOBBQqBDyWJHyqZDyKFGSiVESeJBQ6BAwSBGTGPFyWPFSSLEyOLESGJBQiDAwiBBQmDCRGFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaoQIBwSCwaj8hkMcBkKpcBwYAwEDif0YLhwEUkFItFMkAwMBoOR+PxgHwjRDggamhIJpQ8ZbKGKOQLcgEFdhUWEYgRF3sNfhELBHALAhgZFhobRBwREhQdEAIEHpIKHwsaSJwUDQgQIJINARxKESESDQ0dgCIjSpAkDAwPco+ZSJAlJicnKHIAIrNHidOIQxunT0kpCyrZSCss0d5Fj6jjRonn6uvs2QZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actreload22:act act22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBCRSFCRSHBw+DBxCFCQ6FBwyDBQWBBxGFCxyLGTChMzqzLzmvHzKjDyOTER+RERyNDSqXNzy3LzivFS+fCyCPBQmBCQiBBxKFBQqDOTy3LTitES2dDR+PCxuJOT25KTarCx+PESSTCxKHDSeVCyKRNT21ESWVDSGPBQyDAQCBBQSFDRuLDSyZDySTGzChCRiJKSmpExKTDS2ZGzGhLy+vGxqbISChDSKRMzKzGxubDQ2NIyOjCQiJCwqLBQWFCwuLKSipERCRERGRHR2dAwKDDw6PFRWVIyKjCQmJFRSVBwaHKyurAQGBExOTBweHFxeXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf9gACCg4IBAgMEBQYHhI2ECAkKCwwNDg8QBAOOhAQREhMUFQgWBxcHGBmbggkaGxwPB4yDB6SbBJIKHQaqtY0eHyAhsqrDgx4aCiKpqoQHAyMjJBMKJaSxzAAHIRsmJgonKA0LHSmDKiuOBywRLSQuLyEwwyoxMuiN6iUzNBXy5jU2bsgoJugABBz95uXQsUMGD3vpPPgTpKIGwx4+HMr4kW4YkCA2hAzxAQSIECI+imBTwVIFESNHerRUgc0cEiFHkjiiyYzeDiVLdvLcySSkkKGEWiZVweSGkIHMmvQosoQlkaZOjvhosvKJjIAxoOAsgpRZkQNLnvSoqspAIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-actrun22:act act22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBAwKDAwKBCQiHNze3AQCBBwWFDw6NPTy9PTy/Dw2NKyytOTi3LS2tMTKzMzOxLy+tLy+vBQODNze5NTS1JyalIyCbIx6VIRyVISGfJyelOTq7EQ+NMTGxKyurGxeRLyKPOSmROSuVOy2XOSiTLzCzNTOzDw+NCwqLHxuVOy6bPzGfOSuXNTW1LSyrMSWRNymTOSmTKSCTPTGjPzSnPzWnMyaVBQSDMTCxPz+/KyahNSeRHxeLJRyTPzmtPzarOy6fJyajNza1Ly6vLyulFRCJPzirPTOlMS2pNTSzMTCvJyenBQWFNzKtPz6vPzyvPzqtOzGlOTe1AwGBFxWTLy6tPTm1PzSpPzutPz2xPTSnOTSxOy2dPzapPzerOzm5IR+dPzu5Pzu1PzqxPzy5Pz+9GRiXGxuZKympHR2bOTm5Pz6/MzSzBwaFJSSjCQmHPz2/AwODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeEAQKIjIIDBAQDjYMFBoMHCAkKgwYFhwULDAUKCg0ODxCkBQgRnoUSExMUDxUWFxgZGpAbFIuGHB0eHyAhIiMkIB8lJieIKCUpJCTGIyorLCktKIUDpC4YLzAxIjIyMzQ1NhgdpJI3ODktJTowOyM8Ejc9Pj9AQUIEclAocCMIBQhDiOwgoaKIoCI+jBxBkkSJkCWemIyq0GSHCBVHihRx8gRKFCmpKhGaQqWKFYZXsGR5kkXLFgRUXBUqkCGCFS5AjnTx0sXKlyA6CRVgAAHMAilhxIwhU6ZFkBY5kgKYUoXBAzMKzixZ4AJNGgVm1KxhM0WpmQpUMtooaOPGxAM3Nw60oYLGjNYCbzYJOgAnRzNBJ95oPYQCgpJtkwzFoULlRuRPiy9fNhAIACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actstop22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAASC/CQKDBwKDCwODNyKjPzq7My+vIxiXAQCBOSOjPz6/OSelNySjNyGhMR+fLRaTGQ2LPz+/Nx+dNR2bNRybMxuZMxeXMxiZLQSFJQaHFwqJNyKhOSCfNyCfNR6dMxmXMxWVMRORLQODOR+fOSSjNR2dMQ2LJQWFMRWTLwWDNSCfMxeVLwaFKQODNR+fNx+fMxiXKQSDOSWlMRSTMxaVMQ6NMxORMQyJOTS1MxqXLwWFLRORMxKPMQaHMxKTLQWFCH5BAEAAAAALAAAAAAWABYAAAb2QIBwSCwajwGBcikIHIsDQmFKNRwQT2EgoVgsGOCG4wHBIgmRhWRCqVQsF0xGYyYGNgoGh9PpeCQfICEic3UAAWgLIxwRJBsbHSUREyYYJ3RDAQULexGejhueESgpl3WaCxsqJKKsChEUKywtmFoFDC4vCayikzCyMbWHt38NCTKiHhUfMyzBdQIFKsodob0VNDWzwppuKxMRrx6iNjcitNA4bh+iEzkwojc66JkOOxcf7G35PBE9KS1MEUGgIQOIFfk++KjRw9wJgUUIZvhRoyLDFCliQDQisUWLGCJOeNx4hKCGkyhPGnqCoKVLl1liypyZxUAQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actundo22:act act22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBCReDJzGjMzivOTu3PT69MTivHy+VJTWbIzKZEymJESmFESiHDyiHESqLAQCBFzKNGzWPFS2LNTmzCxqDDRqHPz+/KTGnBQqBAQOBAwaBESCHHy2XBxGDOzy7HTCTEyyJDSqFHzWTAwSBBQ6BIy+dESKJFySPFSSNAwiBCRGFBQmDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAalQIBwSCwaj8ikMsBkKotMwYAwEDiXgYLhwD0gCFZiQKxNKBYMRqPh+D6G16y5AYnYIxBJAyF4AwITTAUJdBESD4gPFBV6Fn6ABBcJDIYPGEQZGhQbHAIdfx4JHw2VSBodGwWfAR4LDSALfkgYAQurBiAhICKfSSMkvQElGyYnGyi9Rxkdj4nOskUYyU9FpxnURikdGtjRKivdRKfQ2Inh5+jpRwZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-actunlock22:act act22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBGxqbFxaXExOTEQ+RAQCBPz+/PTy9Ozq7Nza3NTS1KSipFRSVOTi5Hx2fJSSlKyqrJyenJyWnDw6PMzKzKyurDQyNFxWXMTCxJyanHRuLHxuLGReJFxSLFROJFxWJExCHERCHBQODISChHxyLHRqNIRyNHRmLLSqbKyiZLy6fOTarPz67Pzy3OzitKymZFxSJJySTNTSnPTy3NzSpMTChLSydKyqbKSaXJySVIyGRGReLPz23NTOnMzCjHxuPLy2vKSmpOTe5LS2tLSutHxuNHRuPMS+xFxWLIR+RDw2HFRKJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SDAQIDBAUChY2EAQYHCAkKCwyOjZANDgIEAQoPjJiDAg2iggQQp5gMBwmrDBESl6MTFKuoFQSjABYRF40CGAW8BRm7hQwNxBobHB0eHx4gISIjBdiEAhYFJBslHOHSHh4hBSHlxIUmJygpKissBiwtLi8pGjDqhBoxMjMuaNSwcSMFjhw6dnjYRyrGCh4ueviw4Q5HDB0/PjAUJCBCAwMIGiiggAEIBFk/FgYLIgRkggQkhxAJkqGExkYMFnxsIGRkSQgLHhRRWUjAggQgG8AsSWRBBiP6VrYMOfKIyaBDNwLo+HHSUplOSyDRqiEHjRkretRQkcLgxayNF0wksQGQxsSKMTIq0QpgCba/gAE7IhMIACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-appbook22:app app22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBDyGhCyCfFSWlESOjDyKjDSGhCx+fGSinGSenFyanEySjHSqpHSqrGympEySlBx2dISytHyyrCR6dKTGxHyurHSurHyytGSipCR6fARmZFSalEyWlBRubAxubBRydDyKhDSChLSytPz+/MzKzIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbFQIBwSCwaj8ikMhBQIpmCQdM5ZBIKhgNiugwkFAsCI7pNMhuOxkNBgBgEiAi3GkBLJpJHYgEpaClyREwVFhcSEhgOGQoMfgMaERtcARQBFRMYExZ6HB0FUYAekkIBHxqWFmlrC1haESAfG6MBGx+VFRgKYH0hInGRklO0ppYXCwwMWQiQHkwjgrWnFRdYZHIBJCTP0LaWGAcDW9jZ2nMAw9IWTOQkJSZMRsOV49nu8E+19PbmR7TY+1TovONH5V7Ag0QMBAEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-appbookopen22:app app22 22:photo:22 22:R0lGODlhFgAWAIYAAAQCBAQ2NPwCBHSurIS2tBx2dBweHPz+/Ozm1GxiTGyqpPz6/Pz69GSqpOzaxPzy5HxuVLSmlOTazPz27PT29NzClPTexHxuXLSmjAxqbFSinPTy9KyehNy+lPTy5Pz29HxyXNzWxKSahOzexPzy7IR2ZOTWtESenPTy7KSWfIyCbKyijAQGBDyalPTu3KSSdDSOjJyOdCSGhPzu3OzizJSGdPTq1PTq3JySdMy6lAyKhOzWtOzi1OTOrJyKbMS2nJySfMS+rAwCBNzOrNTCpNzKpJSGZKyafLSifLyylIx+ZHx6ZDSChAQuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAAAWABYAAAf/gAABAoSFhoeHAAMAiI2IAAQFjI6EAAaJkQeTjwAICYkKBQcLm5WdBwyfhgChB66bp64HCQC1lQ2irqQCAA4PowsLEBESE4wAuLIHFAAVFr+uDBcYxRm1GrmuGxwdFh4Mrh8gGCET1gDYyhsiFSMkDAsMDCUYJhvnJ9kHKCnODwwfPlBQsULCPRYAWogK9sHFiwoOPEyQh0JFPXO1YBSYwBEFghjdHkwQOYGgwQwIZRR44GHGDBogabhAsYEEihrUMAIoUMCEDRs3HODIYQHFA6MPcJA7KICFjgw7eIzo4cOfiwc/gKwIUm2SkKdDdlDt4AABDaU/iIRwwbTSUyJFOow4S3Hkx9oNDDZgXPU0h1wcSIgEGUw4ibVET5WoWMKksePHpdxmyKADAEIWly9HJtQkQJMmlAgZCAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-apppencil22:app app22 22:photo:22 22:R0lGODlhFgAWAIMAAASC/IQCBPwCBPyChMQCBPzCxAQCBPz+/MzKzISChKyqrDQyNEQCBAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARYEMhJ6wxiEMtpIAWxddwXiqRlikSQeiAbuC+wirNR322gv7zcLobzDU+9XypoBBKTR1lz+RTWDgip8nUwZK1XLyIx5XoVicX2RUAo1DVKi7GOBxjxfNwQAQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-apptool22:app app22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBISChFxaXNze3NTS1Ly6vKSipNTO1Ly2vNza3Pz+/MzOzOTe5DQyNOzu7MTCxGRmZMTGxPTy9Ozm7Hx6fPTu9MzGzGxmbAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAW1ICCOZGmeaEoGbBsI6joMRGEcbQwESDIrtVtAF1gwDLNaAmfKiVgLBJKgwB1KxQZrBHU0FAXmavFoQLYiB6TxFXMj5AZBwnJI2I3wcNWALyYEcgoKXxRhOHs7XxEVCwsWFgoUDRYUFwwQB25ZCxiNjo6GkwUXN2NsCxEYqhUHoQ0MEglYRQQXErcHrI55FycuB2YSmoyOBTEtB2sXuhU6XAENC2a6z9AKCwq+1tAN3E2J3ySkIQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-connecting22:connect connect22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBPz+BMTCBISCBAQCBPz+/MTCxOTi5AQGBNze3Ly6vISChNza3FxaXKSipAAAACH5BAEAAAAALAAAAAAWABYAAAR4EMhJqwzY6omD+MNGdR8YilNZnug0qGzrqrL1lnV1fyJBVB6VQEMoGH4ADGwQkxQPBwMiKGA2J8VEAnq0tgiKg5aL/C7C2gTjKCM0zowDQ8tuNQznNL7cKzjOUQsNfER+gguIg19+Pm6ChBZFDmWNi5M5FIyYFHQRACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-connectno22:connect connect22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBPz+BMTCBERCBAQCBPz+/MTCxOTi5Nze3OTm5Ly6vNza3ISChFxaXKSipAAAACH5BAEAAAAALAAAAAAWABYAAARiEMhJq7046827/+AVCKE0Dh9BAGdaGISAToFGFMcBU+11I4hDYseSZQiKwwKoI/QwBIYiuFDCZseGdIlYEjUNg1SpY6w2N4cUIW6cjwW1lsFwo+MqgtZuw0/ydw5vH34lBhEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-connectyes22:connect connect22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBKyirPz+/KymrOTi5KSipMzCzNza3OTe5Ozi7MzGzPTq9OTm5ISChMS+xFxaXNze3GReZIyCjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAWLICCOZGmeaBkAQpoGg7C6JizTQT7CxPwOwFWgYPChYIXkIHC4uQKGAiKRKCyNpxxUUVViVYNFLkqtLo+DAkMMLXQPXwAy2WCTF4544FGtKuwPDhB6DnxuUmyCcXIQhV1uYoMuEAcOBxEKCHg6TzGFCJUSizuejROKOAM9OY2SnUU7nD89NCcDsLUnIQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-devscreen22:dev dev22 22:photo:22 22:R0lGODlhFgAWAIcAAPwCBAQCBPTy9PTu9Ozq7OTi5Nze3OTe5Nza3NzW3NTS1MzOzMzKzMzGzMTCxMTGxOzm7AwGDBQOFBQSFCQeHCwmLCwuLDQyNDw6PERCRFROVEQ+RDQ2NLy+vKSipISChGxqbExKTOzu7OTm5Pz+/GRiZMS+xLy6vBQWFLy2vCwiHFQ+NMSmfNSyhIxmTDwuLJx+bLS2tCwmHMyyhMyqfPTqpPzyvLSWbLSWfPzitIx+ZDw2PAwKDCQiJGxWRPTmrPTerMyuhPzqtPz63PTWnPz6zNy+nIRiVDQuLKyWbOTanPz21NS2jNS6lDQqJHRaTPzmrPTSnPzyxOTClPz2xNSuhPTqxPzuvOzSpAQGDOTKnMy2jOzSrPTu1NzKnOzOnBwWHJRuXLSWdPTatPzqvNzClCwmJOzSnOTOnPTuxOzKlOzerOzarOzitJR6ZNTO1IxmXPTWrNSyjPzOjPTSpLSehHRqZOzirOTCjPS+fPzGhOy6bOzKhGROPMy2lPz+1PzmtKRyRHRiNNTCdPz+zNzCjEQ2NKySdDQmJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAj/AAEIHEiwoMGBARIqXMhQIUIBAwYQIFCggIEDCBIoULBgAYMGDgIIDEBAwMSKBRBk3NjxAciQIwdACBBBwgQKFSxcwJBBwwYMHBx0EAmA5EwPH0CEsCChoYgOQ0cSGCHhA4kSS5syJGDiBNEAFVGUKKEBAwWFFM6SNJHi64gDFEKE4FBBggoKK1i0cPECxokYXw0gsECYggQZM2jAqGHjBo4cOtqOxLhDAg8ePXz8ABJEyBAWRIoYOfJipEoMCZEkuaFkSAslS5jUGJKkSRAnRREo0JDwCZQoTKQAmUKlihQrVa5gKZ1lI+oAK7QM2cJlSZMuU4Z4+TJEx0iNOwKAggkjZkyOFmS8kClzpcUQLRRGbjRD4MgZNEzSqKG+ZgobI2248dUbDDDwABzcxSEHEFpgEcUcdMRRhx1fFejAAx0cgcYdSxiBRx566LEHH0d8QFRRNC3Uhx985CHEH0MAEkhCBxWkgiCDFEFIEYUYUmONMhyCRxVH/PgjBYioYJAdAQEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-editcopy22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFPz+/DQyNISChDw6PMzKzMTGxERGRIyKjFxaXMTCvKSmpHR2dPz6/Pz29PTq3MS2rPz69MTCxFxWVHx6dJyWjNzSzPz27Pzy7Pzu5PTm3NTKvIR+fJyGfHxuZHxqXNTCtPTq5PTi1PTezNS+rExOTFRORMyylPTaxOzWxOzSvNze3NTOxMy2nMyulMyqjAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbYQIBwSCwahYGkUnk0BgTQ6IAQaBKfUWhBYKhaAU+CgXAQIAyChLeJzSIQhcH6GFaM0QtGY5kstqEODw8QEQELAhJTc08KBBMEFBUWDRcBE1pca20SGBkaEBscAY5maFRIAgoLHRQRHh8gIQFlZnByqA8ZGSIQIyQjJQEmYgJ5p2ACrK4gJx4gKIZZAgdeAQ4ZI9kjKSor0AwEjeAs1S0cHAslLi4vMDDRWeRIfEsxMeET4ATyVoYLC5fizXEiAR84BeMG+pEm8EsAFhAjSlR4hR6fLxiF0AkCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-editcut22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBAwCBPz+/OTi5JyanOzq7DQyNGxqbAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARbEMhJq704gxBE0Bf3cZo4kRJqBQNRfBucyudgvJS6VaxLzyMa6/bLiWA9HOg4VIIkL5vzuRkcpkvRIIAorphJLzBW84WEuRZWp6uaT7J2Sh1Hit3OY/ZO7WvsEQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editdelete22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIYAAASC/FRSVExKTERCRDw6PDQyNCwuLBweHBwaHAwODAwKDAQCBExOTNze3NTW1MTGxLS2tJyanPz+/Ozu7BQSFCwqLDw+POTi5PTu7MzKxIR+fCQmJPz6/Oze1NTGvPz69Pzy7Pz29LyyrPy+vPyupPTm1BQWFIQCBPwCBMS6rPzSzNTOxPTi1NS+rPTezNzOxPTizOzWxMy2pOzaxMy2nPTaxOzOtMyynOzSvMyqjPx+fOzGpMSihPTq3OzKrOTCpNzKxNTCtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf8gACCAQIDBAUGBwgJCgsLgpCRAAwNlZYODxALEY+SkAMNEqKjEw0UD5yegqCjrRMVEqidkgWhraMWF7GptLa3EgEWFRSOnhW+vxgZEBqzkBvItxwdHryRCNGjHyAhHSLOgtgSI60c2yQjJd+eJqEnKK0hJCgnJSngAO0SF+8qEvL0VrBogW+BLX4oVKgIyMIFQU8KfDV4R+8FDBcxZBREthAFiRIsOsygsVEUh4Un3pGoUcPGjZInK65QicPlxg8oX5RwqNJGjo0hdJwQ6EIkjRM6dvDYCKIHSBc1Ztjw4eOH0oIrsgIJEqSFDBo0cuTgsdSTo7No0xYTZCcQACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-edit22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBISGhISChHx+fHx6fHR2dGxqbGxubGRmZGRiZFxeXFxaXFRSVIxSLPyuXMzKzMzKxMTCtExOTPzqrPz+/NTS1MS+tOSaVPyWNPz6/IxeNPzavPyKBNTW1PyCBPyGBJxmNPzOpLx6PNRqBMSCRNySTPyCDPSGBMxiBKROBHRydPSylOyydMxmBJxKBAwODPS2lPTq3OyabJxGBPTy5PTGrOyOXPR+DPz69PzmzPzevNxuPORqLMReFPzy7MyCXKxiNIRKHBQWFNTOxPzixJRaPFxONHRqVPz27PTy7PzStCwqJDQyLJSGdIx6ZPz29PTu5HRmTLSKbMSGZHROPFxKPJSKfJyShKyehMyuhDQmHEQuJJyOfLSijMSynMS6pLSefDQyNHx2bKSahLyqhLymhOzi1FRGNIR+bNzKtOTOtOTKrOTKpLyedAQCBFRWVPTq5NzOvLyunLSmlNTCrOTOrNzGrLyidMS+rLyynKyijLymjLyqjAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gAAAAQECAwQFBQYHBggJCgsLDAwADQ6CAQ8QD5ydEJ+gERKWE4ICDxSpqhWqqhYNFxMYphCtqaytGRoXGxgcggSoth25u70eH8APFR0VzMzNziAXIRjIvwAFwq3EqSLUGB/iI4LathS4JCXVJh8nKCmCKrXDFCss1eIfLS4v8ssdmgWsAGNDDBnt3s3wJ+jAtlUhaNSwccNEi4WCBBl4SAHHihw6ZOzg0QNjRgAG6KXK4CNEjBU/gDQI8kLISQAIADobAoMIzCINjLw4YvNkAno4kCRRUuNHESNLmDRxUjSjAlRPfECJImUKlSpMrFzBIqWqoKtJaWSJomULAy5XXrp4+QKGYcYFoCBEWRImi5gmY7CQyVLGriAGD2jEMHMmCxc0Xb6kUbOGTRs3N988gLM4jpw5Y+iwqcOGjZ07mE8yiGABz5c8c/Ts4cOnDJkybS7fdMO7t+/fvDMaCAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-editpaste22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBQWFDw6FHRuFGRaBFxSBAQCBAQKBCQiBIx6HPz6/NTOfKyiXDQuFOTm5Pz+/Ozu7PTq5Pz63PTyxNTOjKSeRExGLMTGxMzKzNTS1NTW1Dw2NKSmpKyqrKSipJyanNzWlLy6ZLSuVIx6FISChIyKhJSSlCQiJLS2tDw6NDQyNCQiFCQmHBQSDGRiZHRydGxubHx6dGxqbFxeXGRmZFxaXCwuLOzq7KyurHx+fDwmFEQuFCweFCQWDBQODBwaHBweHKSinJSWlOTi5JyepHR2dDw6PBQSFNze3ERGRIyKjIyOjISGhPz29Pzy7MS2rMzOzFRWVHx2dHxybDQiFPz27Pzu5PTq3PTm1NTCtJyGdHxuZHxqXPzq3PTaxNS6pFxWVFRKRNS2nPTi1PTStNSulNzOxNSynMymhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCgwABAgMEBYSLggaOjgcICQoLDA2Pj4MGDg8QEZ4FDxITFBUWFxcYGRobjQ8cHR4fCQ8gCyEiFSMWJCUkJieNEB4dKB4pKissK8wrLS4vMDHBAAYQHx8dFx0fJDIzNDU0M+IyHzaNNyg43Ng5Ojs7Ojw9Pj9AMkCNDiZB/h9CSOx4QLCgihItqBkYgqIDESElitAYWJCgkQcXjjRCgi1Ihw4BB5LAQOLCgyQYHihpUU3DBw5ElpAgAYNixSRJjKjQaECDCRPZPDB5IbIGSQwKLnh4wbInLA4kmJB4oaPiAwVNnER40hRK1BIAaVatUZJEFCkmpmjgCeWDCalFe4q4oFKwSRUrEa5gycLzwq8lUnPQ4PEgSpYcUZ5o2cIlS1O/JHLEDdfjQZMIVrpgweLFy5e+M6WSmBGlxYMYYBRzCaOFi5imHWBIfOEiShLTVjaP6eyFTBmN1TA5OvLDjJksWb58OVMGDRqWjAYdmU79SIvpjqJr104nEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-editshred22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBFRSVExKTERCRDw6PDQyNCwuLBweHBwaHAwODAwKDAQCBExOTNze3NTW1MTGxLS2tJyanOze1Pz+/Ozu7BQSFCwqLDw+POTi5MzKxPTu7LyyrIR+fCQmJPz6/Pz69Pzy7Pz29OzaxPTu5PTq3PTm3My6pPzu5PTq5NS+rPTm1PTi1PTezOzWxPz27MyynOzSvMyulOzOtOzKrMymhOzGpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbpQIAwIBgMCAXDAZFQLBbCqJTRqFobjgdkEYFKowPJZEyeUBqVR/crHDTKZYplovZKCW84+YKZZNZSBXl6EwEEBhVPXxZihGMaGRscdkIdg4QeEnVfCH2OHyAhIhuUAAiXZSEhIyQlJqWnjiEnKCWupRWoYyEgJK0SKaUKjam0JCorLMFfC6iqx8giLa/MGAsT1wsuCyULKwssC9RSzdkfCyALKuALLQsvpeXYIQso3gsiCzALMfENC+dGcMNHUAY/f+jq3ctncMYCGggFrsvHcEGNh/EyPFmg8cmrJxAVkVO0EUDJklHoBAEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-edittrash22:edit edit22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBERGRExOTDQyNISChBQSFCQiJCwuLPT29Nze3GxqbDw6PGxubHR2dJyanLSytJSWlJSSlOzq7Pz6/Nza3Ly6vFRWVBQWFIyKjMTCxHx6fIyOjLS2tOTi5PTy9OTm5Hx+fNTW1KyurKSmpJyenExKTMzKzKSipFxeXCwqLMzOzKyqrMTGxLy+vHRydBwaHNTS1DQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb8QIBwSCwaj8KAMoA8LgUDQsFwQByay4RiwWg4GA9IRGk0SCYJSsUCsVwwGQ1EsmESD5xOp+L5gDwhBRIZDhcDdkMGDgEiIxAkJQ8Ok5MmAohDAQ1xJxUlKCUlEg0pKpiZJRoLCxmtCw1eURhOcR4rbQ8cGRwLAwgGtBYTDywtGRKjvQTARgEZLhMcKC0OrQMvAirMRc7CHCTU1g2+20TO0NIn1RwDCya/wdHT1Rnt5LToKOq79trx0tR02YPX7Jm8fRxMOIhSLhOJE/LCJSTlr5kFEBQsWDiR4UGGBgsuHDg1BEYAfTE6oEBR4AIBAiS5yWBAAAGBAyaPGAgCACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-fileclose22:file file22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBERGRERCRDw6PCwqLExOTFRWVHRydGxqbGRiZCQiJISChIyKjHx6fDQyNBwaHJSWlKSipBQWFJyanPz+/JSSlCQmJAwKDCwuLBweHBQSFGxubExKTISGhDQ2NFxeXFRSVDw+PAwODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbZQIBwSCwaj8jkMSAYDAgEJbFgOBwQCUOAoJAaFgvGonHIBhyP5BcSgUAYDWxggD4WFmx3e3HQngkSRgYMEBMUFG4MCId0BGlEAQeEhocVDYcUdBYKF0QCB3gRlJgUAQEYBBkaRAMbDZMMpAYcT46rQwMJrgsdC6QcfwoPnUMOBgkIV6SHHg6bw0QEAQYfBpggBZjPGsRD0gEchxwCIR6HChnQRQ8DIU4DTR4Em+ncRw8O+fmoXPXdRg+gQLFgIYM/KRIkoDP4QMKFf0o0aBAh4qGUixgzCrETBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-filefind22:file file22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBQSFJyanLS6vLzCxISChNTe3OTu9Oz6/Nzy9Nzy/NTy/OT2/Nzi5Mzu9Lzq9KTe7LTq9PT+/Pz+/Nz2/Mzu/Kzm9Jza5HzK1LTi9PTu9IzW5ITO3FxaXNT2/KTi7Iza7GzC1LzW3FRSVMzO1MTq7HTS3Fy6zFS2vKzm7Lze5MTGzHzS5FTG1Ey2xEyyvJze7JzW3ITa5FTK3EymrGS+zFxWXKymrMzi7ESirEyqvLSyrKze7MzOzMTCxKSepAz+/NzW3MzKzBwWHLzS3ERCRAzi3KyurNze3MzGzLy2vLSutCQiJAyytHRydOTe5MTGxLy6tLyqpKyelJSCdOze3NS+tLyupLSmnKSOhCwuLPzy9Pzu7Oze1OzazOTOvMyihOTi5PTm3Pzi1PTazPTWxOzOtNSunDQyNPzy7Pzu5OzKrNzSzNzGvNS6rMyynMymjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCgwGFhYOIiYQBAgMEAwKHiokBBQYHCAkKCwwFAZOEBQ0IDAsODxARCZ6gAAEGEhMSFBUWFxgZCJ+TjBoMEpkRERscGBGRih0BBAgeFBQOER8gISEfIruIIwEkCCUVwhcgJicoKSrZg9srCRkRGdMsLS4vMNiK2wIKMRsbMiwzXtCocSydIBs3AuCIwIFDiBMucugAoWvSiB2VNPDg0ELHwA0MkCXr4aNSggg8NoDIQOFHgBtAkgURMiDAEAFEVBCJFKCIkSMGOyDRkETJEkOFmABoUsRJQkQdnkzQACWKlBtTplBR6qopxkFRJ0ytYuWKFCxZtBBq+hRA2AlbRrh08fLlCxi1a51g+dQhDFwuYsaQKWPmDBpKXgNETaNGjJgyhNfcVdTTiWI2XpK0cePmzRk4YA5T5otGixY0qFOXbgXAQCAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-filenew22:file file22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBExOTERCRDw6PCwuLBwaHAwODAQCBOze1NTW1OTi5Nze3MTGxLS2tJyanPz+/Ozu7OTi3BQSFCwqLDw+PDQyNFRSVPTu7MzKxLyyrIR+fCQmJPz6/NTOxPz69Pzy7PTu5Pz29Pzu5PTq5PTm1My6pBQWFPTq3PTm3NS+rAwKDPTi1PTezOzWxMy2pPz27PTazOzSvMyynOzaxOzOtPTaxOzKrMyqjOzGpMymhPTizOTCpNzSzNTGvMymjMSihCH5BAEAAAAALAAAAAAWABYAAAboQIBwSCwaiYGAYEAgFAqGg/Q4DCASCsTiymgcHAcqQLB4mM+QiIQBppLPcMjkwQ4bB2X4maKgt4sVCHpnFhQTElNFE3mDDxcYGRp2RBuMgxwIHX9EBZZwHh8gCBmTQ52NISEiIyQlpUImng8hHyInKAgprwAqgnC0IKwrLLpGB4wctLYkwy0uuwd9Z8AnJywsLcVFx2YcL7UnJCwwLTEy0GXJoSgrCCwzNDTnxgjeH9UrKzXwNDY36LRGhEOwLx4NHDmgJbh3QoeOgv127EhojEeHDj16pEhRQoZHHzl+QJNCsqTJSXaCAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-fileopen22:file file22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBAQCBCQWDCwaDDwmFPSubPzGhPzCfPy2dOSmZPzKlPzSnPzOlPzKjBQODPzChPzWnPy2bPSmXPyuZOyeXIRSLEQuFEwyHEQqFDQiFCweDKRuPFRSTPT29PTy9Ozq7OTi3Nze3NTW1MzOzMTGxMTCxLy6tLSytKyurDQyNMzKxOTm5OTi5Nza1NTS1MTCvLS2tLSyrKSmpJyenJSWlIyKjHx+fFxeXBwaHKxuPMzKzLy6vIyOjHx6fDw6NPy6dGxubLy+vISChCQmJNza3KyqrBQSFLR2RKSinJyanGxqZAwGBJSSlCwqLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeDAYqKiIeLj4wBjQCMhY+NkoiLk5qbhQIDoJyGBAUGBwgEo4MECQoLDA2pDrS1tKQPEAwHERITE77AvxKqhAQNDA8UFRYXFs8YBAQZGqGPxw0RGxwdHR4eHyAhIiMkJSYnKCgpBAYPEhcqHyssLS4kLzAxMjM0NTY3cBA4UCAHBw8gVnhgEcKFjhc7UPDj0cMHAAI/KFgY4YLFio/jRpTYsW8GDyCSCEQw2DChOHIqgsCQSEPIEEEEJFhAoUNECCJEyOk4d6KIyRtGcB7hIJKjixEjHu4oimSGEIs4d8IIUoKECnNB0ElMwkNJJgBLlJBAcQKGiR07KGAURVGViY0mhIwwSTKjr99+THjUoIg0r48hTRIrRtxkiOMhDgrZCQQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-fileprint22:file file22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBFxaXDQyNFxSTPTizOzi1FxORDw2NExKLPTi1Pzy9Pz6/FRWVPz29Pz2/PTy7PTu9OzezPzu5OzavAQCBPzy7PTm3OzazOzKrPTu5FxSRERCRGReXPTq5Pzu7ExGTMS+xKSmpOTKpPTq3JSCDNzSfHRydLyadOzCjOzOtOzSvLyyTMTCxKSipGRiZFROLPz+/KyurJyenJyWnGxmbLSabOzClOzm7LSutJSWlJSSlJyanGxqbNze3OTm5IyGjNTO1Nza3NzW3OTe5IyKjHx6fMzGzMTGxMzOzNTW1IR+hISGhKymrLy6vLSytERGRGxubKyqrLy2vLS2tDQ2NEQ+RASKBAT+BFxeXHRudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4QBAgOEiYqEAgQFBgcGi5MICQoLmAQDh5OEDA2YCw4ODxARApKUCaGYEAsSCRMUnQysCwoVEhYXGLOLCBCgDqK5GQUXGooCAhscBB0euBUZEAUJvQgIgx8gIR8iCSPiHuIFEREDJCXaANwhJhsnKCnWERcRKiopFCvsBywhQrRwQWGAPAz5EhpQ9wIABRgKYsiYMTEEDQocatiwkUIEP18fbkCAAcMBjhwzdOyQwYNCgBMfKJSgMItBjxs+btwgCSGGjhw/ZoRgQKGZCRMUPgABEgSIkCE3SZok8qNqkR85NtDUEcPIkaVAkCR5SrJBDCVKlmzQ6pCCiRlMTJo4YUH3K5AeMBYYWctW0BOaUH60cBJFypQmII6wyEpFQBVFMSm4UAI3hJUrOGh8oOJrklYKWIromJGDR99Ogz5j4ZGlM+pEnwmBCwQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-filesave22:file file22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBGxqbAQCBLy+vERCRExKTHRydIyKjMTCxFxaXGRiZFRSVFRWVPz6/Nze3Nzm5Pz+/JyanDw+PExOTHR2dMTGxBQWFLSytHx+fISChOzy9Ly6vAQGBJSWlMzKzAwODJSSlHx6fIyOjOTi5DQ2NISGhGxubCwuLOzq7ERGRFxeXNTW1CwqLPT29Dw6PGRmZKSmpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAb/QIBQGBAMj8ikUDAgFAzKKCBwQCQUCcICKh0SEAhGw5EIZAmBrgCxeDQgcDJWyz0GIggJfL+XGwQJRxNgC3yGDwwUFUZDFhdthnwMGAZNQwEZFwQakXANBBQbHIIdERIBnRAOiR4ERx8gsSEMBBmGCyEGG3YGBwcgIr8UCwQHECOgG4xCtRkEJAvBJRklJgkSFBQeJ68hJiEoESkFKiEZIbkGARsLlwEGExENGhorGSkpFAYm66NDLAECpGiBYsUIFA8wLHBBQMWLVkdUCFCwaYVFBOymkVCgYEMgOykEpICBccMBAhhELFigTEqAAgIIwCiQ4eRKDyS6EAlJIAI0EpaudF4iIKDAAn9CkRT5eMROEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-foldernew22:folder folder22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBNzaTPT2FISCBCQaDPz+BExKBDwmFPSubPzChPzCfPy2dPz6BMzOTAQCBOSmZPzKlPzSnPzOlPzKjBQODPz+rPz+3PzWnPyuZPSmXNyaXPTyhISCLIRSLEQuFEwyHPy2bKRuPFRSTPT29PTy9Ozq7Pz+xJyanDQyNPzGhMzKzOTi3Nza3OTiVBQWFDwqFKxuPOTi5JSSjISChHR2dGRmZFxeXPS2dNTSzNTS1OTm5KSipLS2tLSytKyqpIyKhGRiZNze3NTW1MTGxMTCvLy6tIyKjCQmJMTCxMzOzMzKxJyenHx6fLR2RLy6vJSSlHx+fDw6NLy+vIyOjAwGBGxqZKyurCwuLBQSFJSWlCwqLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeIiYqLjI2MAY6HAgOHBJYEhJCDBQaDmgcICQoLB4MGDA0OAQUBDg2cAAcPEBESE6QUuQasFRYVq5SxCRcSCggYGRjIGgYbFs8bHIMHExIJGR0eHx7cB83PFhsDDuTUEyAhIiMjJCQluwEmvsAnKAcp1x4qKyUrLLupWrByxcnFiwQIYIggEaNEiRgBZMyYQaNADRs2REA6cCODBxw5+OnQgWMHjx4+BND4MQOIg1gI0gUREkTHiplDhhApEoCGkRlHBL3I8MEHEhz+WAhJogTJySVMfthwIehAExE5jubAkYQpESc8fOx4AiXKNA8+ekhBgqSpzh5hPHcsmVLjpSAqVZBY6VGkiJMiPQKLnTvjCiEsWU4o3nGC8YksMmT8YCmC6iAXKLRc2cz5yGYtR0JjKWQgEAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-mailforward22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIcAAJR6fIxydIxubIRqbIRmZHxeXHRaXHRWVGxSVGROTFxGRFxCRFQ+PEw6PEw2NEQuLPwCBJR2dLyijPTixPz69Pzq3Pzy3Pzu5PTu7Ozi1LyelOzavPz+/DwqLLyafPTmvPz67Pz29Pzy7LSWlPzmzPz6/LyajPTitOTSzMyurPz25PTatPTi3KyOjPzuxAwqVDQiJHxiZPTetKySlPzqvPz27BQ6bAwmTPTexLyinNzGxDRunPzy5KySjCQ+ZNzq9KTO7JzC3Nzq/Ozu/LzW7FSm1BR6vGSWvFyq1AyGxAxytAx6vBSKxAxSjMyujLSunES+5BSi1ByGvAQCBNzCrOTaxNTOvMS6rKyelCx6rBx6tBQKDOTWvPzu1PTq1OzezAQOHAxGdBROhAQGFPzy1NzOvIRqXLyynOzarPz21Jx2XPTWrLSShAw2XKSCbPzuzAwePAQCDPzyzPzqzPTmxOzWtAwGBKyObOTSrNzGrKyGbOzatEQyNKyCZOzWrOTGpNS2lCweHCQaHCQWFBwSFBQODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBhBwgQKFSpY0HgBQwYNGzh0mDhRAAUPHziACEGBpYgRJDiUGEkSwoCQJk6opNASRQoOFETQJDkggwoOJlYApcCihQuVL2DUhBDjhIqjJmRwwDCDhswaNm5MjYHjKggOOU7o0CGTA9gdYknG2KCCBw8VJVL0uBgihAUfP+CSNGCjsI/DiBPbAMJBsEQbQYQM+UG5smUiRYw0jlvYxhEkSYyIHm1EyRLTTH40EZvAyZPOR4pAmU07ipIkUKQ0mQIhAZUqVq5gKXzkSBYtyLVEyd1ki8QFXLp4+WJFQowbYLJnD5NbzJiJCjaQnhnvpYwZM0/OPFlvQ/f3iQvQpBlvQc0aCWy4VKnCpY0Y5yQxgEYXZFjghgwZUOHGCW90YQEccUwloBwGyjAHHXUoSAMZb0xhx1QOoMHDHSfIwSEOdTjhAQ1d4MFbTQ6Q4MYacrzxhhx04JCHHhvQsMeLJPHRBxpr+LHCGnusgccfgKixQR1ATtTBlDDAEIggggxCCCGFbLGFHVFKZEdAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-mailget22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBBQ6bCQ+ZAwePKTC5Ozu/NTi9GSWvAwSJGSu3JS+5CR+rAQOHPTy/AyKzES23AwOHCw+bOTq/BR6xES+5AwmTBw6ZMTW9Ax6tByi1BRGdAw2XAQCBDQuNDRupKzS9FSm1BR2vBym3EzC7CSGxBROhNTW1Pz+/OTm5NTO1AQGFNzW3Ozq7Ozm7IyKjJyWnMzOzNzq9Nze3OTa5Ly6vCQiJGReZISChKyqrAwqVBRWlOTi5MS6xJSWlNza3OTe5Ly2vGxmbKymrIyGjMzGzISGhKSepCQmJDw6PHR2dJSOlPTy9MTGxLy+vLS2tMzKzLSutMTCxLSytKSipJyenKyurJyanCwqLCwmLCwuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4IBhgIBA4SLjAABBAUGBwiNlY4FCQoLDJaNAQ0ODwsQnYwREhMUE5ylFYYRFhcYGRgaGxsDHJUdFR4SHyAhEyIjJCUcuo0cJr0nExihxgwoyYscKSnMHicOIw4lKissLdWDHC4vMCu9McYqMjMyNOUANTY3OPEoOTolDCszdrSgwaMcBxs9TMxYOCMHBx8zfPj48QNINQ5BbMBIIUShDIUoTAhR94PHPEEHbQwZckOGjBQviMxYUWQIDCMmdXE4gqRnkiFETAxR8iKFjJU2evZEdmLJkgJIbqS4wXJIUapImj5FtuSEVyRVV1IVi4RIChhEkLVAgcJHEqVwVJUmYdKkiRNkALMRecKECRG/ff8CEQJFCA5kMKJEoUHDCQ/HkB9LmWKECpUeyKoIMSLEyosen0OD7iH2xg1dV7BkqXGlBpbWNTq4Zn2khu0aAAwEAgAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-mail22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBDQyNCwqLCQiJBwaHBQSFAwKDAQCBDw6PPz+/Pz69Pz27PTy7PTy5PTu5PTu3PTu1PTq1PTqzOzmzPzuvOzitPTmvOzivAQGBDw+POzevPz67Pz25Pz23Pzy1PzyzPzqvOTavERCRKSilPz21OTevIR+ZExKTOTi3JyanLS2tPz6/Pz65KyihJSKbMS6lExOTNTW1JSWlJSKZMSylNTOrNTKpFRSVPz29MTCxPTmzKymjIyCdOTWxOzexOTWrBQWFFRWVOzu7MzKxJyalOzatLSulMzKtOzmxOTarFxaXKyqnPTmtIyGdIR+bOzetOzixBweHGRiZOzm3NzWzNzSrOTetGRmZOzizOTexOzm1JSKdGxqbHRydJySdHR2dOzapHx6fKyijOTixCwuLHx+fFxeXERGRDQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4SFhoeIiYqLAQECjwORAwSUBZYFBpkHmwgJCgsMDA0OD6UQERITFBMVFhcVGBkangq1ChsLGxwcHQ0dHR4fICEGIiMSCbS3uLq8wCQUJSYGJygpKhQJKyvLLM4Nwi0uLwUwDQsxMtmeuQveHR8UMzQ1NgU3Dgo41jk6ns0cKOzgYaOHjx9AgjTAUUvIECLZNmxoUISHkSM9KiBJQkCJA4kKEoBQoWJJAiYtmjh5AmVCsCJRpHzckKCCySlUUvBYUqUHDysSPnxIEuXKA5pPRiRwxwFLFhRaIEDYUoEChCcDuECoOWKFuwW7nHkg4WELkw8/BHRRwESpt10dU8SSHevlRxIBX6C0WBE27q8GZMkKbTADjIAwYlb4GLMYShYoPTRo6FGiSJEKPyzMIFMmzJcvXbhwkSLFjJkbQW6cOHNGhAgEAdAsmk27tm0ABgIBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-mailreplyall22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIcAAJR6fIxydIxubIRqbIRmZHxeXHRaXHRWVGxSVGROTFxGRFxCRFQ+PEw6PEw2NEQuLPwCBLyejPTixPz29PTu3Pzu5Pzy7Ozi1LyelPTavPz+/DwqLPz67PTetPz69ERCRLSWlPTmzPz6/OzexLyajPzqvDw+PDQ2NMyurDQiJPz23PTatJyenAQCBPTevPz25LSajOzq7HxiZPTexPz65JyanBQ6bKSmpBwuTOTi5OzaxBRCdHySvGRiZHx6fBQSFERGRNzq9IyOjHx+fGxqbPzu3BwaHFSq3Aw6XAxKfPzy3Gy63ByWzJzO7Mzi9OzavBRytAx6vCSazGRKTPzy1AQKHBRGdBRyrDy63ES+3Cym1CR6rBwWVAQSLAx+xCyCtBRmnPzuzAQWLAwePPzyzKSCbAQOJByGvOTWvPTmxBQODFQ6PPTWrPzqzOzatAwGBKyObLSWfPTivKyCZEQyNKyGZOzWrOzWtOTSrOTGpNS2lJx2XDQmJCweHCQaHCQWFBwSFBQKDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBgggoQJFCpkzGjhAoYMGjZMpMghQgcNFjh4mODhA4gQGkSIHAmBwAgNJEpo8KDSxAkUGjhMSEGz5gUVIiKs2PmBRQudHiwQpUnAxYsXImB0aBqjBcuoU0fKmPGChgUNH2qIqGHjg9u3bicWIFs2rYgbNnDkyGFhb8cccQ3ouJqWQo0dPFr0WMy4h48LFj4gsKriB5AeNngEaSGks+chPnwQOXFAh4oXRYxk9nAEyY7XO2wksWHDx5ATCDIoUXEBsYclTJo4cWJhuIjhSXacSPBEiZLMQY4wgRKluvXqUpyIsDElAxUqVaxcwcGCPQuWLOixaNHCZAsXBU+oqKDSxQqULF6ifNmyn/8VMOtxwcAK36kQRhdJQIFFEmKM4eCDYGyhhYAEkqFEGSuYYcUZLaDxXRpqSNRCEu6twYaFZXTQhgRd2NCCG9918AYELTjoXgNuKAFHB2RQEUYHVbQQRwlUpPHGGFwkyQUEDsgxx4lh9BhCBy2U8UQJcrSg5JIQ0FEHG3bc0QGYK+CRhx57PEGlkhM9sAEffKTQhx9+/AEIIIGoEUgLLRRFR0AAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mailreply22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIcAAJR6fIxydIxubIRqbIRmZHxeXHRaXHRWVGxSVGROTFxGRFxCRFQ+PEw6PEw2NEQuLPwCBMSihPTixPz69PTq5Pzy1Pzu5PTq1Pzy7Pzu7Ozi1LyelPTavPz+/DwqLLSajPTetPz27LSWlPzmzPz6/PTexPz67Pz29OTSzMyurPz25LyajBRCdPzuvDQmJOzexPTevOzq5BQ6bBwuTDQiJHxiZPz23Pz65LyinPzmvBxCbHySvAQCBOTi3OTq9CweHOzaxFSq3Aw6XGy63ByWzJzO7Mzi9OzavNzq9BRytAx6vBR6tPzy3AwOHDy63Ax+xCSazCym1CR6rBwWVOzizAQSLES+3CyCtBRyrBRmnGRKTPzu1MzGtAxKfAQWLAwePPTizMy6nByGvNzWxOzWrNzOtBQKDJR2ZNS2lPTmvBQODPTatKSCbOTaxLyqlAQKHFQ6PPzyzPzqzPTu1PTivOzWtKyObPzuzOTOtLSWfPzqvAwGBKyCZPTWrPTmxNzKrEQyNOzatOTGpJx2XCQaHCQWFBwSFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBgggoQJFCpYuIDBQgYNGzh08DCR4oQPIDqEmDBhJQYRIzqQIFkSAoESJCKkDGFiwgkUKTpMwECz5IASKjqsSMlSA4sWQjG4qGnzhYoQSmF0iCFjBgmWGWhQrVHCxg2sOHLo2MGjB0sLYmsWQHq1p4wdPtqemGDhB1UDQFSouKHi7oQgQmSwUMyYxcQDZQWz2EFiCJEiRoyQyLzZyGIIB47YKLwDSRAiSZSoXq1kCRHNLBK8YGKjCYskTp4ogeKkt+8oUaBImZKAAxMmVKrctqL7ihTnz7FkAT5FC4cKFbZwadIFdxcvX8KLss8iJcoUBUcq2KgAJoxyMTy4jCFTxoxEHl2GLyCDncmWM2hUIQMPY2CXhhoTfTEcA2tgVwEba7Thxhs88FdBD/ZB8MUUHMJBRhw2sAGCHBKU4UaFc1RAhxnhcdhhHUzYAUIcFdxRAh4R5KGHinu4OIVEDqTBRx81xhGHHzD8wQYQetDRI4cTAcIHGWT0EQgZa1ApCBqDcBAID1Q94IEHLtBAAyGEFGKIIWqYYQYPYNZkQEAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-mailsend22:mail mail22 22:photo:22 22:R0lGODlhFgAWAIcAAIR6fIRydHxubHRqbHRmZGxeXGxaXGRWVFxSVFxOTFRGRExCREw+PEQ6PDw2NDwuLPwCBLSijOzixPz69PTq3PTu5PTu3PTu7OTi1KyelOzavPz+/DQqLPz67LSafOzetPz27Pz29KyajPTmzPz6/NzSzLyurCwiJPz25Ozi3JyOjPzuxBRGbAwSHOzexPz23KSSlPzqvBROdISavBxSdAwaLHRiZLSinNTGxMy+vBxGZNzu9BSGrAwWJMSyrKSSjFy61ETO3BRWfPz65PTqzHTK3ByqzBSWxEzW5AQWJOTWxBRCXOTu9BSOvDzO3ByavBRKbOzaxOzizKSWlCQ2TAQCBJza7BRWdNzSxJSCbMzq9BSOtCSKrAwiPOTavPzy3LymlCySrAwmPFRKTPzy1NTGrPzu1JR+bOzatPzyzCy61ByGpOzWtJyCbPTmvPzuzIS+3FymxCSuzBR6nJyCZOTWvKSObMSujOzivAwKDOTSrNzKrJyGbDwyNOzWrMy2lIx2XBwWFBQSFBQODAwGBAQGBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABAALAAAAAAWABYAAAj/AAEEEDCAQAEDBxAkULCAQQMHDyBInBgggoQJFCpYqMDxAoYMGjZwmEixg4cPGzqA6BBiAggRIzaQGEkSwgAMJCKgnNBhQogSJlKGOFHTpgYUG0TsnJBCxQoSE1i0KErAxYsOJJRuuAAjhkwZM2jUqGnDBQoUHTbciIEjx4YNOmbs4CGjB8kCZlGAALHBx4+YcTcACcJDyFSJBo6iGNIhhQkiG8BOKGLkCBK6SSQisHoWhZIbG5bMYALECI8mTZw8gTL1QJQXZ6VMiUylSpUlVpoYaXLFtm0EGmCjwJLlA2O9MrRsccKlC8kEXr7AdgEmwtkhX2SQ2BIkjBiSYzSQr/nyhUKZLIrJJOcexvlEBV7IvCBjRkmAMzHOaufhxDvJBWiQISAFxUUQQRovJNeEGmu4JxEDbKQhXxsfuFDGGW68IQMcccgxRxUkNRDhC3R8QMQIdZwXQ11JJGFbiB+QYccHaaTxhgt13OFBDGTgkUdRDrhAhx5k2JjGCB/swYcXMXwAYk190OGHHx/4wUaVepTxByAaoPEkSQ5wwMEJZAZipiCDDJIHIYV8OZEdAQEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-nav1downarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBBQSFAQGBDQyNExKTHx6fGxqbFxeXGRiZFRWVDw+PAwKDJSWlOzu7LSytJyenJSSlISGhISChIyOjFxaXDw6PPz+/MTCxLS2tIyKjKSmpKSipJyanAwODDQ2NHRydERCRFRSVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZzQIBwSCwaj8ikcslsOp/OgHRKlQoCgymRUDAcEIkwYgxWFBYERpHQcDwgEclEQmk8DhWL2kiIXDBwExMNGRoJaUkEEH8bEQ0cGgcWAksEHX8QHBKSHk1sfxMHH5ROBBsOICGkT2wiq1CIULKztLW2t0h2QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-nav1leftarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAQCBExKTJSSlHx6fAQGBOzu7GxqbJyenPz+/LSytFxaXMTCxGRiZKSmpISGhFxeXISChAwKDFRWVHRydJSWlBQSFERCRIyKjDQ2NIyOjLS2tDw6PBwaHFRSVDw+PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZ5QIBwSCwaj8ikchgQLJGBgfNZDBAKBirRekBMtYGEYsHIgsWNhOO7tCrShDU18Hg/CJAIG0o4wCUQcksTFBUSCRYSEnpUFxgIGQkJGYyNGggbHBaVjR2QCxEeWkITHQ4IH3tPFwEMA2ajAKUgqlQTTbFEE7W5vUgGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-nav1rightarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNGReZAQCBMTCxGRiZMzGzOTm5LSytPTy9Pz+/CwqLOTi5Ly6vCwmLMzKzJyanJSSlBQWFKymrIyGjCQeJJyWnISChISGhHx2fKyurDw6PAwODHx6fHRydDw2PERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZ2QIBwSCwaj8hkMRBQKgOCgRMZIBSk06XhEM0SA4iE4uoVLhCMhqLrdSAekMgYO5VM4BQ521mxIC4UFxBWdEkSERYYFxETGQGFSBKCGBEaGRuQSBwdeZaPXpsQCB6YZQMdEI6ZSgMepKusHh+wrCC0rLdlursGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-nav1uparrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBFxeXDw+PMTGxHRudPz+/JSSlLSytIyKjHR2dISChIyGjIyOjLSutLy6vKSepJyanISGhJSOlOzm7Ozu7MzGzKyurJyenDQyNGReZKSmpIR+hCwuLCQiJBwaHBQSFAwKDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAZtQIBwSCwaj8ikcslsOp9QYyAQFQYEAyr0Sihkn1fDAeHVLsOJNELxVaITC0bDUU6GH5AIQ8KYrNtFVxQVFBYWFxgRCREYdUQZGhYEDwgIGxAHCQocCgWOQhmhGR0epR8gqCFTq1Wtrq+wsUt0QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-nav2downarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBAQGBBwaHDQyNExKTHx6fGxqbFxeXGRiZFRSVDw+PAwKDJSWlOzu7LSytJyenJSSlISGhISChIyOjFRWVDw6PPz+/MTCxLS2tGRmZDQ2NAwODJyanKSmpKSipIyKjHRydBQSFERCRExOTFxaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAasQIBwSCwah4FkQKBsDpoBIqFgOCASCYRWm1AUFgRGkdBwPCARiWRCaTwOFYvYSIhcMOiJpJGZaDYcR0IEHXceEQ0fICEWIoJDhHcQHxIHgI9SEHeVG46YUh8OISOen1INCqWmUnOYTUxQAU9NUlRWWFtbCiRgrYNlZ2lriG8lYUd1khETE24gCZeCkRgeFBAQIAeNn9OTlXKrBJoYnKrcoaPmpmSpq3S+7u50QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-nav2leftarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAQCBExKTJSSlHx6fAQGBOzu7GxqbJyenPz+/LSytFxaXMTCxGRiZKSmpISGhFxeXISChAwKDFRWVHRydJSWlBQSFERCRIyKjDQ2NIyOjLS2tDw6PBwaHFRSVDw+PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAavQIBwSCwaj8gkMiBYNpeDZzEQXRIKBmPgmtUSDgipcAsWjxOKBaN7Tq+n6EbCIQ3E5+KtQk6gjwl7CX11D3sPBBARTQGFDYeJT2R8EhB0koKUfgATFBUSCRYSEoqcnqCiikMXGAgZCQkZqautr7FiFxoIGxwWqQC4ury+qh2tCxEexMbIRhMdDggfYs7Q0kcXAQwDbELY2txEziBmmx3jSRNMR+nk4e2b70ry80QGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-nav2rightarrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNFxeXAQCBMTGxOzm7CwqLLy2vPTy9Pz+/Ly6vCQiJLSytLS2tLSutOTi5MzGzKSepIyKjJSOlKSmpMzKzJyanIyOjBwaHIyGjISGhJSSlISChBQSFJyenIR+hGxubDw+PHRydHR2dEQ+RHx6fERCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa6QIBwSCwaj8hkIIBcJgEBweAYnTYJUmMAa9USClniFtwlGg6IRFhoUKTXwwWj0FB3F46Hwl6UQyISfAB+EROCQgsUFRYSF3yJEIyBaxgWDBkaGRtclQwSHBIbEGEdGx4fGhcOICEDGBsWHBmqIq1CHRIWGRMMIyRTHRy6Er22tyONq8YdJRe0xkIDwr2/QwMfliMmZQADIxasZd4e4UYDIr7c59rc0eVFA+/m0EQD9PDt0flP/P3+BkEAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-nav2uparrow22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBGReZDQyNMTCxHx6fPz+/JyWnKyurHx2fDw6PJSSlISGhIyKjIyGjISChLy6vJyanOTm5PTy9OTi5MzKzLSytKSepMTGxMzGzLS2tLSutKymrHRydCQiJCwmLBwWHAwODLy2vHx+fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAajQIBwSCwaj8RAAMkUBgSDZdP4JBSi06TAcEAkFNLp07BgLLzY5njRcDzO3zB1C4lEGI83Wj58SiYUFRUWdg0XEXFFAwIYGRoWGxwRZQUFHZdgRAObmx4fHiChISFKpVlKWUdPaalOAlasp1sHG4myZGZ7Yltsbgu1mUhjdRF5egmxfQJ/gYOFdrZDi40iFgiSCw8jBQmYcpydn6Ego6WorUwGQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-navback22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VCRGZAxCZGyavExmjHyatOTy9CxihISevPz+/KzO3BRylAw+XAQCBDRWbPz6/FzC3CSuzDyexJzO5Mzq9CxSdAQOFISmxNzu9HTS5BSmxAyexDSuzJTa7Mzu9Kzi7GS21CRmjAQOHHSWtLze7AyWvHzG3BRihAQKFCTO3BS+1AyixBSWvBSOtBSStAQWJBSixDzW5BTC3BSqzBS21CTC1ETW3AQSHEze7BRqlBRmjAQCDBR+pBRefBRSdCH5BAEAAAAALAAAAAAWABYAAAalQIBwSCwaj8ikMqBcMpvHgGAANQYIhWdVGDAcENQtIJBQLBgNx0MQaDuQXcghIplQDhBIxXKJYiAZGhscHR4VHyAhIiNWJBklGhIbJoQnFCcTKIxFKSgbKissJi0mJi4vLiYoMEcXKDEyMzQ1Nje2NisoOEg4KDU5K6g6OwwoKAN9SCOeMmgwz884PEq9PT4NYkPLP9jZQikN3d4AKVrjKePp3gZBACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-navdown22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VCRKZDRSbBxCXJTC1Mzi7Nzq9NTm9Bx2nAQCBNzu9JzG3Hy+1HzG3IzO5BRmjPz6/LTe7Dy61AyStCTC1FzC1AyGrETS3ETC1ETa5BRulAyuzBRylAw+XMTe7Gy+3CSqzAyexBTC3DR+nIS21KTW5Nzu/KzO3FzC3Pz+/ByixEze7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaRQIBwSCwaj8ikcnkMBAQDgjPAFAYKhsMBkVBUAYEFo+F4QLzVQEQyoVTOX/XBcsHA0+vMRbNBMwkRDhxuHX5GTlIeHh8gISIjFAEeiVRECiQlDAUmgxQjIhwiJHdFlycoKSIUFCEjGiGkRpcqCxYijxorsUezcxYsuoZJsxLAu0qXB7DCTJfHVQrMX9PU1Uh0QQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-navforward22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VAQCBBxCXDR+nIS21Aw+XJTC1Nzu/KzO3Pz+/Nzq9Pz6/MTe7KTW5FzC1Nzu9CRKZMzi7IzK3Lzi7LTe7HzG3Gy+3AyuzAyexFzC3DRSbHy+1Dy61CSqzAySvAyStLze7IzO5AyGrETa5ByixBRmjCTC1ETS3BTC3Bx2nAyWvEze7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAaYQIBwSCwaj8hkMqBsBgTN5IAAjRoDBaq1aDggtMuAWDzoJhTgY+CwYLgZDccDwkgXI5IJZVGxXDAZGnR2QxsLHB0PHRgeHyAZDyFfVUQDCyIgIyCPIB+QJCUmlEMBEiInKCQnKSkeKSQeomoqJrUmKiArKSwZsmoCwMEBGCyxo1EGHr3HUQEEvltCBtDRAAbMW0zV29xDBkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-navhome22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIYAAPwCBAQCBCQiJNze3ERCROTi5MzGzLy6vDw6PKyqrKyurBQSFGRiZGxqbGRmZISChEQ+RExKTExOTHRydDQyNOTe5FROVLSurCwqLMTCxPT29Pz6/LSutFxeXLyytLSytPz+/JSWlKympPTq7KSipNzW3BwaHHx6fKx2VJRWNHQmBFweDOzq7Ly+vNTW1JxWNLSajPTe1Ny6pKxWJNTS1IyOjJRmbPTi3OzKrNSSXMSGVHQiBHx+fJSSlPzy9IxOVOzWxOSyjNSCPLxeDJyWnIRGTOTGtMxmDLRWBHwqBIxGTLRSDDQuNNSunKxKBGwyNMSafMxqHMReDKRGDPTu9LxuPLxaDJQ+DIR+hGQqNIQyBGQiBNTO1EQKBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAf/gACCg4QBAYSIiYQCAwQCiokEhwACBQYHBAiQhAiHlQYJCgkEC5uCkp8MDQ4NDwylmwgQlgQRERIEBBOkmxQVBgQWFwUFFxEEDLyJGAUZtQoFGhsFHLYdyoOVHsEf0SAbIAUex8mwlAUhtSIFG+3uIyTWvAIGJMEkJe76GyXbEeWUBJg4USKaBhQpVKzYoIFFiwYUBBJa8MAFCw0vYMSQMWOhBhoTKCQSUKMEiw02buDIoWOHBg0GeIhEFKAHDR8afgAJImSIioYliMws1MPkhiJGchxBkmTDCBo1hg4KQMTiBiUyhBxZ8pNFiR5MEtU0WqSJVidJNDyNKraHC5xPNKBEkTLlJ5WvUgWNvfikyhArV34+7ZEXQAAsB2iUyHLlihYtW0pwOYAFgyJDmDNr7jIIWiAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-navup22:nav nav22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAw2VAQCBHSWtBRmjAQOHISmxNzu9BSmxBRihHyatPz6/Lze7CTO3BSixHTS5BTC3DzW5ByyzPz+/OTy9AyexEze7ByixGyavKzO3FzC3AyWvBS+1BR+pAQKFCRGZExmjCxihBRylCSuzBSWvBS21BSOtBRSdAw+XAxCZDyexDSyzCTC1JzO5JTa7DSuzETW3BRqlAQWJDRWbOT2/Mzq9HzG3JzS5Kzi7BSStGS21CxSdCRmjAQOFAQSHAAAACH5BAEAAAAALAAAAAAWABYAAAaeQIBwSCwaj8ikcqkMCJjHwIBQgBIDhgMiUbUGFAtGw0GFfheHByQi4S6/E8pDUoFYLm5kAEPJaBAVGxIcER0JHlEfICEiIxUkGyUmIgknKIhXASkonCorgSwmKQGcKE9IAi0uLxUwMTJWMzQ1NiYwBLBQHws1N7avXgs4NjkcCblMATU6KhvGyG87PAnUKV1MAj0+2zIFp1bg4eJJdkEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-playeject22:play play22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAwKDJSWlFRSVBQSFKymrOzq7HRydERCRPz+/MzGzISGhJyenKSmpGxqbJyWnJSOlKSepLy2vIyOjGRiZPTu9IyGjLSutFxaXExOTHx2fGReZAQCBAQGBBwaHCQiJLSytKyurJSSlFxeXNze3LS2tIyKjFxWXHRudAwGDBQOFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa1QIBwSCwaj8ikcqkMCJjHwIBQgBIDhgMiUbVKFQsGItBdBhpgh4PxIJvRC8cA4oiMy8bvQhJhMAYTFBVOURAWEw0QFxcMERAYCBluVxobDxkVHJocmBwEGgmEQx0dHh0CpKmkH6odVlanBR8FtAIFtiCkSB0LISEiGCIGIxAPDySuRwIOBwrOzwoHJRHJRh0jJgMj2gMnERQUCNVFHQQoCBvo6CkICATjRB0qp7b1K6qv+foyQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-playend22:play play22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNFxeXAQCBMTCxGReZBQSFOzm7AwKDKymrJSSlFRSVCwqLLy6vPTy9OTe5Ozq7CQiJLSytOTi5BwaHPz+/HRydMzKzKSepJSOlKSipJyanIyGjIyKjKyurISGhMzGzJyWnHR2dISChIyOjLSutDw+PERCRHx6fJSWlIR+hJyenGRmZHx2fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa6QIBwSCwaj8ikMBBQKgOCgRMZIBSkxYHWoDVWD9EigpBQLLBERsPxCA8NDUhjgTBGJJNGG02RVBQWdUV3FxgZe0IGfoAGdhoXGxwdiAYef4FGFBoeHB8dGSBRihUhIo1FBhkbIyMkJRYmAwYal4JEBh2RChIWJ1IIGxUZFqdECCgkHR6wWAYpFR2YWSobvL5vFgfDaEMDIivMRBEsD9HcQgMWvecDLB0tZ0btsfJa9vLXU/X6/P3+b0EAACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-playpause22:play play22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBAwODMTCxKSmpJSWlFRSVAQGBBwaHLSutOzq7Ly6vCQeJPz+/Hx2fBQWFGxubLSytJSOlBQOFAwKDJSSlJyWnIyOjHRydNze3GRiZAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAWBICCOZGmeaKqubOumQSDEgRjPMSoMRGEcol3vh0IkFAtDDWBEKlGMRKPgEIii0yrqIS1ArADu9KuLNCSOSdCMVp8ohEZFC4DL6SaBpXGh6/l4JX8XZACDhXkYCn1LAoqMUBAZEhBLDJKUSyYBGmhPAJyemiU0NDaloy+qq6ytI8whACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-playstart22:play play22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBDQyNAQCBExOTAwKDAQGBJSSlHx+fBQSFMTCxKymrFRSVOzu7GxqbLSytLy6vJyanPz+/GReZBwaHHRydKSepKSipGRiZJyWnAwODLSutKSmpISChPTu9ISGhFxaXJSWlIyGjJSOlERCRIyKjDw2PIyOjLy2vOzm7Dw6PLS2tCQmJOTe5GxmbDQ2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa7QIBwSCwaj8ik0hgQLJGBgbMoqBIKU2LAcMgOEQmFYeEFbBmNMgDhYDwWBC0k4pCoJ46IgRIXBioRCRYXamwRGBQIfgaBFhiERhkaenxmCoEbBhyQRYaIGVsdghgem4UWegcEBB8UHhsgIaZGBBgRIpUIIxQhChginEQIIBEklWslFyYnBsFfFCi4WQgpFBwqFxNGKxcsxl4IAS0NZEYCF3vlwgEfUuZV8JEuI2pPAARN9kcE9fr+SwaCAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-playstop22:play play22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBAQCBAwKDBQSFBwaHCQmJJSSlISChJSOlJSWlGxqbGRiZNTS1PTy9Pz+/Ozm7OTi5FRSVIyKjOTe5MTCxIR+hExOTHR2dLy6vLSytLy2vHRydFxWXIyGjIyOjPz2/FRWVHx6fExKTMzOzJyanKSmpKyqrKSipAQGBLSutHx2fDw6PAwODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAa1QIBwSCwaj8ikcslsAgKCAWEQjQ4KgSwyYDAcugZEQqFYYJECA6PhaLcfEEUkgJZAGJB8fkKpWOhHAxcOGBQZGBoaGQgbHIBGAhUOGR0SBxISBh4Xf0iCHxQSlRIIXhsgj0UCIaCXmJgHGyKpRJ+hmB5dHQqOaCENIx0epBIkBhdzngoPGCQlJifQJBvJRygRKRcKGxcXGypys1srEREc5SLnICLiR1koLFVUWfRO9vf4+UwyQQAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-textblock22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py30Bo5zBWUWzvNzo33GfFl5jVlonlTrr1DbvFi9vjeeNUQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textbold22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIxhI+py+0Powm0VnknjVkH2AEhE45LZ55Wqn6e65TsMc5eYosbksswubJIhsSiccgvAAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-textcenter22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py30Bo5zBWUbz3Sh7yIWfFHKjVl4nmFrr1Lpr7LwkjeeIUQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textitalic22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py+0P4wqUSlQvttrkDnyaOHIdeaGRupplAIauVM3xjeeOUQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textleft22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+pyw0Bo5zB2UXz3Sp7yG2fFJajVjonmIor2TJvfL0wjecIXQAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textright22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAImhI+py30Bo5zBWUfz3SZ7yIXdF4kWqZkbCqoMO7kXLC+wVOe6YRQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-text22:text text22 22:photo:22 22:R0lGODlhFgAWAIQAAPwCBAQCBBwaHAwKDBQSFLy+vLS2tJSWlBQWFKyqrFRSVCwqLDQyNNTS1GxqbFxaXJyanIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAVcICCOZGmKQSoMaZsShBsQBdAapHvgaIDUqUPJlRjSbAoT0fRDKgODRbF0PLUYjZO2F2Bst9evNix+dsvDlGKK5jraudQb7qbX6a2HEJ+ycyF+LRE8ZTI+fX5oGCEAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-textunder22:text text22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIvhI+py+0PowmUnhpeVVnb1DkbCI1I2JhX+Z0sOr2cTHpwK7a4rUr+hAnufsTirwAAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewchoose22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBFRSVExKTDQyNPz69PTq5Pz+/OzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARTEMhJq70466Cl+AMxBVwnFIVRAmQHCIeBrC1L3tQgJ/SaEbeeC1PLBHE2ybFI9A1HzstHEIK6YCmhDTmBybQaHYJn7QC5zKeytIQe1+pKNE6P2yMAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewdetailed22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBFRSVExKTDQyNPz+/Pz69PTq5AQCBOzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAQ+EMhJq7046817+MLQUQFRGMc4lQaSAkcMx3QltMmrDrSu/sCgEPgJhIiFk89DaL1qPRnlhsgBebWhdstVESIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewicon22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBFRSVExKTDQyNPz69PTq5AQCBPz+/OzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARWEMhJq7046z2DF0PlBeAVEERhiKhqHgWyUgEsX0KczFOO7JeBYciTCImc5ITIXDKHyqhU9AnRqq9UEVDTvmLbGhin2/qAliOUot5OLc81IO5+2+8WewQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewmag-22:view view22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFJyanKy2tLzCxHyChNTa3Nzq7Nz29Nzy9Mzy9MTu9OTy9Nzi5Oz6/OT29MTi5Kzi7NTy9KTm7JzW3ITO1Lzq7IzW5HzK1LS+vMTq7Jze7ITW3GTCzGS+zLTS1MzOzLzq9Kzm7Jze5ITW5HTS3FS2vLze5EzCzEyyvEyutJTa5NTu9ITa5FTK1ESirLTm7Mzi5FS6xEy2vESerESmtFSutESmrKyqrAz+/Dw+RAzi3ASutHRydAQCBAAAACH5BAEAAAAALAAAAAAWABYAAAbKQIBQGCgWh8jksCgYEAaCozIZKBgOiIRiwSgEpstCw/HYQiKRhBcMCBgQDodkMaFU0t9pQHCIyy0TFxgYEVF6GQ4LCQkaERscHR4RH3lUIAkWCyEiIyQlHiYjEJVIAQQJJ2gjJSUoKSorlHoCLBQcHC0lLikvHjCGejEiHBgeMjM0NRwPpFQFDBHFNjceHAjAYFWoI7cnCVE4OWxtex8QH1EBOjs4zUpGUjw6Pe3j2fP19u/47vrq9P3s/avno2BBf/MCClSob4iBIAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-viewmag22:view view22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFJyanKy2tLzCxHyChNTa3Nzq7Nz29Nzy9Mzy9MTu9OTy9Nzi5Oz6/OT29MTi5Kzi7NTy9KTm7JzW3ITO1Lzq7IzW5HzK1LS+vMTq7Jze7ITW3GTCzGS+zLTS1MzOzLzq9Kzm7Jze5ITW5HTS3FS2vLze5EzCzEyyvEyutJTa5NTu9ITa5FTK1ESirLTm7Mzi5FS6xEy2vESerESmtFSutESmrKyqrAz+/Dw+RAzi3ASutHRydAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbIQIBQGCgWh8jksCgYEAaCozIZKBgOiIRiwSgEpstCw/HYQiKRhBcMCBgQDodkMaFU0t9pQHCIyy0TFxgYEVF6GQ4LCQkaERscHR4RH3lUIAkWCyEiIyQlHiYjEJVIAQQJJ2gjJSUoKSorlHoCLBQcHC0lLikvHjCGejEiHBgeMjM0NRwPpFQFDBHFNjceHAjAYFWoI7cnCVE4OWxtex8QH1EBOjs4zUpGUjw6Pe3j2fP19u/47vrq9P3s/cunr9S8gAIRFhTCLAgAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewmag+22:view view22 22:photo:22 22:R0lGODlhFgAWAIUAAPwCBBQSFJyanKy2tLzCxHyChNTa3Nzq7Nz29Nzy9Mzy9MTu9OTy9Nzi5Oz6/OT29MTi5Kzi7NTy9KTm7JzW3ITO1Lzq7IzW5HzK1LS+vMTq7Jze7ITW3GTCzGS+zLTS1MzOzLzq9Kzm7Jze5ITW5HTS3FS2vLze5EzCzEyyvEyutJTa5NTu9ITa5FTK1ESirLTm7Mzi5FS6xEy2vESerESmtFSutESmrKyqrAz+/Dw+RAzi3ASutHRydAQCBAAAACH5BAEAAAAALAAAAAAWABYAAAbQQIBQGCgWh8jksCgYEAaCozIZKBgOiIRiwSgEpstCw/HYQiKRhBcMCBgQDodkMaFU0t9pQHCIyy0TFxgYEVF6GQ4LCQkaERscHR4RH3lUIAkWCyEiIyQlHiYjEJVIAQQJJ2gjJSUoKSorlHoCLBQcHC0lLikvHjCGejEiHBgeMjM0NRwPpFQFDBHFNjceHAjAYFWoI7cnCVE4OWxtex8QH1EBOjs4zUpGUjw6Pe3j2fP19u/4zT766vRI+fvHD4CPgwcJ9qg0UB85JA0dDjEQBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
-viewmulticolumn22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBFRSVExKTDQyNPz+/Pz69PTq5AQCBOzaxOTKpAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARTEMhJq7046813+MJQfUF4BURhHGO6noSBsEcNoDJtS4KcsJQe4ncZ1HYT47HDbDqfUAnJRJmKLIGCCjjJbmE5wBI3EyOFxKCPS1EiJW52dE6vZyIAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw==
-viewtext22:view view22 22:photo:22 22:R0lGODlhFgAWAIAAAPwCBAQCBCH5BAEAAAAALAAAAAAWABYAAAIkhI+py+0Po2ShBlOxzbP7n2yaJoLm+ZTcxqHuC6hXzML2HVEFACH+aENyZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2ZWxjb3IuY29tADs=
-viewtree22:view view22 22:photo:22 22:R0lGODlhFgAWAIMAAPwCBAQCBFRSVExKTDQyNPz+/Pz69Pzu5PTq5OzaxBQOFOzKpFRWVFxWXOzexPTexCH5BAEAAAAALAAAAAAWABYAAARPEMhJq704g6A779kHCORAgNskFMYhakE8FkjyBcoWv+JwJItXaELYCTFHlCSpZKKcoB5jYHpOGgUadLKbIRw3jhEzQDyCSuI4zW673yhDBAAh/mhDcmVhdGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29yLmNvbQA7
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/viewIcons.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/ICONS/viewIcons.rb
deleted file mode 100644 (file)
index fc88eb5..0000000
+++ /dev/null
@@ -1,329 +0,0 @@
-#!/usr/bin/env ruby
-#
-#   viewIcons.rb
-#
-#     --  Display icons from icon library.
-#
-#     --  Copy the clicked icon data (command string of creating 
-#         a TkPhotoImage instance) to the clipboard.
-#
-require 'tk'
-require 'tkextlib/ICONS'
-
-class ViewIcons
-  #####################################
-  private
-  #####################################
-  def _create_controls
-    @controls = base = TkFrame.new
-    columns = TkFrame.new(base)
-    line1 = TkFrame.new(base, :height=>2, :borderwidth=>1, :relief=>:sunken)
-    line2 = TkFrame.new(base, :height=>2, :borderwidth=>1, :relief=>:sunken)
-
-    lbl_library = TkLabel.new(base, :font=>@boldfont, :text=>'Library')
-    lbl_groups  = TkLabel.new(base, :font=>@boldfont, :text=>'Groups')
-    lbl_columns = TkLabel.new(base, :font=>@boldfont, :text=>'Columns')
-
-    ent_library = TkEntry.new(base, :width=>50, :textvariable=>@library)
-    ent_groups  = TkEntry.new(base, :width=>50, :textvariable=>@groups)
-
-    btn_browse = TkButton.new(base, :text=>'Browse', 
-                                    :command=>method(:select_icons))
-    btn_view   = TkButton.new(base, :text=>'View',
-                                    :command=>method(:display_icons))
-    btn_exit   = TkButton.new(base, :text=>'Exit', :command=>proc{exit})
-
-    @column_btns = {}
-    6.step(20, 2){|i|
-      @column_btns[i] = TkButton.new(columns, 
-                                     :text=>i.to_s, :width=>2, 
-                                     :command=>proc{set_columns(i)}
-                                     ).pack(:side=>:left)
-    }
-    @column_btns[@columns][:relief] = :sunken
-
-    lbl_library.grid(:row=>0, :column=>0, :padx=>4)
-    ent_library.grid(:row=>0, :column=>1)
-    btn_browse.grid(:row=>0, :column=>2, :padx=>4, :pady=>2, :sticky=>:ew)
-
-    line1.grid(:row=>1, :column=>0, :pady=>2, :columnspan=>3, :sticky=>:ew)
-
-    lbl_groups.grid(:row=>2, :column=>0, :padx=>4)
-    ent_groups.grid(:row=>2, :column=>1)
-    btn_view.grid(:row=>2, :column=>2, :padx=>4, :pady=>2, :sticky=>:ew)
-
-    line1.grid(:row=>3, :column=>0, :pady=>2, :columnspan=>3, :sticky=>:ew)
-
-    lbl_columns.grid(:row=>4, :column=>0, :padx=>4)
-    columns.grid(:row=>4, :column=>1, :padx=>2, :sticky=>:ew)
-    btn_exit.grid(:row=>4, :column=>2, :padx=>4, :pady=>2, :sticky=>:ew)
-
-    base.pack
-
-    ent_library.bind('Return', method(:display_icons), '')
-    ent_groups.bind('Return', method(:display_icons), '')
-  end
-
-  def _create_display
-    base = TkFrame.new(:borderwidth=>2, :relief=>:sunken)
-
-    @icons_window = icons = TkCanvas.new(base)
-    xscr = icons.xscrollbar(TkScrollbar.new(base))
-    yscr = icons.yscrollbar(TkScrollbar.new(base))
-
-    icons.grid(:row=>0, :column=>0, :sticky=>:news)
-    yscr.grid(:row=>0, :column=>1, :sticky=>:ns)
-    xscr.grid(:row=>1, :column=>0, :sticky=>:ew)
-    base.grid_columnconfigure(0, :weight=>1)
-    base.grid_columnconfigure(1, :weight=>0)
-    base.grid_rowconfigure(0, :weight=>1)
-    base.grid_rowconfigure(1, :weight=>0)
-    # yscr.pack(:side=>:right, :fill=>:y)
-    # xscr.pack(:side=>:bottom, :fill=>:x)
-    # icons.pack(:side=>:left, :fill=>:both, :expand=>true)
-
-    @icons_layout = TkFrame.new(icons).pack
-    TkcWindow.create(icons, 0, 0, :anchor=>:nw, :window=>@icons_layout)
-    @icons_layout.bind('Configure', method(:layout_resize), '')
-
-    base.pack(:expand=>true, :fill=>:both)
-  end
-
-  def _create_info_window
-    @info_window = TkToplevel.new(:background=>'lightyellow', :borderwidth=>1, 
-                                  :relief=>:solid){|w|
-      lbl_name = TkLabel.new(w, :text=>'Name', :background=>'lightyellow', 
-                             :font=>@boldfont, :justify=>:left)
-      lbl_grps = TkLabel.new(w, :text=>'Groups', :background=>'lightyellow', 
-                             :font=>@boldfont, :justify=>:left)
-      lbl_type = TkLabel.new(w, :text=>'Type', :background=>'lightyellow', 
-                             :font=>@boldfont, :justify=>:left)
-      lbl_size = TkLabel.new(w, :text=>'Size', :background=>'lightyellow', 
-                             :font=>@boldfont, :justify=>:left)
-
-      lbl_name.grid(:row=>0, :column=>0, :sticky=>:w)
-      lbl_grps.grid(:row=>1, :column=>0, :sticky=>:w)
-      lbl_type.grid(:row=>2, :column=>0, :sticky=>:w)
-      lbl_size.grid(:row=>3, :column=>0, :sticky=>:w)
-
-      @name = TkLabel.new(w, :background=>'lightyellow', :justify=>:left)
-      @grps = TkLabel.new(w, :background=>'lightyellow', :justify=>:left)
-      @type = TkLabel.new(w, :background=>'lightyellow', :justify=>:left)
-      @size = TkLabel.new(w, :background=>'lightyellow', :justify=>:left)
-
-      @name.grid(:row=>0, :column=>1, :sticky=>:w)
-      @grps.grid(:row=>1, :column=>1, :sticky=>:w)
-      @type.grid(:row=>2, :column=>1, :sticky=>:w)
-      @size.grid(:row=>3, :column=>1, :sticky=>:w)
-
-      def name(txt)
-        @name['text'] = txt
-      end
-      def groups(txt)
-        @grps['text'] = txt
-      end
-      def type(txt)
-        @type['text'] = txt
-      end
-      def size(txt)
-        @size['text'] = txt
-      end
-
-      overrideredirect(true)
-      withdraw
-    }
-  end
-
-  def initialize(init_path = Tk::LIBRARY)
-    init_path = Tk::LIBRARY unless init_path
-    init_path = File.expand_path(init_path)
-    if File.directory?(init_path)
-      @initial_dir  = init_path
-      @initial_file = 'tkIcons'
-    else
-      @initial_dir  = File.dirname(init_path)
-      @initial_file = File.basename(init_path)
-    end
-
-    if Tk::PLATFORM['platform'] == 'unix'
-      TkOption.add('*HighlightThickness', 0)
-    end
-
-    @columns = 14
-    @command = ""
-
-    @delay_timer = nil
-
-    dummy = TkLabel.new
-    @font = dummy.font
-    @boldfont = TkFont.new(@font, :weight=>:bold)
-    @icons = {}
-    @icon_name = {}
-    @icon_info = {}
-
-    @library = TkVariable.new(File.join(@initial_dir, @initial_file))
-    @groups  = TkVariable.new('*')
-
-    _create_controls
-
-    _create_display
-
-    _create_info_window
-
-    Tk.root.title('viewIcons')
-    layout_resize
-    Tk.root.resizable(false, true)
-
-    display_icons
-  end
-
-  def init_info(item, name)
-    @icon_name[item] = name
-
-    item.bind('Button-1', method(:clip_info),  '%W')
-    item.bind('Enter',    method(:delay_info), '%W')
-    item.bind('Leave',    method(:cancel_info), '')
-  end
-
-  def delay_info(item)
-    cancel_info
-    @delay_timer = TkTimer.new(200, 1, proc{ show_info(item) }).start
-  end
-
-  def cancel_info
-    if @delay_timer
-      @delay_timer.cancel 
-      @delay_timer = nil
-    end
-    @info_window.withdraw
-  end
-
-  def show_info(item)
-    name, groups, type, size = @icon_info[@icon_name[item]]
-    @info_window.name(name)
-    @info_window.groups(groups)
-    @info_window.type(type)
-    @info_window.size(size)
-
-    info_x = item.winfo_rootx + 10
-    info_y = item.winfo_rooty + item.winfo_height
-
-    @info_window.geometry("+#{info_x}+#{info_y}")
-    @info_window.deiconify
-
-    @info_window.raise
-
-    @delay_timer = nil
-  end
-
-  def primary_transfer(offset, max_chars)
-    @command
-  end
-
-  def lost_selection
-    @command = ""
-  end
-
-  def clip_info(item)
-    name = @icon_name[item]
-    data_width = 60
-
-    cmd = "#{name} = TkPhotoImage.new(:data=><<'EOD')\n"
-
-    icon_data = Tk::ICONS.query(name, :file=>@library.value, :items=>'d')[0][0]
-
-    icon_data.scan(/.{1,#{data_width}}/m){|s| cmd << '   ' << s << "\n"}
-
-    cmd << "EOD\n"
-
-    @command = cmd
-
-    TkClipboard.clear
-    TkClipboard.append(@command)
-
-    if Tk::PLATFORM['platform'] == 'unix'
-      TkSelection.handle(Tk.root, method(:primary_transfer), 
-                         :selection=>'PRIMARY')
-      TkSelection.set_owner(Tk.root, :selection=>'PRIMARY', 
-                            :command=>method(:lost_selection))
-    end
-
-    Tk.bell
-  end
-
-  def layout_resize
-    Tk.update
-    bbox = @icons_window.bbox('all')
-    width = @controls.winfo_width - @icons_window.yscrollbar.winfo_width - 8
-
-    @icons_window.configure(:width=>width, :scrollregion=>bbox, 
-                            :xscrollincrement=>'0.1i', 
-                            :yscrollincrement=>'0.1i')
-  end
-
-  def select_icons
-    new_lib = Tk.getOpenFile(:initialdir=>@initial_dir, 
-                             :initialfile=>'tkIcons', 
-                             :title=>'Select Icon Library', 
-                             :filetypes=>[
-                               ['Icon Libraries', ['tkIcons*']], 
-                               ['All Files', ['*']]
-                             ])
-
-    @library.value = new_lib if new_lib.length != 0
-    display_icons
-  end
-
-  def display_icons
-    column = 0
-    limit = @columns - 1
-    row = 0
-
-    unless File.exist?(@library.value)
-      Tk.messageBox(:icon=>'warning', :message=>'File does not exist', 
-                    :title=>'viewIcons')
-      return
-    end
-
-    cursor = Tk.root[:cursor]
-    Tk.root[:cursor] = 'watch'
-
-    Tk::ICONS.delete(@icons)
-
-    @icons_frame.destroy if @icons_frame
-    @icons_frame = TkFrame.new(@icons_layout).pack
-
-    @icons = Tk::ICONS.create(:file=>@library.value, :group=>@groups.value)
-
-    Tk::ICONS.query(:file=>@library.value, :group=>@groups.value).each{|inf|
-      name = inf[0]
-      @icon_info[name] = inf
-
-      lbl = TkLabel.new(@icons_frame, :image=>"::icon::#{name}")
-      lbl.grid(:column=>column, :row=>row, :padx=>3, :pady=>3)
-      # lbl.grid_columnconfigure column
-
-      init_info(lbl, name)
-
-      if column == limit
-        column = 0
-        row += 1
-      else
-        column += 1
-      end
-    }
-
-    Tk.root[:cursor] = cursor
-  end
-
-  def set_columns(columns)
-    @columns = columns
-    6.step(20, 2){|i| @column_btns[i][:relief] = :raised }
-    @column_btns[@columns][:relief] = :sunken
-    display_icons
-  end
-end
-
-ViewIcons.new(ARGV[0])
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/barchart5.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/barchart5.rb
deleted file mode 100644 (file)
index db181d1..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/blt'
-
-load File.join(File.dirname(File.expand_path(__FILE__)), 
-               'scripts', 'stipples.rb')
-
-TkOption.add('*graph.x.Title', 'X Axis Label')
-TkOption.add('*graph.y.Title', 'Y Axis Label')
-TkOption.add('*graph.title', 'A Simple Barchart')
-TkOption.add('*graph.x.Font', 'Times 10')
-TkOption.add('*graph.Element.Relief', :raised)
-
-visual = Tk.root.winfo_screenvisual
-if visual != 'staticgray' && visual != 'grayscale'
-  TkOption.add('*graph.LineMarker.color', 'yellow')
-  TkOption.add('*graph.Element.Background', 'white')
-  TkOption.add('*graph.Legend.activeForeground', 'pink')
-  TkOption.add('*print.background', 'yellow')
-  TkOption.add('*quit.background',  'red')
-  TkOption.add('*graph.background', 'palegreen')
-  TkOption.add('*graph.plotBackground', 'lightblue')
-end
-
-htext = Tk::BLT::Htext.new(:widgetname=>'.htext', :text=><<EOD)
-    This is an example of the barchart widget.  The barchart has 
-    many components; x and y axis, legend, crosshairs, elements, etc.  
-    To create a postscript file "bar.ps", press the %%
-
-    ruby {
-    b = TkButton.new(Tk::BLT::Htext::Htext_Widget.window, 
-                     :widgetname=>'print', :text=>'Print', 
-                     :command=>proc{
-                        $graph.postsript(:output=>'bar.ps')
-                     })
-    Tk::BLT::Htext::Htext_Widget.window.append(b)
-    }
-
-%% button.  
-%%
-
-    ruby {
-    $graph = Tk::BLT::Barchart.new(:widgetname=>'.htext.graph', 
-                                   :relief=>:raised, :borderwidth=>2)
-    $graph.xaxis_configure(:rotate=>90, :stepsize=>0)
-    Tk::BLT::Htext::Htext_Widget.window.append($graph, 
-                                               :fill=>:both, :padx=>4)
-    }
-
-%%
-    Hit the %%
-
-    ruby {
-    b = TkButton.new(Tk::BLT::Htext::Htext_Widget.window, 
-                     :widgetname=>'quit', :text=>'Quit', 
-                     :command=>proc{ exit })
-    Tk::BLT::Htext::Htext_Widget.window.append(b)
-    }
-
-%% button when you've seen enough.%%
-
-    ruby {
-    l = TkLabel.new(Tk::BLT::Htext::Htext_Widget.window, :bitmap=>'BLT')
-    Tk::BLT::Htext::Htext_Widget.window.append(l, :padx=>20)
-    }
-
-%%
-EOD
-
-names = %w(One Two Three Four Five Six Seven Eight)
-if visual == 'staticgray' || visual == 'grayscale'
-  fgcolors = %w(white white white white white white white white)
-  bgcolors = %w(black black black black black black black black)
-else
-  fgcolors = %w(yellow orange red magenta purple blue cyan green)
-  bgcolors = %w(yellow4 orange4 red4 magenta4 purple4 blue4 cyan4 green4)
-end
-
-numColors = names.length
-
-Tk::TCL_PRECISION.value = 15
-
-x = Tk::BLT::Vector.new
-y = Tk::BLT::Vector.new
-x.seq(-5.0, 5.0, 0.2)
-y.expr("sin(#{x})")
-barWidth = 0.19
-
-$graph.element_create('sin', :relief=>:raised, :borderwidth=>1, 
-                      :x=>x, :y=>y, :barwidth=>barWidth)
-
-Tk::BLT::Table.add(Tk.root, htext, :fill=>:both)
-
-Tk.root.minsize(0, 0)
-
-Tk::BLT.zoom_stack($graph)
-Tk::BLT.crosshairs($graph)
-Tk::BLT.active_legend($graph)
-Tk::BLT.closest_point($graph)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/calendar.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/calendar.rb
deleted file mode 100644 (file)
index 4fc6d64..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-require 'tkextlib/blt'
-
-require 'date'
-
-dir = File.join(File.dirname(File.expand_path(__FILE__)), 'images')
-file = File.join(dir, 'chalk.gif')
-active = File.join(dir, 'rain.gif')
-
-texture1 = TkPhotoImage.new(:file=>file)
-texture2 = TkPhotoImage.new(:file=>active)
-
-TkOption.add('*Tile', texture1)
-
-TkOption.add('*HighlightThickness', 0)
-TkOption.add('*calendar.weekframe*Tile', texture2)
-TkOption.add('*Calendar.Label.borderWidth', 0)
-TkOption.add('*Calendar.Label.relief', :sunken)
-TkOption.add('*Calendar.Frame.borderWidth', 2)
-TkOption.add('*Calendar.Frame.relief', :raised)
-TkOption.add('*Calendar.Label.font', 'Helvetica 11')
-TkOption.add('*Calendar.Label.foreground', 'navyblue')
-TkOption.add('*button.foreground', 'navyblue')
-TkOption.add('*background', 'grey85')
-TkOption.add('*Label.ipadX', 200)
-
-TkOption.add('*tile', texture2)
-
-class BLT_Calendar_sample
-  @@monthInfo = [
-    nil,  # dummy
-    ['January', 31], 
-    ['February', 28], 
-    ['March', 31], 
-    ['April', 30], 
-    ['May', 31], 
-    ['June', 30], 
-    ['July', 31], 
-    ['August', 31], 
-    ['Septembar', 30], 
-    ['October', 31], 
-    ['November', 30], 
-    ['December', 31]
-  ]
-
-  @@abbrDays = [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ]
-
-  def initialize()
-    today = Date.today
-
-    if TkComm.bool(Tk.info(:commands, '.calendar'))
-      Tk.destroy('.calendar')
-    end
-    cal = Tk::BLT::Tile::Frame.new(:widgetname=>'.calendar', 
-                                   :classname=>'Calendar', 
-                                   :width=>'3i', :height=>'3i')
-
-    mon = Tk::BLT::Tile::Label.new(cal, :font=>'Courier 14 bold', 
-                                   :text=>"#{@@monthInfo[today.month][0]} " + 
-                                          "#{today.year}")
-    Tk::BLT::Table.add(cal, mon, [1, 0], :cspan=>7, :pady=>10)
-
-    week_f = Tk::BLT::Tile::Frame.new(cal, :widgetname=>'weekframe', 
-                                      :relief=>:sunken, :borderwidth=>1)
-    Tk::BLT::Table.add(cal, week_f, [2, 0], :columnspan=>7, :fill=>:both)
-
-    @@abbrDays.each_with_index{|dayName, idx|
-      Tk::BLT::Table.add(cal, 
-                         Tk::BLT::Tile::Label.new(cal, :text=>dayName, 
-                                                  :font=>'Helvetica 12'), 
-                         [2, idx], :pady=>2, :padx=>2)
-    }
-
-    Tk::BLT::Table.itemconfigure(cal, 'c*', 'r2', :pad=>4)
-
-    numDays = @@monthInfo[today.month][1]
-    week = 0
-    cnt = 1
-
-    wkday = today.wday - ((today.day - 1) % 7)
-    wkday += 7 if wkday < 0
-
-    while cnt <= numDays
-      Tk::BLT::Table.add(cal, 
-                         Tk::BLT::Tile::Label.new(cal, :text=>cnt){
-                           self.configure(:borderwidth=>1, 
-                                          :relief=>:sunken) if cnt == today.day
-                         }, 
-                         [week+3, wkday], :fill=>:both, :ipadx=>10, :ipady=>4)
-      cnt += 1
-      wkday += 1
-      if wkday == 7
-        week += 1
-        wkday = 0
-      end
-    end
-
-    Tk::BLT::Tile::Frame.new(cal, :borderwidth=>1, :relief=>:sunken){|f|
-      Tk::BLT::Table.add(f, 
-                         Tk::BLT::Tile::Button.new(f, :widgetname=>'button', 
-                                                   :command=>proc{exit}, 
-                                                   :borderwidth=>2, 
-                                                   :text=>'Quit'), 
-                         :padx=>4, :pady=>4)
-      Tk::BLT::Table.add(cal, f, [week+4, 5], :cspan=>2, :pady=>4)
-    }
-
-    Tk::BLT::Table.add(Tk.root, cal, :fill=>:both)
-    Tk::BLT::Table.itemconfigure(cal, 'r0', :resize=>:none)
-  end
-end
-
-BLT_Calendar_sample.new
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph6.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph6.rb
deleted file mode 100644 (file)
index f899b44..0000000
+++ /dev/null
@@ -1,2222 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-require 'tkextlib/blt'
-
-Tk::TCL_PRECISION.value = 15
-
-[
-  ['*Graph.Width', '10i'], 
-  ['*Graph.leftMargin', '.75i'], 
-  ['*Graph.Height', '6i'], 
-  ['*Graph.plotBackground', 'black'], 
-  ['*LineMarker.color', 'white'], 
-  ['*LineMarker.Dashes', 5], 
-  ['*TextMarker.foreground', 'white'], 
-  ['*TextMarker.Background', ''], 
-
-  ['*Graph.x.hide', true], 
-  ['*Graph.x.title', ''], 
-  ['*Graph.y.rotate', 90], 
-  # ['*Graph.y.stepSize', 2.0], 
-  ['*Graph.title', ''], 
-  ['*graph.Title', 'Example s27'], 
-  ['*graph.x.hide', false], 
-  ['*graph.topMargin', 0], 
-  ['*graph.bottomMargin', 0], 
-  ['*x.Title', 'Time'], 
-  ['*y.Title', 'Signals'], 
-  ['*Pixels', 1], 
-
-  ['*Reduce', 0.5], 
-  ['*bufferElements', false], 
-
-  ['*Element.color', 'green4'], 
-  ['*Element.ScaleSymbols', true], 
-  ['*Element.Color', 'grey70'], 
-  ['*Element.Symbol', :none], 
-  ['*Element.LineWidth', 1], 
-  # ['*Element.Smooth', :natural], 
-  ['*Element.Smooth', :catrom], 
-
-  ['*activeLine.LineWidth', 2], 
-  ['*activeLine.Color', 'white'], 
-  ['*activeLine.Color', 'green1'], 
-
-  # ['*Legend.Hide', true], 
-  ['*Legend.Position', :right], 
-  ['*Legend.Relief', :flat], 
-  ['*Legend.activeRelief', :sunken], 
-  ['*Legend.borderWidth', 2], 
-  #['*Legend.Font', '-*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*'], 
-  ['*Legend.Font', 'Helvetica -10'], 
-  ['*Grid.hide', false], 
-  ['*Grid.dashes', [1, 5]], 
-
-  # ['*foreground', 'white'], 
-  ['*zoomOutline.outline', 'yellow'], 
-].each{|k, v| TkOption.add(k, v)}
-
-##############################
-
-class BLT_Graph_Demo
-  def initialize
-    @graph = Tk::BLT::Graph.new(:widgetname=>'graph')
-
-    @root = Tk.root
-    @root.minsize(0, 0)
-
-    _set_vectors()
-    (1..39).each{|i| @graph.element_create("V#{i}", :x=>@x, :y=>@v[i])}
-
-    @top = Tk::BLT::Tile::Toplevel.new
-=begin
-    legend = Tk::BLT::Graph.new(@top, :widgetname=>'legend', 
-                                :without_creating=>true)
-    @graph.legend_configure(:position=>legend)
-=end
-    # legend = @graph.legend_window_create(@top, :widgetname=>'legend')
-    legend = @graph.legend_window_create(@top)
-    legend.pack(:fill=>:both, :expand=>true)
-
-    Tk::BLT::Table.add(@root, @graph, [0,0], :fill=>:both)
-
-    @quit_btn = Tk::BLT::Tile::Button.new(:text=>' quit ', :background=>'red', 
-                                          :command=>proc{exit})
-    Tk::BLT::Table.add(@root, @quit_btn, [1,0], :anchor=>:e, :padx=>10)
-
-    @graph.zoom_stack
-    @graph.crosshairs
-    @graph.closest_point
-    @graph.print_key
-
-    @graph.legend_bind(:all, 'ButtonRelease-1', 
-                       proc{|w| highlightTrace(w)}, '%W')
-    @graph.legend_bind(:all, 'ButtonRelease-3', 
-                       proc{|w|
-                         w.legend_deactivate('*')
-                         active = w.element_activate
-                         w.element_deactivate(*active)
-                       }, '%W')
-  end
-
-  private
-
-  def _set_vectors
-    @x = Tk::BLT::Vector.new(:variable=>'')
-    @v = []
-    (1..39).each{|i| @v[i] = Tk::BLT::Vector.new(:variable=>'')}
-
-    @x.set(<<-'EOD')
-    0 1e-10 2e-10 3e-10 4e-10 5e-10 6e-10 7e-10 8e-10 9e-10 
-    1e-09 1.1e-09 1.2e-09 1.3e-09 1.4e-09 1.5e-09 1.6e-09 1.7e-09 
-    1.8e-09 1.9e-09 2e-09 2.1e-09 2.2e-09 2.3e-09 2.4e-09 2.5e-09 
-    2.6e-09 2.7e-09 2.8e-09 2.9e-09 3e-09 3.1e-09 3.2e-09 3.3e-09 
-    3.4e-09 3.5e-09 3.6e-09 3.7e-09 3.8e-09 3.9e-09 4e-09 4.1e-09 
-    4.2e-09 4.3e-09 4.4e-09 4.5e-09 4.6e-09 4.7e-09 4.8e-09 
-    4.9e-09 5e-09 5.1e-09 5.2e-09 5.3e-09 5.4e-09 5.5e-09 5.6e-09 
-    5.7e-09 5.8e-09 5.9e-09 6e-09 6.1e-09 6.2e-09 6.3e-09 6.4e-09 
-    6.5e-09 6.6e-09 6.7e-09 6.8e-09 6.9e-09 7e-09 7.1e-09 7.2e-09 
-    7.3e-09 7.4e-09 7.5e-09 7.6e-09 7.7e-09 7.8e-09 7.9e-09 
-    8e-09 8.1e-09 8.2e-09 8.3e-09 8.4e-09 8.5e-09 8.6e-09 8.7e-09 
-    8.8e-09 8.9e-09 9e-09 9.1e-09 9.2e-09 9.3e-09 9.4e-09 9.5e-09 
-    9.6e-09 9.7e-09 9.8e-09 9.9e-09 1e-08 1.01e-08 1.02e-08 
-    1.03e-08 1.04e-08 1.05e-08 1.06e-08 1.07e-08 1.08e-08 1.09e-08 
-    1.1e-08 1.11e-08 1.12e-08 1.13e-08 1.14e-08 1.15e-08 1.16e-08 
-    1.17e-08 1.18e-08 1.19e-08 1.2e-08 1.21e-08 1.22e-08 1.23e-08 
-    1.24e-08 1.25e-08 1.26e-08 1.27e-08 1.28e-08 1.29e-08 1.3e-08 
-    1.31e-08 1.32e-08 1.33e-08 1.34e-08 1.35e-08 1.36e-08 1.37e-08 
-    1.38e-08 1.39e-08 1.4e-08 1.41e-08 1.42e-08 1.43e-08 1.44e-08 
-    1.45e-08 1.46e-08 1.47e-08 1.48e-08 1.49e-08 1.5e-08 1.51e-08 
-    1.52e-08 1.53e-08 1.54e-08 1.55e-08 1.56e-08 1.57e-08 1.58e-08 
-    1.59e-08 1.6e-08 1.61e-08 1.62e-08 1.63e-08 1.64e-08 1.65e-08 
-    1.66e-08 1.67e-08 1.68e-08 1.69e-08 1.7e-08 1.71e-08 1.72e-08 
-    1.73e-08 1.74e-08 1.75e-08 1.76e-08 1.77e-08 1.78e-08 1.79e-08 
-    1.8e-08 1.81e-08 1.82e-08 1.83e-08 1.84e-08 1.85e-08 1.86e-08 
-    1.87e-08 1.88e-08 1.89e-08 1.9e-08 1.91e-08 1.92e-08 1.93e-08 
-    1.94e-08 1.95e-08 1.96e-08 1.97e-08 1.98e-08 1.99e-08 2e-08 
-    2.01e-08 2.02e-08 2.03e-08 2.04e-08 2.05e-08 2.06e-08 2.07e-08 
-    2.08e-08 2.09e-08 2.1e-08 2.11e-08 2.12e-08 2.13e-08 2.14e-08 
-    2.15e-08 2.16e-08 2.17e-08 2.18e-08 2.19e-08 2.2e-08 2.21e-08 
-    2.22e-08 2.23e-08 2.24e-08 2.25e-08 2.26e-08 2.27e-08 2.28e-08 
-    2.29e-08 2.3e-08 2.31e-08 2.32e-08 2.33e-08 2.34e-08 2.35e-08 
-    2.36e-08 2.37e-08 2.38e-08 2.39e-08 2.4e-08 2.41e-08 2.42e-08 
-    2.43e-08 2.44e-08 2.45e-08 2.46e-08 2.47e-08 2.48e-08 2.49e-08 
-    2.5e-08 2.51e-08 2.52e-08 2.53e-08 2.54e-08 2.55e-08 2.56e-08 
-    2.57e-08 2.58e-08 2.59e-08 2.6e-08 2.61e-08 2.62e-08 2.63e-08 
-    2.64e-08 2.65e-08 2.66e-08 2.67e-08 2.68e-08 2.69e-08 2.7e-08 
-    2.71e-08 2.72e-08 2.73e-08 2.74e-08 2.75e-08 2.76e-08 2.77e-08 
-    2.78e-08 2.79e-08 2.8e-08 2.81e-08 2.82e-08 2.83e-08 2.84e-08 
-    2.85e-08 2.86e-08 2.87e-08 2.88e-08 2.89e-08 2.9e-08 2.91e-08 
-    2.92e-08 2.93e-08 2.94e-08 2.95e-08 2.96e-08 2.97e-08 2.98e-08 
-    2.99e-08 3e-08 3.01e-08 3.02e-08 3.03e-08 3.04e-08 3.05e-08 
-    3.06e-08 3.07e-08 3.08e-08 3.09e-08 3.1e-08 3.11e-08 3.12e-08 
-    3.13e-08 3.14e-08 3.15e-08 3.16e-08 3.17e-08 3.18e-08 3.19e-08 
-    3.2e-08 3.21e-08 3.22e-08 3.23e-08 3.24e-08 3.25e-08 3.26e-08 
-    3.27e-08 3.28e-08 3.29e-08 3.3e-08 3.31e-08 3.32e-08 3.33e-08 
-    3.34e-08 3.35e-08 3.36e-08 3.37e-08 3.38e-08 3.39e-08 3.4e-08 
-    3.41e-08 3.42e-08 3.43e-08 3.44e-08 3.45e-08 3.46e-08 3.47e-08 
-    3.48e-08 3.49e-08 3.5e-08 3.51e-08 3.52e-08 3.53e-08 3.54e-08 
-    3.55e-08 3.56e-08 3.57e-08 3.58e-08 3.59e-08 3.6e-08 
-    EOD
-
-    @v[1].set(<<-'EOD')
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    EOD
-
-    @v[2].set(<<-'EOD')
-    0 1 2 3 4 5 5 5 5 5 5 5 5 5 5 5 4 3 2 1 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 1 2 3 4 5 5 5 5 5 5 5 5 5 5 5 4 3 2 1 
-    5.32907e-15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 5 
-    5 5 5 5 5 5 5 5 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 
-    EOD
-
-    @v[3].set(<<-'EOD')
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 2 1 8.88178e-16 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 1 2 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 4 3 2 1 2.13718e-14 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 
-    EOD
-
-    @v[4].set(<<-'EOD')
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 1 2 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    EOD
-
-    @v[5].set(<<-'EOD')
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 1 2 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    EOD
-
-    @v[6].set(<<-'EOD')
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 3 2 1 8.88178e-16 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 1 2 3 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 4 3 2 1 2.13718e-14 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
-    0 0 0 0 
-    EOD
-
-    @v[7].set(<<-'EOD')
-    5 5.16904 4.84159 3.34542 0.317102 0.103304 0.0275721 0.0221534 
-    0.017689 0.0142639 0.0113974 0.00918238 0.00742541 0.00616602 
-    0.00481195 0.00397049 -0.0659889 -0.025671 0.165495 0.986891 
-    3.05229 4.55511 4.91611 4.98192 4.99428 4.99833 4.99095 
-    4.97295 4.95493 4.93428 4.90723 4.94799 4.98584 4.99566 
-    4.99813 4.99907 4.99947 4.99965 4.99976 4.99984 4.99989 
-    4.99992 4.99994 4.99996 4.99998 5.00002 5.00006 5.00002 
-    4.99996 4.99994 4.99999 5.00003 5.00002 5 4.99997 4.99997 
-    4.99997 4.99997 4.99997 4.99996 4.99997 4.99997 4.99998 
-    4.99998 4.99999 5 5 5 5 5 5 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5 5 5 5 5 5 5 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99998 4.99998 4.99998 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 5 5 5 5 5 5 5 5.16575 
-    4.69986 2.43862 0.0230224 0.035229 -0.0210607 -0.0292766 
-    -0.0172693 -0.00271479 -0.000912251 -0.000349106 -0.000116866 
-    -4.24733e-05 -1.39536e-05 -3.01179e-05 -0.0657192 -0.0204835 
-    0.183378 1.07181 3.118 4.46472 4.84158 4.94795 4.98173 4.99236 
-    4.99762 5.01939 5.0433 5.05332 5.04959 5.03955 5.02851 5.02052 
-    5.01422 5.00965 5.00631 5.00405 5.00248 5.00083 5.00012 
-    5.00209 5.00387 5.00347 4.99917 4.99213 4.98411 4.97521 
-    4.96332 4.94601 4.9304 4.94633 4.97936 4.99264 4.99685 4.99857 
-    4.99925 4.99954 4.9997 4.99973 4.9997 4.99973 4.99979 4.99983 
-    4.99986 4.99988 4.9999 4.9999 4.99992 4.99993 4.99994 4.99995 
-    4.99996 4.99996 4.99997 4.99997 4.99998 4.99998 4.99998 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    5 5 5 5.00001 5.00001 5.00001 5.00001 5.00002 5.00002 5.00002 
-    5.00002 5.00001 5.00001 5.00001 5 5 5 5 5 5 5 5 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 5 5 5.14242 4.76101 3.16003 0.299374 
-    0.0645506 -0.000498424 -2.45108e-05 -2.27986e-05 -5.24401e-05 
-    -4.9884e-05 -4.92491e-05 -2.93354e-05 -3.21402e-05 -2.11851e-05 
-    -3.37925e-05 -0.0657892 -0.020563 0.182582 1.06058 3.12484 
-    4.46552 4.84146 4.95102 4.98556 4.99472 4.99806 4.99909 
-    4.99955 4.99976 4.99994 4.99992 5.00029 4.99967 4.99849 
-    4.99736 4.99884 5.00099 5.00377 5.00215 4.99994 4.99893 
-    4.99788 4.99862 5.00055 5.00134 5.00127 5.00073 5.00039 
-    5.00018 5.00006 5.00001 4.99985 5.00026 5.00018 5.00003 
-    4.99981 4.99985 4.99987 4.99985 4.99982 4.99982 4.99982 
-    4.99983 4.99985 4.99987 4.99989 4.99991 4.99992 4.99994 
-    4.99995 4.99995 4.99994 4.99994 4.99996 4.99999 5.00002 
-    5.00008 5.00009 5.00006 5.00001 5 4.99999 4.99998 4.99997 
-    4.99996 4.99997 4.99997 4.99998 4.99998 4.99999 4.99999 
-    4.99999 5 5 5 5 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5 5 5 5 5 4.99999 4.99999 4.99999 4.99999 4.99998 4.99998 
-    4.99998 
-    EOD
-
-    @v[8].set(<<-'EOD')
-    5 5.03758 5.04711 4.96911 4.20882 3.96295 4.01117 4.15521 
-    4.2967 4.42274 4.5295 4.6176 4.69014 4.74831 4.7966 4.83537 
-    4.80526 4.787 4.79295 4.88588 5.08978 5.15615 5.10778 5.07718 
-    5.06652 5.08225 4.9744 4.52977 3.77452 2.69426 1.15294 0.245509 
-    0.0981544 0.0567527 0.0367487 0.0252578 0.0180599 0.0133837 
-    0.0101497 0.0078616 0.00620186 0.00499056 0.0041027 0.00344223 
-    0.00295808 0.00260089 0.00229887 0.00200817 0.00176397 0.00160116 
-    0.00147381 0.00134645 0.00125029 0.00116043 0.00107371 0.00101981 
-    0.000965921 0.000912028 0.000858135 0.000804242 0.000761669 
-    0.00072672 0.000691771 0.000656823 0.000621874 0.000588722 
-    0.00057041 0.000552098 0.000533785 0.000515473 0.000497162 
-    0.00047885 0.000460537 0.000442226 0.000423914 0.000405601 
-    0.000388399 0.000378694 0.000368989 0.000359284 0.00034958 
-    0.000339875 0.00033017 0.000320465 0.00031076 0.000301055 
-    0.00029135 0.000282207 0.000276247 0.000270287 0.000264327 
-    0.000258367 0.000252407 0.000246447 0.000240487 0.000234527 
-    0.000228567 0.000222607 0.000217086 0.000213696 0.000210307 
-    0.000206918 0.000203528 0.000200139 0.00019675 0.00019336 
-    0.000189971 0.000186582 0.000183192 0.000179803 0.000176414 
-    0.000173025 0.000169635 0.000166246 0.000162857 0.000159467 
-    0.000156078 0.000152689 0.000149299 0.00014591 0.00014255 
-    0.0316021 0.163272 0.348732 0.603651 0.35745 0.135965 0.0707354 
-    0.0314595 0.0201047 0.00994945 0.00389601 0.00138839 0.00060778 
-    0.000329648 0.000492396 -0.0732035 -0.0844077 -0.0789062 
-    -0.0390837 0.0197559 0.0183094 -0.00180099 -0.0189565 -0.0424144 
-    -0.0735904 -0.0892423 0.285039 1.13702 2.10809 2.95826 3.60164 
-    4.0435 4.35771 4.57254 4.71769 4.81329 4.87534 4.91487 4.94264 
-    4.97375 5.01526 5.06517 5.10154 5.06259 4.89005 4.5787 4.12226 
-    3.46151 2.49023 1.2586 0.32725 0.116753 0.0701865 0.0455509 
-    0.0286914 0.0178176 0.0117599 0.00902715 0.00760583 0.00637745 
-    0.00543811 0.00439377 0.00352448 0.0030151 0.00285771 0.002465 
-    0.00203114 0.00173004 0.0014839 0.00125177 0.00105327 0.000894905 
-    0.000766372 0.000658894 0.000569105 0.000492114 0.000427938 
-    0.000370217 0.000314758 0.000266569 0.000233726 0.000209048 
-    0.000191957 0.000177169 0.000166604 0.000161 0.000157314 
-    0.000143828 0.000130342 0.000116857 0.000103371 8.98855e-05 
-    7.63998e-05 6.29141e-05 5.76583e-05 5.30027e-05 4.8347e-05 
-    4.36913e-05 3.90357e-05 3.438e-05 2.97243e-05 2.72507e-05 
-    2.59083e-05 2.45659e-05 2.32235e-05 2.18811e-05 2.05387e-05 
-    1.91963e-05 1.78539e-05 1.65115e-05 1.51691e-05 1.38267e-05 
-    1.24843e-05 1.11419e-05 9.79954e-06 8.51574e-06 7.69807e-06 
-    6.8804e-06 6.06273e-06 5.24506e-06 0.0287318 0.0317111 -0.0320087 
-    -0.103609 0.0369639 0.0121128 0.00961197 0.00934971 0.00820853 
-    0.00699769 0.00607002 0.00535541 0.00476552 0.00427601 0.00376357 
-    -0.073012 -0.0866964 -0.0809538 -0.038005 0.0277001 0.0188906 
-    0.00614597 0.00373629 0.00489787 0.0146573 0.0191052 0.0151708 
-    0.0124224 0.0105859 0.00879272 0.00729464 0.0070047 0.00449575 
-    -0.00626652 -0.0252417 -0.0147287 0.022538 0.0822905 0.0947372 
-    0.0657516 0.0445506 0.0316753 0.0220971 0.0158101 0.0140971 
-    0.0161498 0.0139876 0.0122447 0.0106994 0.009397 0.00822236 
-    0.00686509 0.00797431 0.00751269 0.00671173 0.00595243 0.00524633 
-    0.00459528 0.00401688 0.00350109 0.00303954 0.00260569 0.00222792 
-    0.00191033 0.00163917 0.00140949 0.00121464 0.0010471 0.000900638 
-    0.000768847 0.000645236 0.000524807 0.000460275 0.000442237 
-    0.000446775 0.000397026 0.000301585 0.000228994 0.000190894 
-    0.000166569 0.000152261 0.000137953 0.000123644 0.000109336 
-    9.50281e-05 8.56557e-05 7.78437e-05 7.00318e-05 6.22198e-05 
-    5.44079e-05 4.87539e-05 4.57761e-05 4.27982e-05 3.98203e-05 
-    3.68425e-05 3.38646e-05 3.08868e-05 2.79089e-05 2.4931e-05 
-    2.19532e-05 1.89753e-05 1.75244e-05 1.64095e-05 1.52946e-05 
-    1.41797e-05 1.30648e-05 1.19499e-05 1.0835e-05 9.72011e-06 
-    8.60521e-06 7.4903e-06 6.5117e-06 6.10334e-06 5.69497e-06 
-    5.2866e-06 4.87824e-06 4.46987e-06 4.06151e-06 3.65314e-06 
-    3.24477e-06 
-    EOD
-
-    @v[9].set(<<-'EOD')
-    1.86175 1.99708 2.07867 2.01211 2.43309 3.27194 3.63896 
-    3.90426 4.11074 4.27932 4.41496 4.52543 4.61491 4.68862 
-    4.7479 4.79666 4.72895 4.68886 4.70354 4.81353 5.01568 5.14184 
-    5.10482 5.07362 5.05143 5.03638 5.02323 5.01465 5.00853 
-    5.00383 4.99985 5.00454 5.00652 5.00546 5.00411 5.003 5.00214 
-    5.00151 5.00106 5.00073 5.0005 5.00034 5.00023 5.00015 5.0001 
-    5.00005 5 5.00001 5.00005 5.00005 5.00003 5 4.99998 4.99996 
-    4.99994 4.99995 4.99997 4.99998 5 5.00001 5.00002 5.00002 
-    5.00003 5.00003 5.00003 5.00003 5.00003 5.00003 5.00002 
-    5.00002 5.00001 5.00001 5.00001 5 5 5 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99998 
-    4.99998 4.99998 4.99999 4.99999 4.99999 4.99999 5 5 5 5 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.17392 4.94828 3.78491 
-    1.52079 0.608874 0.244031 0.127087 0.0552995 0.0361032 0.0169025 
-    0.006364 0.00217624 0.000921391 0.000457305 0.000786754 
-    -0.120016 -0.148054 -0.15898 -0.0801463 0.16463 0.174017 
-    0.0799249 0.0318788 0.0129696 0.00483397 0.0025677 0.0042079 
-    0.00350003 0.00178404 -8.72902e-05 -0.00128497 -0.00142213 
-    -0.00130018 -0.00106874 -0.000789207 -0.000824335 -0.00104518 
-    -0.00136799 -0.004366 -0.0102621 -0.0109254 -0.00649259 
-    -0.00194842 0.00029793 0.00148673 0.00221085 0.00228291 
-    0.00185261 0.00139687 0.00148183 0.00562266 0.00844119 0.00754627 
-    0.00657396 0.00591212 0.00539269 0.0049282 0.00448417 0.0040572 
-    0.00363719 0.00320392 0.00279607 0.00243938 0.00211505 0.00182302 
-    0.00156254 0.0013341 0.00113834 0.000971865 0.00082776 0.000706193 
-    0.000602499 0.000515059 0.000441401 0.00037897 0.000325459 
-    0.00028083 0.000242096 0.000207274 0.000176444 0.000150372 
-    0.000126407 0.000103373 9.05522e-05 8.53555e-05 8.63685e-05 
-    9.02593e-05 8.37346e-05 7.72099e-05 7.06852e-05 6.41605e-05 
-    5.76358e-05 5.11112e-05 4.45865e-05 4.08176e-05 3.72497e-05 
-    3.36818e-05 3.01138e-05 2.65459e-05 2.2978e-05 1.94101e-05 
-    1.76154e-05 1.67399e-05 1.58645e-05 1.4989e-05 1.41136e-05 
-    1.32381e-05 1.23626e-05 1.14872e-05 1.06117e-05 9.73629e-06 
-    8.86083e-06 7.98538e-06 7.10993e-06 6.23447e-06 5.44363e-06 
-    5.32578e-06 5.20792e-06 5.09007e-06 4.97222e-06 0.0784323 
-    0.0474527 -0.0764232 -0.151146 0.0615785 0.0144489 0.00974161 
-    0.00947176 0.00849005 0.00728201 0.00630581 0.00554032 0.00487809 
-    0.00441504 0.00384139 -0.118943 -0.149894 -0.161173 -0.0825299 
-    0.171686 0.176912 0.0816085 0.0335236 0.013791 0.0056976 
-    0.00238833 0.00105348 0.000526199 0.00025969 0.000396026 
-    0.000837835 0.00170131 0.00196699 -0.000553314 -0.0061621 
-    -0.0111895 -0.0142698 -0.0124608 -0.00795847 -0.00467822 
-    -0.0043058 -0.00874449 -0.0118584 -0.00871386 -0.00377892 
-    1.95244e-05 0.00218952 0.00325486 0.00386497 0.00422837 
-    0.00446883 0.00447065 0.00486647 0.00547838 0.00565398 0.00559092 
-    0.00538752 0.00507015 0.00466305 0.00420756 0.00373465 0.00328404 
-    0.00287059 0.00250057 0.00216124 0.00184861 0.00156815 0.00134624 
-    0.00117857 0.00103412 0.0008948 0.000761012 0.000619853 
-    0.000462614 0.000319965 0.000287666 0.000356415 0.000379946 
-    0.000339183 0.00027972 0.000252982 0.000226244 0.000199507 
-    0.000172769 0.000146031 0.000130097 0.000117578 0.000105059 
-    9.25401e-05 8.00213e-05 7.11204e-05 6.67061e-05 6.22918e-05 
-    5.78775e-05 5.34632e-05 4.90489e-05 4.46346e-05 4.02203e-05 
-    3.5806e-05 3.13916e-05 2.69773e-05 2.4827e-05 2.31747e-05 
-    2.15225e-05 1.98702e-05 1.8218e-05 1.65658e-05 1.49135e-05 
-    1.32613e-05 1.1609e-05 9.95678e-06 8.50108e-06 7.86765e-06 
-    7.23422e-06 6.60079e-06 5.96736e-06 5.33393e-06 4.7005e-06 
-    4.06707e-06 3.43363e-06 
-    EOD
-
-    @v[10].set(<<-'EOD')
-    1.86175 1.99308 2.16619 2.46661 3.09359 3.76864 4.31299 
-    4.65564 4.83425 4.92153 4.96157 4.98063 4.98649 4.99039 
-    4.9945 4.9972 4.96206 4.89882 4.83865 4.83202 4.91016 5.04479 
-    5.06078 5.04827 5.03474 5.0246 5.01639 5.00996 5.00569 5.00239 
-    5.00043 5.00296 5.00437 5.00382 5.00287 5.00208 5.00148 
-    5.00104 5.00073 5.0005 5.00034 5.00023 5.00016 5.00011 5.00008 
-    5.00007 5.00007 5.00004 5 4.99998 4.99998 4.99997 4.99998 
-    4.99999 5 5 5.00001 5.00001 5.00001 5.00002 5.00002 5.00001 
-    5.00001 5.00001 5.00001 5 5 5 5 5 5 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 5 5 5 5 5 5 5 5 5 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5 5 5 5 5 5 5 5 5.10081 
-    5.10949 4.98359 5.00733 5.15145 4.37298 2.36126 0.470759 
-    0.0577238 0.0115884 0.00262611 0.000671499 0.000389038 0.000291291 
-    0.000317347 -0.0167823 -0.0158344 -0.0140559 0.0104849 0.0865874 
-    0.107813 0.0524688 0.0214369 0.00876443 0.00341595 0.00170778 
-    0.00259042 0.0022241 0.00118519 1.10217e-06 -0.000784506 
-    -0.000948169 -0.000856256 -0.000696719 -0.000485987 -0.000724787 
-    -0.000981491 -0.001454 -0.00552498 -0.0114992 -0.0105266 
-    -0.00543527 -0.000982798 0.00127356 0.00224212 0.00275439 
-    0.00281098 0.0025471 0.00230368 0.00222576 0.00485522 0.00729453 
-    0.00691796 0.0062615 0.00573987 0.0052688 0.00481185 0.00436934 
-    0.00394326 0.00352712 0.00309978 0.00270038 0.00235335 0.00203742 
-    0.00175256 0.00150067 0.00128126 0.00109323 0.000933619 
-    0.000795113 0.000678182 0.00057843 0.000494345 0.000423609 
-    0.000363821 0.000312766 0.000269856 0.000232389 0.000198382 
-    0.000168126 0.00014267 0.000119293 9.69034e-05 8.5669e-05 
-    8.26828e-05 8.64066e-05 9.26665e-05 8.5454e-05 7.82416e-05 
-    7.10291e-05 6.38167e-05 5.66043e-05 4.93918e-05 4.21794e-05 
-    3.86073e-05 3.53007e-05 3.19941e-05 2.86876e-05 2.5381e-05 
-    2.20744e-05 1.87678e-05 1.70933e-05 1.62648e-05 1.54363e-05 
-    1.46079e-05 1.37794e-05 1.2951e-05 1.21225e-05 1.12941e-05 
-    1.04656e-05 9.63716e-06 8.80871e-06 7.98026e-06 7.1518e-06 
-    6.32335e-06 5.5374e-06 5.08959e-06 4.64178e-06 4.19397e-06 
-    3.74616e-06 0.0438026 0.0242078 -0.0602019 -0.0840866 0.00148461 
-    -0.00292489 0.000442098 0.00219489 0.00281478 0.00290756 
-    0.00277945 0.00263896 0.00240099 0.00223283 0.001947 -0.0153629 
-    -0.0148815 -0.0128673 0.0126017 0.0905161 0.11051 0.0538958 
-    0.022562 0.00935726 0.00397422 0.00172534 0.000790207 0.000416322 
-    0.000191632 0.000469721 0.0009779 0.00192566 0.00200688 
-    -0.0016502 -0.00733932 -0.0128113 -0.0147608 -0.0115456 
-    -0.00668995 -0.00401368 -0.00463908 -0.0101197 -0.0118993 
-    -0.0076276 -0.00262656 0.000813059 0.00264455 0.00350796 
-    0.00399494 0.0043049 0.00451658 0.00444739 0.00503842 0.00559516 
-    0.00568213 0.00556459 0.0053176 0.00496654 0.00454337 0.00408592 
-    0.00362171 0.00317793 0.00277001 0.00240394 0.00207009 0.00176575 
-    0.00149725 0.00129045 0.00114257 0.00101135 0.000871672 
-    0.000723764 0.000580438 0.000427507 0.000296956 0.000281834 
-    0.000376628 0.000412266 0.000367547 0.000295305 0.000264513 
-    0.000233721 0.000202929 0.000172137 0.000141345 0.000124721 
-    0.000112577 0.000100433 8.82893e-05 7.61453e-05 6.75517e-05 
-    6.33609e-05 5.91701e-05 5.49792e-05 5.07884e-05 4.65976e-05 
-    4.24067e-05 3.82159e-05 3.40251e-05 2.98342e-05 2.56434e-05 
-    2.36401e-05 2.21181e-05 2.05961e-05 1.90741e-05 1.75521e-05 
-    1.60301e-05 1.45081e-05 1.29861e-05 1.14641e-05 9.94208e-06 
-    8.59252e-06 7.96439e-06 7.33626e-06 6.70813e-06 6.07999e-06 
-    5.45186e-06 4.82373e-06 4.1956e-06 3.56747e-06 
-    EOD
-
-    @v[11].set(<<-'EOD')
-    1.86175 1.73419 1.42874 1.04055 0.943004 0.268275 0.0826455 
-    0.0388346 0.0214104 0.0135431 0.00961322 0.00712846 0.00588262 
-    0.00432397 0.00377774 0.00270134 -0.00393731 -0.00542187 
-    -0.00126596 0.0113777 0.0134522 0.00477056 -0.00211067 -0.00229253 
-    -0.00173355 -0.00122404 -0.00113426 -0.000744931 -0.000520112 
-    -0.000410048 -0.000220439 0.000508104 5.15856e-05 -0.000112593 
-    -0.000118917 -9.57394e-05 -7.15727e-05 -5.11847e-05 -3.58275e-05 
-    -2.47166e-05 -1.68866e-05 -1.14082e-05 -7.66646e-06 -5.12139e-06 
-    -3.63426e-06 -3.01815e-06 -2.64862e-06 -1.4947e-06 -1.91403e-07 
-    -2.5763e-08 -7.73699e-07 -1.52164e-06 -1.07268e-06 -3.81696e-07 
-    2.6727e-07 4.75489e-07 6.83708e-07 8.91926e-07 1.10014e-06 
-    1.30836e-06 1.2482e-06 1.00726e-06 7.66311e-07 5.25364e-07 
-    2.84417e-07 6.27857e-08 7.43904e-10 -6.12979e-08 -1.2334e-07 
-    -1.85382e-07 -2.47423e-07 -3.09465e-07 -3.71507e-07 -4.33549e-07 
-    -4.95591e-07 -5.57633e-07 -6.04571e-07 -5.4944e-07 -4.9431e-07 
-    -4.3918e-07 -3.84049e-07 -3.28919e-07 -2.73789e-07 -2.18659e-07 
-    -1.63528e-07 -1.08398e-07 -5.32678e-08 1.062e-09 5.08502e-08 
-    1.00638e-07 1.50427e-07 2.00215e-07 2.50003e-07 2.99791e-07 
-    3.4958e-07 3.99368e-07 4.49156e-07 4.98944e-07 5.34512e-07 
-    5.01032e-07 4.67553e-07 4.34073e-07 4.00593e-07 3.67113e-07 
-    3.33633e-07 3.00153e-07 2.66674e-07 2.33194e-07 1.99714e-07 
-    1.66234e-07 1.32754e-07 9.92744e-08 6.57945e-08 3.23147e-08 
-    -1.16513e-09 -3.4645e-08 -6.81248e-08 -1.01605e-07 -1.35084e-07 
-    -1.68564e-07 -2.18729e-07 0.0114926 -0.0245378 -0.111828 
-    0.0964775 1.61491 3.22668 4.22041 4.54492 4.82845 4.94868 
-    4.98588 4.99609 4.9981 4.99908 4.99788 4.98395 4.99294 4.99724 
-    5.01939 5.0471 5.00902 4.98194 4.98496 4.99188 4.99623 4.99862 
-    5.00025 4.99974 4.99953 4.99946 4.99958 5.00012 4.99997 
-    4.99992 4.99988 4.99985 4.9998 4.9997 4.9988 4.99806 4.99982 
-    5.00143 5.00159 5.00098 5.00053 5.00028 5.00007 4.99977 
-    4.99992 5.00005 5.00133 5.0009 4.99993 4.99972 4.99975 4.9998 
-    4.99982 4.99983 4.99983 4.99983 4.99983 4.99984 4.99986 
-    4.99987 4.99989 4.9999 4.99991 4.99992 4.99994 4.99995 4.99995 
-    4.99996 4.99997 4.99997 4.99998 4.99998 4.99998 4.99998 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    5 5 5 5.00001 5.00001 5.00001 5.00002 5.00002 5.00002 5.00002 
-    5.00002 5.00001 5.00001 5.00001 5 5 5 5 5 5 5 5 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 5 5 5.01457 4.99482 4.96561 4.99326 
-    5.03452 5.00424 5.00101 5.00045 5.00004 4.99965 4.99997 
-    4.99994 4.99958 4.99999 4.99936 4.9839 4.99248 4.99717 5.01976 
-    5.04869 5.0087 4.98143 4.98488 4.99199 4.99622 4.9983 4.99928 
-    4.99971 4.99986 5.00031 5.00022 5.00035 5.0001 4.99884 4.99811 
-    4.99803 4.99887 5.00078 5.00151 5.00116 5.00007 4.99843 
-    4.99915 5.00107 5.00168 5.00141 5.00092 5.00055 5.0003 5.00016 
-    5.0001 5.00001 5.00016 5.0002 5.00009 4.99993 4.99975 4.99984 
-    4.99991 4.99991 4.99982 4.99974 4.99974 4.99985 4.99995 
-    4.99999 4.99998 5.00004 5.00013 5.00015 5.00007 4.99988 
-    4.99982 4.99985 4.99995 5.00006 5.0002 5.00025 5.0002 5.00009 
-    5.00006 5.00004 5.00002 5 4.99998 4.99997 4.99998 4.99998 
-    4.99999 4.99999 4.99999 5 5 5 5 5 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5 5 5 5 5 4.99999 4.99999 4.99999 4.99999 
-    4.99998 4.99998 4.99998 
-    EOD
-
-    @v[12].set(<<-'EOD')
-    5 5.16975 4.78685 2.94241 0.126698 0.0487004 -0.00422591 
-    -0.00130689 -0.000486756 -0.000195875 -0.000108988 -6.66736e-05 
-    -7.26005e-05 -5.63608e-05 -3.81859e-05 -2.123e-05 -0.0646846 
-    -0.0184474 0.182248 1.06731 3.10988 4.46133 4.84133 4.95113 
-    4.98364 4.99455 4.99694 4.99727 4.9994 4.99975 5.0001 5.00132 
-    5.00089 5.00039 5.00019 5.00011 5.00006 5.00005 5.00004 
-    5.00001 4.99992 4.99992 5.00002 5.00013 5.00017 5.00009 
-    4.99992 4.99991 4.99994 4.99996 4.99998 4.99999 5.00001 
-    5.00004 5.00006 5.00005 5.00004 5.00003 5.00002 5.00001 
-    5 4.99999 4.99999 4.99998 4.99998 4.99997 4.99997 4.99998 
-    4.99998 4.99998 4.99998 4.99999 4.99999 4.99999 4.99999 
-    5 5 5 5 5 5 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00002 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 5 5.14699 4.78074 
-    3.19424 0.305663 0.0611255 -0.00179951 -0.0012032 0.000405978 
-    0.000989399 0.000445194 0.000191447 8.30476e-05 3.96236e-05 
-    1.91866e-05 1.70665e-05 -0.0655239 -0.0210234 0.1827 1.06848 
-    3.11554 4.46518 4.84212 4.94853 4.98244 4.99434 4.9997 5.00081 
-    5.00009 4.99972 4.99985 4.99974 4.9995 4.99949 4.99958 4.99973 
-    4.99948 4.99914 4.99874 4.99946 5.00309 5.0091 5.01576 5.01835 
-    5.01852 5.0176 5.01625 5.01479 5.01345 5.01264 5.011 5.01092 
-    5.01344 5.01363 5.01289 5.01184 5.01071 5.00956 5.00848 
-    5.00751 5.00663 5.00577 5.00497 5.00427 5.00365 5.0031 5.00264 
-    5.00224 5.00191 5.00163 5.00138 5.00117 5.00099 5.00083 
-    5.00071 5.00061 5.00053 5.00045 5.00037 5.00029 5.00022 
-    5.00019 5.0002 5.00023 5.00024 5.00023 5.00023 5.00022 5.0002 
-    5.00018 5.00016 5.00014 5.00011 5.00009 5.00007 5.00006 
-    5.00005 5.00005 5.00004 5.00003 5.00002 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00002 5.00002 5.00002 5.00002 5.00002 5.00002 5.00002 
-    5.00002 5.00001 5.00001 5.00001 5.14298 4.79809 3.32704 
-    0.498385 0.105773 0.0160646 0.0319912 0.0299434 0.0240102 
-    0.0185844 0.0130411 0.0106532 0.00864871 0.00744519 0.00660887 
-    -0.0612913 -0.0203719 0.174998 0.991787 3.06292 4.60005 
-    4.93058 4.98917 5.00033 4.9999 4.99909 4.9966 4.9955 4.99488 
-    4.99374 4.9943 5.00131 5.00506 4.99311 4.96288 4.93567 4.92439 
-    4.94236 4.9732 4.98864 4.99458 5.00031 5.00694 5.01525 5.01945 
-    5.01998 5.01953 5.01874 5.01766 5.0164 5.01509 5.01326 5.01423 
-    5.01455 5.01361 5.01245 5.01122 5.01002 5.00888 5.00783 
-    5.00687 5.00596 5.00514 5.00442 5.00379 5.00325 5.00279 
-    5.0024 5.00208 5.0018 5.00153 5.00126 5.00107 5.00094 5.00085 
-    5.00078 5.00072 5.00063 5.00053 5.00042 5.00038 5.00034 
-    5.0003 5.00027 5.00023 5.00021 5.00019 5.00017 5.00015 5.00013 
-    5.00012 5.00011 5.0001 5.0001 5.00009 5.00008 5.00007 5.00007 
-    5.00006 5.00005 5.00005 5.00004 5.00004 5.00003 5.00003 
-    5.00002 5.00002 5.00002 5.00001 5.00001 5 5 5 5.00001 5.00001 
-    5.00001 5.00002 5.00002 5.00002 5.00002 
-    EOD
-
-    @v[13].set(<<-'EOD')
-    9.73784e-10 0.0189926 0.0926769 0.206309 0.111533 0.0953491 
-    0.0426966 0.0214177 0.0117943 0.00741442 0.00528816 0.00398417 
-    0.0032967 0.00266499 0.00206647 0.00158788 -0.0371391 -0.0439528 
-    -0.0408653 -0.0188706 0.0150241 0.0126852 0.00209817 -0.000239206 
-    -5.31488e-05 0.000876324 -0.00451221 -0.0165223 -0.0284127 
-    -0.0427584 -0.0502453 -0.0257366 -0.00903938 -0.00376456 
-    -0.00233385 -0.00169922 -0.00130397 -0.00102542 -0.000811435 
-    -0.000648115 -0.000529266 -0.00043795 -0.00036574 -0.00030716 
-    -0.00026221 -0.000229662 -0.000205112 -0.000181038 -0.000162045 
-    -0.000148988 -0.000137633 -0.000126278 -0.000115562 -0.000104976 
-    -9.49324e-05 -9.0585e-05 -8.62375e-05 -8.18901e-05 -7.75426e-05 
-    -7.31952e-05 -6.93752e-05 -6.59106e-05 -6.24461e-05 -5.89815e-05 
-    -5.55169e-05 -5.22412e-05 -5.05263e-05 -4.88114e-05 -4.70966e-05 
-    -4.53817e-05 -4.36668e-05 -4.19519e-05 -4.0237e-05 -3.85222e-05 
-    -3.68073e-05 -3.50924e-05 -3.34782e-05 -3.25442e-05 -3.16102e-05 
-    -3.06763e-05 -2.97423e-05 -2.88083e-05 -2.78744e-05 -2.69404e-05 
-    -2.60064e-05 -2.50725e-05 -2.41385e-05 -2.32635e-05 -2.27232e-05 
-    -2.21829e-05 -2.16426e-05 -2.11023e-05 -2.0562e-05 -2.00217e-05 
-    -1.94814e-05 -1.89411e-05 -1.84007e-05 -1.78604e-05 -1.73647e-05 
-    -1.70853e-05 -1.68059e-05 -1.65265e-05 -1.62471e-05 -1.59677e-05 
-    -1.56883e-05 -1.54089e-05 -1.51295e-05 -1.48501e-05 -1.45707e-05 
-    -1.42913e-05 -1.40119e-05 -1.37325e-05 -1.34531e-05 -1.31737e-05 
-    -1.28943e-05 -1.26149e-05 -1.23355e-05 -1.20561e-05 -1.17767e-05 
-    -1.14973e-05 -1.10954e-05 0.0152675 0.0228237 -0.00460678 
-    -0.0341525 0.0232109 -0.0138039 -0.0416538 -0.0458764 -0.0201967 
-    -0.00878316 -0.00379173 -0.00164621 -0.000785131 -0.00037575 
-    -0.000352375 -0.0545586 -0.0746881 -0.0771865 -0.05386 -0.0022199 
-    0.0136703 0.00633526 0.00138826 -0.00108934 0.0038886 0.0298077 
-    0.0475776 0.0481003 0.0464167 0.047818 0.042789 0.035207 
-    0.0264423 0.0193959 0.0151614 0.00624257 -0.00913057 -0.0310696 
-    -0.0430238 0.016426 0.189762 0.49025 0.820116 1.13919 1.43549 
-    1.70658 1.95183 2.17414 2.38506 2.5657 2.73958 2.97905 3.21403 
-    3.43025 3.62645 3.8028 3.96002 4.09996 4.22443 4.33427 4.42886 
-    4.51097 4.5817 4.64326 4.6957 4.74132 4.7797 4.81298 4.84102 
-    4.86512 4.88523 4.90224 4.91649 4.92846 4.93868 4.94755 
-    4.95483 4.96114 4.96682 4.97161 4.97502 4.9776 4.97944 4.98141 
-    4.98319 4.98467 4.98585 4.9869 4.98796 4.98902 4.99008 4.99114 
-    4.9922 4.99326 4.9938 4.99429 4.99479 4.99528 4.99578 4.99628 
-    4.99677 4.99704 4.99718 4.99733 4.99747 4.99762 4.99777 
-    4.99791 4.99806 4.9982 4.99835 4.9985 4.99864 4.99879 4.99893 
-    4.99907 4.99916 4.99925 4.99934 4.99943 5.01473 4.92293 
-    4.61974 4.0316 3.7835 3.74195 3.78344 3.87272 3.97386 4.07319 
-    4.16686 4.25256 4.33126 4.40264 4.46697 4.49249 4.51807 
-    4.55803 4.64055 4.78574 4.86074 4.88334 4.8999 4.91455 4.92814 
-    4.93926 4.94761 4.95433 4.95907 4.9654 4.98317 5.0208 5.05134 
-    4.85852 4.16041 3.00077 1.68376 0.672707 0.240838 0.0794725 
-    -0.0106347 -0.00879443 0.107196 0.368163 0.701424 1.03581 
-    1.3601 1.6678 1.95731 2.22701 2.47544 2.69099 2.92327 3.16648 
-    3.3877 3.59067 3.77344 3.93584 4.08066 4.20863 4.32065 4.41791 
-    4.50211 4.57423 4.63614 4.68888 4.73377 4.7721 4.80519 4.83338 
-    4.85732 4.87815 4.89514 4.90927 4.92108 4.93122 4.94014 
-    4.94845 4.95601 4.96251 4.96576 4.969 4.97225 4.9755 4.97874 
-    4.98087 4.98265 4.98442 4.9862 4.98797 4.98924 4.9899 4.99055 
-    4.9912 4.99186 4.99251 4.99316 4.99381 4.99447 4.99512 4.99577 
-    4.99609 4.99634 4.99659 4.99683 4.99708 4.99732 4.99757 
-    4.99782 4.99806 4.99831 4.99853 4.99863 4.99873 4.99883 
-    4.99893 4.99903 4.99913 4.99923 4.99933 
-    EOD
-
-    @v[14].set(<<-'EOD')
-    1.86175 2.00147 1.85141 1.0654 0.275481 0.205547 0.0712627 
-    0.0313387 0.0151431 0.00864531 0.00593861 0.00438111 0.0037479 
-    0.00305857 0.00221221 0.0017081 -0.0896128 -0.109079 -0.121356 
-    -0.0542001 0.175821 0.177442 0.0814591 0.0333042 0.0134909 
-    0.00625777 0.00100092 -0.00552776 -0.00411139 -0.00150395 
-    -0.000564784 3.48169e-05 -0.000287014 -0.000538515 -0.000456537 
-    -0.000325677 -0.000275468 -0.000166452 -8.27481e-05 -8.28704e-05 
-    -7.47644e-05 -4.60552e-05 -2.61481e-06 2.26359e-05 2.53852e-05 
-    -1.39853e-06 -4.23456e-05 -4.0907e-05 -2.8501e-05 -1.5945e-05 
-    -9.01122e-06 -2.07747e-06 1.49328e-06 4.38398e-06 6.84248e-06 
-    4.76711e-06 2.69173e-06 6.16362e-07 -1.45901e-06 -3.53438e-06 
-    -4.14256e-06 -3.76238e-06 -3.3822e-06 -3.00202e-06 -2.62184e-06 
-    -2.24878e-06 -1.93456e-06 -1.62033e-06 -1.3061e-06 -9.91867e-07 
-    -6.77638e-07 -3.63409e-07 -4.91792e-08 2.6505e-07 5.7928e-07 
-    8.93509e-07 1.16076e-06 1.11055e-06 1.06034e-06 1.01014e-06 
-    9.59927e-07 9.09719e-07 8.59511e-07 8.09302e-07 7.59094e-07 
-    7.08886e-07 6.58678e-07 5.99251e-07 4.87523e-07 3.75795e-07 
-    2.64068e-07 1.5234e-07 4.06119e-08 -7.1116e-08 -1.82844e-07 
-    -2.94572e-07 -4.063e-07 -5.18027e-07 -6.08517e-07 -5.95879e-07 
-    -5.83241e-07 -5.70604e-07 -5.57966e-07 -5.45328e-07 -5.3269e-07 
-    -5.20053e-07 -5.07415e-07 -4.94777e-07 -4.8214e-07 -4.69502e-07 
-    -4.56864e-07 -4.44226e-07 -4.31589e-07 -4.18951e-07 -4.06313e-07 
-    -3.93676e-07 -3.81038e-07 -3.684e-07 -3.55762e-07 -3.43125e-07 
-    1.06736e-05 0.0797407 0.0437947 -0.0645098 -0.0877312 0.0653203 
-    -0.00621184 -0.0353188 -0.0491378 -0.0251957 -0.0110996 
-    -0.00481123 -0.0020941 -0.000998038 -0.000478747 -0.000445332 
-    -0.102046 -0.135753 -0.154351 -0.0827509 0.163348 0.174012 
-    0.0794822 0.0310624 0.0112213 0.00249061 0.00130764 0.00181315 
-    0.00163875 0.00101454 0.000497435 0.000195258 5.31901e-05 
-    2.4607e-05 6.62736e-05 7.90718e-05 4.0372e-05 -0.000141184 
-    -0.000280623 5.5608e-05 0.000799565 0.000920189 0.000931616 
-    0.000494527 0.000162303 -8.24884e-05 -0.000183938 -0.000203899 
-    -0.000144788 -9.87063e-05 -0.000227929 2.93932e-05 0.000208563 
-    1.88958e-06 -7.6335e-05 -0.000172472 -0.000165656 -0.000145889 
-    -0.000177311 -0.000191058 -0.000168287 -0.00015755 -0.00013142 
-    -8.10488e-05 -6.36115e-05 -7.8699e-05 -8.11282e-05 -7.98625e-05 
-    -5.98807e-05 -3.40879e-05 -1.95464e-05 -1.79247e-05 -4.45514e-05 
-    -7.47995e-05 -8.7682e-05 -7.50806e-05 -3.25561e-05 -4.34114e-05 
-    -7.69099e-05 -0.000141101 -0.00018743 -0.000148471 -5.06546e-05 
-    0.000120195 0.000177635 0.000177052 0.000146344 9.75126e-05 
-    8.31233e-05 6.8734e-05 5.43447e-05 3.99554e-05 2.55661e-05 
-    1.11768e-05 -3.21253e-06 -3.88937e-06 -3.56628e-06 -3.24318e-06 
-    -2.92008e-06 -2.59699e-06 -2.27389e-06 -1.9508e-06 -1.73227e-06 
-    -1.56796e-06 -1.40365e-06 -1.23934e-06 -1.07503e-06 -9.10722e-07 
-    -7.46412e-07 -5.82101e-07 -4.1779e-07 -2.5348e-07 -8.91694e-08 
-    7.51412e-08 2.39452e-07 4.03762e-07 5.95733e-07 1.00771e-06 
-    1.41969e-06 1.83167e-06 2.24365e-06 0.0828257 0.231038 0.465438 
-    1.54516 2.8461 3.19221 3.40395 3.6382 3.80758 3.93848 4.04882 
-    4.15428 4.247 4.32917 4.40235 4.36941 4.397 4.48862 4.64552 
-    4.86595 5.03475 5.0348 5.02627 5.01967 5.01542 5.00925 4.98613 
-    4.9519 4.91581 4.87357 4.82302 4.80403 4.82565 4.86102 4.89483 
-    4.92253 4.94428 4.96257 4.97608 4.98373 4.98823 4.99182 
-    4.99437 4.99635 4.99745 4.99802 4.99843 4.99873 4.99895 
-    4.99912 4.99925 4.99931 4.99962 4.99973 4.99972 4.99971 
-    4.9997 4.99969 4.9997 4.99971 4.99973 4.99974 4.99976 4.99978 
-    4.9998 4.99982 4.99985 4.99987 4.99989 4.9999 4.99991 4.99991 
-    4.99993 4.99994 4.99997 5.00001 5.00006 5.00008 5.00006 
-    5.00002 5 4.99999 4.99998 4.99997 4.99995 4.99995 4.99995 
-    4.99995 4.99995 4.99995 4.99995 4.99996 4.99997 4.99997 
-    4.99998 4.99999 5 5 5.00001 5.00002 5.00002 5.00002 5.00002 
-    5.00002 5.00002 5.00002 5.00002 5.00002 5.00002 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5 5 5 4.99999 4.99999 4.99999 
-    EOD
-
-    @v[15].set(<<-'EOD')
-    1.86175 2.00199 2.08919 1.84314 1.08254 0.214737 0.0377351 
-    0.00952455 0.00232763 0.000563614 0.000263477 0.000148642 
-    0.000285086 0.000242592 7.34699e-05 -1.53467e-05 -0.0161874 
-    -0.0157876 -0.0141194 0.0132576 0.0903272 0.109938 0.0535295 
-    0.0224216 0.00940945 0.00466825 -0.000649972 -0.00654752 
-    -0.00333248 -0.00103671 -0.000508276 -5.8896e-05 -0.00043938 
-    -0.000544704 -0.00044444 -0.000307093 -0.00024517 -0.000154538 
-    -8.78602e-05 -7.10461e-05 -6.06485e-05 -3.91039e-05 -8.45988e-06 
-    9.43442e-06 1.28351e-05 -2.16734e-06 -2.6142e-05 -2.54768e-05 
-    -1.88997e-05 -1.17906e-05 -7.3808e-06 -2.97101e-06 1.19146e-07 
-    2.94246e-06 5.38942e-06 3.88851e-06 2.38761e-06 8.86704e-07 
-    -6.14201e-07 -2.11511e-06 -2.59565e-06 -2.38885e-06 -2.18205e-06 
-    -1.97525e-06 -1.76845e-06 -1.56241e-06 -1.36258e-06 -1.16276e-06 
-    -9.62939e-07 -7.63116e-07 -5.63293e-07 -3.6347e-07 -1.63647e-07 
-    3.61756e-08 2.35999e-07 4.35822e-07 6.07653e-07 5.90323e-07 
-    5.72994e-07 5.55665e-07 5.38336e-07 5.21007e-07 5.03678e-07 
-    4.86349e-07 4.6902e-07 4.51691e-07 4.34361e-07 4.11899e-07 
-    3.60315e-07 3.08731e-07 2.57146e-07 2.05562e-07 1.53977e-07 
-    1.02393e-07 5.08082e-08 -7.76222e-10 -5.23607e-08 -1.03945e-07 
-    -1.47815e-07 -1.54225e-07 -1.60635e-07 -1.67045e-07 -1.73455e-07 
-    -1.79864e-07 -1.86274e-07 -1.92684e-07 -1.99094e-07 -2.05504e-07 
-    -2.11914e-07 -2.18324e-07 -2.24734e-07 -2.31144e-07 -2.37554e-07 
-    -2.43964e-07 -2.50373e-07 -2.56783e-07 -2.63193e-07 -2.69603e-07 
-    -2.76013e-07 -2.82423e-07 2.92534e-06 0.0446777 0.024278 
-    -0.0518987 -0.0636547 0.00983929 -0.000518204 -0.000265194 
-    0.000154772 0.000299538 3.12715e-05 -3.18225e-05 -2.48268e-05 
-    -1.16701e-05 -6.05117e-06 7.61116e-06 -0.0163668 -0.0158244 
-    -0.0141177 0.0100085 0.0857144 0.107784 0.051862 0.0204448 
-    0.00629858 0.000967736 0.00121674 0.00190276 0.00154009 
-    0.000860922 0.000410386 0.000164585 3.99493e-05 1.93797e-05 
-    5.67594e-05 0.000110126 2.49925e-05 -7.17815e-05 -0.000142299 
-    -1.63109e-05 0.000439529 0.000562489 0.000594599 0.000326164 
-    0.000126423 -4.26063e-05 -0.000122927 -0.000114152 -6.72706e-05 
-    -6.41242e-05 -0.000135588 2.61507e-05 0.000134036 6.43734e-06 
-    -4.6223e-05 -0.000112047 -0.000101388 -8.67847e-05 -0.000117664 
-    -0.000133957 -0.000116558 -0.000100873 -7.65448e-05 -4.44964e-05 
-    -3.6677e-05 -5.26632e-05 -5.45172e-05 -5.13545e-05 -3.73869e-05 
-    -1.99732e-05 -1.0907e-05 -1.10081e-05 -3.02609e-05 -5.18517e-05 
-    -6.13597e-05 -5.30706e-05 -2.39572e-05 -3.24146e-05 -5.70062e-05 
-    -0.000103448 -0.000135376 -0.0001024 -2.39007e-05 0.000110929 
-    0.000151226 0.000142044 0.000105922 5.62834e-05 4.78476e-05 
-    3.94117e-05 3.09759e-05 2.25401e-05 1.41042e-05 5.66837e-06 
-    -2.76747e-06 -3.08639e-06 -2.81341e-06 -2.54043e-06 -2.26745e-06 
-    -1.99447e-06 -1.72149e-06 -1.44851e-06 -1.26226e-06 -1.12096e-06 
-    -9.79661e-07 -8.38363e-07 -6.97065e-07 -5.55768e-07 -4.1447e-07 
-    -2.73173e-07 -1.31875e-07 9.42259e-09 1.5072e-07 2.92018e-07 
-    4.33315e-07 5.74613e-07 7.10363e-07 8.01984e-07 8.93604e-07 
-    9.85225e-07 1.07685e-06 0.04474 0.0928765 0.141327 0.0176048 
-    -0.071675 -0.0124613 0.989022 2.28104 3.40619 4.21417 4.67173 
-    4.87438 4.96044 4.98996 4.99858 4.96672 4.89502 4.79391 
-    4.76433 4.8387 4.98612 5.0161 5.01722 5.01437 5.01256 4.99827 
-    4.95807 4.9209 4.88217 4.83006 4.78461 4.80759 4.85548 4.89604 
-    4.9254 4.94617 4.96126 4.97374 4.98255 4.98792 4.99126 4.99361 
-    4.99554 4.99699 4.99792 4.99846 4.99881 4.99905 4.99924 
-    4.99938 4.99949 4.99955 4.9997 4.9998 4.99982 4.99982 4.99982 
-    4.99982 4.99982 4.99983 4.99984 4.99985 4.99986 4.99987 
-    4.99988 4.99989 4.9999 4.99992 4.99993 4.99994 4.99995 4.99995 
-    4.99996 4.99996 4.99998 4.99999 5.00001 5.00002 5.00002 
-    5.00001 5.00001 5 4.99999 4.99999 4.99998 4.99998 4.99998 
-    4.99998 4.99998 4.99998 4.99998 4.99998 4.99998 4.99998 
-    4.99999 4.99999 4.99999 4.99999 5 5 5 5 5 5 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    EOD
-
-    @v[16].set(<<-'EOD')
-    1.86175 1.73073 1.50572 1.89001 3.39004 4.36034 4.79012 
-    4.93798 4.98305 4.99539 4.9979 4.99904 4.99772 4.9983 4.99935 
-    4.99975 4.98837 4.99456 4.99728 5.01838 5.04568 5.00759 
-    4.98112 4.98479 4.99197 4.99641 4.99747 4.99775 5.00043 
-    5.0007 5.00035 5.00023 4.99976 5.00002 5.00007 5.0002 4.99993 
-    5.00003 5.00021 5.00006 4.99993 4.99992 5.00002 5.00013 
-    5.00017 5.00009 4.99992 4.99991 4.99993 4.99996 4.99998 
-    4.99999 5.00001 5.00003 5.00005 5.00004 5.00004 5.00003 
-    5.00002 5.00001 5 4.99999 4.99999 4.99998 4.99998 4.99997 
-    4.99997 4.99998 4.99998 4.99998 4.99998 4.99999 4.99999 
-    4.99999 4.99999 5 5 5 5 5 5 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00002 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 5 5.01498 4.99342 4.96899 5.00301 5.02627 4.9977 
-    4.99548 4.99757 5.00277 5.00245 5.0014 5.00069 5.00032 5.00014 
-    5.00009 4.9867 4.99262 4.99607 5.01805 5.04713 5.00927 4.98184 
-    4.98483 4.9914 4.99616 4.99902 4.9999 4.99987 4.99979 4.99981 
-    4.99989 4.99994 4.99998 5.0002 5.00001 5.00008 5.00008 5.0001 
-    5.00021 5.00032 5.00025 5.00019 5.00006 5.00007 4.99994 
-    4.99997 4.99999 5.00023 5.00008 4.99993 4.99998 4.99986 
-    4.99982 5.00003 4.99985 4.99996 5.00014 5 4.99984 4.99979 
-    4.99982 4.99993 5.00008 5.00011 5.00002 4.99996 4.9999 4.99994 
-    5.00001 5.00007 5.00009 4.99995 4.99978 4.99971 4.99976 
-    4.99997 4.99996 4.99989 4.99972 4.99955 4.99953 4.99959 
-    4.99976 4.9999 5.00005 5.00023 5.00039 5.00034 5.00029 5.00024 
-    5.00019 5.00014 5.00009 5.00004 5.00003 5.00002 5.00001 
-    5 5 4.99999 4.99998 4.99998 4.99998 4.99998 4.99998 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 5 5 5 5 
-    5.00001 5.00002 5.00003 5.00004 5.01564 5.03395 5.04932 
-    5.11868 3.92502 1.31888 0.163888 0.0946876 0.0789578 0.0565084 
-    0.0260333 0.0156986 0.00907667 0.00613629 0.00468417 -0.00174008 
-    -0.0021422 0.000586962 0.0124937 0.0147977 0.00838454 0.00039383 
-    -0.000522021 -0.000426598 -0.000290214 -0.00173713 -0.00384132 
-    -0.00382945 -0.00429219 -0.00580193 -0.00393246 0.0017543 
-    0.00423045 0.00408931 0.0031976 0.00245457 0.00187293 0.00159068 
-    0.00105697 0.000609902 0.000358825 0.000334125 0.000212708 
-    0.000168116 8.97349e-05 5.21578e-05 3.84527e-05 2.93033e-05 
-    2.10067e-05 1.59954e-05 1.13917e-05 5.49738e-06 2.77217e-05 
-    6.51259e-06 -6.65468e-06 2.09837e-06 -6.617e-06 -4.80187e-06 
-    1.55031e-06 4.26536e-06 7.69457e-07 -1.46213e-06 -7.25202e-07 
-    3.26501e-06 6.55807e-06 7.524e-06 6.07209e-06 6.00701e-06 
-    5.41166e-06 3.86573e-06 1.10651e-06 -2.74603e-06 -2.18566e-06 
-    2.3658e-06 8.59956e-06 8.35046e-06 2.90621e-06 -8.75982e-07 
-    -1.87189e-06 -2.1528e-06 -1.94875e-06 -1.74471e-06 -1.54067e-06 
-    -1.33662e-06 -1.13258e-06 -8.40567e-07 -5.20743e-07 -2.00918e-07 
-    1.18906e-07 4.38731e-07 6.11382e-07 6.01529e-07 5.91675e-07 
-    5.81822e-07 5.71968e-07 5.62115e-07 5.52261e-07 5.42407e-07 
-    5.32554e-07 5.227e-07 5.12847e-07 4.72812e-07 4.26137e-07 
-    3.79462e-07 3.32786e-07 2.86111e-07 2.39436e-07 1.92761e-07 
-    1.46086e-07 9.94107e-08 5.27356e-08 -2.77779e-10 -7.98079e-08 
-    -1.59338e-07 -2.38868e-07 -3.18398e-07 -3.97928e-07 -4.77458e-07 
-    -5.56988e-07 -6.36519e-07 
-    EOD
-
-    @v[17].set(<<-'EOD')
-    5 5.16963 4.84136 3.33754 0.316206 0.103113 0.0273341 0.0221102 
-    0.0177008 0.0143758 0.0115203 0.00929231 0.00752716 0.00625439 
-    0.00489872 0.00403656 -0.0657317 -0.0256467 0.165394 0.985963 
-    3.05067 4.55799 4.89728 4.92464 4.8882 4.90592 4.97315 4.99241 
-    4.99694 4.99845 4.99905 4.99939 4.99959 4.99971 4.9998 4.99986 
-    4.9999 4.99993 4.99995 4.99996 4.99997 4.99998 4.99998 4.99999 
-    4.99999 4.99999 4.99999 4.99999 5 5.00001 5.00003 5.00005 
-    5.00004 5.00002 5 4.99999 4.99999 4.99998 4.99998 4.99997 
-    4.99997 4.99998 4.99998 4.99999 4.99999 5 5 5 5 5 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00002 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5 5 5 5 
-    5 5 5 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99998 
-    4.99998 4.99998 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 5 5 5 5 5 5 5.00025 5.1657 4.69981 2.43895 
-    0.0229743 0.0351406 -0.0211974 -0.0312063 -0.0160331 -0.0021718 
-    -0.000766597 -0.000251052 -5.49363e-05 -3.36364e-06 -2.01983e-06 
-    -9.70575e-06 -0.0657007 -0.0205247 0.183332 1.07163 3.11839 
-    4.46213 4.84163 4.95195 4.99159 5.02084 5.04029 5.04138 
-    5.0271 5.00445 4.97957 4.95702 4.95231 4.97819 4.99191 4.9963 
-    4.99822 4.99878 4.99903 4.99925 4.99942 4.9995 4.99954 4.99957 
-    4.99961 4.99966 4.9997 4.99974 4.99977 4.99981 4.99983 4.99986 
-    4.99988 4.9999 4.99991 4.99992 4.99994 4.99995 4.99995 4.99996 
-    4.99997 4.99997 4.99998 4.99998 4.99998 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5.00001 5.00001 5.00001 
-    5.00002 5.00002 5.00002 5.00002 5.00002 5.00002 5.00002 
-    5.00002 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5 5 5 4.99999 4.99998 4.99997 4.99996 5.14239 4.76219 
-    3.16574 0.299969 0.0631609 -0.00118611 -0.00026052 -5.96333e-05 
-    -1.44904e-05 -4.3859e-06 -2.99454e-06 1.10547e-06 4.84662e-06 
-    1.30971e-05 2.23082e-05 -0.0655844 -0.0204818 0.182507 1.05954 
-    3.12277 4.46735 4.83915 4.94512 4.97679 4.98654 4.9966 5.00833 
-    5.00776 5.00432 5.00199 5.00086 5.00033 5.00008 5 5.00001 
-    5 5.00005 5.00002 4.99981 4.99991 4.99998 4.99979 4.99979 
-    4.99984 4.9998 4.9998 5.00006 5.00002 5.00001 5 5 4.99992 
-    4.99998 4.99999 5.00002 5.00014 4.99999 4.99987 4.99993 
-    5.00003 5.00011 5.00005 4.99996 4.99987 4.99985 4.99994 
-    5.00009 5.0001 5 4.99993 4.99997 5.00008 5.00015 5.00021 
-    5.00021 5.00007 4.99978 4.99965 4.99973 4.9999 4.99992 4.99995 
-    4.99997 4.99999 5.00001 5.00002 5.00001 5.00001 5.00001 
-    5 5 5 5 5 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99998 4.99998 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 5 5 5 5 5 5.00001 5.00001 5.00001 5.00002 
-    5.00002 5.00002 
-    EOD
-
-    @v[18].set(<<-'EOD')
-    5 5.0333 5.02472 4.92559 4.18383 3.93923 3.9961 4.14293 
-    4.28591 4.41336 4.52157 4.61101 4.68472 4.7439 4.79294 4.83239 
-    4.80697 4.78808 4.79322 4.8838 5.08529 5.21863 4.88852 3.90198 
-    2.14586 0.383977 0.101103 0.0525711 0.0318287 0.020895 0.0146908 
-    0.010831 0.00830272 0.00656377 0.00532066 0.00440078 0.00369956 
-    0.00315713 0.00272614 0.00237965 0.00209659 0.00186339 0.00167014 
-    0.0015081 0.00137172 0.00125607 0.00115393 0.00106076 0.000980166 
-    0.000918015 0.000862837 0.00080766 0.000763488 0.000721541 
-    0.000680825 0.000653026 0.000625226 0.000597426 0.000569627 
-    0.000541827 0.000519087 0.000499756 0.000480424 0.000461093 
-    0.000441761 0.000423291 0.000411941 0.00040059 0.00038924 
-    0.000377889 0.000366539 0.000355188 0.000343838 0.000332487 
-    0.000321137 0.000309786 0.000299055 0.000292509 0.000285963 
-    0.000279417 0.000272871 0.000266325 0.000259779 0.000253233 
-    0.000246686 0.00024014 0.000233594 0.000227387 0.0002231 
-    0.000218813 0.000214526 0.00021024 0.000205953 0.000201666 
-    0.000197379 0.000193092 0.000188805 0.000184519 0.000180526 
-    0.000177963 0.0001754 0.000172837 0.000170274 0.000167711 
-    0.000165148 0.000162585 0.000160022 0.000157459 0.000154895 
-    0.000152332 0.000149769 0.000147206 0.000144643 0.00014208 
-    0.000139517 0.000136954 0.000134391 0.000131828 0.000129265 
-    0.000126702 0.000132838 0.0311184 0.163151 0.34986 0.604501 
-    0.357125 0.136137 0.0711304 0.0346959 0.0212674 0.00872193 
-    0.00252206 0.000455269 7.59332e-05 2.91532e-05 0.000320562 
-    -0.0720911 -0.0840491 -0.0791345 -0.0404143 0.0182035 -0.0235871 
-    -0.0426072 -0.0597501 0.00824773 0.481404 1.32496 2.11949 
-    2.57317 2.58202 2.15054 1.33786 0.45702 0.153772 0.0913584 
-    0.0604989 0.0421591 0.0271456 0.0170021 0.0115815 0.00907886 
-    0.00742466 0.00626096 0.00531127 0.00450501 0.00381927 0.00323718 
-    0.00274374 0.00232494 0.00196885 0.00166686 0.00141134 0.00119437 
-    0.0010109 0.000855534 0.000723378 0.000611408 0.000516704 
-    0.000436769 0.000369523 0.000313026 0.00026526 0.000223976 
-    0.000188972 0.000159042 0.000134148 0.000112688 9.49738e-05 
-    7.97877e-05 6.721e-05 5.65115e-05 4.77194e-05 4.03591e-05 
-    3.42848e-05 2.92627e-05 2.50435e-05 2.1412e-05 1.84532e-05 
-    1.58624e-05 1.34673e-05 1.14461e-05 1.00935e-05 9.12375e-06 
-    8.50202e-06 7.81431e-06 7.20729e-06 6.73936e-06 6.3702e-06 
-    5.90049e-06 5.43077e-06 4.96105e-06 4.49133e-06 4.02162e-06 
-    3.5519e-06 3.08218e-06 2.79099e-06 2.51281e-06 2.23463e-06 
-    1.95645e-06 1.67827e-06 1.40009e-06 1.12191e-06 1.01376e-06 
-    9.9375e-07 9.73741e-07 9.53733e-07 9.33724e-07 9.13715e-07 
-    8.93707e-07 8.73698e-07 8.5369e-07 8.33681e-07 8.13673e-07 
-    7.93664e-07 7.73655e-07 7.53647e-07 7.21781e-07 5.956e-07 
-    4.69419e-07 3.43239e-07 2.17058e-07 0.0284032 0.0374438 
-    -0.0157543 -0.0680497 0.0504768 0.0100294 0.00222261 0.000528697 
-    0.000132929 3.99489e-05 2.46066e-05 4.56327e-06 -6.54853e-06 
-    1.33783e-05 -3.68221e-05 -0.0724498 -0.0843663 -0.0792935 
-    -0.0406426 0.0200019 0.0426259 0.0220753 0.00668555 -0.000968483 
-    0.024662 0.0383437 0.0911513 0.087848 0.0602076 0.0390559 
-    0.0260573 0.0180444 0.012974 0.00985409 0.00788132 0.0064228 
-    0.005545 0.00453571 0.00364245 0.00310278 0.00270523 0.00236439 
-    0.0020945 0.00186808 0.00167493 0.00151731 0.00138594 0.00126945 
-    0.00116695 0.0010762 0.000996366 0.000928387 0.000864414 
-    0.000808258 0.000759574 0.000713865 0.000666712 0.000632716 
-    0.000601262 0.000572163 0.000543986 0.000515253 0.0004897 
-    0.000468112 0.000449313 0.000432981 0.000417911 0.000401307 
-    0.000382712 0.000366678 0.000355736 0.000349171 0.000335727 
-    0.000317091 0.000296086 0.000283543 0.000277366 0.000272233 
-    0.000267001 0.000263147 0.000256699 0.000250251 0.000243803 
-    0.000237355 0.000230907 0.000225424 0.000220247 0.000215069 
-    0.000209892 0.000204714 0.000200213 0.000196548 0.000192884 
-    0.00018922 0.000185556 0.000181892 0.000178228 0.000174564 
-    0.0001709 0.000167236 0.000163572 0.000160824 0.000158279 
-    0.000155733 0.000153187 0.000150641 0.000148095 0.000145549 
-    0.000143003 0.000140457 0.000137911 0.000135457 0.000133386 
-    0.000131315 0.000129245 0.000127174 0.000125103 0.000123032 
-    0.000120961 0.000118891 
-    EOD
-
-    @v[19].set(<<-'EOD')
-    1.86175 1.99994 2.0833 2.01627 2.42503 3.25769 3.62134 3.88827 
-    4.09688 4.26773 4.40529 4.51734 4.60827 4.68313 4.74346 
-    4.79302 4.72815 4.68959 4.70421 4.81316 5.01375 5.14493 
-    5.10305 5.0699 5.04484 5.03751 5.03348 5.02504 5.01799 5.01271 
-    5.00895 5.00628 5.0044 5.00309 5.00216 5.00151 5.00105 5.00073 
-    5.00051 5.00034 5.00023 5.00015 5.0001 5.00007 5.00003 4.99998 
-    4.99993 4.99993 4.99995 4.99999 5.00001 5.00003 5.00002 
-    5.00001 5 5 5 5 4.99999 4.99999 4.99999 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5.00017 5.17398 
-    4.94779 3.78508 1.52302 0.608808 0.244311 0.126053 0.0597175 
-    0.038422 0.0158174 0.00481338 0.00107847 0.000301256 0.000114861 
-    0.00059489 -0.118904 -0.147478 -0.158986 -0.080544 0.165361 
-    0.171378 0.0776087 0.0435738 0.0428235 0.0423755 0.0347695 
-    0.0225061 0.0155539 0.0121357 0.0107997 0.0103976 0.0124406 
-    0.016814 0.0167556 0.0149852 0.01459 0.0141182 0.0131934 
-    0.0120286 0.0108692 0.0097184 0.00855881 0.00744912 0.00643877 
-    0.00554044 0.00475165 0.00406535 0.00347158 0.00295981 0.00251995 
-    0.00214318 0.00182101 0.00154613 0.00131196 0.0011119 0.000941587 
-    0.000796999 0.000674582 0.000571283 0.000484276 0.000410649 
-    0.000347005 0.000292984 0.000246715 0.000208143 0.00017489 
-    0.000147412 0.000123854 0.000104332 8.77229e-05 7.40686e-05 
-    6.2637e-05 5.32e-05 4.53946e-05 3.88343e-05 3.31864e-05 
-    2.85905e-05 2.45725e-05 2.08671e-05 1.77301e-05 1.55911e-05 
-    1.40153e-05 1.29421e-05 1.18693e-05 1.09815e-05 1.03484e-05 
-    9.87664e-06 9.14446e-06 8.41228e-06 7.68011e-06 6.94793e-06 
-    6.21575e-06 5.48357e-06 4.7514e-06 4.38454e-06 4.04432e-06 
-    3.7041e-06 3.36388e-06 3.02366e-06 2.68344e-06 2.34322e-06 
-    2.15196e-06 2.03791e-06 1.92386e-06 1.80982e-06 1.69577e-06 
-    1.58173e-06 1.46768e-06 1.35363e-06 1.23959e-06 1.12554e-06 
-    1.0115e-06 8.9745e-07 7.83404e-07 6.69358e-07 4.76113e-07 
-    -3.47071e-07 -1.17025e-06 -1.99344e-06 -2.81662e-06 0.0783754 
-    0.0500262 -0.0659563 -0.120914 0.0815957 0.0154255 0.00347177 
-    0.000840357 0.000214582 6.54655e-05 3.91709e-05 8.07396e-06 
-    -4.44265e-07 1.74384e-05 -4.52725e-05 -0.119379 -0.147984 
-    -0.159247 -0.0824604 0.169014 0.177628 0.0758742 0.010558 
-    -0.0346506 -0.0710288 -0.0838952 -0.0599521 -0.034568 -0.0181615 
-    -0.00968034 -0.00547115 -0.00333511 -0.00232468 -0.00181159 
-    -0.00143841 -0.00116601 -0.000839755 -0.000569764 -0.000578683 
-    -0.000490551 -0.000411712 -0.000437859 -0.000408185 -0.000356644 
-    -0.000311332 -0.000269006 -0.000221396 -0.000210054 -0.0001923 
-    -0.000175122 -0.000161039 -0.0001428 -0.000126123 -0.000127893 
-    -8.14516e-05 -0.000120166 -0.000154909 -0.000112733 -8.40377e-05 
-    -7.11342e-05 -8.09538e-05 -9.77789e-05 -9.82402e-05 -7.73531e-05 
-    -5.28255e-05 -3.1096e-05 -1.87967e-05 -1.96552e-05 -4.16655e-05 
-    -5.77185e-05 -5.24142e-05 -2.83153e-05 -1.90012e-05 -1.54415e-05 
-    -2.52569e-05 -6.23747e-05 -0.000130543 -0.000149394 -0.000110886 
-    -4.35517e-05 -4.17084e-05 -3.98651e-05 -3.80218e-05 -3.61785e-05 
-    -3.43352e-05 -3.36249e-05 -3.32729e-05 -3.29208e-05 -3.25687e-05 
-    -3.22166e-05 -3.17143e-05 -3.10258e-05 -3.03372e-05 -2.96486e-05 
-    -2.89601e-05 -2.82715e-05 -2.75829e-05 -2.68944e-05 -2.62058e-05 
-    -2.55173e-05 -2.48287e-05 -2.43043e-05 -2.38159e-05 -2.33276e-05 
-    -2.28393e-05 -2.2351e-05 -2.18626e-05 -2.13743e-05 -2.0886e-05 
-    -2.03977e-05 -1.99093e-05 -1.945e-05 -1.91122e-05 -1.87744e-05 
-    -1.84366e-05 -1.80987e-05 -1.77609e-05 -1.74231e-05 -1.70853e-05 
-    -1.67474e-05 
-    EOD
-
-    @v[20].set(<<-'EOD')
-    1.86175 1.99724 2.17266 2.48439 3.15933 3.85231 4.38091 
-    4.69033 4.85034 4.92851 4.96453 4.98188 4.98736 4.991 4.99482 
-    4.9973 4.96422 4.89989 4.83907 4.83151 4.90868 5.04854 5.06104 
-    5.04571 5.03219 5.03025 5.02273 5.01707 5.0123 5.0087 5.00611 
-    5.00429 5.00301 5.00211 5.00148 5.00103 5.00072 5.0005 5.00035 
-    5.00024 5.00016 5.00011 5.00007 5.00005 5.00003 5.00001 
-    4.99999 4.99998 4.99998 4.99998 4.99998 4.99998 4.99999 
-    5 5 5.00001 5.00001 5.00002 5.00002 5.00002 5.00002 5.00002 
-    5.00002 5.00001 5.00001 5 5 5 5 5 5 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 5 5 5 5 5 5 5 5 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5 5 5 5 
-    5 5 4.99981 5.10081 5.10903 4.98404 5.00999 5.14946 4.36501 
-    2.23938 0.325144 0.00660272 -0.0102186 -0.0082401 -0.00556785 
-    -0.00374178 -0.00264763 -0.00202823 -0.0182241 -0.0169551 
-    -0.0150395 0.0103736 0.0877592 0.104382 0.0515938 0.0373818 
-    0.0411547 0.0397009 0.0308946 0.0205793 0.0154037 0.0129191 
-    0.0119327 0.011527 0.0124295 0.0161152 0.0161076 0.0145391 
-    0.0144541 0.0139287 0.0129215 0.0117239 0.0105795 0.00942983 
-    0.00827423 0.00718354 0.00619954 0.00532868 0.00456631 0.00390448 
-    0.00333254 0.00284003 0.00241714 0.00205524 0.0017458 0.00148202 
-    0.00125739 0.0010655 0.000902213 0.000763611 0.000646279 
-    0.000547291 0.000463934 0.000393401 0.000332424 0.000280655 
-    0.000236328 0.000199386 0.000167536 0.000141218 0.000118654 
-    9.99559e-05 8.40479e-05 7.09694e-05 6.00188e-05 5.09786e-05 
-    4.3502e-05 3.72191e-05 3.18114e-05 2.74071e-05 2.35539e-05 
-    1.99967e-05 1.69871e-05 1.49449e-05 1.3451e-05 1.24492e-05 
-    1.14256e-05 1.05669e-05 9.94487e-06 9.47514e-06 8.77318e-06 
-    8.07123e-06 7.36927e-06 6.66731e-06 5.96536e-06 5.2634e-06 
-    4.56144e-06 4.23044e-06 3.92649e-06 3.62254e-06 3.31858e-06 
-    3.01463e-06 2.71068e-06 2.40673e-06 2.23063e-06 2.12082e-06 
-    2.01102e-06 1.90121e-06 1.7914e-06 1.68159e-06 1.57178e-06 
-    1.46197e-06 1.35216e-06 1.24235e-06 1.13255e-06 1.02274e-06 
-    9.12929e-07 8.0312e-07 6.33171e-07 -1.51288e-08 -6.63428e-07 
-    -1.31173e-06 -1.96003e-06 0.0437517 0.0265689 -0.0515377 
-    -0.0658688 0.010727 -0.000511921 -8.36924e-05 2.13278e-05 
-    1.45207e-05 4.54862e-06 -6.14726e-06 2.0062e-06 1.02709e-06 
-    1.4152e-05 -3.08225e-05 -0.0166501 -0.0157139 -0.013957 
-    0.0107537 0.0873717 0.111302 0.0454129 -0.00530142 -0.0468336 
-    -0.0790063 -0.0826944 -0.0534753 -0.0288705 -0.0149009 -0.00801592 
-    -0.0046342 -0.00291835 -0.00213019 -0.00170055 -0.001352 
-    -0.00110593 -0.000742655 -0.000532042 -0.000544742 -0.000479206 
-    -0.000407307 -0.000403575 -0.000366209 -0.000324161 -0.000286183 
-    -0.000247579 -0.000214281 -0.000203435 -0.000186896 -0.000171033 
-    -0.00015779 -0.000145259 -0.000128069 -0.000122647 -9.89398e-05 
-    -0.000114926 -0.000132195 -0.000107872 -8.91015e-05 -7.87996e-05 
-    -8.14061e-05 -8.9098e-05 -8.83368e-05 -7.6122e-05 -6.14668e-05 
-    -4.75402e-05 -3.81855e-05 -3.69696e-05 -4.78656e-05 -5.61346e-05 
-    -5.35007e-05 -4.1459e-05 -3.35411e-05 -2.52374e-05 -2.37479e-05 
-    -4.6406e-05 -9.41884e-05 -0.000109222 -8.52676e-05 -4.25166e-05 
-    -4.10125e-05 -3.95085e-05 -3.80045e-05 -3.65004e-05 -3.49964e-05 
-    -3.41627e-05 -3.3541e-05 -3.29193e-05 -3.22976e-05 -3.16758e-05 
-    -3.10334e-05 -3.03653e-05 -2.96971e-05 -2.9029e-05 -2.83609e-05 
-    -2.76928e-05 -2.70246e-05 -2.63565e-05 -2.56884e-05 -2.50203e-05 
-    -2.43521e-05 -2.38716e-05 -2.34324e-05 -2.29932e-05 -2.25539e-05 
-    -2.21147e-05 -2.16755e-05 -2.12362e-05 -2.0797e-05 -2.03578e-05 
-    -1.99186e-05 -1.95079e-05 -1.9217e-05 -1.8926e-05 -1.8635e-05 
-    -1.8344e-05 -1.8053e-05 -1.7762e-05 -1.74711e-05 -1.71801e-05 
-    EOD
-
-    @v[21].set(<<-'EOD')
-    1.86175 1.73273 1.42016 1.02483 0.944013 0.274107 0.0823742 
-    0.0379366 0.020816 0.0132952 0.00955525 0.00717008 0.00592286 
-    0.00437379 0.00383557 0.00273694 -0.0037467 -0.0054191 -0.00131454 
-    0.0112179 0.0133918 0.00519747 -0.00260113 -0.00252847 -0.00181292 
-    0.000183398 -0.000667607 -0.000750747 -0.000594314 -0.000433904 
-    -0.000308985 -0.000217858 -0.000152926 -0.000107454 -7.54076e-05 
-    -5.2675e-05 -3.66299e-05 -2.54341e-05 -1.75095e-05 -1.18848e-05 
-    -7.97289e-06 -5.30239e-06 -3.53615e-06 -2.38504e-06 -2.40158e-06 
-    -3.84485e-06 -5.29435e-06 -2.57099e-06 1.95189e-06 3.55083e-06 
-    2.06179e-06 5.72753e-07 3.30469e-07 3.40296e-07 3.60221e-07 
-    4.86081e-07 6.1194e-07 7.37799e-07 8.63659e-07 9.89518e-07 
-    9.21274e-07 7.22275e-07 5.23276e-07 3.24277e-07 1.25278e-07 
-    -5.59467e-08 -9.03265e-08 -1.24706e-07 -1.59086e-07 -1.93466e-07 
-    -2.27846e-07 -2.62226e-07 -2.96605e-07 -3.30985e-07 -3.65365e-07 
-    -3.99745e-07 -4.24266e-07 -3.82163e-07 -3.40061e-07 -2.97959e-07 
-    -2.55857e-07 -2.13755e-07 -1.71652e-07 -1.2955e-07 -8.7448e-08 
-    -4.53457e-08 -3.24353e-09 3.76901e-08 7.19937e-08 1.06297e-07 
-    1.40601e-07 1.74904e-07 2.09208e-07 2.43512e-07 2.77815e-07 
-    3.12119e-07 3.46422e-07 3.80726e-07 4.04507e-07 3.77191e-07 
-    3.49876e-07 3.22561e-07 2.95246e-07 2.67931e-07 2.40616e-07 
-    2.13301e-07 1.85986e-07 1.58671e-07 1.31356e-07 1.04041e-07 
-    7.67256e-08 4.94105e-08 2.20955e-08 -5.21962e-09 -3.25347e-08 
-    -5.98498e-08 -8.71649e-08 -1.1448e-07 -1.41795e-07 -1.6911e-07 
-    7.87893e-06 0.0114592 -0.0245712 -0.111637 0.0961324 1.61168 
-    3.22343 4.20442 4.53535 4.83834 4.95464 4.98874 4.99746 
-    4.99883 4.99948 4.99815 4.98431 4.99298 4.99718 5.01948 
-    5.04749 5.008 4.98243 4.98985 4.99781 4.99887 4.99679 4.99616 
-    4.99743 4.99859 4.99936 4.99972 5.00058 5.00123 5.0002 4.99945 
-    4.99983 4.9998 4.99966 4.99958 4.99956 4.99956 4.99956 4.99958 
-    4.99961 4.99965 4.99969 4.99973 4.99977 4.9998 4.99983 4.99985 
-    4.99987 4.99989 4.99991 4.99992 4.99993 4.99994 4.99995 
-    4.99996 4.99997 4.99997 4.99998 4.99998 4.99998 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5.00001 5.00001 
-    5.00001 5.00002 5.00002 5.00002 5.00002 5.00002 5.00002 
-    5.00002 5.00002 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5 5 5 4.99999 4.99998 4.99997 4.99996 5.01454 
-    4.99566 4.96796 4.99819 5.03232 5.00034 4.99867 4.99937 
-    4.99977 4.99992 4.99997 4.99999 5.00001 5.00021 4.99974 
-    4.98462 4.99301 4.99723 5.01936 5.04807 5.00929 4.9789 4.97876 
-    4.98244 4.9863 4.99575 5.0069 5.00863 5.00624 5.00357 5.0019 
-    5.00098 5.00048 5.00025 5.00016 5.00011 5.00013 5.00009 
-    4.99982 4.99994 5.00005 4.99994 4.99988 4.99989 4.99997 
-    5.00003 5.00005 5.00002 5.00001 5.00001 5.00001 4.99993 
-    4.99999 5 5.00021 4.99997 4.99981 5 5.00009 5.0001 5.00001 
-    4.99991 4.9999 5 5.00011 5.00017 5.00018 5.00018 5.00014 
-    5.00007 4.99999 4.9999 4.9999 5.00001 5.00016 5.00014 4.99999 
-    4.99993 4.99999 5.00009 5.00007 5.00006 5.00004 5.00003 
-    5.00001 5.00001 5 4.99999 4.99998 4.99997 4.99997 4.99997 
-    4.99998 4.99998 4.99998 4.99998 4.99999 4.99999 4.99999 
-    5 5 5 5 5 5 5.00001 5.00001 5.00001 5.00001 5.00001 5.00002 
-    5.00002 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5 5 
-    EOD
-
-    @v[22].set(<<-'EOD')
-    7.10441e-10 0.00107105 0.000637109 -0.00236346 -0.018079 
-    -0.0120077 -0.00217059 0.00266679 0.00403383 0.00403836 
-    0.00356705 0.00303303 0.00244716 0.00198586 0.0016855 0.00136497 
-    -3.96022e-05 -0.000367409 -3.77079e-05 0.00194085 0.00506964 
-    -0.0400214 -0.0402572 0.0524434 0.286234 0.803011 1.44795 
-    2.02473 2.54768 3.02748 3.4415 3.78287 4.09667 4.35152 4.53987 
-    4.67614 4.77407 4.84319 4.89227 4.92702 4.95119 4.96764 
-    4.97846 4.98557 4.98982 4.99209 4.99371 4.99569 4.99727 
-    4.99802 4.99834 4.99867 4.99892 4.99915 4.99936 4.99939 
-    4.99943 4.99946 4.9995 4.99953 4.99957 4.9996 4.99963 4.99967 
-    4.9997 4.99973 4.99974 4.99975 4.99976 4.99977 4.99978 4.9998 
-    4.99981 4.99982 4.99983 4.99984 4.99985 4.99986 4.99986 
-    4.99986 4.99987 4.99987 4.99988 4.99988 4.99989 4.99989 
-    4.9999 4.9999 4.9999 4.9999 4.99991 4.99991 4.99991 4.99991 
-    4.99992 4.99992 4.99992 4.99992 4.99993 4.99993 4.99993 
-    4.99993 4.99993 4.99993 4.99993 4.99993 4.99994 4.99994 
-    4.99994 4.99994 4.99994 4.99994 4.99994 4.99994 4.99995 
-    4.99995 4.99995 4.99995 4.99995 4.99995 4.99995 5.00145 
-    5.00659 5.01209 5.01931 5.00279 4.99273 4.99217 4.99295 
-    4.99471 4.99594 4.99696 4.9978 4.99844 4.99891 4.99924 4.99635 
-    4.99699 4.99813 5.00068 5.00307 5.0588 4.96365 4.54012 3.6307 
-    2.35176 1.0322 0.354379 0.115986 0.0435668 0.0245112 0.020786 
-    0.0164656 0.0118409 0.00849698 0.00597078 0.0040105 0.0026076 
-    0.0016597 0.00118185 0.00121067 0.00153587 0.00174836 0.00136519 
-    -0.000189116 -0.00315555 -0.00646603 -0.00898042 -0.010203 
-    -0.0110896 -0.0123764 -0.00953841 -0.00225795 0.000818314 
-    0.00152252 0.00150269 0.00119025 0.000767068 0.000308852 
-    -3.79272e-05 -0.00019691 -0.000186642 -9.73653e-05 -8.49784e-06 
-    2.04147e-05 -9.91086e-06 -1.55959e-05 -1.80499e-05 -1.77097e-05 
-    -1.51548e-05 -1.1978e-05 -9.84916e-06 -1.29728e-05 -1.67235e-05 
-    -1.74153e-05 -1.39958e-05 -5.92272e-06 -8.08216e-06 -1.53077e-05 
-    -2.92531e-05 -3.91049e-05 -2.98935e-05 -7.32122e-06 3.18534e-05 
-    4.39134e-05 4.18753e-05 3.22759e-05 1.86766e-05 1.58432e-05 
-    1.30098e-05 1.01765e-05 7.34312e-06 4.50975e-06 1.67639e-06 
-    -1.15697e-06 -1.23877e-06 -1.11991e-06 -1.00106e-06 -8.82208e-07 
-    -7.63355e-07 -6.44502e-07 -5.2565e-07 -4.29318e-07 -3.44661e-07 
-    -2.60004e-07 -1.75347e-07 -9.06904e-08 -6.03349e-09 7.86234e-08 
-    1.6328e-07 2.47937e-07 3.32594e-07 4.17251e-07 5.01908e-07 
-    5.86565e-07 6.71222e-07 7.36123e-07 6.43886e-07 5.5165e-07 
-    4.59414e-07 3.67178e-07 0.000334759 -4.60833e-05 -0.00106139 
-    -0.00166624 0.000859563 0.00102606 0.00410037 0.00419931 
-    0.00518997 0.00459791 0.00503125 0.00523877 0.00452158 0.00339924 
-    0.00233399 0.000876915 0.000546439 0.000444299 0.000983968 
-    0.00119304 -0.0429422 -0.0403983 0.0534896 0.288013 0.807345 
-    1.44247 2.03448 2.57021 3.05049 3.47332 3.8131 4.1009 4.34677 
-    4.53512 4.67127 4.76531 4.82526 4.86593 4.89586 4.91904 
-    4.93806 4.95348 4.96597 4.97629 4.9843 4.98983 4.99335 4.9957 
-    4.99741 4.99864 4.99946 4.99994 5.00047 5.00073 5.00086 
-    5.00092 5.00094 5.00091 5.00087 5.00081 5.00074 5.00067 
-    5.00059 5.00052 5.00046 5.0004 5.00034 5.0003 5.00026 5.00022 
-    5.00019 5.00016 5.00014 5.00012 5.0001 5.00009 5.00007 5.00006 
-    5.00006 5.00005 5.00004 5.00004 5.00004 5.00003 5.00003 
-    5.00003 5.00002 5.00002 5.00002 5.00002 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5 5 5 5 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 5 5 5 5 5 5 5 5 5 5.00001 5.00001 
-    5.00001 5.00001 5.00002 5.00002 
-    EOD
-
-    @v[23].set(<<-'EOD')
-    5 5.00284 5.01266 5.01895 4.98936 4.99575 4.99217 4.99545 
-    4.99775 4.99894 4.99946 4.99968 4.99975 4.99977 4.99986 
-    4.9999 4.99528 4.99808 5.00039 5.00392 5.00512 4.99985 4.99863 
-    4.99942 4.99992 5.00017 4.99897 4.99803 4.99784 4.99739 
-    4.99883 5.00365 5.00298 5.00133 5.00048 5.00019 5.00008 
-    5.00005 5.00004 5.00003 5.00002 5.00002 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5 5 4.99999 4.99997 4.99995 4.99996 
-    4.99998 5 5.00001 5.00001 5.00002 5.00002 5.00003 5.00003 
-    5.00002 5.00002 5.00001 5.00001 5 5 5 5 5 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99998 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 5 5 5 5 5 5 5 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00002 
-    5.00002 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5 5 5 5 5 5 5 5.00217 5.00108 4.99547 4.99658 5.00667 
-    4.99641 4.99532 4.99938 5.00328 5.00222 5.00114 5.00052 
-    5.00024 5.00011 5.00009 4.99285 4.99591 4.99897 5.00403 
-    5.00786 5.00318 4.99942 4.9992 4.99949 5.001 5.00408 5.00319 
-    5.00063 4.99995 5.00014 4.99982 4.99832 4.99838 4.99865 
-    4.99912 4.99836 4.99735 4.99606 4.99814 5.00958 5.02973 
-    5.05293 5.06103 4.99342 4.80726 4.50744 4.07509 3.41358 
-    2.37924 1.03194 0.261552 0.142392 0.0904482 0.0555071 0.0322869 
-    0.018289 0.0113802 0.00875182 0.00757055 0.00629906 0.00523 
-    0.00403349 0.0031953 0.00280864 0.00286119 0.00250389 0.00202815 
-    0.001723 0.00147312 0.0012411 0.00104401 0.000886204 0.000758277 
-    0.000651915 0.00056348 0.000487966 0.000424048 0.000365613 
-    0.000308178 0.000258725 0.000228061 0.000207976 0.000198491 
-    0.00018518 0.000172716 0.000163197 0.000155007 0.000141734 
-    0.000128461 0.000115188 0.000101915 8.86417e-05 7.53686e-05 
-    6.20956e-05 5.69164e-05 5.23275e-05 4.77385e-05 4.31495e-05 
-    3.85605e-05 3.39716e-05 2.93826e-05 2.69449e-05 2.56224e-05 
-    2.42999e-05 2.29774e-05 2.16549e-05 2.03324e-05 1.90099e-05 
-    1.76873e-05 1.63648e-05 1.50423e-05 1.37198e-05 1.23973e-05 
-    1.10748e-05 9.75232e-06 8.48447e-06 7.65129e-06 6.81811e-06 
-    5.98494e-06 5.15176e-06 0.00056893 -0.00787906 -0.0217381 
-    -0.0370066 -0.00770505 0.00659312 0.00975477 0.00949456 
-    0.00777552 0.00655645 0.00568776 0.00508782 0.00458121 0.00410187 
-    0.00365665 0.0015121 0.00160863 0.00263181 0.00638941 0.00772607 
-    0.00225583 0.0010843 0.000882939 0.000801563 0.00075632 
-    0.000554992 0.000435131 0.0003474 0.000217667 0.000491602 
-    0.0012267 0.00250446 0.000212058 -0.0174972 -0.0527527 -0.0479071 
-    0.194908 1.45838 3.40677 4.49242 4.86894 4.97215 5.01218 
-    5.04342 5.06228 5.03069 4.87169 4.57056 4.11523 3.38264 
-    2.19691 0.715839 0.172818 0.102162 0.0627162 0.0363388 0.020289 
-    0.0119414 0.00826608 0.0066417 0.00549092 0.00492505 0.00439443 
-    0.0037156 0.00306471 0.00247451 0.00195965 0.0014822 0.0010815 
-    0.000904464 0.0010514 0.00152308 0.00120752 0.000228447 
-    -0.00102833 -0.00116644 -0.00042067 4.78758e-05 5.09599e-05 
-    -4.45756e-05 -3.22966e-06 3.81163e-05 7.94622e-05 0.000120808 
-    0.000162154 0.000161895 0.000148481 0.000135068 0.000121654 
-    0.000108241 9.81453e-05 9.2164e-05 8.61827e-05 8.02014e-05 
-    7.42201e-05 6.82388e-05 6.22576e-05 5.62763e-05 5.0295e-05 
-    4.43137e-05 3.83324e-05 3.54323e-05 3.321e-05 3.09877e-05 
-    2.87654e-05 2.65431e-05 2.43209e-05 2.20986e-05 1.98763e-05 
-    1.7654e-05 1.54317e-05 1.34612e-05 1.25441e-05 1.1627e-05 
-    1.07099e-05 9.79276e-06 8.87564e-06 7.95851e-06 7.04139e-06 
-    6.12427e-06 
-    EOD
-
-    @v[24].set(<<-'EOD')
-    5 5.01099 5.00866 4.97845 4.92369 4.9273 4.97413 4.9929 
-    4.99826 4.99958 4.99978 5.00005 4.99968 4.99959 5.00014 
-    4.99979 4.99914 4.99982 5.00023 5.00295 5.00664 4.99854 
-    4.99647 5.00438 5.01722 5.03681 5.04766 5.04799 5.04867 
-    5.04873 5.04685 5.04413 5.0367 5.02505 5.01726 5.01183 5.00806 
-    5.00549 5.00371 5.00246 5.00162 5.00105 5.00069 5.00045 
-    5.00031 5.00024 5.00019 5.00012 5.00007 5.00004 5.00001 
-    4.99998 4.99999 4.99999 5 5.00001 5.00001 5.00002 5.00002 
-    5.00003 5.00003 5.00003 5.00002 5.00002 5.00001 5.00001 
-    5.00001 5 5 5 5 5 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    5 5 5 5 5 5 5 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00002 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5 5 5 5 5 5 5 5.00418 4.99953 4.99152 
-    4.99807 5.00497 5.00112 5.00055 5.00038 5.00018 5.00006 
-    5.00006 5.00007 5.00006 5.00004 5.00004 4.99853 4.99945 
-    4.99998 5.00304 5.00935 5.00742 4.99181 4.97421 4.93603 
-    4.8853 4.8927 4.93984 4.97458 4.99039 4.99614 4.99801 4.99851 
-    4.99869 4.99924 5.00108 5.00181 5.00119 5.00059 5.00031 
-    5.00022 5.00018 5.00011 5.00001 5.00006 4.99981 4.99977 
-    4.99982 5.00012 4.99993 5.00008 5.00043 5.00048 5.00024 
-    5.00008 4.99984 4.99993 5.00011 4.99996 4.9998 4.99977 4.9998 
-    4.99993 5.00008 5.00011 5.00002 4.99995 4.99989 4.99993 
-    5 5.00007 5.00009 4.99994 4.99977 4.9997 4.99975 4.99996 
-    4.99996 4.99988 4.9997 4.99952 4.9995 4.99956 4.99973 4.99988 
-    5.00005 5.00025 5.00042 5.00036 5.00031 5.00025 5.0002 5.00014 
-    5.00009 5.00003 5.00002 5.00001 5.00001 5 4.99999 4.99998 
-    4.99998 4.99997 4.99998 4.99998 4.99998 4.99998 4.99998 
-    4.99998 4.99998 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 5.00284 
-    5.00442 5.00381 4.98997 4.99092 5.00733 5.07791 4.98237 
-    4.86434 4.76835 4.74067 4.79278 4.85094 4.90068 4.93603 
-    4.95698 4.96984 4.97856 4.98869 4.99904 5.0005 4.99524 5.00181 
-    5.01878 5.05177 5.07986 4.98917 4.56217 3.68 2.3539 1.18541 
-    0.505772 0.221044 0.115287 0.0760938 0.0589194 0.0476784 
-    0.0457213 0.0412911 0.033889 0.0259741 0.0191452 0.0139018 
-    0.0100235 0.00711788 0.00497657 0.00349368 0.00250021 0.00176179 
-    0.00121843 0.000838368 0.000582711 0.000423458 0.000294608 
-    0.000201251 0.000133748 8.6227e-05 5.44252e-05 3.30514e-05 
-    1.93926e-05 1.09814e-05 5.29857e-06 1.92247e-06 3.08708e-07 
-    -3.74311e-07 -6.11121e-07 -7.27807e-07 -4.87604e-07 -4.80493e-07 
-    -9.15925e-07 -2.03774e-06 -4.01128e-06 -2.46644e-06 2.10626e-06 
-    8.22422e-06 1.04922e-05 9.83047e-06 7.27106e-06 3.29654e-06 
-    -2.06736e-06 -2.18019e-06 -2.29303e-06 -2.40586e-06 -2.51869e-06 
-    -2.63153e-06 -2.24615e-06 -1.70325e-06 -1.16036e-06 -6.17468e-07 
-    -7.45754e-08 2.45198e-07 2.88285e-07 3.31373e-07 3.7446e-07 
-    4.17548e-07 4.60635e-07 5.03723e-07 5.4681e-07 5.89898e-07 
-    6.32985e-07 6.76073e-07 6.19054e-07 5.4001e-07 4.60967e-07 
-    3.81923e-07 3.02879e-07 2.23836e-07 1.44792e-07 6.57488e-08 
-    -1.32948e-08 -9.23383e-08 -1.6698e-07 -2.23206e-07 -2.79432e-07 
-    -3.35658e-07 -3.91884e-07 -4.48109e-07 -5.04335e-07 -5.60561e-07 
-    -6.16787e-07 
-    EOD
-
-    @v[25].set(<<-'EOD')
-    1.34824 1.35838 1.36465 1.34675 1.29167 1.23161 1.2201 1.2185 
-    1.2181 1.21798 1.21793 1.21788 1.21785 1.21782 1.21779 1.21776 
-    1.21655 1.21656 1.21669 1.21871 1.22421 1.22247 1.21858 
-    1.2228 1.23803 1.27737 1.10647 0.395248 0.0600669 0.027687 
-    0.0192374 0.015425 0.0130881 0.00977445 0.00696598 0.00491122 
-    0.00341952 0.00237078 0.00162339 0.00109178 0.000726647 
-    0.000478886 0.00031568 0.000207902 0.000143494 0.000109768 
-    8.62987e-05 5.69775e-05 3.36547e-05 2.30356e-05 1.86108e-05 
-    1.41861e-05 1.08293e-05 7.68835e-06 4.79593e-06 4.51019e-06 
-    4.22444e-06 3.9387e-06 3.65295e-06 3.36721e-06 3.04559e-06 
-    2.69981e-06 2.35403e-06 2.00825e-06 1.66247e-06 1.34508e-06 
-    1.26225e-06 1.17941e-06 1.09657e-06 1.01373e-06 9.30893e-07 
-    8.48054e-07 7.65216e-07 6.82378e-07 5.9954e-07 5.16702e-07 
-    4.37489e-07 3.82774e-07 3.2806e-07 2.73346e-07 2.18632e-07 
-    1.63917e-07 1.09203e-07 5.4489e-08 -2.2523e-10 -5.49395e-08 
-    -1.09654e-07 -1.52862e-07 -1.3079e-07 -1.08718e-07 -8.6646e-08 
-    -6.45739e-08 -4.25019e-08 -2.04298e-08 1.64229e-09 2.37144e-08 
-    4.57864e-08 6.78585e-08 8.71693e-08 9.30725e-08 9.89758e-08 
-    1.04879e-07 1.10782e-07 1.16685e-07 1.22589e-07 1.28492e-07 
-    1.34395e-07 1.40298e-07 1.46201e-07 1.52105e-07 1.58008e-07 
-    1.63911e-07 1.69814e-07 1.75718e-07 1.81621e-07 1.87524e-07 
-    1.93427e-07 1.9933e-07 2.05234e-07 2.11137e-07 2.19788e-07 
-    0.000393944 -0.000218983 -0.00105784 0.00172403 -0.00027134 
-    -0.000204147 8.79968e-06 5.93762e-05 5.83554e-05 4.13815e-05 
-    3.71369e-05 3.03372e-05 2.25336e-05 1.5986e-05 1.07284e-05 
-    -7.5239e-05 5.60593e-05 6.97571e-05 0.000667617 0.000960856 
-    0.00131749 -0.00759564 -0.0217897 -0.0450321 -0.076646 -0.128569 
-    -0.186391 -0.202175 -0.206953 -0.2082 -0.208416 -0.208669 
-    -0.208934 -0.209111 -0.209234 -0.209329 -0.209389 -0.209416 
-    -0.2094 -0.209329 -0.20926 -0.209204 -0.209208 -0.209285 
-    -0.209454 -0.209641 -0.20977 -0.209811 -0.209833 -0.209887 
-    -0.209653 -0.209127 -0.208893 -0.208811 -0.208777 -0.208758 
-    -0.208747 -0.20874 -0.208726 -0.208697 -0.208657 -0.208611 
-    -0.208565 -0.208524 -0.208488 -0.208451 -0.208412 -0.208373 
-    -0.208333 -0.208294 -0.208256 -0.208219 -0.208183 -0.208145 
-    -0.208107 -0.208066 -0.208029 -0.207993 -0.207959 -0.207923 
-    -0.207883 -0.207838 -0.207789 -0.207747 -0.20771 -0.207675 
-    -0.207642 -0.207605 -0.207568 -0.207531 -0.207494 -0.207457 
-    -0.20742 -0.207383 -0.207346 -0.207308 -0.207271 -0.207233 
-    -0.207196 -0.207158 -0.207121 -0.207084 -0.207046 -0.207009 
-    -0.206972 -0.206935 -0.206898 -0.206861 -0.206823 -0.206786 
-    -0.206749 -0.206712 -0.206675 -0.206638 -0.2066 -0.206563 
-    -0.206526 -0.206489 -0.206452 -0.206415 -0.203384 -0.20015 
-    -0.196872 -0.205024 -0.210727 -0.206779 -0.0685263 0.586138 
-    1.4665 2.22945 2.77554 3.076 3.24926 3.34515 3.40164 3.43006 
-    3.43713 3.43075 3.42886 3.4384 3.46567 3.49025 3.51287 3.53821 
-    3.57841 3.39846 2.80753 2.22947 1.7549 1.30429 0.707786 
-    0.303206 0.131352 0.0671706 0.0429955 0.032461 0.0257161 
-    0.0239521 0.0217397 0.0179705 0.0138745 0.0102813 0.00749643 
-    0.0054328 0.00386817 0.0027004 0.00189442 0.00135552 0.000954715 
-    0.000659981 0.000453435 0.000313993 0.000231347 0.000159665 
-    0.000108122 7.10528e-05 4.50233e-05 2.77892e-05 1.62765e-05 
-    8.9893e-06 4.5471e-06 1.54614e-06 -1.6542e-07 -8.68508e-07 
-    -1.04369e-06 -9.63086e-07 -8.44294e-07 -6.57339e-07 -7.35885e-07 
-    -9.80056e-07 -1.39772e-06 -2.10199e-06 -1.37474e-06 6.13269e-07 
-    3.3028e-06 4.60941e-06 4.91053e-06 4.14186e-06 2.45258e-06 
-    -8.7388e-09 -3.59647e-07 -7.10554e-07 -1.06146e-06 -1.41237e-06 
-    -1.76328e-06 -1.63073e-06 -1.34534e-06 -1.05995e-06 -7.74561e-07 
-    -4.8917e-07 -2.95733e-07 -2.16326e-07 -1.3692e-07 -5.75135e-08 
-    2.18929e-08 1.01299e-07 1.80706e-07 2.60112e-07 3.39519e-07 
-    4.18925e-07 4.98332e-07 4.83984e-07 4.4901e-07 4.14035e-07 
-    3.79061e-07 3.44087e-07 3.09112e-07 2.74138e-07 2.39163e-07 
-    2.04189e-07 1.69215e-07 1.26002e-07 4.83213e-08 -2.9359e-08 
-    -1.07039e-07 -1.8472e-07 -2.624e-07 -3.4008e-07 -4.1776e-07 
-    -4.95441e-07 
-    EOD
-
-    @v[26].set(<<-'EOD')
-    7.10441e-10 0.000309731 -0.000308186 -0.001694 -0.00360784 
-    8.40909e-05 0.00203175 0.0012896 0.000596548 0.000277191 
-    0.000161134 0.000120439 8.4915e-05 9.49929e-05 6.18812e-05 
-    1.65433e-05 1.89682e-05 3.97578e-05 4.95446e-05 0.000225325 
-    0.000214579 -0.00230134 -0.000451102 0.00997237 0.0341443 
-    0.0449314 0.0424411 0.0341996 0.0315315 0.0308892 0.0291614 
-    0.024365 0.0190282 0.0188976 0.017238 0.0138526 0.0105645 
-    0.00778548 0.00561753 0.0039871 0.00279554 0.00194075 0.0013468 
-    0.000934775 0.000664723 0.000498911 0.000377384 0.000254183 
-    0.000163421 0.000120773 9.65058e-05 7.22384e-05 5.60316e-05 
-    4.14549e-05 2.79516e-05 2.57096e-05 2.34677e-05 2.12257e-05 
-    1.89837e-05 1.67417e-05 1.46737e-05 1.27228e-05 1.07719e-05 
-    8.82099e-06 6.87009e-06 5.0896e-06 4.71705e-06 4.34451e-06 
-    3.97196e-06 3.59941e-06 3.22686e-06 2.85431e-06 2.48176e-06 
-    2.10921e-06 1.73666e-06 1.36411e-06 1.02855e-06 9.42931e-07 
-    8.57316e-07 7.71701e-07 6.86086e-07 6.00471e-07 5.14856e-07 
-    4.29241e-07 3.43626e-07 2.58011e-07 1.72396e-07 9.85409e-08 
-    9.14091e-08 8.42773e-08 7.71456e-08 7.00138e-08 6.2882e-08 
-    5.57503e-08 4.86185e-08 4.14867e-08 3.4355e-08 2.72232e-08 
-    2.05821e-08 1.63235e-08 1.2065e-08 7.80643e-09 3.54786e-09 
-    -7.10696e-10 -4.96926e-09 -9.22782e-09 -1.34864e-08 -1.77449e-08 
-    -2.20035e-08 -2.62621e-08 -3.05206e-08 -3.47792e-08 -3.90378e-08 
-    -4.32963e-08 -4.75549e-08 -5.18134e-08 -5.6072e-08 -6.03306e-08 
-    -6.45891e-08 -6.88477e-08 -8.76373e-06 0.000131607 -0.00021685 
-    -0.000433027 0.00047234 0.000211593 -0.000189601 3.2492e-05 
-    0.000575955 7.72235e-05 -0.000285172 -0.000242061 -0.000135112 
-    -3.50117e-05 -2.75868e-05 5.48974e-05 1.80604e-07 5.48911e-05 
-    3.97478e-05 0.000192909 0.000297932 0.00402253 -0.0122366 
-    -0.047853 -0.0963082 -0.108071 -0.0567275 -0.0239271 -0.0178628 
-    -0.0233027 -0.031853 -0.0400843 -0.0482725 -0.0576154 -0.0627218 
-    -0.0511236 -0.0279524 -0.0150986 -0.00931091 -0.00652876 
-    -0.00479286 -0.00344346 -0.00249578 -0.0019532 -0.00157977 
-    -0.00131848 -0.00111251 -0.000939229 -0.000797445 -0.000708384 
-    -0.000630452 -0.000539722 -0.000508862 -0.000480596 -0.000439484 
-    -0.000407217 -0.000363866 -0.000329506 -0.000318642 -0.000307362 
-    -0.000286511 -0.000266253 -0.000242943 -0.000218107 -0.000204661 
-    -0.00020241 -0.000194435 -0.000185062 -0.000173042 -0.000160549 
-    -0.000151407 -0.000145626 -0.000145976 -0.000147342 -0.000145288 
-    -0.000137979 -0.000124481 -0.000123218 -0.000127453 -0.000139006 
-    -0.000145486 -0.000129764 -9.82749e-05 -4.72596e-05 -3.08671e-05 
-    -3.28834e-05 -4.52254e-05 -6.25389e-05 -6.32516e-05 -6.39643e-05 
-    -6.4677e-05 -6.53897e-05 -6.61023e-05 -6.6815e-05 -6.75277e-05 
-    -6.61005e-05 -6.45173e-05 -6.29341e-05 -6.13509e-05 -5.97676e-05 
-    -5.81844e-05 -5.66012e-05 -5.54231e-05 -5.4455e-05 -5.3487e-05 
-    -5.25189e-05 -5.15508e-05 -5.05828e-05 -4.96147e-05 -4.86466e-05 
-    -4.76785e-05 -4.67105e-05 -4.57424e-05 -4.47743e-05 -4.38063e-05 
-    -4.28382e-05 -4.18821e-05 -4.10211e-05 -4.016e-05 -3.9299e-05 
-    -3.8438e-05 4.29885e-05 5.14113e-05 -0.000127986 -0.000611463 
-    -0.000149428 0.000882394 0.00297059 -0.00405825 -0.00591067 
-    -0.00546997 -0.00158744 0.00190677 0.00298403 0.00268595 
-    0.00196161 0.00130289 0.000783347 0.000520683 0.000565306 
-    0.00053419 -0.00224696 -0.000920818 0.0132755 0.0322504 
-    0.0442808 0.0638615 0.0701007 0.0539356 0.0247771 0.056244 
-    0.294266 0.831368 1.45424 2.02898 2.54559 2.9937 3.35333 
-    3.72609 4.06363 4.32789 4.52413 4.66504 4.7652 4.83637 4.88631 
-    4.92109 4.94464 4.96046 4.97218 4.98079 4.98679 4.99076 
-    4.99361 4.99555 4.99686 4.99783 4.99853 4.99902 4.99936 
-    4.99959 4.99973 4.99983 4.9999 4.99993 4.99996 4.99998 5 
-    5.00001 5 4.99999 4.99997 4.99994 4.99993 4.99994 4.99996 
-    4.99999 5.00004 5.00006 5.00005 5.00003 5.00002 5.00001 
-    5 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    5 5 5 5 5 5 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5 5 5 5 5 4.99999 4.99999 4.99999 4.99999 4.99999 4.99998 
-    EOD
-
-    @v[27].set(<<-'EOD')
-    5 4.99984 4.99796 4.99478 4.9889 4.98738 4.98896 4.99087 
-    4.99262 4.99419 4.99552 4.99659 4.99743 4.99807 4.99855 
-    4.9989 4.99894 4.99908 4.99935 5.00001 5.0007 5.00132 5.00032 
-    4.99976 5.00134 5.00339 5.00315 5.00157 5.00091 5.00058 
-    5.00012 4.99944 4.99886 4.9994 4.99934 4.99899 4.99876 4.99868 
-    4.99872 4.99883 4.99898 4.99914 4.9993 4.99944 4.99956 4.99967 
-    4.99976 4.99982 4.99986 4.9999 4.99993 4.99997 4.99997 4.99998 
-    4.99998 4.99998 4.99998 4.99998 4.99998 4.99998 4.99998 
-    4.99999 4.99999 4.99999 4.99999 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5.00009 5.00028 5.00015 4.99983 
-    5.00036 4.99996 4.99834 4.99783 5.00383 5.00734 5.00387 
-    5.00058 4.99893 4.99836 4.99832 4.99854 4.99873 4.99905 
-    4.99927 4.99952 4.99969 4.99834 4.99536 4.99163 4.99073 
-    5.0053 5.03631 5.03103 4.9008 4.62503 4.21887 3.70902 3.09967 
-    2.35791 1.41912 0.519675 0.210458 0.131362 0.0980819 0.0708209 
-    0.0471701 0.0323272 0.0253535 0.0199144 0.0152615 0.0117228 
-    0.00917696 0.00738117 0.00609292 0.00512664 0.00436184 0.0037961 
-    0.00331639 0.00289006 0.0025477 0.00226529 0.00202925 0.00182793 
-    0.00165474 0.00150531 0.00137529 0.00125983 0.00115603 0.00106455 
-    0.000982977 0.000911255 0.000846819 0.000790092 0.000738698 
-    0.000692816 0.00065107 0.000613595 0.000579642 0.000548935 
-    0.00052106 0.000495598 0.000472174 0.000450849 0.000431118 
-    0.000412667 0.000395868 0.000381319 0.000368487 0.000357327 
-    0.000344212 0.000330334 0.00031622 0.000303298 0.000295809 
-    0.00028832 0.000280831 0.000273342 0.000265853 0.000258364 
-    0.000250875 0.000245118 0.000239488 0.000233857 0.000228227 
-    0.000222596 0.000216966 0.000211336 0.000207047 0.000203455 
-    0.000199863 0.00019627 0.000192678 0.000189085 0.000185493 
-    0.0001819 0.000178308 0.000174716 0.000171123 0.000167531 
-    0.000163938 0.000160346 0.000156835 0.000153973 0.00015111 
-    0.000148248 0.000145385 0.000296579 -3.96718e-05 -0.000449085 
-    0.000323433 0.000750086 0.000268264 0.000149028 -0.000100249 
-    7.00956e-05 0.00012605 0.00022592 0.000193036 0.000120453 
-    8.07865e-05 7.65771e-05 -3.27828e-05 0.000116759 0.000169498 
-    0.000409804 0.000414965 0.00092323 -0.00590633 -0.0175477 
-    -0.032433 -0.0559842 -0.0820373 0.0688484 0.626629 1.32929 
-    2.01657 2.60925 3.12329 3.38952 3.14128 2.38463 1.23802 
-    0.316019 0.107832 0.0694707 0.051837 0.035247 0.0209999 
-    0.0116618 0.00967674 0.00789182 0.00574566 0.00386872 0.00258612 
-    0.00167126 0.00104169 0.000641093 0.000401246 0.000277928 
-    0.000171775 0.000102266 5.89376e-05 3.29258e-05 1.80463e-05 
-    1.0057e-05 6.4571e-06 5.10093e-06 4.06791e-06 3.62716e-06 
-    3.63321e-06 3.99625e-06 4.64368e-06 5.20886e-06 4.77728e-06 
-    3.23919e-06 1.14113e-06 -1.29416e-06 -4.15607e-06 -1.88532e-06 
-    5.24411e-06 1.38678e-05 1.28823e-05 3.6758e-06 -2.52285e-06 
-    -3.97133e-06 -4.03071e-06 -3.37154e-06 -2.71238e-06 -2.05321e-06 
-    -1.39404e-06 -7.34872e-07 -3.73325e-07 -1.05873e-07 1.61578e-07 
-    4.2903e-07 6.96482e-07 8.18468e-07 7.60065e-07 7.01662e-07 
-    6.43258e-07 5.84855e-07 5.26452e-07 4.68049e-07 4.09646e-07 
-    3.51243e-07 2.9284e-07 2.34437e-07 1.71213e-07 1.06928e-07 
-    4.2644e-08 -2.16403e-08 -8.59247e-08 -1.50209e-07 -2.14493e-07 
-    -2.78778e-07 -3.43062e-07 -4.07346e-07 -4.55065e-07 -4.3348e-07 
-    -4.11896e-07 -3.90311e-07 -3.68726e-07 -3.47141e-07 -3.25556e-07 
-    -3.03971e-07 -2.82386e-07 
-    EOD
-
-    @v[28].set(<<-'EOD')
-    0.368163 0.361756 0.327463 0.269513 0.149476 0.0805716 0.0501146 
-    0.03403 0.0230886 0.0160474 0.0116071 0.00870013 0.00679614 
-    0.00542384 0.00432512 0.00340653 -0.00129719 -0.00399429 
-    -0.00318719 0.00443085 0.0150156 0.0334147 0.0132288 -0.0189751 
-    -0.0508377 -0.0252174 -0.0142489 -0.00675908 -0.0038653 
-    -0.00243423 -0.00168891 -0.00120901 -0.000900426 -0.000685575 
-    -0.000557595 -0.000457268 -0.000377427 -0.000315269 -0.000266613 
-    -0.000228397 -0.000198283 -0.000174248 -0.000154886 -0.00013892 
-    -0.000125864 -0.000115189 -0.000105841 -9.66611e-05 -8.84262e-05 
-    -8.23872e-05 -7.74668e-05 -7.25463e-05 -6.79992e-05 -6.35276e-05 
-    -5.92413e-05 -5.68994e-05 -5.45574e-05 -5.22154e-05 -4.98735e-05 
-    -4.75315e-05 -4.54981e-05 -4.36726e-05 -4.18471e-05 -4.00216e-05 
-    -3.81961e-05 -3.64559e-05 -3.54209e-05 -3.43858e-05 -3.33508e-05 
-    -3.23157e-05 -3.12807e-05 -3.02456e-05 -2.92105e-05 -2.81755e-05 
-    -2.71404e-05 -2.61054e-05 -2.51232e-05 -2.44984e-05 -2.38736e-05 
-    -2.32487e-05 -2.26239e-05 -2.19991e-05 -2.13742e-05 -2.07494e-05 
-    -2.01246e-05 -1.94998e-05 -1.88749e-05 -1.82865e-05 -1.79044e-05 
-    -1.75224e-05 -1.71403e-05 -1.67582e-05 -1.63762e-05 -1.59941e-05 
-    -1.56121e-05 -1.523e-05 -1.4848e-05 -1.44659e-05 -1.41138e-05 
-    -1.39075e-05 -1.37011e-05 -1.34947e-05 -1.32883e-05 -1.30819e-05 
-    -1.28755e-05 -1.26691e-05 -1.24627e-05 -1.22563e-05 -1.205e-05 
-    -1.18436e-05 -1.16372e-05 -1.14308e-05 -1.12244e-05 -1.1018e-05 
-    -1.08116e-05 -1.06052e-05 -1.03988e-05 -1.01924e-05 -9.98605e-06 
-    -9.77966e-06 -2.85319e-05 0.00281092 0.00180106 -0.000981083 
-    0.00551926 -0.00119763 -0.0295069 -0.0367677 0.064749 0.119022 
-    0.0882007 0.0552062 0.03418 0.0223243 0.015545 0.011949 
-    0.00757134 0.00667655 0.00583243 0.00644443 0.00650959 -0.0302575 
-    -0.0437806 -0.0355466 0.0381776 0.282109 0.674178 1.07582 
-    1.45189 1.789 2.08649 2.34663 2.57245 2.81211 3.04778 3.2523 
-    3.45877 3.65593 3.83396 3.9923 4.13368 4.25864 4.36719 4.46064 
-    4.54086 4.60962 4.66835 4.71838 4.76094 4.79716 4.82796 
-    4.85413 4.87634 4.89518 4.91116 4.92476 4.93631 4.94608 
-    4.95434 4.9613 4.96715 4.97211 4.97638 4.98001 4.98312 4.98571 
-    4.98795 4.98979 4.99138 4.99269 4.99381 4.99474 4.99551 
-    4.99615 4.99668 4.99713 4.99752 4.99783 4.99811 4.99836 
-    4.99858 4.99873 4.99884 4.99892 4.999 4.99907 4.99912 4.99916 
-    4.99921 4.99926 4.99932 4.99937 4.99942 4.99948 4.99953 
-    4.99956 4.99958 4.99961 4.99963 4.99966 4.99968 4.99971 
-    4.99972 4.99973 4.99974 4.99975 4.99976 4.99977 4.99978 
-    4.99979 4.9998 4.9998 4.99981 4.99982 4.99983 4.99984 4.99985 
-    4.99986 4.99986 4.99987 4.99987 5.00498 5.00354 4.99359 
-    4.98981 5.00498 5.00099 5.00041 5.00022 5.00015 5.00012 
-    5.0001 5.00008 5.00005 5.00003 5 4.99431 4.99459 4.99591 
-    5.00087 5.01029 5.03935 4.92784 4.51643 3.78356 2.68745 
-    1.43417 0.583128 0.205094 0.0777337 0.0391566 0.02723 0.023883 
-    0.018808 0.010165 0.00254623 -0.00377463 -0.0038097 0.00144145 
-    0.00267231 0.00193045 0.00144538 0.00121758 0.00112893 0.00109424 
-    0.0010226 0.000948072 0.000882573 0.000826996 0.000776391 
-    0.000729719 0.000686499 0.000647333 0.000610108 0.000575631 
-    0.000545069 0.000515485 0.000488514 0.000465316 0.000443215 
-    0.000422454 0.00040292 0.00038488 0.000368472 0.000353628 
-    0.000339643 0.000326197 0.000313483 0.000302884 0.000294038 
-    0.000284003 0.000270941 0.000254925 0.000246511 0.000244089 
-    0.000245538 0.000242099 0.000235728 0.000227482 0.000218001 
-    0.000207257 0.000202127 0.000196997 0.000191868 0.000186738 
-    0.000181608 0.00017758 0.000173899 0.000170219 0.000166538 
-    0.000162857 0.000159576 0.00015679 0.000154005 0.000151219 
-    0.000148433 0.000145647 0.000142861 0.000140076 0.00013729 
-    0.000134504 0.000131718 0.000129603 0.000127635 0.000125668 
-    0.0001237 0.000121732 0.000119765 0.000117797 0.000115829 
-    0.000113862 0.000111894 0.000109993 0.000108372 0.000106751 
-    0.00010513 0.000103509 0.000101887 0.000100266 9.86449e-05 
-    9.70237e-05 
-    EOD
-
-    @v[29].set(<<-'EOD')
-    5 4.99899 4.99654 4.99327 4.9863 4.98954 4.99212 4.99378 
-    4.9951 4.99624 4.99715 4.99786 4.99839 4.99879 4.99909 4.99931 
-    4.99922 4.99933 4.99971 5.00064 5.00084 5.00123 4.99865 
-    4.99853 4.99983 5.00457 5.00242 5.00105 5.00062 5.00042 
-    4.99971 4.9994 4.9992 4.9996 4.99955 4.99932 4.99918 4.99915 
-    4.99919 4.99927 4.99937 4.99948 4.99957 4.99966 4.99974 
-    4.9998 4.99985 4.99989 4.99992 4.99993 4.99994 4.99994 4.99996 
-    4.99998 5 5 5.00001 5.00001 5.00001 5.00002 5.00002 5.00001 
-    5.00001 5.00001 5 5 5 5 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99998 4.99998 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 5 5 5 5 
-    5 5 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00002 5.00002 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5 5 5 5 5 5 4.9997 4.99998 4.99954 4.99963 
-    5.00059 4.99945 4.99732 4.99957 5.00919 5.00558 5.00033 
-    4.99851 4.9983 4.99854 4.99871 4.99928 4.99914 4.99939 4.99952 
-    4.9998 4.99976 4.99744 4.99598 4.99478 4.99806 5.01911 5.04602 
-    5.05469 5.01317 4.89484 4.69655 4.42036 4.06069 3.60793 
-    3.12531 2.72975 2.45187 2.25081 2.09841 1.98509 1.90211 
-    1.84084 1.79411 1.7574 1.72763 1.70283 1.68188 1.66389 1.64823 
-    1.63438 1.62201 1.61088 1.60081 1.59163 1.58323 1.57549 
-    1.56835 1.56173 1.55558 1.54985 1.54451 1.53951 1.53479 
-    1.53035 1.52615 1.5222 1.51845 1.5149 1.51153 1.50834 1.50529 
-    1.5024 1.49964 1.497 1.49449 1.49208 1.48977 1.48755 1.48542 
-    1.48336 1.48138 1.47948 1.47765 1.4759 1.47419 1.47255 1.47096 
-    1.46949 1.46823 1.46696 1.4657 1.46444 1.46317 1.46191 1.46065 
-    1.45956 1.4585 1.45743 1.45636 1.45529 1.45422 1.45315 1.45226 
-    1.45145 1.45064 1.44983 1.44902 1.44821 1.4474 1.44659 1.44579 
-    1.44498 1.44417 1.44336 1.44255 1.44174 1.44094 1.44019 
-    1.43944 1.43868 1.43793 1.43765 1.43679 1.43515 1.43405 
-    1.43478 1.43387 1.43345 1.43184 1.43086 1.43021 1.43003 
-    1.42988 1.42944 1.42883 1.42818 1.42702 1.42642 1.42595 
-    1.42586 1.42616 1.42783 1.41733 1.38106 1.30738 1.3877 2.09819 
-    3.05285 3.58059 3.77601 3.87609 4.02557 4.24887 4.4608 4.60411 
-    4.72109 4.8255 4.90465 4.97379 5.01253 5.01532 5.01239 5.0092 
-    5.00665 5.00474 5.00333 5.00232 5.00163 5.00117 5.00082 
-    5.00057 5.00039 5.00027 5.00019 5.00013 5.00009 5.00006 
-    5.00004 5.00003 5.00002 5.00001 5.00001 5 5 5 4.99998 4.99995 
-    4.99992 4.99996 5.00005 5.00012 5.00008 4.99996 4.9999 4.99985 
-    4.99986 4.99997 5.00021 5.0003 5.00024 5.00009 5.00007 5.00005 
-    5.00003 5.00001 4.99998 4.99998 4.99998 4.99999 4.99999 
-    5 5 5 5 5 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00002 5.00002 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5 5 5 5 5 4.99999 4.99999 4.99999 4.99999 4.99998 
-    4.99998 4.99998 
-    EOD
-
-    @v[30].set(<<-'EOD')
-    7.10441e-10 5.70385e-05 0.000226143 0.000131916 -0.000887764 
-    -8.01837e-05 -3.49653e-05 9.40039e-05 0.000118663 0.000108025 
-    8.6059e-05 6.33268e-05 4.99295e-05 3.16843e-05 3.60692e-05 
-    2.07572e-05 -8.6375e-05 3.44583e-05 8.07397e-05 0.000196296 
-    0.000115615 -7.12768e-05 -0.000129812 -4.18679e-05 7.94364e-05 
-    0.000182034 -5.41226e-05 -0.000451819 -0.000713937 -0.00129863 
-    -0.00262186 -0.00213417 -0.00133767 0.000775698 0.000969902 
-    0.000549281 0.000280946 0.000140321 8.6919e-05 7.22446e-05 
-    6.5631e-05 6.45263e-05 6.63087e-05 7.17391e-05 7.59042e-05 
-    7.59172e-05 7.03353e-05 6.33558e-05 5.31136e-05 4.64278e-05 
-    4.40594e-05 4.16909e-05 4.05674e-05 3.96957e-05 3.87875e-05 
-    3.74977e-05 3.62079e-05 3.49181e-05 3.36283e-05 3.23385e-05 
-    3.12427e-05 3.02775e-05 2.93124e-05 2.83472e-05 2.7382e-05 
-    2.64613e-05 2.59077e-05 2.5354e-05 2.48004e-05 2.42468e-05 
-    2.36931e-05 2.31395e-05 2.25859e-05 2.20322e-05 2.14786e-05 
-    2.0925e-05 2.03916e-05 1.9995e-05 1.95984e-05 1.92019e-05 
-    1.88053e-05 1.84087e-05 1.80122e-05 1.76156e-05 1.7219e-05 
-    1.68225e-05 1.64259e-05 1.6051e-05 1.57991e-05 1.55471e-05 
-    1.52952e-05 1.50433e-05 1.47913e-05 1.45394e-05 1.42875e-05 
-    1.40356e-05 1.37836e-05 1.35317e-05 1.32978e-05 1.31513e-05 
-    1.30048e-05 1.28583e-05 1.27118e-05 1.25653e-05 1.24188e-05 
-    1.22724e-05 1.21259e-05 1.19794e-05 1.18329e-05 1.16864e-05 
-    1.15399e-05 1.13934e-05 1.12469e-05 1.11005e-05 1.0954e-05 
-    1.08075e-05 1.0661e-05 1.05145e-05 1.0368e-05 1.02215e-05 
-    1.76447e-05 7.21516e-05 -3.59786e-05 -0.000159618 0.000156236 
-    0.000135106 -0.000336402 -0.000302283 0.000699323 0.000473866 
-    -0.000156146 -0.000225625 -0.000123592 -3.78116e-05 8.47472e-06 
-    2.43387e-06 -7.44762e-05 7.80111e-05 9.43608e-05 0.000170159 
-    8.83919e-05 -0.00018802 -0.000373512 -0.000390597 0.000156875 
-    0.0032343 0.00776304 -0.000566905 -0.00760695 -0.0159226 
-    -0.0245989 -0.0331402 -0.0100902 0.067837 0.266702 0.910818 
-    1.82282 2.69714 3.43247 3.98325 4.32893 4.51529 4.67087 
-    4.79288 4.87574 4.92797 4.95902 4.97655 4.98622 4.99195 
-    4.99526 4.99735 4.9991 4.99974 4.99982 4.99974 4.99961 4.9995 
-    4.99943 4.9994 4.9994 4.99942 4.99944 4.99948 4.99952 4.99956 
-    4.99961 4.99965 4.9997 4.99974 4.99977 4.99981 4.99983 4.99986 
-    4.99988 4.9999 4.99991 4.99992 4.99993 4.99994 4.99995 4.99995 
-    4.99996 4.99997 4.99997 4.99998 4.99998 4.99999 4.99999 
-    4.99999 5 5 5 5.00001 5.00001 5.00001 5.00001 5.00001 5 
-    5 5 5 5 5 5 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 5 5.00019 4.99888 4.99663 4.99457 4.99902 
-    5.00229 5.00323 5.00302 5.0023 5.0015 5.00085 5.00041 5.00013 
-    4.99993 4.99979 4.99948 4.99954 4.99983 5.00055 5.00109 
-    5.00009 4.9987 4.998 4.99755 4.99676 4.99618 5.01091 5.05272 
-    5.04156 4.80112 4.27692 3.42343 2.23953 0.967179 0.429813 
-    0.540757 1.32991 2.32147 3.14903 3.78143 4.22325 4.47978 
-    4.59448 4.69875 4.79798 4.87419 4.92339 4.95249 4.97174 
-    4.98408 4.99124 4.99478 4.99729 4.99868 4.9992 4.99941 4.99947 
-    4.99946 4.99943 4.9994 4.99939 4.9994 4.99942 4.99946 4.99951 
-    4.99956 4.99961 4.99967 4.99973 4.99977 4.9998 4.99981 4.99983 
-    4.99984 4.99987 4.99992 5.00001 5.00005 5.00001 4.99994 
-    4.99995 4.99995 4.99996 4.99996 4.99996 4.99997 4.99997 
-    4.99997 4.99998 4.99998 4.99998 4.99998 4.99999 4.99999 
-    4.99999 4.99999 5 5 5 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5 5 5 5 5 5 5 5 4.99999 4.99999 4.99999 4.99999 
-    4.99998 4.99998 4.99998 
-    EOD
-
-    @v[31].set(<<-'EOD')
-    1.8179e-09 -5.28841e-06 -1.44913e-05 -3.62932e-05 -9.75719e-05 
-    0.000141781 3.73396e-05 -1.65603e-05 -1.5271e-05 -6.73884e-06 
-    4.40157e-06 -4.85345e-06 -1.02964e-05 2.03126e-05 -1.89457e-05 
-    -8.75564e-06 7.67422e-06 4.71103e-06 1.29798e-05 6.13469e-06 
-    -1.14363e-05 -0.0394563 -0.0477298 -0.0622012 -0.0519225 
-    0.262499 0.943611 1.67052 2.31017 2.84028 3.28467 3.61582 
-    3.85887 4.13011 4.36511 4.54063 4.67013 4.76408 4.83263 
-    4.8825 4.91837 4.94373 4.96117 4.97318 4.98093 4.98562 4.98906 
-    4.99267 4.99539 4.99666 4.99731 4.99797 4.99844 4.99887 
-    4.99927 4.99933 4.99938 4.99944 4.99949 4.99955 4.9996 4.99965 
-    4.9997 4.99975 4.9998 4.99985 4.99986 4.99987 4.99989 4.9999 
-    4.99991 4.99992 4.99993 4.99995 4.99996 4.99997 4.99998 
-    4.99998 4.99999 4.99999 4.99999 4.99999 5 5 5 5 5.00001 
-    5.00001 5.00001 5 5 5 5 5 5 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99997 5.00002 5.00004 5.0001 5.0001 4.99987 5.00009 
-    5.00021 5.00002 5.00004 4.99988 5.00013 4.99993 5.00026 
-    4.99973 5 5.00006 5.00009 5.00004 5.00004 5.04854 4.82711 
-    4.04208 2.64155 0.838902 0.19014 0.0982549 0.0723197 0.0576863 
-    0.0427644 0.0301979 0.020146 0.0135728 0.00980358 0.00774482 
-    0.00586604 0.0036687 0.00211511 0.00121906 0.000647581 0.000828436 
-    0.00190938 0.00224254 0.00199956 0.00165488 0.00135612 0.00113715 
-    0.000984181 0.000877175 0.000789973 0.000741139 0.000689338 
-    0.000625676 0.000586082 0.000550152 0.000529573 0.000505606 
-    0.000482117 0.000460574 0.000441649 0.000424674 0.000408398 
-    0.000391914 0.000376272 0.000361487 0.000348181 0.000336045 
-    0.000324466 0.000313545 0.000303046 0.000293056 0.00028356 
-    0.000274586 0.000266155 0.000258279 0.000250938 0.000243789 
-    0.000236912 0.000230244 0.000224186 0.000219291 0.000215346 
-    0.000212468 0.000207291 0.000200862 0.00019368 0.000186767 
-    0.000183515 0.000180263 0.00017701 0.000173758 0.000170506 
-    0.000167253 0.000164001 0.000161164 0.000158357 0.00015555 
-    0.000152743 0.000149936 0.000147129 0.000144322 0.000142066 
-    0.000140096 0.000138127 0.000136157 0.000134187 0.000132218 
-    0.000130248 0.000128278 0.000126308 0.000124339 0.000122369 
-    0.000120399 0.000118429 0.00011646 0.000114527 0.000112892 
-    0.000111258 0.000109623 0.000107988 0.000103598 6.86052e-05 
-    3.337e-05 7.00783e-05 0.000218764 0.000221318 0.000118593 
-    -0.000113962 5.78552e-05 9.42068e-05 0.000237037 0.000171302 
-    0.0001033 6.16066e-05 5.52908e-05 6.30233e-05 7.01897e-05 
-    8.48573e-05 0.000106859 8.37213e-05 -0.0391541 -0.047722 
-    -0.0618454 -0.0169804 0.345725 1.03426 1.74825 2.37152 2.88737 
-    3.32173 3.66761 3.9707 4.17762 3.98832 3.30483 2.09737 0.710892 
-    0.148159 0.0707463 0.0555808 0.045618 0.0319116 0.0199589 
-    0.0133357 0.00898528 0.00586075 0.00375478 0.00245443 0.00156038 
-    0.000962344 0.000590953 0.000375107 0.000250243 0.00015882 
-    0.000100203 6.18122e-05 3.7372e-05 2.23009e-05 1.32569e-05 
-    8.29437e-06 5.72457e-06 3.96832e-06 2.98935e-06 2.59699e-06 
-    2.75024e-06 3.38689e-06 4.0453e-06 3.50095e-06 1.64988e-06 
-    -3.84371e-07 -2.03828e-06 -3.46401e-06 -1.24301e-06 4.63458e-06 
-    1.14104e-05 1.02619e-05 2.15487e-06 -2.98487e-06 -3.67221e-06 
-    -2.94279e-06 -2.58649e-06 -2.23019e-06 -1.87389e-06 -1.5176e-06 
-    -1.1613e-06 -7.92127e-07 -4.18889e-07 -4.56502e-08 3.27588e-07 
-    7.00827e-07 8.79539e-07 8.17025e-07 7.5451e-07 6.91996e-07 
-    6.29481e-07 5.66966e-07 5.04452e-07 4.41937e-07 3.79422e-07 
-    3.16908e-07 2.54393e-07 1.90078e-07 1.25366e-07 6.0654e-08 
-    -4.05776e-09 -6.87696e-08 -1.33481e-07 -1.98193e-07 -2.62905e-07 
-    -3.27617e-07 -3.92329e-07 -4.40392e-07 -4.18802e-07 -3.97213e-07 
-    -3.75624e-07 -3.54035e-07 -3.32446e-07 -3.10856e-07 -2.89267e-07 
-    -2.67678e-07 
-    EOD
-
-    @v[32].set(<<-'EOD')
-    1.10294 1.10297 1.10291 1.10277 1.10259 1.10294 1.10313 
-    1.10306 1.10299 1.10296 1.10295 1.10295 1.10294 1.10294 
-    1.10294 1.10294 1.10294 1.10294 1.10294 1.10296 1.10296 
-    1.00547 0.998599 1.5201 2.49297 3.31258 3.73162 3.84757 
-    3.92505 4.02965 4.16599 4.30294 4.41541 4.52886 4.64414 
-    4.73865 4.81065 4.86391 4.90315 4.93188 4.95258 4.96726 
-    4.97738 4.98436 4.98888 4.99162 4.99363 4.99573 4.99731 
-    4.99804 4.99843 4.99881 4.99909 4.99934 4.99957 4.9996 4.99964 
-    4.99967 4.9997 4.99973 4.99977 4.9998 4.99983 4.99986 4.99988 
-    4.99991 4.99992 4.99992 4.99993 4.99994 4.99994 4.99995 
-    4.99996 4.99996 4.99997 4.99997 4.99998 4.99998 4.99999 
-    4.99999 4.99999 4.99999 5 5 5 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 5.00028 4.99988 4.99968 
-    5.00019 4.99987 5.00021 4.99973 4.99977 4.99996 4.99997 
-    5.0002 4.99957 5.00026 4.99947 5.00074 5.00003 4.99987 4.99979 
-    5.00008 4.99997 5.08794 5.05993 4.76875 3.99197 3.10174 
-    2.5197 2.21771 2.04 1.92235 1.83874 1.77592 1.72665 1.686 
-    1.65276 1.6286 1.61299 1.60039 1.58934 1.57954 1.57083 1.56306 
-    1.55604 1.54963 1.54375 1.53832 1.53331 1.52865 1.52432 
-    1.52026 1.51645 1.51287 1.50949 1.50629 1.50327 1.50039 
-    1.49766 1.49505 1.49257 1.49019 1.48792 1.48574 1.48365 
-    1.48164 1.47971 1.47784 1.47604 1.47431 1.47264 1.47102 
-    1.46945 1.46794 1.46647 1.46505 1.46367 1.46233 1.46103 
-    1.45976 1.45853 1.45733 1.45616 1.45502 1.45392 1.45284 
-    1.45179 1.45076 1.44975 1.4488 1.44795 1.44711 1.44626 1.44541 
-    1.44457 1.44372 1.44287 1.44212 1.44138 1.44063 1.43989 
-    1.43914 1.4384 1.43766 1.43701 1.43641 1.43581 1.43522 1.43462 
-    1.43402 1.43342 1.43282 1.43223 1.43163 1.43103 1.43043 
-    1.42984 1.42924 1.42865 1.42808 1.42752 1.42695 1.42639 
-    1.42584 1.42529 1.42472 1.42412 1.42365 1.42326 1.42304 
-    1.42162 1.42082 1.42032 1.42029 1.42026 1.41995 1.41947 
-    1.41894 1.41841 1.4179 1.41742 1.41699 1.41656 1.32097 1.30963 
-    1.78765 2.64656 3.35764 3.747 3.86589 3.94217 4.04185 4.18453 
-    4.3561 4.53439 4.68621 4.74905 4.77848 4.84629 4.91261 4.97541 
-    5.01284 5.01548 5.01248 5.00924 5.00666 5.00475 5.00334 
-    5.00234 5.00164 5.00118 5.00083 5.00058 5.0004 5.00028 5.00019 
-    5.00013 5.00009 5.00007 5.00004 5.00003 5.00002 5.00001 
-    5.00001 5.00001 5 5 4.99999 4.99995 4.99992 4.99996 5.00006 
-    5.00012 5.00009 4.99997 4.9999 4.99985 4.99986 4.99997 5.00021 
-    5.00031 5.00024 5.0001 5.00007 5.00005 5.00003 5.00001 4.99998 
-    4.99998 4.99999 4.99999 4.99999 5 5 5 5 5 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00002 5.00002 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5 5 5 5 
-    5 4.99999 4.99999 4.99999 4.99998 4.99998 4.99998 
-    EOD
-
-    @v[33].set(<<-'EOD')
-    5 5.00012 5.00023 5.0003 4.99972 4.99988 4.99984 4.99991 
-    4.99996 4.99999 5.00008 5.00009 4.99986 5.00003 5.00007 
-    4.99995 4.9999 4.99997 5.00013 5.00014 5.00013 4.99701 4.99763 
-    4.99742 4.99998 5.02836 5.07262 4.96856 4.57267 3.85637 
-    2.79544 1.45942 0.408016 0.084885 0.0271375 0.0119294 0.00707546 
-    0.0051087 0.00373035 0.00264737 0.00186477 0.00130379 0.000915857 
-    0.000653121 0.000483893 0.000380852 0.000302362 0.000219498 
-    0.000154435 0.000121928 0.000104026 8.61242e-05 7.48526e-05 
-    6.49216e-05 5.56238e-05 5.29689e-05 5.03139e-05 4.7659e-05 
-    4.5004e-05 4.23491e-05 4.00356e-05 3.79522e-05 3.58687e-05 
-    3.37852e-05 3.17018e-05 2.97592e-05 2.89804e-05 2.82016e-05 
-    2.74228e-05 2.66441e-05 2.58653e-05 2.50865e-05 2.43077e-05 
-    2.35289e-05 2.27501e-05 2.19714e-05 2.12346e-05 2.07821e-05 
-    2.03295e-05 1.98769e-05 1.94244e-05 1.89718e-05 1.85192e-05 
-    1.80667e-05 1.76141e-05 1.71615e-05 1.6709e-05 1.62828e-05 
-    1.60061e-05 1.57294e-05 1.54527e-05 1.5176e-05 1.48993e-05 
-    1.46226e-05 1.43459e-05 1.40692e-05 1.37925e-05 1.35158e-05 
-    1.3262e-05 1.31191e-05 1.29761e-05 1.28332e-05 1.26903e-05 
-    1.25474e-05 1.24045e-05 1.22615e-05 1.21186e-05 1.19757e-05 
-    1.18328e-05 1.16898e-05 1.15469e-05 1.1404e-05 1.12611e-05 
-    1.11182e-05 1.09752e-05 1.08323e-05 1.06894e-05 1.05465e-05 
-    1.04036e-05 1.02606e-05 1.00185e-05 3.8343e-05 -3.06781e-05 
-    -0.000111758 0.000111673 0.000130815 -0.000210491 -0.000231304 
-    0.000310226 0.000265303 3.0878e-05 -4.48405e-05 -1.2852e-05 
-    -7.84469e-06 3.29986e-05 -1.23286e-05 -6.07871e-05 5.35082e-05 
-    7.69194e-05 0.000126221 6.57178e-05 0.00223349 -0.0148854 
-    -0.0476636 -0.0491447 0.220125 1.11174 2.03988 2.90209 3.61069 
-    4.13554 4.50679 4.71501 4.83916 4.91027 4.95284 4.98086 
-    4.99151 4.98651 4.97113 4.95075 4.93102 4.93683 4.95457 
-    4.97071 4.98212 4.98948 4.99386 4.99636 4.99785 4.9987 4.99927 
-    4.99989 5.00014 5.00007 4.99988 4.99982 4.99976 4.99973 
-    4.99972 4.99972 4.99973 4.99974 4.99975 4.99977 4.99979 
-    4.99981 4.99984 4.99986 4.99988 4.99989 4.99991 4.99992 
-    4.99993 4.99994 4.99995 4.99996 4.99996 4.99997 4.99997 
-    4.99998 4.99998 4.99998 4.99998 4.99999 4.99999 4.99999 
-    4.99999 5 5 5 5.00001 5.00001 5.00001 5.00002 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5 5 5 5 5 5 5 5 4.99999 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 4.99999 
-    4.99999 4.99999 4.99999 5 5.00012 4.99946 4.99839 4.99733 
-    4.99948 5.00114 5.00158 5.00147 5.00113 5.00073 5.00043 
-    5.0002 5.00006 4.99995 4.99986 4.99973 4.99976 4.9999 5.00029 
-    5.00055 4.99704 4.99734 4.9972 5.00278 5.03354 5.07184 4.94057 
-    4.51936 3.75638 2.60982 1.23803 0.315016 0.0796102 0.0252894 
-    0.0165723 0.0827785 0.491298 1.40686 2.33436 3.1251 3.7691 
-    4.22201 4.49976 4.68115 4.80513 4.88509 4.93208 4.95861 
-    4.97579 4.98655 4.99268 4.99571 4.99771 4.99881 4.99929 
-    4.99954 4.99965 4.9997 4.99971 4.99971 4.99971 4.99971 4.99972 
-    4.99974 4.99976 4.99978 4.99981 4.99984 4.99987 4.99989 
-    4.99991 4.99991 4.99992 4.99992 4.99993 4.99997 5.00003 
-    5.00006 5.00004 5.00001 5 4.99999 4.99998 4.99998 4.99997 
-    4.99997 4.99997 4.99998 4.99998 4.99998 4.99999 4.99999 
-    4.99999 4.99999 5 5 5 5 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5 5 5 5 5 5 5 4.99999 
-    4.99999 4.99999 4.99999 4.99998 4.99998 
-    EOD
-
-    @v[34].set(<<-'EOD')
-    5 5.00207 5.00813 5.01486 5.00156 5.0018 4.99861 4.99844 
-    4.99888 4.9993 4.99956 4.99971 4.99979 4.99983 4.99987 4.99989 
-    4.99671 4.9974 4.99864 5.00131 5.00377 5.0021 5.00039 4.99993 
-    5.00004 5.0009 5.00109 4.99636 4.98617 4.96778 4.92047 4.89528 
-    4.91112 4.9559 4.98286 4.99369 4.99812 4.99951 4.99994 5.00014 
-    5.00008 4.99994 4.99984 4.99989 4.99998 5.00004 5.00004 
-    5.00006 5.00005 5.00001 4.99997 4.99992 4.99993 4.99994 
-    4.99996 4.99996 4.99996 4.99996 4.99996 4.99996 4.99996 
-    4.99996 4.99996 4.99996 4.99996 4.99996 4.99996 4.99996 
-    4.99997 4.99997 4.99997 4.99997 4.99997 4.99997 4.99997 
-    4.99997 4.99997 4.99997 4.99997 4.99997 4.99997 4.99997 
-    4.99997 4.99997 4.99997 4.99997 4.99997 4.99997 4.99997 
-    4.99998 4.99998 4.99998 4.99998 4.99998 4.99998 4.99998 
-    4.99998 4.99998 4.99998 4.99998 4.99998 4.99998 4.99998 
-    4.99998 4.99998 4.99998 4.99998 4.99998 4.99998 4.99998 
-    4.99998 4.99998 4.99998 4.99998 4.99998 4.99998 4.99998 
-    4.99998 4.99998 4.99998 4.99998 5.00131 5.00072 4.9977 4.99811 
-    5.00325 4.99647 4.98948 4.99459 5.00262 5.00276 5.00156 
-    5.00072 5.0003 5.00013 4.99995 4.99668 4.99775 4.99917 5.00173 
-    5.00386 5.00188 4.99888 4.99757 4.99951 5.01712 5.0557 5.07088 
-    5.07704 5.07758 5.06958 5.04223 5.03331 5.0279 5.03408 5.07611 
-    5.01911 4.68594 3.99152 2.92195 1.69878 0.809 0.344091 0.154663 
-    0.0788717 0.0467212 0.0336168 0.0280514 0.0254947 0.024173 
-    0.0223567 0.0220555 0.0271514 0.0295872 0.0296052 0.0283971 
-    0.0264726 0.0241813 0.0218244 0.0195349 0.017368 0.0152495 
-    0.013295 0.0115444 0.00996982 0.00857091 0.00733891 0.00627261 
-    0.0053494 0.00456316 0.00388373 0.00331073 0.00282181 0.00240991 
-    0.00206389 0.00177187 0.00152283 0.00131167 0.00112558 0.000954373 
-    0.000805726 0.00069326 0.000600991 0.000525743 0.00047355 
-    0.00044359 0.000434815 0.000436053 0.000402511 0.000368969 
-    0.000335427 0.000301886 0.000268344 0.000234802 0.00020126 
-    0.000184967 0.000169932 0.000154896 0.000139861 0.000124825 
-    0.00010979 9.47546e-05 8.67896e-05 8.24901e-05 7.81906e-05 
-    7.38911e-05 6.95915e-05 6.5292e-05 6.09925e-05 5.66929e-05 
-    5.23934e-05 4.80939e-05 4.37943e-05 3.94948e-05 3.51953e-05 
-    3.08957e-05 2.67968e-05 2.42936e-05 2.17904e-05 1.92872e-05 
-    1.6784e-05 0.00125927 -0.00794344 -0.0305499 -0.0621697 
-    -0.0463796 -0.0224608 -0.00538381 0.00546086 0.0108675 0.012883 
-    0.0131787 0.0127271 0.0119702 0.0110398 0.0100635 0.00649617 
-    0.00489388 0.00545863 0.0098351 0.0167428 0.0126563 0.00697542 
-    0.00427027 0.00330002 0.00390774 0.00408999 -0.00259143 
-    -0.0160578 -0.0451849 -0.0409651 0.1301 0.597429 1.3848 
-    2.63426 3.81272 4.51373 4.8412 4.98731 4.88165 4.37165 3.40034 
-    2.17681 1.12217 0.505129 0.219703 0.104992 0.0622333 0.0448317 
-    0.0355782 0.0311867 0.0293529 0.0274615 0.0288739 0.0307845 
-    0.0304909 0.029245 0.0273602 0.0251006 0.022697 0.0202765 
-    0.0179357 0.0157106 0.0136562 0.0117951 0.0101273 0.00865784 
-    0.00739394 0.00634364 0.00551356 0.00480538 0.00415747 0.00356084 
-    0.00297585 0.00236711 0.00181853 0.00160713 0.00169822 0.00166542 
-    0.00145504 0.00120252 0.00109259 0.000982658 0.00087273 
-    0.000762802 0.000652874 0.000584068 0.000528263 0.000472458 
-    0.000416653 0.000360848 0.000321155 0.000301442 0.000281729 
-    0.000262016 0.000242303 0.00022259 0.000202877 0.000183164 
-    0.000163451 0.000143738 0.000124025 0.000114582 0.000107399 
-    0.000100216 9.30332e-05 8.58502e-05 7.86672e-05 7.14841e-05 
-    6.43011e-05 5.7118e-05 4.9935e-05 4.35378e-05 4.04281e-05 
-    3.73184e-05 3.42088e-05 3.10991e-05 2.79894e-05 2.48798e-05 
-    2.17701e-05 1.86604e-05 
-    EOD
-
-    @v[35].set(<<-'EOD')
-    7.24585e-12 2.21843e-05 3.20014e-05 1.25076e-05 -2.44947e-05 
-    1.8425e-05 5.50546e-06 3.53025e-05 -1.07551e-05 -3.94383e-06 
-    -2.27848e-06 -9.04789e-05 7.44215e-05 -2.7662e-05 0.000200038 
-    -2.11998e-05 -2.09011e-05 2.37098e-05 2.18751e-05 -2.28422e-05 
-    -6.23659e-05 3.58241e-05 1.76386e-05 -4.28311e-05 0.000355626 
-    0.00156903 0.00100999 -0.0085304 -0.02067 -0.0389485 -0.0651568 
-    -0.128475 -0.314362 -0.406837 -0.421558 -0.421277 -0.418176 
-    -0.414481 -0.410845 -0.407348 -0.403971 -0.400716 -0.397582 
-    -0.394563 -0.391658 -0.388866 -0.386178 -0.383585 -0.381094 
-    -0.378789 -0.376569 -0.37435 -0.372256 -0.370188 -0.36815 
-    -0.366422 -0.364694 -0.362967 -0.361239 -0.359511 -0.357888 
-    -0.356334 -0.354781 -0.353227 -0.351674 -0.350152 -0.348888 
-    -0.347625 -0.346361 -0.345098 -0.343834 -0.342571 -0.341307 
-    -0.340044 -0.33878 -0.337517 -0.336279 -0.335215 -0.334152 
-    -0.333088 -0.332024 -0.330961 -0.329897 -0.328833 -0.32777 
-    -0.326706 -0.325642 -0.324601 -0.323683 -0.322766 -0.321849 
-    -0.320932 -0.320014 -0.319097 -0.31818 -0.317263 -0.316345 
-    -0.315428 -0.314545 -0.313825 -0.313106 -0.312387 -0.311667 
-    -0.310948 -0.310228 -0.309509 -0.308789 -0.30807 -0.307351 
-    -0.306631 -0.305912 -0.305192 -0.304473 -0.303754 -0.303034 
-    -0.302315 -0.301595 -0.300876 -0.300157 -0.299437 -0.298716 
-    -0.29798 -0.297329 -0.296691 -0.295837 -0.29516 -0.294725 
-    -0.294044 -0.292917 -0.292351 -0.291965 -0.291365 -0.290687 
-    -0.290027 -0.289376 -0.288772 -0.288193 -0.287505 -0.286892 
-    -0.28626 -0.285714 -0.284545 -0.289246 -0.298717 -0.298492 
-    -0.214163 0.181451 0.0749974 0.0454707 0.0292987 0.0196837 
-    0.0124119 0.00884715 0.00527181 0.00585821 0.0296361 0.169856 
-    0.361207 0.538856 0.67469 0.685933 0.392802 0.17772 0.0813085 
-    0.0424601 0.0246654 0.0175258 0.0144256 0.0129859 0.012205 
-    0.0112846 0.010933 0.0134813 0.0147254 0.0147981 0.0142156 
-    0.0132732 0.0121355 0.0109587 0.00981238 0.00872731 0.00767007 
-    0.00669346 0.00581341 0.00502167 0.00431819 0.00369842 0.00316168 
-    0.00269663 0.00230035 0.00195801 0.00166928 0.00142286 0.00121522 
-    0.00104072 0.000893384 0.000767675 0.000661268 0.000567659 
-    0.000481766 0.000407101 0.000350044 0.000302721 0.000263424 
-    0.000236813 0.00022199 0.000218182 0.000219548 0.0002027 
-    0.000185853 0.000169006 0.000152158 0.000135311 0.000118463 
-    0.000101616 9.33782e-05 8.57685e-05 7.81588e-05 7.0549e-05 
-    6.29393e-05 5.53296e-05 4.77199e-05 4.36954e-05 4.15296e-05 
-    3.93637e-05 3.71978e-05 3.50319e-05 3.28661e-05 3.07002e-05 
-    2.85343e-05 2.63685e-05 2.42026e-05 2.20367e-05 1.98709e-05 
-    1.7705e-05 1.55391e-05 1.34772e-05 1.22416e-05 1.10061e-05 
-    9.77055e-06 8.535e-06 0.000631271 -0.00362586 -0.0146235 
-    -0.0308486 -0.0237466 -0.0117522 -0.00304171 0.00251033 
-    0.00531986 0.0063897 0.00657351 0.00636494 0.00599705 0.00553442 
-    0.00505994 0.00330925 0.00246671 0.0027006 0.00473161 0.00830333 
-    0.00649147 0.00356815 0.00217448 0.00187579 0.00270447 0.00219543 
-    -0.00546118 -0.0179576 -0.0445306 -0.0649309 0.0197935 0.473629 
-    0.87268 0.269542 0.0086094 0.0844602 0.606456 1.04929 0.906014 
-    0.916205 0.919425 0.872867 0.556244 0.262457 0.11838 0.0571226 
-    0.0333451 0.0237133 0.0185096 0.0159617 0.0148663 0.0138683 
-    0.0144081 0.0153797 0.0152551 0.0146487 0.0137192 0.0125973 
-    0.0113996 0.0101903 0.00901851 0.00790495 0.00687502 0.00593994 
-    0.00510092 0.00436111 0.00372439 0.0031945 0.00277537 0.00241888 
-    0.002095 0.00179943 0.00150419 0.00119264 0.00090934 0.000802394 
-    0.000852816 0.000838368 0.000730842 0.000601028 0.000546616 
-    0.000492205 0.000437793 0.000383381 0.000328969 0.00029454 
-    0.000266428 0.000238317 0.000210205 0.000182093 0.000162091 
-    0.000152145 0.000142198 0.000132252 0.000122306 0.000112359 
-    0.000102413 9.24665e-05 8.25201e-05 7.25738e-05 6.26274e-05 
-    5.78553e-05 5.42216e-05 5.05878e-05 4.69541e-05 4.33204e-05 
-    3.96867e-05 3.60529e-05 3.24192e-05 2.87855e-05 2.51518e-05 
-    2.19153e-05 2.03406e-05 1.8766e-05 1.71913e-05 1.56167e-05 
-    1.4042e-05 1.24674e-05 1.08927e-05 9.31806e-06 
-    EOD
-
-    @v[36].set(<<-'EOD')
-    5 5.01426 5.02852 5.01923 4.77685 4.56471 4.52338 4.56813 
-    4.63122 4.693 4.74776 4.79385 4.83258 4.86358 4.88918 4.91021 
-    4.90553 4.89733 4.89554 4.91953 5.00757 5.07101 5.06318 
-    5.05241 5.05535 5.08042 5.07251 4.90973 4.56136 3.98637 
-    3.237 2.67216 2.33678 2.13529 2.00544 1.91429 1.84638 1.79461 
-    1.75338 1.71958 1.69175 1.6686 1.64918 1.63258 1.61836 1.60607 
-    1.59506 1.58483 1.57575 1.56847 1.56193 1.55538 1.54968 
-    1.54416 1.5388 1.53523 1.53165 1.52807 1.52449 1.52091 1.51771 
-    1.51477 1.51182 1.50888 1.50593 1.50309 1.50113 1.49917 
-    1.4972 1.49524 1.49328 1.49132 1.48935 1.48739 1.48543 1.48346 
-    1.48157 1.48012 1.47868 1.47724 1.47579 1.47435 1.47291 
-    1.47146 1.47002 1.46857 1.46713 1.46574 1.46462 1.4635 1.46238 
-    1.46126 1.46014 1.45902 1.4579 1.45678 1.45567 1.45455 1.45349 
-    1.45275 1.45201 1.45127 1.45053 1.44979 1.44905 1.44831 
-    1.44757 1.44683 1.44609 1.44535 1.44461 1.44387 1.44313 
-    1.44239 1.44165 1.44091 1.44017 1.43943 1.43869 1.43795 
-    1.43721 1.43874 1.43976 1.43619 1.43182 1.43726 1.43084 
-    1.42587 1.42383 1.42642 1.42728 1.42736 1.4271 1.42669 1.42621 
-    1.42569 1.41703 1.41244 1.41019 1.41199 1.41833 1.42502 
-    1.41504 1.37535 1.28381 1.44779 2.33713 3.25835 3.67554 
-    3.84975 4.01125 4.2253 4.45433 4.62215 4.74478 4.82998 4.8868 
-    4.92396 4.94768 4.96498 4.98537 5.0128 5.04467 5.06722 5.06535 
-    5.01475 4.91956 4.80647 4.7242 4.7059 4.73552 4.76379 4.81684 
-    4.87376 4.92276 4.96112 4.9884 5.0045 5.00999 5.00933 5.00619 
-    5.00384 5.00342 5.00373 5.00362 5.00309 5.00272 5.00239 
-    5.00204 5.00172 5.00146 5.00124 5.00105 5.00089 5.00076 
-    5.00065 5.00057 5.00048 5.00041 5.00034 5.00028 5.00023 
-    5.00019 5.00015 5.00015 5.00016 5.0002 5.00023 5.00021 5.00019 
-    5.00017 5.00015 5.00012 5.0001 5.00008 5.00007 5.00006 5.00005 
-    5.00004 5.00003 5.00002 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00002 5.00002 5.00002 5.00002 
-    5.00002 5.00002 5.00002 5.00002 5.00002 5.00002 5.00001 
-    5.00001 5.00001 5.00062 4.99506 4.9835 4.96726 4.9728 4.97877 
-    4.98675 4.9966 5.00406 5.00679 5.00629 5.00561 5.00487 5.00429 
-    5.00384 5.002 5.00164 5.00229 5.00484 5.00769 5.00019 5.00242 
-    5.01319 5.0335 5.07265 5.10129 5.11485 5.12551 5.13953 5.16048 
-    5.18862 5.22811 5.25656 5.25627 5.19975 4.9139 4.24745 3.43732 
-    2.8202 2.43224 2.17409 2.01333 1.93951 1.94622 1.98861 2.02217 
-    2.05383 2.08376 2.11184 2.13793 2.16191 2.18267 2.20502 
-    2.22837 2.24958 2.26901 2.28648 2.302 2.31582 2.32802 2.33869 
-    2.34795 2.35596 2.36282 2.3687 2.37371 2.37797 2.38161 2.38476 
-    2.38743 2.3897 2.39168 2.39329 2.39463 2.39575 2.39671 2.39756 
-    2.39835 2.39907 2.39968 2.39999 2.4003 2.40061 2.40091 2.40122 
-    2.40142 2.40159 2.40176 2.40193 2.4021 2.40222 2.40228 2.40234 
-    2.4024 2.40247 2.40253 2.40259 2.40265 2.40271 2.40277 2.40284 
-    2.40287 2.40289 2.40291 2.40294 2.40296 2.40298 2.40301 
-    2.40303 2.40305 2.40308 2.4031 2.40311 2.40312 2.40313 2.40314 
-    2.40315 2.40316 2.40317 2.40318 
-    EOD
-
-    @v[37].set(<<-'EOD')
-    5 5.01732 5.03181 5.05944 5.12686 5.20725 5.28103 5.31254 
-    5.32901 5.33709 5.3408 5.34257 5.34311 5.34347 5.34386 5.34411 
-    5.3406 5.33484 5.32942 5.32904 5.33644 5.34869 5.35001 5.34882 
-    5.34758 5.34672 5.34599 5.34496 5.34364 5.34165 5.33712 
-    5.33502 5.3366 5.34067 5.34306 5.34398 5.34434 5.34442 5.34443 
-    5.34443 5.34441 5.34439 5.34437 5.34437 5.34438 5.34438 
-    5.34438 5.34438 5.34438 5.34437 5.34437 5.34436 5.34436 
-    5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 
-    5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 
-    5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 
-    5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 
-    5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 
-    5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 
-    5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 
-    5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 
-    5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 5.34437 
-    5.34437 5.34437 5.34437 5.34437 5.34437 5.35377 5.35451 
-    5.34265 5.34488 5.35861 5.28622 4.90033 4.75027 4.89731 
-    4.97098 4.99293 4.99832 4.99909 4.99956 4.99858 4.99829 
-    4.9998 5.00035 5.0038 5.00989 5.00251 4.99438 4.9953 4.99761 
-    4.99985 5.00152 5.0011 5.00046 4.99996 4.99925 4.99862 4.99919 
-    4.99961 5.00048 5.00234 4.99654 4.98235 4.95936 4.83738 
-    4.53021 4.21004 4.00593 3.91207 3.88059 3.87822 3.89117 
-    3.91278 3.94044 3.97376 4.01152 4.05052 4.10679 4.17908 
-    4.25673 4.33414 4.40875 4.47879 4.54342 4.60258 4.65595 
-    4.70291 4.74414 4.78018 4.81185 4.83915 4.86291 4.88301 
-    4.90048 4.91528 4.92802 4.9387 4.94777 4.95539 4.9618 4.96725 
-    4.97195 4.97588 4.97932 4.98247 4.98512 4.98697 4.98831 
-    4.98919 4.99015 4.99101 4.99169 4.99222 4.99282 4.99341 
-    4.994 4.9946 4.99519 4.99578 4.99638 4.99667 4.99693 4.9972 
-    4.99747 4.99773 4.998 4.99827 4.99841 4.99849 4.99856 4.99864 
-    4.99872 4.9988 4.99888 4.99896 4.99904 4.99911 4.99919 4.99927 
-    4.99935 4.99943 4.9995 4.99955 4.9996 4.99965 4.9997 5.00736 
-    4.98252 4.87516 4.66727 4.49142 4.43103 4.4301 4.4571 4.49729 
-    4.5407 4.5835 4.62363 4.66114 4.69577 4.72738 4.74632 4.75971 
-    4.77576 4.80671 4.87073 4.91665 4.93252 4.94418 4.95331 
-    4.96094 4.96727 4.97148 4.97471 4.97612 4.98276 5.00247 
-    5.04086 5.08628 5.10673 5.08887 5.0564 5.02767 5.01336 4.99685 
-    4.97422 4.90866 4.67035 4.33117 4.07888 3.94432 3.89105 
-    3.88174 3.89292 3.91442 3.94564 3.98708 4.0355 4.09134 4.16315 
-    4.24088 4.31918 4.39527 4.46693 4.53337 4.59405 4.6486 4.69693 
-    4.73938 4.77617 4.80809 4.83551 4.85895 4.87894 4.89596 
-    4.91081 4.92417 4.93651 4.94552 4.95198 4.9565 4.96096 4.96523 
-    4.96972 4.97428 4.97868 4.98064 4.9826 4.98455 4.98651 4.98847 
-    4.98967 4.99064 4.9916 4.99257 4.99353 4.99422 4.99457 4.99493 
-    4.99528 4.99563 4.99598 4.99633 4.99668 4.99703 4.99738 
-    4.99773 4.9979 4.99804 4.99817 4.9983 4.99843 4.99856 4.99869 
-    4.99883 4.99896 4.99909 4.99921 4.99926 4.99931 4.99937 
-    4.99942 4.99948 4.99953 4.99959 4.99964 
-    EOD
-
-    @v[38].set(<<-'EOD')
-    4.49849 4.53282 4.58329 4.66625 4.83345 4.97823 5.0207 5.01816 
-    5.01116 5.00595 5.00296 5.00148 5.00073 5.00062 5.00033 
-    5.0003 4.99864 4.99661 4.99652 4.99928 5.00361 5.12573 5.17251 
-    5.22612 5.33479 5.44503 5.44432 5.44379 5.44334 5.443 5.44276 
-    5.44258 5.44246 5.44238 5.44232 5.44228 5.44225 5.44223 
-    5.44221 5.4422 5.44219 5.44219 5.44218 5.44218 5.44218 5.44218 
-    5.44217 5.44217 5.44217 5.44217 5.44217 5.44217 5.44217 
-    5.44217 5.44217 5.44217 5.44217 5.44217 5.44217 5.44217 
-    5.44217 5.44217 5.44217 5.44217 5.44217 5.44217 5.44216 
-    5.44216 5.44216 5.44216 5.44216 5.44216 5.44216 5.44216 
-    5.44216 5.44216 5.44216 5.44216 5.44216 5.44216 5.44216 
-    5.44216 5.44216 5.44216 5.44216 5.44215 5.44215 5.44215 
-    5.44215 5.44215 5.44215 5.44215 5.44215 5.44215 5.44215 
-    5.44215 5.44215 5.44215 5.44215 5.44215 5.44215 5.44215 
-    5.44215 5.44215 5.44215 5.44215 5.44215 5.44215 5.44215 
-    5.44214 5.44214 5.44214 5.44214 5.44214 5.44214 5.44214 
-    5.44214 5.44214 5.44214 5.44214 5.44212 5.45159 5.45236 
-    5.44064 5.44307 5.45616 5.38122 4.77163 3.53297 2.74466 
-    2.34448 2.11802 1.9783 1.88656 1.82001 1.77389 1.72955 1.69632 
-    1.66971 1.6526 1.65236 1.56034 1.53764 1.97139 2.75096 3.39212 
-    3.74042 3.82345 3.85696 3.88547 3.91862 3.9585 4.00467 4.05903 
-    4.1254 4.19533 4.26791 4.34517 4.42112 4.49238 4.55807 4.6179 
-    4.6713 4.71815 4.75889 4.79418 4.82456 4.85062 4.87291 4.89196 
-    4.90823 4.92209 4.93388 4.9439 4.95242 4.95968 4.96585 4.97108 
-    4.9755 4.97923 4.98237 4.98503 4.98732 4.98927 4.99094 4.99233 
-    4.99353 4.99452 4.99538 4.99608 4.99668 4.99718 4.9976 4.99794 
-    4.99822 4.99847 4.99867 4.99884 4.99899 4.99913 4.99924 
-    4.99932 4.99938 4.99943 4.99947 4.99951 4.99953 4.99955 
-    4.99958 4.99961 4.99964 4.99967 4.99969 4.99972 4.99975 
-    4.99977 4.99978 4.99979 4.99981 4.99982 4.99983 4.99985 
-    4.99986 4.99986 4.99987 4.99987 4.99988 4.99988 4.99988 
-    4.99989 4.99989 4.9999 4.9999 4.99991 4.99991 4.99992 4.99992 
-    4.99993 4.99993 4.99993 4.99994 5.00381 5.00064 4.99246 
-    4.99823 5.00349 5.00076 5.00033 5.00015 5.00009 5.00007 
-    5.00005 5.00004 5.00003 5.00002 4.99988 4.99732 4.99728 
-    4.9978 5.00187 5.00927 5.08712 5.07654 4.92855 4.4863 3.76162 
-    3.00049 2.49834 2.20883 2.03492 1.92384 1.84676 1.79021 
-    1.74716 1.7132 1.68576 1.66309 1.64406 1.62785 1.61383 1.60162 
-    1.59081 1.58117 1.57253 1.56473 1.55765 1.55117 1.54527 
-    1.53988 1.53485 1.53012 1.5257 1.5216 1.51773 1.51411 1.51071 
-    1.50746 1.50438 1.50146 1.49868 1.49603 1.4935 1.49109 1.48878 
-    1.48657 1.48445 1.48242 1.48046 1.47858 1.47677 1.47502 
-    1.47333 1.4717 1.47012 1.46859 1.46711 1.46568 1.46428 1.46292 
-    1.4616 1.46034 1.45923 1.45812 1.45701 1.4559 1.45479 1.45378 
-    1.45279 1.45181 1.45082 1.44983 1.44893 1.44813 1.44732 
-    1.44652 1.44571 1.44491 1.4441 1.4433 1.44249 1.44169 1.44089 
-    1.44019 1.43951 1.43883 1.43815 1.43747 1.4368 1.43612 1.43544 
-    1.43476 1.43408 1.43342 1.43283 1.43223 1.43163 1.43104 
-    1.43044 1.42984 1.42924 1.42865 
-    EOD
-
-    @v[39].set(<<-'EOD')
-    5 5.01048 5.01221 4.98887 4.76261 4.54943 4.51564 4.56249 
-    4.62621 4.68843 4.74374 4.79044 4.82972 4.86127 4.88724 
-    4.90862 4.90791 4.89858 4.89589 4.91767 5.00405 5.16956 
-    5.12391 4.7557 3.87953 3.01124 2.48482 2.20424 2.03812 1.92679 
-    1.84956 1.79256 1.74907 1.71487 1.68724 1.6644 1.64513 1.6287 
-    1.61446 1.60197 1.59095 1.58117 1.57245 1.5646 1.55752 1.55109 
-    1.54516 1.53958 1.53444 1.53008 1.52606 1.52205 1.51843 
-    1.5149 1.51146 1.50893 1.50639 1.50387 1.50133 1.4988 1.49651 
-    1.49436 1.49222 1.49007 1.48793 1.48585 1.48433 1.4828 1.48128 
-    1.47975 1.47823 1.4767 1.47518 1.47365 1.47213 1.4706 1.46912 
-    1.46795 1.46678 1.46561 1.46444 1.46327 1.4621 1.46093 1.45976 
-    1.45859 1.45741 1.45628 1.45534 1.45441 1.45347 1.45254 
-    1.4516 1.45067 1.44973 1.4488 1.44786 1.44693 1.44604 1.44539 
-    1.44475 1.4441 1.44345 1.44281 1.44216 1.44151 1.44086 1.44022 
-    1.43957 1.43892 1.43828 1.43763 1.43698 1.43633 1.43569 
-    1.43504 1.43439 1.43375 1.4331 1.43245 1.4318 1.43157 1.43089 
-    1.43001 1.43042 1.42899 1.42439 1.42216 1.43447 1.44048 
-    1.43705 1.43314 1.43039 1.42861 1.42739 1.42651 1.42548 
-    1.42488 1.4243 1.42392 1.4235 1.32443 1.31149 1.78169 2.64844 
-    3.43211 3.95252 4.20231 4.3746 4.49948 4.58929 4.65742 4.71183 
-    4.77057 4.83196 4.88354 4.92894 4.96625 4.99235 5.00651 
-    5.00941 5.00813 5.00689 5.00588 5.00504 5.00431 5.00368 
-    5.00314 5.00268 5.00228 5.00194 5.00165 5.0014 5.00118 5.001 
-    5.00085 5.00072 5.00061 5.00052 5.00044 5.00037 5.00031 
-    5.00027 5.00022 5.00019 5.00016 5.00013 5.00011 5.00009 
-    5.00008 5.00007 5.00006 5.00005 5.00004 5.00003 5.00003 
-    5.00003 5.00002 5.00002 5.00002 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 5.00001 
-    5.00001 5.00001 5 5 5 5 5 4.99999 4.99999 4.99999 4.99998 
-    4.99998 4.99998 4.99998 4.99998 4.99998 4.99998 4.99999 
-    4.99999 4.99999 4.99999 4.99999 4.99999 5 5 5 5 5.00001 
-    5.00002 5.00003 5.00004 5.00022 4.99974 4.99942 4.99997 
-    5.00063 5.00002 5.00003 4.99994 4.99998 4.99999 5 5 5 5 
-    5 4.99981 4.99998 5.00004 5.00036 5.00049 5.12012 5.16315 
-    5.19712 5.21835 4.87874 4.10151 3.31555 2.74207 2.38075 
-    2.15872 2.01614 1.91886 1.84852 1.79401 1.75052 1.71508 
-    1.68672 1.66467 1.64602 1.62985 1.61576 1.60343 1.59256 
-    1.58287 1.57418 1.56632 1.55922 1.55282 1.54687 1.54132 
-    1.53618 1.53143 1.52698 1.52282 1.51895 1.51527 1.5118 1.50851 
-    1.5054 1.50244 1.49963 1.49695 1.4944 1.49196 1.48963 1.4874 
-    1.48527 1.48322 1.48124 1.47934 1.47751 1.47574 1.47403 
-    1.47239 1.4708 1.46926 1.46777 1.46632 1.46491 1.46355 1.46237 
-    1.4612 1.46002 1.45884 1.45766 1.45659 1.45555 1.45451 1.45346 
-    1.45242 1.45147 1.45062 1.44978 1.44894 1.44809 1.44725 
-    1.4464 1.44556 1.44472 1.44387 1.44303 1.4423 1.44159 1.44088 
-    1.44017 1.43947 1.43876 1.43805 1.43734 1.43664 1.43593 
-    1.43524 1.43462 1.434 1.43338 1.43276 1.43213 1.43151 1.43089 
-    1.43027 
-    EOD
-  end
-
-  def highlightTrace(graph)
-    entry = graph.legend_get(:current)
-    active_list = graph.legend_activate
-    if active_list.include?(entry)
-      graph.legend_deactivate(entry)
-      graph.element_deactivate(entry)
-    else
-      graph.legend_activate(entry)
-      graph.element_activate(entry)
-    end
-  end
-
-end
-
-BLT_Graph_Demo.new
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph7.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph7.rb
deleted file mode 100644 (file)
index 27fbe53..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/blt'
-
-length = 250000
-graph = Tk::BLT::Graph.new(:title=>"Scatter Plot\n#{length} points")
-graph.xaxis_configure(:loose=>false, :title=>'X Axis Label')
-graph.yaxis_configure(:title=>'Y Axis Label')
-graph.legend_configure(:activerelief=>:sunken, :background=>'')
-
-Tk::BLT::Table.add(Tk.root, graph, [0,0], :fill=>:both)
-
-v_x = Tk::BLT::Vector.new(length)
-v_y = Tk::BLT::Vector.new(length)
-v_x.expr("random(#{v_x})")
-v_y.expr("random(#{v_y})")
-v_x.sort(v_y)
-
-plot = Tk::BLT::PlotComponent::Element.new(graph, :symbol=>:square, 
-                                           :color=>'green4', :fill=>'green2', 
-                                           :linewidth=>0, :outlinewidth=>1, 
-                                           :pixels=>4, :label=>'plot', 
-                                           :xdata=>v_x, :ydata=>v_y)
-
-Tk.root.minsize(0, 0)
-
-#graph.zoom_stack
-#graph.crosshairs
-#graph.active_legend
-#graph.closest_point
-Tk::BLT.zoom_stack(graph)
-Tk::BLT.crosshairs(graph)
-Tk::BLT.active_legend(graph)
-Tk::BLT.closest_point(graph)
-
-Tk::BLT::Busy.hold(graph)
-Tk.update
-Tk::BLT::Busy.release(graph)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph7a.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph7a.rb
deleted file mode 100644 (file)
index a014f72..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/blt'
-
-file = File.join(File.dirname(File.expand_path(__FILE__)), 
-                 'images', 'buckskin.gif')
-bgTexture = TkPhotoImage.new(:file=>file)
-
-TkOption.add('*Graph.Tile', bgTexture)
-TkOption.add('*Label.Tile', bgTexture)
-TkOption.add('*Frame.Tile', bgTexture)
-TkOption.add('*Htext.Tile', bgTexture)
-TkOption.add('*TileOffset', 0)
-TkOption.add('*HighlightThickness',   0)
-TkOption.add('*Element.ScaleSybols',  false)
-TkOption.add('*Element.Smooth',       :linear)
-TkOption.add('*activeLine.Color',     'yellow4')
-TkOption.add('*activeLine.Fill',      'yellow')
-TkOption.add('*activeLine.LineWidth', 0)
-TkOption.add('*Element.Pixels',       3)
-TkOption.add('*Graph.halo',           '7i')
-
-if Tk.root.winfo_screenvisual != 'staticgray'
-  TkOption.add('*print.background', 'yellow')
-  TkOption.add('*quit.background',  'red')
-end
-
-length = 250000
-graph = Tk::BLT::Graph.new(:title=>"Scatter Plot\n#{length} points")
-graph.xaxis_configure(:loose=>false, :title=>'X Axis Label')
-graph.yaxis_configure(:title=>'Y Axis Label')
-graph.legend_configure(:activerelief=>:sunken, :background=>'')
-
-Tk::BLT::Table.add(Tk.root, graph, [0,0], :fill=>:both)
-
-v_x = Tk::BLT::Vector.new(length)
-v_y = Tk::BLT::Vector.new(length)
-v_x.expr("random(#{v_x})")
-v_y.expr("random(#{v_y})")
-v_x.sort(v_y)
-
-plot = Tk::BLT::PlotComponent::Element.new(graph, :symbol=>:square, 
-                                           :color=>'green4', :fill=>'green2', 
-                                           :linewidth=>0, :outlinewidth=>1, 
-                                           :pixels=>4, :label=>'plot', 
-                                           :xdata=>v_x, :ydata=>v_y)
-
-Tk.root.minsize(0, 0)
-
-#graph.zoom_stack
-#graph.crosshairs
-#graph.active_legend
-#graph.closest_point
-Tk::BLT.zoom_stack(graph)
-Tk::BLT.crosshairs(graph)
-Tk::BLT.active_legend(graph)
-Tk::BLT.closest_point(graph)
-
-Tk::BLT::Busy.hold(graph)
-Tk.update
-Tk::BLT::Busy.release(graph)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph7b.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph7b.rb
deleted file mode 100644 (file)
index c589f18..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/blt'
-
-length = 250000
-graph = Tk::BLT::Graph.new(:title=>"Scatter Plot\n#{length} points")
-graph.xaxis_configure(:loose=>false, :title=>'X Axis Label')
-graph.yaxis_configure(:title=>'Y Axis Label')
-graph.legend_configure(:activerelief=>:sunken, :background=>'')
-
-Tk::BLT::Table.add(Tk.root, graph, [0,0], :fill=>:both)
-
-x = Array.new(length)
-y = Array.new(length)
-(0...length).each{|i|
-  x[i] = rand
-  y[i] = rand
-}
-
-plot = Tk::BLT::PlotComponent::Element.new(graph, :symbol=>:square, 
-                                           :color=>'green4', :fill=>'green2', 
-                                           :linewidth=>0, :outlinewidth=>1, 
-                                           :pixels=>4, :label=>'plot', 
-                                           :xdata=>x, :ydata=>y)
-
-Tk.root.minsize(0, 0)
-
-#graph.zoom_stack
-#graph.crosshairs
-#graph.active_legend
-#graph.closest_point
-Tk::BLT.zoom_stack(graph)
-Tk::BLT.crosshairs(graph)
-Tk::BLT.active_legend(graph)
-Tk::BLT.closest_point(graph)
-
-Tk::BLT::Busy.hold(graph)
-Tk.update
-Tk::BLT::Busy.release(graph)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph7c.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/graph7c.rb
deleted file mode 100644 (file)
index 495b66f..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/blt'
-
-length = 250000
-graph = Tk::BLT::Graph.new(:title=>"Scatter Plot\n#{length} points")
-graph.xaxis_configure(:loose=>false, :title=>'X Axis Label')
-graph.yaxis_configure(:title=>'Y Axis Label')
-graph.legend_configure(:activerelief=>:sunken, :background=>'')
-
-Tk::BLT::Table.add(Tk.root, graph, [0,0], :fill=>:both)
-
-v_x = Tk::BLT::Vector.new(length)
-v_y = Tk::BLT::Vector.new(length)
-x = Array.new(length)
-y = Array.new(length)
-(0...length).each{|i|
-  x[i] = rand
-  y[i] = rand
-}
-v_x.set(x)
-v_y.set(y)
-
-plot = Tk::BLT::PlotComponent::Element.new(graph, :symbol=>:square, 
-                                           :color=>'green4', :fill=>'green2', 
-                                           :linewidth=>0, :outlinewidth=>1, 
-                                           :pixels=>4, :label=>'plot', 
-                                           :xdata=>v_x, :ydata=>v_y)
-
-Tk.root.minsize(0, 0)
-
-#graph.zoom_stack
-#graph.crosshairs
-#graph.active_legend
-#graph.closest_point
-Tk::BLT.zoom_stack(graph)
-Tk::BLT.crosshairs(graph)
-Tk::BLT.active_legend(graph)
-Tk::BLT.closest_point(graph)
-
-Tk::BLT::Busy.hold(graph)
-Tk.update
-Tk::BLT::Busy.release(graph)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/buckskin.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/buckskin.gif
deleted file mode 100644 (file)
index e2d7be9..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/buckskin.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/chalk.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/chalk.gif
deleted file mode 100644 (file)
index 30d29a7..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/chalk.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/qv100.t.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/qv100.t.gif
deleted file mode 100644 (file)
index 1e738ee..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/qv100.t.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/rain.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/rain.gif
deleted file mode 100644 (file)
index d7bb417..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/rain.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/sample.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/sample.gif
deleted file mode 100644 (file)
index 1d8a401..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/images/sample.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/pareto.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/pareto.rb
deleted file mode 100644 (file)
index 94d5f3f..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-require 'tkextlib/blt'
-
-# Example of a pareto chart.
-#
-# The pareto chart mixes line and bar elements in the same graph.
-# Each processing operating is represented by a bar element.  The
-# total accumulated defects is displayed with a single line element.
-b = Tk::BLT::Barchart.new(:title=>'Defects Found During Inspection', 
-                          :font=>'Helvetica 12', :plotpady=>[12, 4], 
-                          :width=>'6i', :height=>'5i')
-Tk::BLT::Table.add(Tk.root, b, :fill=>:both)
-
-data = [
-  ["Spot Weld",  82,   'yellow'], 
-  ["Lathe",      49,   'orange'], 
-  ["Gear Cut",   38,   'green'], 
-  ["Drill",      24,   'blue'], 
-  ["Grind",      17,   'red'], 
-  ["Lapping",    12,   'brown'], 
-  ["Press",       8,   'purple'], 
-  ["De-burr",     4,   'pink'], 
-  ["Packaging",   3,   'cyan'], 
-  ["Other",      12,   'magenta']
-]
-
-# Create an X-Y graph line element to trace the accumulated defects.
-b.line_create('accum', :label=>'', :symbol=>:none, :color=>'red')
-
-# Define a bitmap to be used to stipple the background of each bar.
-pattern1 = Tk::BLT::Bitmap.define([ [4, 4], [1, 2, 4, 8] ])
-
-# For each process, create a bar element to display the magnitude.
-count = 0
-sum   = 0
-ydata = [0]
-xdata = [0]
-labels = []
-
-data.each{|label, value, color|
-  count += 1
-  b.element_create(label, :xdata=>count, :ydata=>value, :foreground=>color, 
-                   :relief=>:solid, :borderwidth=>1, :stipple=>pattern1, 
-                   :background=>'lightblue')
-  labels[count] = label
-  # Get the total number of defects.
-  sum += value
-  ydata << sum
-  xdata << count
-}
-
-# Configure the coordinates of the accumulated defects, 
-# now that we know what they are.
-b.element_configure('accum', :xdata=>xdata, :ydata=>ydata)
-
-# Add text markers to label the percentage of total at each point.
-xdata.zip(ydata){|x, y|
-  percent = (y * 100.0) / sum
-  if x == 0
-    text = ' 0%'
-  else
-    text = '%.1f' % percent
-  end
-  b.marker_create(:text, :coords=>[x, y], :text=>text, :font=>'Helvetica 10', 
-                  :foreground=>'red4', :anchor=>:center, :yoffset=>-5)
-}
-
-# Display an auxillary y-axis for percentages.
-b.axis_configure('y2', :hide=>false, :min=>0.0, :max=>100.0, 
-                 :title=>'Percentage')
-
-# Title the y-axis
-b.axis_configure('y', :title=>'Defects')
-
-# Configure the x-axis to display the process names, instead of numbers.
-b.axis_configure('x', :title=>'Process', :rotate=>90, :subdivisions=>0, 
-                 :command=>proc{|w, val|
-                   val = val.round
-                   labels[val]? labels[val]: val
-                  })
-
-# No legend needed.
-b.legend_configure(:hide=>true)
-
-# Configure the grid lines.
-b.gridline_configure(:mapx=>:x, :color=>'lightblue')
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/plot1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/plot1.rb
deleted file mode 100644 (file)
index 07dff48..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/blt'
-
-graph = Tk::BLT::Graph.new.pack
-plot = Tk::BLT::PlotComponent::Element.new(graph, :linewidth=>0, :label=>'foo')
-plot.data([[1.0, 3.4], [1.1, 2.8], [1.2, 3.1], [1.4, 2.9]].flatten)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/plot1b.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/plot1b.rb
deleted file mode 100644 (file)
index eb41e36..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/blt'
-
-graph = Tk::BLT::Graph.new.pack
-plot = graph.element_create
-plot.configure(:linewidth=>0, :label=>'foo', 
-               :data=>[[1.0, 3.4], [1.1, 2.8], [1.2, 3.1], [1.4, 2.9]].flatten)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/readme.txt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/readme.txt
deleted file mode 100644 (file)
index fe12dd8..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-The scripts and image files in this directory are based on demo files
-of Tcl/Tk's BLT extention. 
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/scripts/stipples.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/scripts/stipples.rb
deleted file mode 100644 (file)
index 47f3c4d..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-$stipples = {} unless $stipples
-
-$stipples['bdiagonal1'] = Tk::BLT::Bitmap.new(<<EOD)
-#define bdiagonal1_width 8
-#define bdiagonal1_height 8
-static unsigned char bdiagonal1_bits[] = {
-   0x88, 0x44, 0x22, 0x11, 0x88, 0x44, 0x22, 0x11};
-EOD
-
-$stipples['bdiagonal2'] = Tk::BLT::Bitmap.new(<<EOD)
-#define bdiagonal2_width 8
-#define bdiagonal2_height 8
-static unsigned char bdiagonal2_bits[] = {
-   0x08, 0x04, 0x02, 0x01, 0x80, 0x40, 0x20, 0x10};
-EOD
-
-$stipples['checker2'] = Tk::BLT::Bitmap.new(<<EOD)
-#define checker2_width 8
-#define checker2_height 8
-static unsigned char checker2_bits[] = {
-   0x33, 0x33, 0xcc, 0xcc, 0x33, 0x33, 0xcc, 0xcc};
-EOD
-
-
-$stipples['checker3'] = Tk::BLT::Bitmap.new(<<EOD)
-#define checker3_width 8
-#define checker3_height 8
-static unsigned char checker3_bits[] = {
-   0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0};
-EOD
-
-$stipples['cross1'] = Tk::BLT::Bitmap.new(<<EOD)
-#define cross1_width 8
-#define cross1_height 8
-static unsigned char cross_bits[] = {
-   0xff, 0xaa, 0xff, 0xaa, 0xff, 0xaa, 0xff, 0xaa};
-EOD
-
-$stipples['cross2'] = Tk::BLT::Bitmap.new(<<EOD)
-#define cross2_width 8
-#define cross2_height 8
-static unsigned char cross2_bits[] = {
-   0xff, 0x88, 0x88, 0x88, 0xff, 0x88, 0x88, 0x88};
-EOD
-
-$stipples['cross3'] = Tk::BLT::Bitmap.new(<<EOD)
-#define cross3_width 8
-#define cross3_height 8
-static unsigned char cross3_bits[] = {
-   0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01};
-EOD
-
-$stipples['crossdiag'] = Tk::BLT::Bitmap.new(<<EOD)
-#define crossdiag_width 8
-#define crossdiag_height 8
-static unsigned char crossdiag2_bits[] = {
-   0x18, 0x24, 0x42, 0x81, 0x81, 0x42, 0x24, 0x18};
-EOD
-
-$stipples['dot1'] = Tk::BLT::Bitmap.new(<<EOD)
-#define dot1_width 8
-#define dot1_height 8
-static unsigned char dot1_bits[] = {
-   0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa};
-EOD
-
-$stipples['dot2'] = Tk::BLT::Bitmap.new(<<EOD)
-#define dot2_width 8
-#define dot2_height 8
-static unsigned char dot2_bits[] = {
-   0x55, 0x00, 0x55, 0x00, 0x55, 0x00, 0x55, 0x00};
-EOD
-
-$stipples['dot3'] = Tk::BLT::Bitmap.new(<<EOD)
-#define dot3_width 8
-#define dot3_height 8
-static unsigned char dot3_bits[] = {
-   0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00};
-EOD
-
-$stipples['dot4'] = Tk::BLT::Bitmap.new(<<EOD)
-#define dot4_width 8
-#define dot4_height 8
-static unsigned char dot4_bits[] = {
-   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-EOD
-
-$stipples['fdiagonal1'] = Tk::BLT::Bitmap.new(<<EOD)
-#define fdiagonal1_width 8
-#define fdiagonal1_height 8
-static unsigned char fdiagonal1_bits[] = {
-   0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88};
-EOD
-
-$stipples['fdiagonal2'] = Tk::BLT::Bitmap.new(<<EOD)
-#define fdiagonal2_width 8
-#define fdiagonal2_height 8
-static unsigned char fdiagonal2_bits[] = {
-   0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08};
-EOD
-
-$stipples['hline1'] = Tk::BLT::Bitmap.new(<<EOD)
-#define hline1_width 8
-#define hline1_height 8
-static unsigned char hline1_bits[] = {
-   0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00};
-EOD
-
-$stipples['hline2'] = Tk::BLT::Bitmap.new(<<EOD)
-#define hline2_width 8
-#define hline2_height 8
-static unsigned char hline2_bits[] = {
-   0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00};
-EOD
-
-$stipples['lbottom'] = Tk::BLT::Bitmap.new(<<EOD)
-#define lbottom_width 8
-#define lbottom_height 8
-static unsigned char lbottom_bits[] = {
-   0x00, 0x11, 0x11, 0x77, 0x00, 0x11, 0x11, 0x77};
-EOD
-
-$stipples['ltop'] = Tk::BLT::Bitmap.new(<<EOD)
-#define ltop_width 8
-#define ltop_height 8
-static unsigned char ltop_bits[] = {
-   0xee, 0x88, 0x88, 0x00, 0xee, 0x88, 0x88, 0x00};
-EOD
-
-$stipples['rbottom'] = Tk::BLT::Bitmap.new(<<EOD)
-#define rbottom_width 8
-#define rbottom_height 8
-static unsigned char rbottom_bits[] = {
-   0x00, 0x88, 0x88, 0xee, 0x00, 0x88, 0x88, 0xee};
-EOD
-
-$stipples['rtop'] = Tk::BLT::Bitmap.new(<<EOD)
-#define rtop_width 8
-#define rtop_height 8
-static unsigned char rtop_bits[] = {
-   0x77, 0x11, 0x11, 0x00, 0x77, 0x11, 0x11, 0x00};
-EOD
-
-$stipples['vline1'] = Tk::BLT::Bitmap.new(<<EOD)
-#define vline1_width 8
-#define vline1_height 8
-static unsigned char vline1_bits[] = {
-   0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
-EOD
-
-$stipples['vline2'] = Tk::BLT::Bitmap.new(<<EOD)
-#define vline2_width 8
-#define vline2_height 8
-static unsigned char vline2_bits[] = {
-   0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33};
-EOD
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/winop1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/winop1.rb
deleted file mode 100644 (file)
index e94138c..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/blt'
-
-file = File.join(File.dirname(File.expand_path(__FILE__)), 
-                 'images', 'sample.gif')
-if File.exist?(file)
-  src = TkPhotoImage.new(:file=>file)
-else
-  fail RuntimeError, 'no image file'
-end
-
-width = src.width
-height = src.height
-
-TkOption.add('*Label.font', '*helvetica*10*')
-TkOption.add('*Label.background', 'white')
-
-l_img0 = TkLabel.new(:image=>src)
-l_hdr0 = TkLabel.new(:text=>"#{width} x #{height}")
-l_ftr0 = TkLabel.new(:text=>'100%')
-Tk.root.background('white')
-
-(2..10).each{|i|
-  iw = width/i
-  ih = height/i
-  r = '%6g'%(100.0/i)
-  dst = TkPhotoImage.new(:width=>iw, :height=>ih)
-  Tk::BLT::Winop.image_resample(src, dst, :sinc)
-  l_hdr = TkLabel.new(:text=>"#{iw} x #{ih}")
-  l_ftr = TkLabel.new(:text=>"#{r}%")
-  l_img = TkLabel.new(:image=>dst)
-  Tk::BLT::Table.add(Tk.root, 
-                     [0,i], l_hdr, 
-                     [1,i], l_img, 
-                     [2,i], l_ftr)
-  Tk.update
-}
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/winop2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/blt/winop2.rb
deleted file mode 100644 (file)
index 1f674ee..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/blt'
-
-file = File.join(File.dirname(File.expand_path(__FILE__)), 
-                 'images', 'qv100.t.gif')
-if File.exist?(file)
-  src = TkPhotoImage.new(:file=>file)
-else
-  fail RuntimeError, 'no image file'
-end
-
-width = src.width
-height = src.height
-
-TkOption.add('*Label.font', '*helvetica*10*')
-TkOption.add('*Label.background', 'white')
-
-[0, 90, 180, 270, 360, 45].each_with_index{|r, i|
-  dest = TkPhotoImage.new
-  Tk::BLT::Winop.image_rotate(src, dest, r)
-  l_txt = TkLabel.new(:text=>"#{r} degrees")
-  l_img = TkLabel.new(:image=>dest)
-  Tk::BLT::Table.add(Tk.root, [0,i], l_img, [1,i], l_txt)
-  Tk.update
-}
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/Orig_LICENSE.txt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/Orig_LICENSE.txt
deleted file mode 100644 (file)
index 0c4c16f..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-
-  ######################################################################
-  ###  The following text is the original 'LICENSE.txt' of BWidget   ###
-  ###  extension.                                                    ###
-  ###  Original Tcl source files are not include in this directry,   ###
-  ###  because of all of them are rewrited to Ruby files.            ###
-  ###  However, the bitmap data files ('bwidgtet.xbm' and 'x1.xbm')  ###
-  ###  included in this directory are quoted from BWidget source     ###
-  ###  archive. So, those bitmaps are under the following license.   ###
-  ######################################################################
-
-
-BWidget ToolKit
-Copyright (c) 1998-1999 UNIFIX. 
-Copyright (c) 2001-2002 ActiveState Corp. 
-
-The following terms apply to all files associated with the software
-unless explicitly disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-GOVERNMENT USE: If you are acquiring this software on behalf of the
-U.S. government, the Government shall have only "Restricted Rights"
-in the software and related documentation as defined in the Federal 
-Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
-are acquiring the software on behalf of the Department of Defense, the
-software shall be classified as "Commercial Computer Software" and the
-Government shall have only "Restricted Rights" as defined in Clause
-252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
-authors grant the U.S. Government and others acting in its behalf
-permission to use and distribute the software in accordance with the
-terms specified in this license. 
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/basic.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/basic.rb
deleted file mode 100644 (file)
index c152165..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-#
-#  basic demo  ---  called from demo.rb
-#
-unless Object.const_defined?('DemoVar')
-  fail RuntimeError, "This is NOT a stand alone script. This script is called from 'demo.rb'. "
-end
-
-module DemoBasic
-  @@var   = TkVariable.new_hash
-  @@after = nil
-  @@count = 0
-
-  def self.create(nb)
-    frame = nb.insert('end', 'demoBasic', :text=>'Basic')
-    topf  = TkFrame.new(frame)
-
-    titf1 = Tk::BWidget::TitleFrame.new(topf, :text=>'Label')
-    titf2 = Tk::BWidget::TitleFrame.new(topf, :text=>'Entry')
-
-    titf3 = Tk::BWidget::TitleFrame.new(frame, :text=>'Button and ArrowButton')
-
-    _label(titf1.get_frame)
-    _entry(titf2.get_frame)
-    _button(titf3.get_frame)
-
-    Tk.pack(titf1, titf2, :side=>:left, :fill=>:both, :padx=>4, :expand=>true)
-    topf.pack(:pady=>2, :fill=>:x)
-    titf3.pack(:pady=>2, :padx=>4, :fill=>:x)
-  end
-
-  def self._label(parent)
-    lab = Tk::BWidget::Label.new(parent, :text=>'This is a Label widget', 
-                                 :helptext=>'Label widget')
-    chk = TkCheckbutton.new(parent, :text=>'Disabled', 
-                            :variable=>@@var.ref(lab, 'state'), 
-                            :onvalue=>'disabled', :offvalue=>'normal', 
-                            :command=>proc{lab[:state] = @@var[lab, 'state']})
-    lab.pack(:anchor=>:w, :pady=>4)
-    chk.pack(:anchor=>:w)
-  end
-
-  def self._entry(parent)
-    ent = Tk::BWidget::Entry.new(parent, :text=>'Press enter', 
-                                 :helptext=>'Entry widtet', 
-                                 :command=>proc{
-                                   @@var['entcmd'] = 'command called'
-                                   Tk.after(500, proc{@@var['entcmd'] = ''})
-                                 })
-
-    chk1 = TkCheckbutton.new(parent, :text=>'Disabled', 
-                             :variable=>@@var.ref(ent, 'state'), 
-                             :onvalue=>'disabled', :offvalue=>'normal', 
-                             :command=>proc{ent.state = @@var[ent, 'state']})
-
-    chk2 = TkCheckbutton.new(parent, :text=>'Non editable', 
-                             :variable=>@@var.ref(ent, 'editable'), 
-                             :onvalue=>false, :offvalue=>true, 
-                             :command=>proc{
-                               ent.editable = @@var[ent, 'editable']
-                             })
-
-    lab = TkLabel.new(parent, :textvariable=>@@var.ref('entcmd'), 
-                      :foreground=>'red')
-
-    ent.pack(:pady=>4, :anchor=>:w)
-    Tk.pack(chk1, chk2, :anchor=>:w)
-    lab.pack(:pady=>4)
-  end
-
-  def self._button(parent)
-    frame = TkFrame.new(parent)
-    but  = Tk::BWidget::Button.new(frame, :text=>'Press me!', 
-                                   :repeatdelay=>300, 
-                                   :command=>proc{_butcmd('command')}, 
-                                   :helptext=>'This is a Button widget')
-
-    sep1 = Tk::BWidget::Separator.new(frame, :orient=>:vertical)
-    arr1 = Tk::BWidget::ArrowButton.new(frame, :type=>:button, 
-                :width=>25, :height=>25, :repeatdelay=>300, 
-                :command=>proc{_butcmd('command')}, 
-                :helptext=>"This is an ArrowButton widget\nof type button")
-
-    sep2 = Tk::BWidget::Separator.new(frame, :orient=>:vertical)
-    arr2 = Tk::BWidget::ArrowButton.new(frame, :type=>:arrow, 
-                :width=>25, :height=>25, :relief=>:sunken, 
-                :ipadx=>0, :ipady=>0, :repeatdelay=>300, 
-                :command=>proc{_butcmd('command')}, 
-                :helptext=>"This is an ArrowButton widget\nof type arrow")
-
-    but.pack(:side=>:left, :padx=>4)
-    sep1.pack(:side=>:left, :padx=>4, :fill=>:y)
-    arr1.pack(:side=>:left, :padx=>4)
-    sep2.pack(:side=>:left, :padx=>4, :fill=>:y)
-    arr2.pack(:side=>:left, :padx=>4)
-    frame.pack
-
-    Tk::BWidget::Separator.new(parent, 
-                               :orient=>:horizontal).pack(:fill=>:x, :pady=>10)
-
-    labf1 = Tk::BWidget::LabelFrame.new(parent, :text=>'Command', 
-                                        :side=>:top, :anchor=>:w, 
-                                        :relief=>:sunken, :borderwidth=>1)
-    subf = labf1.get_frame
-    chk1 = TkCheckbutton.new(subf, :text=>'Disabled', 
-                             :variable=>@@var.ref('bstate'), 
-                             :onvalue=>'disabled', :offvalue=>'normal', 
-                             :command=>proc{_bstate(@@var['bstate'], 
-                                                     but, arr1, arr2)})
-    chk2 = TkCheckbutton.new(subf, :text=>"Use armcommand/\ndisarmcommand", 
-                             :variable=>@@var.ref('barmcmd'), 
-                             :command=>proc{_barmcmd(@@var['barmcmd'], 
-                                                     but, arr1, arr2)})
-    Tk.pack(chk1, chk2, :anchor=>:w)
-
-    label = TkLabel.new(parent, :textvariable=>@@var.ref('butcmd'), 
-                        :foreground=>'red').pack(:side=>:bottom, :pady=>4)
-
-    labf2 = Tk::BWidget::LabelFrame.new(parent, :text=>'Direction', 
-                                        :side=>:top, :anchor=>:w, 
-                                        :relief=>:sunken, :borderwidth=>1)
-    subf = labf2.get_frame
-    @@var['bside'] = :top
-    [:top, :left, :bottom, :right].each{|dir|
-      TkRadiobutton.new(subf, :text=>"#{dir} arrow", 
-                        :variable=>@@var.ref('bside'), :value=>dir, 
-                        :command=>proc{_bside(@@var['bside'], arr1, arr2)}
-                        ).pack(:anchor=>:w)
-    }
-
-    labf3 = Tk::BWidget::LabelFrame.new(parent, :text=>'Relief', 
-                                        :side=>:top, :anchor=>:w, 
-                                        :relief=>:sunken, :borderwidth=>1)
-    subf = labf3.get_frame
-    @@var['brelief'] = :raised
-    [ %w(raised sunken ridge groove), %w(flat solid link)].each{|lrelief|
-      f = TkFrame.new(subf)
-      lrelief.each{|relief|
-        TkRadiobutton.new(f, :text=>relief, 
-                          :variable=>@@var.ref('brelief'), :value=>relief, 
-                          :command=>proc{
-                            _brelief(@@var['brelief'], but, arr1, arr2)
-                          }).pack(:anchor=>:w)
-      }
-      f.pack(:side=>:left, :padx=>2, :anchor=>:n)
-    }
-    Tk.pack(labf1, labf2, labf3, :side=>:left, :fill=>:y, :padx=>4)
-  end
-
-  def self._bstate(state, but, arr1, arr2)
-    [but, arr1, arr2].each{|b| b[:state] = state}
-  end
-
-  def self._brelief(relief, but, arr1, arr2)
-    but[:relief] = relief
-    if relief.to_s != 'link'
-      [arr1, arr2].each{|arr| arr[:relief] = relief}
-    end
-  end
-
-  def self._bside(side, *args)
-    args.each{|arr| arr[:dir] = side}
-  end
-
-  def self._barmcmd(value, but, arr1, arr2)
-    if TkComm.bool(value)
-      but.configure(:armcommand=>proc{_butcmd('arm')}, 
-                    :disarmcommand=>proc{_butcmd('disarm')}, 
-                    :command=>'')
-      [arr1, arr2].each{|arr|
-        arr.configure(:armcommand=>proc{_butcmd('arm')}, 
-                      :disarmcommand=>proc{_butcmd('disarm')}, 
-                      :command=>'')
-      }
-    else
-      but.configure(:armcommand=>'', :disarmcommand=>'', 
-                    :command=>proc{_butcmd('command')})
-      [arr1, arr2].each{|arr|
-        arr.configure(:armcommand=>'', :disarmcommand=>'', 
-                      :command=>proc{_butcmd('command')})
-      }
-    end
-  end
-
-  def self._butcmd(reason)
-    unless @@after
-      @@after = TkTimer.new(500, 1, proc{@@var['butcmd'] = ''})
-    end
-    @@after.stop
-    if (reason == 'arm')
-      @@count += 1
-      @@var['butcmd'] = "#{reason} command called (#{@@count})"
-    else
-      @@count = 0
-      @@var['butcmd'] = "#{reason} command called"
-    end
-    @@after.start
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/bwidget.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/bwidget.xbm
deleted file mode 100644 (file)
index 5451ebb..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#define bwidget_width 76
-#define bwidget_height 64
-static char bwidget_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0x00,0xb6,0x6d,0xdb,0x16,0x00,0x00,0x00,0x00,0xf0,
- 0x00,0xdb,0xb6,0x6d,0xab,0x00,0x00,0x00,0x00,0xf0,0x00,0x55,0x55,0x55,0x75,
- 0x01,0x00,0x00,0x00,0xf0,0x00,0x6d,0xdb,0xb6,0xad,0x02,0x00,0x00,0x00,0xf0,
- 0x00,0xb6,0x6d,0xdb,0xb6,0x05,0x00,0x00,0x00,0xf0,0x00,0x55,0x55,0x55,0x55,
- 0x05,0x00,0x00,0x00,0xf0,0x00,0xda,0xb6,0xad,0x6d,0x0b,0x00,0x00,0x00,0xf0,
- 0x00,0x6b,0x03,0xc0,0xb6,0x05,0x00,0x00,0x00,0xf0,0x00,0x56,0x05,0x00,0x55,
- 0x0d,0x00,0x00,0x00,0xf0,0x00,0xbb,0x05,0x80,0xdb,0x06,0x00,0x00,0x00,0xf0,
- 0x00,0xca,0x06,0x00,0x6c,0x0b,0x00,0x00,0x00,0xf0,0x00,0xb6,0x02,0x00,0xaa,
- 0x0a,0x00,0x00,0x00,0xf0,0x00,0xab,0x05,0x00,0x6c,0x0b,0x00,0x00,0x00,0xf0,
- 0x00,0xdd,0x06,0x00,0xb6,0x05,0x00,0x00,0x00,0xf0,0x00,0xaa,0x02,0x00,0x55,
- 0x05,0x00,0x00,0x00,0xf0,0x00,0xb7,0x05,0xc0,0xda,0x02,0x00,0x00,0x00,0xf0,
- 0x00,0xd9,0x06,0x50,0x6b,0x01,0x00,0x00,0x00,0xf0,0x00,0x56,0xb5,0xad,0xad,
- 0x00,0x00,0x00,0x00,0xf0,0x00,0xdb,0xd6,0x76,0x15,0x00,0x00,0x00,0x00,0xf0,
- 0x00,0x6a,0xab,0xaa,0x2d,0x00,0x00,0x00,0x00,0xf0,0x00,0x56,0x75,0xad,0xb6,
- 0x02,0x00,0x00,0x00,0xf0,0x00,0xbb,0xad,0xd6,0xaa,0x05,0x00,0x00,0x00,0xf0,
- 0x00,0xca,0xb6,0x6b,0xdb,0x2a,0x00,0x00,0x00,0xf0,0x00,0x77,0xd5,0x5c,0x6d,
- 0x2d,0x00,0x00,0x00,0xf0,0x00,0x99,0x05,0x00,0xaa,0x56,0x00,0x00,0x00,0xf0,
- 0x00,0xee,0x06,0x00,0x6c,0xbb,0x00,0x00,0x00,0xf0,0x00,0xaa,0x02,0x00,0xb0,
- 0x55,0x00,0x00,0x00,0xf0,0x00,0x55,0x05,0x00,0xa8,0xd6,0x00,0x00,0x00,0xf0,
- 0x00,0xee,0x06,0x00,0xd0,0x6a,0x00,0x00,0x00,0xf0,0x00,0x55,0x03,0x00,0x68,
- 0xb7,0xfc,0x00,0x7e,0xf0,0x00,0x6d,0x05,0x00,0xa8,0xaa,0xfc,0x80,0x7e,0xf0,
- 0x00,0xb6,0x05,0x00,0x50,0xbb,0xfe,0x01,0x7e,0xf0,0x00,0x55,0x05,0x00,0x78,
- 0xad,0xfe,0x81,0x1f,0xf0,0x00,0xb6,0x05,0x00,0xa4,0xb5,0xfe,0x81,0x1f,0xf0,
- 0x00,0x5b,0x05,0x80,0xba,0x56,0xfe,0x83,0x1f,0xf0,0x00,0xaa,0x6b,0x5b,0xd5,
- 0x5a,0xff,0x85,0x1f,0xf0,0x00,0xdb,0x5a,0xad,0x57,0x2b,0xff,0xc7,0x0f,0xf0,
- 0x00,0x6d,0xad,0xd5,0x6a,0x0d,0xff,0xc7,0x0f,0xf0,0x00,0xaa,0xd6,0xb6,0xba,
- 0x05,0xdf,0xc7,0x0f,0xf0,0x00,0xb7,0xb5,0x5a,0xab,0x8a,0xdf,0xcf,0x0f,0xf0,
- 0x00,0xd9,0x5a,0xab,0x6d,0x8f,0xcf,0xef,0x07,0xf0,0x00,0x56,0xad,0x75,0xb5,
- 0xaf,0x8f,0xef,0x07,0xf0,0x00,0xb5,0xeb,0x5a,0x00,0x9f,0xcf,0xef,0x07,0xf0,
- 0x00,0x00,0x00,0x00,0x00,0xff,0x8f,0xff,0x07,0xf0,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0x87,0xff,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,0xff,0x03,0xff,0x03,0xf0,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0x03,0xff,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0x03,0xff,0x01,0xf0,0x00,0x00,0x00,0x00,0x00,0xfc,0x01,0xff,0x03,0xf0,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0x01,0xfe,0x01,0xf0,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0x01,0xfe,0x01,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0};
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/demo.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/demo.rb
deleted file mode 100644 (file)
index 785d268..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/bwidget'
-
-module DemoVar
-  @_wfont    = nil
-  @notebook  = nil
-  @mainframe = nil
-  @status    = TkVariable.new
-  @prgtext   = TkVariable.new
-  @prgindic  = TkVariable.new
-  @font      = nil
-  @font_name = nil
-  @toolbar1  = TkVariable.new(true)
-  @toolbar2  = TkVariable.new(true)
-end
-class << DemoVar
-  attr_accessor :_wfont, :notebook, :mainframe, :font, :font_name
-  attr_reader   :status, :prgtext, :prgindic, :toolbar1, :toolbar2
-end
-
-class BWidget_Demo
-  DEMODIR = File.dirname(File.expand_path(__FILE__))
-
-  %w(manager basic select dnd tree tmpldlg).each{|f|
-    require File.join(DEMODIR, f << '.rb')
-  }
-
-  def initialize
-    TkOption.add('*TitleFrame.l.font', 'helvetica 11 bold italic')
-
-    root = TkRoot.new(:title=>'BWidget demo')
-    root.withdraw
-
-    _create
-
-    Tk::BWidget.place(root, 0, 0, :center)
-    root.deiconify
-    root.raise
-    root.focus(true)
-
-    root.geometry(root.geometry)
-  end
-
-  def _create
-    DemoVar.prgtext.value = 'Please wait while loading font...'
-    DemoVar.prgindic.value = -1
-
-    intro = _create_intro
-
-    Tk.update
-
-    Tk::BWidget::SelectFont.load_font
-
-    descmenu = [
-      '&File', 'all', 'file', 0, [
-        ['command', 'E&xit', [], 'Exit BWidget demo', [], 
-          {:command=>proc{exit}}]
-      ], 
-      '&Options', 'all', 'options', 0, [
-        ['checkbutton', 'Toolbar &1', ['all', 'option'], 
-          'Show/hide toolbar 1', [], 
-          { :variable=>DemoVar.toolbar1, 
-            :command=>proc{
-              DemoVar.mainframe.show_toolbar(0, DemoVar.toolbar1.value)
-            }
-          }
-        ], 
-        ['checkbutton', 'Toolbar &2', ['all', 'option'], 
-          'Show/hide toolbar 2', [], 
-          { :variable=>DemoVar.toolbar2, 
-            :command=>proc{
-              DemoVar.mainframe.show_toolbar(1, DemoVar.toolbar2.value)
-            }
-          }
-        ]
-      ]
-    ]
-
-    DemoVar.prgtext.value = 'Creating MainFrame...'
-    DemoVar.prgindic.value = 0
-
-    DemoVar.mainframe = Tk::BWidget::MainFrame.new(
-                                :menu=>descmenu, 
-                                :textvariable=>DemoVar.status, 
-                                :progressvar=>DemoVar.prgindic
-                        )
-
-    # toobar 1 creation
-    DemoVar.prgindic.numeric += 1
-
-    DemoVar.mainframe.add_toolbar{|tb1|
-      Tk::BWidget::ButtonBox.new(tb1, :spacing=>0, :padx=>1, :pady=>1){|bbox|
-        add(:image=>Tk::BWidget::Bitmap.new('new'), 
-            :highlightthickness=>0, :takefocus=>0, :relief=>:link, 
-            :borderwidth=>1, :padx=>1, :pady=>1, 
-            :command=>proc{puts 'select "Create a new file" icon'}, 
-            :helptext=>"Create a new file")
-
-        add(:image=>Tk::BWidget::Bitmap.new('open'), 
-            :highlightthickness=>0, :takefocus=>0, :relief=>:link, 
-            :borderwidth=>1, :padx=>1, :pady=>1, 
-            :command=>proc{puts 'select "Open an existing file" icon'}, 
-            :helptext=>"Open an existing file")
-
-        add(:image=>Tk::BWidget::Bitmap.new('save'), 
-            :highlightthickness=>0, :takefocus=>0, :relief=>:link, 
-            :borderwidth=>1, :padx=>1, :pady=>1, 
-            :command=>proc{puts 'select "Save file" icon'}, 
-            :helptext=>"Save file")
-
-        pack(:side=>:left, :anchor=>:w)
-      }
-
-      Tk::BWidget::Separator.new(tb1, :orient=>:vertical){
-        pack(:side=>:left, :fill=>:y, :padx=>4, :anchor=>:w)
-      }
-
-      DemoVar.prgindic.numeric += 1
-
-      Tk::BWidget::ButtonBox.new(tb1, :spacing=>0, :padx=>1, :pady=>1){|bbox|
-        add(:image=>Tk::BWidget::Bitmap.new('cut'), 
-            :highlightthickness=>0, :takefocus=>0, :relief=>:link, 
-            :borderwidth=>1, :padx=>1, :pady=>1, 
-            :command=>proc{puts 'select "Cut selection" icon'}, 
-            :helptext=>"Cut selection")
-
-        add(:image=>Tk::BWidget::Bitmap.new('copy'), 
-            :highlightthickness=>0, :takefocus=>0, :relief=>:link, 
-            :borderwidth=>1, :padx=>1, :pady=>1, 
-            :command=>proc{puts 'select "Copy selection" icon'}, 
-            :helptext=>"Copy selection")
-
-        add(:image=>Tk::BWidget::Bitmap.new('paste'), 
-            :highlightthickness=>0, :takefocus=>0, :relief=>:link, 
-            :borderwidth=>1, :padx=>1, :pady=>1, 
-            :command=>proc{puts 'select "Paste selection" icon'}, 
-            :helptext=>"Paste selection")
-
-        pack(:side=>:left, :anchor=>:w)
-      }
-    }
-
-    # toolbar 2 creation
-    DemoVar.prgindic.numeric += 1
-
-    tb2 = DemoVar.mainframe.add_toolbar
-    DemoVar._wfont = Tk::BWidget::SelectFont::Toolbar.new(tb2, 
-                       :command=>proc{update_font(DemoVar._wfont[:font])}
-                     )
-    DemoVar.font = DemoVar._wfont[:font]
-    DemoVar._wfont.pack(:side=>:left, :anchor=>:w)
-
-    DemoVar.mainframe.add_indicator(
-      :text=>"BWidget #{Tk::BWidget.package_version}"
-    )
-    DemoVar.mainframe.add_indicator(:textvariable=>'tk_patchLevel')
-
-    # NoteBook creation
-    DemoVar.notebook = Tk::BWidget::NoteBook.new(DemoVar.mainframe.get_frame)
-
-    DemoVar.prgtext.value = "Creating Manager..."
-    DemoVar.prgindic.numeric += 1
-    DemoManager.create(DemoVar.notebook)
-
-    DemoVar.prgtext.value = "Creating Basic..."
-    DemoVar.prgindic.numeric += 1
-    DemoBasic.create(DemoVar.notebook)
-
-    DemoVar.prgtext.value = "Creating Select..."
-    DemoVar.prgindic.numeric += 1
-    DemoSelect.create(DemoVar.notebook)
-
-    DemoVar.prgtext.value = "Creating Dialog..."
-    DemoVar.prgindic.numeric += 1
-    DemoDialog.create(DemoVar.notebook)
-
-    DemoVar.prgtext.value = "Creating Drag and Drop..."
-    DemoVar.prgindic.numeric += 1
-    DemoDnD.create(DemoVar.notebook)
-
-    DemoVar.prgtext.value = "Creating Tree..."
-    DemoVar.prgindic.numeric += 1
-    DemoTree.create(DemoVar.notebook)
-
-    DemoVar.prgtext.value = "Done"
-    DemoVar.prgindic.numeric += 1
-
-    DemoVar.notebook.compute_size
-    DemoVar.notebook.pack(:fill=>:both, :expand=>true, :padx=>4, :pady=>4)
-    DemoVar.notebook.raise(DemoVar.notebook.get_page(0))
-
-    DemoVar.mainframe.pack(:fill=>:both, :expand=>true)
-
-    Tk.update_idletasks
-
-    intro.destroy
-  end
-
-  def update_font(newfont)
-    root = Tk.root
-    root[:cursor] = 'watch'
-    if newfont != '' && DemoVar.font != newfont
-      DemoVar._wfont[:font] = newfont
-      DemoVar.notebook[:font] = newfont
-      DemoVar.font = newfont
-    end
-    root[:cursor] = ''
-  end
-
-  def _create_intro
-    top = TkToplevel.new(:relief=>:raised, :borderwidth=>2)
-    top.withdraw
-    top.overrideredirect(true)
-
-    ximg  = TkLabel.new(top, :bitmap=>"@#{File.join(DEMODIR,'x1.xbm')}", 
-                        :foreground=>'grey90', :background=>'white')
-    bwimg = TkLabel.new(ximg, :bitmap=>"@#{File.join(DEMODIR,'bwidget.xbm')}",
-                        :foreground=>'grey90', :background=>'white')
-    frame = TkFrame.new(ximg, :background=>'white')
-    TkLabel.new(frame, :text=>'Loading demo', 
-                :background=>'white', :font=>'times 8').pack
-    TkLabel.new(frame, :textvariable=>DemoVar.prgtext, 
-                :background=>'white', :font=>'times 8', :width=>35).pack
-    Tk::BWidget::ProgressBar.new(frame, :width=>50, :height=>10, 
-                                 :background=>'white', 
-                                 :variable=>DemoVar.prgindic, 
-                                 :maximum=>10).pack
-    frame.place(:x=>0, :y=>0, :anchor=>:nw)
-    bwimg.place(:relx=>1, :rely=>1, :anchor=>:se)
-    ximg.pack
-    Tk::BWidget.place(top, 0, 0, :center)
-    top.deiconify
-
-    top
-  end
-end
-
-module DemoVar
-  Demo = BWidget_Demo.new
-end
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/dnd.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/dnd.rb
deleted file mode 100644 (file)
index 1c8b036..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-#  dnd demo  ---  called from demo.rb
-#
-unless Object.const_defined?('DemoVar')
-  fail RuntimeError, "This is NOT a stand alone script. This script is called from 'demo.rb'. "
-end
-
-module DemoDnD
-  def self.create(nb)
-    frame = nb.insert('end', 'demoDnD', :text=>'Drag and Drop')
-
-    titf1 = Tk::BWidget::TitleFrame.new(frame, :text=>'Drag source')
-    subf = titf1.get_frame
-
-    ent1 = Tk::BWidget::LabelEntry.new(subf, :label=>'Entry', 
-                                       :labelwidth=>14, :dragenabled=>true, 
-                                       :dragevent=>3)
-    labf1 = Tk::BWidget::LabelFrame.new(subf, :text=>'Label (text)', 
-                                        :width=>14)
-    f = labf1.get_frame
-    lab = Tk::BWidget::Label.new(f, :text=>'Drag this text', 
-                                 :dragenabled=>true, :dragevent=>3).pack
-
-    labf2 = Tk::BWidget::LabelFrame.new(subf, :text=>'Label (bitmap)', 
-                                        :width=>14)
-    f = labf2.get_frame
-    lab = Tk::BWidget::Label.new(f, :bitmap=>'info', 
-                                 :dragenabled=>true, :dragevent=>3).pack
-
-    Tk.pack(ent1, labf1, labf2, :side=>:top, :fill=>:x, :pady=>4)
-
-    titf2 = Tk::BWidget::TitleFrame.new(frame, :text=>'Drop targets')
-    subf = titf2.get_frame
-
-    ent1 = Tk::BWidget::LabelEntry.new(subf, :label=>'Entry', 
-                                       :labelwidth=>14, :dropenabled=>true)
-    labf1 = Tk::BWidget::LabelFrame.new(subf, :text=>'Label', :width=>14)
-    f = labf1.get_frame
-    lab = Tk::BWidget::Label.new(f, :dropenabled=>true, 
-                                 :highlightthickness=>1).pack(:fill=>:x)
-    Tk.pack(ent1, labf1, :side=>:top, :fill=>:x, :pady=>4)
-    Tk.pack(titf1, titf2, :pady=>4)
-
-    frame
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/manager.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/manager.rb
deleted file mode 100644 (file)
index 776cb30..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-#
-#  manager demo  ---  called from demo.rb
-#
-unless Object.const_defined?('DemoVar')
-  fail RuntimeError, "This is NOT a stand alone script. This script is called from 'demo.rb'. "
-end
-
-module DemoManager
-  @@progress    = TkVariable.new(false)
-  @@status      = TkVariable.new('Compute in progress...')
-  @@homogeneous = TkVariable.new(false)
-  @@constw      = TkVariable.new
-  @@afterobj    = nil
-
-  def self.create(nb)
-    frame = nb.insert('end', 'demoManager', :text=>'Manager')
-
-    topf = TkFrame.new(frame)
-    titf1 = Tk::BWidget::TitleFrame.new(topf, :text=>"MainFrame")
-    titf2 = Tk::BWidget::TitleFrame.new(topf, :text=>"NoteBook")
-    titf3 = Tk::BWidget::TitleFrame.new(frame, :text=>"Paned & ScrolledWindow")
-
-    _mainframe(titf1.get_frame)
-    _notebook(titf2.get_frame)
-    _paned(titf3.get_frame)
-
-    Tk.pack(titf1, titf2, :padx=>4, :side=>:left, :fill=>:both, :expand=>true)
-    Tk.pack(topf, :fill=>:x, :pady=>2)
-    Tk.pack(titf3, :pady=>2, :padx=>4, :fill=>:both, :expand=>true)
-
-    frame
-  end
-
-  def self._mainframe(parent)
-    labf1 = Tk::BWidget::LabelFrame.new(parent, :text=>'Toolbar', 
-                                        :side=>:top, :anchor=>:w, 
-                                        :relief=>:sunken, :borderwidth=>2)
-    subf = labf1.get_frame
-    chk1 = TkCheckbutton.new(subf, :text=>'View toolbar 1', 
-                             :variable=>DemoVar.toolbar1, 
-                             :command=>proc{
-                               DemoVar.mainframe.show_toolbar(
-                                  0, DemoVar.toolbar1.value
-                               )
-                             })
-    chk2 = TkCheckbutton.new(subf, :text=>'View toolbar 2', 
-                             :variable=>DemoVar.toolbar2, 
-                             :command=>proc{
-                               DemoVar.mainframe.show_toolbar(
-                                  1, DemoVar.toolbar2.value
-                               )
-                             })
-
-    Tk.pack(chk1, chk2, :anchor=>:w, :fill=>:x)
-    labf1.pack(:fill=>:both)
-
-    labf2 = Tk::BWidget::LabelFrame.new(parent, :text=>'Status bar', 
-                                        :side=>:top, :anchor=>:w, 
-                                        :relief=>:sunken, :borderwidth=>2)
-    subf = labf2.get_frame
-    chk1 = TkCheckbutton.new(subf, :text=>"Show Progress\nindicator", 
-                             :justify=>:left, :variable=>@@progress, 
-                             :command=>proc{ _show_progress })
-    chk1.pack(:anchor=>:w, :fill=>:x)
-
-    Tk.pack(labf1, labf2, :side=>:left, :padx=>4, :fill=>:both)
-  end
-
-  def self._notebook(parent)
-    TkCheckbutton.new(parent, :text=>'Homogeneous label', 
-                      :variable=>@@homogeneous, 
-                      :command=>proc{
-                        DemoVar.notebook[:homogeneous] = @@homogeneous.value
-                      }).pack(:side=>:left, :anchor=>:n, :fill=>:x)
-  end
-
-  def self._paned(parent)
-    pw1   = Tk::BWidget::PanedWindow.new(parent, :side=>:top)
-    pane  = pw1.add(:minsize=>100)
-
-    pw2   = Tk::BWidget::PanedWindow.new(pane, :side=>:left)
-    pane1 = pw2.add(:minsize=>100)
-    pane2 = pw2.add(:minsize=>100)
-
-    pane3 = pw1.add(:minsize=>100)
-
-    [pane1, pane2].each{|pane|
-      sw = Tk::BWidget::ScrolledWindow.new(pane)
-      lb = TkListbox.new(sw, :height=>8, :width=>20, :highlightthickness=>0)
-      (1..8).each{|i| lb.insert('end', "Valur #{i}") }
-      sw.set_widget(lb)
-      sw.pack(:fill=>:both, :expand=>true)
-    }
-
-    sw = Tk::BWidget::ScrolledWindow.new(pane3, :relief=>:sunken, 
-                                         :borderwidth=>2)
-    sf = Tk::BWidget::ScrollableFrame.new(sw)
-    sw.set_widget(sf)
-    subf = sf.get_frame
-    lab = TkLabel.new(subf, :text=>'This is a ScrollableFrame')
-    chk = TkCheckbutton.new(subf, :text=>'Constrained with', 
-                            :variable=>@@constw, :command=>proc{
-                              sf['constrainedwidth'] = @@constw.value
-                            })
-    lab.pack
-    chk.pack(:anchor=>:w)
-    chk.bind('FocusIn', proc{sf.see(chk)})
-    (0..20).each{|i|
-      ent = TkEntry.new(subf, :width=>50).pack(:fill=>:x, :pady=>4)
-      ent.bind('FocusIn', proc{sf.see(ent)})
-      ent.insert('end', "Text field #{i}")
-    }
-
-    Tk.pack(sw, pw2, pw1, :fill=>:both, :expand=>true)
-  end
-
-  def self._show_progress
-    unless @@afterobj
-      @@afterobj = TkTimer.new(30, -1, proc{_update_progress})
-    end
-    if @@progress.bool
-      DemoVar.status.value = 'Compute in progress...'
-      DemoVar.prgindic.value = 0
-      DemoVar.mainframe.show_statusbar(:progression)
-      @@afterobj.start unless @@afterobj.running?
-    else
-      DemoVar.status.value = ''
-      DemoVar.mainframe.show_statusbar(:status)
-      @@afterobj.stop
-    end
-  end
-
-  def self._update_progress
-    if @@progress.bool
-      if DemoVar.prgindic.numeric < 100
-        DemoVar.prgindic.numeric += 5
-      else
-        @@progress.value = false
-        DemoVar.mainframe.show_statusbar(:status)
-        DemoVar.status.value = 'Done'
-        @@afterobj.stop
-        Tk.after(500, proc{ DemoVar.status.value = '' })
-      end
-    else
-      @@afterobj.stop
-    end
-  end
-
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/select.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/select.rb
deleted file mode 100644 (file)
index ea24b47..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-#
-#  select demo  ---  called from demo.rb
-#
-unless Object.const_defined?('DemoVar')
-  fail RuntimeError, "This is NOT a stand alone script. This script is called from 'demo.rb'. "
-end
-
-module DemoSelect
-  @@var = TkVariable.new_hash
-
-  def self.create(nb)
-    frame = nb.insert('end', 'demoSelect', :text=>'Spin & Combo')
-
-    titf1 = Tk::BWidget::TitleFrame.new(frame, :text=>'SpinBox')
-    subf = titf1.get_frame
-    spin = Tk::BWidget::SpinBox.new(subf, :range=>[1, 100, 1], 
-                                    :textvariable=>@@var.ref('spin', 'var'), 
-                                    :helptext=>'This is the SpinBox')
-    ent = Tk::BWidget::LabelEntry.new(subf, :label=>'Linked var', 
-                                      :labelwidth=>10, :labelanchor=>:w,  
-                                      :textvariable=>@@var.ref('spin', 'var'), 
-                                      :editable=>0, 
-                                      :helptext=>"This is an Entry reflecting\nthe linked var of SpinBox")
-    labf = Tk::BWidget::LabelFrame.new(subf, :text=>'Options', 
-                                       :side=>:top, :anchor=>:w, 
-                                       :relief=>:sunken, :borderwidth=>1, 
-                                       :helptext=>'Modify some options of SpinBox')
-    subf = labf.get_frame
-    chk1 = TkCheckbutton.new(subf, :text=>'Non editable', 
-                             :variable=>@@var.ref('spin', 'editable'), 
-                             :onvalue=>false, :offvalue=>true, 
-                             :command=>proc{
-                               spin.editable(@@var['spin', 'editable'])
-                             })
-    chk2 = TkCheckbutton.new(subf, :text=>'Disabled', 
-                             :variable=>@@var.ref('spin', 'state'), 
-                             :onvalue=>'disabled', :offvalue=>'normal', 
-                             :command=>proc{
-                               spin.state(@@var['spin', 'state'])
-                             })
-    Tk.pack(chk1, chk2, :side=>:left, :anchor=>:w)
-    Tk.pack(spin, ent, labf, :pady=>4, :fill=>:x)
-    titf1.pack
-
-    titf2 = Tk::BWidget::TitleFrame.new(frame, :text=>'ComboBox')
-    subf = titf2.get_frame
-    combo = Tk::BWidget::ComboBox.new(subf,
-                                      :textvariable=>@@var.ref('combo', 'var'),
-                                      :values=>[
-                                        'first value', 'second value', 
-                                        'third value', 'fourth value', 
-                                        'fifth value'
-                                      ], 
-                                      :helptext=>'This is the ComboBox')
-    ent = Tk::BWidget::LabelEntry.new(subf, :label=>'Linked var', 
-                                      :labelwidth=>10, :labelanchor=>:w, 
-                                      :textvariable=>@@var.ref('combo', 'var'),
-                                      :editable=>0, :helptext=>"This is an Entry reflecting\nthe linked var of ComboBox")
-    labf = Tk::BWidget::LabelFrame.new(subf, :text=>'Options', :side=>:top, 
-                                       :anchor=>:w, :relief=>:sunken, 
-                                       :borderwidth=>1, :helptext=>'Modify some options of ComboBox')
-    subf = labf.get_frame
-    chk1 = TkCheckbutton.new(subf, :text=>'Non editable', 
-                             :variable=>@@var.ref('combo', 'editable'), 
-                             :onvalue=>false, :offvalue=>true, 
-                             :command=>proc{
-                               combo.editable(@@var['combo', 'editable'])
-                             })
-    chk2 = TkCheckbutton.new(subf, :text=>'Disabled', 
-                             :variable=>@@var.ref('combo', 'state'), 
-                             :onvalue=>'disabled', :offvalue=>'normal', 
-                             :command=>proc{
-                               combo.state(@@var['combo', 'state'])
-                             })
-
-    Tk.pack(chk1, chk2, :side=>:left, :anchor=>:w)
-    Tk.pack(combo, ent, labf, :pady=>4, :fill=>:x)
-    Tk.pack(titf1, titf2, :pady=>4)
-
-    frame
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/tmpldlg.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/tmpldlg.rb
deleted file mode 100644 (file)
index 3d19c8d..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-#
-#  templdlg demo  ---  called from demo.rb
-#
-unless Object.const_defined?('DemoVar')
-  fail RuntimeError, "This is NOT a stand alone script. This script is called from 'demo.rb'. "
-end
-
-module DemoDialog
-  @@tmpl      = TkVariable.new_hash
-  @@msg       = TkVariable.new_hash
-  @@msgdlg    = nil
-  @@progmsg   = TkVariable.new
-  @@progval   = TkVariable.new
-  @@progdlg   = nil
-  @@resources = TkVariable.new('en')
-
-  def self.create(nb)
-    frame = nb.insert('end', 'demoDlg', :text=>'Dialog')
-
-    titf1 = Tk::BWidget::TitleFrame.new(frame, :text=>'Resources')
-    titf2 = Tk::BWidget::TitleFrame.new(frame, :text=>'Template Dialog')
-    titf3 = Tk::BWidget::TitleFrame.new(frame, :text=>'Message Dialog')
-    titf4 = Tk::BWidget::TitleFrame.new(frame, :text=>'Other dialog')
-
-    subf = titf1.get_frame
-    cmd = proc{ TkOption.read_file(File.join(Tk::BWidget::LIBRARY, 'lang', 
-                                             @@resources.value + '.rc')) }
-    Tk.pack(TkRadiobutton.new(subf, :text=>'English', :value=>'en', 
-                              :variable=>@@resources, :command=>cmd), 
-            TkRadiobutton.new(subf, :text=>'French', :value=>'fr', 
-                              :variable=>@@resources, :command=>cmd), 
-            TkRadiobutton.new(subf, :text=>'German', :value=>'de', 
-                              :variable=>@@resources, :command=>cmd), 
-            :side=>:left)
-
-    _tmpldlg(titf2.get_frame)
-    _msgdlg(titf3.get_frame)
-    _stddlg(titf4.get_frame)
-
-    titf1.pack(:fill=>:x, :pady=>2, :padx=>2)
-    titf4.pack(:side=>:bottom, :fill=>:x, :pady=>2, :padx=>2)
-    Tk.pack(titf2, titf3, :side=>:left, :padx=>2, :fill=>:both, :expand=>true)
-  end
-
-  def self._tmpldlg(parent)
-    @@tmpl['side'] = :bottom
-    @@tmpl['anchor'] = :c
-
-    labf1 = Tk::BWidget::LabelFrame.new(parent, :text=>'Button side', 
-                                        :side=>:top, :anchor=>:w, 
-                                        :relief=>:sunken, :borderwidth=>1)
-    subf = labf1.get_frame
-    Tk.pack(TkRadiobutton.new(subf, :text=>'Bottom', :value=>:bottom, 
-                              :variable=>@@tmpl.ref('side'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'Left', :value=>:left, 
-                              :variable=>@@tmpl.ref('side'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'Right', :value=>:right, 
-                              :variable=>@@tmpl.ref('side'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'Top', :value=>:top, 
-                              :variable=>@@tmpl.ref('side'), :anchor=>:w), 
-            :fill=>:x, :anchor=>:w)
-
-    labf2 = Tk::BWidget::LabelFrame.new(parent, :text=>'Button anchor', 
-                                        :side=>:top, :anchor=>:w, 
-                                        :relief=>:sunken, :borderwidth=>1)
-    subf = labf2.get_frame
-    Tk.pack(TkRadiobutton.new(subf, :text=>'North', :value=>:n, 
-                              :variable=>@@tmpl.ref('anchor'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'West', :value=>:w, 
-                              :variable=>@@tmpl.ref('anchor'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'East', :value=>:e, 
-                              :variable=>@@tmpl.ref('anchor'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'South', :value=>:s, 
-                              :variable=>@@tmpl.ref('anchor'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'Center', :value=>:c, 
-                              :variable=>@@tmpl.ref('anchor'), :anchor=>:w), 
-            :fill=>:x, :anchor=>:w)
-
-    sep = Tk::BWidget::Separator.new(parent, :orient=>:horizontal)
-    button = TkButton.new(parent, :text=>'Show', :command=>proc{_show_tmpldlg})
-
-    button.pack(:side=>:bottom)
-    sep.pack(:side=>:bottom, :fill=>:x, :pady=>10)
-    Tk.pack(labf1, labf2, :side=>:left, :padx=>4, :anchor=>:n)
-  end
-
-  def self._msgdlg(parent)
-    @@msg['type'] = 'ok'
-    @@msg['icon'] = 'info'
-
-    labf1 = Tk::BWidget::LabelFrame.new(parent, :text=>'Type', :side=>:top, 
-                                        :anchor=>:w, :relief=>:sunken, 
-                                        :borderwidth=>1)
-    subf = labf1.get_frame
-    Tk.pack(TkRadiobutton.new(subf, :text=>'Ok', :value=>'ok', 
-                              :variable=>@@msg.ref('type'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'Ok, Cancel', :value=>'okcancel', 
-                              :variable=>@@msg.ref('type'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'Retry, Cancel', 
-                              :value=>'retrycancel', 
-                              :variable=>@@msg.ref('type'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'Yes, No', :value=>'yesno', 
-                              :variable=>@@msg.ref('type'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'Yes, No, Cancel', 
-                              :value=>'yesnocancel', 
-                              :variable=>@@msg.ref('type'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'Abort, Retry, Ignore', 
-                              :value=>'abortretryignore', 
-                              :variable=>@@msg.ref('type'), :anchor=>:w), 
-            :fill=>:x, :anchor=>:w)
-
-    Tk.pack(TkRadiobutton.new(subf, :text=>'User', :value=>'user', 
-                              :variable=>@@msg.ref('type'), :anchor=>:w), 
-            Tk::BWidget::Entry.new(subf, :textvariable=>@@msg.ref('buttons')),
-            :side=>:left)
-
-    labf2 = Tk::BWidget::LabelFrame.new(parent, :text=>'Icon', :side=>:top, 
-                                        :anchor=>:w, :relief=>:sunken, 
-                                        :borderwidth=>1)
-    subf = labf2.get_frame
-    Tk.pack(TkRadiobutton.new(subf, :text=>'Information', :value=>'info', 
-                              :variable=>@@msg.ref('icon'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'Question',    :value=>'question', 
-                              :variable=>@@msg.ref('icon'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'Warning',     :value=>'warning', 
-                              :variable=>@@msg.ref('icon'), :anchor=>:w), 
-            TkRadiobutton.new(subf, :text=>'Error',       :value=>'error', 
-                              :variable=>@@msg.ref('icon'), :anchor=>:w), 
-            :fill=>:x, :anchor=>:w)
-
-    sep = Tk::BWidget::Separator.new(parent, :orient=>:horizontal)
-    button = TkButton.new(parent, :text=>'Show', :command=>proc{_show_msgdlg})
-
-    button.pack(:side=>:bottom)
-    sep.pack(:side=>:bottom, :fill=>:x, :pady=>10)
-    Tk.pack(labf1, labf2, :side=>:left, :padx=>4, :anchor=>:n)
-  end
-
-  def self._stddlg(parent)
-    Tk.pack(TkButton.new(parent, :text=>'Select a color '){|w|
-              command(proc{DemoDialog._show_color(w)})
-            }, 
-            TkButton.new(parent, :text=>'Font selector dialog', 
-                         :command=>proc{_show_fontdlg}), 
-            TkButton.new(parent, :text=>'Progression dialog', 
-                         :command=>proc{_show_progdlg}), 
-            TkButton.new(parent, :text=>'Password dialog', 
-                         :command=>proc{_show_passdlg}), 
-            :side=>:left, :padx=>5, :anchor=>:w)
-  end
-
-  def self._show_color(w)
-    dlg = Tk::BWidget::SelectColor.new(w, :color=>w.background)
-    color = dlg.menu([:below, w])
-    unless color.empty?
-      w.background(color)
-    end
-  end
-
-  def self._show_tmpldlg
-    dlg = Tk::BWidget::Dialog.new(:relative=>Tk.root, :modal=>:local, 
-                                  :separator=>true, :title=>'Template dialog', 
-                                  :side=>@@tmpl['side'], 
-                                  :anchor=>@@tmpl['anchor'], 
-                                  :default=>0, :cancel=>1)
-    dlg.add('name'=>'ok')
-    dlg.add('name'=>'cancel')
-    TkMessage.new(dlg.get_frame, :text=>"Template\nDialog", :justify=>:center, 
-                  :anchor=>:c, :width=>80).pack(:fill=>:both, :expand=>true, 
-                                                :padx=>100, :pady=>100)
-    dlg.draw
-    dlg.destroy
-  end
-
-  def self._show_msgdlg
-    @@msgdlg.destroy if @@msgdlg
-    @@msgdlg = Tk::BWidget::MessageDlg.new(:relative=>Tk.root, 
-                                           :message=>'Message for MessageBox', 
-                                           :type=>@@msg['type'], 
-                                           :icon=>@@msg['icon'], 
-                                           :buttons=>@@msg['buttons'])
-    @@msgdlg.create
-  end
-
-  def self._show_fontdlg
-    font = Tk::BWidget::SelectFont.new(:relative=>Tk.root, 
-                                       :font=>DemoVar.font).create
-    DemoVar::Demo.update_font(font)
-  end
-
-  def self._show_progdlg
-    @@progmsg.value = "Compute in progress..."
-    @@progval.value = 0
-
-    @@progdlg = Tk::BWidget::ProgressDlg.new(:relative=>Tk.root, 
-                                             :title=>'Wait...', 
-                                             :type=>'infinite', :width=>20, 
-                                             :textvariable=>@@progmsg, 
-                                             :variable=>@@progval, 
-                                             :stop=>'Stop') {
-      command(proc{self.destroy})
-      create
-    }
-    _update_progdlg
-  end
-
-  def self._update_progdlg
-    TkTimer.new(20, -1, proc{
-                  if @@progdlg && @@progdlg.winfo_exist?
-                    @@progval.value = 2
-                  else
-                    stop
-                  end
-                }).start
-  end
-
-  def self._show_passdlg
-    Tk::BWidget::PasswdDlg.new(:relative=>Tk.root).create
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/tree.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/tree.rb
deleted file mode 100644 (file)
index e1fcaa7..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-#
-#  templdlg demo  ---  called from demo.rb
-#
-unless Object.const_defined?('DemoVar')
-  fail RuntimeError, "This is NOT a stand alone script. This script is called from 'demo.rb'. "
-end
-
-module DemoTree
-  @@count = 0
-  @@dblclick = false
-  @@top = nil
-
-  def self.create(nb)
-    frame = nb.insert('end', 'demoTree', :text=>'Tree')
-    pw = Tk::BWidget::PanedWindow.new(frame, :side=>:top)
-
-    pane = pw.add(:weight=>1)
-    title = Tk::BWidget::TitleFrame.new(pane, :text=>'Directory tree')
-    sw = Tk::BWidget::ScrolledWindow.new(title.get_frame, 
-                                         :relief=>:sunken, :borderwidth=>2)
-    tree = Tk::BWidget::Tree.new(sw, :relief=>:flat, :borderwidth=>0, 
-                                 :width=>15, :highlightthickness=>0, 
-                                 :redraw=>false, :dropenabled=>true, 
-                                 :dragenabled=>true, :dragevent=>3, 
-                                 :droptypes=>[
-                                   'TREE_NODE', [
-                                     :copy, [], 
-                                     :move, [],
-                                     :link, []
-                                   ], 
-                                   'LISTBOX_ITEM', [
-                                     :copy, [], 
-                                     :move, [],
-                                     :link, []
-                                   ]
-                                 ], 
-                                 :opencmd=>proc{|node| 
-                                   moddir(1, tree, node)
-                                 }, 
-                                 :closecmd=>proc{|node| 
-                                   moddir(0, tree, node)
-                                 })
-    sw.set_widget(tree)
-
-    sw.pack(:side=>:top, :expand=>true, :fill=>:both)
-    title.pack(:fill=>:both, :expand=>true)
-
-    pane = pw.add(:weight=>2)
-    lf = Tk::BWidget::TitleFrame.new(pane, :text=>'Content')
-    sw = Tk::BWidget::ScrolledWindow.new(lf.get_frame, 
-                                         :scrollbar=>:horizontal, 
-                                         :auto=>:none, :relief=>:sunken, 
-                                         :borderwidth=>2)
-
-    list = Tk::BWidget::ListBox.new(sw, :relief=>:flat, :borderwidth=>0, 
-                                    :highlightthickness=>0, :width=>20, 
-                                    :multicolumn=>true, :redraw=>false, 
-                                    :dragevent=>3, :dropenabled=>true, 
-                                    :dragenabled=>true, 
-                                 :droptypes=>[
-                                      'TREE_NODE', [
-                                        :copy, [], 
-                                        :move, [],
-                                        :link, []
-                                      ], 
-                                      'LISTBOX_ITEM', [
-                                        :copy, [], 
-                                        :move, [],
-                                        :link, []
-                                      ]
-                                    ])
-    sw.set_widget(list)
-
-    Tk.pack(sw, lf, :fill=>:both, :expand=>true)
-
-    pw.pack(:fill=>:both, :expand=>true)
-
-    tree.textbind('ButtonPress-1',
-                  proc{|node, ev| select('tree', 1, tree, list, node)})
-    tree.textbind('Double-ButtonPress-1', 
-                  proc{|node, ev| select('tree', 2, tree, list, node)})
-
-    list.textbind('ButtonPress-1',
-                  proc{|node, ev| select('list', 1, tree, list, node)})
-    list.textbind('Double-ButtonPress-1', 
-                  proc{|node, ev| select('list', 2, tree, list, node)})
-
-    list.imagebind('Double-ButtonPress-1', 
-                   proc{|node, ev| select('list', 2, tree, list, node)})
-
-    nb.itemconfigure('demoTree', 
-                     :createcmd=>proc{|*args| init(tree, list, *args)}, 
-                     :raisecmd=>proc{
-                       Tk.root.geometry =~ 
-                         /\d+x\d+([+-]{1,2}\d+)([+-]{1,2}\d+)/
-                       global_w = ($1 || 0).to_i
-                       global_h = ($2 || 0).to_i
-                       if @@top
-                         Tk::BWidget.place(@@top, 0, 0, :at, 
-                            global_w - Tk.root.winfo_screenwidth, global_h)
-                         @@top.deiconify
-                         Tk.root.bind('Unmap', proc{@@top.withdraw})
-                         Tk.root.bind('Map',   proc{@@top.deiconify})
-                         Tk.root.bind('Configure', proc{|w|
-                                if w == Tk.root
-                                  Tk.root.geometry =~ 
-                                    /\d+x\d+([+-]{1,2}\d+)([+-]{1,2}\d+)/
-                                  global_w = ($1 || 0).to_i
-                                  global_h = ($2 || 0).to_i
-                                  Tk::BWidget.place(@@top, 0, 0, :at, 
-                                       global_w - Tk.root.winfo_screenwidth, 
-                                       global_h)
-                                end
-                         }, '%W')
-                       end
-                     }, 
-                     :leavecmd=>proc{
-                       @@top.withdraw if @@top
-                       Tk.root.bind_remove('Unmap')
-                       Tk.root.bind_remove('Map')
-                       Tk.root.bind_remove('Configure')
-                       true
-                     })
-  end
-
-  def self.init(tree, list, *args)
-    @@count = 0
-    if Tk::PLATFORM['platform'] == 'unix'
-      rootdir = File.expand_path('~')
-    else
-      rootdir = 'c:'
-    end
-
-    tree.insert('end', 'root', 'home', 
-                :text=>rootdir, :data=>rootdir, :open=>true, 
-                :image=>Tk::BWidget::Bitmap.new('openfold'))
-    getdir(tree, 'home', rootdir)
-    select('tree', 1, tree, list, 'home')
-    tree.redraw(true)
-    list.redraw(true)
-
-    @@top = TkToplevel.new
-    @@top.withdraw
-    @@top.protocol('WM_DELETE_WINDOW'){
-      # don't kill me
-    }
-    @@top.resizable(false, false)
-    @@top.title('Drag rectangle to scroll directory tree')
-    @@top.transient(Tk.root)
-    Tk::BWidget::ScrollView.new(@@top, :window=>tree, :fill=>'white', 
-                                :width=>300, :height=>300, :relief=>:sunken, 
-                                :bd=>1).pack(:fill=>:both, :expand=>true)
-  end
-
-  def self.getdir(tree, node, path)
-    lentries = Dir.glob(File.join(path, '*')).sort
-    lfiles = []
-    lentries.each{|f|
-      basename = File.basename(f)      
-      if File.directory?(f)
-        Tk::BWidget::Tree::Node.new(tree, node, 
-                                    :index=>'end', :text=>basename, 
-                                    :image=>Tk::BWidget::Bitmap.new('folder'), 
-                                    :drawcross=>:allways, :data=>f)
-        @@count += 1
-      else
-        lfiles << basename
-      end
-    }
-    tree.itemconfigure(node, :drawcross=>:auto, :data=>lfiles)
-  end
-
-  def self.moddir(idx, tree, node)
-    if (idx != 0 && tree.itemcget(node, :drawcross).to_s == 'allways')
-      getdir(tree, node, tree.itemcget(node, :data))
-      if tree.nodes(node).empty?
-        tree.itemconfigure(node, :image=>Tk::BWidget::Bitmap.new('folder'))
-      else
-        tree.itemconfigure(node, :image=>Tk::BWidget::Bitmap.new('openfold'))
-      end
-    else
-      img = %w(folder openfold)[idx] || 'openfold'
-      tree.itemconfigure(node, :image=>Tk::BWidget::Bitmap.new(img))
-    end
-  end
-
-  def self.select(where, num, tree, list, node)
-    @@dblclick = true
-    if num == 1
-      if (where == 'tree' && 
-          tree.selection_get.find{|x|
-            TkUtil._get_eval_string(x) == TkUtil._get_eval_string(node)
-          })
-        @@dblclick = false
-        Tk.after(500, proc{edit('tree', tree, list, node)})
-        return
-      end
-      if (where == 'list' && 
-          list.selection_get.find{|x|
-            TkUtil._get_eval_string(x) == TkUtil._get_eval_string(node)
-          })
-        @@dblclick = false
-        Tk.after(500, proc{edit('list', tree, list, node)})
-        return
-      end
-      if where == 'tree'
-        select_node(tree, list, node)
-      else
-        list.selection_set(node)
-      end
-    elsif (where == 'list' && tree.exist?(node))
-      parent = tree.parent(node)
-      while TkUtil._get_eval_string(parent) != 'root'
-        tree.itemconfigure(parent, :open=>true)
-        parent = tree.parent(parent)
-      end
-      select_node(tree, list, node)
-    end
-  end
-
-  def self.select_node(tree, list, node)
-    tree.selection_set(node)
-    Tk.update
-    list.delete(*(list.items(0, 'end')))
-
-    dir = tree.itemcget(node, :data)
-    if tree.itemcget(node, :drawcross).to_s == 'allways'
-      getdir(tree, node, dir)
-      dir = tree.itemcget(node, :data)
-    end
-
-    tree.nodes(node).each{|subnode|
-      list.insert('end', subnode, 
-                  :text=>tree.itemcget(subnode, :text), 
-                  :image=>Tk::BWidget::Bitmap.new('folder'))
-    }
-
-    TkComm.simplelist(dir).each{|f|
-      Tk::BWidget::ListBox::Item.new(list, 'end', :text=>f, 
-                                     :image=>Tk::BWidget::Bitmap.new('file'))
-    }
-  end
-
-  def self.edit(where, tree, list, node)
-    return if @@dblclick
-
-    if (where == 'tree' && 
-        tree.selection_get.find{|x|
-          TkUtil._get_eval_string(x) == TkUtil._get_eval_string(node)
-        })
-      res = tree.edit(node, tree.itemcget(node, :text))
-      if res != ''
-        tree.itemconfigure(node, :text=>res)
-        if list.exist?(node)
-          list.itemconfigure(node, :text=>res)
-        end
-        tree.selection_set(node)
-      end
-      return
-    end
-
-    if (where == 'list')
-      res = list.edit(node, list.igemcget(node, :text))
-      if res != ''
-        list.itemconfigure(node, :text=>res)
-        if tree.exist?(node)
-          tree.itemconfigure(node, :text=>res)
-        else
-          cursel = tree.selection_get[0]
-          index  = list.index(node) - tree.nodes(cursel).size
-          data   = TkComm.simplelist(tree.itemcget(cursel, :data))
-          data[index] = res
-          tree.itemconfigure(cursel, :date=>data)
-        end
-        list.selection_set(node)
-      end
-    end
-  end
-
-  def self.expand(tree, but)
-    unless (cur = tree.selection_get).empty?
-      if TkComm.bool(but)
-        tree.opentree(cur)
-      else
-        tree.closetree(cur)
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/x1.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/bwidget/x1.xbm
deleted file mode 100644 (file)
index 6137a11..0000000
+++ /dev/null
@@ -1,2258 +0,0 @@
-#define x1_width 626
-#define x1_height 428
-static char x1_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x03,0x80,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xe0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x80,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
- 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfc,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x3f,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
- 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
- 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xfc,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x07,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x1f,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x3f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xfc,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x03,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xfc,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x0f,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x0f,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0xf8,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xfc,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
- 0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x3f,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0xfc,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
- 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfe,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfe,0xff,
- 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfc,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0x07,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x01,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x03,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
- 0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfc,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
- 0x00,0x00,0x00,0x00,0xfe,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfc,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
- 0xff,0xff,0xff,0x01,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x80,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x07,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xc0,0xff,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x07,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf8,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
- 0xe0,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xfc,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
- 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0x00,0x00,0x00,0x00,0xf8,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x0f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
- 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0xfe,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
- 0x00,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x80,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xc0,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
- 0xff,0x3f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xfe,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x1f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
- 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x07,0x00,
- 0x00,0x00,0xe0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x80,
- 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x07,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
- 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
- 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
- 0xf8,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0x03,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
- 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
- 0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x1f,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
- 0xff,0x1f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x07,0x00,0x00,0x00,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x07,0x00,
- 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0xff,0x03,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0x01,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x01,0x00,0x00,0x00,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x07,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x00,
- 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0x7f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0x7f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
- 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3f,0x00,0x00,0x00,0xe0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x0f,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,
- 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x07,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x80,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x1f,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,
- 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x3f,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x06,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xf0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,
- 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xfd,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,
- 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0xfc,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,0x00,0x00,0x00,
- 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0xfc,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00,0x00,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xfc,0x00,0x00,
- 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x0f,0xfc,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x0f,0xfc,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0xfc,0x00,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0xfc,0x00,
- 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x07,0xfc,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x07,0xfc,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfc,0x00,0x00,0x00,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfc,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0xfc,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfc,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfc,0x00,0x00,0x00,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0xfc,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0xfc,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xfc,0x00,0x00,0x80,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xfc,0x00,0x00,
- 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x00,0xfc,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0xfc,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0x00,0x00,0xe0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0x00,
- 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x1f,0x00,0xfc,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0xfc,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xfc,0x00,0x00,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xfc,
- 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x0f,0x00,0xfc,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xfc,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xfc,0x00,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
- 0xfc,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0xfc,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xfc,0x00,0x80,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xfc,0x00,0x80,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0xfc,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0xfc,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xfc,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xfc,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0x00,0x00,0xfc,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0xfc,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xfc,0x00,0xf0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xfc,
- 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x0f,0x00,0x00,0xfc,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfc,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfc,0x00,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
- 0xfc,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x03,0x00,0x00,0xfc,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
- 0x00,0xfc,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0x00,0x00,0x00,0xfc,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xfc,0x00,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xfc,0x80,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
- 0x00,0x00,0xfc,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x1f,0x00,0x00,0x00,0xfc,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfc,0xc0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfc,
- 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
- 0x00,0x00,0x00,0xfc,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0xe0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
- 0xfc,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x01,0x00,0x00,0x00,0xfc,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
- 0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfc,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x07,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,
- 0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x0f,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
- 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0x00,0x00,0x00,0xc0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x01,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xe0,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x80,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xf8,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xfc,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
- 0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x01,0x00,0x00,0x00,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x80,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x80,0xff,0x7f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x80,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x80,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xe0,0xff,0xff,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
- 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x07,0x00,0x00,0x00,0xf8,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0xff,
- 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
- 0x00,0x00,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0xe0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,
- 0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
- 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xf8,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
- 0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xf0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x03,0x00,
- 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
- 0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x01,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x3f,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x3f,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0xff,0xff,0x1f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x0f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0x01,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
- 0x01,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xe0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfe,0x7f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xc0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x80,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x80,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x03,0x00,
- 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xf0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xe0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x7f,0x00,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xf8,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xf0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x7f,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0x1f,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
- 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xc0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x80,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xf8,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
- 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x07,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,
- 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
- 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,
- 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf8,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x1f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf8,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
- 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
- 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x80,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x80,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xc0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x80,
- 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xfc};
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/Orig_LICENSE.txt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/Orig_LICENSE.txt
deleted file mode 100644 (file)
index 22f7876..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-
-  #######################################################################
-  ###  The following text is the original 'license.terms' of iwidges  ###
-  ###  extension.                                                     ###
-  ###  Original Tcl source files are not include in this directry,    ###
-  ###  because of all of them are rewrited to Ruby files.             ###
-  ###  However, the image data files in the 'images' directory are    ###
-  ###  quoted from iwidgets source archive.                           ###
-  #######################################################################
-
-
-This software is copyrighted by DSC Technologies and private individual 
-contributors.  The copyright holder is specifically listed in the header 
-of each file.  The following terms apply to all files associated with the
-software unless explicitly disclaimed in individual files by private
-contributors.
-
-Copyright 1997 DSC Technologies Corporation
-
-Permission to use, copy, modify, distribute and license this software and 
-its documentation for any purpose, and without fee or written agreement 
-with DSC, is hereby granted, provided that the above copyright notice 
-appears in all copies and that both the copyright notice and warranty 
-disclaimer below appear in supporting documentation, and that the names of
-DSC Technologies Corporation or DSC Communications Corporation not be used 
-in advertising or publicity pertaining to the software without specific, 
-written prior permission.
-
-DSC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, AND NON-INFRINGEMENT.
-THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND 
-DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
-ENHANCEMENTS, OR MODIFICATIONS. IN NO EVENT SHALL DSC BE LIABLE FOR ANY
-SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
-RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
-CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN
-CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-RESTRICTED RIGHTS: Use, duplication or disclosure by the government
-is subject to the restrictions as set forth in subparagraph (c) (1) (ii)
-of the Rights in Technical Data and Computer Software Clause as DFARS
-252.227-7013 and FAR 52.227-19.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/box.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/box.xbm
deleted file mode 100644 (file)
index 7498e15..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#define Tool_32_box_width 32
-#define Tool_32_box_height 32
-static unsigned char Tool_32_box_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x20, 0x00, 0x00, 0x08,
-  0x20, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x08,
-  0x20, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x08,
-  0x20, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x08,
-  0x20, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x08,
-  0x20, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x08, 0x20, 0x00, 0x00, 0x08,
-  0xe0, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/clear.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/clear.gif
deleted file mode 100644 (file)
index bd45628..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/clear.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/close.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/close.gif
deleted file mode 100644 (file)
index f91b9e9..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/close.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/copy.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/copy.gif
deleted file mode 100644 (file)
index 7319f1d..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/copy.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/cut.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/cut.gif
deleted file mode 100644 (file)
index 4258b17..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/cut.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/exit.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/exit.gif
deleted file mode 100644 (file)
index e462be0..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/exit.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/find.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/find.gif
deleted file mode 100644 (file)
index dddcb80..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/find.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/help.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/help.gif
deleted file mode 100644 (file)
index bc8f18c..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/help.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/line.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/line.xbm
deleted file mode 100644 (file)
index 4622ae9..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#define lineOp_width 32
-#define lineOp_height 32
-static unsigned char lineOp_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
-   0xf0, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00,
-   0x80, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
-   0x00, 0x3c, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00,
-   0x00, 0xe0, 0x01, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x80, 0x07, 0x00,
-   0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3c, 0x00,
-   0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xe0, 0x01,
-   0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x0f,
-   0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/mag.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/mag.gif
deleted file mode 100644 (file)
index 4a5be66..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/mag.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/new.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/new.gif
deleted file mode 100644 (file)
index 9c68ad3..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/new.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/open.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/open.gif
deleted file mode 100644 (file)
index bed862c..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/open.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/oval.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/oval.xbm
deleted file mode 100644 (file)
index 856bd43..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#define ovalOp_width 32
-#define ovalOp_height 32
-static unsigned char ovalOp_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, 0x00,
-   0x00, 0x1c, 0x70, 0x00, 0x00, 0x03, 0x80, 0x01, 0x80, 0x00, 0x00, 0x02,
-   0x40, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x10,
-   0x10, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x20,
-   0x08, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x10,
-   0x10, 0x00, 0x00, 0x10, 0x20, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x04,
-   0x80, 0x00, 0x00, 0x02, 0x00, 0x03, 0x80, 0x01, 0x00, 0x1c, 0x70, 0x00,
-   0x00, 0xe0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/paste.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/paste.gif
deleted file mode 100644 (file)
index 9974f23..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/paste.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/points.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/points.xbm
deleted file mode 100644 (file)
index c50aa4c..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#define dotPencilOp_width 32
-#define dotPencilOp_height 32
-static unsigned char dotPencilOp_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x12, 0x00,
-  0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x80, 0x04, 0x00,
-  0x00, 0x80, 0x04, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00,
-  0x00, 0x20, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x90, 0x00, 0x00,
-  0x00, 0x90, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00,
-  0x00, 0x24, 0x00, 0x18, 0x00, 0x24, 0x00, 0x18, 0x00, 0x12, 0x00, 0x00,
-  0x00, 0x12, 0x00, 0x30, 0x00, 0x0e, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00,
-  0x00, 0x06, 0x0c, 0x30, 0x00, 0x00, 0x0c, 0x30, 0x00, 0x30, 0xa0, 0x01,
-  0x00, 0x60, 0xb0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/poly.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/poly.gif
deleted file mode 100644 (file)
index 2b595bb..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/poly.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/print.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/print.gif
deleted file mode 100644 (file)
index d321f17..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/print.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/ruler.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/ruler.gif
deleted file mode 100644 (file)
index 00d26fe..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/ruler.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/save.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/save.gif
deleted file mode 100644 (file)
index d1ceb1a..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/save.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/select.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/select.gif
deleted file mode 100644 (file)
index f885c9c..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/select.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/text.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/catalog_demo/images/text.xbm
deleted file mode 100644 (file)
index ffb0686..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#define font_edit_width 32
-#define font_edit_height 32
-static unsigned char font_edit_bits[] = {
-  0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1c,
-  0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x80, 0x7b,
-  0x00, 0x00, 0x80, 0x7e, 0x00, 0x00, 0xc0, 0xfd, 0x00, 0x00, 0x60, 0xfb,
-  0x00, 0x00, 0xb0, 0xf7, 0x00, 0x00, 0xd0, 0xef, 0x00, 0x00, 0xf8, 0xdf,
-  0x00, 0x00, 0xd4, 0x7f, 0x00, 0x00, 0xaa, 0x1f, 0x00, 0x00, 0x15, 0x0f,
-  0x00, 0x80, 0x82, 0x06, 0x03, 0x40, 0x01, 0x01, 0x07, 0xa0, 0x80, 0x00,
-  0x0f, 0x10, 0x40, 0x00, 0x1f, 0x08, 0x20, 0x00, 0x3b, 0xe4, 0x1f, 0x00,
-  0x73, 0x1a, 0x00, 0x00, 0xe3, 0x07, 0x00, 0x00, 0xc3, 0x01, 0x00, 0x00,
-  0xe3, 0x03, 0x00, 0x00, 0x7b, 0x07, 0x00, 0x00, 0x1f, 0x06, 0x00, 0x00,
-  0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
-  0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/buttonbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/buttonbox.rb
deleted file mode 100644 (file)
index 2b7cd45..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-# sample 1
-p bb1 = Tk::Iwidgets::Buttonbox.new
-p bb1.add('Yes',   :text=>'Yes',   :command=>proc{puts 'Yes'})
-p bb1.add('No',    :text=>'No',    :command=>proc{puts 'No'})
-p bb1.add('Maybe', :text=>'Maybe', :command=>proc{puts 'Maybe'})
-bb1.default('Yes')
-bb1.pack(:expand=>true, :fill=>:both, :pady=>5)
-print "\n"
-
-# sample 2
-p bb2 = Tk::Iwidgets::Buttonbox.new
-p btn1 = bb2.add(:text=>'Yes',   :command=>proc{puts 'Yes'})
-p btn2 = bb2.add(:text=>'No',    :command=>proc{puts 'No'})
-p btn3 = bb2.add(:text=>'Maybe', :command=>proc{puts 'Maybe'})
-bb2.default(btn1)
-bb2.pack(:expand=>true, :fill=>:both, :pady=>5)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/calendar.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/calendar.rb
deleted file mode 100644 (file)
index 4dd929c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Calendar.new(:command=>proc{|arg| puts(arg.date)}, 
-                           :weekendbackground=>'mistyrose', 
-                           :weekdaybackground=>'ghostwhite', 
-                           :outline=>'black', :startday=>'wednesday', 
-                           :days=>%w(We Th Fr Sa Su Mo Tu)).pack
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/canvasprintbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/canvasprintbox.rb
deleted file mode 100644 (file)
index c7c0430..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Canvasprintbox.new(:orient=>:landscape, :stretch=>1) \
-  .pack(:padx=>10, :pady=>10, :fill=>:both, :expand=>true)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/canvasprintdialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/canvasprintdialog.rb
deleted file mode 100644 (file)
index ea8d63e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Canvasprintdialog.new.activate
-
-Tk.mainloop
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/checkbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/checkbox.rb
deleted file mode 100644 (file)
index bae0eba..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-cb = Tk::Iwidgets::Checkbox.new
-cb.add('bold',      :text=>'Bold')
-cb.add('italic',    :text=>'Italic')
-cb.add('underline', :text=>'Underline')
-cb.select('underline')
-cb.pack(:expand=>true, :fill=>:both, :padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/combobox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/combobox.rb
deleted file mode 100644 (file)
index ec9c7a1..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-#
-# Non-editable Dropdown Combobox
-#
-cb1 = Tk::Iwidgets::Combobox.new(:labeltext=>'Month:', 
-                                 :selectioncommand=>proc{
-                                   puts(cb1.get_curselection)
-                                 }, 
-                                 :editable=>false, :listheight=>185, 
-                                 :popupcursor=>'hand1')
-
-cb1.insert_list('end', *%w(Jan Feb Mar Apr May June Jul Aug Sept Oct Nov Dec))
-
-
-#
-# Editable Dropdown Combobox
-#
-cb2 = Tk::Iwidgets::Combobox.new(:labeltext=>'Operating System:', 
-                                 :selectioncommand=>proc{
-                                   puts(cb2.get_curselection)
-                                 })
-
-cb2.insert_list('end', *%w(Linux HP-UX SunOS Solaris Irix))
-cb2.insert_entry('end', 'L')
-
-cb1.pack(:padx=>10, :pady=>10, :fill=>:x)
-cb2.pack(:padx=>10, :pady=>10, :fill=>:x)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/dateentry.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/dateentry.rb
deleted file mode 100644 (file)
index 5727879..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Dateentry.new.pack
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/datefield.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/datefield.rb
deleted file mode 100644 (file)
index 12d4982..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-df = Tk::Iwidgets::Datefield.new(:command=>proc{puts(df.get)})
-df.pack(:fill=>:x, :expand=>true, :padx=>10,  :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/dialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/dialog.rb
deleted file mode 100644 (file)
index 3449cd4..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Thread.new{Tk.mainloop}
-
-d = Tk::Iwidgets::Dialog.new(:modality=>:application)
-
-d.buttonconfigure('OK', :command=>proc{puts 'OK'; d.deactivate true})
-d.buttonconfigure('Apply', :command=>proc{puts 'Apply'})
-d.buttonconfigure('Cancel', :command=>proc{puts 'Cancel'; d.deactivate false})
-d.buttonconfigure('Help', :command=>proc{puts 'Help'})
-
-TkListbox.new(d.child_site, :relief=>:sunken).pack(:expand=>true, :fill=>:both)
-
-if TkComm.bool(d.activate)
-  puts "Exit via OK button"
-else
-  puts "Exit via Cancel button"
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/dialogshell.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/dialogshell.rb
deleted file mode 100644 (file)
index 197521e..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-ds = Tk::Iwidgets::Dialogshell.new(:modality=>:none)
-
-ds.add('OK', :text=>'OK', :command=>proc{puts 'OK'; ds.deactivate})
-ds.add('Cancel', :text=>'Cancel', :command=>proc{puts 'Cancel'; ds.deactivate})
-ds.default('OK')
-
-TkButton.new(:text=>'ACTIVATE', :padx=>7, :pady=>7, 
-             :command=>proc{puts ds.activate}).pack(:padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/disjointlistbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/disjointlistbox.rb
deleted file mode 100644 (file)
index 85c5d03..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-djl = Tk::Iwidgets::Disjointlistbox.new.pack(:fill=>:both, :expand=>true, 
-                                             :padx=>10,  :pady=>10)
-djl.set_lhs(*[0,2,4,5])
-djl.set_rhs(3,6)
-
-djl.insert_lhs(1,7,8)
-djl.insert_rhs(9)
-
-p djl.get_lhs
-p djl.get_rhs
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/entryfield-1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/entryfield-1.rb
deleted file mode 100644 (file)
index 856d883..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env ruby
-#########################################################
-#
-#  use Tk::UTF8_String() for a utf8 charecter
-#
-#########################################################
-require 'tk'
-require 'tkextlib/iwidgets'
-
-TkOption.add('*textBackground', 'white')
-
-ef  = Tk::Iwidgets::Entryfield.new(:command=>proc{puts "Return Pressed"})
-
-fef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Fixed:', 
-                                   :fixed=>10, :width=>12)
-
-nef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Numeric:', 
-                                   :validate=>:numeric, :width=>12)
-
-aef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Alphabetic:', 
-                                   :validate=>:alphabetic, :width=>12, 
-                                   :invalid=>proc{
-                                     puts "Alphabetic contents invalid"
-                                   })
-
-pef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Password:', :width=>12, 
-                                   :show=>Tk::UTF8_String("\267"),  
-                                                         ## <=== utf8 character
-                                   :command=>proc{puts "Return Pressed"})
-
-Tk::Iwidgets::Labeledwidget.alignlabels(ef, fef, nef, aef, pef)
-
-ef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-fef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-nef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-aef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-pef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/entryfield-2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/entryfield-2.rb
deleted file mode 100644 (file)
index 4a4c2e7..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env ruby
-#########################################################
-#
-#  set $KCODE to 'utf' for a utf8 charecter
-#
-#########################################################
-$KCODE='utf'
-
-require 'tk'
-require 'tkextlib/iwidgets'
-
-TkOption.add('*textBackground', 'white')
-
-ef  = Tk::Iwidgets::Entryfield.new(:command=>proc{puts "Return Pressed"})
-
-fef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Fixed:', 
-                                   :fixed=>10, :width=>12)
-
-nef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Numeric:', 
-                                   :validate=>:numeric, :width=>12)
-
-aef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Alphabetic:', 
-                                   :validate=>:alphabetic, :width=>12, 
-                                   :invalid=>proc{
-                                     puts "Alphabetic contents invalid"
-                                   })
-
-pef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Password:', :width=>12, 
-                                   :show=>"\267",  ## <=== utf8 character
-                                   :command=>proc{puts "Return Pressed"})
-
-Tk::Iwidgets::Labeledwidget.alignlabels(ef, fef, nef, aef, pef)
-
-ef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-fef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-nef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-aef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-pef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/entryfield-3.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/entryfield-3.rb
deleted file mode 100644 (file)
index bddd542..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env ruby
-#########################################################
-#
-#  set Tk.encoding = 'utf-8' for a utf8 charecter
-#
-#########################################################
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk.encoding = 'utf-8'
-
-TkOption.add('*textBackground', 'white')
-
-ef  = Tk::Iwidgets::Entryfield.new(:command=>proc{puts "Return Pressed"})
-
-fef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Fixed:', 
-                                   :fixed=>10, :width=>12)
-
-nef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Numeric:', 
-                                   :validate=>:numeric, :width=>12)
-
-aef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Alphabetic:', 
-                                   :validate=>:alphabetic, :width=>12, 
-                                   :invalid=>proc{
-                                     puts "Alphabetic contents invalid"
-                                   })
-
-pef = Tk::Iwidgets::Entryfield.new(:labeltext=>'Password:', :width=>12, 
-                                   :show=>"\267",  ## <=== utf8 character
-                                   :command=>proc{puts "Return Pressed"})
-
-Tk::Iwidgets::Labeledwidget.alignlabels(ef, fef, nef, aef, pef)
-
-ef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-fef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-nef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-aef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-pef.pack(:fil=>:x,  :expand=>true, :padx=>10, :pady=>5)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/extbutton.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/extbutton.rb
deleted file mode 100644 (file)
index 6971052..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Extbutton.new(:text=>'Bitmap example', :bitmap=>'info', 
-                            :background=>'bisque',  :activeforeground=>'red', 
-                            :bitmapforeground=>'blue', :defaultring=>true, 
-                            :command=>proc{
-                              puts "Bisque is beautiful"
-                            }).pack(:expand=>true)
-
-#img = TkPhotoImage.new(:file=>File.join(File.dirname(File.expand_path(__FILE__)), '../../../images/earthris.gif'))
-img = TkPhotoImage.new(:file=>File.join(File.dirname(File.expand_path(__FILE__)), '../catalog_demo/images/clear.gif'))
-
-Tk::Iwidgets::Extbutton.new(:text=>'Image example', :relief=>:ridge, 
-                            :image=>img, :imagepos=>:e, :font=>'9x15bold', 
-                            :activebackground=>'lightyellow', 
-                            :background=>'lightgreen').pack(:expand=>true)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/extfileselectionbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/extfileselectionbox.rb
deleted file mode 100644 (file)
index 4738084..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Extfileselectionbox.new.pack(:padx=>10, :pady=>10, 
-                                           :fill=>:both, :expand=>true)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/extfileselectiondialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/extfileselectiondialog.rb
deleted file mode 100644 (file)
index c1a9b3d..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mainloop = Thread.new{Tk.mainloop}
-
-#
-# Non-modal example
-#
-nmfsd = Tk::Iwidgets::Extfileselectiondialog.new(:title=>'Non-Modal')
-nmfsd.buttonconfigure('OK', :command=>proc{
-                        puts "You selected #{nmfsd.get}"
-                        nmfsd.deactivate
-                      })
-nmfsd.activate
-
-#
-# Modal example
-#
-mfsd = Tk::Iwidgets::Extfileselectiondialog.new(:modality=>:application)
-mfsd.center
-if TkComm.bool(mfsd.activate)
-  puts "You selected #{mfsd.get}"
-else
-  puts "You cancelled the dialog"
-end
-
-
-mainloop.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/feedback.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/feedback.rb
deleted file mode 100644 (file)
index 7b87a02..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Feedback.new(:labeltext=>'Status', :steps=>20){|fb|
-  pack(:padx=>10, :pady=>10, :fill=>:both, :expand=>true)
-  TkTimer.new(500, 20, proc{fb.step}).start(2500)
-}
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/fileselectionbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/fileselectionbox.rb
deleted file mode 100644 (file)
index 2ad3adb..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Fileselectionbox.new.pack(:padx=>10, :pady=>10, 
-                                        :fill=>:both, :expand=>true)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/fileselectiondialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/fileselectiondialog.rb
deleted file mode 100644 (file)
index ff22b2f..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mainloop = Thread.new{Tk.mainloop}
-
-#
-# Non-modal example
-#
-nmfsd = Tk::Iwidgets::Fileselectiondialog.new(:title=>'Non-Modal')
-nmfsd.buttonconfigure('OK', :command=>proc{
-                        puts "You selected #{nmfsd.get}"
-                        nmfsd.deactivate
-                      })
-nmfsd.activate
-
-#
-# Modal example
-#
-mfsd = Tk::Iwidgets::Fileselectiondialog.new(:modality=>:application)
-mfsd.center
-if TkComm.bool(mfsd.activate)
-  puts "You selected #{mfsd.get}"
-else
-  puts "You cancelled the dialog"
-end
-
-mainloop.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/finddialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/finddialog.rb
deleted file mode 100644 (file)
index 110efb9..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mainloop = Thread.new{Tk.mainloop}
-
-st = Tk::Iwidgets::Scrolledtext.new.pack
-st.insert('end', "Now is the time for all good men\n")
-st.insert('end', "to come to the aid of their country")
-
-fd = Tk::Iwidgets::Finddialog.new(:textwidget=>st)
-fd.center(st)
-fd.activate
-
-mainloop.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/hierarchy.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/hierarchy.rb
deleted file mode 100644 (file)
index ddb08d8..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-def get_files(file)
-  dir = (file.empty?)? ENV['HOME'] : TkComm._fromUTF8(file)
-  Dir.chdir(dir) rescue return ''
-  Dir['*'].sort.collect{|f|
-    [TkComm._toUTF8(File.join(dir, f)), TkComm._toUTF8(f)]
-  }
-end
-
-Tk::Iwidgets::Hierarchy.new(:querycommand=>proc{|arg| get_files(arg.node)}, 
-                            :visibleitems=>'30x15', 
-                            :labeltext=>ENV['HOME']).pack(:side=>:left, 
-                                                          :expand=>true, 
-                                                          :fill=>:both)
-
-# Tk::Iwidgets::Hierarchy.new(:querycommand=>[proc{|n| get_files(n)}, '%n'], 
-#                           :visibleitems=>'30x15', 
-#                           :labeltext=>ENV['HOME']).pack(:side=>:left, 
-#                                                         :expand=>true, 
-#                                                         :fill=>:both)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/hyperhelp.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/hyperhelp.rb
deleted file mode 100644 (file)
index f9c92bf..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mainloop = Thread.new{Tk.mainloop}
-
-dir  = '/usr/local/ActiveTcl/demos/IWidgets/html/'
-href = [ 'hyperhelp.n', 'buttonbox.n', 'calendar.n' ]
-
-hh = Tk::Iwidgets::Hyperhelp.new(:topics=>href, :helpdir=>dir)
-hh.show_topic('hyperhelp.n')
-hh.activate
-
-mainloop.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/labeledframe.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/labeledframe.rb
deleted file mode 100644 (file)
index 4e2e21e..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-lf = Tk::Iwidgets::Labeledframe.new(:labeltext=>'Entry Frame', :labelpos=>:n)
-lf.pack(:fill=>:both, :expand=>true, :padx=>10, :pady=>10)
-
-cs = lf.child_site
-
-Tk::Iwidgets::Entryfield.new(cs, :labeltext=>'Name:').pack(:side=>:top, :fill=>:x)
-Tk::Iwidgets::Spinint.new(cs, :labeltext=>'Number:').pack(:side=>:top, :fill=>:x)
-Tk::Iwidgets::Pushbutton.new(cs, :text=>'Details:').pack(:side=>:top, :fill=>:x)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/labeledwidget.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/labeledwidget.rb
deleted file mode 100644 (file)
index 1d2e0a9..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-lw = Tk::Iwidgets::Labeledwidget.new(:labeltext=>'Canvas Widget', 
-                                     :labelpos=>:s)
-lw.pack(:fill=>:both, :expand=>true, :padx=>10, :pady=>10)
-
-cw = TkCanvas.new(lw.child_site, :relief=>:raised, :width=>200, :height=>200, 
-                  :borderwidth=>3, :background=>:white)
-cw.pack(:padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/mainwindow.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/mainwindow.rb
deleted file mode 100644 (file)
index b87a6d2..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mw = Tk::Iwidgets::Mainwindow.new
-
-mw.menubar.add(:menubutton, 'file', :text=>'File', :underline=>0, 
-               :padx=>8, :pady=>2, :menu=>[
-                 [:options, {:tearoff=>false}], 
-
-                 [:command, 'new', {
-                     :label=>'New', :underline=>0, 
-                     :helpstr=>'Create a new file'
-                   }
-                 ], 
-
-                 [:command, 'open', {
-                     :label=>'Open ...', :underline=>0, 
-                     :helpstr=>'Open an existing file'
-                   }
-                 ], 
-
-                 [:command, 'save', {
-                     :label=>'Save', :underline=>0, 
-                     :helpstr=>'Save the current file'
-                   }
-                 ], 
-
-                 [:command, 'saveas', {
-                     :label=>'Save As', :underline=>5, 
-                     :helpstr=>'Save the file as a different name'
-                   }
-                 ], 
-
-                 [:command, 'print', {
-                     :label=>'Print', :underline=>0, 
-                     :helpstr=>'Print the file'
-                   }
-                 ], 
-
-                 [:separator, 'sep1'], 
-
-                 [:command, 'close', {
-                     :label=>'Close', :underline=>0, 
-                     :helpstr=>'Close the file'
-                   }
-                 ], 
-
-                 [:separator, 'sep2'], 
-
-                 [:command, 'exit', {
-                     :label=>'Exit', :underline=>1, 
-                     :helpstr=>'Exit this application'
-                   }
-                 ], 
-
-                 nil
-               ])
-
-Tk::Iwidgets::Scrolledtext.new(mw.child_site).pack(:fill=>:both, :expand=>true)
-
-mw.activate
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/menubar.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/menubar.rb
deleted file mode 100644 (file)
index 891761a..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-helpvar = TkVariable.new
-viewmode = TkVariable.new
-
-menu_spec = [
-  [:menubutton, 'file', {
-      :text=>'File', :menu=>[
-        [:options, {:tearoff=>false}], 
-
-        [:command, 'new', {
-            :label=>'New', :helpstr=>'Open new document', 
-            :command=>proc{puts 'NEW'}
-          }
-        ], 
-
-        [:command, 'close', {
-            :label=>'Close', :helpstr=>'Close current document', 
-            :command=>proc{puts 'CLOSE'}
-          }
-        ], 
-
-        [:separator, 'sep1'], 
-
-        [:command, 'exit', {
-            :label=>'Exit', :helpstr=>'Exit application', 
-            :command=>proc{exit}
-          }
-        ]
-      ]
-    }
-  ], 
-
-  [:menubutton, 'edit', {
-      :text=>'Edit', :menu=>[
-        [:options, {:tearoff=>false}], 
-
-        [:command, 'undo', {
-            :label=>'Undo', :underline=>0, 
-            :helpstr=>'Undo last command', 
-            :command=>proc{puts 'UNDO'}
-          }
-        ], 
-
-        [:separator, 'sep2'], 
-
-        [:command, 'cut', {
-            :label=>'Cut', :underline=>1, 
-            :helpstr=>'Cut selection to clipboard', 
-            :command=>proc{puts 'CUT'}
-          }
-        ], 
-
-        [:command, 'copy', {
-            :label=>'Copy', :underline=>1, 
-            :helpstr=>'Copy selection to clipboard', 
-            :command=>proc{puts 'COPY'}
-          }
-        ], 
-
-        [:command, 'paste', {
-            :label=>'Paste', :underline=>0, 
-            :helpstr=>'Paste clipboard contents', 
-            :command=>proc{puts 'PASTE'}
-          }
-        ]
-      ]
-    }
-  ], 
-
-  [:menubutton, 'options', {
-      :text=>'Options', :menu=>[
-        [:options, {:tearoff=>false, :selectcolor=>'blue'}], 
-
-        [:radiobutton, 'byName', {
-            :variable=>viewmode, :value=>'NAME', 
-            :label=>'by Name', :helpstr=>'View files by name order', 
-            :command=>proc{puts 'NAME'}
-          }
-        ], 
-
-        [:radiobutton, 'byDate', {
-            :variable=>viewmode, :value=>'DATE', 
-            :label=>'by Date', :helpstr=>'View files by date order', 
-            :command=>proc{puts 'DATE'}
-          }
-        ], 
-
-        [:cascade, 'prefs', {
-            :label=>'Preferences', :menu=>[
-              [:command, 'colors', {
-                  :label=>'Colors...', :helpstr=>'Change text colors', 
-                  :command=>proc{puts 'COLORS'}
-                }
-              ], 
-
-              [:command, 'fonts', {
-                  :label=>'Fonts...', :helpstr=>'Change text font', 
-                  :command=>proc{puts 'COLORS'}
-                }
-              ]
-            ]
-          }
-        ]
-      ]
-    }
-  ]
-]
-
-#mb = Tk::Iwidgets::Menubar.new(:helpvariable=>helpvar, 
-#                              :menubuttons=>menu_spec)
-mb = Tk::Iwidgets::Menubar.new(:helpvariable=>helpvar)
-mb.configure(:menubuttons=>menu_spec)
-
-fr = TkFrame.new(:width=>300, :height=>300)
-ef = TkEntry.new(:textvariable=>helpvar)
-
-mb.pack(:anchor=>:nw, :fill=>:x, :expand=>true)
-fr.pack(:fill=>:both, :expand=>true)
-ef.pack(:anchor=>:sw, :fill=>:x, :expand=>true)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/menubar2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/menubar2.rb
deleted file mode 100644 (file)
index d6f2292..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-helpvar = TkVariable.new
-viewmode = TkVariable.new
-
-mb = Tk::Iwidgets::Menubar.new
-mb.menubuttons = [
-  [:menubutton, 'file', {
-      :text=>'File', :menu=>[
-        [:command,   'new',   {:label=>'New'}], 
-        [:command,   'close', {:label=>'Close'}], 
-        [:separator, 'sep1'], 
-        [:command,   'quit',  {:label=>'Quit'}]
-      ]
-    }
-  ], 
-  [:menubutton, 'edit', {:text=>'Edit'}]
-]
-
-mb.add(:command, '.edit.undo', :label=>'Undo', :underline=>0)
-mb.add(:separator, '.edit.sep2')
-mb.add(:command, '.edit.cut',   :label=>'Cut',   :underline=>1)
-mb.add(:command, '.edit.copy',  :label=>'Copy',  :underline=>1)
-mb.add(:command, '.edit.paste', :label=>'Paste', :underline=>0)
-
-mb.add(:menubutton, '.options', :text=>'Options', :menu=>[
-         [:radiobutton, 'byName', {
-             :variable=>viewmode, :value=>'NAME', :label=>'by Name'}
-         ], 
-         [:radiobutton, 'byDate', {
-             :variable=>viewmode, :value=>'DATE', :label=>'by Date'}
-         ]
-       ])
-
-mb.add(:cascade, '.options.prefs', :label=>'Preferences', :menu=>[
-         [:command, 'colors', {:label=>'Colors...'}], 
-         [:command, 'fonts',  {:label=>'Fonts...'}]
-       ])
-
-mb.pack(:side=>:left, :anchor=>:nw, :fill=>:x, :expand=>true)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/messagebox1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/messagebox1.rb
deleted file mode 100644 (file)
index 3221dbc..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mb = Tk::Iwidgets::Messagebox.new(:hscrollmode=>:dynamic, 
-                                  :labeltext=>'Messages', :labelpos=>:n, 
-                                  :height=>120, :width=>550, 
-                                  :savedir=>'/tmp', :textbackground=>'#d9d9d9')
-mb.pack(:padx=>5, :pady=>5, :fill=>:both, :expand=>true)
-
-mb.type_add('ERROR', :background=>'red', :foreground=>'white', :bell=>true)
-mb.type_add('WARNING', :background=>'yellow', :foreground=>'black')
-mb.type_add('INFO', :background=>'white', :foreground=>'black')
-
-mb.issue('This is an error message in red with a beep', 'ERROR')
-mb.issue('This warning message in yellow', 'WARNING')
-mb.issue('This is an informational message', 'INFO')
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/messagebox2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/messagebox2.rb
deleted file mode 100644 (file)
index 2f0e364..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mb = Tk::Iwidgets::Messagebox.new(:hscrollmode=>:dynamic, 
-                                  :labeltext=>'Messages', :labelpos=>:n, 
-                                  :height=>120, :width=>550, 
-                                  :savedir=>'/tmp', :textbackground=>'#d9d9d9')
-mb.pack(:padx=>5, :pady=>5, :fill=>:both, :expand=>true)
-
-error   = mb.type_add(:background=>'red', :foreground=>'white', :bell=>true)
-warning = mb.type_add(:background=>'yellow', :foreground=>'black')
-info    = mb.type_add(:background=>'white', :foreground=>'black')
-
-mb.issue('This is an error message in red with a beep', error)
-mb.issue('This warning message in yellow', warning)
-mb.issue('This is an informational message', info)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/messagedialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/messagedialog.rb
deleted file mode 100644 (file)
index 6c6bfbc..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mainloop = Thread.new{Tk.mainloop}
-
-#
-# Standard question message dialog used for confirmation.
-#
-md = Tk::Iwidgets::Messagedialog.new(:title=>'Message Dialog', 
-                                     :text=>'Are you sure ? ', 
-                                     :bitmap=>'questhead', :modality=>:global)
-
-md.buttonconfigure('OK', :text=>'Yes')
-md.buttonconfigure('Cancel', :text=>'No')
-
-if TkComm.bool(md.activate)
-  md.text('Are you really sure ? ')
-  if TkComm.bool(md.activate)
-    puts 'Yes'
-  else
-    puts 'No'
-  end
-else
-  puts 'No'
-end
-
-md.destroy
-
-#
-# Copyright notice with automatic deactivation.
-#
-bmp = '@' + File.join(File.dirname(File.expand_path(__FILE__)), '../catalog_demo/images/text.xbm')
-
-cr = Tk::Iwidgets::Messagedialog.new(:title=>'Copyright', 
-                                     :bitmap=>bmp, :imagepos=>:n, 
-                                     :text=>"Copyright 200x XXX Corporation\nAll rights reserved")
-
-cr.hide('Cancel')
-
-cr.activate
-Tk.after(7000, proc{cr.deactivate; Tk.root.destroy})
-
-mainloop.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/notebook.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/notebook.rb
deleted file mode 100644 (file)
index e33b81e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-# Create the tabnotebook widget and pack it.
-nb = Tk::Iwidgets::Notebook.new(:width=>100, :height=>100)
-nb.pack(:anchor=>:nw, :fill=>:both, :expand=>true, 
-        :side=>:left, :padx=>10, :pady=>10)
-
-# Add two pages to the tabnotebook,
-# labelled "Page One" and "Page Two"
-nb.add(:label=>'Page One')
-nb.add(:label=>'Page Two')
-
-# Get the child site frames of these two pages.
-page1CS = nb.child_site(0)
-page2CS = nb.child_site('Page Two')
-
-# Create buttons on each page of the tabnotebook.
-TkButton.new(page1CS, :text=>'Button One').pack
-TkButton.new(page2CS, :text=>'Button Two').pack
-
-# Select the first page of the tabnotebook.
-nb.select(0)
-
-# Create the scrollbar and associate teh scrollbar
-# and the notebook together, then pack the scrollbar
-nb.scrollbar(TkScrollbar.new).pack(:fill=>:y, :expand=>true, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/notebook2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/notebook2.rb
deleted file mode 100644 (file)
index 649de4f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-# Create the tabnotebook widget and pack it.
-nb = Tk::Iwidgets::Notebook.new(:width=>100, :height=>100)
-nb.pack(:anchor=>:nw, :fill=>:both, :expand=>true, 
-        :side=>:top, :padx=>10, :pady=>0)
-
-# Add two pages to the tabnotebook,
-# labelled "Page One" and "Page Two"
-nb.add(:label=>'Page One')
-nb.add(:label=>'Page Two')
-
-# Get the child site frames of these two pages.
-page1CS = nb.child_site(0)
-page2CS = nb.child_site('Page Two')
-
-# Create buttons on each page of the tabnotebook.
-TkButton.new(page1CS, :text=>'Button One').pack
-TkButton.new(page2CS, :text=>'Button Two').pack
-
-# Select the first page of the tabnotebook.
-nb.select(0)
-
-# Create the scrollbar and associate teh scrollbar
-# and the notebook together, then pack the scrollbar
-nb.xscrollbar(TkScrollbar.new).pack(:fill=>:x, :expand=>true, :padx=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/optionmenu.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/optionmenu.rb
deleted file mode 100644 (file)
index 1fd7a5b..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-om = Tk::Iwidgets::Optionmenu.new(:labelmargin=>5, :labelpos=>:w, 
-                                  :labeltext=>"Operating System :")
-
-om.insert('end', 'Unix', 'VMS', 'Linux', 'OS/2', 'Windows NT', 'DOS')
-om.sort_ascending
-om.select('Linux')
-
-om.pack(:padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/panedwindow.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/panedwindow.rb
deleted file mode 100644 (file)
index 6e4458e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-pw = Tk::Iwidgets::Panedwindow.new(:width=>300, :height=>300)
-
-pw.add('top')
-pw.add('middle', :margin=>10)
-pw.add('bottom', :margin=>10, :minimum=>10)
-
-pw.pack(:fill=>:both, :expand=>true)
-
-pw.child_site_list.each{|pane|
-  TkButton.new(pane, :text=>pane.path, :relief=>:raised, 
-               :borderwidth=>2).pack(:fill=>:both, :expand=>true)
-}
-
-pw.fraction(50,30,20)
-pw.paneconfigure(0, :minimum=>20)
-pw.paneconfigure('bottom', :margin=>15)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/panedwindow2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/panedwindow2.rb
deleted file mode 100644 (file)
index 6779cb5..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-pw = Tk::Iwidgets::Panedwindow.new(:width=>300, :height=>300)
-
-top = pw.add
-middle = pw.add(:margin=>10)
-bottom = pw.add(:margin=>10, :minimum=>10)
-
-pw.pack(:fill=>:both, :expand=>true)
-
-pw.child_site_list.each{|pane|
-  TkButton.new(pane, :text=>pane.path, :relief=>:raised, 
-               :borderwidth=>2).pack(:fill=>:both, :expand=>true)
-}
-
-pw.fraction(50,30,20)
-pw.paneconfigure(0, :minimum=>20)  # 0 == pw.index(top)
-pw.paneconfigure(bottom, :margin=>15)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/promptdialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/promptdialog.rb
deleted file mode 100644 (file)
index 2c643e5..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mainloop = Thread.new{Tk.mainloop}
-
-TkOption.add('*textBackground', 'white')
-
-pd = Tk::Iwidgets::Promptdialog.new(:modality=>:global, :title=>'Password', 
-                                    :labeltext=>'Password:', :show=>'*')
-pd.hide('Apply')
-
-if TkComm.bool(pd.activate)
-  puts "Password entered: #{pd.get}"
-else
-  puts "Password prompt cancelled"
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/pushbutton.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/pushbutton.rb
deleted file mode 100644 (file)
index 6e1c3ff..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Pushbutton.new(:text=>'Hello', 
-                             :command=>proc{puts 'Hello World'}, 
-                             :defaultring=>true).pack(:padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/radiobox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/radiobox.rb
deleted file mode 100644 (file)
index 9cd6a00..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-rb = Tk::Iwidgets::Radiobox.new(:labeltext=>'Fonts')
-rb.add('times',     :text=>'Times')
-rb.add('helvetica', :text=>'Helvetica')
-rb.add('courier',   :text=>'Courier')
-rb.add('symbol',    :text=>'Symbol')
-rb.select('courier')
-rb.pack(:expand=>true, :fill=>:both, :padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledcanvas.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledcanvas.rb
deleted file mode 100644 (file)
index 92c94b9..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-sc = Tk::Iwidgets::Scrolledcanvas.new
-
-sc.create(TkcRectangle, 100, 100, 400, 400, :fill=>'red')
-TkcRectangle.new(sc, 300, 300, 600, 600, :fill=>'green')
-TkcRectangle.new(sc, [[200, 200], [500, 500]], :fill=>'blue')
-
-sc.pack(:expand=>true, :fill=>:both, :padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledframe.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledframe.rb
deleted file mode 100644 (file)
index 5219847..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-sf = Tk::Iwidgets::Scrolledframe.new(:width=>150, :height=>180, 
-                                     :labeltext=>'scrolledframe')
-cs = sf.child_site
-
-TkButton.new(cs, :text=>'Hello').pack(:pady=>10)
-TkButton.new(cs, :text=>'World').pack(:pady=>10)
-TkButton.new(cs, :text=>'This is a test').pack(:pady=>10)
-TkButton.new(cs, :text=>'This is a really big button').pack(:pady=>10)
-TkButton.new(cs, :text=>'This is another really big button').pack(:pady=>10)
-TkButton.new(cs, :text=>'This is the last really big button').pack(:pady=>10)
-
-sf.pack(:expand=>true, :fill=>:both, :padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledhtml.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledhtml.rb
deleted file mode 100644 (file)
index 04334b8..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-TkOption.add('*textBackground', 'white')
-
-sh = Tk::Iwidgets::Scrolledhtml.new(:fontname=>'helvetica', 
-                                    :linkcommand=>proc{|href|
-                                      sh.import_link(href)
-                                    })
-sh.pack(:expand=>true, :fill=>:both, :padx=>10, :pady=>10)
-
-sh.import(Tk.getOpenFile(:title=>'select HTML document'))
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledlistbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledlistbox.rb
deleted file mode 100644 (file)
index 0b69751..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-TkOption.add('*textBackground', 'white')
-
-slb = Tk::Iwidgets::Scrolledlistbox.new(:selectmode=>:single, 
-                                        :vscrollmode=>:static,
-                                        :hscrollmode=>:dynamic,
-                                        :labeltext=>'List', 
-                                        :selectioncommand=>proc{
-                                          puts(slb.get_curselection)
-                                        }, 
-                                        :dblclickcommand=>proc{
-                                          puts('Double Click')
-                                          puts(slb.get_curselection)
-                                        })
-slb.pack(:expand=>true, :fill=>:both, :padx=>10, :pady=>10)
-
-slb.insert('end', *['Hello', 'Out There', 'World'])
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledtext.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/scrolledtext.rb
deleted file mode 100644 (file)
index dd1a99a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-st = Tk::Iwidgets::Scrolledtext.new(:hscrollmode=>:dynamic, :wrap=>:none, 
-                                    :labeltext=>'Password File')
-st.pack(:expand=>true, :fill=>:both, :padx=>10, :pady=>10)
-
-st.import('/etc/passwd')
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/selectionbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/selectionbox.rb
deleted file mode 100644 (file)
index a5d623a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-TkOption.add('*textBackground', 'white')
-
-sb = Tk::Iwidgets::Selectionbox.new.pack(:padx=>10, :pady=>10, 
-                                         :fill=>:both, :expand=>true)
-
-sb.insert_items('end', *['Hello', 'Out There', 'World'])
-
-TkLabel.new(sb.child_site, 
-            :text=>'Child Site is Here').pack(:fill=>:x, :padx=>10, :pady=>10)
-
-sb.insert_items(2, 'Cruel Cruel')
-
-sb.selection_set(1)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/selectiondialog.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/selectiondialog.rb
deleted file mode 100644 (file)
index f40b419..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-mainloop = Thread.new{Tk.mainloop}
-
-TkButton.new(:text=>'QUIT', 
-             :command=>proc{Tk.root.destroy}).pack(:padx=>10, :pady=>10)
-
-Tk::Iwidgets::Selectiondialog.new.activate
-
-mainloop.join
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/shell.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/shell.rb
deleted file mode 100644 (file)
index c44b555..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-sh = Tk::Iwidgets::Shell.new(:modality=>:application, 
-                             :padx=>20, :pady=>20, :title=>'Shell')
-
-TkButton.new(:text=>'ACTIVATE', :padx=>7, :pady=>7, 
-             :command=>proc{puts sh.activate}).pack(:padx=>10, :pady=>10)
-
-TkLabel.new(sh.child_site, :text=>'SHELL').pack
-TkButton.new(sh.child_site, :text=>'YES', 
-             :command=>proc{sh.deactivate 'press YES'}).pack(:fill=>:x)
-TkButton.new(sh.child_site, :text=>'NO', 
-             :command=>proc{sh.deactivate 'press NO'}).pack(:fill=>:x)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/spindate.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/spindate.rb
deleted file mode 100644 (file)
index 17197a6..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Spindate.new.pack(:padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/spinint.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/spinint.rb
deleted file mode 100644 (file)
index 0bcdefb..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-TkOption.add('*textBackground', 'white')
-
-Tk::Iwidgets::Spinint.new(:labeltext=>'Temperature', :labelpos=>:w, :width=>5, 
-                          :fixed=>true, :range=>[32, 212]).pack(:pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/spinner.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/spinner.rb
deleted file mode 100644 (file)
index 295d38e..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-class Spinner_demo < TkWindow
-  Months = %w(January February March April May June July August September October November December)
-
-  def block_input(c)
-    false
-  end
-
-  def spin_month(step)
-    index = Months.index(@spinner.get) + step
-    index = 11 if index < 0
-    index = 0 if index > 11
-
-    @spinner.value = Months[index]
-  end
-
-  def initialize(parent=nil)
-    @spinner = Tk::Iwidgets::Spinner.new(parent, :labeltext=>'Month : ', 
-                                         :width=>10, :fixed=>10, 
-                                         :validate=>proc{|c| block_input}, 
-                                         :decrement=>proc{spin_month -1}, 
-                                         :increment=>proc{spin_month 1})
-    @path = @spinner
-    @spinner.insert(0, Months[0])
-  end
-end
-
-Spinner_demo.new.pack(:padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/spintime.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/spintime.rb
deleted file mode 100644 (file)
index 2c13884..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Spintime.new.pack(:padx=>10, :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/tabnotebook.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/tabnotebook.rb
deleted file mode 100644 (file)
index 6f1ecc4..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-# Create the tabnotebook widget and pack it.
-tn = Tk::Iwidgets::Tabnotebook.new(:width=>300, :height=>100)
-tn.pack(:anchor=>:nw, :fill=>:both, :expand=>true, 
-        :side=>:left, :padx=>10, :pady=>10)
-
-# Add two pages to the tabnotebook,
-# labelled "Page One" and "Page Two"
-tn.add(:label=>'Page One')
-tn.add(:label=>'Page Two')
-
-# Get the child site frames of these two pages.
-page1CS = tn.child_site(0)
-page2CS = tn.child_site('Page Two')
-
-# Create buttons on each page of the tabnotebook.
-TkButton.new(page1CS, :text=>'Button One').pack
-TkButton.new(page2CS, :text=>'Button Two').pack
-
-# Select the first page of the tabnotebook.
-tn.select(0)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/tabnotebook2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/tabnotebook2.rb
deleted file mode 100644 (file)
index 4a5eef5..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-# Create the tabnotebook widget and pack it.
-tn = Tk::Iwidgets::Tabnotebook.new(:width=>300, :height=>100)
-tn.pack(:anchor=>:nw, :fill=>:both, :expand=>true, 
-        :side=>:top, :padx=>10, :pady=>0)
-
-# Add two pages to the tabnotebook,
-# labelled "Page One" and "Page Two"
-tn.add(:label=>'Page One')
-tn.add(:label=>'Page Two')
-
-# Get the child site frames of these two pages.
-page1CS = tn.child_site(0)
-page2CS = tn.child_site('Page Two')
-
-# Create buttons on each page of the tabnotebook.
-TkButton.new(page1CS, :text=>'Button One').pack
-TkButton.new(page2CS, :text=>'Button Two').pack
-
-# Select the first page of the tabnotebook.
-tn.select(0)
-
-# Create the scrollbar
-# and the notebook together, then pack the scrollbar
-tn.xscrollbar(TkScrollbar.new).pack(:fill=>:x, :expand=>true, :padx=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/tabset.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/tabset.rb
deleted file mode 100644 (file)
index 90be46b..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-# Create a listbox with two items (one and two)
-l = TkListbox.new(:selectmode=>:single, :exportselection=>false).pack
-l.insert('end', 'one')
-l.insert('end', 'two')
-l.selection_set(0)
-
-# Define a proc that knows how to select an item
-# from a list given an index from the tabset -command callback.
-selectItem = proc{|item|
-  l.selection_clear(l.curselection)
-  l.selection_set(item)
-  l.see(item)
-}
-
-# Create a tabset, set its -command to call selectItem
-# Add two labels to the tabset (one and two).
-ts = Tk::Iwidgets::Tabset.new(:command=>selectItem)
-ts.add(:label=>1)
-ts.add(:label=>2)
-ts.select(0)
-ts.pack(:fill=>:x, :expand=>true)
-
-# Define a proc that knows how to select a tab
-# given a y pixel coordinate from the list..
-selectTab = proc{|y| ts.select(l.nearest(y)) }
-
-# bind button 1 press to the selectTab procedure.
-l.bind('ButtonPress-1', proc{|y| selectTab.call(y) }, '%y')
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/timeentry.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/timeentry.rb
deleted file mode 100644 (file)
index 4659399..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Tk::Iwidgets::Timeentry.new.pack
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/timefield.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/timefield.rb
deleted file mode 100644 (file)
index bb59450..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-tf = Tk::Iwidgets::Timefield.new(:command=>proc{puts(tf.get)})
-tf.pack(:fill=>:x, :expand=>true, :padx=>10,  :pady=>10)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/toolbar.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/toolbar.rb
deleted file mode 100644 (file)
index 355466e..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-##########################################
-# icon images
-editcopy22 = TkPhotoImage.new(:data=><<'EOD')
-   R0lGODlhFgAWAIUAAPwCBBQSFPz+/DQyNISChDw6PMzKzMTGxERGRIyKjFxa
-   XMTCvKSmpHR2dPz6/Pz29PTq3MS2rPz69MTCxFxWVHx6dJyWjNzSzPz27Pzy
-   7Pzu5PTm3NTKvIR+fJyGfHxuZHxqXNTCtPTq5PTi1PTezNS+rExOTFRORMyy
-   lPTaxOzWxOzSvNze3NTOxMy2nMyulMyqjAQCBAAAAAAAAAAAAAAAAAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAbY
-   QIBwSCwahYGkUnk0BgTQ6IAQaBKfUWhBYKhaAU+CgXAQIAyChLeJzSIQhcH6
-   GFaM0QtGY5kstqEODw8QEQELAhJTc08KBBMEFBUWDRcBE1pca20SGBkaEBsc
-   AY5maFRIAgoLHRQRHh8gIQFlZnByqA8ZGSIQIyQjJQEmYgJ5p2ACrK4gJx4g
-   KIZZAgdeAQ4ZI9kjKSor0AwEjeAs1S0cHAslLi4vMDDRWeRIfEsxMeET4ATy
-   VoYLC5fizXEiAR84BeMG+pEm8EsAFhAjSlR4hR6fLxiF0AkCACH+aENyZWF0
-   ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29yIDE5
-   OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cuZGV2
-   ZWxjb3IuY29tADs=
-EOD
-
-editcut22 = TkPhotoImage.new(:data=><<'EOD')
-   R0lGODlhFgAWAIMAAPwCBAQCBAwCBPz+/OTi5JyanOzq7DQyNGxqbAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAARbEMhJq704gxBE
-   0Bf3cZo4kRJqBQNRfBucyudgvJS6VaxLzyMa6/bLiWA9HOg4VIIkL5vzuRkc
-   pkvRIIAorphJLzBW84WEuRZWp6uaT7J2Sh1Hit3OY/ZO7WvsEQAh/mhDcmVh
-   dGVkIGJ5IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAx
-   OTk3LDE5OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRl
-   dmVsY29yLmNvbQA7
-EOD
-
-editpaste22 = TkPhotoImage.new(:data=><<'EOD')
-   R0lGODlhFgAWAIYAAPwCBBQWFDw6FHRuFGRaBFxSBAQCBAQKBCQiBIx6HPz6
-   /NTOfKyiXDQuFOTm5Pz+/Ozu7PTq5Pz63PTyxNTOjKSeRExGLMTGxMzKzNTS
-   1NTW1Dw2NKSmpKyqrKSipJyanNzWlLy6ZLSuVIx6FISChIyKhJSSlCQiJLS2
-   tDw6NDQyNCQiFCQmHBQSDGRiZHRydGxubHx6dGxqbFxeXGRmZFxaXCwuLOzq
-   7KyurHx+fDwmFEQuFCweFCQWDBQODBwaHBweHKSinJSWlOTi5JyepHR2dDw6
-   PBQSFNze3ERGRIyKjIyOjISGhPz29Pzy7MS2rMzOzFRWVHx2dHxybDQiFPz2
-   7Pzu5PTq3PTm1NTCtJyGdHxuZHxqXPzq3PTaxNS6pFxWVFRKRNS2nPTi1PTS
-   tNSulNzOxNSynMymhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAA
-   LAAAAAAWABYAAAf/gACCgwABAgMEBYSLggaOjgcICQoLDA2Pj4MGDg8QEZ4F
-   DxITFBUWFxcYGRobjQ8cHR4fCQ8gCyEiFSMWJCUkJieNEB4dKB4pKissK8wr
-   LS4vMDHBAAYQHx8dFx0fJDIzNDU0M+IyHzaNNyg43Ng5Ojs7Ojw9Pj9AMkCN
-   DiZB/h9CSOx4QLCgihItqBkYgqIDESElitAYWJCgkQcXjjRCgi1Ihw4BB5LA
-   QOLCgyQYHihpUU3DBw5ElpAgAYNixSRJjKjQaECDCRPZPDB5IbIGSQwKLnh4
-   wbInLA4kmJB4oaPiAwVNnER40hRK1BIAaVatUZJEFCkmpmjgCeWDCalFe4q4
-   oFKwSRUrEa5gycLzwq8lUnPQ4PEgSpYcUZ5o2cIlS1O/JHLEDdfjQZMIVrpg
-   weLFy5e+M6WSmBGlxYMYYBRzCaOFi5imHWBIfOEiShLTVjaP6eyFTBmN1TA5
-   OvLDjJksWb58OVMGDRqWjAYdmU79SIvpjqJr104nEAAh/mhDcmVhdGVkIGJ5
-   IEJNUFRvR0lGIFBybyB2ZXJzaW9uIDIuNQ0KqSBEZXZlbENvciAxOTk3LDE5
-   OTguIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQpodHRwOi8vd3d3LmRldmVsY29y
-   LmNvbQA7
-EOD
-
-editdelete22 = TkPhotoImage.new(:data=><<'EOD')
-   R0lGODlhFgAWAIYAAASC/FRSVExKTERCRDw6PDQyNCwuLBweHBwaHAwODAwK
-   DAQCBExOTNze3NTW1MTGxLS2tJyanPz+/Ozu7BQSFCwqLDw+POTi5PTu7MzK
-   xIR+fCQmJPz6/Oze1NTGvPz69Pzy7Pz29LyyrPy+vPyupPTm1BQWFIQCBPwC
-   BMS6rPzSzNTOxPTi1NS+rPTezNzOxPTizOzWxMy2pOzaxMy2nPTaxOzOtMyy
-   nOzSvMyqjPx+fOzGpMSihPTq3OzKrOTCpNzKxNTCtAAAAAAAAAAAAAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAA
-   LAAAAAAWABYAAAf8gACCAQIDBAUGBwgJCgsLgpCRAAwNlZYODxALEY+SkAMN
-   EqKjEw0UD5yegqCjrRMVEqidkgWhraMWF7GptLa3EgEWFRSOnhW+vxgZEBqz
-   kBvItxwdHryRCNGjHyAhHSLOgtgSI60c2yQjJd+eJqEnKK0hJCgnJSngAO0S
-   F+8qEvL0VrBogW+BLX4oVKgIyMIFQU8KfDV4R+8FDBcxZBREthAFiRIsOsyg
-   sVEUh4Un3pGoUcPGjZInK65QicPlxg8oX5RwqNJGjo0hdJwQ6EIkjRM6dvDY
-   CKIHSBc1Ztjw4eOH0oIrsgIJEqSFDBo0cuTgsdSTo7No0xYTZCcQACH+aENy
-   ZWF0ZWQgYnkgQk1QVG9HSUYgUHJvIHZlcnNpb24gMi41DQqpIERldmVsQ29y
-   IDE5OTcsMTk5OC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCmh0dHA6Ly93d3cu
-   ZGV2ZWxjb3IuY29tADs=
-EOD
-
-text22 = TkPhotoImage.new(:data=><<'EOD')
-   R0lGODlhFgAWAIQAAPwCBAQCBBwaHAwKDBQSFLy+vLS2tJSWlBQWFKyqrFRS
-   VCwqLDQyNNTS1GxqbFxaXJyanIyOjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-   AAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAWABYAAAVcICCOZGmK
-   QSoMaZsShBsQBdAapHvgaIDUqUPJlRjSbAoT0fRDKgODRbF0PLUYjZO2F2Bs
-   t9evNix+dsvDlGKK5jraudQb7qbX6a2HEJ+ycyF+LRE8ZTI+fX5oGCEAIf5o
-   Q3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxD
-   b3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3
-   dy5kZXZlbGNvci5jb20AOw==
-EOD
-
-##########################################
-
-bmp_dir = File.join(File.dirname(File.expand_path(__FILE__)), 
-                    '../catalog_demo/images')
-
-##########################################
-
-status_var = TkVariable.new
-radio_var  = TkVariable.new
-check_var1 = TkVariable.new
-check_var2 = TkVariable.new
-
-tb = Tk::Iwidgets::Toolbar.new(:helpvariable=>status_var)
-
-##########################################
-
-tb.add(:button, :helpstr=>'Copy It', :image=>editcopy22, 
-       :balloonstr=>'Copy', :command=>proc{puts 'Copy It'})
-
-tb.add(:button, :helpstr=>'Cut It', :image=>editcut22, 
-       :balloonstr=>'Cut', :command=>proc{puts 'Cut It'})
-
-tb.add(:button, :helpstr=>'Paste It', :image=>editpaste22, 
-       :balloonstr=>'Paste', :command=>proc{puts 'Paste It'})
-
-tb.add(:button, :helpstr=>'Delete It', :image=>editdelete22, 
-       :balloonstr=>'Delete', :command=>proc{puts 'Delete It'})
-
-#--------------------------------
-
-tb.add(:frame, :borderwidth=>1, :width=>10, :height=>10)
-
-#--------------------------------
-
-tb.add(:radiobutton, :variable=>radio_var, :value=>'Box', 
-       :bitmap=>"@#{bmp_dir}/box.xbm", 
-       :helpstr=>'Radio Button #1', :balloonstr=>'Radio', 
-       :command=>proc{puts 'Radio Button "Box"'})
-
-tb.add(:radiobutton, :variable=>radio_var, :value=>'Line', 
-       :bitmap=>"@#{bmp_dir}/line.xbm", 
-       :helpstr=>'Radio Button #2', :balloonstr=>'Radio', 
-       :command=>proc{puts 'Radio Button "Line"'})
-
-tb.add(:radiobutton, :variable=>radio_var, :value=>'Oval', 
-       :bitmap=>"@#{bmp_dir}/oval.xbm", 
-       :helpstr=>'Radio Button #3', :balloonstr=>'Radio', 
-       :command=>proc{puts 'Radio Button "Oval"'})
-
-#--------------------------------
-
-tb.add(:frame, :borderwidth=>1, :width=>10, :height=>10)
-
-#--------------------------------
-
-tb.add(:checkbutton, :variable=>check_var1, :onvalue=>'yes', :offvalue=>'no', 
-       :image=>text22, :command=>proc{puts 'Checkbutton 1'})
-
-tb.add(:checkbutton, :variable=>check_var2, :onvalue=>'yes', :offvalue=>'no', 
-       :bitmap=>"@#{bmp_dir}/points.xbm", :command=>proc{puts 'Checkbutton 2'})
-
-tb.pack(:side=>:top, :anchor=>:nw)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/watch.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/iwidgets/sample/watch.rb
deleted file mode 100644 (file)
index 808c798..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env ruby
-require 'tk'
-require 'tkextlib/iwidgets'
-
-Thread.new{
-  trap('INT') {puts 'catch SIGINT'}
-  sleep 5
-  trap('INT', 'DEFAULT')
-}
-
-Tk::Iwidgets::Watch.new(:state=>:disabled, :showampm=>:no, 
-                        :width=>155, :height=>155){|w|
-  w.pack(:padx=>10, :pady=>10, :fill=>:both, :expand=>true)
-  # TkTimer.new(1000, -1, proc{w.show; Tk.update}).start
-  TkTimer.new(25, -1, proc{w.show; Tk.update}).start
-}
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/Orig_LICENSE.txt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/Orig_LICENSE.txt
deleted file mode 100644 (file)
index 2728538..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-
-  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-  >>>  The following text is the original 'license.term' of tklib    <<<
-  >>>  extension.                                                    <<<
-  >>>  Original Tcl files are not include in this directry, because  <<<
-  >>>  of all of them are rewrited to Ruby files.                    <<<
-  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-This software is copyrighted by Ajuba Solutions and other parties.
-The following terms apply to all files associated with the software unless
-explicitly disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-GOVERNMENT USE: If you are acquiring this software on behalf of the
-U.S. government, the Government shall have only "Restricted Rights"
-in the software and related documentation as defined in the Federal 
-Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
-are acquiring the software on behalf of the Department of Defense, the
-software shall be classified as "Commercial Computer Software" and the
-Government shall have only "Restricted Rights" as defined in Clause
-252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
-authors grant the U.S. Government and others acting in its behalf
-permission to use and distribute the software in accordance with the
-terms specified in this license. 
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/datefield.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/datefield.rb
deleted file mode 100644 (file)
index cfeca0c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/ruby
-
-require 'tk'
-require 'tkextlib/tcllib/datefield'
-require 'parsedate'
-
-Tk.root.title('Datefield example')
-
-
-my_date1 = TkVariable.new
-my_date2 = TkVariable.new
-my_date1.trace('w'){
-  begin
-    t = Time.local(*(ParseDate.parsedate(my_date1.value)))
-    my_date2.value = t.strftime('%A')
-  rescue
-    # ignore error
-  end
-}
-
-df = Tk::Tcllib::Datefield.new(:textvariable=>my_date1)
-Tk.grid(TkLabel.new(:text=>'Enter a date:', :anchor=>:e), df, :sticky=>:ew)
-Tk.grid(TkLabel.new(:text=>'That date ia a:', :anchor=>:e), 
-        TkLabel.new(:textvariable=>my_date2, :relief=>:sunken, :width=>12), 
-        :sticky=>:ew)
-
-df.set_focus
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/plotdemos1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/plotdemos1.rb
deleted file mode 100644 (file)
index 053b0de..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-#!/usr/bin/ruby
-
-require 'tk'
-require 'tkextlib/tcllib/plotchart'
-
-###############################
-
-c1 = TkCanvas.new(:background=>'white', :width=>400, :height=>200)
-c2 = TkCanvas.new(:background=>'white', :width=>400, :height=>200)
-c3 = TkCanvas.new(:background=>'white', :width=>400, :height=>200)
-Tk.pack(c1,c2,c3, :fill=>:both, :side=>:top)
-
-h = TkToplevel.new(:title=>'h')
-hc1 = TkCanvas.new(h, :background=>'white', :width=>400, :height=>200)
-hc2 = TkCanvas.new(h, :background=>'white', :width=>400, :height=>200)
-Tk.pack(hc1,hc2, :fill=>:both, :side=>:top)
-
-v = TkToplevel.new(:title=>'v')
-vc1 = TkCanvas.new(v, :background=>'white', :width=>400, :height=>200)
-vc2 = TkCanvas.new(v, :background=>'white', :width=>400, :height=>200)
-vc3 = TkCanvas.new(v, :background=>'white', :width=>400, :height=>200)
-Tk.pack(vc1,vc2,vc3, :fill=>:both, :side=>:top)
-
-###############################
-
-s = Tk::Tcllib::Plotchart::XYPlot.new(c1, [0.0, 100.0, 10.0], 
-                                          [0.0, 100.0, 20.0])
-
-
-xd =    5.0
-yd =   20.0
-xold =  0.0
-yold = 50.0
-
-s.dataconfig('series1', :color=>'red')
-
-(0..19).each{|i|
-  xnew = xold + xd
-  ynew = yold + (rand() - 0.5) * yd
-  ynew2 = yold + (rand() - 0.5) * 2.0 * yd
-  s.plot('series1', xnew, ynew)
-  s.plot('series2', xnew, ynew2)
-  xold = xnew
-  yold = ynew
-}
-
-s.xtext "X-coordinate"
-s.ytext "Y-data"
-s.title "Aha!"
-
-c1.wait_visibility
-
-s.save_plot "aha.ps"
-
-###############################
-
-s = Tk::Tcllib::Plotchart::Piechart.new(c2)
-
-s.plot([ ["Long names", 10], ["Short names", 30], 
-         ["Average", 40],    ["Ultra-short names", 5] ])
-
-#
-# Note: title should be shifted up
-#       - distinguish a separate title area
-#
-s.title "Okay - this works"
-
-###############################
-
-s = Tk::Tcllib::Plotchart::PolarPlot.new(c3, [3.0, 1.0])
-
-0.step(359, 10){|angle|
-  rad = 1.0+Math.cos(angle*Math::PI/180.0)
-  s.plot('cardioid', rad, angle)
-}
-
-s.title "Cardioid"
-
-###############################
-
-s = Tk::Tcllib::Plotchart::Barchart.new(hc1, %w(A B C D E), 
-                                        [0.0, 10.0, 2.0], 2)
-
-s.plot('series1', [1.0, 4.0, 6.0, 1.0, 7.0], 'red')
-s.plot('series2', [0.0, 3.0, 7.0, 9.3, 2.0], 'green')
-s.title "Arbitrary data"
-
-###############################
-
-s = Tk::Tcllib::Plotchart::Barchart.new(hc2, %w(A B C D E), 
-                                        [0.0, 20.0, 5.0], :stacked)
-
-s.plot('series1', [1.0, 4.0, 6.0, 1.0, 7.0], 'red')
-s.plot('series2', [0.0, 3.0, 7.0, 9.3, 2.0], 'green')
-s.title "Stacked diagram"
-
-###############################
-
-s = Tk::Tcllib::Plotchart::HorizontalBarchart.new(vc1, [0.0, 10.0, 2.0], 
-                                                  %w(A B C D E), 2)
-
-s.plot('series1', [1.0, 4.0, 6.0, 1.0, 7.0], 'red')
-s.plot('series2', [0.0, 3.0, 7.0, 9.3, 2.0], 'green')
-s.title "Arbitrary data"
-
-###############################
-
-s = Tk::Tcllib::Plotchart::HorizontalBarchart.new(vc2, [0.0, 20.0, 5.0], 
-                                                  %w(A B C D E), :stacked)
-
-s.plot('series1', [1.0, 4.0, 6.0, 1.0, 7.0], 'red')
-s.plot('series2', [0.0, 3.0, 7.0, 9.3, 2.0], 'green')
-s.title "Stacked diagram"
-
-###############################
-
-s = Tk::Tcllib::Plotchart::Timechart.new(vc3, "1 january 2004", 
-                                              "31 december 2004", 4)
-
-s.period("Spring", "1 march 2004", "1 june 2004", 'green')
-s.period("Summer", "1 june 2004", "1 september 2004", 'yellow')
-s.vertline("1 jan", "1 january 2004")
-s.vertline("1 apr", "1 april 2004")
-s.vertline("1 jul", "1 july 2004")
-s.vertline("1 oct", "1 october 2004")
-s.milestone("Longest day", "21 july 2004")
-s.title "Seasons (northern hemisphere)"
-
-###############################
-
-z = TkToplevel.new(:title=>'3D')
-
-zc1 = TkCanvas.new(z, :background=>'white', :width=>400, :height=>300)
-zc2 = TkCanvas.new(z, :background=>'white', :width=>400, :height=>250)
-Tk.pack(zc1,zc2)
-
-s = Tk::Tcllib::Plotchart::Plot3D.new(zc1, 
-                                      [0, 10, 3], [-10, 10, 10], [0, 10, 2.5])
-
-s.title "3D Plot"
-s.plot_function{|x, y|
-  # cowboyhat
-  x1 = x.to_f/9.0
-  y1 = y.to_f/9.0
-  3.0 * (1.0-(x1*x1+y1*y1))*(1.0-(x1*x1+y1*y1))
-}
-
-s = Tk::Tcllib::Plotchart::Plot3D.new(zc2, 
-                                      [0, 10, 3], [-10, 10, 10], [0, 10, 2.5])
-s.title "3D Plot - data "
-s.colour("green", "black")
-s.plot_data([ [1.0, 2.0, 1.0, 0.0], 
-              [1.1, 3.0, 1.1, -0.5], 
-              [3.0, 1.0, 4.0, 5.0] ])
-
-###############################
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/plotdemos2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/plotdemos2.rb
deleted file mode 100644 (file)
index 33a6f29..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/usr/bin/ruby
-
-require 'tk'
-require 'tkextlib/tcllib/plotchart'
-
-###############################
-
-c1 = TkCanvas.new(:background=>'white', :width=>400, :height=>200)
-c2 = TkCanvas.new(:background=>'white', :width=>400, :height=>200)
-Tk.pack(c1,c2, :fill=>:both, :side=>:top)
-
-###############################
-# Set up a strip chart
-###############################
-slipchart = Tk::Tcllib::Plotchart::Stripchart.new(c1, [0.0, 100.0, 10.0], 
-                                                      [0.0, 100.0, 20.0])
-
-TkTimer.new(500, -1, proc{|obj| # obj --> TkTimer object
-              slipchart, xold, xd, yold, yd = obj.return_value
-              xnew = xold + xd
-              ynew = yold + (rand() - 0.5) * yd
-              ynew2 = yold + (rand() - 0.5) * 2.0 * yd
-              slipchart.plot('series1', xnew, ynew)
-              slipchart.plot('series2', xnew, ynew2)
-              obj.stop if xnew >= 200
-              [slipchart, xnew, xd, ynew, yd] # return_value
-            }).start(100, proc{
-                       # init return_value
-                       [slipchart, 0.0, 15.0, 50.0, 30.0]
-                     })
-
-slipchart.title "Aha!"
-
-###############################
-# Set up an isometric plot
-###############################
-s = Tk::Tcllib::Plotchart::IsometricPlot.new(c2, [0.0, 100.0], [0.0, 200.0], 
-                                             :noaxes)
-
-s.set_zoom_pan
-
-s.plot('rectangle',        [10.0, 10.0, 50.0, 50.0], 'green')
-s.plot('filled-rectangle', [20.0, 20.0, 40.0, 40.0], 'red')
-s.plot('filled-circle',    [70.0, 70.0, 40.0], 'yellow')
-s.plot('circle',           [70.0, 70.0, 42.0])
-
-###############################
-# Check the symbols
-###############################
-h = TkToplevel.new(:title=>'h')
-c = TkCanvas.new(h, :bg=>'white', :width=>400, :height=>200).pack(:fill=>:both)
-
-s = Tk::Tcllib::Plotchart::XYPlot.new(c, [0.0, 100.0, 10.0], 
-                                         [0.0, 100.0, 20.0]) 
-s.dataconfig('series1', :colour=>'red',   :type=>:symbol)
-s.dataconfig('series2', :colour=>'green', :type=>:both)
-
-s.yconfig(:format=>"%12.2e")
-
-x = 5.0
-%w(plus cross circle up down dot upfilled downfilled).each{|sym|
-  s.dataconfig('series1', :symbol=>sym)
-  s.dataconfig('series2', :symbol=>sym)
-  s.plot('series1', x, 50.0)
-  s.plot('series2', x, 20)
-  x += 10
-}
-
-##############################
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/plotdemos3.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/plotdemos3.rb
deleted file mode 100644 (file)
index 2b5c764..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/usr/bin/ruby
-
-require 'tk'
-require 'tkextlib/tcllib/plotchart'
-
-###############################
-# Set up a strip chart
-###############################
-
-Tk::Tcllib::Plotchart::Stripchart.new([0.0, 100.0, 10.0], 
-                                      [0.0, 100.0, 20.0], 
-                                      :background=>'white', 
-                                      :width=>400, :height=>200){|chart|
-  title "Aha!"
-  pack(:fill=>:both, :side=>:top)
-
-  series1 = Tk::Tcllib::Plotchart::PlotSeries.new(chart)
-  series2 = Tk::Tcllib::Plotchart::PlotSeries.new(chart)
-
-  xd = 15.0
-  yd = 30.0
-
-  TkTimer.new(500, -1, proc{|obj| # obj --> TkTimer object
-                xold, yold = obj.return_value
-                xnew = xold + xd
-                ynew = yold + (rand() - 0.5) * yd
-                ynew2 = yold + (rand() - 0.5) * 2.0 * yd
-
-                series1.plot(xnew, ynew)
-                series2.plot(xnew, ynew2)
-
-                obj.stop if xnew >= 200
-
-                [xnew, ynew] # return_value
-              }).start(100, proc{ [0.0, 50.0] }) # init return_value
-}
-
-###############################
-# Set up an isometric plot
-###############################
-Tk::Tcllib::Plotchart::IsometricPlot.new([0.0, 100.0], [0.0, 200.0], :noaxes, 
-                                         :background=>'white', 
-                                         :width=>400, :height=>200){|chart|
-  pack(:fill=>:both, :side=>:top)
-  set_zoom_pan
-
-  chart.plot('rectangle',        [10.0, 10.0, 50.0, 50.0], 'green')
-  chart.plot('filled-rectangle', [20.0, 20.0, 40.0, 40.0], 'red')
-  chart.plot('filled-circle',    [70.0, 70.0, 40.0], 'yellow')
-  chart.plot('circle',           [70.0, 70.0, 42.0])
-}
-
-###############################
-# Check the symbols
-###############################
-TkToplevel.new(:title=>'h'){|h|
-  Tk::Tcllib::Plotchart::XYPlot.new(h, [0.0, 100.0, 10.0], 
-                                       [0.0, 100.0, 20.0], 
-                                    :bg=>'white', 
-                                    :width=>400, :height=>200){|chart|
-    pack(:fill=>:both)
-
-    yconfig(:format=>"%12.2e")
-
-    series1 = Tk::Tcllib::Plotchart::PlotSeries.new(chart, :colour=>'red', 
-                                                    :type=>:symbol)
-    series2 = Tk::Tcllib::Plotchart::PlotSeries.new(chart, :colour=>'green', 
-                                                    :type=>:both)
-
-    x = 5.0
-    %w(plus cross circle up down dot upfilled downfilled).each{|sym|
-      series1.dataconfig(:symbol=>sym)
-      series2.dataconfig(:symbol=>sym)
-      series1.plot(x, 50.0)
-      series2.plot(x, 20)
-      x += 10
-    }
-  }
-}
-
-##############################
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/xyplot.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tcllib/xyplot.rb
deleted file mode 100644 (file)
index 8f8c3eb..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/ruby
-
-require 'tk'
-require 'tkextlib/tcllib/plotchart'
-
-TkCanvas.new(:background=>'white', :width=>400, :height=>200){|c|
-  pack(:fill=>:both)
-  Tk::Tcllib::Plotchart::XYPlot.new(c, [0.0, 100.0, 10.0], 
-                                       [0.0, 100.0, 20.0]){
-    [ [0.0, 32.0], [10.0, 50.0], [25.0, 60.0], [78.0, 11.0] ].each{|x, y|
-      plot('series1', x, y)
-    }
-    title("Data series")
-  }
-}
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/Orig_LICENSE.txt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/Orig_LICENSE.txt
deleted file mode 100644 (file)
index 2326ef2..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-
-  ######################################################################
-  ###  The following text is the original 'license.terms' of tile    ###
-  ###  extension.                                                    ###
-  ######################################################################
-
-
-LICENSE ("MIT-style")
-
-This software is Copyright (C) 2003 Joe English and other parties.
-
-The following terms apply to all files associated with this software
-unless explicitly disclaimed in individual files.  
-
-The author(s) hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS for a PARTICULAR PURPOSE.  IN NO EVENT
-shall the AUTHORS of THIS SOFTWARE be LIABLE to ANY PARTY for
-DIRECT, INDIRECT, SPECIAL, INCIDENTAL, or CONSEQUENTIAL DAMAGES
-arising out of the USE of THIS SOFTWARE and its DOCUMENTATION.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/demo.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/demo.rb
deleted file mode 100644 (file)
index 633a072..0000000
+++ /dev/null
@@ -1,983 +0,0 @@
-#!/usr/bin/env ruby
-#
-# Demo for 'tile' package.
-#
-require 'tk'
-
-demodir = File.dirname($0)
-themesdir = File.join(demodir, 'themes')
-Tk::AUTO_PATH.lappend('.', demodir, themesdir)
-
-Dir.foreach(themesdir){|name|
-  next if name == '.' || name == '..'
-  dir = File.join(themesdir, name)
-  Tk::AUTO_PATH.lappend(dir) if File.directory?(dir)
-}
-
-require 'tkextlib/tile'
-
-def version?(ver)
-  TkPackage.vcompare(Tk::Tile.package_version, ver) >= 0
-end
-
-# define Tcl/Tk procedures for compatibility
-Tk::Tile.__define_LoadImages_proc_for_compatibility__!
-Tk::Tile::Style.__define_wrapper_proc_for_compatibility__!
-
-unless Tk::Tile::Style.theme_names.include?('step')
-  Tk::Tile::Style.theme_create('step')
-end
-
-Tk.load_tclscript(File.join(demodir, 'toolbutton.tcl'))
-Tk.load_tclscript(File.join(demodir, 'repeater.tcl'))
-
-# This forces an update of the available packages list. It's required
-# for package names to find the themes in demos/themes/*.tcl
-## Tk.tk_call(TkPackage.unknown_proc, 'Tcl', TkPackage.provide('Tcl'))
-##  --> This doesn't work. 
-##      Because, unknown_proc may be "command + some arguments".
-Tk.ip_eval("#{TkPackage.unknown_proc}  Tcl #{TkPackage.provide('Tcl')}")
-
-TkRoot.new{
-  title 'Tile demo'
-  iconname 'Tile demo'
-}
-
-# The descriptive names of the builtin themes.
-$THEMELIST = [
-  ['default', 'Default'], 
-  ['classic', 'Classic'], 
-  ['alt', 'Revitalized'], 
-  ['winnative', 'Windows native'], 
-  ['xpnative', 'XP Native'], 
-  ['aqua', 'Aqua'], 
-]
-
-$V = TkVariable.new_hash(:THEME      => 'default', 
-                         :COMPOUND   => 'top', 
-                         :CONSOLE    => false, 
-                         :MENURADIO1 => 'One', 
-                         :MENUCHECK1 => true,
-                         :PBMODE     => 'determinate',
-                         :SELECTED   => true,
-                         :CHOICE     => 2)
-
-# Add in any available loadable themes.
-TkPackage.names.find_all{|n| n =~ /^(tile|ttk)::theme::/}.each{|pkg|
-  name = pkg.split('::')[-1]
-  unless $THEMELIST.assoc(name)
-    $THEMELIST << [name, Tk.tk_call('string', 'totitle', name)]
-  end
-}
-
-# Add theme definition written by ruby
-$RUBY_THEMELIST = []
-begin
-  load(File.join(demodir, 'themes', 'kroc.rb'), true)
-rescue => e
-raise e
-  $RUBY_THEMELIST << ['kroc-rb', 'Kroc (by Ruby)', false]
-else
-  $RUBY_THEMELIST << ['kroc-rb', 'Kroc (by Ruby)', true]
-end
-
-def makeThemeControl(parent)
-  c = Tk::Tile::Labelframe.new(parent, :text=>'Theme')
-  $THEMELIST.each{|theme, name|
-    b = Tk::Tile::Radiobutton.new(c, :text=>name, :value=>theme, 
-                                  :variable=>$V.ref(:THEME), 
-                                  :command=>proc{setTheme(theme)})
-    b.grid(:sticky=>:ew)
-    unless (TkPackage.names.find{|n| n =~ /(tile|ttk)::theme::#{theme}/})
-      b.ttk_state(:disabled)
-    end
-  }
-  $RUBY_THEMELIST.each{|theme, name, available|
-    b = Tk::Tile::Radiobutton.new(c, :text=>name, :value=>theme, 
-                                  :variable=>$V.ref(:THEME), 
-                                  :command=>proc{setTheme(theme)})
-    b.grid(:sticky=>:ew)
-    b.ttk_state(:disabled) unless available
-  }
-  c
-end
-
-def makeThemeMenu(parent)
-  m = TkMenu.new(parent)
-  $THEMELIST.each{|theme, name|
-    m.add(:radiobutton, :label=>name, :variable=>$V.ref(:THEME), 
-          :value=>theme, :command=>proc{setTheme(theme)})
-    unless (TkPackage.names.find{|n| n =~ /(tile|ttk)::theme::#{theme}/})
-      m.entryconfigure(:end, :state=>:disabled)
-    end
-  }
-  $RUBY_THEMELIST.each{|theme, name, available|
-    m.add(:radiobutton, :label=>name, :variable=>$V.ref(:THEME), 
-          :value=>theme, :command=>proc{setTheme(theme)})
-    m.entryconfigure(:end, :state=>:disabled) unless available
-  }
-  m
-end
-
-def setTheme(theme)
-  if (pkg = TkPackage.names.find{|n| n =~ /(tile|ttk)::theme::#{theme}/})
-    unless Tk::Tile::Style.theme_names.find{|n| n == theme}
-      TkPackage.require(pkg)
-    end
-  end
-  Tk::Tile::Style.theme_use(theme)
-end
-
-#
-# Load icons...
-#
-$BUTTONS = ['open', 'new', 'save']
-$CHECKBOXES = ['bold', 'italic']
-$ICON = {}
-
-def loadIcons(file)
-  Tk.load_tclscript(file)
-  img_data = TkVarAccess.new('ImgData')
-  img_data.keys.each{|icon|
-    $ICON[icon] = TkPhotoImage.new(:data=>img_data[icon])
-  }
-end
-
-loadIcons(File.join(demodir, 'iconlib.tcl'))
-
-#
-# Utilities:
-#
-def foreachWidget(wins, cmd)
-  wins.each{|w|
-    cmd.call(w)
-    foreachWidget(w.winfo_children, cmd)
-  }
-end
-
-# sbstub
-#      Used as the :command option for a scrollbar,
-#      updates the scrollbar's position.
-#
-def sbstub(sb, cmd, num, units = 'units')
-  num = TkComm.number(num)
-  case cmd.to_s
-  when 'moveto'
-    sb.set(num, num+0.5)
-
-  when 'scroll'
-    if units.to_s == 'pages'
-      delta = 0.2
-    else
-      delta = 0.05
-    end
-    current = sb.get
-    sb.set(current[0] + delta * num, current[1] + delta * num)
-  end
-end    
-
-# ... for debugging:
-TkBindTag::ALL.bind('ButtonPress-3', proc{|w| $W = w}, '%W')
-TkBindTag::ALL.bind('Control-ButtonPress-3', proc{|w| w.set_focus}, '%W')
-
-def showHelp()
-  Tk.messageBox(:message=>'No help yet...')
-end
-
-#
-# See toolbutton.tcl.
-TkOption.add('*Toolbar.relief', :groove)
-TkOption.add('*Toolbar.borderWidth', 2)
-
-TkOption.add('*Toolbar.Button.Pad', 2)
-
-$ROOT = Tk.root
-$BASE = $ROOT
-Tk.destroy(*($ROOT.winfo_children))
-
-$TOOLBARS = []
-
-#
-# Toolbar button standard vs. tile comparison:
-#
-def makeToolbars
-  #
-  # Tile toolbar:
-  #
-  tb = Tk::Tile::Frame.new($BASE, :class=>'Toolbar')
-  $TOOLBARS << tb
-  i = 0
-  $BUTTONS.each{|icon|
-    i += 1
-    Tk::Tile::Button.new(tb, :text=>icon, :image=>$ICON[icon], 
-                         :compound=>$V[:COMPOUND], 
-                         :style=>:Toolbutton).grid(:row=>0, :column=>i, 
-                                                   :sticky=>:news)
-  }
-  $CHECKBOXES.each{|icon|
-    i += 1
-    Tk::Tile::Checkbutton.new(tb, :text=>icon, :image=>$ICON[icon], 
-                              :variable=>$V.ref(icon), 
-                              :compound=>$V[:COMPOUND], 
-                              :style=>:Toolbutton).grid(:row=>0, :column=>i, 
-                                                        :sticky=>:news)
-  }
-
-  mb = Tk::Tile::Menubutton.new(tb, :text=>'toolbar', :image=>$ICON['file'], 
-                                :compound=>$V[:COMPOUND])
-  mb.configure(:menu=>makeCompoundMenu(mb))
-  i += 1
-  mb.grid(:row=>0, :column=>i, :sticky=>:news)
-
-  i += 1
-  tb.grid_columnconfigure(i, :weight=>1)
-
-  #
-  # Standard toolbar:
-  #
-  tb = TkFrame.new($BASE, :class=>'Toolbar')
-  $TOOLBARS << tb
-  i = 0
-  $BUTTONS.each{|icon|
-    i += 1
-    TkButton.new(tb, :text=>icon, :image=>$ICON[icon], 
-                 :compound=>$V[:COMPOUND], :relief=>:flat, 
-                 :overrelief=>:raised).grid(:row=>0, :column=>i, 
-                                            :sticky=>:news)
-  }
-  $CHECKBOXES.each{|icon|
-    i += 1
-    TkCheckbutton.new(tb, :text=>icon, :image=>$ICON[icon], 
-                      :variable=>$V.ref(icon), :compound=>$V[:COMPOUND], 
-                      :indicatoron=>false, :selectcolor=>'', :relief=>:flat, 
-                      :overrelief=>:raised).grid(:row=>0, :column=>i, 
-                                                 :sticky=>:news)
-  }
-
-  mb = TkMenubutton.new(tb, :text=>'toolbar', :image=>$ICON['file'], 
-                        :compound=>$V[:COMPOUND])
-  mb.configure(:menu=>makeCompoundMenu(mb))
-  i += 1
-  mb.grid(:row=>0, :column=>i, :sticky=>:news)
-
-  i += 1
-  tb.grid_columnconfigure(i, :weight=>1)
-end
-
-#
-# Toolbar :compound control:
-#
-def makeCompoundMenu(mb)
-  menu = TkMenu.new(mb)
-  %w(text image none top bottom left right center).each{|str|
-    menu.add(:radiobutton, :label=>Tk.tk_call('string', 'totitle', str), 
-             :variable=>$V.ref(:COMPOUND), :value=>str, 
-             :command=>proc{ changeToolbars() })
-  }
-  menu
-end
-
-makeToolbars()
-
-## CONTROLS
-control = Tk::Tile::Frame.new($BASE)
-
-#
-# Overall theme control:
-#
-makeThemeControl(control).grid(:sticky=>:news, :padx=>6, :ipadx=>6)
-control.grid_rowconfigure(99, :weight=>1)
-
-def changeToolbars
-  foreachWidget($TOOLBARS, 
-                proc{|w|
-                  begin
-                    w.compound($V[:COMPOUND])
-                  rescue
-                  end
-                })
-end
-
-def scrolledWidget(parent, klass, themed, *args)
-  if themed
-    f = Tk::Tile::Frame.new(parent)
-    t = klass.new(f, *args)
-    vs = Tk::Tile::Scrollbar.new(f)
-    hs = Tk::Tile::Scrollbar.new(f)
-  else
-    f = TkFrame.new(parent)
-    t = klass.new(f, *args)
-    vs = TkScrollbar.new(f)
-    hs = TkScrollbar.new(f)
-  end
-  t.yscrollbar(vs)
-  t.xscrollbar(hs)
-
-  TkGrid.configure(t, vs, :sticky=>:news)
-  TkGrid.configure(hs, 'x', :sticky=>:news)
-  TkGrid.rowconfigure(f, 0, :weight=>1)
-  TkGrid.columnconfigure(f, 0, :weight=>1)
-
-  [f, t]
-end
-
-#
-# Notebook demonstration:
-#
-def makeNotebook
-  nb = Tk::Tile::Notebook.new($BASE, :padding=>6)
-  nb.enable_traversal
-  client = Tk::Tile::Frame.new(nb)
-  nb.add(client, :text=>'Demo', :underline=>0)
-  nb.select(client)
-
-  scales = Tk::Tile::Frame.new(nb)
-  nb.add(scales, :text=>'Scales')
-  combo = Tk::Tile::Frame.new(nb)
-  nb.add(combo, :text=>'Combobox', :underline=>7)
-  tree = Tk::Tile::Frame.new(nb)
-  nb.add(tree, :text=>'Tree')
-  others = Tk::Tile::Frame.new(nb)
-  nb.add(others, :text=>'Others', :underline=>4)
-
-  [nb, client, scales, combo, tree, others]
-end
-
-nb, client, scales, combo, tree, others = makeNotebook()
-
-#
-# Side-by side check, radio, and menu button comparison:
-#
-def fillMenu(menu)
-  %w(above below left right flush).each{|dir|
-    menu.add(:command, :label=>Tk.tk_call('string', 'totitle', dir), 
-             :command=>proc{ menu.winfo_parent.direction(dir) })
-  }
-  menu.add(:cascade, :label=>'Submenu', :menu=>(submenu = TkMenu.new(menu)))
-  submenu.add(:command, :label=>'Subcommand 1')
-  submenu.add(:command, :label=>'Subcommand 2')
-  submenu.add(:command, :label=>'Subcommand 3')
-
-  menu.add(:separator)
-  menu.add(:command, :label=>'Quit', :command=>proc{Tk.root.destroy})
-end
-
-l = Tk::Tile::Labelframe.new(client, :text=>'Themed', :padding=>6)
-r = TkLabelframe.new(client, :text=>'Standard', :padx=>6, :pady=>6)
-
-## Styled frame
-cb = Tk::Tile::Checkbutton.new(l, :text=>'Checkbutton', 
-                               :variable=>$V.ref(:SELECTED), :underline=>2)
-rb1 = Tk::Tile::Radiobutton.new(l, :text=>'One', :variable=>$V.ref(:CHOICE), 
-                                :value=>1, :underline=>0)
-rb2 = Tk::Tile::Radiobutton.new(l, :text=>'Two', :variable=>$V.ref(:CHOICE), 
-                                :value=>2)
-rb3 = Tk::Tile::Radiobutton.new(l, :text=>'Three', 
-                                :variable=>$V.ref(:CHOICE), 
-                                :value=>3, :underline=>0)
-btn = Tk::Tile::Button.new(l, :text=>'Button', :underline=>0)
-
-mb = Tk::Tile::Menubutton.new(l, :text=>'Menubutton', :underline=>2)
-m = TkMenu.new(mb)
-mb.menu(m)
-fillMenu(m)
-
-$entryText = TkVariable.new('Entry widget')
-e = Tk::Tile::Entry.new(l, :textvariable=>$entryText)
-e.selection_range(6, :end)
-
-ltext_f, ltext = scrolledWidget(l, TkText, true, 
-                                :width=>12, :height=>5, :wrap=>:none)
-# NOTE TO MAINTAINERS: 
-# The checkbuttons are -sticky ew / -expand x  on purpose:
-# it demonstrates one of the differences between TCheckbuttons
-# and standard checkbuttons.
-#
-Tk.grid(cb, :sticky=>:ew)
-Tk.grid(rb1, :sticky=>:ew)
-Tk.grid(rb2, :sticky=>:ew)
-Tk.grid(rb3, :sticky=>:ew)
-Tk.grid(btn, :sticky=>:ew, :padx=>2, :pady=>2)
-Tk.grid(mb, :sticky=>:ew, :padx=>2, :pady=>2)
-Tk.grid(e, :sticky=>:ew, :padx=>2, :pady=>2)
-Tk.grid(ltext_f, :sticky=>:news)
-
-TkGrid.columnconfigure(l, 0, :weight=>1)
-TkGrid.rowconfigure(l, 7, :weight=>1) # text widget (grid is a PITA)
-
-## Orig frame
-cb = TkCheckbutton.new(r, :text=>'Checkbutton', :variable=>$V.ref(:SELECTED))
-rb1 = TkRadiobutton.new(r, :text=>'One', 
-                        :variable=>$V.ref(:CHOICE), :value=>1)
-rb2 = TkRadiobutton.new(r, :text=>'Two', :variable=>$V.ref(:CHOICE), 
-                        :value=>2, :underline=>1)
-rb3 = TkRadiobutton.new(r, :text=>'Three', 
-                        :variable=>$V.ref(:CHOICE), :value=>3)
-btn = TkButton.new(r, :text=>'Button')
-
-mb = TkMenubutton.new(r, :text=>'Menubutton', :underline=>3, :takefocus=>true)
-m = TkMenu.new(mb)
-mb.menu(m)
-$V[:rmbIndicatoron] = mb.indicatoron
-m.add(:checkbutton, :label=>'Indicator?', #'
-      :variable=>$V.ref(:rmbIndicatoron), 
-      :command=>proc{mb.indicatoron($V[:rmbIndicatoron])})
-m.add(:separator)
-fillMenu(m)
-
-e = TkEntry.new(r, :textvariable=>$entryText)
-
-rtext_f, rtext = scrolledWidget(r, TkText, false, 
-                                :width=>12, :height=>5, :wrap=>:none)
-
-Tk.grid(cb, :sticky=>:ew)
-Tk.grid(rb1, :sticky=>:ew)
-Tk.grid(rb2, :sticky=>:ew)
-Tk.grid(rb3, :sticky=>:ew)
-Tk.grid(btn, :sticky=>:ew, :padx=>2, :pady=>2)
-Tk.grid(mb, :sticky=>:ew, :padx=>2, :pady=>2)
-Tk.grid(e, :sticky=>:ew, :padx=>2, :pady=>2)
-Tk.grid(rtext_f, :sticky=>:news)
-
-TkGrid.columnconfigure(l, 0, :weight=>1)
-TkGrid.rowconfigure(l, 7, :weight=>1) # text widget (grid is a PITA)
-
-Tk.grid(l, r, :sticky=>:news, :padx=>6, :pady=>6)
-TkGrid.rowconfigure(client, 0, :weight=>1)
-TkGrid.columnconfigure(client, [0, 1], :weight=>1)
-
-#
-# Add some text to the text boxes:
-#
-msgs = [
-"The cat crept into the crypt, crapped and crept out again", 
-"Peter Piper picked a peck of pickled peppers", 
-"How much wood would a woodchuck chuck if a woodchuck could chuck wood", 
-"He thrusts his fists against the posts and still insists he sees the ghosts",
-"Who put the bomb in the bom-b-bom-b-bom,",
-"Is this your sister's sixth zither, sir?",
-"Who put the ram in the ramalamadingdong?",
-"I am not the pheasant plucker, I'm the pheasant plucker's mate."
-]
-
-nmsgs = msgs.size
-(0...50).each{|n|
-  msg = msgs[n % nmsgs]
-  ltext.insert(:end, "#{n}: #{msg}\n")
-  rtext.insert(:end, "#{n}: #{msg}\n")
-}
-#
-# Scales and sliders pane:
-#
-l = Tk::Tile::Labelframe.new(scales, :text=>'Themed', :padding=>6)
-r = TkLabelframe.new(scales, :text=>'Standard', :padx=>6, :pady=>6)
-
-if version?('0.6')
-
-  # thremed frame
-  scale = Tk::Tile::Scale.new(l, :orient=>:horizontal, :from=>0, :to=>100,
-          :variable=>$V.ref(:SCALE))
-  vscale = Tk::Tile::Scale.new(l, :orient=>:vertical, :from=>0, :to=>100,
-          :variable=>$V.ref(:VSCALE))
-  progress = Tk::Tile::Progressbar.new(l, :orient=>:horizontal, :maximum=>100)
-  vprogress = Tk::Tile::Progressbar.new(l, :orient=>:vertical, :maximum=>100)
-
-  if true
-    def progress.inverted(w, value)
-      if w.mode == 'indeterminate'
-        w.value(value)
-      else
-        w.value(w.maximum - value)
-      end
-    end
-    scale.command {|value| progress.value(value)}
-    vscale.command {|value| progress.inverted(vprogress, value) }
-  else
-    # This would also work, but the Tk scale widgets 
-    # in the right hand pane cause some interference when 
-    # in autoincrement/indeterminate mode.
-    #
-    progress.variable $V.ref(:SCALE)
-    vprogress.variable $V.ref(:VSCALE)
-  end
-
-  scale.set(50)
-  vscale.set(50)
-
-  lmode = Tk::Tile::Label.new(l, :text=>'Progress bar mode')
-  pbmode0 = Tk::Tile::Radiobutton.new(l, :variable=>$V.ref(:PBMODE),
-          :text=>'determinate', :value=>'determinate',
-          :command=>proc{pbMode(progress, vprogress)})
-  pbmode1 = Tk::Tile::Radiobutton.new(l, :variable=>$V.ref(:PBMODE),
-          :text=>'indeterminate', :value=>'indeterminate',
-          :command=>proc{pbMode(progress, vprogress)})
-  def pbMode(progress, vprogress)
-    if vprogress.mode != $V[:PBMODE]
-      vprogress.value(vprogress.maximum - vprogress.value)
-    end
-
-    progress.mode $V[:PBMODE]
-    vprogress.mode $V[:PBMODE]
-  end
-
-  start = Tk::Tile::Button.new(l, :text=>"Start",
-          :command=>proc{pbStart(progress, vprogress)})
-  def pbStart(progress, vprogress)
-    # $V[:PBMODE] = 'indeterminate'
-    pbMode(progress, vprogress)
-    progress.start 10
-    vprogress.start
-  end
-
-  stop = Tk::Tile::Button.new(l, :text=>'Stop',
-          :command=>proc{pbStop(progress, vprogress)})
-  def pbStop(progress, vprogress)
-    progress.stop
-    vprogress.stop
-  end
-
-  Tk.grid(scale, :columnspan=>2, :sticky=>'ew')
-  Tk.grid(progress, :columnspan=>2, :sticky=>'ew')
-  Tk.grid(vscale, vprogress, :sticky=>'nws')
-
-  Tk.grid(lmode, :sticky=>'we', :columnspan=>2)
-  Tk.grid(pbmode0, :sticky=>'we', :columnspan=>2)
-  Tk.grid(pbmode1, :sticky=>'we', :columnspan=>2)
-  Tk.grid(start, :sticky=>'we', :columnspan=>2)
-  Tk.grid(stop, :sticky=>'we', :columnspan=>2)
-
-  l.grid_columnconfigure(0, :weight=>1)
-  l.grid_columnconfigure(1, :weight=>1)
-  l.grid_rowconfigure(99, :weight=>1)
-
-  # standard frame
-  TkScale.new(r, :orient=>:horizontal, :from=>0, :to=>100,
-          :variable=>$V.ref(:SCALE)).grid(:sticky=>'news')
-  TkScale.new(r, :orient=>:vertical, :from=>0, :to=>100,
-          :variable=>$V.ref(:VSCALE)).grid(:sticky=>'nws')
-
-  r.grid_columnconfigure(0, :weight=>1)
-  r.grid_columnconfigure(1, :weight=>1)
-  r.grid_rowconfigure(99, :weight=>1)
-
-else # tile 0.5 or earlier
-
-  # themed frame
-  scale = Tk::Tile::Scale.new(l, :variable=>$V.ref(:SCALE),
-          :orient=>:horizontal, :from=>0, :to=>100)
-  vscale = Tk::Tile::Scale.new(l, :variable=>$V.ref(:VSCALE),
-          :orient=>:vertical, :from=>-25, :to=>25)
-
-  progress = Tk::Tile::Progress.new(l,
-          :orient=>:horizontal, :from=>0, :to=>100)
-  vprogress = Tk::Tile::Progress.new(l,
-          :orient=>:vertical, :from=>-25, :to=>25)
-
-  if true
-    scale.command{|value| progress.set(value)}
-    vscale.command{|value| vprogress.set(value)}
-  else # this would also work. (via TkVariable#trace)
-    v1 = scale.variable
-    v2 = vscale.variable
-    v1.trace('w', proc{ progress.set(v1.value) })
-    v2.trace('w', proc{ vprogress.set(v2.value) })
-  end
-
-  Tk.grid(scale, :columnspan=>2, :sticky=>:ew)
-  Tk.grid(progress, :columnspan=>2, :sticky=>:ew)
-  Tk.grid(vscale, vprogress, :sticky=>:nws)
-  TkGrid.columnconfigure(l, 0, :weight=>1)
-  TkGrid.columnconfigure(l, 1, :weight=>1)
-
-  # standard frame
-  TkScale.new(r, :variable=>$V.ref(:SCALE),
-          :orient=>:horizontal, :from=>0, :to=>100).grid(:sticky=>'news')
-  TkScale.new(r, :variable=>$V.ref(:VSCALE),
-          :orient=>:vertical, :from=>-25, :to=>25).grid(:sticky=>'nws')
-
-  TkGrid.columnconfigure(r, 0, :weight=>1)
-  TkGrid.columnconfigure(r, 1, :weight=>1)
-end
-
-# layout frames
-Tk.grid(l, r, :sticky=>'nwes', :padx=>6, :pady=>6)
-scales.grid_columnconfigure(0, :weight=>1)
-scales.grid_columnconfigure(1, :weight=>1)
-scales.grid_rowconfigure(0, :weight=>1)
-
-#
-# Command box:
-#
-cmd = Tk::Tile::Frame.new($BASE)
-b_close = Tk::Tile::Button.new(cmd, :text=>'Close', 
-                               :underline=>0, :default=>:normal, 
-                               :command=>proc{Tk.root.destroy})
-b_help = Tk::Tile::Button.new(cmd, :text=>'Help', :underline=>0, 
-                              :default=>:normal, :command=>proc{showHelp()})
-Tk.grid('x', b_close, b_help, :pady=>[6, 4], :padx=>4)
-TkGrid.columnconfigure(cmd, 0, :weight=>1)
-
-#
-# Set up accelerators:
-#
-$ROOT.bind('KeyPress-Escape', proc{Tk.event_generate(b_close, '<Invoke>')})
-$ROOT.bind('<Help>', proc{Tk.event_generate(b_help, '<Invoke>')})
-Tk::Tile::KeyNav.enableMnemonics($ROOT)
-Tk::Tile::KeyNav.defaultButton(b_help)
-
-Tk.grid($TOOLBARS[0], '-', :sticky=>:ew)
-Tk.grid($TOOLBARS[1], '-', :sticky=>:ew)
-Tk.grid(control,      nb,  :sticky=>:news)
-Tk.grid(cmd,          '-', :sticky=>:ew)
-TkGrid.columnconfigure($ROOT, 1, :weight=>1)
-TkGrid.rowconfigure($ROOT, 2, :weight=>1)
-
-#
-# Add a menu
-#
-menu = TkMenu.new($BASE)
-$ROOT.menu(menu)
-m_file = TkMenu.new(menu, :tearoff=>0)
-menu.add(:cascade, :label=>'File', :underline=>0, :menu=>m_file)
-m_file.add(:command, :label=>'Open', :underline=>0, 
-           :compound=>:left, :image=>$ICON['open'])
-m_file.add(:command, :label=>'Save', :underline=>0, 
-           :compound=>:left, :image=>$ICON['save'])
-m_file.add(:separator)
-m_f_test = TkMenu.new(menu, :tearoff=>0)
-m_file.add(:cascade, :label=>'Test submenu', :underline=>0, :menu=>m_f_test)
-m_file.add(:checkbutton, :label=>'Text check', :underline=>5, 
-           :variable=>$V.ref(:MENUCHECK1))
-m_file.insert(:end, :separator)
-
-if Tk.windowingsystem != 'x11'
-  TkConsole.create
-  m_file.insert(:end, :checkbutton, :label=>'Console', :underline=>5, 
-                :variable=>$V.ref(:CONSOLE), :command=>proc{toggle_console()})
-  def toggle_console
-    if TkComm.bool($V[:CONSOLE])
-      TkConsole.show
-    else
-      TkConsole.hide
-    end
-  end
-end
-
-m_file.add(:command, :label=>'Exit', :underline=>1, 
-           :command=>proc{Tk.event_generate(b_close, '<Invoke>')})
-
-%w(One Two Three Four).each{|lbl|
-  m_f_test.add(:radiobutton, :label=>lbl, :variable=>$V.ref(:MENURADIO1))
-}
-
-# Add Theme menu.
-#
-menu.add(:cascade, :label=>'Theme', :underline=>3, 
-         :menu=>makeThemeMenu(menu))
-
-setTheme($V[:THEME])
-
-#
-# Combobox demo pane:
-#
-values = %w(list abc def ghi jkl mno pqr stu vwx yz)
-2.times {|i|
-  cb = Tk::Tile::Combobox.new(
-    combo, :values=>values, :textvariable=>$V.ref(:COMBO))
-  cb.pack(:side=>:top, :padx=>2, :pady=>2, :expand=>false, :fill=>:x)
-  if i == 1
-    cb.ttk_state :readonly
-    begin
-      cb.current = 3 # ignore if unsupported (tile0.4)
-    rescue
-    end
-  end
-}
-
-#
-# Treeview widget demo pane:
-#
-if version?('0.5')
-
-  treeview = nil # avoid 'undefined' error
-  scrollbar = Tk::Tile::Scrollbar.new(tree,
-      :command=>proc{|*args| treeview.yview(*args)})
-  treeview = Tk::Tile::Treeview.new(tree, :columns=>%w(Class), :padding=>4,
-      :yscrollcommand=>proc{|*args| scrollbar.set(*args)})
-
-  Tk.grid(treeview, scrollbar, :sticky=>'news')
-  tree.grid_columnconfigure(0, :weight=>1)
-  tree.grid_rowconfigure(0, :weight=>1)
-  tree.grid_propagate(0)
-
-  # Add initial tree node: 
-  # Later nodes will be added in <<TreeviewOpen>> binding.
-  treeview.insert('', 0, :id=>'.', :text=>'Main Window', :open=>false,
-      :values=>[TkWinfo.classname('.')])
-  treeview.headingconfigure('#0', :text=>'Widget')
-  treeview.headingconfigure('Class', :text=>'Class')
-  treeview.bind('<TreeviewOpen>', proc{fillTree(treeview)})
-
-  def fillTree(treeview)
-    id = treeview.focus_item
-    unless TkWinfo.exist?(id)
-      treeview.delete(id)
-    end
-    # Replace tree item children with current list of child windows.
-    treeview.delete(treeview.children(id))
-    for child in TkWinfo.children(id)
-      treeview.insert(id, :end, :id=>child, :text=>TkWinfo.appname(child),
-          :open=>false, :values=>[TkWinfo.classname(child)])
-      unless TkWinfo.children(child).empty?
-        # insert dummy child to show [+] indicator
-        treeview.insert(child, :end)
-      end
-    end
-  end
-
-else
-  Tk::Tile::Label.new(tree,
-      :text=>'Treeview is supported on tile 0.5 or later...').pack
-end
-
-#
-# Other demos:
-#
-$Timers = {:StateMonitor=>nil, :FocusMonitor=>nil}
-
-begin
-  msg = Tk::Tile::Label.new(others, :justify=>:left, :wraplength=>300)
-rescue
-  msg = TkMessage.new(others, :aspect=>200)
-end
-
-$Desc = {}
-
-showDescription = TkBindTag.new
-showDescription.bind('Enter', proc{|w| msg.text($Desc[w.path])}, '%W')
-showDescription.bind('Leave', proc{|w| msg.text('')}, '%W')
-
-[
-  [ :trackStates, "Widget states...",  
-    "Display/modify widget state bits" ], 
-
-  [ :scrollbarResizeDemo,  "Scrollbar resize behavior...", 
-    "Shows how Tile and standard scrollbars differ when they're sized too large" ], 
-
-  [ :trackFocus, "Track keyboard focus..." , 
-    "Display the name of the widget that currently has focus" ],
-
-  [ :repeatDemo, "Repeating buttons...",
-    "Demonstrates custom classes (see demos/repeater.tcl)" ]
-
-].each{|demo_cmd, label, description|
-  b = Tk::Tile::Button.new(others, :text=>label, 
-                           :command=>proc{ self.__send__(demo_cmd) })
-  $Desc[b.path] = description
-  b.bindtags <<= showDescription
-
-  b.pack(:side=>:top, :expand=>false, :fill=>:x, :padx=>6, :pady=>6)
-}
-
-msg.pack(:side=>:bottom, :expand=>true, :fill=>:both)
-
-
-#
-# Scrollbar resize demo:
-#
-$scrollbars = nil
-
-def scrollbarResizeDemo
-  if $scrollbars
-    begin
-      $scrollbars.destroy
-    rescue
-    end
-  end
-  $scrollbars = TkToplevel.new(:title=>'Scrollbars', :geometry=>'200x200')
-  f = TkFrame.new($scrollbars, :height=>200)
-  tsb = Tk::Tile::Scrollbar.new(f, :command=>proc{|*args| sbstub(tsb, *args)})
-  sb = TkScrollbar.new(f, :command=>proc{|*args| sbstub(sb, *args)})
-  Tk.grid(tsb, sb, :sticky=>:news)
-
-  sb.set(0, 0.5)  # prevent backwards-compatibility mode for old SB
-
-  f.grid_columnconfigure(0, :weight=>1)
-  f.grid_columnconfigure(1, :weight=>1)
-  f.grid_rowconfigure(0, :weight=>1)
-
-  f.pack(:expand=>true, :fill=>:both)
-end
-
-#
-# Track focus demo:
-#
-$FocusInf = TkVariable.new_hash
-$focus = nil
-
-def trackFocus
-  if $focus
-    begin
-      $focus.destroy
-    rescue
-    end
-  end
-  $focus = TkToplevel.new(:title=>'Keyboard focus')
-  i = 0
-  [
-    ["Focus widget:", :Widget], 
-    ["Class:", :WidgetClass], 
-    ["Next:", :WidgetNext], 
-    ["Grab:", :Grab], 
-    ["Status:", :GrabStatus]
-  ].each{|label, var_index|
-    Tk.grid(Tk::Tile::Label.new($focus, :text=>label, :anchor=>:e), 
-            Tk::Tile::Label.new($focus, 
-                                :textvariable=>$FocusInf.ref(var_index), 
-                                :width=>40, :anchor=>:w, :relief=>:groove), 
-            :sticky=>:ew)
-    i += 1
-  }
-  $focus.grid_columnconfigure(1, :weight=>1)
-  $focus.grid_rowconfigure(i, :weight=>1)
-
-  $focus.bind('Destroy', proc{Tk.after_cancel($Timers[:FocusMonitor])})
-  focusMonitor
-end
-
-def focusMonitor
-  $FocusInf[:Widget] = focus_win = Tk.focus
-  if focus_win
-    $FocusInf[:WidgetClass] = focus_win.winfo_classname
-    $FocusInf[:WidgetNext] = Tk.focus_next(focus_win)
-  else
-    $FocusInf[:WidgetClass] = $FocusInf[:WidgetNext] = ''
-  end
-
-  $FocusInf[:Grab] = grab_wins = Tk.current_grabs
-  unless grab_wins.empty?
-    $FocusInf[:GrabStatus] = grab_wins[0].grab_status
-  else  
-    $FocusInf[:GrabStatus] = ''
-  end
-
-  $Timers[:FocusMonitor] = Tk.after(200, proc{ focusMonitor() })
-end
-
-#
-# Widget state demo:
-#
-$Widget = TkVariable.new
-
-TkBindTag::ALL.bind('Control-Shift-ButtonPress-1', 
-                    proc{|w|
-                      $Widget.value = w
-                      updateStates()
-                      Tk.callback_break
-                    }, '%W')
-$states_list = %w(active disabled focus pressed selected 
-                  background indeterminate invalid default)
-$states_btns = {}
-$states = nil
-
-$State = TkVariable.new_hash
-
-def trackStates
-  if $states
-    begin
-      $state.destroy
-    rescue
-    end
-  end
-  $states = TkToplevel.new(:title=>'Widget states')
-
-  l_inf = Tk::Tile::Label.new($states, :text=>"Press Control-Shift-Button-1 on any widget")
-
-  l_lw = Tk::Tile::Label.new($states, :text=>'Widget:', 
-                             :anchor=>:e, :relief=>:groove)
-  l_w = Tk::Tile::Label.new($states, :textvariable=>$Widget, 
-                             :anchor=>:w, :relief=>:groove)
-
-  Tk.grid(l_inf, '-', :sticky=>:ew, :padx=>6, :pady=>6)
-  Tk.grid(l_lw, l_w, :sticky=>:ew)
-
-  $states_list.each{|st|
-    cb = Tk::Tile::Checkbutton.new($states, :text=>st, 
-                                   :variable=>$State.ref(st), 
-                                   :command=>proc{ changeState(st) })
-    $states_btns[st] = cb
-    Tk.grid('x', cb, :sticky=>:nsew)
-  }
-
-  $states.grid_columnconfigure(1, :weight=>1)
-
-  f_cmd = Tk::Tile::Frame.new($states)
-  Tk.grid('x', f_cmd, :sticky=>:nse)
-
-  b_close = Tk::Tile::Button.new(f_cmd, :text=>'Close', 
-                                 :command=>proc{ $states.destroy })
-  Tk.grid('x', b_close, :padx=>4, :pady=>[6,4])
-  f_cmd.grid_columnconfigure(0, :weight=>1)
-
-  $states.bind('KeyPress-Escape', proc{Tk.event_generate(b_close, '<Invoke>')})
-
-  $states.bind('Destroy', proc{Tk.after_cancel($Timers[:StateMonitor])})
-  stateMonitor()
-end
-
-def stateMonitor
-  updateStates() if $Widget.value != ''
-  $Timers[:StateMonitor] = Tk.after(200, proc{ stateMonitor() })
-end
-
-def updateStates
-  $states_list.each{|st|
-    begin
-      $State[st] = $Widget.window.ttk_instate(st)
-    rescue
-      $states_btns[st].ttk_state('disabled')
-    else
-      $states_btns[st].ttk_state('!disabled')
-    end
-  }
-end
-
-def changeState(st)
-  if $Widget.value != ''
-    if $State.bool_element(st)
-      $Widget.window.ttk_state(st)
-    else
-      $Widget.window.ttk_state("!#{st}")
-    end
-  end
-end
-
-#
-# Repeating buttons demo:
-#
-def repeatDemo
-  if defined?($repeatDemo) && $repeatDemo.exist?
-    $repeatDemo.deiconify; return
-  end
-  $repeatDemo = TkToplevel.new(:title=>'Repeating button')
-
-  f = Tk::Tile::Frame.new($repeatDemo)
-  b = Tk::Tile::Button.new(f, :class=>'Repeater', :text=>'Press and hold')
-  if version?('0.6')
-    p = Tk::Tile::Progressbar.new(f, :orient=>:horizontal, :maximum=>10)
-  else # progressbar is not supported
-    p = Tk::Tile::Progress.new(f, :orient=>:horizontal, :from=>0, :to=>10)
-    def p.step
-      i = self.get + 1
-      i = self.from if i > self.to
-      self.set(i)
-    end
-  end
-  b.command {p.step}
-
-  b.pack(:side=>:left, :expand=>false, :fill=>:none, :padx=>6, :pady=>6)
-  p.pack(:side=>:right, :expand=>true, :fill=>:x, :padx=>6, :pady=>6)
-  f.pack(:expand=>true, :fill=>:both)
-end
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/iconlib.tcl b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/iconlib.tcl
deleted file mode 100644 (file)
index 9a93ece..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-array set ImgData {
-bold {R0lGODlhEAAQAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAAQABAAAAI6hI+py60U3wj+
-RYQFJYRvEWFBCeFbRFhQQvhG8YPgX0RYUEL4FhEWlBC+RYQFJYQPFN8IPqYut/8hBQA7}
-copy {R0lGODlhEAAQAJEAANnZ2QAAAP///wAAhCH5BAEAAAAALAAAAAAQABAAAAJUhI8JFJ/gY4iI
-UEL4FyIiFIXgW0iEUDgfACBI9pzMAAGRiIghWSMDECR7JEKGtkFIRFBG+TIQKDQxtgzcDcmX
-IfgwQrFlCD4MyZch+EDzj+Bj6mYBADs=}
-cut {R0lGODlhEAAQAJEAANnZ2QAAAAAAhP///yH5BAEAAAAALAAAAAAQABAAAAJFhI+pcUHwEeIi
-E0gACIKPEAFBIXy0gMg8EhM+YmQiKSL4eAIiJMI/EQEhQGYGYiQIQAg+iAkIATIzECMBIgT/
-RBARERlSADs=}
-dragfile {R0lGODlhGAAYAKIAANnZ2TMzM////wAAAJmZmf///////////yH5BAEAAAAALAAAAAAYABgA
-AAPACBi63IqgC4GiyxwogaAbKLrMgSKBoBoousyBogEACIGiyxwoKgGAECI4uiyCExMTOACB
-osuNpDoAGCI4uiyCIkREOACBosutSDoAgSI4usyCIjQAGCi63Iw0ACEoOLrMgiI0ABgoutyM
-NAAhKDi6zIIiNAAYKLrcjDQAISg4usyCIjQAGCi63Iw0AIGiiqPLIyhCA4CBosvNSAMQKKo4
-ujyCIjQAGCi63Iw0AIGiy81IAxCBpMu9GAMAgKPL3QgJADs=}
-dragicon {R0lGODlhGAAYALMAANnZ2TMzM/////8zM8zMzGYAAAAAAJmZmQCZMwAzZgCZzGZmZv//////
-/////////yH5BAEAAAAALAAAAAAYABgAAAT/EMAgJ60SAjlBgEJOSoMIEMgZoJCT0iADBFIG
-KOSkNMwAAABhwiHnIEKIIIQQAQIZhBBwyDmKEMIEE0yABoAghIBDzlGEENDIaQAIQgg45BwF
-CinPOccAECYcUiKEEBFCiHPgMQAEIcQYYyABBUGIQCHlMQCEScZAAhKEEApCECGOARAEIQQp
-BRGIpAyCJCGOASBAISdEcqJAVBLiGABggELOAJGUKyiVhDgGABigkJMEhNAKSqkEhTgGgCCl
-FCQEGIJSSiUhjgEgQCEnJVBJmYQ4BoAAhZyTQCVnEuIYAAIUckoCk5xSiGMACFDISSs9BoBg
-rRXQMQAEKOSklR4DEUAI8MhJ6wwGAACgkZNWCkAEADs=}
-error {R0lGODlhIAAgAKIAANnZ2YQAAP8AAISEhP///////////////yH5BAEAAAAALAAAAAAgACAA
-AAP/CLoMGLqKoMvtGIqiqxEYCLrcioGiyxwIusyBgaLLLRiBoMsQKLrcjYGgu4Giy+2CAkFX
-A0WX2wXFIOgGii7trkCEohsDCACBoktEKLpKhISiGwAIECiqSKooukiqKKoxgACBooukKiIo
-SKooujGDECi6iqQqsopEV2MQAkV3kXQZRXdjEAJFl5F0FUWXY3ACRZcFSRdFlyVwJlB0WZB0
-UXRZAmcCRZeRdBVFl2NwAkV3kXQZRXdjcAJFV5FURVaR6GoMDgSKLpKqiKAgqaLoxgwOBIoq
-kiqKLpIqimrM4ECg6BIRiq4SIaHoxgyCBoou7a5AhKIbMzgAAIGiy+2CTWJmBhAAAkWX2wXF
-zCDoBooud2PMDIKuRqDocgtGzMwg6O4Eii5z4Kgi6DIMhqLoagQGjiqCLvPgYOgqji6CLrfi
-6DIj6HI7jq4i6DIkADs=}
-file {R0lGODlhCwANAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAALAA0AAAIyhI9G8Q0AguSH
-AMQdxQgxEyEFQfItICQokYgEBMm3gBCKLRIQJN8CQii2SECQfAug+FgAOw==}
-folder {R0lGODlhEAANAKIAANnZ2YSEhMbGxv//AP///wAAAP///////yH5BAEAAAAALAAAAAAQAA0A
-AANjCIqhiqDLITgyEgi6GoIjIyMYugCBpMsaWBA0giMjIzgyUYBBMjIoIyODEgVBODIygiMj
-E1gQJIMyMjIoI1GAQSMjODIyghMFQSgjI4MyMhJYEDSCIyMjODJRgKHLXAiApcucADs=}
-hourglass {R0lGODlhIAAgAKIAANnZ2YAAAAAAAP8AAP///8DAwICAgP///yH5BAEAAAAALAAAAAAgACAA
-AAPZCLrc/jDKSau9OGcUuqyCoMvNGENVhaMrCLrcjaLLgqDL7WhFVIVVZoKgy+1oRUSFVWaC
-oMvtaEVEhVVmgqDL7WhFRIVVZoKgy+1oVVaCJWaCoMvtgKxISrBMEHS5fZEVSRkKgi63NzIq
-EwRdbndkVCYIutzeyIqqDAVBl9sXWRFJYZkg6HI7ICsiKqwyEwRdbkcrIhKsMhMEXW5HKyIp
-lDITBF1uRysyEiwxEwRdbkcrIyuUEhMEXW5H0WVB0OVujKGqwtEVBF1uRtHlRdDl9odRTlrt
-xRmjBAA7}
-info {R0lGODlhIAAgAKIAANnZ2YSEhMbGxv///wAA/wAAAP///////yH5BAEAAAAALAAAAAAgACAA
-AAP/CLoMGLqKoMvtGCo4uhKBgaDLDRghOLqsghEIuryBgqPLPSiBoMsQOLojhEQkOLpTCLob
-OLqKpIujq4WgC4Gju0i6OLpbCKohOLorhEQkOLorhaAQOLrc3qgCIARHl9sbSQUEji4j6RKO
-Lk9hQODosiKp4ujyFIbi6LIiqeLo8hSG4uiyIqni6PIUhuLosiKp4ujyFIYKji4PkiqOLkth
-BASOLg+SKo4uV2AEhODoMpIqju5KYShA4Ogqku7i6E4FRgAAYOHocvugiohAUC0cXe7GiohA
-0IUSHF3uQamICATdrULB0WUVrIqIQNBlCCwVHF2pwsJQRdDlDYyoKsHRPMLQDQRdbsDQqBmc
-wlBF0OV2jJqZwggEXW5vVDMVgaDL7Y5qKgJBl9sfVUUg6HL7AxSKoMvtr1AEgi5DAgA7}
-italic {R0lGODlhEAAQAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAAQABAAAAIrhI+py+1A4hN8
-hIjINBITPlpEZBqJCR8tIjKNxISPFhGZQOITfExdbv9FCgA7}
-new {R0lGODlhEAAQAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAAQABAAAAJFhI95FN8IvgXJ
-jyD4ECQ/JAh+kPyICIIdJP+CYAfJvyDYQfIvCHaQ/AuCHST/gmAHyb8g2EHyLwh2kPwLgk3x
-MQg+pu4WADs=}
-open {R0lGODlhEAAQAKIAANnZ2QAAAP//AP///4SEAP///////////yH5BAEAAAAALAAAAAAQABAA
-AANZCLrczigUQZc1EDQgEHSZAwMgIhB0NQIDQkYwdANBNUZwZGQEJxBUQwZlZGRQAkE1RnAE
-Q5dVcCSQdDcAYySQdDcAISSQdDcAASKQdDcAAQBDlwNBl9sfApQAOw==}
-openfold {R0lGODlhEAANAKIAANnZ2YSEhP///8bGxv//AAAAAP///////yH5BAEAAAAALAAAAAAQAA0A
-AANgCIqhiqDLgaIaCLoagkNDIxi6AIFCQ0M4KKpRgCFDQzg0NIQThaHLSxgVKLochRMVMkhD
-Q4M0VBFYEDKEQ0NDOFFRgCE0NEhDQ4MVBRAoNDSEQ0NRWAAYuqyFBQBYurwJADs=}
-overstrike {R0lGODlhEAAQAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAAQABAAAAI3hI+py80Uh+Aj
-RFhQCP8iMILgWwRGEHyLwAiCbxEYQfCB4iPBhwiMIPgXYREEHyEiguBj6nI7FQA7}
-palette {R0lGODlhEAAQAKIAANnZ2QAAAP//AP////8A/4QAhP8AAAD//yH5BAEAAAAALAAAAAAQABAA
-AANtCLrcjqGBoMsRKCMTgaALMSgDAYMSCKoxgAFBITgSAIAQEhUIARCAEgAQOBAwghMQEwga
-MoIjIxAIEgCAEBEyKBAgg4GgGxAIYTGCgaALcRgQIIGgCwEYICODgaALITgyEoGguxiqCLrc
-/lChBAA7}
-passwd {R0lGODlhIAAgAMQAANnZ2QAAAICAgICAAP///7CwsMDAwMjIAPjIAOjo6Pj4AODg4HBwcMj4
-ANjY2JiYANDQ0MjIyPj4yKCgoMiYAMjImDAwAMjIMJiYmJCQkP//////////////////////
-/yH5BAEAAAAALAAAAAAgACAAAAX/ICCOIhiIIgiII1maZSCMQnCeJyAIQiAIAiAMwxCcJwkk
-EAQRCIUwGMSBDEEAAuJIlgKRJEEgGAMRBIGiDENQlqNAJAsYCEwgEEEgBAHSIEMAAuJIAgKR
-LEsgGEMgCEJgBMqhHENQlgJILMsSCMRABEFgGAESHMcRgIA4kgKxOIsTBAOhKAITKEGDHMhD
-kqIAEqAjisJAgIooBkpwNMcTgIA4jgLhOBAkEAOhKIoSKEGDIMcTkKQICgQEQQIxEIqiBEpw
-IMdxPAEIiCMJCEQUMUQ0EIqiHIfSIM3xBGUpCiABCUQyEMqhHMiBHMjxBCAgjuQoEAKxRANB
-HMqhHM1x/zxDUJajQIACsUTDQBAEIR3IcQRDAALiSIoCYQiEE03gII7HQR3BEICAOJICYRSC
-QDjRNE1CAAzVQR3WE5AkAAqEUQiFQEARBAUAAAzHQR3BEICAOI4CUQhFIBAREwXjUFUHdQRD
-QJJAABbCFAhEJBgBAADAMAwXdQRDAALiCAhEIRQCYRiCEZDjUFFHMAQkIBAFOAmTQBiFUAQg
-II7AUFXUEQwBCQjEJExBkBRCEZCjMIBD9RxDAALiGEzCFBBYIRTBOI7AQB1DMIoCMQkYGAjL
-JEwBCIgjOVDDEJCAQGACJiTTJEwBSY5BEJAiSCCwTAiCZBKmAATEkSzNQBCCYCDBJgELTNMk
-g0AMEgwTAhAQR7I0zYARgvM8TyAIznMMAQA7}
-paste {R0lGODlhEAAQAKIAANnZ2QAAAP//AISEAISEhP///wAAhP///yH5BAEAAAAALAAAAAAQABAA
-AANwCLrcjqGBoKsYqiKrCDSGBkMiJJCGAgCDKBB0gwYDIKYwdJUIAyBokIaGBmloAhBiaAgH
-TdcCEIKGBsmwVM0AIYaGcAxL1coQgoYGySoisMzMAoeGxrB01QJpaMiwMHTLAEPVsHTVEHTR
-dBlBlxswAQA7}
-print {R0lGODlhEAAQAKIAANnZ2QAAAP///4SEhP//AP///////////yH5BAEAAAAALAAAAAAQABAA
-AANZCLrcjqG7CLqBoquBoBuCoSqBoBsouhoIuiEYqrKBoIGiqwEYEIChyxAIEYGgywEYgKHL
-DAgRCLozgwABARgIukSEABEBGLq8gAEQCLobgAEAgKHLgaDLzZgAOw==}
-question {R0lGODlhIAAgAKIAANnZ2YSEhMbGxv///wAAAAAA/////////yH5BAEAAAAALAAAAAAgACAA
-AAP/CLoMGLqKoMvtGCo4uhKBgaDLDRghOLqsghEIuryBgqPLPSiBoMsQOLrcjYSgu4GjO4Kl
-Kzi6Qwi6EDi6I4UyU1VYgqM7hKAagqM7VTg6VYWFoztCCAqBo6tVWDVThVU4ukqBACE4ulqF
-VSNVWIWjq0IYEDi6K4UlU1VYOLpMgRA4uryCpTi6PIShOLq8hVU4uqyEoTi6vIUlOLqshKE4
-uryFhaPLSxgqOLrc3kgoAgJHl0ewSnB0eQhDIQRHl6uwCkeXhTAUIHB0uQqrcHSZAiMAAJBw
-dFcKS3B0lwIjAkGVcHS5GykiAkEXSHB0uQeFIiIQdJcIBUeXVZAoIgJBT5chkFRwdIUICUMV
-QZc3MIKIBEcJQzcQdLkBQ4NmcAhDFUGX2zFoZggjEHS5vRHNUASCLrc7oqEIBF1uf0QUgaDL
-7Q9QKIIut79CEQi6DAkAOw==}
-redo {R0lGODlhEAAQAJEAANnZ2QAAhP///////yH5BAEAAAAALAAAAAAQABAAAAIvhI+py+1vSByC
-jxAYQXDMwsyAggQAQBB8iwgMgg8REQgUwqbYBDsIPqYutz+MgBQAOw==}
-save {R0lGODlhEAAQAJEAANnZ2QAAAISEAP///yH5BAEAAAAALAAAAAAQABAAAAJWhI9pFB8RIIRC
-+BYQFqQQvkWEBSmEbyFhQQrhW0hYkEL4FhIWpBC+hYQFSYxvIgFAoXy0AAiSGP8kAIIkxgcI
-CSBEQvEBQgIIkVB8gJAAAhgfj+BjWgEAOw==}
-underline {R0lGODlhEAAQAJEAANnZ2QAAAP///////yH5BAEAAAAALAAAAAAQABAAAAI3hI+py60UBy4I
-vkVcBMG/iIsg+BdxEQT/Ii6C4F/ERRD8i7gIgn8RF0HwkWITfExFin8EH1OXCwA7}
-undo {R0lGODlhEAAQAJEAANnZ2QAAhP///////yH5BAEAAAAALAAAAAAQABAAAAIuhI+py+2vSByC
-HxdxQCHsCIg7oAAAEUHwLTAiKIQPgRSbYMfd3VEIH1OX2x8mUgA7}
-warning {R0lGODlhIAAgAKIAANnZ2YSEAP//AMbGxgAAAISEhP///////yH5BAEAAAAALAAAAAAgACAA
-AAP/CLq8gREIutz+KESGEHS5vVGIiAxSIehy+6JAUaUqBF1uBxQoukOFhaDL7RgoukKFhaDL
-3RgoujqEVQi63IyBortUWAi63IuBostDWIWgy60YIjKERCMiSFUIutyAISKCpCoiOFSFoMsd
-KCpIqiKCQlUIusyBooqkKiIoQ1UIuryBooqkiqJKVQi6rIGii6SKojpUWAi6DIGiG0RIgaJL
-VQi6HCi6MoREg6I7VFgIuhsoukqEhKKrVFgIuhoouhuEgaKrQ1iFoAuBortDOCi6S4WFoBso
-uiyEostDWIWgGii63K6IqgAAIVB0WQaJBkV3h7AKAAJFl4WQiFB0mQoLRyBQdFkJiQhFl4ew
-CgJFl3WQaFB0WQirIFB0ud0RVVWg6HJ7o6GqAgwUXW5fNFRVhQCBpMvti0oVABCwdLndEehi
-6XI7I4AEADs=}
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/readme.txt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/readme.txt
deleted file mode 100644 (file)
index a76b333..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-All of *.tcl and under themes/ directory (except kroc.rb) are 
-quoted from Tcl/Tk's Tile extension. Please read Orig_LICENSE.txt. 
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/repeater.tcl b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/repeater.tcl
deleted file mode 100644 (file)
index 2e8539f..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-#
-# $Id: repeater.tcl 11708 2007-02-12 23:01:19Z shyouhei $
-#
-# Demonstration of custom classes.
-#
-# The Tile button doesn't have built-in support for autorepeat.
-# Instead of adding -repeatdelay and -repeatinterval options,
-# and all the extra binding scripts required to deal with them,
-# we create a custom widget class for autorepeating buttons.
-#
-# Usage:
-#      ttk::button .b -class Repeater [... other options ...]
-#
-# TODO:
-#      Use system settings for repeat interval and initial delay.
-#
-# Notes:
-#      Repeater buttons work more like scrollbar arrows than
-#      Tk repeating buttons: they fire once immediately when
-#      first pressed, and $State(delay) specifies the initial 
-#      interval before the button starts autorepeating.
-#
-
-namespace eval tile::Repeater {
-    variable State
-    set State(timer)   {}      ;# [after] id of repeat script
-    set State(interval)        100     ;# interval between repetitions
-    set State(delay)   300     ;# delay after initial invocation
-}
-
-### Class bindings.
-#
-
-bind Repeater <Enter>          { %W state active }
-bind Repeater <Leave>          { %W state !active }
-
-bind Repeater <Key-space>      { tile::Repeater::Activate %W }
-bind Repeater <<Invoke>>       { tile::Repeater::Activate %W }
-
-bind Repeater <ButtonPress-1>  { tile::Repeater::Press %W }
-bind Repeater <ButtonRelease-1> { tile::Repeater::Release %W }
-bind Repeater <B1-Leave>       { tile::Repeater::Pause %W }
-bind Repeater <B1-Enter>       { tile::Repeater::Resume %W } ;# @@@ see below
-
-# @@@ Workaround for metacity-induced bug:
-bind Repeater <B1-Enter> \
-    { if {"%d" ne "NotifyUngrab"} { tile::Repeater::Resume %W } }
-
-### Binding procedures.
-#
-
-## Activate -- Keyboard activation binding. 
-#      Simulate clicking the button, and invoke the command once. 
-#
-proc tile::Repeater::Activate {w} {
-    $w instate disabled { return }
-    set oldState [$w state pressed]
-    update idletasks; after 100
-    $w state $oldState
-    after idle [list $w invoke]
-}
-
-## Press -- ButtonPress-1 binding.
-#      Invoke the command once and start autorepeating after 
-#      $State(delay) milliseconds.
-#
-proc tile::Repeater::Press {w} {
-    variable State
-    $w instate disabled { return }
-    $w state pressed
-    $w invoke
-    after cancel $State(timer)
-    set State(timer) [after $State(delay) [list tile::Repeater::Repeat $w]]
-}
-
-## Release -- ButtonRelease binding.
-#      Stop repeating.
-#
-proc tile::Repeater::Release {w} {
-    variable State
-    $w state !pressed
-    after cancel $State(timer)
-}
-
-## Pause -- B1-Leave binding
-#      Temporarily suspend autorepeat.
-#
-proc tile::Repeater::Pause {w} {
-    variable State
-    $w state !pressed
-    after cancel $State(timer)
-}
-
-## Resume -- B1-Enter binding
-#      Resume autorepeat.
-#
-proc tile::Repeater::Resume {w} {
-    variable State
-    $w instate disabled { return }
-    $w state pressed
-    $w invoke
-    after cancel $State(timer)
-    set State(timer) [after $State(interval) [list tile::Repeater::Repeat $w]]
-}
-
-## Repeat -- Timer script
-#      Invoke the command and reschedule another repetition 
-#      after $State(interval) milliseconds.
-#
-proc tile::Repeater::Repeat {w} {
-    variable State
-    $w instate disabled { return }
-    $w invoke
-    set State(timer) [after $State(interval) [list tile::Repeater::Repeat $w]]
-}
-
-#*EOF*
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue.tcl b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue.tcl
deleted file mode 100644 (file)
index 37e3d07..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-# blue.tcl - Copyright (C) 2004 Pat Thoyts <patthoyts@users.sourceforge.net>
-#
-# blue.tcl,v 1.27 2005/10/08 14:56:57 jenglish Exp
-#
-#
-
-namespace eval tile::theme::blue {
-
-    package provide tile::theme::blue 0.7
-
-    set imgdir [file join [file dirname [info script]] blue]
-    array set I [tile::LoadImages $imgdir *.gif]
-
-    array set colors {
-       -frame          "#6699cc"
-       -lighter        "#bcd2e8"
-       -window         "#e6f3ff"
-       -selectbg       "#ffff33"
-       -selectfg       "#000000"
-       -disabledfg     "#666666"
-    }
-
-    style theme create blue -settings {
-
-       style default . \
-           -borderwidth        1 \
-           -background         $colors(-frame) \
-           -fieldbackground    $colors(-window) \
-           -troughcolor        $colors(-lighter) \
-           -selectbackground   $colors(-selectbg) \
-           -selectforeground   $colors(-selectfg) \
-           ;
-       style map . -foreground [list disabled $colors(-disabledfg)]
-
-       ## Buttons.
-       #
-       style default TButton -padding "10 0"
-       style layout TButton {
-           Button.button -children {
-               Button.focus -children {
-                   Button.padding -children {
-                       Button.label
-                   }
-               }
-           }
-       }
-
-       style element create button image $I(button-n) \
-           -map [list pressed $I(button-p)  active $I(button-h)] \
-           -border 4 -sticky ew
-
-       style element create Checkbutton.indicator image $I(check-nu) \
-           -width 24 -sticky w -map [list \
-               {!disabled active selected} $I(check-hc) \
-               {!disabled active} $I(check-hu) \
-               {!disabled selected} $I(check-nc) ]
-
-       style element create Radiobutton.indicator image $I(radio-nu) \
-           -width 24 -sticky w -map [list \
-               {!disabled active selected} $I(radio-hc) \
-               {!disabled active} $I(radio-hu) \
-               selected $I(radio-nc) ]
-
-       style default TMenubutton -relief raised -padding {10 2}
-
-       ## Toolbar buttons.
-       #
-       style default Toolbutton \
-           -width 0 -relief flat -borderwidth 2 -padding 4 \
-           -background $colors(-frame) -foreground #000000 ;
-       style map Toolbutton -background [list active $colors(-selectbg)] 
-       style map Toolbutton -foreground [list active $colors(-selectfg)] 
-       style map Toolbutton -relief {
-           disabled    flat
-           selected    sunken  
-           pressed     sunken  
-           active      raised
-       }
-
-       ## Entry widgets.
-       #
-       style default TEntry \
-           -selectborderwidth 1 -padding 2 -insertwidth 2 -font TkTextFont
-       style default TCombobox \
-           -selectborderwidth 1 -padding 2 -insertwidth 2 -font TkTextFont
-
-       ## Notebooks.
-       #
-       style default TNotebook.Tab -padding {4 2 4 2}
-       style map TNotebook.Tab \
-           -background \
-               [list selected $colors(-frame) active $colors(-lighter)] \
-           -padding [list selected {4 4 4 2}]
-
-       ## Labelframes.
-       #
-       style default TLabelframe -borderwidth 2 -relief groove
-
-       ## Scrollbars.
-       #
-       style layout Vertical.TScrollbar {
-           Scrollbar.trough -children {
-               Scrollbar.uparrow -side top
-               Scrollbar.downarrow -side bottom
-               Scrollbar.uparrow -side bottom
-               Vertical.Scrollbar.thumb -side top -expand true -sticky ns
-           }
-       }
-
-       style layout Horizontal.TScrollbar {
-           Scrollbar.trough -children {
-               Scrollbar.leftarrow -side left
-               Scrollbar.rightarrow -side right
-               Scrollbar.leftarrow -side right
-               Horizontal.Scrollbar.thumb -side left -expand true -sticky we
-           }
-       }
-
-       style element create Horizontal.Scrollbar.thumb image $I(sb-thumb) \
-           -map [list {pressed !disabled} $I(sb-thumb-p)] -border 3
-
-       style element create Vertical.Scrollbar.thumb image $I(sb-vthumb) \
-           -map [list {pressed !disabled} $I(sb-vthumb-p)] -border 3
-
-       foreach dir {up down left right} {
-           style element create ${dir}arrow image $I(arrow${dir}) \
-               -map [list \
-                   disabled $I(arrow${dir}) \
-                   pressed $I(arrow${dir}-p) \
-                   active $I(arrow${dir}-h)] \
-               -border 1 -sticky {}
-       }
-
-       ## Scales.
-       #
-       style element create Scale.slider \
-           image $I(slider) -map [list {pressed !disabled} $I(slider-p)]
-
-       style element create Vertical.Scale.slider \
-           image $I(vslider) -map [list {pressed !disabled} $I(vslider-p)]
-
-       style element create Horizontal.Progress.bar \
-           image $I(sb-thumb) -border 2
-       style element create Vertical.Progress.bar \
-           image $I(sb-vthumb) -border 2
-
-    }
-}
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowdown-h.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowdown-h.gif
deleted file mode 100644 (file)
index 3c1be9d..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowdown-h.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowdown-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowdown-p.gif
deleted file mode 100644 (file)
index 1cb36ec..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowdown-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowdown.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowdown.gif
deleted file mode 100644 (file)
index e363c36..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowdown.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowleft-h.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowleft-h.gif
deleted file mode 100644 (file)
index cbc3db2..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowleft-h.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowleft-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowleft-p.gif
deleted file mode 100644 (file)
index 14d541b..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowleft-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowleft.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowleft.gif
deleted file mode 100644 (file)
index 32584a3..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowleft.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowright-h.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowright-h.gif
deleted file mode 100644 (file)
index 913e9da..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowright-h.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowright-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowright-p.gif
deleted file mode 100644 (file)
index d02208f..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowright-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowright.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowright.gif
deleted file mode 100644 (file)
index 2b0f1fd..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowright.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowup-h.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowup-h.gif
deleted file mode 100644 (file)
index 6059bae..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowup-h.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowup-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowup-p.gif
deleted file mode 100644 (file)
index 20b6a82..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowup-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowup.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowup.gif
deleted file mode 100644 (file)
index 5857616..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/arrowup.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-h.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-h.gif
deleted file mode 100644 (file)
index 0947f43..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-h.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-n.gif
deleted file mode 100644 (file)
index d984528..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-n.xcf b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-n.xcf
deleted file mode 100644 (file)
index e38ed19..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-n.xcf and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-p.gif
deleted file mode 100644 (file)
index e819b1b..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/button-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-hc.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-hc.gif
deleted file mode 100644 (file)
index b753aea..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-hc.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-hu.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-hu.gif
deleted file mode 100644 (file)
index 74dbb79..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-hu.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-nc.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-nc.gif
deleted file mode 100644 (file)
index 8f3d911..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-nc.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-nu.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-nu.gif
deleted file mode 100644 (file)
index 6f360ff..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/check-nu.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-hc.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-hc.gif
deleted file mode 100644 (file)
index f7c21fb..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-hc.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-hu.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-hu.gif
deleted file mode 100644 (file)
index a006630..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-hu.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-nc.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-nc.gif
deleted file mode 100644 (file)
index 0281de3..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-nc.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-nu.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-nu.gif
deleted file mode 100644 (file)
index 58ec60c..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/radio-nu.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-thumb-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-thumb-p.gif
deleted file mode 100644 (file)
index 6cfaa41..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-thumb-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-thumb.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-thumb.gif
deleted file mode 100644 (file)
index d9bfc0a..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-thumb.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-vthumb-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-vthumb-p.gif
deleted file mode 100644 (file)
index 930d7fd..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-vthumb-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-vthumb.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-vthumb.gif
deleted file mode 100644 (file)
index 060be5d..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/sb-vthumb.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/slider-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/slider-p.gif
deleted file mode 100644 (file)
index c1c089d..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/slider-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/slider.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/slider.gif
deleted file mode 100644 (file)
index 1805c2d..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/slider.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/vslider-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/vslider-p.gif
deleted file mode 100644 (file)
index bc37b31..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/vslider-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/vslider.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/vslider.gif
deleted file mode 100644 (file)
index d3745c7..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/blue/vslider.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/pkgIndex.tcl b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/blue/pkgIndex.tcl
deleted file mode 100644 (file)
index 4facac7..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-# Package index for tile demo pixmap themes.
-
-if {[file isdirectory [file join $dir blue]]} {
-    package ifneeded tile::theme::blue 0.7 \
-        [list source [file join $dir blue.tcl]]
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik.tcl b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik.tcl
deleted file mode 100644 (file)
index 0c3bd33..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-# keramik.tcl - 
-#
-# A sample pixmap theme for the tile package.
-#
-#  Copyright (c) 2004 Googie
-#  Copyright (c) 2004 Pat Thoyts <patthoyts@users.sourceforge.net>
-#
-# $Id: keramik.tcl 11708 2007-02-12 23:01:19Z shyouhei $
-
-package require Tk 8.4;                 # minimum version for Tile
-package require tile 0.5;               # depends upon tile 0.5
-
-namespace eval tile {
-    namespace eval theme {
-        namespace eval keramik {
-            variable version 0.3.2
-        }
-    }
-}
-
-namespace eval tile::theme::keramik {
-
-    variable imgdir [file join [file dirname [info script]] keramik]
-    variable I
-    array set I [tile::LoadImages $imgdir *.gif]
-
-    variable colors
-    array set colors {
-        -frame      "#cccccc"
-        -lighter    "#cccccc"
-        -window     "#ffffff"
-        -selectbg   "#eeeeee"
-        -selectfg   "#000000"
-        -disabledfg "#aaaaaa"
-    }
-
-    style theme create keramik -parent alt -settings {
-
-
-        # -----------------------------------------------------------------
-        # Theme defaults
-        #
-        style default . \
-            -borderwidth 1 \
-            -background $colors(-frame) \
-            -troughcolor $colors(-lighter) \
-            -font TkDefaultFont \
-            ;
-
-        style map . -foreground [list disabled $colors(-disabledfg)]
-                
-        # -----------------------------------------------------------------
-        # Button elements
-        #  - the button has a large rounded border and needs a bit of
-        #    horizontal padding.
-        #  - the checkbutton and radiobutton have the focus drawn around 
-        #    the whole widget - hence the new layouts.
-        #
-        style layout TButton {
-            Button.background
-            Button.button -children {
-                Button.focus -children {
-                    Button.label
-                }
-            }
-        }
-        style layout Toolbutton {
-            Toolbutton.background
-            Toolbutton.button -children {
-                Toolbutton.focus -children {
-                    Toolbutton.label
-                }
-            }
-        }
-        style element create button image $I(button-n) \
-            -border {8 6 8 16} -padding {6 6} -sticky news \
-            -map [list {pressed !disabled} $I(button-p) \
-                      {active !selected}  $I(button-h) \
-                      selected $I(button-s) \
-                      disabled $I(button-d)]
-        style default TButton -padding {10 6}
-
-        style element create Toolbutton.button image $I(tbar-n) \
-            -border {2 8 2 16} -padding {2 2} -sticky news \
-            -map [list {pressed !disabled} $I(tbar-p) \
-                      {active !selected}   $I(tbar-a) \
-                      selected             $I(tbar-p)]
-
-        style element create Checkbutton.indicator image $I(check-u) \
-            -width 20 -sticky w \
-            -map [list selected $I(check-c)]
-
-        style element create Radiobutton.indicator image $I(radio-u) \
-            -width 20 -sticky w \
-            -map [list  selected $I(radio-c)]
-
-        # The layout for the menubutton is modified to have a button element
-        # drawn on top of the background. This means we can have transparent
-        # pixels in the button element. Also, the pixmap has a special
-        # region on the right for the arrow. So we draw the indicator as a
-        # sibling element to the button, and draw it after (ie on top of) the
-        # button image.
-        style layout TMenubutton {
-            Menubutton.background
-            Menubutton.button -children {
-                Menubutton.focus -children {
-                    Menubutton.padding -children {
-                        Menubutton.label -side left -expand true
-                    }
-                }
-            }
-            Menubutton.indicator -side right
-        }
-        style element create Menubutton.button image $I(mbut-n) \
-            -map [list {active !disabled} $I(mbut-a) \
-                      {pressed !disabled} $I(mbut-a) \
-                      {disabled}          $I(mbut-d)] \
-            -border {7 10 29 15} -padding {7 4 29 4} -sticky news
-        style element create Menubutton.indicator image $I(mbut-arrow-n) \
-            -width 11 -sticky w -padding {0 0 18 0}
-
-        # -----------------------------------------------------------------
-        # Scrollbars, scale and progress elements
-        #  - the scrollbar has three arrow buttons, two at the bottom and
-        #    one at the top.
-        #
-        style layout Vertical.TScrollbar {
-            Scrollbar.background 
-            Scrollbar.trough -children {
-                Scrollbar.uparrow -side top
-                Scrollbar.downarrow -side bottom
-                Scrollbar.uparrow -side bottom
-                Vertical.Scrollbar.thumb -side top -expand true -sticky ns
-            }
-        }
-        
-        style layout Horizontal.TScrollbar {
-            Scrollbar.background 
-            Scrollbar.trough -children {
-                Scrollbar.leftarrow -side left
-                Scrollbar.rightarrow -side right
-                Scrollbar.leftarrow -side right
-                Horizontal.Scrollbar.thumb -side left -expand true -sticky we
-            }
-        }
-
-        style default TScrollbar -width 16
-
-        style element create Horizontal.Scrollbar.thumb image $I(hsb-n) \
-            -border {6 4} -width 15 -height 16 -sticky news \
-            -map [list {pressed !disabled} $I(hsb-p)]
-        
-        style element create Vertical.Scrollbar.thumb image $I(vsb-n) \
-            -border {4 6} -width 16 -height 15 -sticky news \
-            -map [list {pressed !disabled} $I(vsb-p)]
-        
-        style element create Scale.slider image $I(hslider-n) \
-            -border 3
-        
-        style element create Vertical.Scale.slider image $I(vslider-n) \
-            -border 3
-        
-        style element create Horizontal.Progress.bar image $I(hsb-n) \
-            -border {6 4}
-        
-        style element create Vertical.Progress.bar image $I(vsb-n) \
-            -border {4 6}
-        
-        style element create uparrow image $I(arrowup-n) \
-            -map [list {pressed !disabled} $I(arrowup-p)]
-                  
-        style element create downarrow image $I(arrowdown-n) \
-            -map [list {pressed !disabled} $I(arrowdown-p)]
-
-        style element create rightarrow image $I(arrowright-n) \
-            -map [list {pressed !disabled} $I(arrowright-p)]
-
-        style element create leftarrow image $I(arrowleft-n) \
-            -map [list {pressed !disabled} $I(arrowleft-p)]
-        
-        # -----------------------------------------------------------------
-        # Notebook elements
-        #
-        style element create tab image $I(tab-n) \
-            -map [list selected $I(tab-p) active $I(tab-p)] \
-            -border {6 6 6 2} -height 12
-
-       ## Labelframes.
-       #
-       style default TLabelframe -borderwidth 2 -relief groove
-    }
-}
-
-package provide tile::theme::keramik $::tile::theme::keramik::version
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowdown-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowdown-n.gif
deleted file mode 100644 (file)
index 2d84f29..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowdown-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowdown-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowdown-p.gif
deleted file mode 100644 (file)
index 52ee752..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowdown-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowleft-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowleft-n.gif
deleted file mode 100644 (file)
index ff309c5..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowleft-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowleft-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowleft-p.gif
deleted file mode 100644 (file)
index 2159f27..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowleft-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowright-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowright-n.gif
deleted file mode 100644 (file)
index 905fa7e..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowright-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowright-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowright-p.gif
deleted file mode 100644 (file)
index 0323332..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowright-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowup-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowup-n.gif
deleted file mode 100644 (file)
index 20dcadb..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowup-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowup-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowup-p.gif
deleted file mode 100644 (file)
index 129169e..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/arrowup-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-d.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-d.gif
deleted file mode 100644 (file)
index fe9bf98..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-d.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-h.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-h.gif
deleted file mode 100644 (file)
index 210734d..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-h.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-n.gif
deleted file mode 100644 (file)
index 5e1eafa..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-p.gif
deleted file mode 100644 (file)
index bfd7488..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-s.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-s.gif
deleted file mode 100644 (file)
index 1095ed7..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/button-s.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/check-c.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/check-c.gif
deleted file mode 100644 (file)
index 06e8795..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/check-c.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/check-u.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/check-u.gif
deleted file mode 100644 (file)
index 3c02fcb..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/check-u.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/hsb-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/hsb-n.gif
deleted file mode 100644 (file)
index 1d93973..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/hsb-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/hsb-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/hsb-p.gif
deleted file mode 100644 (file)
index 18fbae0..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/hsb-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/hslider-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/hslider-n.gif
deleted file mode 100644 (file)
index 334e8e4..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/hslider-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-a.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-a.gif
deleted file mode 100644 (file)
index 2e2f1c2..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-a.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-arrow-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-arrow-n.gif
deleted file mode 100644 (file)
index 48197cb..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-arrow-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-d.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-d.gif
deleted file mode 100644 (file)
index 4a294b4..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-d.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-n.gif
deleted file mode 100644 (file)
index 65c0e4e..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/mbut-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/radio-c.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/radio-c.gif
deleted file mode 100644 (file)
index c8257c9..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/radio-c.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/radio-u.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/radio-u.gif
deleted file mode 100644 (file)
index 215a738..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/radio-u.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tab-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tab-n.gif
deleted file mode 100644 (file)
index 03099a9..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tab-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tab-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tab-p.gif
deleted file mode 100644 (file)
index abec6ab..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tab-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tbar-a.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tbar-a.gif
deleted file mode 100644 (file)
index 2c223ba..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tbar-a.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tbar-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tbar-n.gif
deleted file mode 100644 (file)
index 77ef8a2..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tbar-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tbar-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tbar-p.gif
deleted file mode 100644 (file)
index 3179b87..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/tbar-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/vsb-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/vsb-n.gif
deleted file mode 100644 (file)
index be01e4a..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/vsb-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/vsb-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/vsb-p.gif
deleted file mode 100644 (file)
index 0bb39e9..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/vsb-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/vslider-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/vslider-n.gif
deleted file mode 100644 (file)
index cf03d7f..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/keramik/vslider-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/pkgIndex.tcl b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/keramik/pkgIndex.tcl
deleted file mode 100644 (file)
index f18bb05..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# pkgIndex.tcl for additional tile pixmap themes.
-#
-# We don't provide the package is the image subdirectory isn't present,
-# or we don't have the right version of Tcl/Tk
-#
-# To use this automatically within tile, the tile-using application should
-# use tile::availableThemes and tile::setTheme 
-#
-# $Id: pkgIndex.tcl 11708 2007-02-12 23:01:19Z shyouhei $
-
-if {![file isdirectory [file join $dir keramik]]} { return }
-if {![package vsatisfies [package provide Tcl] 8.4]} { return }
-
-package ifneeded tile::theme::keramik 0.3.2 \
-    [list source [file join $dir keramik.tcl]]
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc.rb
deleted file mode 100644 (file)
index 27006d8..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-#
-# kroc.rb 
-#
-# based on:
-#   >> kroc.tcl - Copyright (C) 2004 David Zolli <kroc@kroc.tk>
-#
-
-imgdir = File.join(File.dirname(__FILE__), 'kroc', 'kroc')
-$images = Tk::Tile.load_images(imgdir, '*.gif')
-
-if TkPackage.vcompare(Tk::Tile.package_version, '0.5') >= 0
-  $TNotebook_Tab = Tk::Tile::TNotebook.style('Tab')
-else
-  $TNotebook_Tab = 'Tab.TNotebook'
-end
-
-def kroc_rb_settings
-  # Tk::Tile::Style.default(TkRoot, :background=>'#FCB64F', 
-  #                         :troughcolor=>'#F8C278', :borderwidth=>1)
-  #   or
-  # Tk::Tile::Style.default(Tk.root, :background=>'#FCB64F', 
-  #                         :troughcolor=>'#F8C278', :borderwidth=>1)
-  #   or
-  # Tk::Tile::Style.default('.', :background=>'#FCB64F', 
-  #                         :troughcolor=>'#F8C278', :borderwidth=>1)
-  #   or
-  # Tk::Tile::Style.default(nil, :background=>'#FCB64F', 
-  #                         :troughcolor=>'#F8C278', :borderwidth=>1)
-  #   or
-  Tk::Tile::Style.default(:background=>'#FCB64F', :troughcolor=>'#F8C278', 
-                          :borderwidth=>1)
-  # Tk::Tile::Style.default(TkRoot, :font=>Tk::Tile::Font::Default, 
-  #                         :borderwidth=>1)
-  #   or
-  # Tk::Tile::Style.default(Tk.root, :font=>Tk::Tile::Font::Default, 
-  #                         :borderwidth=>1)
-  #   or
-  # Tk::Tile::Style.default('.', :font=>Tk::Tile::Font::Default, 
-  #                         :borderwidth=>1)
-  #   or
-  # Tk::Tile::Style.default(nil, :font=>Tk::Tile::Font::Default, 
-  #                         :borderwidth=>1)
-  #   or
-  Tk::Tile::Style.default(:font=>Tk::Tile::Font::Default, :borderwidth=>1)
-
-  # Tk::Tile::Style.map(TkRoot, :background=>[:active, '#694418'])
-  #   or
-  # Tk::Tile::Style.map(Tk.root, :background=>[:active, '#694418'])
-  #   or
-  # Tk::Tile::Style.map('.', :background=>[:active, '#694418'])
-  #   or
-  # Tk::Tile::Style.map(nil, :background=>[:active, '#694418'])
-  #   or
-  Tk::Tile::Style.map(:background=>[:active, '#694418'])
-  Tk::Tile::Style.map(:foreground=>[:disabled, '#B2B2B2', :active, '#FFE7CB'])
-
-  # Tk::Tile::Style.default('TButton', :padding=>[10,4])
-  Tk::Tile::Style.default(Tk::Tile::TButton, :padding=>[10,4])
-
-  # Tk::Tile::Style.default('TNotebook.Tab', 
-  Tk::Tile::Style.default($TNotebook_Tab, 
-                          :padding=>[10, 3], :font=>Tk::Tile::Font::Default)
-  # Tk::Tile::Style.map('TNotebook.Tab', 
-  Tk::Tile::Style.map($TNotebook_Tab, 
-                      :background=>[:selected, '#FCB64F', '', '#FFE6BA'], 
-                      :foreground=>['', 'black'], 
-                      :padding=>[:selected, [10, 6, 10, 3]])
-
-  # Tk::Tile::Style.map('TScrollbar', 
-  Tk::Tile::Style.map(Tk::Tile::TScrollbar, 
-                      :background=>[:pressed, '#694418'], 
-                      :arrowcolor=>[:pressed, '#FEF7CB'], 
-                      :relief=>[:pressed, :sunken])
-
-  # Tk::Tile::Style.layout('Vertical.TScrollbar', 
-  Tk::Tile::Style.layout(Tk::Tile.style('Vertical', Tk::Tile::TScrollbar), 
-                         ['Scrollbar.trough', {:children=>[
-                             'Scrollbar.uparrow',   {:side=>:top}, 
-                             'Scrollbar.downarrow', {:side=>:bottom}, 
-                             'Scrollbar.uparrow',   {:side=>:bottom}, 
-                             'Scrollbar.thumb',  {:side=>:top, :expand=>true}
-                           ]}
-                         ])
-
-  # Tk::Tile::Style.layout('Horizontal.TScrollbar', 
-  Tk::Tile::Style.layout(Tk::Tile.style('Horizontal', Tk::Tile::TScrollbar), 
-                         ['Scrollbar.trough', {:children=>[
-                             'Scrollbar.leftarrow',   {:side=>:left}, 
-                             'Scrollbar.rightarrow', {:side=>:right}, 
-                             'Scrollbar.leftarrow',   {:side=>:right}, 
-                             'Scrollbar.thumb',  {:side=>:left, :expand=>true}
-                           ]}
-                         ])
-
-  #
-  # Elements:
-  #
-  if Tk::Tile::TILE_SPEC_VERSION_ID >= 8
-    Tk::Tile::Style.element_create('Button.button', 
-                                   :image, 
-                                   [ $images['button-n'],
-                                     :pressed, $images['button-p'], 
-                                     :active,  $images['button-h'], 
-                                   ], :border=>3, :sticky=>:ew)
-
-    Tk::Tile::Style.element_create('Checkbutton.indicator', 
-                                   :image, 
-                                   [ $images['check-nu'],
-                                     [:pressed, :selected],$images['check-nc'],
-                                     :pressed,             $images['check-nu'],
-                                     [:active, :selected], $images['check-hc'],
-                                     :active,              $images['check-hu'],
-                                     :selected,            $images['check-nc'],
-                                   ], :sticky=>:w)
-
-    Tk::Tile::Style.element_create('Radiobutton.indicator', 
-                                   :image, 
-                                   [ $images['radio-nu'],
-                                     [:pressed,:selected],$images['radio-nc'],
-                                     :pressed,            $images['radio-nu'],
-                                     [:active,:selected], $images['radio-hc'],
-                                     :active,             $images['radio-hu'],
-                                     :selected,           $images['radio-nc'],
-                                   ], :sticky=>:w)
-
-  elsif TkPackage.vcompare(Tk::Tile.package_version, '0.5') >= 0
-    Tk::Tile::Style.element_create('Button.button', 
-                                   :image, $images['button-n'],
-                                   :map=>[
-                                     :pressed, $images['button-p'], 
-                                     :active,  $images['button-h'], 
-                                   ], :border=>3, :sticky=>:ew)
-
-    Tk::Tile::Style.element_create('Checkbutton.indicator', 
-                                   :image, $images['check-nu'],
-                                   :map=>[
-                                     [:pressed, :selected],$images['check-nc'],
-                                     :pressed,             $images['check-nu'],
-                                     [:active, :selected], $images['check-hc'],
-                                     :active,              $images['check-hu'],
-                                     :selected,            $images['check-nc'],
-                                   ], :sticky=>:w)
-
-    Tk::Tile::Style.element_create('Radiobutton.indicator', 
-                                   :image, $images['radio-nu'],
-                                   :map=>[
-                                     [:pressed, :selected],$images['radio-nc'],
-                                     :pressed,             $images['radio-nu'],
-                                     [:active, :selected], $images['radio-hc'],
-                                     :active,              $images['radio-hu'],
-                                     :selected,            $images['radio-nc'],
-                                   ], :sticky=>:w)
-
-  else # tile 0.4 or earlier
-    Tk::Tile::Style.element_create('Button.button', :pixmap, 
-                                   :images=>[
-                                     :pressed, $images['button-p'], 
-                                     :active,  $images['button-h'], 
-                                     '',       $images['button-n']
-                                   ], :border=>3, :tiling=>:tile)
-
-    Tk::Tile::Style.element_create('Checkbutton.indicator', :pixmap, 
-                                   :images=>[
-                                     [:pressed, :selected],$images['check-nc'],
-                                     :pressed,             $images['check-nu'],
-                                     [:active, :selected], $images['check-hc'],
-                                     :active,              $images['check-hu'],
-                                     :selected,            $images['check-nc'],
-                                     '',                   $images['check-nu'],
-                                   ], :tiling=>:fixed)
-
-    Tk::Tile::Style.element_create('Radiobutton.indicator', :pixmap, 
-                                   :images=>[
-                                     [:pressed, :selected],$images['radio-nc'],
-                                     :pressed,             $images['radio-nu'],
-                                     [:active, :selected], $images['radio-hc'],
-                                     :active,              $images['radio-hu'],
-                                     :selected,            $images['radio-nc'],
-                                     '',                   $images['radio-nu'],
-                                   ], :tiling=>:fixed)
-
-  end
-
-  #
-  # Settings:
-  #
-  # Tk::Tile::Style.layout(Tk::Tile::TButton, 
-  Tk::Tile::Style.layout('TButton', [
-      'Button.button', {:children=>[
-           'Button.focus', {:children=>[
-                'Button.padding', {:children=>[
-                    'Button.label', {:expand=>true, :sticky=>''}
-                ]}
-           ]}
-      ]}
-  ])
-
-  # Tk::Tile::Style.layout(Tk::Tile::TCheckbutton, 
-  Tk::Tile::Style.layout('TCheckbutton', [
-      'Checkbutton.background', # this is not needed in tile 0.5 or later
-      'Checkbutton.border', {:children=>[
-           'Checkbutton.padding', {:children=>[
-                'Checkbutton.indicator', {:side=>:left}, 
-                'Checkbutton.focus', {:side=>:left, :children=>[
-                    'Checkbutton.label'
-                ]}
-           ]}
-      ]}
-  ])
-
-  # Tk::Tile::Style.layout(Tk::Tile::TRadiobutton, 
-  Tk::Tile::Style.layout('TRadiobutton', [
-      'Radiobutton.background', # this is not needed in tile 0.5 or later
-      'Radiobutton.border', {:children=>[
-           'Radiobutton.padding', {:children=>[
-                'Radiobutton.indicator', {:side=>:left}, 
-                'Radiobutton.focus', {:expand=>true, :sticky=>:w, :children=>[
-                    'Radiobutton.label', {:side=>:right, :expand=>true}
-                ]}
-           ]}
-      ]}
-  ])
-end
-
-Tk::Tile::Style.theme_create('kroc-rb', :parent=>'alt', 
-                             :settings=>proc{ kroc_rb_settings() })
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc.tcl b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc.tcl
deleted file mode 100644 (file)
index 73548ac..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-# kroc.tcl - Copyright (C) 2004 David Zolli <kroc@kroc.tk>
-#
-# A sample pixmap theme for the tile package.
-
-#package require tile::pixmap
-
-namespace eval tile {
-    namespace eval kroc {
-        variable version 0.0.1
-    }
-}
-
-namespace eval tile::kroc {
-    
-    set imgdir [file join [file dirname [info script]] kroc]
-    array set Images [tile::LoadImages $imgdir *.gif]
-    
-    if {[package vsatisfies [package provide tile] 0.5]} {
-        set TNoteBook_Tab TNotebook.Tab
-    } else {
-        set TNoteBook_Tab Tab.TNotebook
-    }
-    
-    style theme create kroc -parent alt -settings {
-        
-        style default . -background #FCB64F -troughcolor #F8C278 -borderwidth 1
-       style default . -font TkDefaultFont -borderwidth 1
-        style map . -background [list active #694418]
-        style map . -foreground [list disabled #B2B2B2 active #FFE7CB]
-        
-        style default TButton -padding "10 4"
-        
-        style default $TNoteBook_Tab -padding {10 3} -font TkDefaultFont
-        style map $TNoteBook_Tab \
-                -background [list selected #FCB64F {} #FFE6BA] \
-                -foreground [list {} black] \
-                -padding [list selected {10 6 10 3}]
-
-        style map TScrollbar \
-               -background     { pressed #694418} \
-                -arrowcolor    { pressed #FFE7CB } \
-                -relief                { pressed sunken } \
-                ;
-        
-        style layout Vertical.TScrollbar {
-            Scrollbar.trough -children {
-                Scrollbar.uparrow -side top
-                Scrollbar.downarrow -side bottom
-                Scrollbar.uparrow -side bottom
-                Scrollbar.thumb -side top -expand true
-            }
-        }
-        
-        style layout Horizontal.TScrollbar {
-            Scrollbar.trough -children {
-                Scrollbar.leftarrow -side left
-                Scrollbar.rightarrow -side right
-                Scrollbar.leftarrow -side right
-                Scrollbar.thumb -side left -expand true
-            }
-        }
-        
-        #
-        # Elements:
-        #
-        if {[package vsatisfies [package provide tile] 0.5]} {
-            
-            style element create Button.button image $Images(button-n) \
-                -map [list  \
-                    pressed            $Images(button-p) \
-                    active             $Images(button-h) \
-                    ] -border 3 -sticky ew
-            
-            style element create Checkbutton.indicator image $Images(check-nu) \
-                -map [list \
-                    {pressed selected} $Images(check-nc) \
-                    pressed            $Images(check-nu) \
-                    {active selected}  $Images(check-hc) \
-                    active             $Images(check-hu) \
-                    selected           $Images(check-nc) \
-                    ] -sticky w
-            
-            style element create Radiobutton.indicator image $Images(radio-nu) \
-                -map [list \
-                    {pressed selected} $Images(radio-nc) \
-                    pressed            $Images(radio-nu) \
-                    {active selected}  $Images(radio-hc) \
-                    active             $Images(radio-hu) \
-                    selected           $Images(radio-nc) \
-                    ] -sticky w
-            
-        } else {
-            
-            style element create Button.button pixmap -images [list  \
-                    pressed            $Images(button-p) \
-                    active             $Images(button-h) \
-                    {}                 $Images(button-n) \
-                    ] -border 3 -tiling tile
-            
-            style element create Checkbutton.indicator pixmap -images [list \
-                    {pressed selected} $Images(check-nc) \
-                    pressed            $Images(check-nu) \
-                    {active selected}  $Images(check-hc) \
-                    active             $Images(check-hu) \
-                    selected           $Images(check-nc) \
-                    {}                 $Images(check-nu) \
-                    ] -tiling fixed
-            
-            style element create Radiobutton.indicator pixmap -images [list \
-                    {pressed selected} $Images(radio-nc) \
-                    pressed            $Images(radio-nu) \
-                    {active selected}  $Images(radio-hc) \
-                    active             $Images(radio-hu) \
-                    selected           $Images(radio-nc) \
-                    {}                 $Images(radio-nu) \
-                    ] -tiling fixed
-            
-        }
-
-        #
-        # Settings: (*button.background is not needed in tile 0.5 or above)
-        #
-        style layout TButton {
-           Button.button -children {
-               Button.focus -children {
-                   Button.padding -children {
-                       Button.label -expand true -sticky {}
-                   }
-               }
-           }
-        }
-
-        style layout TCheckbutton {
-           Checkbutton.border -children {
-               Checkbutton.background
-               Checkbutton.padding -children {
-                   Checkbutton.indicator -side left
-                   Checkbutton.focus -side left -children {
-                       Checkbutton.label
-                   }
-               }
-            }
-        }
-        
-        style layout TRadiobutton {
-            Radiobutton.border -children {
-                Radiobutton.background
-                Radiobutton.padding -children  {
-                    Radiobutton.indicator -side left
-                    Radiobutton.focus -expand true -sticky w -children {
-                        Radiobutton.label -side right -expand true
-                    }
-                }
-            }
-        }
-        
-    } }
-
-# -------------------------------------------------------------------------
-
-package provide tile::theme::kroc $::tile::kroc::version
-
-# -------------------------------------------------------------------------
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/button-h.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/button-h.gif
deleted file mode 100644 (file)
index e7a140d..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/button-h.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/button-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/button-n.gif
deleted file mode 100644 (file)
index 78b506d..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/button-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/button-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/button-p.gif
deleted file mode 100644 (file)
index a5a4e90..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/button-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-hc.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-hc.gif
deleted file mode 100644 (file)
index 41503c5..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-hc.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-hu.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-hu.gif
deleted file mode 100644 (file)
index b3e512c..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-hu.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-nc.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-nc.gif
deleted file mode 100644 (file)
index a28c288..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-nc.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-nu.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-nu.gif
deleted file mode 100644 (file)
index 5c23931..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/check-nu.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-hc.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-hc.gif
deleted file mode 100644 (file)
index 359fe1c..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-hc.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-hu.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-hu.gif
deleted file mode 100644 (file)
index 9f46b37..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-hu.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-nc.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-nc.gif
deleted file mode 100644 (file)
index 6437f33..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-nc.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-nu.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-nu.gif
deleted file mode 100644 (file)
index 2d2aac8..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/kroc/radio-nu.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/pkgIndex.tcl b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/kroc/pkgIndex.tcl
deleted file mode 100644 (file)
index aa29e7f..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# pkgIndex.tcl for additional tile pixmap themes.
-#
-# We don't provide the package is the image subdirectory isn't present,
-# or we don't have the right version of Tcl/Tk
-#
-# To use this automatically within tile, the tile-using application should
-# use tile::availableThemes and tile::setTheme 
-#
-# $Id: pkgIndex.tcl 11708 2007-02-12 23:01:19Z shyouhei $
-
-if {![file isdirectory [file join $dir kroc]]} { return }
-if {![package vsatisfies [package provide Tcl] 8.4]} { return }
-
-package ifneeded tile::theme::kroc 0.0.1 \
-    [list source [file join $dir kroc.tcl]]
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/pkgIndex.tcl b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/pkgIndex.tcl
deleted file mode 100644 (file)
index 8d7eb25..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# pkgIndex.tcl for additional tile pixmap themes.
-#
-# We don't provide the package is the image subdirectory isn't present,
-# or we don't have the right version of Tcl/Tk
-#
-# To use this automatically within tile, the tile-using application should
-# use tile::availableThemes and tile::setTheme 
-#
-# $Id: pkgIndex.tcl 11708 2007-02-12 23:01:19Z shyouhei $
-
-if {![file isdirectory [file join $dir plastik]]} { return }
-if {![package vsatisfies [package provide Tcl] 8.4]} { return }
-
-package ifneeded tile::theme::plastik 0.3.1 \
-    [list source [file join $dir plastik.tcl]]
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik.tcl b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik.tcl
deleted file mode 100644 (file)
index 0689b58..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-# plastik.tcl - Copyright (C) 2004 Googie
-#
-# A sample pixmap theme for the tile package.
-#
-#  Copyright (c) 2004 Googie
-#  Copyright (c) 2005 Pat Thoyts <patthoyts@users.sourceforge.net>
-#
-# $Id: plastik.tcl 11708 2007-02-12 23:01:19Z shyouhei $
-
-package require Tk 8.4
-package require tile 0.5
-
-namespace eval tile::theme::plastik {
-
-    variable version 0.3.1
-    package provide tile::theme::plastik $version
-
-    variable imgdir [file join [file dirname [info script]] plastik]
-    variable Images;
-    array set Images [tile::LoadImages $imgdir *.gif]
-
-    variable colors
-    array set colors {
-       -frame          "#cccccc"
-       -disabledfg     "#aaaaaa"
-       -selectbg       "#657a9e"
-       -selectfg       "#ffffff"
-    }
-
-style theme create plastik -parent default -settings {
-    style default . \
-       -background $colors(-frame) \
-       -troughcolor $colors(-frame) \
-       -selectbackground $colors(-selectbg) \
-       -selectforeground $colors(-selectfg) \
-       -font TkDefaultFont \
-       -borderwidth 1 \
-       ;
-
-    style map . -foreground [list disabled $colors(-disabledfg)]
-
-    #
-    # Layouts:
-    #
-    style layout Vertical.TScrollbar {
-        Scrollbar.background
-        Scrollbar.trough -children {
-            Scrollbar.uparrow -side top
-            Scrollbar.downarrow -side bottom
-            Scrollbar.uparrow -side bottom
-            Vertical.Scrollbar.thumb -side top -expand true -sticky ns
-        }
-    }
-
-    style layout Horizontal.TScrollbar {
-        Scrollbar.background
-        Scrollbar.trough -children {
-            Scrollbar.leftarrow -side left
-            Scrollbar.rightarrow -side right
-            Scrollbar.leftarrow -side right
-            Horizontal.Scrollbar.thumb -side left -expand true -sticky we
-        }
-    }
-
-    style layout TButton {
-        Button.button -children {
-           Button.focus -children {
-               Button.padding -children {
-                   Button.label -side left -expand true
-               }
-           }
-       }
-    }
-
-    #
-    # Elements:
-    #
-    style element create Button.button image $Images(button-n) \
-       -border 4 -sticky ew \
-       -map [list pressed $Images(button-p)  active $Images(button-h)]
-
-    style element create Checkbutton.indicator image $Images(check-nu) \
-       -sticky {} -map [list \
-           {active selected}     $Images(check-hc) \
-           {pressed selected}    $Images(check-pc) \
-           active                $Images(check-hu) \
-           selected              $Images(check-nc) \
-       ]
-
-    style element create Radiobutton.indicator image $Images(radio-nu) \
-       -sticky {} -map [list \
-           {active selected}     $Images(radio-hc) \
-           {pressed selected}    $Images(radio-pc) \
-           active                $Images(radio-hu) \
-           selected              $Images(radio-nc) \
-       ]
-
-    style element create Horizontal.Scrollbar.thumb \
-       image $Images(hsb-n) -border 3 -sticky ew
-    style element create Vertical.Scrollbar.thumb \
-       image $Images(vsb-n) -border 3 -sticky ns
-
-    style element create Scale.slider \
-       image $Images(hslider-n) -sticky {}
-    style element create Vertical.Scale.slider \
-       image $Images(vslider-n) -sticky {}
-
-    style element create Scrollbar.uparrow image $Images(arrowup-n) \
-       -map [list pressed $Images(arrowup-p)] -sticky {}
-    style element create Scrollbar.downarrow image $Images(arrowdown-n) \
-       -map [list pressed $Images(arrowdown-p)] -sticky {}
-    style element create Scrollbar.leftarrow image $Images(arrowleft-n) \
-       -map [list pressed $Images(arrowleft-p)] -sticky {}
-    style element create Scrollbar.rightarrow image $Images(arrowright-n) \
-       -map [list pressed $Images(arrowright-p)] -sticky {}
-
-    #
-    # Settings:
-    #
-    style default TButton -width -10
-    style default TNotebook.Tab -padding {6 2 6 2}
-    style default TLabelframe -borderwidth 2 -relief groove
-
-} }
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowdown-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowdown-n.gif
deleted file mode 100644 (file)
index d914e7a..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowdown-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowdown-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowdown-p.gif
deleted file mode 100644 (file)
index abffaa4..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowdown-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowleft-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowleft-n.gif
deleted file mode 100644 (file)
index 9939ae1..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowleft-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowleft-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowleft-p.gif
deleted file mode 100644 (file)
index 1a45ef2..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowleft-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowright-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowright-n.gif
deleted file mode 100644 (file)
index f4b563f..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowright-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowright-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowright-p.gif
deleted file mode 100644 (file)
index 5459d5e..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowright-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowup-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowup-n.gif
deleted file mode 100644 (file)
index 118290c..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowup-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowup-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowup-p.gif
deleted file mode 100644 (file)
index 89f9b38..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/arrowup-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/button-h.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/button-h.gif
deleted file mode 100644 (file)
index 548f376..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/button-h.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/button-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/button-n.gif
deleted file mode 100644 (file)
index 49a2590..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/button-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/button-p.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/button-p.gif
deleted file mode 100644 (file)
index e83f7ed..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/button-p.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-hc.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-hc.gif
deleted file mode 100644 (file)
index b279fa5..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-hc.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-hu.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-hu.gif
deleted file mode 100644 (file)
index 5b4fb4f..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-hu.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-nc.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-nc.gif
deleted file mode 100644 (file)
index b139e02..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-nc.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-nu.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-nu.gif
deleted file mode 100644 (file)
index fbe391f..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-nu.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-pc.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-pc.gif
deleted file mode 100644 (file)
index 75a3bd6..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/check-pc.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/hsb-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/hsb-n.gif
deleted file mode 100644 (file)
index b8ea07e..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/hsb-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/hslider-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/hslider-n.gif
deleted file mode 100644 (file)
index ce8f284..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/hslider-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-hc.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-hc.gif
deleted file mode 100644 (file)
index 3391771..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-hc.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-hu.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-hu.gif
deleted file mode 100644 (file)
index 88925d0..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-hu.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-nc.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-nc.gif
deleted file mode 100644 (file)
index f8723d3..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-nc.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-nu.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-nu.gif
deleted file mode 100644 (file)
index fb5140e..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-nu.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-pc.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-pc.gif
deleted file mode 100644 (file)
index 176225d..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/radio-pc.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/vsb-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/vsb-n.gif
deleted file mode 100644 (file)
index 85bac45..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/vsb-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/vslider-n.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/vslider-n.gif
deleted file mode 100644 (file)
index cf887f9..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/themes/plastik/plastik/vslider-n.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/toolbutton.tcl b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tile/toolbutton.tcl
deleted file mode 100644 (file)
index 8dba615..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-#
-# $Id: toolbutton.tcl 11708 2007-02-12 23:01:19Z shyouhei $
-#
-# Demonstration of custom widget styles.
-#
-
-#
-# ~ BACKGROUND
-#
-# Checkbuttons in toolbars have a very different appearance 
-# than regular checkbuttons: there's no indicator, they
-# "pop up" when the mouse is over them, and they appear sunken
-# when selected.
-# 
-# Tk added partial support for toolbar-style buttons in 8.4 
-# with the "-overrelief" option, and TIP #82 added further
-# support with the "-offrelief" option.  So to get a toolbar-style 
-# checkbutton, you can configure it with:
-#
-# checkbutton .cb \
-#     -indicatoron false -selectcolor {} -relief flat -overrelief raised
-#
-# Behind the scenes, Tk has a lot of rather complicated logic
-# to implement this checkbutton style; see library/button.tcl,
-# generic/tkButton.c, and the platform-specific files unix/tkUnixButton.c
-# et al. for the full details.
-#
-# The tile widget set has a better way: custom styles.
-# Since the appearance is completely controlled by the theme engine,
-# we can define a new "Toolbutton" style and just use:
-#
-# checkbutton .cb -style Toolbutton
-#
-#
-# ~ DEMONSTRATION
-#
-# The tile built-in themes (default, "alt", windows, and XP) 
-# already include Toolbutton styles.  This script will add
-# them to the "step" and "blue" themes as a demonstration.
-#
-# (Note: Pushbuttons and radiobuttons can also use the "Toolbutton" 
-# style; see demo.tcl.)
-#
-
-style theme settings "step" {
-
-#
-# First, we use [style layout] to define what elements to
-# use and how they're arranged.  Toolbuttons are pretty
-# simple, consisting of a border, some internal padding,
-# and a label.  (See also the TScrollbar layout definition 
-# in demos/blue.tcl for a more complicated layout spec.)
-#
-    style layout Toolbutton {
-        Toolbutton.background
-        Toolbutton.border -children {
-            Toolbutton.padding -children {
-                Toolbutton.label
-            }
-        }
-    }
-
-# (Actually the above isn't strictly necessary, since the same layout 
-# is defined in the default theme; we could have inherited it 
-# instead.)
-#
-# Next, specify default values for element options.
-# For many options (like -background), the defaults
-# inherited from the parent style are sufficient.
-#
-    style default Toolbutton -width 0 -padding 1 -relief flat -borderwidth 2
-
-#
-# Finally, use [style map] to specify state-specific 
-# resource values.  We want a flat relief if the widget is
-# disabled, sunken if it's selected (on) or pressed, 
-# and raised when it's active (the mouse pointer is
-# over the widget).  Each state-value pair is checked
-# in order, and the first matching state takes precedence.
-#
-    style map Toolbutton -relief {
-       disabled        flat
-       selected        sunken  
-       pressed         sunken  
-       active          raised
-    }
-}
-
-#
-# Now for the "blue" theme.  (Since the purpose of this
-# theme is to show what *can* be done, not necessarily what
-# *should* be done, the following makes some questionable
-# design decisions from an aesthetic standpoint.)
-#
-if {![catch {package require tile::theme::blue}]} {
-style theme settings "blue" {
-
-    #
-    # Default values:
-    #
-    style default Toolbutton \
-       -width 0 -relief flat -borderwidth 2 \
-       -background #6699CC -foreground #000000 ;
-
-    #
-    # Configure state-specific values for -relief, as before:
-    #
-    style map Toolbutton -relief {
-       disabled        flat
-       selected        sunken  
-       pressed         sunken  
-       active          raised
-    } 
-
-    #
-    # Adjust the -padding at the same time, to enhance
-    # the raised/sunken illusion:
-    #
-    style default Toolbutton -padding 4
-    style map Toolbutton -padding {
-       disabled        {4}
-       selected        {6 6 2 2}
-       pressed         {6 6 2 2}
-       active          {2 2 6 6}
-    }
-
-    #
-    # ... and change the foreground and background colors
-    # when the mouse cursor is over the widget:
-    #
-    style map Toolbutton -background {
-       active          #008800
-    } -foreground {
-       active          #FFFFFF
-    }
-}
-
-}
-
-#
-# ~ A final note:  
-#
-# TIP #82 also says: "When -indicatoron is off and the button itself
-# is on, the relief continues to be hard-coded to sunken. For symmetry,
-# we might consider adding another -onrelief option to cover this
-# case. But it is difficult to imagine ever wanting to change the
-# value of -onrelief so it has been omitted from this TIP.
-# If there as strong desire to have -onrelief, it can be added later."
-# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-#
-# The Tile project aims to make sure that this never needs to happen.
-#
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/Orig_COPYRIGHT.txt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/Orig_COPYRIGHT.txt
deleted file mode 100644 (file)
index 2b3757b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-The following text is the original 'COPYRIGHT' file of tkHTML. 
-
------------------------------------------------------------------------
-Most of the source code for the Tk Html widget has been place in the
-public domain.  You can do with it whatever you want.  However, some
-files have been copied from other sources and contain copyrights.
-A copyright notice appears separately at the top of each source file.
------------------------------------------------------------------------
-
-In this sample, HTML documents are quoted in the 'tests' directory of
-tkHTML source tree. There were no copyright notice in the directory. 
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/README b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/README
deleted file mode 100644 (file)
index 1208e27..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-   [ TkHtml widget example ]
-
-The directory page1 -- page4 are referd from "test" directory of 
-original TkHtml extension's source archive. 
-( see http://www.hwaci.com/sw/tkhtml/index.html )
-
-You can see the HTML documents on the 'hv.rb' or 'ss.rb' sample script.
-
- e.g. 
-   LD_LIBRARY_PATH=/usr/local/ActiveTcl/lib:$LD_LIBRARY_PATH /usr/local/bin/ruby ./hv.rb page1/index.html
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/hv.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/hv.rb
deleted file mode 100644 (file)
index a4d78ea..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-#!/usr/bin/env ruby
-#
-# This script implements the "hv" application.  Type "hv FILE" to
-# view FILE as HTML.
-#
-# This application is used for testing the HTML widget.  It can
-# also server as an example of how to use the HTML widget.
-# 
-require 'tk'
-require 'tkextlib/tkHTML'
-
-root = TkRoot.new(:title=>'HTML File Viewer', :iconname=>'HV')
-
-file = ARGV[0]
-
-#
-# These images are used in place of GIFs or of form elements
-#
-biggray = TkPhotoImage.new(:data=><<'EOD')
-    R0lGODdhPAA+APAAALi4uAAAACwAAAAAPAA+AAACQISPqcvtD6OctNqLs968+w+G4kiW5omm
-    6sq27gvH8kzX9o3n+s73/g8MCofEovGITCqXzKbzCY1Kp9Sq9YrNFgsAO///
-EOD
-
-smgray = TkPhotoImage.new(:data=><<'EOD')
-    R0lGODdhOAAYAPAAALi4uAAAACwAAAAAOAAYAAACI4SPqcvtD6OctNqLs968+w+G4kiW5omm
-    6sq27gvH8kzX9m0VADv/
-EOD
-
-nogifbig = TkPhotoImage.new(:data=><<'EOD')
-    R0lGODdhJAAkAPEAAACQkADQ0PgAAAAAACwAAAAAJAAkAAACmISPqcsQD6OcdJqKM71PeK15
-    AsSJH0iZY1CqqKSurfsGsex08XuTuU7L9HywHWZILAaVJssvgoREk5PolFo1XrHZ29IZ8oo0
-    HKEYVDYbyc/jFhz2otvdcyZdF68qeKh2DZd3AtS0QWcDSDgWKJXY+MXS9qY4+JA2+Vho+YPp
-    FzSjiTIEWslDQ1rDhPOY2sXVOgeb2kBbu1AAADv/
-EOD
-
-nogifsm = TkPhotoImage.new(:data=><<'EOD')
-    R0lGODdhEAAQAPEAAACQkADQ0PgAAAAAACwAAAAAEAAQAAACNISPacHtD4IQz80QJ60as25d
-    3idKZdR0IIOm2ta0Lhw/Lz2S1JqvK8ozbTKlEIVYceWSjwIAO///
-EOD
-
-#
-# define variables
-#
-ul_hyper = TkVariable.new(0)
-show_tbl = TkVariable.new(0)
-show_img = TkVariable.new(1)
-
-#
-# A font chooser routine.
-#
-# html[:fontcommand] = pick_font
-pick_font = proc{|size, attrs|
-  puts "FontCmd: #{size} #{attrs}"
-  [ ((attrs =~ /fixed/)? 'courier': 'charter'), 
-    (12 * (1.2**(size.to_f - 4.0))).to_i, 
-    ((attrs =~ /italic/)? 'italic': 'roman'), 
-    ((attrs =~ /bold/)? 'bold': 'normal') ].join(' ') 
-} 
-
-#
-# This routine is called for each form element
-#
-form_cmd = proc{|n, cmd, style, *args|
-  # puts "FormCmd: $n $cmd $args"
-  case cmd
-  when 'select', 'textarea', 'input'
-    TkLabel.new(:widgetname=>args[0], :image=>nogifsm)
-  end
-}
-
-#
-# This routine is called for every <IMG> markup
-#
-images   = {}
-old_imgs = {}
-big_imgs = {}
-
-hotkey   = {}
-
-move_big_image = proc{|b|
-  if big_imgs.key?(b)
-    b.copy(big_imgs[b])
-    big_imgs[b].delete
-    big_imgs.delete(b)
-    Tk.update
-  end
-}
-
-image_cmd = proc{|*args|
-  if show_img.bool
-    smgray
-  else
-    fn = args[0]
-
-    if old_imgs.key?(fn)
-      images[fn] = old_imgs[fn]
-      old_imgs.delete(fn)
-      images[fn]
-
-    else
-      begin
-        img = TkPhotoImage.new(:file=>fn)
-      rescue
-        smgray
-      else
-        if img.width * img.height > 20000
-          b = TkPhotoImage.new(:width=>img.width, :height=>img.height)
-          big_imgs[b] = img
-          img = b
-          Tk.after_idle(proc{ move_big_image.call(b) })
-        end
-
-        images[fn] = img
-        img
-      end
-    end
-  end
-}
-
-#
-# This routine is called for every <SCRIPT> markup
-#
-script_cmd = proc{|*args|
-  # puts "ScriptCmd: #{args.inspect}"
-}
-
-# This routine is called for every <APPLET> markup
-#
-applet_cmd = proc{|w, arglist| 
-  # puts "AppletCmd: w=#{w} arglist=#{arglist}"
-  TkLabel.new(w, :text=>"The Applet #{w}", :bd=>2, :relief=>raised)
-}
-
-#
-# Construct the main HTML viewer
-#
-html = Tk::HTML_Widget.new(:padx=>5, :pady=>9, 
-                           :formcommand=>form_cmd, 
-                           :imagecommand=>image_cmd, 
-                           :scriptcommand=>script_cmd, 
-                           :appletcommand=>applet_cmd, 
-                           :underlinehyperlinks=>0, 
-                           :bg=>'white', :tablerelief=>:raised)
-vscr = html.yscrollbar(TkScrollbar.new)
-hscr = html.xscrollbar(TkScrollbar.new)
-
-Tk.grid(html, vscr, :sticky=>:news)
-Tk.grid(hscr,       :sticky=>:ew)
-Tk.root.grid_columnconfigure(0, :weight=>1)
-Tk.root.grid_columnconfigure(1, :weight=>0)
-Tk.root.grid_rowconfigure(0, :weight=>1)
-Tk.root.grid_rowconfigure(1, :weight=>0)
-
-#
-# This procedure is called when the user clicks on a hyperlink.
-#
-priv = {}
-last_file = ''
-
-# Read a file
-#
-read_file = proc{|name|
-  begin
-    fp = open(name, 'r')
-    ret = fp.read(File.size(name))
-  rescue
-    ret = nil
-    fp = nil
-    Tk.messageBox(:icon=>'error', :message=>"fail to open '#{name}'", 
-                  :type=>:ok)
-  ensure
-    fp.close if fp
-  end
-  ret
-}
-
-# Clear the screen.
-#
-clear_screen = proc{
-  html.clear
-  old_imgs.clear
-  big_imgs.clear
-  hotkey.clear
-  images.each{|k, v| old_imgs[k] = v }
-  images.clear
-}
-
-# Load a file into the HTML widget
-#
-load_file = proc{|name|
-  if (doc = read_file.call(name))
-    clear_screen.call
-    last_file = name
-    html.configure(:base=>name)
-    html.parse(doc)
-    old_imgs.clear
-  end
-}
-
-href_binding = proc{|x, y|
-  # koba & dg marking text
-  html.selection_clear
-  priv['mark'] = "@#{x},#{y}"
-  lst = html.href(x, y)
-
-  unless lst.size.zero?
-    lnk, target = lst
-
-    if lnk != ""
-      if lnk =~ /^#{last_file}#(.*)$/
-        html.yview($1)
-      else
-        load_file.call(lnk)
-      end
-    end
-  end
-}
-html.clipping_window.bind('1', href_binding, '%x %y')
-
-# marking text with the mouse and copying to the clipboard just with tkhtml2.0 working
-html.clipping_window.bind('B1-Motion', proc{|w, x, y|
-                            w.selection_set(priv['mark'], "@#{x},#{y}")
-                            TkClipboard.clear
-                            # avoid tkhtml0.0 errors 
-                            # anyone can fix this for tkhtml0.0
-                            begin
-                              TkClipboard.append(TkSelection.get)
-                            rescue
-                            end
-                          }, '%W %x %y')
-
-# This procedure is called when the user selects the File/Open
-# menu option.
-#
-last_dir = Dir.pwd
-sel_load = proc{
-  filetypes = [
-    ['Html Files', ['.html', '.htm']], 
-    ['All Files', '*']
-  ]
-
-  f = Tk.getOpenFile(:initialdir=>last_dir, :filetypes=>filetypes)
-  if f != ''
-    load_file.call(f)
-    last_dir = File.dirname(f)
-  end
-}
-
-# Refresh the current file.
-#
-refresh = proc{|*args|
-  load_file.call(last_file)
-}
-
-# This binding changes the cursor when the mouse move over
-# top of a hyperlink.
-#
-Tk::HTML_Widget::ClippingWindow.bind('Motion', proc{|w, x, y|
-                                       parent = w.winfo_parent
-                                       url = parent.href(x, y)
-                                       unless url.empty?
-                                         parent[:cursor] = 'hand2'
-                                       else
-                                         parent[:cursor] = ''
-                                       end
-                                     }, '%W %x %y')
-#
-# Setup menu
-#
-menu_spec = [
-  [['File', 0], 
-    ['Open',    sel_load, 0], 
-    ['Refresh', refresh,   0], 
-    '---',
-    ['Exit', proc{exit}, 1]], 
-
-  [['View', 0], 
-    ['Underline Hyperlinks', ul_hyper], 
-    ['Show Table Structure', show_tbl], 
-    ['Show Images',          show_img]]
-]
-
-mbar = Tk.root.add_menubar(menu_spec)
-
-#
-# Setup trace
-#
-ul_hyper.trace('w', proc{ 
-                 html[:underlinehyperlinks] = ul_hyper.value
-                 refresh.call
-               })
-
-show_tbl.trace('w', proc{
-                 if show_tbl.bool
-                   html[:tablerelief] = :flat
-                 else
-                   html[:tablerelief] = :raised
-                 end
-                 refresh.call
-               })
-
-show_img.trace('w', refresh)
-
-# If an arguent was specified, read it into the HTML widget.
-#
-Tk.update
-if file && file != ""
-  load_file.call(file)
-end
-
-#####################################
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image1 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image1
deleted file mode 100644 (file)
index 31e96b6..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image1 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image10 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image10
deleted file mode 100644 (file)
index 80a8f81..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image10 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image11 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image11
deleted file mode 100644 (file)
index e8cb01d..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image11 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image12 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image12
deleted file mode 100644 (file)
index c317bbd..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image12 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image13 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image13
deleted file mode 100644 (file)
index ac4b3cd..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image13 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image14 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image14
deleted file mode 100644 (file)
index c3b0255..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image14 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image2 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image2
deleted file mode 100644 (file)
index da26d70..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image2 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image3 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image3
deleted file mode 100644 (file)
index d91cdfa..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image3 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image4 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image4
deleted file mode 100644 (file)
index 5fdf70c..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image4 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image5 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image5
deleted file mode 100644 (file)
index 67cd14d..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image5 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image6 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image6
deleted file mode 100644 (file)
index 9e05aa0..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image6 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image7 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image7
deleted file mode 100644 (file)
index 879656d..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image7 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image8 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image8
deleted file mode 100644 (file)
index 8c647c4..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image8 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image9 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image9
deleted file mode 100644 (file)
index 3a77075..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/image9 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/index.html b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page1/index.html
deleted file mode 100644 (file)
index 9efac7f..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<HTML><HEAD><TITLE>Slashdot:News for Nerds. Stuff that Matters.</TITLE>  </HEAD>
-<BODY bgcolor="#000000" text="#000000" link="#006666" vlink="#000000">
-<center><a href="http://209.207.224.220/redir.pl?1463" target="_top"><img src="image1" alt="Click Here to enter the Sweepstakes" border="2" width="468" height="60"></a></center> <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0"><TR><TD WIDTH="1"><SCRIPT LANGUAGE="JAVASCRIPT">
-<!-- now="now" ="" new="new" Date();="Date();" tail="tail" ="" now.getTime();="now.getTime();" document.write("<IMG="document.write("<IMG" SRC="http://209.207.224.245/Slashdot/pc.gif?/slashhead.inc,"+" tail="tail" +="+" "=""" WIDTH="1" HEIGHT="1><BR>");" -->
-</SCRIPT>
-<NOSCRIPT>
-<IMG SRC="image2" WIDTH="1" HEIGHT="1">
-</NOSCRIPT></TD></TR></TABLE><P>
-<TABLE bgcolor="#FFFFFF" cellpadding="0" cellspacing="0" border="0" width="99%" align="center">
- <TR>
-  <TD valign="top" align="left" valign="top"><A href="http://slashdot.org/"><IMG src="image3" width="275" height="72" border="0" alt="Welcome to Slashdot"></A></TD>
-   <TD><A href="http://slashdot.org/search.pl?topic=linux"><IMG SRC="image4" width="60" height="70" border="0" alt="Linux"></A></TD>
-<TD><A href="http://slashdot.org/search.pl?topic=news"><IMG SRC="image5" width="34" height="44" border="0" alt="News"></A></TD>
-<TD><A href="http://slashdot.org/search.pl?topic=usa"><IMG SRC="image6" width="80" height="61" border="0" alt="United States"></A></TD>
-<TD><A href="http://slashdot.org/search.pl?topic=ed"><IMG SRC="image7" width="87" height="64" border="0" alt="Education"></A></TD>
-<TD><A href="http://slashdot.org/search.pl?topic=space"><IMG SRC="image8" width="73" height="59" border="0" alt="Space"></A></TD>
-
-</TR></TABLE>
-<TABLE width="99%" align="center" cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF"><TR>
-<TD valign="top" rowspan="5"><NOBR><FONT size="2"><B>
-&nbsp;<A href="/faq.shtml">faq</A> <BR>
-&nbsp;<A href="/code.shtml">code</A> <BR>
-&nbsp;<A href="/awards.shtml">awards</A> <BR>
-&nbsp;<A href="http://Andover.Net/privacy.html">privacy</A> <BR>
-&nbsp;<A href="http://slashnet.org">slashNET</A> <BR>
-&nbsp;<A href="/search.pl">older stuff</A> <BR>
-&nbsp;<A href="http://cmdrtaco.net">rob's page</A> <BR>
-&nbsp;<A href="/users.pl?op=preferences">preferences</A> <BR>
-&nbsp;<A href="http://Andover.Net">andover.net</A> <BR>
-&nbsp;<A href="/submit.pl">submit story</A> <BR>
-&nbsp;<A href="/advertising.shtml">advertising</A> <BR>
-&nbsp;<A href="/supporters.shtml">supporters</A> <BR>
-&nbsp;<A href="/pollBooth.pl">past polls</A> <BR>
-&nbsp;<A href="/topics.shtml">topics</A> <BR>
-&nbsp;<A href="/about.shtml">about</A> <BR>
-&nbsp;<A href="/jobs.shtml">jobs</A> <BR>
-&nbsp;<A href="/hof.shtml">hof</A>
-
-</B></FONT></NOBR>
- <P><TABLE border="0" cellpadding="1" cellspacing="0" align="center" bgcolor="#CCCCCC"><TR>
-  <TD><FONT size="2" color="#000000"><B> Sections</B></FONT></TD></TR>
- <TR><TD><TABLE border="0" cellspacing="1" cellpadding="1" bgcolor="#FFFFFF" width="100%"><TR><TD><FONT color="#000000" size="2"><NOBR>
-1/23<BR>
-<B><A href="http://slashdot.org/index.pl?section=apache">apache</A></B><BR>
-1/29 (3)<BR>
-<B><A href="http://slashdot.org/index.pl?section=askslashdot">askslashdot</A></B><BR>
-1/27<BR>
-<B><A href="http://slashdot.org/index.pl?section=awards">awards</A></B><BR>
-1/29 (2)<BR>
-<B><A href="http://slashdot.org/index.pl?section=books">books</A></B><BR>
-1/27<BR>
-<B><A href="http://slashdot.org/index.pl?section=bsd">bsd</A></B><BR>
-1/28 (2)<BR>
-<B><A href="http://slashdot.org/index.pl?section=features">features</A></B><BR>
-1/28 (2)<BR>
-<B><A href="http://slashdot.org/index.pl?section=interviews">interviews</A></B><BR>
-1/19<BR>
-<B><A href="http://slashdot.org/index.pl?section=radio">radio</A></B><BR>
-1/27 (2)<BR>
-<B><A href="http://slashdot.org/index.pl?section=science">science</A></B><BR>
-1/28 (3)<BR>
-<B><A href="http://slashdot.org/index.pl?section=yro">yro</A></B><BR> </NOBR></FONT></TD></TR></TABLE><TR>
-  <TD><A href="http://andover.net"><FONT size="2" color="#000000"><B>Andover.Net</B></FONT></A></TD></TR>
- <TR><TD><TABLE border="0" cellspacing="1" cellpadding="1" bgcolor="#FFFFFF"><TR><TD>
-<FONT color="#000000" size="2"><NOBR><A href="http://www.andovernews.com">AndoverNews</A><BR><A href="http://www.askreggie.com">Ask Reggie</A><BR><A href="http://www.davecentral.com">DaveCentral</A><BR><A href="http://www.freecode.com">FreeCode</A><BR><A href="http://www.mediabuilder.com">MediaBuilder</A><BR> </NOBR></FONT></TD></TR></TABLE></TD></TR></TABLE></P>
- <P></P>
-</TD><TD valign="top" align="left"><FONT color="#000000"> <TABLE width="99%" cellpadding="0" cellspacing="0" border="0"><TR><TD valign="top" bgcolor="#006666"><IMG src="image9" width="13" height="16" alt="" align="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B>Who Bought Linux.Net?</B></FONT></TD> </TR></TABLE><A href="http://slashdot.org/search.pl?topic=linux"><IMG src="image4" width="60" height="70" border="0" align="right" hspace="20" vspace="10" alt="Linux"></A> <B>Posted by <A href="http://CmdrTaco.net">CmdrTaco</A> on Saturday January 29, @10:52AM</B><BR> <FONT size="2"><B>from the this-game-again dept.</B></FONT><BR> So Fred VanKampen (who has to hold the record for most money made by reselling two domain names) e-mailed us to say that the Domain Name for 'Linux.Net' has been sold. He won't say to whom, but it supposedly will be announced at LinuxWorld next week. Of course we have no idea what he got for the entry, but the rumors were that he made several million when he sold <A href="http://www.linux.com">Linux.com</A> to <A href="http://www.valinux.com">VA Linux</A>. Hopefully he'll take me for a ride in his yacht. ;) <P><B>( </B><A href="http://slashdot.org/articles/00/01/29/0837235.shtml"><B>Read More...</B></A> | <B><A href="http://slashdot.org/article.pl?sid=00/01/29/0837235&mode=thread&threshold=0">58</A> of <A href="http://slashdot.org/article.pl?sid=00/01/29/0837235&mode=thread&threshold=-1">62</A> </B>comments <B>)</B> <P><TABLE width="99%" cellpadding="0" cellspacing="0" border="0"><TR><TD valign="top" bgcolor="#006666"><IMG src="image9" width="13" height="16" alt="" align="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B>Book Reviews: E-Mails from (Over?) The Edge</B></FONT></TD> </TR></TABLE><A href="http://slashdot.org/search.pl?topic=news"><IMG src="image5" width="34" height="44" border="0" align="right" hspace="20" vspace="10" alt="News"></A> <B>Posted by <A href="http://hemos.net">Hemos</A> on Saturday January 29, @10:43AM</B><BR> <FONT size="2"><B>from the touching-story dept.</B></FONT><BR> I'd like to thank the author of this book for sending it to me. Nick's written a book that's touching and endearing, and one that's well worth reading for everyone who's ever had social struggles to deal with. As well, his involvement with the fine folks of <a href="http://www.thevenue.org">TheVenue</a>. I'll warn you - it's not a tech text. But it's still worth reading. Click below to read more. <P><B>( </B><A href="http://slashdot.org/books/00/01/24/1146250.shtml"><B>Read More...</B></A> | <A href="http://slashdot.org/article.pl?sid=00/01/24/1146250&mode=nocomment">6197 bytes in body</A> | <B><A href="http://slashdot.org/article.pl?sid=00/01/24/1146250&mode=thread&threshold=0">6</A> of <A href="http://slashdot.org/article.pl?sid=00/01/24/1146250&mode=thread&threshold=-1">22</A> </B>comments <B>)</B> <P><TABLE width="99%" cellpadding="0" cellspacing="0" border="0"><TR><TD valign="top" bgcolor="#006666"><IMG src="image9" width="13" height="16" alt="" align="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B>Linux Kernel 2.3.41</B></FONT></TD> </TR></TABLE><A href="http://slashdot.org/search.pl?topic=linux"><IMG src="image4" width="60" height="70" border="0" align="right" hspace="20" vspace="10" alt="Linux"></A> <B>Posted by <A href="http://CmdrTaco.net">CmdrTaco</A> on Saturday January 29, @10:21AM</B><BR> <FONT size="2"><B>from the download-compile-reboot-repeat dept.</B></FONT><BR> <A href="mailto:bwhitehead@nospam.acm.org">sdriver</A> writes <I>"For those of us who enjoy *panic*, *oops*, and suddenly seeing their video BIOS... the newest version is out! Be the first on your block to submit a new patch! ;) "</I> If you don't know where to get it, you probably should stick to your warm and cuddly 2.2.x kernel *grin*. Now outta my way, I wanna crash my laptop! <P><B>( </B><A href="http://slashdot.org/articles/00/01/29/0834223.shtml"><B>Read More...</B></A> | <B><A href="http://slashdot.org/article.pl?sid=00/01/29/0834223&mode=thread&threshold=0">52</A> of <A href="http://slashdot.org/article.pl?sid=00/01/29/0834223&mode=thread&threshold=-1">57</A> </B>comments <B>)</B> <P><TABLE width="99%" cellpadding="0" cellspacing="0" border="0"><TR><TD valign="top" bgcolor="#006666"><IMG src="image9" width="13" height="16" alt="" align="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B>Congress Still Figuring Out E-Mail</B></FONT></TD> </TR></TABLE><A href="http://slashdot.org/search.pl?topic=usa"><IMG src="image6" width="80" height="61" border="0" align="right" hspace="20" vspace="10" alt="United States"></A> <B>Posted by <A href="mailto:roblimo@slashdot.org">Roblimo</A> on Saturday January 29, @07:28AM</B><BR> <FONT size="2"><B>from the voice-of-the-people-can-get-awfully-loud dept.</B></FONT><BR> Jett writes <I>" <A href="http://www.vote.com/">Vote.com</A> has <A href="http://www.vote.com/magazine/editorials/editorial1843752.phtml">an interesting article</A> in their Webmag Fifth Estate about how congressmen have responded to the popularity of e-mail in their daily operations. Quote: 'Of the 440 voting and non-voting House of Representatives members, 22 have no e-mail at all. Even House Speaker Dennis Hastert is wired only halfway -- his office receives e-mail, but does not respond to it. And while all U.S. senators have e-mail, they, like their House counterparts, routinely shun non-constituent mail -- even though they chair committees whose decisions affect the entire country.'"</I> <P><B>( </B><A href="http://slashdot.org/articles/00/01/28/2311232.shtml"><B>Read More...</B></A> | <B><A href="http://slashdot.org/article.pl?sid=00/01/28/2311232&mode=thread&threshold=0">66</A> of <A href="http://slashdot.org/article.pl?sid=00/01/28/2311232&mode=thread&threshold=-1">66</A> </B>comments <B>)</B> <P><TABLE width="99%" cellpadding="0" cellspacing="0" border="0"><TR><TD valign="top" bgcolor="#006666"><IMG src="image9" width="13" height="16" alt="" align="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B>Ask Slashdot: Sci Fi Literature 101?</B></FONT></TD> </TR></TABLE><A href="http://slashdot.org/search.pl?topic=ed"><IMG src="image7" width="87" height="64" border="0" align="right" hspace="20" vspace="10" alt="Education"></A> <B>Posted by <A href="http://exit118.com/">Cliff</A> on Saturday January 29, @06:56AM</B><BR> <FONT size="2"><B>from the recommendations-wanted dept.</B></FONT><BR> ohlaadee asks: <I>"My niece (she's 13) wants to start reading science fiction. I do too. I gave us both Asimov's </I>_The Foundation_<I>&nbsp; for Christmas. We'll read it together. I suppose we could spend the rest of our lives just reading Asimov, but I'm wondering what books and movies you folks would come up with? What does the /. recommended Science Fiction 101 list include?"</I> <P><B>( </B><A href="http://slashdot.org/askslashdot/00/01/22/1946244.shtml"><B>Read More...</B></A> | <B><A href="http://slashdot.org/article.pl?sid=00/01/22/1946244&mode=thread&threshold=0">345</A> of <A href="http://slashdot.org/article.pl?sid=00/01/22/1946244&mode=thread&threshold=-1">345</A> </B>comments <B>)</B> <P><TABLE width="99%" cellpadding="0" cellspacing="0" border="0"><TR><TD valign="top" bgcolor="#006666"><IMG src="image9" width="13" height="16" alt="" align="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B>Could Distributed.Net Help the Mars Polar Lander?</B></FONT></TD> </TR></TABLE><A href="http://slashdot.org/search.pl?topic=space"><IMG src="image8" width="73" height="59" border="0" align="right" hspace="20" vspace="10" alt="Space"></A> <B>Posted by <A href="mailto:roblimo@slashdot.org">Roblimo</A> on Saturday January 29, @03:35AM</B><BR> <FONT size="2"><B>from the food-for-thought dept.</B></FONT><BR> Anonymous Coward writes <I>"This official JPL <A href="http://mpfwww.jpl.nasa.gov/msp98/news/mpl000127.html">press release</A> describes the current attempt to listen for faint signals from the Mars Lander. They get three windows a day, and it takes 18 hours to process data because the signal is so weak (if it's really there). Too bad they don't have a deal with <A href="http://www.distributed.net"> distributed.net</A>."</I> Interesting thought. Is anyone at distributed.net or JPL interested in pursuing it? <P><B>( </B><A href="http://slashdot.org/articles/00/01/28/2318246.shtml"><B>Read More...</B></A> | <B><A href="http://slashdot.org/article.pl?sid=00/01/28/2318246&mode=thread&threshold=0">99</A> of <A href="http://slashdot.org/article.pl?sid=00/01/28/2318246&mode=thread&threshold=-1">102</A> </B>comments <B>)</B> <P><TABLE width="99%" cellpadding="0" cellspacing="0" border="0"><TR><TD valign="top" bgcolor="#006666"><IMG src="image9" width="13" height="16" alt="" align="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B>iCrave TV Loses Battle against U.S. Broadcasters</B></FONT></TD> </TR></TABLE><A href="http://slashdot.org/search.pl?topic=tv"><IMG src="image10" width="50" height="50" border="0" align="right" hspace="20" vspace="10" alt="Television"></A> <B>Posted by <A href="mailto:roblimo@slashdot.org">Roblimo</A> on Saturday January 29, @12:21AM</B><BR> <FONT size="2"><B>from the shut-down-just-before-the-super-bowl dept.</B></FONT><BR> <A href="mailto:doran@brandx.net">Doran</A> writes <I>"C|Net has <a href="http://news.cnet.com/news/0-1004-200-1535528.html">this story</a> about how the Canadian company <a href="http://www.icravetv.com">iCraveTV.com</a> has lost its latest battle in U.S. courts over whether it can rebroadcast TV signals over the Web. The broadcasters say it's theft, while iCraveTV sez it's just doing what's legal for other cable TV companies in Canada (ie. rebroadcasting TV). Of course, by framing the streaming video iCraveTV is doing more than just rebroadcasting, they're also adding more commercial content, which the broadcasters feel dilutes their TV commercials. "</I> <P><B>( </B><A href="http://slashdot.org/articles/00/01/29/0010203.shtml"><B>Read More...</B></A> | <B><A href="http://slashdot.org/article.pl?sid=00/01/29/0010203&mode=thread&threshold=0">152</A> of <A href="http://slashdot.org/article.pl?sid=00/01/29/0010203&mode=thread&threshold=-1">170</A> </B>comments <B>)</B> <P><TABLE width="99%" cellpadding="0" cellspacing="0" border="0"><TR><TD valign="top" bgcolor="#006666"><IMG src="image9" width="13" height="16" alt="" align="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B>Win2k Security holes found</B></FONT></TD> </TR></TABLE><A href="http://slashdot.org/search.pl?topic=microsoft"><IMG src="image11" width="75" height="55" border="0" align="right" hspace="20" vspace="10" alt="Microsoft"></A> <B>Posted by <A href="mailto:heunique@slashdot.org">HeUnique</A> on Friday January 28, @04:58PM</B><BR> <FONT size="2"><B>from the and-it's-not-even-out-yet dept.</B></FONT><BR> According to a story posted by <a href="http://www.zdnn.com">ZDNN</a>, <a href="http://www.zdnet.com/zdnn/stories/news/0,4586,2429334,00.html?chkpt=zdnntop">two security holes</a> have been found on Windows 2000, and that's even before the official release of Windows 2000! Administrators who rush to incorporate the patch from MS beware - according to one of the talkback posts on ZDNN, the patch creates a new problem with Windows 2000 news server service. <P><B>( </B><A href="http://slashdot.org/articles/00/01/28/1653228.shtml"><B>Read More...</B></A> | <B><A href="http://slashdot.org/article.pl?sid=00/01/28/1653228&mode=thread&threshold=0">510</A> of <A href="http://slashdot.org/article.pl?sid=00/01/28/1653228&mode=thread&threshold=-1">534</A> </B>comments <B>)</B> <P><TABLE width="99%" cellpadding="0" cellspacing="0" border="0"><TR><TD valign="top" bgcolor="#006666"><IMG src="image9" width="13" height="16" alt="" align="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B>Encryption Debate at Mitnick Trial</B></FONT></TD> </TR></TABLE><A href="http://slashdot.org/search.pl?topic=encryption"><IMG src="image12" width="80" height="70" border="0" align="right" hspace="20" vspace="10" alt="Encryption"></A> <B>Posted by <A href="http://hemos.net">Hemos</A> on Friday January 28, @03:33PM</B><BR> <FONT size="2"><B>from the gimmie-the-data dept.</B></FONT><BR> A number of people have written about <A HREF="http://nytimes.com/library/tech/00/01/cyber/cyberlaw/28law.html">the latest twist</a> in the Mitnick case. Kevin wants to get his data back, but the government is refusing to do so until he gives them the key. Apparently, the government is unable to crack the encryption that he's got on it - you'd think after having the data for five years, they'd be able to brute-force the darn thing. It's a NYT article - free login required. <P><B>( </B><A href="http://slashdot.org/articles/00/01/28/1320253.shtml"><B>Read More...</B></A> | <B><A href="http://slashdot.org/article.pl?sid=00/01/28/1320253&mode=thread&threshold=0">504</A> of <A href="http://slashdot.org/article.pl?sid=00/01/28/1320253&mode=thread&threshold=-1">521</A> </B>comments <B>)</B> <P><TABLE width="99%" cellpadding="0" cellspacing="0" border="0"><TR><TD valign="top" bgcolor="#006666"><IMG src="image9" width="13" height="16" alt="" align="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B>Forum: Future Ports of Games to Linux</B></FONT></TD> </TR></TABLE><A href="http://slashdot.org/search.pl?topic=games"><IMG src="image13" width="80" height="56" border="0" align="right" hspace="20" vspace="10" alt="Games"></A> <B>Posted by <A href="http://CmdrTaco.net">CmdrTaco</A> on Friday January 28, @02:26PM</B><BR> <FONT size="2"><B>from the it's-been-awhile dept.</B></FONT><BR> It's been a long time since I posted an open forum like this, but I'm curious what people think on this one. What games do you most want to see ported to Linux in the next few months? Of course, for me personally it's StarCraft and Diablo 2, but I'm curious what games have come out or are due soon that people would most like to see a port of (and note that WINE doesn't count. ;) <P><B>( </B><A href="http://slashdot.org/articles/00/01/28/1257211.shtml"><B>Read More...</B></A> | <B><A href="http://slashdot.org/article.pl?sid=00/01/28/1257211&mode=thread&threshold=0">648</A> of <A href="http://slashdot.org/article.pl?sid=00/01/28/1257211&mode=thread&threshold=-1">652</A> </B>comments <B>)</B> <P></TD><TD width="210" align="center" valign="top"><TABLE cellpadding="1" cellspacing="0" border="0" width="200" align="center"> <TR bgcolor="#006666"> <TD valign="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B><A HREF="/index.pl?section=features"><FONT COLOR="#FFFFFF">Features</FONT></A></B></FONT></TD> </TR><TR><TD bgcolor="#CCCCCC"><FONT color="#000000" size="2"><A href="/vote.pl">Voting has begun</A> for the $100k <A href="/index.pl?section=awards">Slashdot Beanie Awards</A>. Talk amongst yourselves and choose who deserves the cash. <P>The latest installment of <A href="http://www.thesync.com/geeks">Geeks in Space</A> is up at <A href="http://www.thesync.com">The Sync</A>. Listen to CmdrTaco, Hemos, and Nate talk about the latest events to happen - or not happen in the computer world. <P>Perhaps you are seeking Jon Katz's series of articles related to recent events in Colorado. These articles include <A href="/article.pl?sid=99/04/25/1438249">Voices from the Hellmouth</A>, <A href="/article.pl?sid=99/04/27/0310247">More Stories from the Hellmouth</A> or <A href="/article.pl?sid=99/04/29/0124247">The Price of Being Different</A>, <P>For something different, try reading a little essay <A href="/article.pl?sid=99/03/31/0137221">Thoughts from the Furnace</A> about the internet, and flame. <p> And for a bit of an amusing take on the Open Source world, check out <a href="/article.pl?sid=99/08/24/1327256&mode=thread">Open Source as an Ant Farm</a> <P><B>Update: 01/03 03:10</B> by <B><A href="http://cowboyneal.org">CowboyNeal</a></B>: <P align="right"><B><A href="/features/">Past Features</A></B> <!-- end="end" features="features" block="block" --></FONT></TD> </TR> </TABLE><P> <TABLE cellpadding="1" cellspacing="0" border="0" width="200" align="center"> <TR bgcolor="#006666"> <TD valign="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B><A HREF="http://slashdot.org/index.pl?section=askslashdot"><FONT COLOR="#FFFFFF">Ask Slashdot</FONT></A></B></FONT></TD> </TR><TR><TD bgcolor="#CCCCCC"><FONT color="#000000" size="2"><li><A HREF="http://slashdot.org/article.pl?sid=00/01/22/1946244">Sci Fi Literature 101?</A> <li><A HREF="http://slashdot.org/article.pl?sid=00/01/22/192226">Linux and Satellite Internet Services</A> <li><A HREF="http://slashdot.org/article.pl?sid=00/01/22/1843258">Open Defensive Patents?</A> <li><A HREF="http://slashdot.org/article.pl?sid=00/01/22/1825252">Technologies That Shaped the Last Century?</A> <li><A HREF="http://slashdot.org/article.pl?sid=00/01/22/1958212">Disk Repair Tools for Linux?</A> <li><A HREF="http://slashdot.org/article.pl?sid=00/01/22/1955215">Why Can't the Command-Line be More Standardized?</A> <li><A HREF="http://slashdot.org/article.pl?sid=00/01/22/1928235">Packet Radio Networking with PalmOS?</A> <li><A HREF="http://slashdot.org/article.pl?sid=00/01/22/1817211">Cheap Rackmount Enclosures/Systems?</A> <li><A HREF="http://slashdot.org/article.pl?sid=00/01/22/1950249">Open Source Software and Tax Breaks?</A> <li><A HREF="http://slashdot.org/article.pl?sid=00/01/22/1917207">Building an Upgradable Dual Processor System</A> <P> if you have a question for Ask Slashdot, send it to <A href="mailto:askslashdot@slashdot.org">askslashdot@slashdot.org</A></FONT></TD> </TR> </TABLE><P> <TABLE cellpadding="1" cellspacing="0" border="0" width="200" align="center"> <TR bgcolor="#006666"> <TD valign="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B><A HREF="/users.pl"><FONT COLOR="#FFFFFF">Slashdot Login</FONT></A></B></FONT></TD> </TR><TR><TD bgcolor="#CCCCCC"><FONT color="#000000" size="2"><FORM action="/users.pl" METHOD="POST"> <B>Nickname:</B><BR> <INPUT type="text" name="unickname" size="20" value=""><BR> <B>Password:</B><BR> <INPUT type="hidden" name="returnto" value="index.pl"> <INPUT type="password" name="upasswd" size="20"><BR> <INPUT type="submit" name="op" value="userlogin"> </FORM> Don't have an account yet? <A href="/users.pl">Go Create One</A>. A user account will allow you to customize all these <A href="/cheesyportal.shtml">nutty little boxes</A>, tailor the stories you see, as well as remember your comment viewing preferences.</FONT></TD> </TR> </TABLE><P> <TABLE cellpadding="1" cellspacing="0" border="0" width="200" align="center"> <TR bgcolor="#006666"> <TD valign="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B>Slashdot Poll</B></FONT></TD> </TR><TR><TD bgcolor="#CCCCCC"><FONT color="#000000" size="2"><FORM action="http://slashdot.org/pollBooth.pl"> <INPUT type="hidden" name="qid" value="techadvance"> <B>The Tech Advance I Most Want Is:</B><BR><INPUT type="radio" name="aid" value="1">Nanotechnology<BR><INPUT type="radio" name="aid" value="2">Cold Fusion<BR><INPUT type="radio" name="aid" value="3">Powerful Fuel Cells<BR><INPUT type="radio" name="aid" value="4">Hard Wiring my Body<BR><INPUT type="radio" name="aid" value="5">Universal Strong Crypto<BR><INPUT type="radio" name="aid" value="6">Interstellar Travel<BR><INPUT type="radio" name="aid" value="7">Cybernetic Body Armor<BR><INPUT type="radio" name="aid" value="8">ColecoVision<BR><INPUT type="submit" value="Vote"> [ <A href="http://slashdot.org/pollBooth.pl?qid=techadvance&aid=-1"><B>Results</B></A> | <A href="http://slashdot.org/pollBooth.pl?"><B>Polls</B></A> ] <BR>Comments:<B>656</B> | Votes:<B>29121</B></FORM> </FONT></TD> </TR> </TABLE><P> <TABLE cellpadding="1" cellspacing="0" border="0" width="200" align="center"> <TR bgcolor="#006666"> <TD valign="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B>Older Stuff</B></FONT></TD> </TR><TR><TD bgcolor="#CCCCCC"><FONT color="#000000" size="2"><P><B><A href="http://slashdot.org/index.pl?section=&issue=730512&mode=thread"><FONT size="4">Friday</FONT></A> January 28</B> <LI><A href="http://slashdot.org/articles/00/01/28/1110258.shtml">Abstract Programming and GPL Enforcement</A> (235) <LI><A href="http://slashdot.org/interviews/00/01/28/1225206.shtml">Interview: FreeDOS Leader Jim Hall Answers</A> (86) <LI><A href="http://slashdot.org/articles/00/01/28/116240.shtml">Open Source's Achilles Heel</A> (466) <LI><A href="http://slashdot.org/features/00/01/26/1915230.shtml">The Virtue of Communal Instincts</A> (237) <LI><A href="http://slashdot.org/articles/00/01/28/0723223.shtml">Gartner Group Debunking Open Source Myths</A> (165) <LI><A href="http://slashdot.org/yro/00/01/28/0917229.shtml">DoubleClick Taken to Court</A> (310) <LI><A href="http://slashdot.org/articles/00/01/28/0718209.shtml">Updated Slash & Server 51</A> (81) <LI><A href="http://slashdot.org/articles/00/01/28/089230.shtml">XMMS 1.0.0 Released</A> (128) <LI><A href="http://slashdot.org/askslashdot/00/01/22/192226.shtml">Linux and Satellite Internet Services</A> (138) <LI><A href="http://slashdot.org/articles/00/01/27/1811221.shtml">UN Wants to Combat Online Racism</A> (531) <P><B><A href="http://slashdot.org/index.pl?section=&issue=730511&mode=thread"><FONT size="4">Thursday</FONT></A> January 27</B> <LI><A href="http://slashdot.org/yro/00/01/27/2330205.shtml">Crackdowns, Fools and the MPAA</A> (351) <LI><A href="http://slashdot.org/articles/00/01/27/0832215.shtml">Heroes of Might and Magic III Demo Released</A> (157) <LI><A href="http://slashdot.org/science/00/01/27/1345241.shtml">Sandia Labs Venture Into Nanotechnology</A> (117) <LI><A href="http://slashdot.org/articles/00/01/27/0931237.shtml">CA Announces Program Ports to Linux</A> (195) <LI><A href="http://slashdot.org/interviews/00/01/27/1118251.shtml">Interview: Larry Augustin Finally Answers</A> (210) <LI><A href="http://slashdot.org/awards/00/01/27/0855252.shtml">Final Call for Voting in Slashdot's Beanie Awards</A> (178) <LI><A href="http://slashdot.org/features/00/01/26/197211.shtml">Transmeta Code Morphing != Just In Time</A> (449) <LI><A href="http://slashdot.org/books/00/01/24/1150256.shtml">Intrusion Detection</A> (65) <LI><A href="http://slashdot.org/science/00/01/27/0824239.shtml">Using Enzymes to Help Fight CO2 Build-Up</A> (165) <LI><A href="http://slashdot.org/articles/00/01/27/0712217.shtml">Jon Johansen on ABC World News Tonight</A> (415) <P align="right"><BR><A href="http://slashdot.org/search.pl?section=&min=30"><B>Older Articles</B></A><BR><A href="http://slashdot.org/index.pl?section=&mode=thread&issue=730512"><B>Yesterday's Edition</B></A> </FONT></TD> </TR> </TABLE><P> <TABLE cellpadding="1" cellspacing="0" border="0" width="200" align="center"> <TR bgcolor="#006666"> <TD valign="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B><A HREF="/index.pl?section=books"><FONT COLOR="#FFFFFF">Book Reviews</FONT></A></B></FONT></TD> </TR><TR><TD bgcolor="#CCCCCC"><FONT color="#000000" size="2"><p>Jon Katz, Resident Gasbag, has a new, very appropriate book coming out soon, <a href="http://www.thinkgeek.com">Geeks</a>. Preorder now and receive the book early. <p>For probably the best fiction read around, check out Neal Stephenson's <cite><a href="/article.pl?sid=99/06/23/139229&mode=thread">Cryptonomicon</a></cite>, an engaging read about WWII, cryptography and buried treasure. And data vaults. <p>If you've been doing a lot of work in Perl, you've probably figured out you really need <cite><a href="/article.pl?sid=99/05/10/2238254&mode=thread">Perl in a Nutshell</a></cite> or <cite><a href="/article.pl?sid=99/01/29/1035246&mode=thread">The Perl Cookbook</a></cite>. If you're still learning, grab <cite><a href="/books/older/980526096229.shtml">Programming Perl</a></cite>. <p>And if you want to learn more about how to become a better coder, grab <cite><a href="/article.pl?sid=99/06/28/1417229&mode=thread">The Unified Software Development Process</a></cite> or <cite><a href="/article.pl?sid=99/04/08/1512209&mode=thread">The Practice of Programming</cite></a> Additionally, check out <cite><a href="http://slashdot.org/article.pl?sid=99/09/16/1333202&mode=thread">Refactoring: Improving the Design of Existing Code</a></cite> . <p>Developing a large application? Grab Eric Greenberg's excellent <cite><a href="/article.pl?sid=99/07/13/1943258&mode=thread">Network Application Frameworks</cite></a>. <P>Visit <A href="/index.pl?section=books">Our Book Reviews Section</A> for more. <br> <B>Update: 11/12 05:19</B> by <B><A href="mailto:hemos@slashdot.org">H</A></B>:</FONT></TD> </TR> </TABLE><P> <TABLE cellpadding="1" cellspacing="0" border="0" width="200" align="center"> <TR bgcolor="#006666"> <TD valign="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B>Quick Links</B></FONT></TD> </TR><TR><TD bgcolor="#CCCCCC"><FONT color="#000000" size="2"><B>Cool Sites:</B> <LI><A href="http://www.linux.com">Linux.com</A> (What <B>is</B> Linux?) <LI><A href="http://everything.blockstackers.com">Everything</A> (Blow your Mind) <LI><A href="http://www.geekculture.com/geekycomics/Aftery2k/aftery2kmain.html">After Y2k</A> (<I>This</I> is Post-Apocalyptic?) <LI><A href="http://www.userfriendly.org">User Friendly</A> (Laugh) <LI><A href="http://themes.org">Themes.org</A> (Make X Perty) <P><B>Support Slashdot:</B> <LI><A href="http://www.thinkgeek.com">ThinkGeek</A> (Clothe Yourself in Slashdot) <LI><A href="http://cdnow.com/from=sr-302791">CDnow</A> (Support <A href="http://www.cdnow.com/gift/malda@slashdot.org">Rob's Who Habit</A>) <LI><A href="http://adfu.slashdot.org">Slashdot Advertiser Index</A></FONT></TD> </TR> </TABLE><P> <TABLE cellpadding="1" cellspacing="0" border="0" width="200" align="center"> <TR bgcolor="#006666"> <TD valign="top"><FONT size="4" color="#FFFFFF" face="arial,helvetica"><B><A HREF="http://freshmeat.net"><FONT COLOR="#FFFFFF">Freshmeat</FONT></A></B></FONT></TD> </TR><TR><TD bgcolor="#CCCCCC"><FONT color="#000000" size="2"><P><FONT size="4" color="#006666"><B>January</B></FONT><BR> <LI><A href="http://freshmeat.net/news/2000/01/29/949208399.html">We should get this out of the door now</A> <LI><A href="http://freshmeat.net/news/2000/01/29/949159642.html">Is Linux for Crazies?</A> <LI><A href="http://freshmeat.net/news/2000/01/29/949156343.html">SQN Linux 1.6</A> <LI><A href="http://freshmeat.net/news/2000/01/29/949156277.html">Limo 0.3.2</A> <LI><A href="http://freshmeat.net/news/2000/01/29/949156237.html">Fusion GS 1.3</A> <LI><A href="http://freshmeat.net/news/2000/01/29/949145887.html">MMR 1.5.4</A> <LI><A href="http://freshmeat.net/news/2000/01/29/949142835.html">KUPS 0.3.4</A> <LI><A href="http://freshmeat.net/news/2000/01/29/949142815.html">3DSE patch for XMMS 4</A> <LI><A href="http://freshmeat.net/news/2000/01/29/949139763.html">Linux 2.3.41</A> <LI><A href="http://freshmeat.net/news/2000/01/29/949139751.html">Free Code for Linux S/390</A> <FORM METHOD="post" ACTION="http://core.freshmeat.net/search.php3"> <FONT size="3" color="#006666"><B>Search Freshmeat:</B></FONT><BR> <INPUT TYPE="hidden" NAME="link" VALUE="freshmeat.net"> <INPUT TYPE="text" NAME="query"> </FORM> <P align="right"><A href="http://freshmeat.net"><B>More Meat...</B></A></FONT></TD> </TR> </TABLE><P> </FONT></TD>
-         </TR>
-        </TABLE><TABLE cellpadding="0" cellspacing="0" border="0" width="99%" align="center" bgcolor="ffffff">
-            <TR>
-             <TD colspan="4" align="center"><IMG src="image14" alt="" width="80%" height="1" hspace="10" vspace="30"></TD>
-            </TR><TR>
-             <TD align="center"><FONT size="2" face="arial,helvetica">
-  <FORM method="GET" action="http://slashdot.org/search.pl">
-         <INPUT type="name" name="query" value="" width="20" size="20" length="20">
-        <INPUT type="submit" value="Search">
-  </FORM>
-  </FONT>
-  </TD>
-  <TD bgcolor="#ffffff" width="25">  &nbsp; </TD>
-  <TD align="center">
-    <FONT size="2" face="arial,helvetica"><I>Wasn't there something about a PASCAL programmer knowing the value of
-everything and the Wirth of nothing?
-<TD>&nbsp;</TD></I></FONT>
-    </FONT>
-  </TD></TR>
-  <TR><TD colspan="4" align="center">
-  <FONT size="1" color="#006666" face="arial,helvetica">
-
- All trademarks and copyrights on this
-  page are owned by their respective owners.  Comments
-  are owned by the Poster.
-  The Rest © 1997-2000 <A href="http://Andover.Net">Andover.Net</A>.
-</FONT></CENTER>
-             </TD>
-            </TR>
-           </TABLE>
-        <CENTER>
-          <FONT size="2" color="#006666">
-
-         [ <A href="http://slashdot.org/"><Font color="#ffffff">home</FONT></A> |
-         <A href="http://slashdot.org/awards.shtml"><Font color="#ffffff">awards</FONT></A> |
-         <A href="http://slashdot.org/supporters.shtml"><FONT color="#ffffff">supporters</FONT></A> |
-         <A href="http://CmdrTaco.net"><FONT color="#ffffff">rob's homepage</FONT></A> |
-         <A href="http://slashdot.org/submit.pl"><FONT color="#ffffff">contribute story</FONT></A> |
-         <A href="http://slashdot.org/search.pl"><FONT color="#ffffff">older articles</FONT></A> |
-         <A href="http://Andover.Net"><FONT color="#ffffff">Andover.Net</FONT></A> |
-         <A href="http://slashdot.org/advertising.shtml"><FONT color="#ffffff">advertising</FONT></A> |
-         <A href="http://slashdot.org/pollBooth.pl"><FONT color="#ffffff">past polls</FONT></A> |
-         <A href="http://slashdot.org/about.shtml"><FONT color="#ffffff">about</FONT></A> |
-         <A href="http://slashdot.org/faq.shtml"><FONT color="#ffffff">faq</FONT></A> ]
-           </FONT>
-          </CENTER>
-</BODY>
-</HTML>
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image1 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image1
deleted file mode 100644 (file)
index 2ed6ddc..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image1 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image10 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image10
deleted file mode 100644 (file)
index 3021b68..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image10 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image11 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image11
deleted file mode 100644 (file)
index 41d1fe3..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image11 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image12 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image12
deleted file mode 100644 (file)
index 655a686..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image12 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image13 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image13
deleted file mode 100644 (file)
index 97d5950..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image13 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image14 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image14
deleted file mode 100644 (file)
index 6d73ad8..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image14 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image15 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image15
deleted file mode 100644 (file)
index 90cc3b2..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image15 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image16 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image16
deleted file mode 100644 (file)
index 93aa853..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image16 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image17 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image17
deleted file mode 100644 (file)
index f46f030..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image17 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image18 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image18
deleted file mode 100644 (file)
index 3badd5e..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image18 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image19 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image19
deleted file mode 100644 (file)
index bd4f6d9..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image19 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image2 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image2
deleted file mode 100644 (file)
index 7566dda..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image2 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image20 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image20
deleted file mode 100644 (file)
index 358fa95..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image20 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image21 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image21
deleted file mode 100644 (file)
index c81aa52..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image21 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image22 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image22
deleted file mode 100644 (file)
index 6cbd630..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image22 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image23 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image23
deleted file mode 100644 (file)
index e8173a7..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image23 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image24 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image24
deleted file mode 100644 (file)
index bffd4b4..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image24 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image25 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image25
deleted file mode 100644 (file)
index c656fa4..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image25 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image26 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image26
deleted file mode 100644 (file)
index bc93fdb..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image26 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image27 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image27
deleted file mode 100644 (file)
index 6ad0eff..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image27 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image28 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image28
deleted file mode 100644 (file)
index 88f0d7c..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image28 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image29 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image29
deleted file mode 100644 (file)
index e070418..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image29 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image3 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image3
deleted file mode 100644 (file)
index ac3fa33..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image3 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image30 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image30
deleted file mode 100644 (file)
index 4a41950..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image30 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image31 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image31
deleted file mode 100644 (file)
index 60f13ed..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image31 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image32 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image32
deleted file mode 100644 (file)
index 04ddc4e..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image32 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image33 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image33
deleted file mode 100644 (file)
index c1ecfff..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image33 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image34 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image34
deleted file mode 100644 (file)
index 3dfd5d7..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image34 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image35 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image35
deleted file mode 100644 (file)
index aea44f3..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image35 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image36 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image36
deleted file mode 100644 (file)
index baef0e0..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image36 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image37 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image37
deleted file mode 100644 (file)
index 6c6ba52..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image37 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image38 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image38
deleted file mode 100644 (file)
index e298e04..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image38 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image39 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image39
deleted file mode 100644 (file)
index e16e2f1..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image39 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image4 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image4
deleted file mode 100644 (file)
index 9e5e46b..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image4 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image5 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image5
deleted file mode 100644 (file)
index 646a6d9..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image5 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image6 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image6
deleted file mode 100644 (file)
index 7df417c..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image6 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image7 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image7
deleted file mode 100644 (file)
index 0e6ac10..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image7 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image8 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image8
deleted file mode 100644 (file)
index ba7fb47..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image8 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image9 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image9
deleted file mode 100644 (file)
index b1cad73..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/image9 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/index.html b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page2/index.html
deleted file mode 100644 (file)
index 7eaf2d2..0000000
+++ /dev/null
@@ -1,433 +0,0 @@
-<html>
-<head>
-  <title>Tcl Resource Center</title>
-</head>
-
-<body bgcolor="white" text="black">
-
-    <!-- MenuTopLevel Resource Software Extensions -->
-    <table border="0" cellpadding="0" cellspacing="0">
-      <tr>
-        <td width="120" valign="TOP"><a href="/"><img src="image1" width="120" height="79" alt="Scriptics" border="0"></a></td>
-        <td valign="top" width="548">
-        
-          <!-- Table to hold tabs -->
-          <table cellpadding="0" cellspacing="0" border="0" width="548">
-            <tr>
-              <td valign="top" align="right" colspan="15" width="548"><a name="TOP"><img src="image2" width="548" height="9" alt="Tcl/Tk" border="0"></a></td>
-            </tr>
-            <tr>
-              <td valign="top" align="right" colspan="15" width="548"><img src="image3" width="482" height="34" alt="Scripting Solutions for eBusiness Integration" border="0"></td>
-            </tr>
-            <tr>
-              <td width="18" valign="TOP"><img src="image4" width="18" height="36" alt="" border="0"></td>
-              <td width="58"><a href="/products/" onMouseOver="msover(4, 'http://images.scriptics.com/images/ProductsMouseOff.gif') ; return true ;" onMouseOut="msover(4, 'http://images.scriptics.com/images/ProductsOff.gif') ; return true ;"><img src="image5" width="58" height="36" alt="Products" border="0"></a></td>
-              <td width="14" valign="TOP"><img src="image6" width="14" height="36" alt="" border="0"></td>
-              <td width="69"><a href="/customers/" onMouseOver="msover(6, 'http://images.scriptics.com/images/CustomersMouseOff.gif') ; return true ;" onMouseOut="msover(6, 'http://images.scriptics.com/images/CustomersOff.gif') ; return true ;"><img src="image7" width="69" height="36" alt="Customers" border="0"></a></td>
-              <td width="14" valign="TOP"><img src="image6" width="14" height="36" alt="" border="0"></td>
-              <td width="60"><a href="/partners/" onMouseOver="msover(8, 'http://images.scriptics.com/images/PartnersMouseOff.gif') ; return true ;" onMouseOut="msover(8, 'http://images.scriptics.com/images/PartnersOff.gif') ; return true ;"><img src="image8" width="60" height="36" alt="Partners" border="0"></a></td>
-              <td width="14" valign="TOP"><img src="image6" width="14" height="36" alt="" border="0"></td>
-              <td width="56"><a href="/services/" onMouseOver="msover(10, 'http://images.scriptics.com/images/ServicesMouseOff.gif') ; return true ;" onMouseOut="msover(10, 'http://images.scriptics.com/images/ServicesOff.gif') ; return true ;"><img src="image9" width="56" height="36" alt="Services" border="0"></a></td>
-              <td width="14" valign="TOP"><img src="image10" width="14" height="36" alt="" border="0"></td>
-              <td width="88"><a href="/resource/" onMouseOver="msover(12, 'http://images.scriptics.com/images/ResourceMouseOn.gif') ; return true ;" onMouseOut="msover(12, 'http://images.scriptics.com/images/ResourceOn.gif') ; return true ;"><img src="image11" width="88" height="36" alt="Tcl Resources" border="0"></a></td>
-              <td width="14" valign="TOP"><img src="image12" width="14" height="36" alt="" border="0"></td>
-              <td width="57"><a href="/company/" onMouseOver="msover(14, 'http://images.scriptics.com/images/CompanyMouseOff.gif') ; return true ;" onMouseOut="msover(14, 'http://images.scriptics.com/images/CompanyOff.gif') ; return true ;"><img src="image13" width="57" height="36" alt="Company" border="0"></a></td>
-              <td width="8" valign="TOP"><img src="image14" width="8" height="36" alt="" border="0"></td>
-              <td width="50" valign="TOP"><img src="image15" width="50" height="36" alt="" border="0"></td>
-              <td width="14" valign="TOP"><img src="image16" width="14" height="36" alt="" border="0"></td>
-            </tr>
-          </table>
-        </td>
-      </tr>
-    </table> <script language="Javascript">
-   <!--
-       function msover(num, file )
-       {
-           old = (((navigator.appName=='Netscape') &&
-                     (parseInt(navigator.appVersion)<=3.0 )))
-         if ( !old ) {
-               document.images[num].src=file
-         }
-        }
-       //-->
-   </SCRIPT> 
-       
-<!-- MenuSubLevel Resource Software Extensions Tk -->
-
-<table cellpadding="0" cellspacing="0" border="0">
-
-<!-- Left Hand Column-->
-
-<tr><td valign="top" width="120"><table cellpadding="0" cellspacing="0" border="0" width="120">
-    <tr>
-      <td width="120" valign="TOP"><img src="image17" width="120" height="4" alt="" border="0"></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><a href="/resource/software/"><img src="image18" width="120" height="11" alt="Software" border="0"></a></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><img src="image19" width="120" height="4" alt="" border="0"></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><a href="/resource/software/tcltk/"><img src="image20" width="120" height="11" alt="Tcl/Tk Core" border="0"></a></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><img src="image19" width="120" height="4" alt="" border="0"></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><a href="/resource/software/applications/"><img src="image21" width="120" height="11" alt="Applications" border="0"></a></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><img src="image22" width="120" height="4" alt="" border="0"></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><a href="/resource/software/extensions/"><img src="image23" width="120" height="11" alt="Extensions" border="0"></a></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><img src="image24" width="120" height="6" alt="" border="0"></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><a href="/resource/software/patches/"><img src="image25" width="120" height="11" alt="Patches" border="0"></a></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><img src="image19" width="120" height="4" alt="" border="0"></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><a href="/resource/software/java/"><img src="image26" width="120" height="11" alt="Tcl &amp; Java" border="0"></a></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><img src="image19" width="120" height="4" alt="" border="0"></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><a href="/resource/software/ports/"><img src="image27" width="120" height="11" alt="Tcl/Tk Ports" border="0"></a></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><img src="image19" width="120" height="4" alt="" border="0"></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><a href="/resource/software/tools/"><img src="image28" width="120" height="11" alt="Tools" border="0"></a></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><img src="image29" width="120" height="6" alt="" border="0"></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><a href="/resource/doc/"><img src="image30" width="120" height="11" alt="Documentation" border="0"></a></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><img src="image31" width="120" height="5" alt="" border="0"></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><a href="/resource/community/"><img src="image32" width="120" height="11" alt="Community" border="0"></a></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><img src="image31" width="120" height="5" alt="" border="0"></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><a href="/live/bydate"><img src="image33" width="120" height="11" alt="What's New" border="0"></a></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><img src="image31" width="120" height="5" alt="" border="0"></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><a href="/forms/urlnote.html"><img src="image34" width="120" height="11" alt="Add URL" border="0"></a></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><img src="image31" width="120" height="5" alt="" border="0"></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><a href="/live/keyword"><img src="image35" width="120" height="11" alt="Keyword Search" border="0"></a></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><img src="image31" width="120" height="5" alt="" border="0"></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><a href="/live/sitemap"><img src="image36" width="120" height="11" alt="Index" border="0"></a></td>
-    </tr>
-    <tr>
-      <td width="120" valign="TOP"><img src="image37" width="120" height="6" alt="" border="0"></td>
-    </tr>
-</table><!-- End Left Column --></td><!-- Right Hand Column --><td valign="top" width="548" align="left"><table cellpadding="0" cellspacing="0" border="0" width="548">
-    <tr>
-      <td width="295" valign="TOP"><img src="image38" width="295" height="42" alt="Resource" border="0"></td>
-      <td width="187" valign="bottom" align="right"><FORM action="/live/keyword"><img src="image39" width="46" height="24" alt="" border="0"><INPUT TYPE="TEXT" SIZE="10" MAXLENGTH="35" NAME="keywords"><INPUT type="IMAGE" border="0" img="img" src="http://images.scriptics.com/images/Go.gif" value="submit" width="33" height="24"></FORM>
-    </tr>
-  </table>
-  <!-- 2 Columns for spacer -->
-  <table cellpadding="0" cellspacing="0" border="0" width="548">
-    <tr>
-      <!-- Spacer Column -->
-      <td valign="top" width="10">
-      &nbsp;
-      </td>
-
-
-      <td valign="top" width="548"><font face="Geneva, Helvetica, Arial" size="2"><h1>Tcl Resource Center</h1>
-<font size="+1"><a href="/resource/">Top</a>&gt;<a href="/resource/software/" ="">Software Central</a>&gt;<a href="/resource/software/extensions/" ="">Extensions</a>&gt;Tk Widgets</font><font size="-1"><br>Viewed by name (<a href="/resource/software/extensions/tk/?sortby=date">By date</a>)</font><br>
-<p>Tk is a toolkit for building graphical user interfaces with Tcl.
-    Your Tcl/Tk scripts run on UNIX, Windows, and Macintosh.<p>
-<font face="Geneva, Helvetica, Arial"><ul></ul></font><dl>
-<dt><b><a href="http://marge.phys.washington.edu/%7Ezager/blt80-unoff-exe.zip" ="">BLT 8.0 Unofficial zip and DLL</a></b>
-<dd>This is a compiled version of BLT 8.0 "unofficial" for
-the Windows platform. <a href="/live/annotate?url=http%3a%2f%2fmarge%2ephys%2ewashington%2eedu%2f%257Ezager%2fblt80%2dunoff%2dexe%2ezip">Edit</a>
- <i><font size="-1">(September 24, 1999 06:31)</font></i><dt><b><a href="ftp://ftp.neosoft.com/languages/tcl/sorted/unknown/blt8.0p2-unoff.tgz" ="">BLT 8.0p2 Unofficial tar file</a><a name="bltunoff"></a></b>
-<dd>This is a contributed patch to make BLT compatible with Tcl/Tk 8.0p2.  While still "unofficial", it is widely used.
-    Make sure you get the 8.0p2 version because the 8.0 version does
-    not compile under windows.
-    There is also a <a href="ftp://ftp.neosoft.com/languages/sorted/devel/blt2.3-8.1.tar.gz">2.3-8.1 version</a> that has been patched to work with 8.1.
-    <a href="ftp://ftp.neosoft.com/languages/tcl/sorted/unknown/blt8.0p2-unoff.README">README file</a>. <a href="/live/annotate?url=ftp%3a%2f%2fftp%2eneosoft%2ecom%2flanguages%2ftcl%2fsorted%2funknown%2fblt8%2e0p2%2dunoff%2etgz">Edit</a>
- <i><font size="-1">(August 30, 1999 06:38)</font></i><dt><b><a href="http://www.tcltk.com/blt/" ="">BLT Home Page</a></b>
-<dd>
-                       Author <b>George Howlett</b>, Version <b>2.3</b>,
-                       Works with <b>Tk 4.1 through Tk 8.1</b>
-<br><a href="ftp://ftp.tcltk.com/pub/blt/">Download</a>, <a href="ftp://ftp.tcltk.com/pub/blt/BLT2.3.tar.gz">BLT2.3.tar.gz</a>, <a href="ftp://ftp.tcltk.com/pub/blt/BLT2.4h.tar.gz">BLT2.4h.tar.gz</a>, <a href="ftp://ftp.tcltk.com/pub/blt/BLT2.4i.tar.gz">BLT2.4i.tar.gz</a>, <a href="ftp://ftp.tcltk.com/pub/blt/blt2.4i-for-8.0.exe">blt2.4i-for-8.0.exe</a>, <a href="ftp://ftp.tcltk.com/pub/blt/blt2.4i-for-8.1.exe">blt2.4i-for-8.1.exe</a><br>BLT is a set of widgets for Tk, including a graph widget,
-bar chart, drag&drop, a simple command tracer, and much more.
-The 2.4 release, which is still under development, works with 8.0
-or higher.
-There are also an "<a href="#bltunoff">unofficial</a>" release for 8.0p2
-and 8.1a2 that were not done by the author. <a href="/live/annotate?url=http%3a%2f%2fwww%2etcltk%2ecom%2fblt%2f">Edit</a>
- <i><font size="-1">(October 26, 1999 09:43)</font></i><dt><b><a href="http://www.unifix-online.com/BWidget/index.html" ="">BWidget</a></b>
-<dd>A set of native Tk 8.x Widgets using Tcl8.x namespaces. 
-The ToolKit is available under Unix/X11 and Windows.
-The BWidget(s) have a professional look&feel as in other 
-well known Toolkits (Tix or Incr Widget) but the concept is 
-radically different because everything is native 
-so no platform compilation, no compiled extension
-library are needed. The code is 100 Pure Tcl/Tk. 
-More 30 components : Notebook, PageManager, Tree, PanedWindow, ButtonBox,
-ScrollView, ComboBox, SpinBox, ListBox, SelectFont, SelectColor,
-ProgressBare ... <a href="/live/annotate?url=http%3a%2f%2fwww%2eunifix%2donline%2ecom%2fBWidget%2findex%2ehtml">Edit</a>
- <i><font size="-1">(September 06, 1999 09:58)</font></i><dt><b><a href="http://purl.oclc.org/net/nijtmans/dash.html" ="">Dash Patch for Tk</a></b>
-<dd>This patch has many enhancements to the Tk and its canvas
-widget, including dashed lines, smoothed polygons,
-and performance enhancements. <a href="/live/annotate?url=http%3a%2f%2fpurl%2eoclc%2eorg%2fnet%2fnijtmans%2fdash%2ehtml">Edit</a>
- <i><font size="-1">(November 21, 1999 06:33)</font></i><dt><b><a href="http://www.hwaci.com/sw/et" ="">Embedded Tk (et)</a></b>
-<dd>
-                       Author <b><a href="mailto:drh@acm.org" ="">Richard Hipp</a></b>, Version <b>8.0b5</b>,
-                       Works with <b>Tk 4.0, 4.1, 4.2, 8.0</b>
-<br>Download: <a href="http://www.hwaci.com/sw/et/et80b5.tar.gz">et80b5.tar.gz</a><br>Embedded Tk or ``ET'' is tool for making stand-alone executables out of a mixture of C or C++ and Tcl/Tk.
-Using ET you can invoke a short Tcl/Tk script in the middle of a C routine, or you can invoke a C routine in the
-middle of a Tcl/Tk script. ET also bundles external Tcl/Tk scripts (including the standard Tcl/Tk startup scripts)
-into the executable so that the executable can be run on another binary-compatible computer that doesn't have
-Tcl/Tk installed.  <a href="/live/annotate?url=http%3a%2f%2fwww%2ehwaci%2ecom%2fsw%2fet">Edit</a>
- <i><font size="-1">(August 19, 1999 15:35)</font></i><dt><b><a href="http://www.purl.org/net/hobbs/tcl/script/tkcon/" ="">Enhanced Tk Console (TkCon)</a></b>
-<dd>
-                       Author <b><a href="mailto:jeffrey.hobbs@oen.siemens.de" ="">Jeff Hobbs</a></b>, Version <b>1.3</b>,
-                       Works with <b>Tk 4.1 through Tk 8.1</b>
-<br>Download: <a href="http://www.purl.org/net/hobbs/tcl/script/tkcon/tkcon.tar.gz">tkcon.tar.gz</a><br>TkCon is a replacement for the standard console that comes with Tk (on Windows/Mac, but also works on
-
-Unix). The console itself provides many more features than the standard console.  <a href="/live/annotate?url=http%3a%2f%2fwww%2epurl%2eorg%2fnet%2fhobbs%2ftcl%2fscript%2ftkcon%2f">Edit</a>
- <i><font size="-1">(August 23, 1999 12:06)</font></i><dt><b><a href="http://www.scriptmeridian.org/projects/tk/" ="">Frontier-Tk ScriptMeridian project</a></b>
-<dd>This project seeks to integrate the Tk toolkit
-with the Frontier scripting language. <a href="/live/annotate?url=http%3a%2f%2fwww%2escriptmeridian%2eorg%2fprojects%2ftk%2f">Edit</a>
- <i><font size="-1">(August 19, 1999 15:36)</font></i><dt><b><a href="http://purl.oclc.org/net/nijtmans/img.html" ="">Img image format extension</a></b>
-<dd>This package enhances Tk, adding support for many other Image formats: 
-BMP, XBM, XPM, GIF (with transparency), PNG,
-JPEG, TIFF and postscript.
-This is implemented as a shared library that can be dynamically loaded into 
-Tcl/Tk.
- <a href="/live/annotate?url=http%3a%2f%2fpurl%2eoclc%2eorg%2fnet%2fnijtmans%2fimg%2ehtml">Edit</a>
- <i><font size="-1">(November 21, 1999 06:35)</font></i><dt><b><a href="http://purl.oclc.org/net/oakley/tcl/mclistbox/index.html" ="">mclistbox - a multi-column listbox widget</a></b>
-<dd>mclistbox is a multi-column listbox that is
-written in pure tcl and runs on all platforms
-that support tcl/tk 8.0 or higher. This widget
-requires no other extensions; it is completely
-standalone. <a href="/live/annotate?url=http%3a%2f%2fpurl%2eoclc%2eorg%2fnet%2foakley%2ftcl%2fmclistbox%2findex%2ehtml">Edit</a>
- <i><font size="-1">(August 19, 1999 15:37)</font></i><dt><b><a href="http://home.t-online.de/home/dshepherd/tkview.htm" ="">MFC views C++ class for embedding Tk</a></b>
-<dd>The idea of embedding Tk in MFC windows always seemed very enticing but information was sparse and contradictory - on a
- scale between "very easy" and "not yet possible". The only thing for it was to have a go and lo, it wasn't that hard after all.  
- CTkView is a C++ class which can be used in MFC SDI or MDI applications. An instance of CTkView hosts an embedded Tk
- toplevel widget and performs some management chores for the widget so that it can size, update and react correctly to Windows
- events.   <a href="/live/annotate?url=http%3a%2f%2fhome%2et%2donline%2ede%2fhome%2fdshepherd%2ftkview%2ehtm">Edit</a>
- <i><font size="-1">(August 19, 1999 15:38)</font></i><dt><b><a href="http://www.cs.umd.edu/hcil/pad++" ="">Pad++</a></b>
-<dd>
-                       Author <b><a href="mailto:pad-info@cs.umd.edu" ="">Ben Bederson et al</a></b>, Version <b>0.9p1</b>,
-                       Works with <b>8.0</b>
-<br>Download: <a href="http://www.cs.umd.edu/hcil/pad++/download.html">download.html</a><br>Pad++ is a Tk widget that provides a Zoomable User Interface (ZUI) that supports real-time interactive zoomable graphics in a fashion similar to the Tk Canvas widget.  Pad++ supports tens of thousands of objects which include text, images, graphics, portals, lenses, simple html (and more), including transparency and rotation. <a href="/live/annotate?url=http%3a%2f%2fwww%2ecs%2eumd%2eedu%2fhcil%2fpad%2b%2b">Edit</a>
- <i><font size="-1">(August 19, 1999 15:39)</font></i><dt><b><a href="http://home.t-online.de/home/sesam.com/freeware.htm" ="">Progressbar</a></b>
-<dd>Progressbar is a megawidget written in pure tcl (ie: no compiling required - runs on all platforms Macintosh, Unix, Windows). 
-Its primary purpose is to show the progress of any action in percent. <a href="/live/annotate?url=http%3a%2f%2fhome%2et%2donline%2ede%2fhome%2fsesam%2ecom%2ffreeware%2ehtm">Edit</a>
- <i><font size="-1">(January 24, 2000 09:19)</font></i><dt><b><a href="http://jfontain.free.fr/" ="">scwoop (Simple Composite Widget Object Oriented Package)</a></b>
-<dd>Scwoop is a composite widget (also known as mega widget) extension to the great Tk widget library. Scwoop is
-entirely written in Tcl using the stooop (Simple Tcl Only Object Oriented Programming) extension. <a href="/live/annotate?url=http%3a%2f%2fjfontain%2efree%2efr%2f">Edit</a>
- <i><font size="-1">(January 09, 2000 02:10)</font></i><dt><b><a href="http://www2.clearlight.com/~oakley/tcl/supertext.html" ="">Supertext - tk text widget with unlimited undo</a></b>
-<dd>
-                       Author <b><a href="mailto:oakley@channelpoint.com" ="">Bryan Oakley</a></b>, Version <b>1.0b1</b>,
-                       Works with <b>Tcl 8.0</b>
-<br>Download: <a href="http://www2.clearlight.com/~oakley/tcl/supertext.tcl">supertext.tcl</a><br>Supertext is a package that provides a tk text widget with full undo and the ability to execute procedures both before and after a text
-widget command has been processed. Supertext may be used as-is, or for the brave it may be used in place of the standard text
-widget.  <a href="/live/annotate?url=http%3a%2f%2fwww2%2eclearlight%2ecom%2f%7eoakley%2ftcl%2fsupertext%2ehtml">Edit</a>
- <i><font size="-1">(August 23, 1999 12:06)</font></i><dt><b><a href="http://www.hwaci.com/sw/tk/nbpi.html" ="">Tabbed Notebook Widget</a></b>
-<dd>
-                       Author <b><a href="mailto:drh@acm.org" ="">Richard Hipp</a></b>, Version <b>1.0</b>,
-                       Works with <b>Tk 4.1 or later.</b>
-<br>Download: <a href="http://www.hwaci.com/sw/tk/notebook.tcl">notebook.tcl</a><br>This implements a tabbed notebook using
-a canvas widget and embedded frames.
-This is pure Tcl
-code - not a C extension. <a href="/live/annotate?url=http%3a%2f%2fwww%2ehwaci%2ecom%2fsw%2ftk%2fnbpi%2ehtml">Edit</a>
- <i><font size="-1">(August 23, 1999 12:08)</font></i><dt><b><a href="http://www.tcltk.com/ellson/ftp/Gdtclft2.0.README" ="">Tcl GD - graphics</a></b>
-<dd>
-                       Author <b>John Ellson and Spencer Thomas</b>, Version <b>2.0</b>,
-                       Works with <b>8.0 and higher</b>
-<br>Download: <a href="http://www.tcltk.com/ellson/ftp/Gdtclft2.0.tar.gz">Gdtclft2.0.tar.gz</a><br>
-       Thomas Boutell's Gd package provides a convenient way to generate
-           PNG images with a C program. If you prefer Tcl for CGI
-               applications, you'll want the TCL GD extension. <a href="/live/annotate?url=http%3a%2f%2fwww%2etcltk%2ecom%2fellson%2fftp%2fGdtclft2%2e0%2eREADME">Edit</a>
- <i><font size="-1">(August 19, 1999 14:52)</font></i><dt><b><a href="http://www.stratasys.com/software/metagui" ="">The Meta-GUI Tools</a></b>
-<dd>The Meta-GUI tools provide a framework for quickly building full
-GUI applications. The GUI is rendered by a run-time engine
-based on a hierarchical set of definitions you provide. At the bottom
-of the hierarchy are abstract data types such as length, angle,
-string, etc., and these are used to progressively build up frames,
-dialogs, toolbars, menus, and operations. <a href="/live/annotate?url=http%3a%2f%2fwww%2estratasys%2ecom%2fsoftware%2fmetagui">Edit</a>
- <i><font size="-1">(August 23, 1999 12:10)</font></i><dt><b><a href="http://jfontain.free.fr/" ="">Tkpiechart Home Page</a></b>
-<dd>Tkpiechart is a Tcl-only extension that allows the programmer to create and dynamically update 2D or 3D pie
-charts in a Tcl/Tk application.  This uses the stooop package and builds
-pie charts on a Tk canvas. <a href="/live/annotate?url=http%3a%2f%2fjfontain%2efree%2efr%2f">Edit</a>
- <i><font size="-1">(January 09, 2000 02:12)</font></i><dt><b><a href="http://www.cygnus.com/~irox/tkprint/" ="">TkPrint</a></b>
-<dd>TkPrint is an extension that allows you to print from a
-        Tk widget. <a href="/live/annotate?url=http%3a%2f%2fwww%2ecygnus%2ecom%2f%7eirox%2ftkprint%2f">Edit</a>
- <i><font size="-1">(October 11, 1999 09:58)</font></i><dt><b><a href="http://www.purl.org/net/hobbs/tcl/capp/" ="">TkTable Home Page</a></b>
-<dd>The TkTable widget.  The <code>table</code> command creates a 
-2-dimensional grid of cells. The table can use a Tcl array variable or Tcl
-
-command for data storage and retrieval. <a href="/live/annotate?url=http%3a%2f%2fwww%2epurl%2eorg%2fnet%2fhobbs%2ftcl%2fcapp%2f">Edit</a>
- <i><font size="-1">(November 18, 1999 09:25)</font></i><dt><b><a href="http://ftp.austintx.net/users/jatucker/TkTextmatrix/default.htm" ="">TkTextMatrix (spreadsheet)</a></b>
-<dd>
-                       Author <b><a href="mailto:jatucker@austin.dsccc.com" ="">John Arthur Tucker</a></b>, Version <b>4.1</b>,
-                       Works with <b>Tk 4.1</b>
-<br>Download: <a href="http://ftp.austintx.net/users/jatucker/TkTextmatrix/download.htm">download.htm</a>, <a href="http://ftp.austintx.net/users/jatucker/TkTextmatrix/textmatrix4.1.tar.gz">textmatrix4.1.tar.gz</a><br>A Tcl/Tk spreadsheet widget, TkTextmatrix, which is implemented in C++ and is
-             basically a Tk Canvas widget plus extra behavior for manipulating rows and columns of cell
-             items many times faster than with a plain Tk Canvas.  It actually inserts text nearly as fast
-             as the Tk Text widget.  If you work with or are interested in creating your own Tcl/Tk widgets
-             in C++,  you might want to take a look at the C++ widget library included with this
-             distribution. <a href="/live/annotate?url=http%3a%2f%2fftp%2eaustintx%2enet%2fusers%2fjatucker%2fTkTextmatrix%2fdefault%2ehtm">Edit</a>
- <i><font size="-1">(August 23, 1999 12:14)</font></i><dt><b><a href="http://www.cs.umd.edu/~bederson/Togl.html" ="">ToGL - a Tk Open GL widget</a></b>
-<dd>Togl is a Tk widget for OpenGL rendering. Togl is based on OGLTK, originally written by Benjamin Bederson at the
-University of New Mexico (who has since moved to the University of Maryland). Togl adds the new features: 
-<ul>
-<li>     color-index mode support including color allocation functions 
-<li>     support for requesting stencil, accumulation, alpha buffers, etc 
-<li>     multiple OpenGL drawing widgets 
-<li>     OpenGL extension testing from Tcl 
-<li>     simple, portable font support 
-<li>     overlay plane support 
-</ul>
-Togl allows one to create and manage a special Tk/OpenGL widget with Tcl and render into it with a C program. That is,
-a typical Togl program will have Tcl code for managing the user interface and a C program for computations and
-OpenGL rendering.  <a href="/live/annotate?url=http%3a%2f%2fwww%2ecs%2eumd%2eedu%2f%7ebederson%2fTogl%2ehtml">Edit</a>
- <i><font size="-1">(August 23, 1999 12:14)</font></i><dt><b><a href="http://www.hwaci.com/sw/tk/treepi.html" ="">Tree Widget</a></b>
-<dd>This implements a tree display in a canvas widget.
-It is similar in layout to that of the
-Windows explorer file viewer.  This is pure Tcl
-code - not a C extension. <a href="/live/annotate?url=http%3a%2f%2fwww%2ehwaci%2ecom%2fsw%2ftk%2ftreepi%2ehtml">Edit</a>
- <i><font size="-1">(September 29, 1999 14:37)</font></i><dt><b><a href="http://www.du.edu/~mschwart/tcl-tk.htm" ="">Windows Extensions for Tcl/Tk (Michael Schwartz)</a></b>
-<dd>This site has pointers to several extensions specific to the
-Windows platform.  The extensions provide printing,
-a MAPI interface to send email, and an interface to manipulate
-.INI files, among other things. <a href="/live/annotate?url=http%3a%2f%2fwww%2edu%2eedu%2f%7emschwart%2ftcl%2dtk%2ehtm">Edit</a>
- <i><font size="-1">(October 07, 1999 10:50)</font></i><dt><b><a href="http://www.tcltk.com/iwidgets/" ="">[incr Widgets] Home Page</a></b>
-<dd>[incr Widgets] is a set of megawidgets (combo boxes, etc.) that are
-upon the [incr Tcl] object system and the [incr Tk] megawidget
-framework.  This comes bundled with the
-<a href="http://www.tcltk.com/itcl/">[incr Tcl]</a> distributions. <a href="/live/annotate?url=http%3a%2f%2fwww%2etcltk%2ecom%2fiwidgets%2f">Edit</a>
- <i><font size="-1">(September 05, 1999 16:08)</font></i><dt><b><a href="http://www1.clearlight.com/~oakley/tcl/combobox/index.html" ="">combobox</a></b>
-<dd>
-                       Author <b><a href="mailto:oakley@channelpoint.com" ="">Bryan Oakley</a></b>, Version <b>1.03</b>,
-                       Works with <b>8.x</b>
-<br>Download: <a href="http://www1.clearlight.com/~oakley/tcl/combobox/combobox.tcl">combobox.tcl</a><br>combobox is a pure-tcl implementation of a combobox widget. It is
-entirely self contained and does not require any other OO or megawidget
-extension. It supports both editable and non-editable entries, and
-provides the ability to call a procedure anytime the value of the combobox
-changes. <a href="/live/annotate?url=http%3a%2f%2fwww1%2eclearlight%2ecom%2f%7eoakley%2ftcl%2fcombobox%2findex%2ehtml">Edit</a>
- <i><font size="-1">(August 23, 1999 12:15)</font></i><dt><b><a href="http://www.multimania.com/droche/rnotebook/index.html" ="">Rnotebook</a></b>
-<dd>
-                       Author <b><a href="mailto:dan@lectra.com" ="">Daniel Roche</a></b>, Version <b>1.0</b>,
-                       Works with <b>8.0 or higher</b>
-<br>Download: <a href="http://www.multimania.com/droche/rnotebook/index.html">index.html</a><br>This implements a resizeable notebook
-widget in pure tcl/tk <a href="/live/annotate?url=http%3a%2f%2fwww%2emultimania%2ecom%2fdroche%2frnotebook%2findex%2ehtml">Edit</a>
- <i><font size="-1">(August 19, 1999 15:39)</font></i><dt><b><a href="http://www.tregar.com/samdi.html" ="">saMDI v1.0a1 Multi-Document Interface Extension</a></b>
-<dd>A multi-document interface (MDI) extension for TCL/Tk 8.0.
-This is a common interface format in Microsoft Windows that lets a parent window contain multiple child windows.
-In effect you get a window manager inside a window!
-Uses and includes the STOOOP object-oriented extension by
-Jean-Luc Fontaine.
-saMDI v1.0a1 GPL Copyright 1998 Sam Tregar. <a href="/live/annotate?url=http%3a%2f%2fwww%2etregar%2ecom%2fsamdi%2ehtml">Edit</a>
- <i><font size="-1">(August 23, 1999 12:07)</font></i><dt><b><a href="http://tix.mne.com/htdocs/tix/index.html" ="">Tix Support Site</a></b>
-<dd>
-                       Author <b><a href="mailto:tix@mne.com" ="">Ioi Lam, (adopted by Gregg Squires)</a></b>, Version <b>4.1</b>,
-                       Works with <b>Tcl 7.4 through Tcl 8.0</b>
-<br><a href="ftp://ftp.tix.mne.com/pub/tix/">Download</a>, <a href="ftp://ftp.tix.mne.com/pub/tix/Tix4.1.0.006.tar.gz">Tix4.1.0.006.tar.gz</a>, <a href="ftp://ftp.tix.mne.com/pub/tix/Tix41p6.zip">Tix41p6.zip</a>, <a href="ftp://ftp.tix.mne.com/pub/tix/win41p6bin.zip">win41p6bin.zip</a><br><b>Tix has found a new home!</b>
- <br>
- Tix provides over 40 new Tk including the
-combo box, file selection dialogs, paned widget,
-notebook, hierarchical list, directory tree, and more.
-  <a href="/live/annotate?url=http%3a%2f%2ftix%2emne%2ecom%2fhtdocs%2ftix%2findex%2ehtml">Edit</a>
- <i><font size="-1">(August 23, 1999 12:11)</font></i><dt><b><a href="ftp://ftp.archive.eso.org/pub/tree" ="">Tk Tree Widget (C++)</a></b>
-<dd>Tk Tree widget for Tcl8.0.3.
-
-This version contains (optional) support for \[incr Tcl\] and \[incr Tk\]
-version 3.0.
-<br>
-With the tree widget, you can display a tree in a Tk canvas. The nodes
-can be made up of any number of canvas items or even other Tk widgets.
-You create the objects that make up a node and the line that connects
-it to its parent and pass them to the tree widget. After this the tree
-widget manages the positions of the nodes and end points of the tree
-lines.  Operations are available for inserting, moving and removing
-nodes and subtrees and for querrying the position of a node in the
-tree. The tree can be displayed horizontally or vertically.
- <a href="/live/annotate?url=ftp%3a%2f%2fftp%2earchive%2eeso%2eorg%2fpub%2ftree">Edit</a>
- <i><font size="-1">(August 25, 1999 03:14)</font></i><dt><b><a href="http://www.purl.org/net/hobbs/tcl/script/widget/" ="">widget, simple megawidget package</a></b>
-<dd>
-                       Author <b><a href="mailto:jeffrey.hobbs@oen.siemens.de" ="">Jeffrey Hobbs</a></b>, Version <b>0.9</b>,
-                       Works with <b>Tcl/Tk 8.0 or higher</b>
-<br>Download: <a href="http://www.purl.org/net/hobbs/tcl/script/widget/widget-0.9.tar.gz">widget-0.9.tar.gz</a><br>This is a package of
- megawidgets (i.e., compound widgets) that work almost exactly like Tk widgets.
- You can also build your own new megawidgets. 
-Includes: combobox, hierarchy, console, progressbar,
-tabnotebook, validating entry, pane geometry manager, baloon help. <a href="/live/annotate?url=http%3a%2f%2fwww%2epurl%2eorg%2fnet%2fhobbs%2ftcl%2fscript%2fwidget%2f">Edit</a>
- <i><font size="-1">(August 23, 1999 12:16)</font></i></dl>
-<hr><p><center><font size="-1" face="Geneva, Helvetica, Arial"><br><a href="#TOP"><b>Top</b></a><br><!-- key ResourceSoftwareExtensions --><a href="/">Home</a>
- | <a href="/products/">Products</a>
- | <a href="/customers/">Customers</a>
- | <a href="/partners/">Partners</a>
- | <a href="/services/">Services</a>
- | <a href="/resource/">Tcl Resources</a>
- | <a href="/company/">Company</a>
-<br><a href="/live/keyword">Search</a>
- | <a href="/live/map">Site Map</a>
- | <a href="/company/feedback.html?url=%2fresource%2fsoftware%2fextensions%2ftk%2f">Feedback</a>
- | <a href="/company/contact.html">Contact Us</a>
- | <a href="mailto:info@scriptics.com">info@scriptics.com</a>
-
- <SCRIPT LANGUAGE="Javascript">
-<!--
-         browser = (((navigator.appName == "Netscape") &&(parseInt(navigator.appVersion) >= 3 )) || ((navigator.appName =="Microsoft Internet Explorer") && (parseInt(navigator.appVersion) >= 4 )))
-
-  if ( browser )
-   {
-        over = new MakeImageArray(10)
-        over[0].src = "http://images.scriptics.com/images/ProductsMouseOff.gif"
-        over[1].src = "http://images.scriptics.com/images/CustomersMouseOff.gif"
-        over[2].src = "http://images.scriptics.com/images/PartnersMouseOff.gif"
-        over[3].src = "http://images.scriptics.com/images/ServicesMouseOff.gif"
-        over[4].src = "http://images.scriptics.com/images/ResourceMouseOff.gif"
-        over[5].src = "http://images.scriptics.com/images/CompanyMouseOff.gif"
-        over[6].src = "http://images.scriptics.com/images/homeMainRollover1.gif"
-        over[7].src = "http://images.scriptics.com/images/homeMainRollover2.gif"
-        over[8].src = "http://images.scriptics.com/images/homeMainRollover3.gif"
-        over[9].src = "http://images.scriptics.com/images/homeMainRollover3.gif"
-
-  }
-  
-  function MakeImageArray(n)  {
-        this.length = n
-        for (var i = 0; i<=n; i++)="i++)" {="{" this[i]="this[i]" ="" new="new" Image()="Image()" }="}" return="return" this="this" }="}" //="//" --="--">
-  </SCRIPT><br>
-    <font size="2">
-    &copy; 1998-2000 Scriptics Corporation.  All rights reserved.
-    <a href="/legal_notice.html">Legal Notice</a> | <A href="" /privacy.html="/privacy.html"> 
-    Privacy Statement</a>
-    </td></tr></table></td></tr></table>
-</Body>
-</Html>
\ No newline at end of file
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image1 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image1
deleted file mode 100644 (file)
index 814d1e8..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image1 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image10 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image10
deleted file mode 100644 (file)
index 45001fa..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image10 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image11 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image11
deleted file mode 100644 (file)
index 7c4c170..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image11 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image12 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image12
deleted file mode 100644 (file)
index 903e734..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image12 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image13 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image13
deleted file mode 100644 (file)
index 226d4f6..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image13 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image14 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image14
deleted file mode 100644 (file)
index 8e8c718..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image14 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image2 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image2
deleted file mode 100644 (file)
index 2ddeb32..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image2 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image3 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image3
deleted file mode 100644 (file)
index 1651ba7..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image3 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image4 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image4
deleted file mode 100644 (file)
index b565c8d..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image4 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image5 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image5
deleted file mode 100644 (file)
index e1268b8..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image5 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image6 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image6
deleted file mode 100644 (file)
index 1a6b260..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image6 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image7 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image7
deleted file mode 100644 (file)
index cec7aa0..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image7 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image8 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image8
deleted file mode 100644 (file)
index ad0d748..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image8 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image9 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image9
deleted file mode 100644 (file)
index 46ade30..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/image9 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/index.html b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page3/index.html
deleted file mode 100644 (file)
index 07a51b2..0000000
+++ /dev/null
@@ -1,2787 +0,0 @@
-<html><body bgcolor="white">
-<hr>
-<h1 align="center">Embedding Tcl in C/C++ Applications</h1>
-
-    <table width="100%">
-    <tr><td valign="top" align="left" width="46%">
-    <b>Presented At:</b>
-  <blockquote>
-     The&nbsp;Tcl2K&nbsp;Conference<br>
-     Austin, Texas<br>
-     <nobr>9:00am, February 15, 2000</nobr><br>
-  </blockquote>
-    </td>
-    <td width="5%">&nbsp;</td>
-    <td valign="top" align="left" width="46%">
-    <b>Instructor:</b>
-  <blockquote>
-     D. Richard Hipp<br>
-     drh@hwaci.com<br>
-     http://www.hwaci.com/drh/<br>
-     704.948.4565
-  </blockquote>
-    </td></tr>
-    </table><p>
-  <center><table border="2">
-  <tr><td>
-  <p align="center">
-  Copies of these notes, example source code,<br>and other
-  resources related to this tutorial<br>are available online at
-  <a href="http://www.hwaci.com/tcl2k/">
-  http://www.hwaci.com/tcl2k/</a></p>
-  <p align="center"><small>$Id: index.html 11708 2007-02-12 23:01:19Z shyouhei $</small></p></td></tr>
-  </table>
-  </center>
-</p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Tutorial Outline</h2>
-<p><ul><li>Introduction</li>
-<li>Building It Yourself</li>
-<ul><li>"Hello, World!" using Tcl</li>
-<li>Tcl scripts as C strings</li>
-<li>Adding new Tcl commands</li>
-<li>A tour of the Tcl API</li>
-<li>Tcl initialization scripts</li>
-<li>Adding Tk</li>
-</ul><li>Tools Survey</li>
-<li>Mktclapp</li>
-<ul><li>"Hello World" using mktclapp</li>
-<li>Adding C code</li>
-<li>Other Features</li>
-<li>Invoking Tcl from C</li>
-<li>Running mktclapp directly</li>
-<li>Real-world examples</li>
-</ul><li>Summary</li>
-</ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Embedding Tcl in C/C++ Applications</h2>
-<p><ul><li>You know how to program in Tcl/Tk</li></ul><ul><li>You know how to program in C/C++</li></ul><ul><li>This tutorial is about how to do both at the same time.</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Why Mix C With Tcl/Tk?</h2>
-<p><ul><li>Use C for the things C is good at and Tcl for the things
-  Tcl is good at.</li></ul><ul><li>Generate standalone executables.
-  <ul><li>Eliminate the need to install Tcl/Tk.</li>
-  <li>Prevent problems when the wrong version of Tcl/Tk is installed.</li>
-  </ul></li></ul><ul><li>Prevent end users from changing the source code.
-  <ul><li>Keeps users from creating new bugs.</li>
-  <li>Protects proprietary code.</li>
-  </ul></li></ul><ul><li>Office politics</li></ul><ul><li>Use Tcl/Tk as a portability layer for a large C program</li></ul><ul><li>Use Tcl as a testing interface</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Why Mix C With Tcl/Tk?</h2>
-<p><blockquote><big><b>
-  "Use C for the things C is good at and use Tcl/Tk for the things
-  Tcl/Tk is good at."
-  </b></blockquote></p><p>
-
-    <table width="100%">
-    <tr><td valign="top" align="left" width="46%">
-    <b>C is good at:</b>
-  <ul>
-  <li>Speed</li>
-  <li>Complex data structures</li>
-  <li>Computation</li>
-  <li>Interacting with hardware</li>
-  <li>Byte-by-byte data analysis</li>
-  </ul>
-    </td>
-    <td width="5%">&nbsp;</td>
-    <td valign="top" align="left" width="46%">
-    <b>Tcl/Tk is good at:</b>
-  <ul>
-  <li>Building a user interface</li>
-  <li>Manipulation of strings</li>
-  <li>Portability</li>
-  <li>Opening sockets</li>
-  <li>Handling events</li>
-  </ul>
-    </td></tr>
-    </table>
-<br clear="both"><p><hr></p>
-<h2 align="center">Programming Models</h2>
-<table width="100%">
-<tr><td valign="top" width="49%">
-
-  <p><b>Mainstream Tcl Programming Model:</b></p>
-</td>
-<td width="2%">&nbsp;</td>
-<td valign="top" width="49%">
-
-  <p><b>Embedded Tcl Programming Model:&nbsp;&nbsp;</b></p>
-</td></tr>
-<tr><td valign="top" width="49%">
-
-  <ul><li>Add bits of C code to a large Tcl program</li></ul>
-</td>
-<td width="2%">&nbsp;</td>
-<td valign="top" width="49%">
-
-  <ul><li>Add bits of Tcl code to a large C program</li></ul>
-</td></tr>
-<tr><td valign="top" width="49%">
-
-  <ul><li>Main Tcl script loads extensions written in C</li></ul>
-</td>
-<td width="2%">&nbsp;</td>
-<td valign="top" width="49%">
-
-  <ul><li>Main C procedure invokes the Tcl interpreter</li></ul>
-</td></tr>
-<tr><td valign="top" width="49%">
-
-  <ul><li>Tcl/Tk is a programming language</li></ul>
-</td>
-<td width="2%">&nbsp;</td>
-<td valign="top" width="49%">
-
-  <ul><li>Tcl/Tk is a C library</li></ul>
-</td></tr>
-<tr><td valign="top" width="49%">
-
-  <center><img src="image1"><br>
-  Most of the Tcl2K conference is about</center>
-</td>
-<td width="2%">&nbsp;</td>
-<td valign="top" width="49%">
-
-  <center><img src="image1"><br>
-  This tutorial is about</center>
-</td></tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">"Hello, World!" Using The Tcl Library</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tcl.h></tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Always include &lt;tcl.h></td>
-</tr>
-<tr><td valign="center">
-<small><tt>int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Create a new Tcl interpreter</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;"puts&nbsp;{Hello,&nbsp;World!}");</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Execute a Tcl command.</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Compiling "Hello, World!"</h2>
-<p><p><b>Unix:</b></p>
-  <blockquote><tt>
-  $ gcc hello.c -ltcl -lm -ldl<br>
-  $ ./a.out<br>
-  Hello, World!</tt></blockquote>
-
-  <p><b>Windows using Cygwin:</b></p>
-  <blockquote><tt>
-  C:> gcc hello.c -ltcl80 -lm<br>
-  C:> a.exe<br>
-  Hello, World!</tt></blockquote>
-
-  <p><b>Windows using Mingw32:</b></p>
-  <blockquote><tt>
-  C:> gcc -mno-cygwin hello.c -ltcl82 -lm<br>
-  </tt></blockquote>
-<table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>Also works with VC++</b></td></tr></table></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Where Does <tt>-ltcl</tt> Come From On Unix?</h2>
-<p><p>Build it yourself using these steps:</p></p><p>
-<p><ul><li>Get tcl8.2.2.tar.gz from Scriptics</li></ul><ul><li><tt>zcat tcl8.2.2.tar.gz | tar vx </tt></li></ul><ul><li><tt>cd tcl8.2.2/unix</tt></li></ul><ul><li><tt>./configure --disable-shared</tt></li></ul><ul><li><tt>make</tt></li></ul><ul><li>Move <b>libtcl8.2.a</b> to your lib directory.</li></ul><ul><li>Copy <b>../generic/tcl.h</b> into /usr/include.</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">What Other Libraries Are Required For Unix?</h2>
-<p><ul><li>The sequence of <b>-l</b> options after <b>-ltcl</b>
-  varies from system to system</li></ul><ul><li>Observe what libraries the TCL makefile inserts when
-  it is building <b>tclsh</b></li></ul><ul><li>Examples in this talk are for RedHat Linux 6.0 for Intel</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">How To Compile Under Unix Without Installing Tcl</h2>
-<p><p>Specify the *.a file directly:</p>
-  <blockquote><pre>
-  $ gcc -I../tcl8.2.2/generic hello.c \ 
-      ../tcl8.2.2/unix/libtcl8.2.a -lm -ldl
-  $ strip a.out
-  $ ./a.out
-  Hello, World!</pre></blockquote>
-
-  <p>Or, tell the C compiler where to look for *.a files:</p>
-  <blockquote><pre>
-  $ gcc -I../tcl8.2.2/generic hello.c \ 
-      -L../tcl8.2.2/unix -ltcl -lm -ldl
-  $ strip a.out
-  $ ./a.out
-  Hello, World!</pre></blockquote>
-<table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>The <tt>-I../tcl8.2.2</tt> argument
-  tells the compiler where to
-  find <tt>&lt;tcl.h&gt;</tt>.</p></b></td></tr></table></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">What's "Cygwin"?</h2>
-<p><ul><li>An implementation of GCC/G++ and all development tools
-  for Windows95/98/NT/2000</li></ul><ul><li>Available for free download at
-  <blockquote>
-  <tt>http://sourceware.cygnus.com/cygwin/</tt>
-  </blockquote></li></ul><ul><li>Also available shrink-wrapped at your local software retailer or
-  online at
-  <blockquote>
-  <tt>http://www.cygnus.com/cygwin/index.html</tt>
-  </blockquote></li></ul><ul><li>Programs compiled using Cygwin require a special
-  DLL (<b>cygwin1.dll</b>) that provides a POSIX system API</li></ul><ul><li>Cygwin1.dll cannot be shipped with proprietary programs
-  without purchasing a license from Cygnus.</li></ul><ul><li>Mingw32 is the same compiler as Cygwin, but generates
-  binaries that do not use cygwin1.dll</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Where Does <tt>-ltcl82</tt> Come From On Windows?</h2>
-<p><p>Build it like this:</p></p><p>
-<p><ul><li>Get <b>tcl82.lib</b> and <b>tcl82.dll</b> from Scriptics.</li></ul><ul><li><tt>echo EXPORTS >tcl82.def</tt></li></ul><ul><li><tt>nm tcl82.lib | grep 'T _' | sed 's/.* T _//' >>tcl82.def</tt></li></ul><ul><li><tt>dlltool --def tcl82.def --dllname tcl82.dll --output-lib libtcl82.a</tt></li></ul><ul><li>Move <b>libtcl82.a</b> to the lib directory and <b>tcl82.dll</b>
-  to the bin directory.</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Where Does Your Code Go?</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tcl.h><br>
-&nbsp;<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;<br>
-&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;/*&nbsp;Your&nbsp;application&nbsp;code&nbsp;goes&nbsp;here&nbsp;*/</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Insert C code here to do whatever it is your program is
-  suppose to do</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Building A Simple TCLSH</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tcl.h><br>
-&nbsp;<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;<br>
-&nbsp;&nbsp;char&nbsp;*z;<br>
-&nbsp;&nbsp;char&nbsp;zLine[2000];<br>
-&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;while(&nbsp;fgets(zLine,sizeof(zLine),stdin)&nbsp;){</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Get one line of input</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zLine);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Execute the input as Tcl.</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;&nbsp;&nbsp;z&nbsp;=&nbsp;Tcl_GetStringResult(interp);<br>
-&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;z[0]&nbsp;){<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("¸üÿ¿P\8d\ 4\b\ 4\b\n",&nbsp;z);<br>
-&nbsp;&nbsp;&nbsp;&nbsp;}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Print result if not empty</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;}<br>
-&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-<p><table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>What if user types more than 2000 characters?</b></td></tr></table>
-</p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Building A Simple TCLSH</h2>
-<p>Use TCL to handle input.  Allows input lines of unlimited length.</p><p>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tcl.h><br>
-&nbsp;<br>
-/*&nbsp;Tcl&nbsp;code&nbsp;to&nbsp;implement&nbsp;the<br>
-**&nbsp;input&nbsp;loop&nbsp;*/<br>
-static&nbsp;char&nbsp;zLoop[]&nbsp;=&nbsp;<br>
-&nbsp;&nbsp;"while&nbsp;{![eof&nbsp;stdin]}&nbsp;{\n"</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;"&nbsp;&nbsp;set&nbsp;line&nbsp;[gets&nbsp;stdin]\n"</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Get one line of input</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;"&nbsp;&nbsp;set&nbsp;result&nbsp;[eval&nbsp;$line]\n"</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Execute input as Tcl</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;"&nbsp;&nbsp;if&nbsp;{$result!=\"\"}&nbsp;{puts&nbsp;$result}\n"</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Print result</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;"}\n"<br>
-;<br>
-&nbsp;<br>
-<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;<br>
-&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zLoop);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Run the Tcl input loop</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-<p><table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>But what about commands that span multiple lines of input?</b></td></tr></table>
-</p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Better Handling Of Command-Line Input</h2>
-<p>The file "input.tcl"</p><p>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>set&nbsp;line&nbsp;{}<br>
-while&nbsp;{![eof&nbsp;stdin]}&nbsp;{</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;if&nbsp;{$line!=""}&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;-nonewline&nbsp;">&nbsp;"<br>
-&nbsp;&nbsp;}&nbsp;else&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;-nonewline&nbsp;"%&nbsp;"<br>
-&nbsp;&nbsp;}<br>
-&nbsp;&nbsp;flush&nbsp;stdout</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Prompt for user input.  The prompt is normally &quot;%&quot;
-  but changes to &quot;&gt;&quot; if the current line is a continuation.</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;append&nbsp;line&nbsp;[gets&nbsp;stdin]<br>
-&nbsp;&nbsp;if&nbsp;{[info&nbsp;complete&nbsp;$line]}&nbsp;{</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;{[catch&nbsp;{uplevel&nbsp;#0&nbsp;$line}&nbsp;result]}&nbsp;{</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">If the command is complete, execute it.</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;stderr&nbsp;"Error:&nbsp;$result"<br>
-&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;{$result!=""}&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;$result<br>
-&nbsp;&nbsp;&nbsp;&nbsp;}<br>
-&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;line&nbsp;{}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;}&nbsp;else&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;append&nbsp;line&nbsp;\n<br>
-&nbsp;&nbsp;}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">If the command is incomplete, append a newline and get
-  another line of text.</td>
-</tr>
-<tr><td valign="center">
-<small><tt>}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Better Handling Of Command-Line Input</h2>
-<p>The file "input.c"</p><p>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tcl.h><br>
-&nbsp;<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;<br>
-&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;"source&nbsp;input.tcl");</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Read and execute the input loop</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-<p><table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>But now the program is not standalone!</b></td></tr></table>
-</p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Converting Scripts Into C Strings</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>static&nbsp;char&nbsp;zInputLoop[]&nbsp;=&nbsp;<br>
-&nbsp;&nbsp;"set&nbsp;line&nbsp;{}\n"<br>
-&nbsp;&nbsp;"while&nbsp;{![eof&nbsp;stdin]}&nbsp;{\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;if&nbsp;{$line!=\"\"}&nbsp;{\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;-nonewline&nbsp;\">&nbsp;\"\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;}&nbsp;else&nbsp;{\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;-nonewline&nbsp;\"%&nbsp;\"\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;}\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;flush&nbsp;stdout\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;append&nbsp;line&nbsp;[gets&nbsp;stdin]\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;if&nbsp;{[info&nbsp;complete&nbsp;$line]}&nbsp;{\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;{[catch&nbsp;{uplevel&nbsp;#0&nbsp;$line}&nbsp;result]}&nbsp;{\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;stderr&nbsp;\"Error:&nbsp;$result\"\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;{$result!=\"\"}&nbsp;{\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;$result\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;}\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;line&nbsp;{}\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;}&nbsp;else&nbsp;{\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;append&nbsp;line&nbsp;\\n\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;}\n"<br>
-&nbsp;&nbsp;"}\n"<br>
-;</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Compile Tcl Scripts Into C Programs</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tcl.h><br>
-</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt><br>
-static&nbsp;char&nbsp;zInputLoop[]&nbsp;=&nbsp;<br>
-&nbsp;&nbsp;/*&nbsp;Actual&nbsp;code&nbsp;omitted&nbsp;*/<br>
-;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Copy and paste the converted Tcl script here</td>
-</tr>
-<tr><td valign="center">
-<small><tt><br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;<br>
-&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zInputLoop);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Execute the Tcl code</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Converting Scripts To Strings<br>Using SED Or TCLSH</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>sed&nbsp;-e&nbsp;'s/\\/\\\\/g'&nbsp;\&nbsp;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Convert <b>\</b> into <b>\\</b></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;-e&nbsp;'s/"/\\"/g'&nbsp;\&nbsp;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Convert <b>"</b> into <b>\"</b></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;-e&nbsp;'s/^/&nbsp;&nbsp;"/'&nbsp;\&nbsp;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Add <b>"</b> to start of each line</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;-e&nbsp;'s/$/\\n"/'&nbsp;input.tcl</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Add <b>\n"</b> to end of each line</td>
-</tr>
-<tr><td valign="center">
-<small><tt><br>
-&nbsp;<br>
-<br>
-&nbsp;<br>
-<br>
-while&nbsp;{![eof&nbsp;stdin]}&nbsp;{<br>
-&nbsp;&nbsp;set&nbsp;line&nbsp;[gets&nbsp;stdin]</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;regsub&nbsp;-all&nbsp;{\}&nbsp;$line&nbsp;{&amp;&amp;}&nbsp;line</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Convert <b>\</b> into <b>\\</b></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;regsub&nbsp;-all&nbsp;{"}&nbsp;$line&nbsp;{\"}&nbsp;line</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Convert <b>"</b> into <b>\"</b></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;puts&nbsp;"\"$line\\n\""</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Add <b>"</b> in front and <b>\n"</b> at the end</td>
-</tr>
-<tr><td valign="center">
-<small><tt>}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Converting Scripts Into C Strings</h2>
-<p>You may want to save space by removing comments and extra whitespace
-  from scripts.</p><p>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>static&nbsp;char&nbsp;zInputLoop[]&nbsp;=&nbsp;<br>
-&nbsp;&nbsp;"set&nbsp;line&nbsp;{}\n"<br>
-&nbsp;&nbsp;"while&nbsp;{![eof&nbsp;stdin]}&nbsp;{\n"<br>
-&nbsp;&nbsp;"if&nbsp;{$line!=\"\"}&nbsp;{\n"<br>
-&nbsp;&nbsp;"puts&nbsp;-nonewline&nbsp;\">&nbsp;\"\n"<br>
-&nbsp;&nbsp;"}&nbsp;else&nbsp;{\n"<br>
-&nbsp;&nbsp;"puts&nbsp;-nonewline&nbsp;\"%&nbsp;\"\n"<br>
-&nbsp;&nbsp;"}\n"<br>
-&nbsp;&nbsp;"flush&nbsp;stdout\n"<br>
-&nbsp;&nbsp;"append&nbsp;line&nbsp;[gets&nbsp;stdin]\n"<br>
-&nbsp;&nbsp;"if&nbsp;{[info&nbsp;complete&nbsp;$line]}&nbsp;{\n"<br>
-&nbsp;&nbsp;"if&nbsp;{[catch&nbsp;{uplevel&nbsp;#0&nbsp;$line}&nbsp;result]}&nbsp;{\n"<br>
-&nbsp;&nbsp;"puts&nbsp;stderr&nbsp;\"Error:&nbsp;$result\"\n"<br>
-&nbsp;&nbsp;"}&nbsp;elseif&nbsp;{$result!=\"\"}&nbsp;{\n"<br>
-&nbsp;&nbsp;"puts&nbsp;$result\n"<br>
-&nbsp;&nbsp;"}\n"<br>
-&nbsp;&nbsp;"set&nbsp;line&nbsp;{}\n"<br>
-&nbsp;&nbsp;"}&nbsp;else&nbsp;{\n"<br>
-&nbsp;&nbsp;"append&nbsp;line&nbsp;\\n\n"<br>
-&nbsp;&nbsp;"}\n"<br>
-&nbsp;&nbsp;"}\n"<br>
-;</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Converting Scripts To Strings</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>sed&nbsp;-e&nbsp;'s/\\/\\\\/g'&nbsp;\&nbsp;<br>
-&nbsp;&nbsp;-e&nbsp;'s/"/\\"/g'&nbsp;\&nbsp;</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;-e&nbsp;'/^&nbsp;*#/d'&nbsp;\&nbsp;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Delete lines that begin with #</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;-e&nbsp;'/^&nbsp;*$/d'&nbsp;\&nbsp;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Delete blank lines</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;-e&nbsp;'s/^&nbsp;*/&nbsp;&nbsp;"/'&nbsp;\&nbsp;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Delete leading spaces</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;-e&nbsp;'s/$/\\n"/'&nbsp;input.tcl<br>
-&nbsp;<br>
-<br>
-&nbsp;<br>
-<br>
-&nbsp;<br>
-while&nbsp;{![eof&nbsp;stdin]}&nbsp;{<br>
-&nbsp;&nbsp;set&nbsp;line&nbsp;[gets&nbsp;stdin]</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;set&nbsp;line&nbsp;[string&nbsp;trimleft&nbsp;$line]</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Remove leading space</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;if&nbsp;{$line==""}&nbsp;continue</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Delete blank lines</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;if&nbsp;{[string&nbsp;index&nbsp;$line&nbsp;0]=="#"}&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;continue<br>
-&nbsp;&nbsp;}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Delete lines starting with #</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;regsub&nbsp;-all&nbsp;{\}&nbsp;$line&nbsp;{&amp;&amp;}&nbsp;line<br>
-&nbsp;&nbsp;regsub&nbsp;-all&nbsp;{"}&nbsp;$line&nbsp;{\"}&nbsp;line<br>
-&nbsp;&nbsp;puts&nbsp;"\"$line\\n\""<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Removing Comments Or Leading Space<br>Will Break Some Tcl Scripts!</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>image&nbsp;create&nbsp;bitmap&nbsp;smiley&nbsp;-data&nbsp;{</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>#define&nbsp;smile_width&nbsp;15<br>
-#define&nbsp;smile_height&nbsp;15</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">These lines begin with # but are not comment</td>
-</tr>
-<tr><td valign="center">
-<small><tt>static&nbsp;unsigned&nbsp;char&nbsp;smile_bits[]&nbsp;=&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;0xc0,&nbsp;0x01,&nbsp;0x30,&nbsp;0x06,&nbsp;0x0c,&nbsp;0x18,<br>
-&nbsp;&nbsp;&nbsp;0x04,&nbsp;0x10,&nbsp;0x22,&nbsp;0x22,&nbsp;0x52,&nbsp;0x25,<br>
-&nbsp;&nbsp;&nbsp;0x01,&nbsp;0x40,&nbsp;0x01,&nbsp;0x40,&nbsp;0x01,&nbsp;0x40,<br>
-&nbsp;&nbsp;&nbsp;0x12,&nbsp;0x24,&nbsp;0xe2,&nbsp;0x23,&nbsp;0x04,&nbsp;0x10,<br>
-&nbsp;&nbsp;&nbsp;0x0c,&nbsp;0x18,&nbsp;0x30,&nbsp;0x06,&nbsp;0xc0,&nbsp;0x01};<br>
-}<br>
-&nbsp;<br>
-<br>
-&nbsp;<br>
-text&nbsp;.t<br>
-pack&nbsp;.t<br>
-.t&nbsp;insert&nbsp;end&nbsp;[string&nbsp;trim&nbsp;{</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>She&nbsp;walks&nbsp;in&nbsp;beauty,&nbsp;like&nbsp;the&nbsp;night<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Of&nbsp;cloudless&nbsp;climes&nbsp;and&nbsp;starry&nbsp;skies;<br>
-And&nbsp;all&nbsp;that's&nbsp;best&nbsp;of&nbsp;dark&nbsp;and&nbsp;bright<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Meet&nbsp;in&nbsp;her&nbsp;aspect&nbsp;and&nbsp;her&nbsp;eyes;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Indentation is deleted on lines 2
-  and 4</td>
-</tr>
-<tr><td valign="center">
-<small><tt>}]&nbsp;<br>
-&nbsp;<br>
-</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-<p><table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>Problems like these are rare</b></td></tr></table>
-</p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Adding A "continue" Command</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>set&nbsp;line&nbsp;{}<br>
-while&nbsp;{![eof&nbsp;stdin]}&nbsp;{<br>
-&nbsp;&nbsp;if&nbsp;{$line!=""}&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;-nonewline&nbsp;">&nbsp;"<br>
-&nbsp;&nbsp;}&nbsp;else&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;-nonewline&nbsp;"%&nbsp;"<br>
-&nbsp;&nbsp;}<br>
-&nbsp;&nbsp;flush&nbsp;stdout<br>
-&nbsp;&nbsp;append&nbsp;line&nbsp;[gets&nbsp;stdin]<br>
-&nbsp;&nbsp;if&nbsp;{[info&nbsp;complete&nbsp;$line]}&nbsp;{</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;{[lindex&nbsp;$line&nbsp;0]=="continue"}&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Break out of the loop if the command
-  is "continue"</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;{[catch&nbsp;{uplevel&nbsp;#0&nbsp;$line}&nbsp;result]}&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;stderr&nbsp;"Error:&nbsp;$result"<br>
-&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp;{$result!=""}&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;$result<br>
-&nbsp;&nbsp;&nbsp;&nbsp;}<br>
-&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;line&nbsp;{}<br>
-&nbsp;&nbsp;}&nbsp;else&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;append&nbsp;line&nbsp;\n<br>
-&nbsp;&nbsp;}<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Stop For Tcl Input At Various Points<br>In A C Program</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tcl.h><br>
-&nbsp;<br>
-static&nbsp;char&nbsp;zInputLoop[]&nbsp;=&nbsp;<br>
-&nbsp;&nbsp;/*&nbsp;Tcl&nbsp;Input&nbsp;loop&nbsp;as&nbsp;a&nbsp;C&nbsp;string&nbsp;*/<br>
-;<br>
-&nbsp;<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;<br>
-&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;/*&nbsp;Application&nbsp;C&nbsp;code&nbsp;*/</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Do some computation</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zInputLoop);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Stop for some Tcl input</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;/*&nbsp;More&nbsp;application&nbsp;C&nbsp;code&nbsp;*/</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Do more computation</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zInputLoop);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Stop for more Tcl input</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;/*&nbsp;Finish&nbsp;up&nbsp;the&nbsp;application&nbsp;*/</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Finish the computation</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Using Tcl For Testing</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tcl.h><br>
-&nbsp;<br>
-static&nbsp;char&nbsp;zInputLoop[]&nbsp;=&nbsp;<br>
-&nbsp;&nbsp;/*&nbsp;Tcl&nbsp;Input&nbsp;loop&nbsp;as&nbsp;a&nbsp;C&nbsp;string&nbsp;*/<br>
-;<br>
-&nbsp;<br>
-</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-#ifdef&nbsp;TESTING<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Create interpreter only if TESTING
- is defined</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();<br>
-#endif<br>
-&nbsp;&nbsp;/*&nbsp;Application&nbsp;C&nbsp;code&nbsp;*/</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>#ifdef&nbsp;TESTING<br>
-&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zInputLoop);<br>
-#endif</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Accept command-line input only if TESTING
-  is defined</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;/*&nbsp;More&nbsp;application&nbsp;C&nbsp;code&nbsp;*/<br>
-#ifdef&nbsp;TESTING<br>
-&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zInputLoop);<br>
-#endif<br>
-&nbsp;&nbsp;/*&nbsp;Finish&nbsp;up&nbsp;the&nbsp;application&nbsp;*/<br>
-&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Creating A New Tcl Command In C</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tcl.h><br>
-&nbsp;<br>
-int&nbsp;NewCmd(</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;void&nbsp;*clientData,<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp,<br>
-&nbsp;&nbsp;int&nbsp;argc,<br>
-&nbsp;&nbsp;char&nbsp;**argv</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">The Tcl command is implemented as
-  a C function with four arguments.</td>
-</tr>
-<tr><td valign="center">
-<small><tt>){<br>
-&nbsp;&nbsp;printf("Hello,&nbsp;World!\n");</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return&nbsp;TCL_OK;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Returns TCL_OK or TCL_ERROR</td>
-</tr>
-<tr><td valign="center">
-<small><tt>}<br>
-&nbsp;<br>
-static&nbsp;char&nbsp;zInputLoop[]&nbsp;=&nbsp;<br>
-&nbsp;&nbsp;/*&nbsp;Tcl&nbsp;code&nbsp;omitted...&nbsp;*/<br>
-;<br>
-&nbsp;<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;<br>
-&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_CreateCommand(interp,&nbsp;"helloworld",<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NewCmd,&nbsp;0,&nbsp;0);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Tell the interpreter which C function to call when the
-  "helloworld" Tcl command is executed</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zInputLoop);<br>
-&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Linkage From Tcl To C</h2>
-<p><p align="center"><img src="image4"></p></p><p><ul><li>3rd parameter of Tcl_CreateCommand() is a pointer to the C subroutine
- that implements the command.</li></ul><ul><li>4th parameter to Tcl_CreateCommand() becomes the 1st parameter to 
- the C routine whenever the Tcl command is executed.</li></ul><ul><li>1st parameter to Tcl_CreateCommand() must be a valid Tcl interpreter.
- The same pointer appears as the second parameter to the C routine
- whenever the Tcl command is executed.</li></ul></p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Linkage From Tcl To C</h2>
-<p><p align="center"><img src="image5"></p></p><p><ul><li>5th parameter of Tcl_CreateCommand() is a pointer to the C subroutine
- that is called when the Tcl command is deleted.</li></ul><ul><li>4th parameter to Tcl_CreateCommand() becomes the 1st parameter to 
- the C routine.</li></ul></p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">When To Use A Delete Proc</h2>
-<p>Examples of where the delete proc is used in standard Tcl/Tk:</p><p>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>button&nbsp;.b&nbsp;-text&nbsp;Hello<br>
-pack&nbsp;.b</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>rename&nbsp;.b&nbsp;{}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Deleting the <b>.b</b> command causes the button to be destroyed</td>
-</tr>
-<tr><td valign="center">
-<small><tt><br>
-&nbsp;<br>
-</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>image&nbsp;create&nbsp;photo&nbsp;smiley&nbsp;\&nbsp;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;-file&nbsp;smiley.gif</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>rename&nbsp;smiley&nbsp;{}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Deleting the <b>smiley</b> command destroys the image and reclaims the
-  memory used to hold the image</td>
-</tr>
-</table>
-<p><ul><li>Always use a delete proc if the clientData is a pointer to
-  malloced memory or some other resource that needs freeing</li></ul><ul><li>Delete procs are never used in the Tcl core but are used
-  extensively in Tk</li></ul></p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Linkage From Tcl To C</h2>
-<p>The <tt>argc</tt> and <tt>argv</tt> parameters work just like in 
- <tt>main()</tt></p><p>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>helloworld&nbsp;one&nbsp;{two&nbsp;three}&nbsp;four</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><tt>argc = 4<br>
-  argv[0] = "helloworld"<br>
-  argv[1] = "one"<br>
-  argv[2] = "two three"<br>
-  argv[3] = "four"<br>
-  argv[4] = NULL</tt></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">A Short-Cut</h2>
-<p>In a program with many new Tcl commands implemented in C, it becomes
-  tedious to type the same four parameters over and over again.  So
-  we define a short-cut.</p><p>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#define&nbsp;TCLARGS&nbsp;\&nbsp;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;*clientData,&nbsp;\&nbsp;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;Tcl_Interp&nbsp;*interp,&nbsp;\&nbsp;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;argc,&nbsp;\&nbsp;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*argv</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Define TCLARGS once in a header file</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;<br>
-&nbsp;<br>
-&nbsp;</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>int&nbsp;NewCmd(TCLARGS){</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Use the TCLARGS macro to define new C functions
-  that implement Tcl commands.</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;&nbsp;/*&nbsp;implementation...&nbsp;*/<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-<p><table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>For brevity, we will use the TCLARGS macro during the
-  rest of this talk.</b></td></tr></table>
-</p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Returning A Value From C Back To Tcl</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>int&nbsp;NewCmd(TCLARGS){</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Note that the C function returns an "int"</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return&nbsp;TCL_OK;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Return value is TCL_OK or TCL_ERROR</td>
-</tr>
-<tr><td valign="center">
-<small><tt>}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-<p><ul><li>TCL_OK and TCL_ERROR are defined in &lt;tcl.h&gt;</li></ul><ul><li>Other valid return values TCL_RETURN, TCL_BREAK and TCL_CONTINUE
-  are rarely used</li></ul><ul><li>Common mistake: forgetting to return TCL_OK</li></ul></p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Returning A Value From C Back To Tcl</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>int&nbsp;NewCmd(TCLARGS){</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_SetResult(interp,"Hello!",TCL_STATIC);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Set the result to "Hello!"</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return&nbsp;TCL_OK;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-<p><ul><li>Result should be the text of an error message if you 
-  return TCL_ERROR.</li></ul><ul><li>3rd argument to Tcl_SetResult() can be TCL_STATIC,
-  TCL_DYNAMIC, TCL_VOLATILE, or a function pointer.</li></ul><ul><li>Also consider using Tcl_AppendResult().</li></ul><ul><li>Direct access to <tt>interp->result</tt> is deprecated.</li></ul><ul><li>See the man pages for details.</li></ul></p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">The Tcl_Obj Interface</h2>
-<p><ul><li>A new way to write Tcl commands in C code</li></ul><ul><li>First introduced in Tcl8.0</li></ul><ul><li>Can be much faster, especially for lists or numeric values.</li></ul><ul><li>Able to handle arbitrary binary data.</li></ul><ul><li>More difficult to program.</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">The Tcl_Obj Interface</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>int&nbsp;NewObjCmd(<br>
-&nbsp;&nbsp;void&nbsp;*clientData,<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp,<br>
-&nbsp;&nbsp;int&nbsp;objc,</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_Obj&nbsp;*const*&nbsp;objv</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">4th parameter is an array Tcl_Objs, not an array of strings</td>
-</tr>
-<tr><td valign="center">
-<small><tt>){<br>
-&nbsp;&nbsp;/*&nbsp;Implementation...&nbsp;*/<br>
-&nbsp;&nbsp;return&nbsp;TCL_OK;<br>
-}<br>
-&nbsp;<br>
-static&nbsp;char&nbsp;zInputLoop[]&nbsp;=&nbsp;<br>
-&nbsp;&nbsp;/*&nbsp;Tcl&nbsp;code&nbsp;omitted...&nbsp;*/<br>
-;<br>
-&nbsp;<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;<br>
-&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_CreateObjCommand(interp,&nbsp;"newcmd",<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NewObjCmd,&nbsp;0,&nbsp;0);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Use a different function to register the command</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zInputLoop);<br>
-&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">The Tcl_Obj Interface</h2>
-<p><ul><li>There are countless access methods for reading information from and
-  placing information in Tcl_Objs.  Always use the access methods.</li></ul><ul><li>Details provided at Lee Bernhard's talk this afternoon.</li></ul><ul><li>Definitely use Tcl_Objs if you are writing a new Tcl extension.</li></ul><ul><li>Tcl_Objs address some of the weaknesses of Tcl relative to C/C++.
-  <ul>
-  <li> Tcl_Objs are faster </li>
-  <li> Tcl_Objs work with binary data </li>
-  </ul>
-  But C/C++ is faster still and better for working with binary data.</li></ul><ul><li>When mixing C/C++ with Tcl/Tk the benefits of Tcl_Objs are
-  less important.  Using Tcl_Objs in this context may not be
-  worth the extra trouble.</li></ul><ul><li>This talk will focus on the string interface.</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Nickel Tour Of The Tcl API</h2>
-<p><p><b>Memory allocation functions</b></p>
-<center><table width="90%"><tr>
-<td width="32%" valign="top"><small><tt>
-  Tcl_Alloc<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_Free<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_Realloc<br>
-</tt></small></td>
-</table></center><p><b>Functions useful in the implementation of new  Tcl commands</b></p>
-<center><table width="90%"><tr>
-<td width="32%" valign="top"><small><tt>
-  Tcl_AppendElement<br>
-  Tcl_AppendResult<br>
-  Tcl_GetBoolean<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_GetDouble<br>
-  Tcl_GetInt<br>
-  Tcl_GetStringResult<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_ResetResult<br>
-  Tcl_SetResult<br>
-</tt></small></td>
-</table></center><p><b>Functions for controlling the Tcl interpreter</b></p>
-<center><table width="90%"><tr>
-<td width="32%" valign="top"><small><tt>
-  Tcl_CreateCommand<br>
-  Tcl_CreateInterp<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_CreateObjCommand<br>
-  Tcl_DeleteCommand<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_DeleteInterp<br>
-  Tcl_Exit<br>
-</tt></small></td>
-</table></center></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Nickel Tour Of The Tcl API</h2>
-<p><p><b>I/O functions</b></p>
-<center><table width="90%"><tr>
-<td width="32%" valign="top"><small><tt>
-  Tcl_Close<br>
-  Tcl_Eof<br>
-  Tcl_Flush<br>
-  Tcl_GetChannel<br>
-  Tcl_GetChannelMode<br>
-  Tcl_GetChannelName<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_Gets<br>
-  Tcl_OpenCommandChannel<br>
-  Tcl_OpenFileChannel<br>
-  Tcl_OpenTcpClient<br>
-  Tcl_OpenTcpServer<br>
-  Tcl_Read<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_Seek<br>
-  Tcl_Tell<br>
-  Tcl_Ungets<br>
-  Tcl_Write<br>
-  Tcl_WriteChars<br>
-</tt></small></td>
-</table></center><p><b>Names and meanings of system error codes</b></p>
-<center><table width="90%"><tr>
-<td width="32%" valign="top"><small><tt>
-  Tcl_ErrnoId<br>
-  Tcl_ErrnoMsg<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_GetErrno<br>
-  Tcl_SetErrno<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_SignalId<br>
-  Tcl_SignalMsg<br>
-</tt></small></td>
-</table></center></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Nickel Tour Of The Tcl API</h2>
-<p><p><b>General Operating System Calls</b></p>
-<center><table width="90%"><tr>
-<td width="32%" valign="top"><small><tt>
-  Tcl_Access<br>
-  Tcl_Chdir<br>
-  Tcl_GetCwd<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_GetHostName<br>
-  Tcl_GetNameOfExecutable<br>
-  Tcl_Sleep<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_Stat<br>
-</tt></small></td>
-</table></center><p><b>String Manipulation And Comparison</b></p>
-<center><table width="90%"><tr>
-<td width="32%" valign="top"><small><tt>
-  Tcl_Concat<br>
-  Tcl_Merge<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_SplitList<br>
-  Tcl_StringCaseMatch<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_StringMatch<br>
-</tt></small></td>
-</table></center><p><b>Dynamically Resizable Strings</b></p>
-<center><table width="90%"><tr>
-<td width="49%" valign="top"><small><tt>
-  Tcl_DStringAppend<br>
-  Tcl_DStringAppendElement<br>
-  Tcl_DStringEndSublist<br>
-  Tcl_DStringInit<br>
-  Tcl_DStringLength<br>
-</tt></small></td>
-<td width="49%" valign="top"><small><tt>
-  Tcl_DStringResult<br>
-  Tcl_DStringSetLength<br>
-  Tcl_DStringStartSublist<br>
-  Tcl_DStringValue<br>
-</tt></small></td>
-</table></center></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Nickel Tour Of The Tcl API</h2>
-<p><p><b>Event Handlers</b></p>
-<center><table width="90%"><tr>
-<td width="49%" valign="top"><small><tt>
-  Tcl_CancelIdleCall<br>
-  Tcl_CreateChannelHandler<br>
-  Tcl_CreateTimerHandler<br>
-  Tcl_DeleteChannelHandler<br>
-</tt></small></td>
-<td width="49%" valign="top"><small><tt>
-  Tcl_DeleteTimerHandler<br>
-  Tcl_DoOneEvent<br>
-  Tcl_DoWhenIdle<br>
-</tt></small></td>
-</table></center><p><b>Functions For Reading And Writing Tcl Variables</b></p>
-<center><table width="90%"><tr>
-<td width="32%" valign="top"><small><tt>
-  Tcl_GetVar<br>
-  Tcl_GetVar2<br>
-  Tcl_LinkVar<br>
-  Tcl_SetVar<br>
-  Tcl_SetVar2<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_TraceVar<br>
-  Tcl_TraceVar2<br>
-  Tcl_UnlinkVar<br>
-  Tcl_UnsetVar<br>
-  Tcl_UnsetVar2<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_UntraceVar<br>
-  Tcl_UntraceVar2<br>
-  Tcl_UpdateLinkedVar<br>
-</tt></small></td>
-</table></center><p><b>Functions For Executing Tcl Code</b></p>
-<center><table width="90%"><tr>
-<td width="32%" valign="top"><small><tt>
-  Tcl_Eval<br>
-  Tcl_EvalFile<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_EvalObj<br>
-  Tcl_GlobalEval<br>
-</tt></small></td>
-<td width="32%" valign="top"><small><tt>
-  Tcl_GlobalEvalObj<br>
-  Tcl_VarEval<br>
-</tt></small></td>
-</table></center></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Nickel Tour Of The Tcl API</h2>
-<p><p><b>Functions For Dealing With Unicode</b></p>
-<center><table width="90%"><tr>
-<td width="49%" valign="top"><small><tt>
-  Tcl_NumUtfChars<br>
-  Tcl_UniCharAtIndex<br>
-  Tcl_UniCharIsAlnum<br>
-  Tcl_UniCharIsAlpha<br>
-  Tcl_UniCharIsControl<br>
-  Tcl_UniCharIsDigit<br>
-  Tcl_UniCharIsGraph<br>
-  Tcl_UniCharIsLower<br>
-  Tcl_UniCharIsPrint<br>
-  Tcl_UniCharIsPunct<br>
-  Tcl_UniCharIsSpace<br>
-  Tcl_UniCharIsUpper<br>
-  Tcl_UniCharIsWordChar<br>
-  Tcl_UniCharLen<br>
-  Tcl_UniCharNcmp<br>
-  Tcl_UniCharToLower<br>
-  Tcl_UniCharToTitle<br>
-</tt></small></td>
-<td width="49%" valign="top"><small><tt>
-  Tcl_UniCharToUpper<br>
-  Tcl_UniCharToUtf<br>
-  Tcl_UniCharToUtfDString<br>
-  Tcl_UtfAtIndex<br>
-  Tcl_UtfBackslash<br>
-  Tcl_UtfCharComplete<br>
-  Tcl_UtfFindFirst<br>
-  Tcl_UtfFindLast<br>
-  Tcl_UtfNcasecmp<br>
-  Tcl_UtfNcmp<br>
-  Tcl_UtfNext<br>
-  Tcl_UtfPrev<br>
-  Tcl_UtfToLower<br>
-  Tcl_UtfToTitle<br>
-  Tcl_UtfToUniChar<br>
-  Tcl_UtfToUniCharDString<br>
-  Tcl_UtfToUpper<br>
-</tt></small></td>
-</table></center>
-  <p><b>Functions For Dealing With Tcl_Objs</b></p>
-  <blockquote><i>Too numerous to list...</i></blockquote></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Documentation Of The Tcl API</h2>
-<p><ul><li>Tcl comes with excellent man pages</li></ul><ul><li>"Use the source, Luke"</li></ul><ul><li>See <tt>tclDecl.h</tt> for a list of API functions</li></ul><ul><li>The header comments on the implementation of API functions usually
-  gives a good description of what the function does and how it should
-  be used.</li></ul><ul><li>Most API functions are used within Tcl and Tk.  Use grep to locate
-  examples.</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Initialization Scripts</h2>
-<p><ul><li>Run the mini TCLSH implemented above and execute the <tt>parray</tt> command</li></ul><ul><li>It doesn't work!  What's wrong? </p></li></li></ul><ul><li><tt>parray</tt> is really a Tcl proc that is read in when the
- interpreter is initialized. </p></li></li></ul><ul><li><tt>parray</tt> (and several other commands) are stored in a
-  handful of &quot;Initialization Scripts&quot; </p></li></li></ul><ul><li>All the initialization scripts are stored in the 
- &quot;Tcl Library&quot; - a directory on the host
- computer. </p></li></li></ul><table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>Invoke the Tcl_Init() function to locate and read the
- Tcl initialization scripts.</b></td></tr></table></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">The <tt>Tcl_Init()</tt> Function</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tcl.h><br>
-&nbsp;<br>
-static&nbsp;char&nbsp;zInputLoop[]&nbsp;=&nbsp;<br>
-&nbsp;&nbsp;/*&nbsp;Tcl&nbsp;code&nbsp;omitted...&nbsp;*/<br>
-;<br>
-&nbsp;<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;<br>
-&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_Init(interp);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Locate and read the initialization scripts</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;/*&nbsp;Call&nbsp;Tcl_CreateCommand()?&nbsp;*/<br>
-&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zInputLoop);<br>
-&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-<p><table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>But Tcl_Init() can fail. We need to check its return value...</b></td></tr></table>
-</p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">The <tt>Tcl_Init()</tt> Function</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tcl.h><br>
-&nbsp;<br>
-static&nbsp;char&nbsp;zInputLoop[]&nbsp;=&nbsp;<br>
-&nbsp;&nbsp;/*&nbsp;Tcl&nbsp;code&nbsp;omitted...&nbsp;*/<br>
-;<br>
-&nbsp;<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;<br>
-&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;if(&nbsp;Tcl_Init(interp)!=TCL_OK&nbsp;){<br>
-&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,"Tcl_Init()&nbsp;failed:&nbsp;¸üÿ¿P\8d\ 4\b\ 4\b",<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tcl_GetStringResult(interp));<br>
-&nbsp;&nbsp;}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Print error message if Tcl_Init() fails</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;/*&nbsp;Call&nbsp;Tcl_CreateCommand()?&nbsp;*/<br>
-&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zInputLoop);<br>
-&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-<p><table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>But now the program is not standalone.</b></td></tr></table>
-</p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">How <tt>Tcl_Init()</tt> Works</h2>
-<p><ul><li>Computes the value of variable <tt>tcl_libPath</tt>.</li></ul><ul><li>Invokes the procedure named &quot;<tt>tclInit</tt>&quot;</li></ul><ul><li>A default <tt>tclInit</tt> procedure is built into Tcl.
-  You can define an alternative <tt>tclInit</tt> procedure
-  prior to calling <tt>Tcl_Init()</tt>.</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">The Default <tt>initTcl</tt> Procedure</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>set&nbsp;errors&nbsp;{}<br>
-set&nbsp;dirs&nbsp;{}<br>
-if&nbsp;{[info&nbsp;exists&nbsp;tcl_library]}&nbsp;{<br>
-&nbsp;&nbsp;lappend&nbsp;dirs&nbsp;$tcl_library<br>
-}&nbsp;else&nbsp;{<br>
-&nbsp;&nbsp;if&nbsp;{[info&nbsp;exists&nbsp;env(TCL_LIBRARY)]}&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;lappend&nbsp;dirs&nbsp;$env(TCL_LIBRARY)<br>
-&nbsp;&nbsp;}<br>
-&nbsp;&nbsp;lappend&nbsp;dirs&nbsp;$tclDefaultLibrary<br>
-&nbsp;&nbsp;unset&nbsp;tclDefaultLibrary<br>
-&nbsp;&nbsp;set&nbsp;dirs&nbsp;[concat&nbsp;$dirs&nbsp;$tcl_libPath]<br>
-}<br>
-foreach&nbsp;i&nbsp;$dirs&nbsp;{<br>
-&nbsp;&nbsp;set&nbsp;tcl_library&nbsp;$i<br>
-&nbsp;&nbsp;set&nbsp;tclfile&nbsp;[file&nbsp;join&nbsp;$i&nbsp;init.tcl]<br>
-&nbsp;&nbsp;if&nbsp;{[file&nbsp;exists&nbsp;$tclfile]}&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;{![catch&nbsp;{uplevel&nbsp;#0&nbsp;[list&nbsp;source&nbsp;$tclfile]}&nbsp;msg]}&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return<br>
-&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;append&nbsp;errors&nbsp;"$tclfile:&nbsp;$msg\n$errorInfo\n"<br>
-&nbsp;&nbsp;&nbsp;&nbsp;}<br>
-&nbsp;&nbsp;}<br>
-}<br>
-error&nbsp;"Can't&nbsp;find&nbsp;a&nbsp;usable&nbsp;init.tcl&nbsp;..."</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">The Default Initialization Sequence</h2>
-<p><ul><li>The <tt>tclInit</tt> procedure locates and sources the <tt>init.tcl</tt>
-  script.  The directory that contains <tt>init.tcl</tt> is stored in
-  the <tt>tcl_library</tt> variable.</li></ul><ul><li>The <tt>init.tcl</tt> script creates an <tt>unknown</tt> procedure.
-  The <tt>unknown</tt> procedure will run whenever Tcl encounters an
-  unknown command.</li></ul><ul><li>The <tt>unknown</tt> procedure consults the file <tt>tclIndex</tt> in the
-  <tt>tcl_library</tt> directory to see if the command is defined by one of
-  the initialization scripts.</li></ul><ul><li>The <tt>unknown</tt> procedure sources any needed initialization scripts
-  and retries the command.</li></ul><table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>Commands defined in the initialization scripts are loaded
-  on demand.</b></td></tr></table></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Standalone Initialization Techniques</h2>
-<p><p><b>Manually execute all initialization scripts</b></p>
-<ul><li>Convert all initialization scripts into C strings and
-  put them in the executable.</li></ul><ul><li>Call <tt>Tcl_Eval()</tt> on each initialization script and omit the
-  call to <tt>Tcl_Init()</tt></li></ul><ul><li>Or, redefine <tt>tclInit</tt> so that it does not attempt to source
-  <tt>init.tcl</tt> then call <tt>Tcl_Eval()</tt> on each initialization
-  script after <tt>Tcl_Init()</tt> returns.</li></ul><table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>This approach is not recommended</b></td></tr></table></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Standalone Initialization Techniques</h2>
-<p><p><b>Redefining the builtin <tt>source</tt> command</b></p>
-<ul><li>Convert all initialization scripts into C strings and
-  put them in the executable.</li></ul><ul><li>Create a new <tt>source</tt> command that
-  calls <tt>Tcl_Eval()</tt> on the appropriate built-in string
-  instead of reading from the disk.</li></ul><ul><li>Read from disk if the named file is not one that is built in.</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Redefining <tt>source</tt></h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>static&nbsp;char&nbsp;zInitTcl[]&nbsp;=&nbsp;"...";<br>
-static&nbsp;char&nbsp;zParrayTcl[]&nbsp;=&nbsp;"...";</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Scripts <tt>init.tcl</tt> and <tt>parray.tcl</tt></td>
-</tr>
-<tr><td valign="center">
-<small><tt><br>
-int&nbsp;NewSourceCmd(TCLARGS){</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;if(&nbsp;!strcmp(argv[1],"/builtin/init.tcl")&nbsp;)<br>
-&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Tcl_Eval(interp,&nbsp;zInitTcl);<br>
-&nbsp;&nbsp;if(&nbsp;!strcmp(argv[1],"/builtin/parray.tcl")&nbsp;)<br>
-&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Tcl_Eval(interp,&nbsp;zParrayTcl);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Call <tt>Tcl_Eval()</tt> on builtin strings if the names match</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return&nbsp;Tcl_EvalFile(interp,&nbsp;argv[1]);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Call <tt>Tcl_EvalFile()</tt> if no match</td>
-</tr>
-<tr><td valign="center">
-<small><tt>}<br>
-&nbsp;<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;setenv("TCL_LIBRARY","/builtin");</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Causes <tt>tclInit</tt> to look for <tt>init.tcl</tt> in <tt>/builtin</tt></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_CreateCommand(interp,&nbsp;"source",<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NewSourceCmd,&nbsp;0,&nbsp;0);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Redefine <tt>source</tt></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_Init(interp);<br>
-&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zInputLoop);<br>
-&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Redefining <tt>source</tt></h2>
-<p><ul><li>This approach works for all versions of Tcl and Tk.</li></ul><ul><li>Also need to redefine the "<tt>file exists</tt>" Tcl command since it
-  too is used by <tt>tclInit</tt>.</li></ul><ul><li>To verify that the program is really standalone, remove the call
-  to <tt>Tcl_EvalFile()</tt>.</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Standalone Initialization Techniques</h2>
-<p><p><b>Use the <tt>Tcl</tt>*<tt>InsertProc()</tt> functions</b></p>
-<ul><li>Three routines that overload basic file I/O operations:
-  <ul>
-  <li> <tt>TclStatInsertProc()</tt> </li>
-  <li> <tt>TclAccessInsertProc()</tt> </li>
-  <li> <tt>TclOpenFileChannelInsertProc()</tt> </li>
-  </ul></li></ul><ul><li>Allows us to implement a virtual filesystem that overlays the
-  real filesystem.</li></ul><ul><li>The virtual filesystem contains all the initialization scripts
-  as compiled-in strings.  The initialization scripts look like
-  they are resident on disk even though they are built in.</li></ul><ul><li>These functions first appeared in Tcl8.0.3.  
-  Presumably to support TclPro Wrapper.</li></ul><ul><li>The only documentation is comments on the code. 
-  See the Tcl source file <tt>generic/tclIOUtil.c</tt></li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">The <tt>TclStatInsertProc()</tt> Function</h2>
-<p><ul><li>Sole argument is a pointer to a function whose interface is the
-  same as <tt>stat()</tt></li></ul><ul><li>Functions are stacked. Tcl tries each <tt>stat</tt> function on the
-  list, beginning with the most recently inserted, until one succeeds.</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">The <tt>TclStatInsertProc()</tt> Function</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tclInt.h></tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Rather than <tt>&lt;tcl.h&gt;</tt>!</td>
-</tr>
-<tr><td valign="center">
-<small><tt><br>
-static&nbsp;int<br>
-BltinFileStat(char&nbsp;*path,struct&nbsp;stat&nbsp;*buf){<br>
-&nbsp;&nbsp;char&nbsp;*zData;<br>
-&nbsp;&nbsp;int&nbsp;nData;</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;zData&nbsp;=&nbsp;FindBuiltinFile(path,&nbsp;0,&nbsp;&amp;nData);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Check if <tt>path</tt> is a builtin</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;if(&nbsp;zData==0&nbsp;){<br>
-&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;<br>
-&nbsp;&nbsp;}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Fail if <tt>path</tt> is not a builtin</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;memset(buf,&nbsp;0,&nbsp;sizeof(*buf));<br>
-&nbsp;&nbsp;buf->st_mode&nbsp;=&nbsp;0400;<br>
-&nbsp;&nbsp;buf->st_size&nbsp;=&nbsp;nData;</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return&nbsp;0;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Success if it is builtin</td>
-</tr>
-<tr><td valign="center">
-<small><tt>}<br>
-&nbsp;<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;TclStatInsertProc(BltinFileStat);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Register new <tt>stat</tt> function</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();<br>
-&nbsp;&nbsp;Tcl_Init(interp);<br>
-&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zInputLoop);<br>
-&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">The <tt>TclAccessInsertProc()</tt> Function</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tclInt.h></tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Rather than <tt>&lt;tcl.h&gt;</tt>!</td>
-</tr>
-<tr><td valign="center">
-<small><tt><br>
-/*&nbsp;BltinFileStat()&nbsp;not&nbsp;shown...&nbsp;*/<br>
-&nbsp;<br>
-static&nbsp;int<br>
-BltinFileAccess(char&nbsp;*path,&nbsp;int&nbsp;mode){<br>
-&nbsp;&nbsp;char&nbsp;*zData;</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;if(&nbsp;mode&nbsp;&amp;&nbsp;3&nbsp;)&nbsp;return&nbsp;-1;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">All builtins are read-only</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;zData&nbsp;=&nbsp;FindBuiltinFile(path,&nbsp;0,&nbsp;&amp;nData);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Check if <tt>path</tt> is a builtin</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;if(&nbsp;zData==0&nbsp;)&nbsp;return&nbsp;-1;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Fail if <tt>path</tt> is not a builtin</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return&nbsp;0;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Success if it is builtin</td>
-</tr>
-<tr><td valign="center">
-<small><tt>}<br>
-&nbsp;<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;TclStatInsertProc(BltinFileStat);<br>
-&nbsp;&nbsp;TclAccessInsertProc(BltinFileAccess);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Register new <tt>stat</tt> and <tt>access</tt> functions</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();<br>
-&nbsp;&nbsp;Tcl_Init(interp);<br>
-&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zInputLoop);<br>
-&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">The <tt>TclOpenFileChannelInsertProc()</tt> Function</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>static&nbsp;Tcl_Channel&nbsp;BuiltinFileOpen(<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp,&nbsp;&nbsp;&nbsp;/*&nbsp;The&nbsp;TCL&nbsp;interpreter&nbsp;doing&nbsp;the&nbsp;open&nbsp;*/<br>
-&nbsp;&nbsp;char&nbsp;*zFilename,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Name&nbsp;of&nbsp;the&nbsp;file&nbsp;to&nbsp;open&nbsp;*/<br>
-&nbsp;&nbsp;char&nbsp;*modeString,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Mode&nbsp;string&nbsp;for&nbsp;the&nbsp;open&nbsp;(ignored)&nbsp;*/<br>
-&nbsp;&nbsp;int&nbsp;permissions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Permissions&nbsp;for&nbsp;a&nbsp;newly&nbsp;created&nbsp;file&nbsp;(ignored)&nbsp;*/<br>
-){<br>
-&nbsp;&nbsp;char&nbsp;*zData;<br>
-&nbsp;&nbsp;BuiltinFileStruct&nbsp;*p;<br>
-&nbsp;&nbsp;int&nbsp;nData;<br>
-&nbsp;&nbsp;char&nbsp;zName[50];<br>
-&nbsp;&nbsp;Tcl_Channel&nbsp;chan;<br>
-&nbsp;&nbsp;static&nbsp;int&nbsp;count&nbsp;=&nbsp;1;<br>
-&nbsp;<br>
-&nbsp;&nbsp;zData&nbsp;=&nbsp;FindBuiltinFile(zFilename,&nbsp;1,&nbsp;&amp;nData);<br>
-&nbsp;&nbsp;if(&nbsp;zData==0&nbsp;)&nbsp;return&nbsp;NULL;<br>
-&nbsp;&nbsp;p&nbsp;=&nbsp;(BuiltinFileStruct*)Tcl_Alloc(&nbsp;sizeof(BuiltinFileStruct)&nbsp;);<br>
-&nbsp;&nbsp;if(&nbsp;p==0&nbsp;)&nbsp;return&nbsp;NULL;<br>
-&nbsp;&nbsp;p->zData&nbsp;=&nbsp;zData;<br>
-&nbsp;&nbsp;p->nData&nbsp;=&nbsp;nData;<br>
-&nbsp;&nbsp;p->cursor&nbsp;=&nbsp;0;<br>
-&nbsp;&nbsp;sprintf(zName,"etbi_bffffc7c_8049b04",((int)BuiltinFileOpen)>>12,count++);<br>
-&nbsp;&nbsp;chan&nbsp;=&nbsp;Tcl_CreateChannel(&amp;builtinChannelType,&nbsp;zName,&nbsp;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ClientData)p,&nbsp;TCL_READABLE);<br>
-&nbsp;&nbsp;return&nbsp;chan;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">The <tt>TclOpenFileChannelInsertProc()</tt> Function</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>static&nbsp;Tcl_ChannelType&nbsp;builtinChannelType&nbsp;=&nbsp;{<br>
-&nbsp;&nbsp;"builtin",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Type&nbsp;name.&nbsp;*/<br>
-&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Always&nbsp;non-blocking.*/<br>
-&nbsp;&nbsp;BuiltinFileClose,&nbsp;&nbsp;&nbsp;/*&nbsp;Close&nbsp;proc.&nbsp;*/<br>
-&nbsp;&nbsp;BuiltinFileInput,&nbsp;&nbsp;&nbsp;/*&nbsp;Input&nbsp;proc.&nbsp;*/<br>
-&nbsp;&nbsp;BuiltinFileOutput,&nbsp;&nbsp;/*&nbsp;Output&nbsp;proc.&nbsp;*/<br>
-&nbsp;&nbsp;BuiltinFileSeek,&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Seek&nbsp;proc.&nbsp;*/<br>
-&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Set&nbsp;option&nbsp;proc.&nbsp;*/<br>
-&nbsp;&nbsp;NULL,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Get&nbsp;option&nbsp;proc.&nbsp;*/<br>
-&nbsp;&nbsp;BuiltinFileWatch,&nbsp;&nbsp;&nbsp;/*&nbsp;Watch&nbsp;for&nbsp;events&nbsp;on&nbsp;console.&nbsp;*/<br>
-&nbsp;&nbsp;BuiltinFileHandle,&nbsp;&nbsp;/*&nbsp;Get&nbsp;a&nbsp;handle&nbsp;from&nbsp;the&nbsp;device.&nbsp;*/<br>
-};</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-<p>
-  <p>For additional information see:</p>
-  <ul>
-  <li>The man page for <tt>Tcl_CreateChannel()</tt></li>
-  <li>Tk source code file <tt>generic/tkConsole.c</tt></li>
-  </ul>
-</p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Initializing Tk</h2>
-<p><ul><li>All the same initialization script issues as Tcl</li></ul><ul><li>Tk initialization scripts are in a different directory
-  than the Tcl initialization scripts - the "Tk Library"</li></ul><ul><li>Call <tt>Tk_Init()</tt> after <tt>Tcl_Init()</tt></li></ul><ul><li>Must have an event loop or Tk will not work!</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Implementing An Event Loop</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>button&nbsp;.b&nbsp;-text&nbsp;Hello&nbsp;-command&nbsp;exit<br>
-pack&nbsp;.b</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Create a Tk interface</td>
-</tr>
-<tr><td valign="center">
-<small><tt><br>
-</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>bind&nbsp;.&nbsp;&lt;Destroy>&nbsp;{<br>
-&nbsp;&nbsp;if&nbsp;{![winfo&nbsp;exists&nbsp;.]}&nbsp;exit<br>
-}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Close the application when the main window
-  is destroyed</td>
-</tr>
-<tr><td valign="center">
-<small><tt><br>
-</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>while&nbsp;1&nbsp;{vwait&nbsp;forever}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">The event loop</td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">"Hello, World!" Using Tk</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tk.h><br>
-&nbsp;<br>
-</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>static&nbsp;char&nbsp;zHello[]&nbsp;=&nbsp;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">The application code</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;"button&nbsp;.b&nbsp;"<br>
-&nbsp;&nbsp;&nbsp;&nbsp;"-text&nbsp;{Hello,&nbsp;World}&nbsp;"<br>
-&nbsp;&nbsp;&nbsp;&nbsp;"-command&nbsp;exit\n"<br>
-&nbsp;&nbsp;"pack&nbsp;.b\n";<br>
-&nbsp;<br>
-</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>static&nbsp;char&nbsp;zEventLoop[]&nbsp;=</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">The event loop</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;"bind&nbsp;.&nbsp;&lt;Destroy>&nbsp;{\n"<br>
-&nbsp;&nbsp;"&nbsp;&nbsp;if&nbsp;{![winfo&nbsp;exists&nbsp;.]}&nbsp;exit\n"<br>
-&nbsp;&nbsp;"}\n"<br>
-&nbsp;&nbsp;"while&nbsp;1&nbsp;{vwait&nbsp;forever}\n";<br>
-&nbsp;<br>
-<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;Tcl_Interp&nbsp;*interp;<br>
-&nbsp;&nbsp;interp&nbsp;=&nbsp;Tcl_CreateInterp();</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_Init(interp);<br>
-&nbsp;&nbsp;Tk_Init(interp);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">We really should check the return values of the init functions...</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zHello);</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_Eval(interp,&nbsp;zEventLoop);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">The event loop never returns</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;/*NOTREACHED*/<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Compiling "Hello, World!" For Tk</h2>
-<p><p><b>Unix:</b></p>
-  <blockquote><pre>
-  $ gcc hello.c -ltk -L/usr/X11R6/lib \ 
-        -lX11 -ltcl -lm -ldl
-  $ ./a.out</pre></blockquote>
-
-  <p><b>Windows using Cygwin:</b></p>
-  <blockquote><pre>
-  C:> gcc hello.c -mwindows -ltk80 -ltcl80 -lm
-  C:> a.exe</pre></blockquote>
-
-  <p><b>Windows using Mingw32:</b></p>
-  <blockquote><pre>
-  C:> gcc -mno-cygwin hello.c -mwindows \ 
-           -ltk82 -ltcl82 -lm
-  C:> a.exe</pre></blockquote></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Making The Program Standalone</h2>
-<p><p>To make a Tcl application standalone you have to convert the following
-     initialization scripts to C strings and compile them into the
-     executable:</p>
-  <table><tr>
-  <td valign="top"><tt>
-    &nbsp;&nbsp;auto.tcl<br>
-    &nbsp;&nbsp;history.tcl<br>
-    &nbsp;&nbsp;init.tcl
-  </tt></td>
-  <td valign="top"><tt>
-    &nbsp;&nbsp;ldAout.tcl<br>
-    &nbsp;&nbsp;package.tcl
-  </tt></td>
-  <td valign="top"><tt>
-    &nbsp;&nbsp;parray.tcl<br>
-    &nbsp;&nbsp;safe.tcl
-  </tt></td>
-  <td valign="top"><tt>
-    &nbsp;&nbsp;tclIndex<br>
-    &nbsp;&nbsp;word.tcl
-  </tt></td>
-  </tr></table>
-
-  <p>To make a Tk application standalone requires these additional
-     initialization scripts from the Tk Library:</p>
-  <table><tr>
-  <td valign="top"><tt>
-    &nbsp;&nbsp;bgerror.tcl<br>
-    &nbsp;&nbsp;button.tcl<br>
-    &nbsp;&nbsp;clrpick.tcl<br>
-    &nbsp;&nbsp;comdlg.tcl<br>
-    &nbsp;&nbsp;console.tcl<br>
-    &nbsp;&nbsp;dialog.tcl
-  </tt></td>
-  <td valign="top"><tt>
-    &nbsp;&nbsp;entry.tcl<br>
-    &nbsp;&nbsp;focus.tcl<br>
-    &nbsp;&nbsp;listbox.tcl<br>
-    &nbsp;&nbsp;menu.tcl<br>
-    &nbsp;&nbsp;msgbox.tcl<br>
-    &nbsp;&nbsp;optMenu.tcl
-  </tt></td>
-  <td valign="top"><tt>
-    &nbsp;&nbsp;palette.tcl<br>
-    &nbsp;&nbsp;safetk.tcl<br>
-    &nbsp;&nbsp;scale.tcl<br>
-    &nbsp;&nbsp;scrlbar.tcl<br>
-    &nbsp;&nbsp;tclIndex<br>
-    &nbsp;&nbsp;tearoff.tcl
-  </tt></td>
-  <td valign="top"><tt>
-    &nbsp;&nbsp;text.tcl<br>
-    &nbsp;&nbsp;tk.tcl<br>
-    &nbsp;&nbsp;tkfbox.tcl<br>
-    &nbsp;&nbsp;xmfbox.tcl
-  </tt></td>
-  </tr></table>
-
-  <p>Total of about 13K lines and 400K bytes of text or 9K lines and
-     250K bytes if you strip comments and leading spaces</p></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">A Review Of The Features We Want</h2>
-<p><ol type="A">
-  <li value="1">
-  Combine C/C++ with Tcl/Tk into a single executable.</dd>
-  </li></ol>
-
-  <ol type="A">
-  <li value="2">
-  The executable should be standalone.  It must not depend
-  on files not normally found on the system.
-  </li></ol>
-
-  <ol type="A">
-  <li value="3">
-  It should be difficult for end users to alter the program
-  (and introduce bugs).
-  </li></ol></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Available Programming Aids</h2>
-<p><p>Several tools are available.  The chart below shows which tools
- help achieve which objectives.</p>
-
- <center><table border="2">
- <tr>
-   <td></td>
-   <td colspan="3" align="center">
-      <b>Features The Tool Helps To Achieve</b></td>
- </tr>
- <tr>
-   <td align="center"><b>Tool Name</b></td>
-   <td align="center">Mix C and Tcl</td>
-   <td align="center">Standalone</td>
-   <td align="center">Hide Source</td>
- </tr>
- <tr>
-   <td>SWIG</td>
-   <td align="center"><img src="image6"></td>
-   <td>&nbsp;</td>
-   <td>&nbsp;</td>
- </tr>
- <tr>
-   <td>TclPro Wrapper</td>
-   <td>&nbsp;</td>
-   <td align="center"><img src="image6"></td>
-   <td align="center"><img src="image6"></td>
- </tr>
- <tr>
-   <td>FreeWrap</td>
-   <td>&nbsp;</td>
-   <td align="center"><img src="image6"></td>
-   <td align="center"><img src="image6"></td>
- </tr>
- <tr>
-   <td>Wrap</td>
-   <td>&nbsp;</td>
-   <td align="center"><img src="image6"></td>
-   <td>&nbsp;</td>
- </tr>
- <tr>
-   <td>mktclapp</td>
-   <td align="center"><img src="image6"></td>
-   <td align="center"><img src="image6"></td>
-   <td align="center"><img src="image6"></td>
- </tr>
- </table></center></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">SWIG</h2>
-<table><tr><td valign="top"><img src="image7"></td>
-<td valign="top"><p><ul><li>Creates an interface between an existing C/C++ library and a high-level
-  programming language.  Support for:
-  <ul>
-  <li> Tcl/Tk </li>
-  <li> Perl </li>
-  <li> Python </li>
-  <li> Java </li>
-  <li> Eiffel </li>
-  <li> Guile </li>
-  </ul></li></ul><ul><li>No changes required to C/C++ code.  Can be used with legacy libraries.</li></ul><ul><li>Generates an extension, not a standalone binary</li></ul><ul><li>The tutorial on SWIG was yesterday afternoon.</li></ul><ul><li>http://www.swig.org/</li></ul></p></td></tr></table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Wrapper Programs</h2>
-<table><tr><td valign="top"><img src="image8"></td>
-<td valign="top"><p><ul><li>Convert a pure Tcl/Tk program into a standalone binary</li></ul><ul><li>Several wrapper programs are available:
-  <ul>
-  <li> TclPro Wrapper - http://www.scriptics.com/ </li>
-  <li> FreeWrap - http://www.albany.net/~dlabelle/freewrap/freewrap.html </li>
-  <li> Wrap - http://members1.chello.nl/~j.nijtmans/wrap.html </li>
-  </ul></li></ul><ul><li>No C compiler required!</li></ul><ul><li>TclPro will convert Tcl script into bytecode so that it cannot be
-  easily read by the end user.  FreeWrap encrypts the scripts.</li></ul><ul><li>FreeWrap uses compression on its executable. 
-  Wrap uses compression on both the executable and on the bundled script files.</li></ul><ul><li>Usually include extensions like winico and/or BLT</li></ul></p></td></tr></table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">mktclapp</h2>
-<table><tr><td valign="top"><img src="image9"></td>
-<td valign="top"><p><ul><li>Mix C/C++ with Tcl/Tk into a standalone binary</li></ul>
-<ul><li><tt>mktclapp</tt> generates an application initialization file
-  that contains Tcl scripts as strings and makes all necessary calls 
-  to <tt>Tcl_Init</tt>, <tt>Tcl_CreateCommand</tt>, 
-  <tt>Tcl</tt>*<tt>InsertProc</tt>, etc.</li></ul><ul><li>Features to make it easier to write new Tcl command in C</li></ul><ul><li><tt>xmktclapp.tcl</tt> provides a GUI interface to <tt>mktclapp</tt></li></ul><ul><li>http://www.hwaci.com/sw/mktclapp/</li></ul></p></td></tr></table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">"Hello, World!" Using Mktclapp</h2>
-<p><ul><li>Download <tt>mktclapp.c</tt> and <tt>xmktclapp.tcl</tt> from
-  http://www.hwaci.com/sw/mktclapp/</li></ul><ul><li>Compile <tt>mktclapp</tt>:
-  <blockquote><pre>
-  cc -o mktclapp mktclapp.c
-  </pre></blockquote></li></ul><ul><li>Create "Hello, World!" as a Tcl script in file <tt>hw.tcl</tt>:
-  <blockquote><pre>
-  button .b -text {Hello, World!} -command exit
-  pack .b
-  </pre></blockquote></li></ul><ul><li>Launch xmktclapp:
-  <blockquote><pre>
-  wish xmktclapp.tcl
-  </pre></blockquote></li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">"Hello, World!" Using Mktclapp</h2>
-<table width="100%"><tr><td valign="top"><p><ul><li>Set "Command Line Input?" to "None"</li></ul><ul><li>Set "Standalone?" to "Yes"</li></ul><ul><li>Enter "<tt>hw.mta</tt>" for the Configuration File</li></ul><ul><li>Enter "<tt>hw.c</tt>" for the Output C File</li></ul></p></td>
-<td valign="top" align="right"><img src="image10"></td></tr></table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">"Hello, World!" Using Mktclapp</h2>
-<table width="100%"><tr><td valign="top"><p><ul><li>Go to the "Tcl Scripts" page</li></ul><ul><li>Press "Insert" and add <tt>hw.tcl</tt> to the list of
-  Tcl scripts</li></ul><ul><li>Change the "Startup Script" to be <tt>hw.tcl</tt>.</li></ul><ul><li>Select File/Build and File/Exit</li></ul></p></td>
-<td valign="top" align="right"><img src="image11"></td></tr></table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">"Hello, World!" Using Mktclapp</h2>
-<p><ul><li>Mktclapp generates <tt>hw.c</tt>.
-  Compile it something like this:
-  <pre>
-  cc hw.c -ltk -L/usr/X11R6/lib -lX11 -ltcl -lm -ldl
-  </pre></li></ul><ul><li>Or, if using Cygwin:
-  <pre>
-  gcc hw.c -mwindows -ltk80 -ltcl80 -lm
-  </pre></li></ul><ul><li>Or, if using Mingw32:
-  <pre>
-  gcc -mno-cygwin hw.c -mwindows -ltk82 -ltcl82 -lm
-  </pre></li></ul><ul><li>And you're done!</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Adding C Code To Your Program</h2>
-<p>Put the new C code in a new source file named "<tt>add.c</tt>"</p><p>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;"hw.h"</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Generated by mktclapp</td>
-</tr>
-<tr><td valign="center">
-<small><tt></tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>int&nbsp;ET_COMMAND_add(ET_TCLARGS){</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><tt>ET_TCLARGS</tt> is a macro defined in <tt>hw.h</tt></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;int&nbsp;a,&nbsp;b;<br>
-&nbsp;&nbsp;char&nbsp;zResult[30];<br>
-&nbsp;&nbsp;a&nbsp;=&nbsp;atoi(argv[1]);<br>
-&nbsp;&nbsp;b&nbsp;=&nbsp;atoi(argv[2]);<br>
-&nbsp;&nbsp;sprintf(zResult,&nbsp;"-1073742724",&nbsp;a+b);<br>
-&nbsp;&nbsp;Tcl_SetResult(interp,&nbsp;zResult,&nbsp;TCL_VOLATILE);<br>
-&nbsp;&nbsp;return&nbsp;TCL_OK;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Adding C Code To Your Program</h2>
-<table width="100%"><tr><td valign="top"><p><ul><li>Go to the "C/C++ Modules" page of xmktclapp.tcl</li></ul>
-<ul><li>Press "Insert" and add <tt>add.c</tt> to the list of
-  C/C++ modules</p></li></ul></li></ul><ul><li>Select File/Build and File/Exit</li></ul></p></td>
-<td valign="top" align="right"><img src="image12"></td></tr></table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Adding C Code To Your Program</h2>
-<p><ul><li>Compile as follows:
-  <pre>
-  cc add.c hw.c -ltk -L/usr/X11R6/lib -ltcl -lm -ldl
-  </pre></li></ul><ul><li>Or construct a Makefile that compiles <tt>add.c</tt> into <tt>add.o</tt>
-  and <tt>hw.c</tt> into <tt>hw.o</tt> and then links them.</li></ul><ul><li>Compile the same way for Windows except use the usual Windows
-  libraries and options...</li></ul><table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>Don't have to worry with <tt>Tcl_CreateCommand()</tt> - Mktclapp takes
-  care of that automatically.</b></td></tr></table></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Checking Parameters In The <tt>add</tt> Command</h2>
-<p>Modify <tt>add.c</tt> to insure the <tt>add</tt> command
-  is called with exactly two integer arguments</p><p>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;"hw.h"<br>
-&nbsp;<br>
-int&nbsp;ET_COMMAND_add(ET_TCLARGS){<br>
-&nbsp;&nbsp;int&nbsp;a,&nbsp;b;<br>
-&nbsp;&nbsp;char&nbsp;zResult[30];</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;if(&nbsp;argc!=3&nbsp;){<br>
-&nbsp;&nbsp;&nbsp;&nbsp;Tcl_AppendResult(interp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"wrong&nbsp;#&nbsp;args:&nbsp;should&nbsp;be:&nbsp;\"",<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argv[0],&nbsp;"&nbsp;VALUE&nbsp;VALUE\"",&nbsp;0);<br>
-&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TCL_ERROR;<br>
-&nbsp;&nbsp;}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Report an error if there are not exactly
-  2 arguments</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;if(&nbsp;Tcl_GetInt(interp,&nbsp;argv[1],&nbsp;&amp;a)!=TCL_OK&nbsp;){<br>
-&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TCL_ERROR;<br>
-&nbsp;&nbsp;}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Report an error if the first argument is
-  not an integer</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;if(&nbsp;Tcl_GetInt(interp,&nbsp;argv[2],&nbsp;&amp;b)!=TCL_OK&nbsp;){<br>
-&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TCL_ERROR;<br>
-&nbsp;&nbsp;}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Do the same for the second argument</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;sprintf(zResult,&nbsp;"-1073742724",&nbsp;a+b);<br>
-&nbsp;&nbsp;Tcl_SetResult(interp,&nbsp;zResult,&nbsp;TCL_VOLATILE);<br>
-&nbsp;&nbsp;return&nbsp;TCL_OK;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Using The Tcl_Obj Interface</h2>
-<p>In the file <tt>objadd.c</tt> put this code:</p><p>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;"hw.h"</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt><br>
-int&nbsp;ET_OBJCOMMAND_add2(ET_OBJARGS){<br>
-&nbsp;&nbsp;int&nbsp;a,&nbsp;b;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Use "<tt>ET_OBJCOMMAND</tt>" instead of "<tt>ET_COMMAND</tt>" and
-  "<tt>ET_OBJARGS</tt>" instead of "<tt>ET_TCLARGS</tt>"</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;if(&nbsp;objc!=3&nbsp;){<br>
-&nbsp;&nbsp;&nbsp;&nbsp;Tcl_WrongNumArgs(interp,&nbsp;1,&nbsp;objv,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"number&nbsp;number");<br>
-&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TCL_ERROR;<br>
-&nbsp;&nbsp;}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">A special routine for "wrong # args" error</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;if(&nbsp;Tcl_GetIntFromObj(interp,&nbsp;objv[1],&nbsp;&amp;a)&nbsp;){</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Instead of <tt>Tcl_GetInt</tt></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TCL_ERROR;<br>
-&nbsp;&nbsp;}<br>
-&nbsp;&nbsp;if(&nbsp;Tcl_GetIntFromObj(interp,&nbsp;objv[2],&nbsp;&amp;b)&nbsp;){<br>
-&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TCL_ERROR;<br>
-&nbsp;&nbsp;}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_SetIntObj(Tcl_GetObjResult(interp),&nbsp;a+b);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Result stored as integer, not a string</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return&nbsp;TCL_OK;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Speed Of Tcl_Obj Versus "char*"  Interfaces</h2>
-<p><ul><li>Compile both <tt>add</tt> and <tt>add2</tt> into the same executable.</li></ul><ul><li>Compare their speeds:
-  <pre>
-   time {add 123456 654321} 10000
-  <font color="blue">26 microseconds per iteration</font>
-   time {add2 123456 654321} 10000
-  <font color="blue">4 microseconds per iteration</font>
-  </pre></li></ul><ul><li>The Tcl_Obj version is 650 faster!</li></ul><ul><li>Replace the addition with a "real" computation that takes
-  10 milliseconds.</li></ul><ul><li>Now the Tcl_Obj version is only 0.2 faster!</li></ul><table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>In many real-world problems, the Tcl_Obj interface has no noticeable
-  speed advantage over the string interface.</b></td></tr></table></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">More About Built-in Tcl Scripts</h2>
-<table><tr><td valign="top"><img src="image11"></td>
-<td valign="top"><p><ul><li>Comments and leading white-space are removed from the
-  script by default.  Use the "Don't Strip Comments"
-  button to change this.</li></ul><ul><li>The file name must exactly match the name that is
-  used by the <tt>source</tt> command.</li></ul></p></td></tr></table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Locations Of Libraries</h2>
-<table><tr><td valign="top"><img src="image13"></td>
-<td valign="top"><p><ul><li>Tells mktclapp where to look for script libraries.</li></ul><ul><li>All Tcl scripts in the indicated directories are
-  compiled into the <tt>appinit.c</tt> file.</li></ul><ul><li>Comments and extra white-space are removed. 
-  There is no way to turn this off.</li></ul></p></td></tr></table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Built-in Binary Data Files</h2>
-<table><tr><td valign="top"><img src="image14"></td>
-<td valign="top"><p><ul><li>Arbitrary files become part of the virtual filesystem</li></ul><ul><li>No comment or white-space removal is attempted</li></ul><ul><li>Useful for images or other binary data</li></ul></p></td></tr></table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">New Commands In Namespaces</h2>
-<p>Two underscores (__)  are replaced by two colons (::) in
-  command names, thus giving the ability to define new commands
-  in a namespace</p><p>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;hw.h></tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt><br>
-int&nbsp;ET_COMMAND_adder__add(ET_TCLARGS){<br>
-&nbsp;&nbsp;int&nbsp;a,&nbsp;b;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Creates the Tcl command called "<tt>adder::add</tt>"</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;char&nbsp;*zResult[30];<br>
-&nbsp;&nbsp;if(&nbsp;argc!=3&nbsp;){<br>
-&nbsp;&nbsp;&nbsp;&nbsp;Tcl_AppendResult(interp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"wrong&nbsp;#&nbsp;args:&nbsp;should&nbsp;be:&nbsp;\"",<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argv[0],&nbsp;"&nbsp;VALUE&nbsp;VALUE\"",&nbsp;0);<br>
-&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TCL_ERROR;<br>
-&nbsp;&nbsp;}<br>
-&nbsp;&nbsp;if(&nbsp;Tcl_GetInt(interp,&nbsp;argv[1],&nbsp;&amp;a)!=TCL_OK&nbsp;){<br>
-&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TCL_ERROR;<br>
-&nbsp;&nbsp;}<br>
-&nbsp;&nbsp;if(&nbsp;Tcl_GetInt(interp,&nbsp;argv[1],&nbsp;&amp;b)!=TCL_OK&nbsp;){<br>
-&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TCL_ERROR;<br>
-&nbsp;&nbsp;}<br>
-&nbsp;&nbsp;sprintf(zResult,&nbsp;"-1073742724",&nbsp;a+b);<br>
-&nbsp;&nbsp;Tcl_SetResult(interp,&nbsp;zResult,&nbsp;TCL_VOLATILE);<br>
-&nbsp;&nbsp;return&nbsp;TCL_OK;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Adding Your Own <tt>main()</tt></h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;/*&nbsp;Application&nbsp;specific&nbsp;initialization&nbsp;*/</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Et_Init(argc,&nbsp;argv);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Never returns!</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;/*NOTREACHED*/<br>
-&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-<p><table><tr><td valign="top"><img src="image3"></td>
-<td valign="top"><b>The "Autofork" feature is disabled if you supply your own <tt>main()</tt></b></td></tr></table>
-</p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Initializing The Tcl Interpreter</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tcl.h><br>
-&nbsp;<br>
-int&nbsp;counter&nbsp;=&nbsp;0;<br>
-&nbsp;<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){<br>
-&nbsp;&nbsp;&nbsp;Et_Init(argc,&nbsp;argv);<br>
-&nbsp;&nbsp;&nbsp;/*NOTREACHED*/<br>
-&nbsp;&nbsp;&nbsp;return&nbsp;0;<br>
-}<br>
-&nbsp;<br>
-int&nbsp;Et_AppInit(Tcl_Interp&nbsp;*interp){</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;if(&nbsp;Blt_Init(Interp)&nbsp;){<br>
-&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TCL_ERROR;<br>
-&nbsp;&nbsp;}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Example: Initialize an extension</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Tcl_LinkVar(interp,&nbsp;"counter",&nbsp;&amp;counter,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCL_LINK_INT);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Or link a C variable to a Tcl variable</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return&nbsp;TCL_OK;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Return TCL_OK if successful</td>
-</tr>
-<tr><td valign="center">
-<small><tt>}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Writing Your Own Event Loop</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tcl.h><br>
-</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>void&nbsp;Et_CustomMainLoop(Tcl_Interp&nbsp;*interp){</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Replaces the default event loop</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;return;</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Ex: Return without handling any events.</td>
-</tr>
-<tr><td valign="center">
-<small><tt>}<br>
-&nbsp;<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Et_Init(argc,&nbsp;argv);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">This now returns after initializing Tcl</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;/*&nbsp;Application&nbsp;code&nbsp;here&nbsp;*/<br>
-&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Writing Your Own Event Loop</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;&lt;tcl.h><br>
-&nbsp;<br>
-void&nbsp;Et_CustomMainLoop(Tcl_Interp&nbsp;*interp){</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;for(;;){<br>
-&nbsp;&nbsp;&nbsp;&nbsp;Tcl_DoOneEvent(TCL_ALL_EVENTS|TCL_DONT_WAIT);<br>
-&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Other&nbsp;processing...&nbsp;*/<br>
-&nbsp;&nbsp;}</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Intermix processing and event handling</td>
-</tr>
-<tr><td valign="center">
-<small><tt>}<br>
-&nbsp;<br>
-int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;**argv){</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;Et_Init(argc,&nbsp;argv);</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Never returns</td>
-</tr>
-<tr><td valign="center">
-<small><tt>&nbsp;&nbsp;/*NOTREACHED*/<br>
-&nbsp;&nbsp;return&nbsp;0;<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Mktclapp Initialization Sequence</h2>
-<p><ul><li>Initialization starts when the <tt>Et_Init()</tt> 
-  function is called either by client code or by
-  the <tt>main()</tt> that mktclapp generates</li></ul><ul><li>Create the main Tcl interpreter</li></ul><ul><li>Construct the virtual filesystem overlay by redefining
-  the <tt>source</tt> command and by using the 
-  <tt>Tcl</tt>*<tt>InsertProc()</tt> functions</li></ul><ul><li>Call <tt>Et_PreInit()</tt> if the client defines it</li></ul><ul><li>Call <tt>Tcl_Init()</tt> and <tt>Tk_Init()</tt></li></ul><ul><li>Call <tt>Tcl_CreateCommand()</tt> and <tt>Tcl_CreateObjCommand()</tt>
-  for every <tt>ET_COMMAND_</tt>* and <tt>ET_OBJCOMMAND_</tt>* function
-  in the client code</li></ul><ul><li>Call <tt>Et_AppInit()</tt> if the client defines it</li></ul><ul><li>Run the main Tcl script if there is one</li></ul><ul><li>Call <tt>Et_CustomMainLoop()</tt> if defined by client code or
-  else run the built-in event loop</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Invoking Tcl From C</h2>
-<p><ul><li>Use one of the built-in evaluation functions:
-  <center><table width="80%">
-  <tr><td valign="top" width="50%"><ul>
-     <li> Tcl_Eval() </li>
-     <li> Tcl_VarEval() </li>
-     <li> Tcl_EvalFile() </li>
-     <li> Tcl_GlobalEval() </li>
-     </ul></td>
-  <td valign="top" width="50%"><ul>
-     <li> Tcl_EvalObj() </li>
-     <li> Tcl_GlobalEvalObj() </li>
-   </ul></td></tr>
-  </table></center></li></ul><ul><li>Mktclapp provides evaluation functions with variable argument
-  lists as in <tt>printf()</tt>:
-  <ul>
-  <li> Et_EvalF() </li>
-  <li> Et_GlobalEvalF() </li>
-  </ul></li></ul><ul><li>Mktclapp provides a global variable <tt>Et_Interp</tt> which is
-  a pointer to the main interpreter</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Invoking Tcl From C</h2>
-<p>Example:  A C function that pops up an error message dialog box</p><p>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;"appinit.h"<br>
-&nbsp;<br>
-void&nbsp;ErrMsg(char&nbsp;*zMsg){<br>
-&nbsp;&nbsp;Tcl_SetVar(Et_Interp,&nbsp;"zMsg",&nbsp;zMsg,&nbsp;TCL_GLOBAL_ONLY);<br>
-&nbsp;&nbsp;Tcl_GlobalEval(Et_Interp,&nbsp;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;"tk_messageBox&nbsp;-icon&nbsp;error&nbsp;-msg&nbsp;$zMsg&nbsp;-type&nbsp;ok");<br>
-&nbsp;&nbsp;Tcl_UnsetVar(Et_Interp,&nbsp;"zMsg",&nbsp;TCL_GLOBAL_ONLY);<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Invoking Tcl From C</h2>
-<p>The same C function implemented using <tt>Et_EvalF()</tt> instead
-  of <tt>Tcl_GlobalEval()</tt></p><p>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;"appinit.h"<br>
-&nbsp;<br>
-void&nbsp;ErrMsg(char&nbsp;*zMsg){<br>
-&nbsp;&nbsp;Et_EvalF(Et_Interp,&nbsp;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;"tk_messageBox&nbsp;-icon&nbsp;error&nbsp;-msg&nbsp;{¸üÿ¿P\8d\ 4\b\ 4\b}&nbsp;-type&nbsp;ok",<br>
-&nbsp;&nbsp;&nbsp;&nbsp;zMsg);<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-<p>
-  <ul><li>
-  Suppose the function is called as follows:
-  <blockquote>
-    <tt>ErrMsg("Syntax error near \"}\"");</tt>
-  </blockquote>
-  </li></ul>
-
-  <ul><li>
-  The command that gets executed is:
-  <pre>
-    tk_messageBox -icon error -msg \ 
-        {Syntax error near "}"} -type ok
-  </pre>
-  </li></ul>
-
-  <ul><li>
-  But this is an ill-formed Tcl command!
-  </li></ul>
-</p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Invoking Tcl From C</h2>
-<p>Use the "<tt></tt>" format to generate a quoted string</p><p>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#include&nbsp;"appinit.h"<br>
-&nbsp;<br>
-void&nbsp;ErrMsg(char&nbsp;*zMsg){<br>
-&nbsp;&nbsp;Et_EvalF(Et_Interp,&nbsp;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;"tk_messageBox&nbsp;-icon&nbsp;error&nbsp;-msg&nbsp;\"%\"&nbsp;-type&nbsp;ok",<br>
-&nbsp;&nbsp;&nbsp;&nbsp;zMsg);<br>
-}</tt></small></td>
-<td></td><td></td><td></td><td></td>
-</tr>
-</table>
-<p><ul><li>The <tt></tt> puts a backslash before all characters that
-  are special to Tcl</li></ul><ul><li>The Tcl command becomes:
-  <pre>
-    tk_messageBox -icon error -msg \ 
-        "Syntax error near \"\}\"" -type ok
-  </pre></li></ul></p>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Other Functions Provided By Mktclapp</h2>
-<p><ul><li><tt>void Et_ResultF(Tcl_Interp*, ...);</tt></li></ul><ul><li><tt>char *Et_DStringAppendF(Tcl_DString*, ...);</tt></li></ul><ul><li><tt>int Et_AppendObjF(Tcl_Obj*, ...);</tt></li></ul><ul><li><tt>char *mprintf(const char *format, ...);<br>
-  char *vmprintf(const char *format, va_list);</tt></li></ul><ul><li><tt>void Et_NewBuiltinFile(char *filename, char *data, int amt);</tt></li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Operating Mktclapp From The Command Line</h2>
-<p><ul><li>Generate the <tt>appinit.h</tt> header file like this:
-  <blockquote>
-  <tt>mktclapp -header &gt;appinit.h</tt>
-  </blockquote></li></ul><ul><li>Generate the <tt>appinit.c</tt> file like this:
-  <blockquote>
-  <tt>mktclapp -f appinit.mta >appinit.c</tt>
-  </blockquote></li></ul><ul><li>The <tt>*.mta</tt> file is just a list of command-line options</li></ul><ul><li>Enter
-  <blockquote>
-  <tt>mktclapp -help</tt>
-  </blockquote>
-  to get a list of available options</li></ul><ul><li>Look at MTA files generated by xmktclapp.tcl for examples</li></ul></p>
-<br clear="both"><p><hr></p>
-<h2 align="center">Format Of An MTA File</h2>
-<table cellspacing="0" cellpadding="0" border="0">
-<tr><td valign="center">
-<small><tt>#&nbsp;Configuration&nbsp;file&nbsp;generated&nbsp;by&nbsp;xmktclapp<br>
-#&nbsp;Hand&nbsp;editing&nbsp;is&nbsp;not&nbsp;recommended<br>
-#</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Comments begin with one #</td>
-</tr>
-<tr><td valign="center">
-<small><tt>##&nbsp;Autofork&nbsp;No<br>
-##&nbsp;CFile:add.c&nbsp;1<br>
-##&nbsp;CFile:objadd.c&nbsp;1<br>
-##&nbsp;CmdLine&nbsp;Console<br>
-##&nbsp;ConfigFile&nbsp;hw.mta<br>
-##&nbsp;Data:check.gif&nbsp;1<br>
-##&nbsp;MainScript&nbsp;hw.tcl<br>
-##&nbsp;Mode&nbsp;Tcl/Tk<br>
-##&nbsp;NoSource&nbsp;No<br>
-##&nbsp;OutputFile&nbsp;hw.c<br>
-##&nbsp;Shroud&nbsp;No<br>
-##&nbsp;Standalone&nbsp;Yes<br>
-##&nbsp;TclFile:hw.tcl&nbsp;1<br>
-##&nbsp;TclLib&nbsp;/usr/lib/tcl8.0<br>
-##&nbsp;TkLib&nbsp;/usr/lib/tk8.0</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">Lines beginning with two #s are used
-  by xmktclapp.tcl and ignored by mktclapp</td>
-</tr>
-<tr><td valign="center">
-<small><tt>-console<br>
--main-script&nbsp;"hw.tcl"<br>
--tcl-library&nbsp;"/usr/lib/tcl8.0"<br>
--tk-library&nbsp;"/usr/lib/tk8.0"<br>
-"add.c"<br>
-"objadd.c"<br>
--i&nbsp;"check.gif"<br>
--strip-tcl&nbsp;"hw.tcl"</tt></small></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center"><img src="image2"></td>
-<td>&nbsp;&nbsp;</td>
-<td valign="center">All other lines are read by mktclapp and
-  ignored by xmktclapp.tcl</td>
-</tr>
-</table>
-
-<br clear="both"><p><hr></p>
-<h2 align="center">Summary</h2>
-<p><ul><li>Use Tcl for the things Tcl is good at and use C/C++ for the things that
-  C/C++ is good at</li></ul><ul><li>Use wrapper programs to make pure Tcl programs standalone</li></ul><ul><li>Use mktclapp to combine Tcl/Tk with C/C++ into a standalone</li></ul></p>
-<br clear="both"><p><hr></p>
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image1 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image1
deleted file mode 100644 (file)
index da26d70..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image1 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image2 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image2
deleted file mode 100644 (file)
index e176a96..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image2 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image3 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image3
deleted file mode 100644 (file)
index e829d37..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image3 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image4 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image4
deleted file mode 100644 (file)
index f14ea13..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image4 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image5 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image5
deleted file mode 100644 (file)
index 4ef6277..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image5 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image6 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image6
deleted file mode 100644 (file)
index 1adb261..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image6 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image7 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image7
deleted file mode 100644 (file)
index ba0d26e..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image7 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image8 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image8
deleted file mode 100644 (file)
index 8b81d58..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image8 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image9 b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image9
deleted file mode 100644 (file)
index f0a352f..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/image9 and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/index.html b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/page4/index.html
deleted file mode 100644 (file)
index c7bfde3..0000000
+++ /dev/null
@@ -1,768 +0,0 @@
-<!DOCTYPE HTML="HTML" PUBLIC="PUBLIC" "-//W3C//DTD=""-//W3C//DTD" HTML="HTML" 4.0="4.0" Transitional//EN"="Transitional//EN"">
-<HTML>
-<HEAD>
-<TITLE>[fm] welcome to freshmeat.net</TITLE>
-<STYLE TYPE="text/css"><!-- A:link {text-decoration: none}A:visited{text-decoration:none}A:active{text-decoration:none}--></STYLE>
-</HEAD>
-<BODY MARGINWIDTH="0" MARGINHEIGHT="0" LEFTMARGIN="0" RIGHTMARGIN="0" TOPMARGIN="0" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#336699" VLINK="#336699" ALINK="#336699">
-<BR><CENTER><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0"><TR><TD WIDTH="1"><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-now = new Date();
-tail = now.getTime();
-document.write("<IMG SRC='http://209.207.224.246/FreshMeat/Core/pc.gif?/index.php3," + tail + "' WIDTH=1 HEIGHT=1><BR>");
-//-->
-</SCRIPT>
-<NOSCRIPT>
-<IMG SRC="image1" WIDTH="1" HEIGHT="1"><BR>
-</NOSCRIPT></TD></TR></TABLE>
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0"><TR><TD WIDTH="468"><SCRIPT LANGUAGE="JAVASCRIPT">
-<!--
-now = new Date();
-tail = now.getTime();
-AltText = "\"Please click here.\"";
-document.write("<A HREF='http://ads.freshmeat.net/cgi-bin/ad_click.pl?index,tsof0001en'>")
-document.write("<IMG SRC='http://ads.freshmeat.net/tsof0001en.gif?" + tail + "' WIDTH=468 HEIGHT=60 ALT=" + AltText + "></A><BR>");
-//-->
-</SCRIPT>
-<NOSCRIPT>
-<A HREF="http://ads.freshmeat.net/cgi-bin/ad_click.pl?index,tsof0001en"><IMG SRC="image2" WIDTH="468" HEIGHT="60" ALT="Please click here."></A><BR>
-</NOSCRIPT></TD></TR></TABLE>
-
-<TABLE CELLSPACING="0" CELLPADDING="2" BORDER="0" WIDTH="97%"><TR>
-<TD ALIGN="left" VALIGN="bottom"><A HREF="/"><IMG SRC="image3" BORDER="0" ALT="freshmeat.net" WIDTH="300" HEIGHT="65"></A></TD>
-<TD VALIGN="bottom" ALIGN="left" ROWSPAN="2"><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<FORM METHOD="get" ACTION="/search.php3">
-<SMALL>find: <INPUT TYPE="text" SIZE="15" NAME="query"></SMALL></FORM></FONT></TD>
-<TD ALIGN="right" VALIGN="bottom"><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<A HREF="http://www.linux.com"><FONT COLOR="#000000"><B><SMALL>linux.com partner</SMALL></B></FONT></A><BR>
-<TABLE CELLSPACING="0" CELLPADDING="1" BORDER="0" WIDTH="100%"><TR>
-<TD ALIGN="right"><SMALL><NOBR><FONT FACE="Lucida,Verdana,Helvetica,Arial"><B><A HREF="/">news</A> |<BR>
-<A HREF="/appindex/">appindex</A> |<BR>
-<A HREF="/editorials/">editorials</A> |</B></FONT></NOBR></SMALL></TD>
-<TD ALIGN="right"><SMALL><NOBR><FONT FACE="Lucida,Verdana,Helvetica,Arial"><B><A HREF="/lounge/">lounge</A> |<BR>
-<A HREF="/contrib.php3">contribute</A> |<BR>
-<A HREF="/feedback.php3">feedback</A> |</B></FONT></NOBR></SMALL></TD>
-<TD ALIGN="right"><SMALL><NOBR><FONT FACE="Lucida,Verdana,Helvetica,Arial"><B><A HREF="/about.php3">about</A> |<BR>
-<A HREF="/awards.php3">awards</A> |<BR>
-<A HREF="/faq.php3">FAQ</A> |</B></FONT></NOBR></SMALL></TD>
-</TR></TABLE></TD>
-</TR></TABLE>
-<TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0">
-<TR BGCOLOR="#000000"><TD><IMG SRC="image4" WIDTH="1" HEIGHT="2" ALT=""></TD></TR></TABLE>
-<TABLE CELLSPACING="0" CELLPADDING="3" BORDER="0" WIDTH="100%" BGCOLOR="#BBDDFF">
-<TR><TD ALIGN="center" VALIGN="top">
-<BR>
-<FONT FACE="Lucida,Verdana,Helvetica,Arial">
-
-
-<SMALL><B>sort by: [ <A HREF="/news/2000/01/29/">date</A> | <A HREF="/news/list.php3?day=/2000/01/29/&orderby=name">name</A> | <A HREF="/news/list.php3?day=/2000/01/29/&orderby=urgency">urgency</A> ]</B></SMALL><BR></TD><TD>&nbsp;</TD></TR><TR><TD VALIGN="top" ALIGN="center"><FONT FACE="Lucida,Verdana,Helvetica,Arial"><TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">We should get this out of the door now</FONT></B><BR>
-<SMALL><B><A HREF="mailto:scoop@freshmeat.net">scoop</A> - January 29th 2000, 23:59 EST</B></SMALL>
-<P>Everyone else is talking about it, so we should announce it ourselves
-before you start to think it's a government hoax. <A HREF="http://server51.freshmeat.net/">Server 51</A> is our new hosting service for Open Source projects, based on Super Cool Space Alien Technology(TM). We hadn't planned to announce it quite so soon, and it's still in the alpha stage as we work day and night at integrating SCSAT with our terrestrial systems, but feel free to take a look around and see what's going on. When we're out of the testing stage and ready to make room for your project, we'll send word via your implants. Be listening.
-
-
-
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949208399.html">comments (8)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>Category: freshmeat
-</SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-       <A HREF="http://server51.freshmeat.net"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A>  &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">Is Linux for Crazies?</FONT></B><BR>
-<SMALL><B><A HREF="mailto:jeff.covey@pobox.com">jeff covey</A> - January 29th 2000, 23:59 EST</B></SMALL>
-<P>Ray Woodcock writes: "In terms relevant to Linux, this freshmeat
-editorial glances at the tendency of mainstream viewpoints to dismiss
-other viewpoints as 'fringe,' the propensity of dissident movements to
-splinter into factions before they can effectively counter their
-primary adversaries, and the difficulty of creating stability without
-squelching curiosity."
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949208340.html">comments (2), 2065 words in body</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>Category: Editorial
-</SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-   &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">RabbIT 2.0.2</FONT></B><BR>
-<SMALL><B><A HREF="mailto:d94-rol@nada.kth.se">Ernimril</A> - January 29th 2000, 18:29 EST</B></SMALL>
-<DIV ALIGN="justify"><P>RabbIt is the mutating, caching webproxy which is used to speed up surfing over slow links like modems. It does this by removing advertising and background images and scaling down images to low quality JPEGs. RabbIT is written in Java and should be able to run on any platform. It does depend upon an image converter if imagescaleing is on. The recommended image converter is "convert" from the ImageMagick package.</DIV>
-<P><B>Changes:</B> Fixes have been made for a few bugs concerning keep alive and the HTTP response header, a bug with NT and cache directories, a bug concerning requests without a response body, a bug in GZIPHandler that caused it to not gzip already compressed (gzip or compress) streams, a bug in HTTPHeader regarding response phrases that are multiline, and a few bugs in ImageHandler and NCache. GZIPHandler has been built as an intermediate(*) to FilterHandler (this means that it is possible to gzip text/plain, etc., without filtering those streams) uuencoding has been added to the Coder, RabbIT now uses HTTP/1.1, HTMLParser now compiles cleanly with Jikes, and GeneralHeader has been created to allow for HTTPFooter (which is useful when sending chunked data).
-<P><B>Urgency:</B> low
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949188564.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: freely distributable</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/daemons/proxy.html"><FONT COLOR="#FFFFFF">Daemons/Proxy</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/902659138/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/902659138/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A>        <A HREF="/appindex/1998/08/09/902659138.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">nmpg 1.1.3</FONT></B><BR>
-<SMALL><B><A HREF="mailto:narkos@linuxmail.org">Joel Lindau</A> - January 29th 2000, 18:18 EST</B></SMALL>
-<DIV ALIGN="justify"><P>nmpg is a small command-driven frontend and network-jukebox for mpg123.</DIV>
-<P><B>Changes:</B> Bugfixes, better memory managment, a new .nmpgrc parser, and new options.
-<P><B>Urgency:</B> low
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949187896.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: OpenSource</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/console/sound.html"><FONT COLOR="#FFFFFF">Console/Sound</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/935430877/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/935430877/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A> <A HREF="http://apps.freshmeat.net/changelog/935430877/"><IMG SRC="image8" WIDTH="21" HEIGHT="21" BORDER="0" ALT="changelog"></A>      <A HREF="/appindex/1999/08/23/935430877.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">mod_dtcl 0.7.3</FONT></B><BR>
-<SMALL><B><A HREF="mailto:davidw@prosa.it">David Welton</A> - January 29th 2000, 18:11 EST</B></SMALL>
-<DIV ALIGN="justify"><P>Mod_dtcl is a free/open source implementation of server-parsed Tcl under Apache. It allows you to tightly integrate HTML with Tcl, a widely-used scripting language with many years of development invested in it. There are also many external Tcl modules that you can load into mod_dtcl, to create images, access databases, etc.</DIV>
-<P><B>Changes:</B> A major overhaul of header handling and internal buffering, and the addition of the ability to handle binary data.
-<P><B>Urgency:</B> low
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949187471.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: GPL</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/web/development.html"><FONT COLOR="#FFFFFF">Web/Development</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/917925309/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/917925309/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A> <A HREF="http://apps.freshmeat.net/changelog/917925309/"><IMG SRC="image8" WIDTH="21" HEIGHT="21" BORDER="0" ALT="changelog"></A>      <A HREF="/appindex/1999/02/01/917925309.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">CoreLinux++ 0.4.6</FONT></B><BR>
-<SMALL><B><A HREF="mailto:frankc@users.sourceforge.net">Frank V. Castellucci</A> - January 29th 2000, 18:07 EST</B></SMALL>
-<DIV ALIGN="justify"><P>CoreLinux++ is an initiative to normalize methods and conventions for OOA/OOD/C++ development for Linux, materialized in a set of Open Source C++ class libraries (libcorelinux++ and libcoreframework++) to support common patterns and exploit the C++ standards.</DIV>
-<P><B>Changes:</B> This release adds AbstractFactory and AssociativeIterator analysis, design, implementations, test code, a CVS daily tarball, a Patch Submission facility and updated FAQ, Web Pages, and defect reporting guidelines.
-<P><B>Urgency:</B> medium
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949187233.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: LGPL</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/development/libraries.html"><FONT COLOR="#FFFFFF">Development/Libraries</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/944077775/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/944077775/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A> <A HREF="http://apps.freshmeat.net/changelog/944077775/"><IMG SRC="image8" WIDTH="21" HEIGHT="21" BORDER="0" ALT="changelog"></A>      <A HREF="/appindex/1999/12/01/944077775.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">scribe 0.2</FONT></B><BR>
-<SMALL><B><A HREF="mailto:kahlage@logoncafe.net">ChromeBob</A> - January 29th 2000, 12:12 EST</B></SMALL>
-<DIV ALIGN="justify"><P>scribe writes functions prototypes for your C code, so you don't have to. It also compares unique functions between source code files and will 'extern' when appropriate. C++ methods support is also planned.</DIV>
-<P><B>Changes:</B> A fix for an fflush() bug and better documentation.
-<P><B>Urgency:</B> low
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949165962.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: GPL</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/development/tools.html"><FONT COLOR="#FFFFFF">Development/Tools</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/946661656/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/946661656/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A>        <A HREF="/appindex/1999/12/31/946661656.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">E theme updater 0.1</FONT></B><BR>
-<SMALL><B><A HREF="mailto:hallvar@ii.uib.no">Hallvar Helleseth</A> - January 29th 2000, 12:04 EST</B></SMALL>
-<DIV ALIGN="justify"><P>E theme Updater is a bash script to automatically update all of your Enlightenment themes from e.themes.org.</DIV>
-<P><B>Changes:</B> Initial release.
-
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949165472.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: GPL</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/console/misc.html"><FONT COLOR="#FFFFFF">Console/Misc</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/949164501/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/949164501/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A>        <A HREF="/appindex/2000/01/29/949164501.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">Powertweak-Linux 0.1.7</FONT></B><BR>
-<SMALL><B><A HREF="mailto:dave@denial.force9.co.uk">Dave Jones</A> - January 29th 2000, 12:03 EST</B></SMALL>
-<DIV ALIGN="justify"><P>Powertweak-Linux is a port of the Microsoft Windows tool of the same name rewritten from the ground up. Its main function is to tune your system to its optimal performance settings. Currently, it tunes PCI chipsets and can set /proc/sys entries.</DIV>
-<P><B>Changes:</B> A major GUI overhaul, the ability to generate configuration files, extended PCI information tabs, extra information support for the Matrox G200, and numerous other bugfixes & improvements.
-<P><B>Urgency:</B> low
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949165416.html">comments (2)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: GPL</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/console/system.html"><FONT COLOR="#FFFFFF">Console/System</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/930836224/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/930836224/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A> <A HREF="http://apps.freshmeat.net/changelog/930836224/"><IMG SRC="image8" WIDTH="21" HEIGHT="21" BORDER="0" ALT="changelog"></A>      <A HREF="/appindex/1999/07/01/930836224.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">Pexeso Beta</FONT></B><BR>
-<SMALL><B><A HREF="mailto:pavolkrigler@pobox.sk">Pavol Krigler</A> - January 29th 2000, 11:55 EST</B></SMALL>
-<DIV ALIGN="justify"><P>pexeso is a simple graphic card game for one or two players.</DIV>
-<P><B>Changes:</B> Initial public release.
-
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949164956.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: Freeware</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/console/games.html"><FONT COLOR="#FFFFFF">Console/Games</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/949141436/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/949141436/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A>        <A HREF="/appindex/2000/01/29/949141436.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">XZX 2.9.2</FONT></B><BR>
-<SMALL><B><A HREF="mailto:Erik.Kunze@fantasy.muc.de">E. Kunze</A> - January 29th 2000, 11:54 EST</B></SMALL>
-<DIV ALIGN="justify"><P>XZX is a portable emulator of ZX Spectrum 48K/128K/+3 (8-bit home computers made by Sir Clive Sinclair) and Pentagon/Scorpion (Spectrum clones made in Russia) for machines running UNIX and the X Window system. XZX is completely written in C and emulates Spectrum 48K, 128K, +2 and +3, Pentagon and Scorpion, Interface I with up to 8 microdrives, Multiface 128 and Multiface 3, BetaDisk 128 interface by Technology Research Ltd with 4 disk drives, +D interface by Miles Gordon Technology with 2 disk drives, Kempston mouse, Kempston joystick and built-in machine code monitor.</DIV>
-<P><B>Changes:</B> Lots of feature improvement and bug fixes. Most parts of the audio support has been rewritten for different UNICES.
-<P><B>Urgency:</B> low
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949164896.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: Shareware</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/x11/emulators.html"><FONT COLOR="#FFFFFF">X11/Emulators</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/936956384/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/936956384/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A> <A HREF="http://apps.freshmeat.net/changelog/936956384/"><IMG SRC="image8" WIDTH="21" HEIGHT="21" BORDER="0" ALT="changelog"></A>      <A HREF="/appindex/1999/09/10/936956384.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">DistroLib 0.4</FONT></B><BR>
-<SMALL><B><A HREF="mailto:phir@gcu-squad.org">PhiR</A> - January 29th 2000, 11:54 EST</B></SMALL>
-<DIV ALIGN="justify"><P>DistroLib is an abstraction library designed to make the development of distributed application easier. Its main target is currently compute-bound tasks based on a one server, many clients model (much like distributed.net), but it is quite generic and could be used for any client/server app. It is lightweight, easy-to-use, and relies heavily on threads.</DIV>
-<P><B>Changes:</B> Important bug fixes and command history support.
-<P><B>Urgency:</B> low
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949164869.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: GPL</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/development/libraries.html"><FONT COLOR="#FFFFFF">Development/Libraries</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/942588431/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/942588431/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A> <A HREF="http://apps.freshmeat.net/changelog/942588431/"><IMG SRC="image8" WIDTH="21" HEIGHT="21" BORDER="0" ALT="changelog"></A>      <A HREF="/appindex/1999/11/14/942588431.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">ToutDoux 1.1.7</FONT></B><BR>
-<SMALL><B><A HREF="mailto:yeupou@altern.org">yeupou</A> - January 29th 2000, 11:54 EST</B></SMALL>
-<DIV ALIGN="justify"><P>ToutDoux is a project manager which lets you design a plan of action using a tree structure, with translations in French and English.</DIV>
-<P><B>Changes:</B> A new menu and XML standard for save files.
-<P><B>Urgency:</B> low
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949164843.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: GPL</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/gnome/tools.html"><FONT COLOR="#FFFFFF">GNOME/Tools</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/944433411/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/944433411/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A>        <A HREF="/appindex/1999/12/05/944433411.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">goMP 1.0.3</FONT></B><BR>
-<SMALL><B><A HREF="mailto:dioxine@poulet.org">Gautier</A> - January 29th 2000, 11:52 EST</B></SMALL>
-<DIV ALIGN="justify"><P>goMP is a set of CGI scripts that allows you to remotely control, via a Web browser, a computer acting as an MP3 jukebox. This program is very useful for someone who's got a dedicated computer with a lot of MP3 files but that doesn't have any output and input devices except network and sound card. It's main advantages are built-in cataloging, fast access to music, and no special software needed on the client side.</DIV>
-<P><B>Changes:</B> Bugfixes, a password-protected config page, basic search function, easier installation thanks to an install script, and relocation of HTML docs and CGIs to a subdirectory.
-<P><B>Urgency:</B> medium
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949164772.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: Artistic</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/web/tools.html"><FONT COLOR="#FFFFFF">Web/Tools</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/948492962/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/948492962/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A> <A HREF="http://apps.freshmeat.net/changelog/948492962/"><IMG SRC="image8" WIDTH="21" HEIGHT="21" BORDER="0" ALT="changelog"></A>      <A HREF="/appindex/2000/01/21/948492962.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">APSEND 1.40</FONT></B><BR>
-<SMALL><B><A HREF="mailto:sventek@gmx.net">M.K.</A> - January 29th 2000, 11:50 EST</B></SMALL>
-<DIV ALIGN="justify"><P>APSEND is a TCP/IP packet sender to test firewalls and other network applications. It also includes a syn flood option, the land DoS attack, and a DoS attack against tcpdump running on a UNIX-based system. Future updates will include support for a scripting language to construct TCP packets and a few more options and protocols like UDP and ICMP. A port of APSEND from Perl to C is planned as well.</DIV>
-<P><B>Changes:</B> The stream attack, bugfixes, and rewrites for parts of the code.
-<P><B>Urgency:</B> low
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949164633.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: GPL</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/console/networking.html"><FONT COLOR="#FFFFFF">Console/Networking</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/941654429/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/941654429/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A> <A HREF="http://apps.freshmeat.net/changelog/941654429/"><IMG SRC="image8" WIDTH="21" HEIGHT="21" BORDER="0" ALT="changelog"></A>      <A HREF="/appindex/1999/11/03/941654429.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">ecasound 1.6.12r10</FONT></B><BR>
-<SMALL><B><A HREF="mailto:kaiv@wakkanet.fi">Kai Vehmanen</A> - January 29th 2000, 11:48 EST</B></SMALL>
-<DIV ALIGN="justify"><P>Ecasound is a software package designed for multitrack audio processing. It can be used for simple tasks like audio playback, recording and format conversions, as well as for multitrack effect processing, mixing, recording and signal recycling. Ecasound supports a wide range of audio inputs, outputs and effect algorithms. Ecasound has a chain-based design that allows effects to be easily combined both in series and in parallel. Oscillators and MIDI-CCs can be used for controlling effect parameters. Includes a versatile console mode interface, a Qt-based X-interface and various command-line utils suitable for batch processing.</DIV>
-<P><B>Changes:</B> Support for 24- and 32-bit audio formats and for ALSA 0.5, multichannel noisegate, a new 2nd order lowpass filter, some ia-mode commands, and various bugfixes and low-level improvements.
-<P><B>Urgency:</B> low
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949164529.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: GPL</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/console/sound.html"><FONT COLOR="#FFFFFF">Console/Sound</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/931819147/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/931819147/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A> <A HREF="http://apps.freshmeat.net/changelog/931819147/"><IMG SRC="image8" WIDTH="21" HEIGHT="21" BORDER="0" ALT="changelog"></A>      <A HREF="/appindex/1999/07/12/931819147.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">SCEZ 20000129</FONT></B><BR>
-<SMALL><B><A HREF="mailto:m032@mbsks.franken.de">endergone Zwiebeltuete</A> - January 29th 2000, 11:46 EST</B></SMALL>
-<DIV ALIGN="justify"><P>SCEZ is a library that should make the handling of smart cards (not memory cards) and card readers as simple as possible and be at the same time small and easily portable. Currently supported are Dumb Mouse, CT-API and Towitoko readers and Schlumberger Cryptoflex, Gemplus GPK4000, GSM SIM and Telesec SigG cards. A PKCS#15 implementation is in the design phase. There are ports to PalmOS and MS-Windows available.</DIV>
-<P><B>Changes:</B> More card and reader drivers, and an application to read out GSM SIM card (phone book and SMS) and write it to the card.
-<P><B>Urgency:</B> low
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949164394.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: BSD type</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/development/libraries.html"><FONT COLOR="#FFFFFF">Development/Libraries</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/939677525/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/939677525/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A>        <A HREF="/appindex/1999/10/11/939677525.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">Comicq 0.2.0</FONT></B><BR>
-<SMALL><B><A HREF="mailto:terminal6@submail.net">Terminal6</A> - January 29th 2000, 11:45 EST</B></SMALL>
-<DIV ALIGN="justify"><P>COMICQ is a command line ICQ messaging tool that allows a user to connect to ICQ using your UIN and password, then sends a message to the destination UIN.</DIV>
-<P><B>Changes:</B> Several bugfixes, icq99a compliance, and a new option --ip that allows you to get any user's IP by their UIN.
-<P><B>Urgency:</B> low
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949164350.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: GPL</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/console/communication.html"><FONT COLOR="#FFFFFF">Console/Communication</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/948389309/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/948389309/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A>        <A HREF="/appindex/2000/01/20/948389309.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">senv 0.2</FONT></B><BR>
-<SMALL><B><A HREF="mailto:kojak@ids.pl">Zbyszek Sobiecki</A> - January 29th 2000, 11:44 EST</B></SMALL>
-<DIV ALIGN="justify"><P>Senv allows you to run programs with a specified environment. It can set uid, gid, root directory, working directory, limits, and environment variables. It is useful in init scripts and as a shell for users for setting resource limits and environment variables. You can create sets of configurations and specify the one to use from command line.</DIV>
-<P><B>Changes:</B> Login shell limits and environment setting for users, permanent resource limits for specified groups of users and environment variables, and other minor bugfixes.
-<P><B>Urgency:</B> low
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949164259.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: GPL</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/console/administration.html"><FONT COLOR="#FFFFFF">Console/Administration</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/944953892/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A>  <A HREF="http://apps.freshmeat.net/changelog/944953892/"><IMG SRC="image8" WIDTH="21" HEIGHT="21" BORDER="0" ALT="changelog"></A>     <A HREF="/appindex/1999/12/11/944953892.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="97%" BORDER="0" BGCOLOR="#000000"><TR><TD COLSPAN="2">
-<TABLE CELLSPACING="0" CELLPADDING="3" WIDTH="100%" BORDER="0" BGCOLOR="#FFFFFF">
-<TR><TD><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B><FONT SIZE="+2">XZX 2.9.2</FONT></B><BR>
-<SMALL><B><A HREF="mailto:Erik.Kunze@fantasy.muc.de">E. Kunze</A> - January 29th 2000, 10:55 EST</B></SMALL>
-<DIV ALIGN="justify"><P>XZX is a portable emulator of ZX Spectrum 48K/128K/+3 (8-bit home computers made by Sir Clive Sinclair) and Pentagon/Scorpion (Spectrum clones made in Russia) for machines running UNIX and the X Window system. XZX is completely written in C and emulates Spectrum 48K, 128K, +2 and +3, Pentagon and Scorpion, Interface I with up to 8 microdrives, Multiface 128 and Multiface 3, BetaDisk 128 interface by Technology Research Ltd with 4 disk drives, +D interface by Miles Gordon Technology with 2 disk drives, Kempston mouse, Kempston joystick and built-in machine code monitor.</DIV>
-<P><B>Changes:</B> Lots of feature improvement and bug fixes. Most parts of the audio support has been rewritten for different UNICES.
-<P><B>Urgency:</B> low
-<P ALIGN="right"><B>[ <A HREF="/news/2000/01/29/949161354.html">comments (0)</A> ]</B>
-</FONT></TD></TR></TABLE></TD></TR><TR><TD VALIGN="middle">
-&nbsp;<FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#FFFFFF"><B><SMALL>License: Shareware</SMALL></B><BR>
-<B><SMALL>&nbsp;Category: <A HREF="/appindex/x11/emulators.html"><FONT COLOR="#FFFFFF">X11/Emulators</FONT></A></SMALL></B></FONT></FONT></TD><TD ALIGN="right">
-<A HREF="http://apps.freshmeat.net/download/936956384/"><IMG SRC="image6" WIDTH="21" HEIGHT="21" BORDER="0" ALT="download"></A> <A HREF="http://apps.freshmeat.net/homepage/936956384/"><IMG SRC="image5" WIDTH="21" HEIGHT="21" BORDER="0" ALT="homepage"></A> <A HREF="http://apps.freshmeat.net/changelog/936956384/"><IMG SRC="image8" WIDTH="21" HEIGHT="21" BORDER="0" ALT="changelog"></A>      <A HREF="/appindex/1999/09/10/936956384.html"><IMG SRC="image7" WIDTH="21" HEIGHT="21" BORDER="0" ALT="appindex record"></A> &nbsp;
-</TD></TR></TABLE>
-<HR WIDTH="0" SIZE="0">
-
-
-<P><SMALL><CENTER><B>[ <A HREF="/news/2000/01/29/">full page for today</A> | <A HREF="/news/2000/01/28/">yesterday's edition</A> ]</SMALL></B></CENTER></FONT></TD><TD WIDTH="27%" VALIGN="top" ALIGN="center"><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000">navigator</FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-- <A HREF="/news/2000/01/29/"><FONT COLOR="#000000">full page for today</FONT></A><BR>
-- <A HREF="/news/2000/01/28/"><FONT COLOR="#000000">yesterday's edition</FONT></A><BR>
-- <A HREF="news://news.freshmeat.net/"><FONT COLOR="#000000"><B>new:</B> fm news via NNTP</FONT></A><BR>
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000">eye catcher</FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<B>Free Shirts</B><BR>We give away a free freshmeat t-shirt every week for the best comment added to an application announcement or story posted on freshmeat.
-<P><B>#freshmeat</B><BR>If you want to chat about what's new on freshmeat and hang out with other fm lounge lizards and the fm staff, head over to #freshmeat on irc.freshmeat.net, part of <A HREF="http://openprojects.nu/">The Open Projects Network</A>.
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000">site notes</FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-- <A HREF="/news/2000/01/29/949208399.html"><FONT COLOR="#000000">We should get this out of the door now (Jan 29th)</FONT></A><BR>
-- <A HREF="/news/2000/01/01/946704535.html"><FONT COLOR="#000000">freshmeat Y2K report (Jan 01st)</FONT></A><BR>
-- <A HREF="/news/1999/08/16/934862340.html"><FONT COLOR="#000000">Assorted freshmeat notes (Aug 16th)</FONT></A><BR>
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000">recent editorials</FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-- <A HREF="/news/2000/01/29/949208340.html"><FONT COLOR="#000000">Is Linux for Crazies? (Jan 29th)</FONT></A><BR>
-- <A HREF="/news/2000/01/22/948603540.html"><FONT COLOR="#000000">A New Business Plan for Free Software (Jan 22nd)</FONT></A><BR>
-- <A HREF="/news/2000/01/15/947998740.html"><FONT COLOR="#000000">Is Linux Going to Reunite the UNIX Market? (Jan 15th)</FONT></A><BR>
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000">andover.net</FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-<BR><CENTER><A HREF="http://andover.net"><IMG SRC="image9" BORDER="0" WIDTH="150" HEIGHT="43" ALT="Mirror Logo"></A></CENTER><P>
-- <A HREF="http://www.animfactory.com/"><FONT COLOR="#000000">Animation Factory</FONT></A><BR>
-- <A HREF="http://www.davecentral.com/"><FONT COLOR="#000000">DaveCentral</FONT></A><BR>
-- <A HREF="http://www.freecode.com/"><FONT COLOR="#000000">FreeCode</FONT></A><BR>
-- <A HREF="http://www.InternetTrafficReport.com/"><FONT COLOR="#000000">Internet Traffic Report</FONT></A><BR>
-- <A HREF="http://www.ITManagersJournal.com/"><FONT COLOR="#000000">IT Manager's Journal</FONT></A><BR>
-- <A HREF="http://www.mediabuilder.com/"><FONT COLOR="#000000">MediaBuilder</FONT></A><BR>
-- <A HREF="http://slashdot.org/"><FONT COLOR="#000000">Slashdot</FONT></A><BR>
-- <A HREF="http://www.slaughterhouse.com/"><FONT COLOR="#000000">Slaughterhouse</FONT></A><BR>
-- <A HREF="http://www.techmailings.com/"><FONT COLOR="#000000">TechMailings</FONT></A><BR>
-- <A HREF="http://www.techsightings.com/"><FONT COLOR="#000000">TechSightings</FONT></A><BR>
-<BR><CENTER><B>E-Commerce</B></CENTER><P>
-- <A HREF="http://www.thinkgeek.com"><FONT COLOR="#000000">ThinkGeek (Stuff for smart masses)</FONT></A><BR>
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000">supported sites</FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-- <A HREF="http://www.userfriendly.org"><FONT COLOR="#000000">Userfriendly.org</FONT></A><BR>
-- <A HREF="http://www.securityfocus.com"><FONT COLOR="#000000">SecurityFocus</FONT></A><BR>
-- <A HREF="http://copyleft.net"><FONT COLOR="#000000">copyleft</FONT></A><BR>
-- <A HREF="http://filewatcher.org"><FONT COLOR="#000000">Filewatcher</FONT></A><BR>
-- <A HREF="http://www.linux.com"><FONT COLOR="#000000">Linux.com</FONT></A><BR>
-- <A HREF="http://www.linuxtelephony.org"><FONT COLOR="#000000">LinuxTelephony</FONT></A><BR>
-- <A HREF="http://www.linuxtoday.com"><FONT COLOR="#000000">LinuxToday</FONT></A><BR>
-- <A HREF="http://openprojects.nu/services/irc.html"><FONT COLOR="#000000">Openprojects</FONT></A><BR>
-- <A HREF="http://www.32bitsonline.com"><FONT COLOR="#000000">32bitsonline</FONT></A><BR>
-- <A HREF="http://www.gnu.org"><FONT COLOR="#000000">The GNU Project</FONT></A><BR>
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000"><a href="/news/2000/01/29/"><font color="#000000">saturday</font></a></FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-- <A HREF="/news/2000/01/29/949208399.html"><FONT COLOR="#000000">We should get this out of the door now</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949208340.html"><FONT COLOR="#000000">Is Linux for Crazies?</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949188564.html"><FONT COLOR="#000000">RabbIT 2.0.2</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949187896.html"><FONT COLOR="#000000">nmpg 1.1.3</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949187471.html"><FONT COLOR="#000000">mod_dtcl 0.7.3</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949187233.html"><FONT COLOR="#000000">CoreLinux++ 0.4.6</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949165962.html"><FONT COLOR="#000000">scribe 0.2</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949165472.html"><FONT COLOR="#000000">E theme updater 0.1</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949165416.html"><FONT COLOR="#000000">Powertweak-Linux 0.1.7</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949164956.html"><FONT COLOR="#000000">Pexeso Beta</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949164896.html"><FONT COLOR="#000000">XZX 2.9.2</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949164869.html"><FONT COLOR="#000000">DistroLib 0.4</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949164843.html"><FONT COLOR="#000000">ToutDoux 1.1.7</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949164772.html"><FONT COLOR="#000000">goMP 1.0.3</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949164633.html"><FONT COLOR="#000000">APSEND 1.40</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949164529.html"><FONT COLOR="#000000">ecasound 1.6.12r10</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949164394.html"><FONT COLOR="#000000">SCEZ 20000129</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949164350.html"><FONT COLOR="#000000">Comicq 0.2.0</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949164259.html"><FONT COLOR="#000000">senv 0.2</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949161354.html"><FONT COLOR="#000000">XZX 2.9.2</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949161036.html"><FONT COLOR="#000000">log4j 0.7.5</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949156343.html"><FONT COLOR="#000000">SQN Linux 1.6</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949156277.html"><FONT COLOR="#000000">Limo 0.3.2</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949156237.html"><FONT COLOR="#000000">Fusion GS 1.3</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949145887.html"><FONT COLOR="#000000">MMR 1.5.4</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949142835.html"><FONT COLOR="#000000">KUPS 0.3.4</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949142815.html"><FONT COLOR="#000000">3DSE patch for XMMS 4</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949139763.html"><FONT COLOR="#000000">Linux 2.3.41</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949139751.html"><FONT COLOR="#000000">Free Code for Linux S/390</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949135979.html"><FONT COLOR="#000000">CircleMUD 3.0 beta patchlevel 17</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949135938.html"><FONT COLOR="#000000">NiL Isn't Liero 000128</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949135913.html"><FONT COLOR="#000000">OpenSSH Unix Port 1.2.2</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949135889.html"><FONT COLOR="#000000">KBoxes! 1.3</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949135867.html"><FONT COLOR="#000000">phpLanParty 0.23</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949135509.html"><FONT COLOR="#000000">DGen/SDL 1.20</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949135482.html"><FONT COLOR="#000000">EdcomLib 1.0 alpha 5</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949135309.html"><FONT COLOR="#000000">Etherboot 4.4.2</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949135205.html"><FONT COLOR="#000000">BLADE 0.18.0</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949135115.html"><FONT COLOR="#000000">Sapphire 0.13.7</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949135070.html"><FONT COLOR="#000000">ippl 1.99.3</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949134977.html"><FONT COLOR="#000000">Saint 1.5patch1</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949134943.html"><FONT COLOR="#000000">Zircon 1.18.232</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949134927.html"><FONT COLOR="#000000">nmap 2.3BETA14</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949134901.html"><FONT COLOR="#000000">xterm patch #124</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949134817.html"><FONT COLOR="#000000">MyThreads-Links v0.5.2</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949134633.html"><FONT COLOR="#000000">sudo 1.6.2p1</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949134552.html"><FONT COLOR="#000000">MIT Photonic-Bands 0.10</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949134246.html"><FONT COLOR="#000000">Launcher 0.86</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949134179.html"><FONT COLOR="#000000">nano 0.8.1</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949134103.html"><FONT COLOR="#000000">Gtk-- 1.1.8</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949134049.html"><FONT COLOR="#000000">tkchooser 0.65</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949133420.html"><FONT COLOR="#000000">XShipWars 1.33a</FONT></A><BR>
-- <A HREF="/news/2000/01/29/949133280.html"><FONT COLOR="#000000">Lamerpad 0.1</FONT></A><BR>
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000"><a href="/news/2000/01/28/"><font color="#000000">friday</font></a></FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-- <A HREF="/news/2000/01/28/949117833.html"><FONT COLOR="#000000">fsv 0.9</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949117711.html"><FONT COLOR="#000000">popsneaker 0.1.1</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949114716.html"><FONT COLOR="#000000">eyep-updater.sh 1.0</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949113240.html"><FONT COLOR="#000000">W3Mail 0.5.0</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949113214.html"><FONT COLOR="#000000">The Urgent Decision 0.9.9</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949112269.html"><FONT COLOR="#000000">LTSP 1.02</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949112198.html"><FONT COLOR="#000000">Production BASIC 0.2.12</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949112123.html"><FONT COLOR="#000000">Postfix 19991231-pl03</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949109732.html"><FONT COLOR="#000000">Mp3 Commander 0.7</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949109324.html"><FONT COLOR="#000000">iManager 1.0.1b</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949108399.html"><FONT COLOR="#000000">Eterm 0.9</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949108308.html"><FONT COLOR="#000000">dqd_dirindex 1.0</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949108087.html"><FONT COLOR="#000000">Tidings 1.0.4</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949108026.html"><FONT COLOR="#000000">localscan 2.1</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949107922.html"><FONT COLOR="#000000">WMKeyboard 0.3</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949107834.html"><FONT COLOR="#000000">fcmp 1.0.2</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949107767.html"><FONT COLOR="#000000">Akkord 0.3.1</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949107649.html"><FONT COLOR="#000000">HiM 0.1.1</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949106305.html"><FONT COLOR="#000000">cdrecord 1.8</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949103400.html"><FONT COLOR="#000000">eMixer 0.05.5</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949103187.html"><FONT COLOR="#000000">FreeVSD 1.4.0</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949103096.html"><FONT COLOR="#000000">Common C++ Libraries 0.0</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949095155.html"><FONT COLOR="#000000">Moonshine 1.0beta2</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949095112.html"><FONT COLOR="#000000">swim 0.3.5</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949095009.html"><FONT COLOR="#000000">Xmame/xmess 0.36b15.1</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949094448.html"><FONT COLOR="#000000">pcmcia-cs 3.1.9</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949091509.html"><FONT COLOR="#000000">gPS 0.5.2</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949091415.html"><FONT COLOR="#000000">Snort 1.5.1</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949090436.html"><FONT COLOR="#000000">Pygmy Linux 0.7 beta</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949090237.html"><FONT COLOR="#000000">Intro to Bash Programming HOWTO 0.3</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949084379.html"><FONT COLOR="#000000">GNU Pth 1.3b2</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949084356.html"><FONT COLOR="#000000">Laonux 0.1</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949084304.html"><FONT COLOR="#000000">x-wvdial 0.12</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949084188.html"><FONT COLOR="#000000">Intro to Bash Programming HOWTO 0.3</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949084106.html"><FONT COLOR="#000000">Catalog 1.02</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949084062.html"><FONT COLOR="#000000">harvest 1.5.20-kj-0.9</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949068306.html"><FONT COLOR="#000000">wmseti 0.3.0a</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949057272.html"><FONT COLOR="#000000">RIG 1.02</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949057019.html"><FONT COLOR="#000000">FreeAddr 0.2</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949056939.html"><FONT COLOR="#000000">GtkAda 1.2.5</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949056664.html"><FONT COLOR="#000000">dot.conf 0.6.0</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949055099.html"><FONT COLOR="#000000">dep.pl 1.28.0</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949054980.html"><FONT COLOR="#000000">Prae's Scripts 1.1</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949044301.html"><FONT COLOR="#000000">Project Clock 0.1</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949044285.html"><FONT COLOR="#000000">Xtheater 0.2.1</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949040013.html"><FONT COLOR="#000000">i-no Chart 0.1</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949039945.html"><FONT COLOR="#000000">spliff 0.8.1</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949038953.html"><FONT COLOR="#000000">Regexx 0.95</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949038316.html"><FONT COLOR="#000000">RBook 0.5.0</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949036742.html"><FONT COLOR="#000000">RIG 1.01</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949036714.html"><FONT COLOR="#000000">wchat 1.2.0</FONT></A><BR>
-- <A HREF="/news/2000/01/28/949036428.html"><FONT COLOR="#000000">PCCS MySQLDatabase Admin Tool 1.2.2</FONT></A><BR>
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000"><a href="/news/2000/01/27/"><font color="#000000">thursday</font></a></FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-- <A HREF="/news/2000/01/27/949033332.html"><FONT COLOR="#000000">CADUBI 1.1b1</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949032987.html"><FONT COLOR="#000000">Angus' Chess Clock 0.8.1</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949032555.html"><FONT COLOR="#000000">MP3 Report Generator 1.0.0</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949032518.html"><FONT COLOR="#000000">4DOM 0.9.2</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949032386.html"><FONT COLOR="#000000">4XSLT 0.8.2</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949031346.html"><FONT COLOR="#000000">OpenNaken 1.10</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949025747.html"><FONT COLOR="#000000">iManager 1.0b</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949025168.html"><FONT COLOR="#000000">QuakeForge 0.1.0</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949023271.html"><FONT COLOR="#000000">pylice 0.7.0</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949023250.html"><FONT COLOR="#000000">Solfege 0.6.0</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949023151.html"><FONT COLOR="#000000">xinetd 2.1.8.7p1</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949022849.html"><FONT COLOR="#000000">jac 0.13</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949022803.html"><FONT COLOR="#000000">Xmms 1.0.0</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949022319.html"><FONT COLOR="#000000">KSrnd 0.97</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949021877.html"><FONT COLOR="#000000">getpg / UW-IMAP 0.54</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949021849.html"><FONT COLOR="#000000">getpg 0.53</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949021824.html"><FONT COLOR="#000000">setserial 2.17</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949021250.html"><FONT COLOR="#000000">Pan 0.7.3</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949021216.html"><FONT COLOR="#000000">jwhois 2.4.1</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949021126.html"><FONT COLOR="#000000">Kmp3 1.0</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949020964.html"><FONT COLOR="#000000">xPine 0.0.12</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949019905.html"><FONT COLOR="#000000">Avenger's News System 2.1 Alpha</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949019709.html"><FONT COLOR="#000000">RIG 1.0</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949019321.html"><FONT COLOR="#000000">scroller 1.0</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949018347.html"><FONT COLOR="#000000">Perl EyeP Client 0.1</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949017796.html"><FONT COLOR="#000000">sfront 0.54</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949017631.html"><FONT COLOR="#000000">XFrisk 1.2</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949016202.html"><FONT COLOR="#000000">Moffy 0.0.1</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949015348.html"><FONT COLOR="#000000">Solid POP3 0.14</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949014200.html"><FONT COLOR="#000000">php3guest 1.5</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949013630.html"><FONT COLOR="#000000">crUD 01.27.2000</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949013380.html"><FONT COLOR="#000000">crUD 01.27.2000</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949012979.html"><FONT COLOR="#000000">Free Pascal Compiler 0.99.14</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949012771.html"><FONT COLOR="#000000">gtk-font-hack 0.2-gtk-1.2.6</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949009233.html"><FONT COLOR="#000000">Linux 2.2.15pre5</FONT></A><BR>
-- <A HREF="/news/2000/01/27/949005620.html"><FONT COLOR="#000000">krunseti 0.2.1</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948996446.html"><FONT COLOR="#000000">CompuPic 5.0.1036</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948995905.html"><FONT COLOR="#000000">gfontview 0.3.3</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948995819.html"><FONT COLOR="#000000">authlocal 1.0.2</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948995600.html"><FONT COLOR="#000000">bigwig 1.1</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948995501.html"><FONT COLOR="#000000">CAFire 0.0.11</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948995429.html"><FONT COLOR="#000000">ANVLOGIN 2.0</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948994944.html"><FONT COLOR="#000000">sawmill.el 1.9</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948994810.html"><FONT COLOR="#000000">Perlsh 20000127</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948994776.html"><FONT COLOR="#000000">sitescooper 2.1.2</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948994691.html"><FONT COLOR="#000000">MHDns 1.4</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948994419.html"><FONT COLOR="#000000">JChemPaint 0.5</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948994364.html"><FONT COLOR="#000000">Filesystems HOWTO 0.7.3</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948994343.html"><FONT COLOR="#000000">KSnes9x 1.2</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948993513.html"><FONT COLOR="#000000">Mozilla M13</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948993439.html"><FONT COLOR="#000000">edna 0.3</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948993409.html"><FONT COLOR="#000000">GMasqdialer 0.99.8</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948993341.html"><FONT COLOR="#000000">spliff 0.8</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948992808.html"><FONT COLOR="#000000">MultiSeti 0.3</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948970667.html"><FONT COLOR="#000000">rude 0.50</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948970605.html"><FONT COLOR="#000000">cgi-util++ 0.0</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948970479.html"><FONT COLOR="#000000">Cricket 0.72</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948970458.html"><FONT COLOR="#000000">nuni 0.04</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948970379.html"><FONT COLOR="#000000">Ksetiwatch 0.3.0</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948970358.html"><FONT COLOR="#000000">SiteMgrYAP 0.1.2</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948970322.html"><FONT COLOR="#000000">phpLanParty 0.21</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948970285.html"><FONT COLOR="#000000">Glitter Newsreader 0.1</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948970263.html"><FONT COLOR="#000000">Fastresolve 2.4</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948970164.html"><FONT COLOR="#000000">ColdSync 1.1.2</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948970080.html"><FONT COLOR="#000000">DDD 3.2</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948970032.html"><FONT COLOR="#000000">X Northern Captain 4.2.1</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948969919.html"><FONT COLOR="#000000">abcde 1.0.2</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948969659.html"><FONT COLOR="#000000">Gnapster 1.3.2</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948969551.html"><FONT COLOR="#000000">xmix 1.0 Alpha</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948969488.html"><FONT COLOR="#000000">gtktetcolor 0.3</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948969412.html"><FONT COLOR="#000000">muttzilla 0.40</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948969395.html"><FONT COLOR="#000000">muttzilla 0.40</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948969337.html"><FONT COLOR="#000000">asp2php 0.73.6</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948969217.html"><FONT COLOR="#000000">mod_ticket 1.0</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948969078.html"><FONT COLOR="#000000">MegaHAL for Eggdrop .01</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948968456.html"><FONT COLOR="#000000">Jetty 2.3.5</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948968386.html"><FONT COLOR="#000000">xlpotdb 1.0</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948968341.html"><FONT COLOR="#000000">Koala Complete MUD Server 0.1.1a</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948968255.html"><FONT COLOR="#000000">mcountd 0.4</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948967933.html"><FONT COLOR="#000000">cdbackup 0.5.0</FONT></A><BR>
-- <A HREF="/news/2000/01/27/948967908.html"><FONT COLOR="#000000">The Java SSH/Telnet Application/Applet 2.0 RC1</FONT></A><BR>
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000"><a href="http://slashdot.org"><font color="#000000">slashdot</font></a></FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-- <A HREF="http://slashdot.org/article.pl?sid=00/01/29/1534255"><FONT COLOR="#000000">Petition Apple for Linux QuickTime</FONT></A><BR>
-- <A HREF="http://slashdot.org/article.pl?sid=00/01/29/1223249"><FONT COLOR="#000000">GNUstep 0.6.5 freeze</FONT></A><BR>
-- <A HREF="http://slashdot.org/article.pl?sid=00/01/28/2324203"><FONT COLOR="#000000">YETI@Home</FONT></A><BR>
-- <A HREF="http://slashdot.org/article.pl?sid=00/01/29/1024215"><FONT COLOR="#000000">Documents Unsealed in Microsoft/Caldera Case</FONT></A><BR>
-- <A HREF="http://slashdot.org/article.pl?sid=00/01/29/0837235"><FONT COLOR="#000000">Who Bought Linux.Net?</FONT></A><BR>
-- <A HREF="http://slashdot.org/article.pl?sid=00/01/24/1146250"><FONT COLOR="#000000">E-Mails from (Over?) The Edge</FONT></A><BR>
-- <A HREF="http://slashdot.org/article.pl?sid=00/01/29/0834223"><FONT COLOR="#000000">Linux Kernel 2.3.41</FONT></A><BR>
-- <A HREF="http://slashdot.org/article.pl?sid=00/01/28/2311232"><FONT COLOR="#000000">Congress Still Figuring Out E-Mail</FONT></A><BR>
-- <A HREF="http://slashdot.org/article.pl?sid=00/01/22/1946244"><FONT COLOR="#000000">Sci Fi Literature 101?</FONT></A><BR>
-- <A HREF="http://slashdot.org/article.pl?sid=00/01/28/2318246"><FONT COLOR="#000000">Could Distributed.Net Help the Mars Polar Lander?</FONT></A><BR>
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000"><a href="http://www.securityfocus.com"><font color="#000000">securityfocus</font></a></FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-- <A HREF="http://www.securityfocus.com/level2/?go=news&id=http://www.zdnet.com/zdnn/stories/news/0,4586,2429334,00.html?chkpt=zdnntop"><FONT COLOR="#000000">Win2000 security hole a 'major threat'</FONT></A><BR>
-- <A HREF="http://www.securityfocus.com/level2/?go=news&id=http://www.computerworld.com/home/print.nsf/all/000128e45a"><FONT COLOR="#000000">Visa acknowledges cracker break-ins</FONT></A><BR>
-- <A HREF="http://www.securityfocus.com/level2/?go=news&id=http://www.zdnet.com/sr/stories/column/0,4712,2429536,00.html"><FONT COLOR="#000000">What's Wrong With Microsoft  Security?</FONT></A><BR>
-- <A HREF="http://www.securityfocus.com/level2/?go=news&id=http://www.zdnet.com/pcweek/stories/news/0,4153,2429334,00.html"><FONT COLOR="#000000">Microsoft posts first Win2K security patch</FONT></A><BR>
-- <A HREF="http://www.securityfocus.com/level2/?go=tools&id=1018"><FONT COLOR="#000000">Libnids 1.12</FONT></A><BR>
-- <A HREF="http://www.securityfocus.com/level2/?go=news&id=http://www.theregister.co.uk/000127-000005.html"><FONT COLOR="#000000">New hack attack is greater threat than imagined</FONT></A><BR>
-- <A HREF="http://www.securityfocus.com/level2/?go=news&id=http://www.mercurycenter.com/svtech/news/indepth/docs/hacker012700.htm"><FONT COLOR="#000000">Student charged with hacking</FONT></A><BR>
-- <A HREF="http://www.securityfocus.com/level2/?go=library&id=63"><FONT COLOR="#000000">Building and Managing Virtual Private Networks (book)</FONT></A><BR>
-- <A HREF="http://www.securityfocus.com/level2/?go=library&id=111"><FONT COLOR="#000000">Threats, Vulnerabilities and Real-Worl Responses: The Foundations of the TruSecure Process</FONT></A><BR>
-- <A HREF="http://www.securityfocus.com/level2/?go=library&id=1701"><FONT COLOR="#000000">The Hundredth Window : Protecting Your Privacy and Security in the Age of the Internet (boo</FONT></A><BR>
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000"><a href="http://www.bebits.com"><font color="#000000">bebits</font></a></FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-- <A HREF="http://www.bebits.com/app/706/"><FONT COLOR="#000000">Pe 3.0a3</FONT></A><BR>
-- <A HREF="http://www.bebits.com/app/757/"><FONT COLOR="#000000">Rarscript 1.5</FONT></A><BR>
-- <A HREF="http://www.bebits.com/app/736/"><FONT COLOR="#000000">CD Manager 0.66a beta</FONT></A><BR>
-- <A HREF="http://www.bebits.com/app/174/"><FONT COLOR="#000000">TraX 1.1</FONT></A><BR>
-- <A HREF="http://www.bebits.com/app/785/"><FONT COLOR="#000000">BeMath 1.2.2</FONT></A><BR>
-- <A HREF="http://www.bebits.com/app/784/"><FONT COLOR="#000000">simple blackjack 1</FONT></A><BR>
-- <A HREF="http://www.bebits.com/app/758/"><FONT COLOR="#000000">HtmlTree 0.5.3</FONT></A><BR>
-- <A HREF="http://www.bebits.com/app/783/"><FONT COLOR="#000000">Yacp 0.1</FONT></A><BR>
-- <A HREF="http://www.bebits.com/app/222/"><FONT COLOR="#000000">TicTacToe 1.5</FONT></A><BR>
-- <A HREF="http://www.bebits.com/app/706/"><FONT COLOR="#000000">Pe 3.0a2</FONT></A><BR>
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000"><a href="http://linuxtoday.com"><font color="#000000">linuxtoday</font></a></FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-- <A HREF="http://linuxtoday.com/story.php3?sn=15878"><FONT COLOR="#000000">Linux Journal: KDE--The Next Generation</FONT></A><BR>
-- <A HREF="http://linuxtoday.com/story.php3?sn=15876"><FONT COLOR="#000000">Kernel Cousin gimp-devel #11 Is Out</FONT></A><BR>
-- <A HREF="http://linuxtoday.com/story.php3?sn=15875"><FONT COLOR="#000000">Infoworld: Corel Linux OS ideal for the desktop</FONT></A><BR>
-- <A HREF="http://linuxtoday.com/story.php3?sn=15874"><FONT COLOR="#000000">Technology Evaluation: IBM Jumps on the Linux Bandwagon with Both Feet, Sort Of</FONT></A><BR>
-- <A HREF="http://linuxtoday.com/story.php3?sn=15873"><FONT COLOR="#000000">Tobias Hövekamp: European Union acknowledges</FONT></A><BR>
-- <A HREF=""><FONT COLOR="#000000">&</FONT></A><BR>
-- <A HREF=""><FONT COLOR="#000000">#34;Open Source Software</FONT></A><BR>
-- <A HREF=""><FONT COLOR="#000000">&</FONT></A><BR>
-- <A HREF=""><FONT COLOR="#000000">#34;</FONT></A><BR>
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000"><a href="http://www.linuxtelephony.org"><font color="#000000">linuxtelephony</font></a></FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-- <A HREF="http://www.linuxtelephony.org/article.cgi?i=208&r=0"><FONT COLOR="#000000">Traverse Technologies releases NETspider-U in US</FONT></A><BR>
-- <A HREF="http://www.linuxtelephony.org/article.cgi?i=207&r=0"><FONT COLOR="#000000">Quicknet releases new GPL'd Linux Drivers!</FONT></A><BR>
-- <A HREF="http://www.linuxtelephony.org/article.cgi?i=206&r=0"><FONT COLOR="#000000">Natural Microsystems Delivers Carrier-Class Linux</FONT></A><BR>
-- <A HREF="http://www.linuxtelephony.org/article.cgi?i=205&r=0"><FONT COLOR="#000000">Quicknet is hiring programmers of all kinds!</FONT></A><BR>
-- <A HREF="http://www.linuxtelephony.org/article.cgi?i=204&r=0"><FONT COLOR="#000000">Babylon MLPPP Software Released under GPL</FONT></A><BR>
-- <A HREF="http://www.linuxtelephony.org/article.cgi?i=202&r=0"><FONT COLOR="#000000">Linux Telephony Server Project?</FONT></A><BR>
-- <A HREF="http://www.linuxtelephony.org/article.cgi?i=203&r=0"><FONT COLOR="#000000">Vovida Networks to Hire Telephony Software Engineers</FONT></A><BR>
-- <A HREF="http://www.linuxtelephony.org/article.cgi?i=200&r=0"><FONT COLOR="#000000">SPIRO-Linux Introduces Web-Enabled Phone Administration</FONT></A><BR>
-- <A HREF="http://www.linuxtelephony.org/article.cgi?i=199&r=0"><FONT COLOR="#000000">LinuxTelephony sponsors area at LinuxFest 2000</FONT></A><BR>
-- <A HREF="http://www.linuxtelephony.org/article.cgi?i=198&r=0"><FONT COLOR="#000000">GSM-Mobile Switching Center (MSC) with Linux-PC</FONT></A><BR>
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<TABLE BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#000000" WIDTH="97%"><TR><TD>
-<TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3">
-<TR><TD ALIGN="center" BGCOLOR="#EEEEEE"><B><FONT FACE="Lucida,Verdana,Helvetica,Arial"><FONT COLOR="#000000"><a href="http://www.32bitsonline.com"><font color="#000000">32bitsonline</font></a></FONT></FONT></B></TD></TR><TR><TD BGCOLOR="#FFFFFF"><SMALL><FONT FACE="Lucida,Verdana,Helvetica,Arial">
-- <A HREF="http://www.32bitsonline.com/article.php3?file=issues/200001/homeworld&page=1
-"><FONT COLOR="#000000">Game: Homeworld</FONT></A><BR>
-- <A HREF="http://www.32bitsonline.com/news.php3?news=news/200001/nb200001271a&page=1
-"><FONT COLOR="#000000">DVD Lawsuit Spreads Its Own 'Trade Secrets'</FONT></A><BR>
-- <A HREF="http://www.32bitsonline.com/news.php3?news=news/200001/nb200001272&page=1
-"><FONT COLOR="#000000">Register.com Adds 'One-step' Domain Registration</FONT></A><BR>
-- <A HREF="http://www.32bitsonline.com/article.php3?file=issues/200001/webevent&page=1
-"><FONT COLOR="#000000">WebEvent: Keeping you organized</FONT></A><BR>
-- <A HREF="http://www.32bitsonline.com/news.php3?news=news/200001/nb200001273a&page=1
-"><FONT COLOR="#000000">Y2K Officers Defend $100 Bil Investment</FONT></A><BR>
-- <A HREF="http://www.32bitsonline.com/article.php3?file=issues/200001/jan2000_john_berger&page=1
-"><FONT COLOR="#000000">DON'T BE FOOLED</FONT></A><BR>
-- <A HREF="http://www.32bitsonline.com/news.php3?news=news/200001/nb200001274&page=1
-"><FONT COLOR="#000000">Microsoft Scorns Think-Tank's Breakup Idea</FONT></A><BR>
-- <A HREF="http://www.32bitsonline.com/news.php3?news=news/200001/nb200001275a&page=1
-"><FONT COLOR="#000000">Yahoo Accused Of Stalking Internet Users</FONT></A><BR>
-- <A HREF="http://www.32bitsonline.com/news.php3?news=news/200001/nb200001276a&page=1
-"><FONT COLOR="#000000">eToys.com Settles Spat With Swiss Artist Group</FONT></A><BR>
-- <A HREF="http://www.32bitsonline.com/
-"><FONT COLOR="#000000">[more articles/news]</FONT></A><BR>
-&nbsp;</FONT></SMALL></TD></TR></TABLE></TD></TR></TABLE><P>
-<BR><BR></FONT>
-</TD></TR></TABLE>
-<TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0">
-<TR BGCOLOR="#000000"><TD><IMG SRC="image4" WIDTH="1" HEIGHT="2" ALT=""></TD></TR></TABLE>
-</CENTER>
-<TABLE CELLSPACING="0" CELLPADDING="2" WIDTH="100%" BORDER="0"><TR>
-<TD VALIGN="top" ALIGN="center"><FONT FACE="Lucida,Verdana,Helvetica,Arial"><SMALL>copyright © 1997-2000 <A HREF="http://andover.net">Andover.Net</A> -
-icons courtesy of <A HREF="mailto:tigert@gimp.org">tigert@gimp.org</A> -
-code revision <A HREF="http://freshmeat.net/ChangeLog">20000101</A> -
-our <A HREF="http://www.andover.net/privacy.html">privacy policy</A></SMALL></FONT></TD>
-</TR></TABLE>
-</BODY>
-</HTML>
-
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/ss.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkHTML/ss.rb
deleted file mode 100644 (file)
index 1c13d7a..0000000
+++ /dev/null
@@ -1,436 +0,0 @@
-#!/usr/bin/env ruby
-#
-# This script implements the "ss" application.  "ss" implements
-# a presentation slide-show based on HTML slides.
-# 
-require 'tk'
-require 'tkextlib/tkHTML'
-
-file = ARGV[0]
-
-class TkHTML_File_Viewer
-  include TkComm
-
-# These are images to use with the actual image specified in a
-# "<img>" markup can't be found.
-#
-@@biggray = TkPhotoImage.new(:data=><<'EOD')
-    R0lGODdhPAA+APAAALi4uAAAACwAAAAAPAA+AAACQISPqcvtD6OctNqLs968+w+G4kiW5omm
-    6sq27gvH8kzX9o3n+s73/g8MCofEovGITCqXzKbzCY1Kp9Sq9YrNFgsAO///
-EOD
-
-@@smgray = TkPhotoImage.new(:data=><<'EOD')
-    R0lGODdhOAAYAPAAALi4uAAAACwAAAAAOAAYAAACI4SPqcvtD6OctNqLs968+w+G4kiW5omm
-    6sq27gvH8kzX9m0VADv/
-EOD
-
-  def initialize(file = nil)
-    @root  = TkRoot.new(:title=>'HTML File Viewer', :iconname=>'HV')
-    @fswin = nil
-
-    @html = nil
-    @html_fs = nil
-
-    @hotkey = {}
-
-    @applet_arg = TkVarAccess.new_hash('AppletArg')
-
-    @images   = {}
-    @old_imgs = {}
-    @big_imgs = {}
-
-    @last_dir = Dir.pwd
-
-    @last_file = ''
-
-    @key_block = false
-
-    Tk::HTML_Widget::ClippingWindow.bind('1', 
-                                         proc{|w, ksym| key_press(w, ksym)}, 
-                                         '%W Down')
-    Tk::HTML_Widget::ClippingWindow.bind('3', 
-                                         proc{|w, ksym| key_press(w, ksym)}, 
-                                         '%W Up')
-    Tk::HTML_Widget::ClippingWindow.bind('2', 
-                                         proc{|w, ksym| key_press(w, ksym)}, 
-                                         '%W Down')
-
-    Tk::HTML_Widget::ClippingWindow.bind('KeyPress', 
-                                         proc{|w, ksym| key_press(w, ksym)}, 
-                                         '%W %K')
-
-    ############################################
-    #
-    # Build the half-size view of the page
-    #
-    menu_spec = [
-      [['File', 0], 
-        ['Open',        proc{sel_load()},   0], 
-        ['Full Screen', proc{fullscreen()}, 0], 
-        ['Refresh',     proc{refresh()},    0], 
-        '---',
-        ['Exit', proc{exit}, 1]]
-    ]
-
-    mbar = @root.add_menubar(menu_spec)
-
-    @html = Tk::HTML_Widget.new(:width=>512, :height=>384, 
-                                :padx=>5, :pady=>9, 
-                                :formcommand=>proc{|*args| form_cmd(*args)},
-                                :imagecommand=>proc{|*args|
-                                  image_cmd(1, *args)
-                                }, 
-                                :scriptcommand=>proc{|*args|
-                                  script_cmd(*args)
-                                }, 
-                                :appletcommand=>proc{|*args|
-                                  applet_cmd(*args)
-                                }, 
-                                :hyperlinkcommand=>proc{|*args| 
-                                  hyper_cmd(*args)
-                                }, 
-                                :fontcommand=>proc{|*args|
-                                  pick_font(*args)
-                                }, 
-                                :appletcommand=>proc{|*args|
-                                  run_applet('small', *args)
-                                }, 
-                                :bg=>'white', :tablerelief=>:raised)
-
-    @html.token_handler('meta', proc{|*args| meta(@html, *args)})
-
-    vscr = @html.yscrollbar(TkScrollbar.new)
-    hscr = @html.xscrollbar(TkScrollbar.new)
-
-    Tk.grid(@html, vscr, :sticky=>:news)
-    Tk.grid(hscr,       :sticky=>:ew)
-    @root.grid_columnconfigure(0, :weight=>1)
-    @root.grid_columnconfigure(1, :weight=>0)
-    @root.grid_rowconfigure(0, :weight=>1)
-    @root.grid_rowconfigure(1, :weight=>0)
-
-    ############################################
-
-    @html.clipwin.focus
-
-    # If an arguent was specified, read it into the HTML widget.
-    #
-    Tk.update
-    if file && file != ""
-      load_file(file)
-    end
-  end
-
-  #
-  # A font chooser routine.
-  #
-  # html[:fontcommand] = pick_font
-  def pick_font(size, attrs)
-    # puts "FontCmd: #{size} #{attrs}"
-    [ ((attrs =~ /fixed/)? 'courier': 'charter'), 
-      (12 * (1.2**(size.to_f - 4.0))).to_i, 
-      ((attrs =~ /italic/)? 'italic': 'roman'), 
-      ((attrs =~ /bold/)? 'bold': 'normal') ].join(' ')
-  end
-
-  # This routine is called to pick fonts for the fullscreen view.
-  #
-  def pick_font_fs(size, attrs)
-    baseFontSize = 24
-
-    # puts "FontCmd: #{size} #{attrs}"
-    [ ((attrs =~ /fixed/)? 'courier': 'charter'), 
-      (baseFontSize * (1.2**(size.to_f - 4.0))).to_i, 
-      ((attrs =~ /italic/)? 'italic': 'roman'), 
-      ((attrs =~ /bold/)? 'bold': 'normal')  ].join(' ')
-  end
-
-  #
-  #
-  def hyper_cmd(*args)
-    puts "HyperlinkCommand: #{args.inspect}"
-  end
-
-  # This routine is called to run an applet
-  #
-  def run_applet(size, w, arglist)
-    applet_arg.value = Hash[*simplelist(arglist)]
-
-    return unless @applet_arg.key?('src')
-
-    src = @html.remove(@applet_arg['src'])
-
-    @applet_arg['window'] = w
-    @applet_arg['fontsize'] = size
-
-    begin
-      Tk.load_tclscript(src)
-    rescue => e
-      puts "Applet error: #{e.message}"
-    end
-  end
-
-  #
-  #
-  def form_cmd(n, cmd, *args)
-    # p [n, cmd, *args]
-  end
-
-  #
-  #
-  def move_big_image(b)
-    return unless @big_imgs.key?(b)
-    b.copy(@big_imgs[b])
-    @big_imgs[b].delete
-    @big_imgs.delete(b)
-  end
-
-  def image_cmd(hs, *args)
-    fn = args[0]
-
-    if @old_imgs.key?(fn)
-      return (@images[fn] = @old_imgs.delete(fn))
-    end
-
-    begin
-      img = TkPhotoImage.new(:file=>fn)
-    rescue
-      return ((hs)? @@smallgray: @@biggray)
-    end
-
-    if hs
-      img2 = TkPhotoImage.new
-      img2.copy(img, :subsample=>[2,2])
-      img.delete
-      img = img2
-    end
-
-    if img.width * img.height > 20000
-      b = TkPhotoImage.new(:width=>img.width, :height=>img.height)
-      @big_imgs[b] = img
-      img = b
-      Tk.after_idle(proc{ move_big_image(b) })
-    end
-
-    @images[fn] = img
-
-    img
-  end
-
-  #
-  # This routine is called for every <SCRIPT> markup
-  #
-  def script_cmd(*args)
-    # puts "ScriptCmd: #{args.inspect}"
-  end
-
-  # This routine is called for every <APPLET> markup
-  #
-  def applet_cmd(w, arglist)
-    # puts "AppletCmd: w=#{w} arglist=#{arglist}"
-    #TkLabel.new(w, :text=>"The Applet #{w}", :bd=>2, :relief=>raised)
-  end
-
-  # This binding fires when there is a click on a hyperlink
-  #
-  def href_binding(w, x, y)
-    lst = w.href(x, y)
-    unless lst.empty?
-      process_url(lst)
-    end
-  end
-
-  #
-  #
-  def sel_load
-    filetypes = [
-      ['Html Files', ['.html', '.htm']], 
-      ['All Files', '*']
-    ]
-
-    f = Tk.getOpenFile(:initialdir=>@last_dir, :filetypes=>filetypes)
-    if f != ''
-      load_file(f)
-      @last_dir = File.dirname(f)
-    end
-  end
-
-  # Clear the screen.
-  #
-  def clear_screen
-    if @html_fs && @html_fs.exist?
-      w = @html_fs
-    else
-      w = @html
-    end
-    w.clear
-    @old_imgs.clear
-    @big_imgs.clear
-    @hotkey.clear
-    @images.each{|k, v| @old_imgs[k] = v }
-    @images.clear
-  end
-
-  # Read a file
-  #
-  def read_file(name)
-    begin
-      fp = open(name, 'r')
-      ret = fp.read(File.size(name))
-    rescue
-      ret = nil
-      fp = nil
-      Tk.messageBox(:icon=>'error', :message=>"fail to open '#{name}'", 
-                    :type=>:ok)
-    ensure
-      fp.close if fp
-    end
-    ret
-  end
-
-  # Process the given URL
-  #
-  def process_url(url)
-    case url[0]
-    when /^file:/
-      load_file(url[0][5..-1])
-    when /^exec:/
-      Tk.ip_eval(url[0][5..-1].tr('\\', ' '))
-    else
-      load_file(url[0])
-    end
-  end
-
-  # Load a file into the HTML widget
-  #
-  def load_file(name)
-    return unless (doc = read_file(name))
-    clear_screen()
-    @last_file = name
-    if @html_fs && @html_fs.exist?
-      w = @html_fs
-    else
-      w = @html
-    end
-    w.configure(:base=>name)
-    w.parse(doc)
-    w.configure(:cursor=>'top_left_arrow')
-    @old_imgs.clear
-  end
-
-  # Refresh the current file.
-  #
-  def refresh(*args)
-    load_file(@last_file) if @last_file
-  end
-
-  # This routine is called whenever a "<meta>" markup is seen.
-  #
-  def meta(w, tag, alist)
-    v = Hash[*simplelist(alist)]
-
-    if v.key?('key') && v.key?('href')
-      @hotkey[v['key']] = w.resolve(v['href'])
-    end
-
-    if v.key?('next')
-      @hotkey['Down'] =v['next']
-    end
-
-    if v.key?('prev')
-      @hotkey['Up'] =v['prev']
-    end
-
-    if v.key?('other')
-      @hotkey['o'] =v['other']
-    end
-  end
-
-  # Go from full-screen mode back to window mode.
-  #
-  def fullscreen_off
-    @fswin.destroy
-    @root.deiconify
-    Tk.update
-    @root.raise
-    @html.clipwin.focus
-    clear_screen()
-    @old_imgs.clear
-    refresh()
-  end
-
-  # Go from window mode to full-screen mode.
-  #
-  def fullscreen
-    if @fswin && @fswin.exist?
-      @fswin.deiconify
-      Tk.update
-      @fswin.raise
-      return
-    end
-
-    width  =  @root.winfo_screenwidth
-    height =  @root.winfo_screenheight
-    @fswin = TkToplevel.new(:overrideredirect=>true, 
-                            :geometry=>"#{width}x#{height}+0+0")
-
-    @html_fs = Tk::HTML_Widget.new(@fswin, :padx=>5, :pady=>9, 
-                                   :formcommand=>proc{|*args|
-                                     form_cmd(*args)
-                                   },
-                                   :imagecommand=>proc{|*args| 
-                                     image_cmd(0, *args)
-                                   }, 
-                                   :scriptcommand=>proc{|*args|
-                                     script_cmd(*args)
-                                   }, 
-                                   :appletcommand=>proc{|*args|
-                                     applet_cmd(*args)
-                                   }, 
-                                   :hyperlinkcommand=>proc{|*args| 
-                                     hyper_cmd(*args)
-                                   }, 
-                                   :appletcommand=>proc{|*args|
-                                     run_applet('big', *args)
-                                   }, 
-                                   :fontcommand=>proc{|*args|
-                                     pick_font_fs(*args)
-                                   }, 
-                                   :bg=>'white', :tablerelief=>:raised, 
-                                   :cursor=>:tcross) {
-      pack(:fill=>:both, :expand=>true)
-      token_handler('meta', proc{|*args| meta(self, *args)})
-    }
-
-    clear_screen()
-    @old_imgs.clear
-    refresh()
-    Tk.update
-    @html_fs.clipwin.focus
-  end
-
-  #
-  #
-  def key_press(w, keysym)
-    return if @key_block
-    @key_block = true
-    Tk.after(250, proc{@key_block = false})
-
-    if @hotkey.key?(keysym)
-      process_url(@hotkey[keysym])
-    end
-    case keysym
-    when 'Escape'
-      if @fswin && @fswin.exist?
-        fullscreen_off()
-      else
-        fullscreen()
-      end
-    end
-  end
-end
-############################################
-
-TkHTML_File_Viewer.new(file)
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkimg/demo.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkimg/demo.rb
deleted file mode 100644 (file)
index a0c4d1b..0000000
+++ /dev/null
@@ -1,1478 +0,0 @@
-#!/usr/bin/env ruby
-#
-#  Tk::Img demo
-#
-#    --  This script is based on demo.tcl of Tcl/Tk's 'Img' extention. 
-#        Image data in this script is those of demo.tcl.
-#        Please read 'license_terms_of_Img_extension' file.
-#
-require 'tk'
-require 'tkextlib/tkimg'
-
-#
-# Make the Image format available.
-#
-class TkImg_demo
-  def initialize
-    img_version = Tk::Img.package_version
-
-    @typeFrame = Hash.new
-    @imgPriv = Hash.new
-
-    root = TkRoot.new(:title=>'Tests for available image formats')
-
-    root.winfo_children.each{|w| w.destroy}
-    TkImage.names{|img| img.delete}
-
-    f = TkFrame.new
-    TkButton.new(f, :text=>'Dismiss', :command=>proc{exit}).pack(:side=>:left)
-    f.pack(:side=>:top, :expand=>:y, :fill=>:both)
-
-    TkMessage.new(:aspect=>900, :text=>format('This page shows the available image formats of the Img extension (Img version %s, using Tcl/Tk %s)', img_version, Tk::TK_PATCHLEVEL)).pack(:side=>:top, :expand=>:y, :fill=>:both)
-  end
-
-##############################
-
-  def update_animated_gif(w, method, num)
-    return unless @imgPriv[w]
-
-    if @imgPriv[w][:args]
-      im = TkPhotoImage.new
-      im.copy(@imgPriv[w][num])
-      num += 1
-      begin
-        im.configure(@imgPriv[w][:args].merge(:format=>[:gif, {:index=>num}]))
-        im.configure(:data=>'', :file=>'') #free storage
-        @imgPriv[w][num] = im
-      rescue
-        @imgPriv[w].delete(:args)
-        if num > 1
-          num = 0
-          im = @imgPriv[w][num]
-        else
-          # this is not an animated GIF; just stop
-          @imgPriv[w].delete(0)
-          return
-        end
-      end
-    else
-      num += 1
-      num = 0 unless @imgPriv[w][num]
-      im = @imgPriv[w][num]
-    end
-    begin
-      w.__send__(method, im)
-      Tk.update_idletasks
-      Tk.after(20, proc{update_animated_gif(w, method, num)})
-    rescue
-      @imgPriv[w].delete(:args)
-      @imgPriv[w].each{|im|
-        @im.delete
-        @imgPriv.delete(im)
-      }
-    end
-  end
-
-  def show_animated_gif(keys)
-    w = TkLabel.new
-    begin
-      im = TkPhotoImage.new(keys.merge(:format=>[:gif, {:index=>0}]))
-      im.configure(:data=>'', :file=>'', :format=>'') #free storage
-      w.image(im)
-      @imgPriv[w] ||= Hash.new
-      @imgPriv[w][0] = im
-      @imgPriv[w][:args] = keys
-      Tk.update_idletasks
-      Tk.after(20, proc{update_animated_gif(w, :image, 0)})
-    rescue => e
-      w.configure(:text=>"error displaying animated gif:\n#{e.message}", 
-                  :image=>'', :relief=>:ridge)
-    end
-    w.pack
-  end
-
-  def show_image(fmt, type, data)
-    fmt = fmt.to_s.capitalize
-    unless @typeFrame[fmt]
-      @typeFrame[fmt] = TkFrame.new.pack(:side=>:top, :expand=>true, :fill=>:x)
-      TkLabel.new(@typeFrame[fmt], :text=>"#{fmt} :  ").pack(:side=>:left)
-    end
-    begin
-      f = TkFrame.new(@typeFrame[fmt], 
-                      :borderwidth=>2, :relief=>:ridge).pack(:side=>:left)
-      im = TkPhotoImage.new(:data=>data)
-      im['data'] = ''
-      TkLabel.new(f, :image=>im).pack
-      TkLabel.new(f, :text=>type, :borderwidth=>0, :pady=>0, :padx=>2, 
-                  :font=>'Helvetica 8').pack
-    rescue => e
-      TkMessage.new(f, :text=>"error displaying #{type} image: #{e.message}", 
-                    :aspect=>250).pack
-    end
-    Tk.update
-  end
-
-end
-
-##############
-
-demo = TkImg_demo.new
-
-##############
-
-demo.show_animated_gif(:data=><<'ENDofIMG')
-R0lGODlhYgIEAIIAAQAAACQAJEkASW0AbZIAkrYAttsA2/8A/yH/C05FVFNDQVBFMi4wAwEA
-AAAh+QQABgD/ACwAAAAAYgIEAAIDuUg63CMwwiCCvQAHwLv/YCiOZGmeaKqubOu+pZXNV03d
-kuAwysLoucjNlpFtYMikcslsOp+ijbRow1EiD12jtyA4INnJZGg8HmfQtHrNbrPP6KqlEgRq
-B17vzi6ukKVmHXBuhIWGh4RTcXJ0QQ8OeVx6XzlWVTRoiJqbnJ0tGmUXdDhgd1uTP2FCo5dT
-g56wsbKaoYBzVlimPJJ7QX9EirPCw8RttTZ1ul29Er81mMXR0tMvxzXJO1wAACH5BAAGAP8A
-LAAAAABiAgQAAgPdCLrc/jDKSau9OOuNAwjgB46kEJjnKazr0A5wTBDDbBc4buz74f/AoHBI
-LBqPSCGPh7M5abQYTOBysVYprAlFCo0+YI9CzCmbz+i0es1uu9/wOFrsqYtE3S73yq9SpTBP
-BDk5PEmHiImKRQYHTISDNjWTMX9UfFuZIFwkY3RhcqGio6SlpqeoqRt2dXmuWyqZV1Z/UjM1
-ToQFS46Lvr/AQUu6BYK4gJe0V7Eprl+sXqrS09TV1tfYbKxhziqxmFOAgYKDOrs9wenqSY07
-uznklFKXmCzN3aB22fv81AAAIfkEAAYA/wAspgAAABgBBAACA+YIEQrNS61Jg1hX6C2GHiBI
-DERpFkShFkZrHHAsz3Rt06/Lrqk5jqFQ58PheI5B0s+HWrFch9dtSp26dDyULwnqeIoay+Qi
-rkAcZ4YDrVY/IOaxGGz0IkPLknN3rfr/MToGTilaJSRcR3RgikF5JyuDfYCUVFeDKj0mSkle
-Q4sYcXFvaA1rDxIScKIZYUVfiUA+PU6Tlbc4US07PJs/nYqLQ4kieZkqki24yzJXe5qziEHD
-dHNloqqpbqfcbquiGK2MH0mzkJG2zLfOhObSQsHC1OVKTLVQUurrWL1biZ9grIFLs2YbNwAh
-+QQABgD/ACyHAAAAVwEEAAID/ggQy94uyCloFTgPsYf/AyGOYmGaRnoYR+u+cCzPcZqeJyl6
-xMdhm4zwUgkUJ8iFkqFgKptQCQRJMRqJwqAPtCMVCDhDwcaimc9mslhs0vXeoJ9caL1Q748n
-tMl89PFURURXQx4cH11eYChjKmiPkC5kOGCVIyCYWkN2VoB8fXtOS34RgJybGkCZbosnZJGw
-aCw3bF9tXSFxhqhXnb5JSUt6CsKlxneDqHIdqyEjOI0qZbHUMGq1bs6Yh3NDdb93U1Ki41Hi
-poSEqYZcuYphr9XykjbQrLnbHbwYEkd4xQ2GERvoZxQ6LIUOrWLlKtq8h5Ps6ci0SxknQOVE
-Ddy4HvGPQVMIC1Hk4QZavIfUZq3J8YUEPl0WL3qaIIwjMQAh+QQABgD/ACxlAAAAmwEEAAID
-/ggRCr1qSSlWDVXorYfwQxgSxECSBVGsheEaB3zMdG3feF7DbsumJ5JJJPpwjhnLZMloPp4M
-h3RKrVqv2KxW2nRGmBQlBnP0dD7EYfDne8l08DjcbfgFhaW0cX8ciy9LD05RUREOhQ2GYEoa
-ZGQbIGlDJmsqPy9ymZo0PD11Kyp3anogfX5igamGh1utrq+uhFBQYBm2j5CSIncnLHWYm8Fx
-bj52QZOSSBeNp2BfEIVeU4PUi0mOSJFoaXcpvnTC4TnExiejRdrK2IsSgrKIsPHyr4OJ7GHL
-thxmkSN4vZdauIghriCnF2yAmBOCzoiZPkkAOav3JEs0d+z0ZdPFMgvFJWAGCxL7pPBYHiJ8
-TElcNGuey5cwW97Dp6yDpBK82LgJaXAki47IGqq7xm4WPCoAACH5BAAGAP8ALEYAAADZAQQA
-AgP+GKC7yiHKGYSo1Wo9xPgfMYhEWRZoYaiGcbxwLM90Tbf4ihKFSYqgjnBDjFwuGMoD0Fgy
-n9CodEqtWq/YrHa7hTgaTSXySCZ6PMFQyJdC5Vy2uFz+VqV8pFH6czYfM0pKYF4MYE0OD4ET
-Y4BEfHt6eDt2OAdwc5iZLzhtO3iQIBYdGhgWpYoTYUxOXK2ur7CxrV5fqBR/GWZDaT9sPG4s
-l5rDNi4tdpOfQGlno6SmSEkUiISDT4mJtYpkubq7Qb0mbSuVwsTnmzltPJ96oY9+uNGKiLWy
-9/j5+l3YqrZl3UT12YPnxLg36BLCULdOmbt38bjNC3TISSEqSyRQE1M8yo8QXiMk/XJTSaFC
-hg19gIp4auI0Vhf3yZxJUx8EbP/K6EIDLqSvgy1MJlSno0cPlcsg+gEkTZBGVlMAACH5BAAG
-AP8ALCYAAAAXAgQAAgP+CAHaHQtKKGioV+itRx/gQIBESRTnWRRGexhHLM90bd9127Jrao7A
-kMfDKVommMnisYwwHM+odEqtWq/YrHbL7Xq/YIaTCVEoj5YiZ8gmiX6l1UrnguHu+DvdIEeh
-4EJsAkRqGBoXZxJmEU2NYo9mYoyJFRwZG22Bbz99LHR5oKEydDxyPiUimiCDrIeViK9ni4wP
-kGG3uLm6u7y9tmO1iRKuGZeYmUDJJn18OqLPoKQ9fyZuga2Er4fCioqRTVFlZWTcxJVFQx9u
-yioqPM7Q8TbSptRBI0KthRvF3OLitnwJHEiwoMErk5jMOmMIVqFMIdjFmeMJhh15GF/o6HRK
-qhq+VayyWYLlr5GTcVjAlTS0DyIJOBPlfMqI0WKzeoA+htCnph+3SFAOCh1KtGivk/+EnWs5
-KJDEFMzg0ZS3BydMVSL5aStJ6woAIfkEAAYA/wAsBwAAAFUCBAACA/4ICqEd8MUJRQ0i65GH
-F55HEMM4FkShFgZrHHAsz3Rt10aer6s5lqEQqKPRYI6WI+XBYDYYi+diSq1ar9isdsvter/g
-sHhMLkebUEhziUkai8ROMOQ78Vy6m37Pf+1aPXUlJEJCcG9ubGpOaWlPUowSSxYZbW1FHCBz
-g3V3eC98oaIwfi07KCkmQIQfH4eUsBdLa4tnUma4ubq7vL2+v1mPUGiKE7GVh4V0Pz53pjmj
-0X06LD2oqqxBG4dKiRS0TrdTkcURlBWwmJqaIqsmqDw6oNL0NPKeddnaHJlwl0qKGgkTB6yg
-wYMIEyq8Qm5RsXOW4PCbGIREp3jy5tXbWE4KUCBsm4aI5HYuSUBJDoZZgQTu4aVkm5ZdVCFv
-o01SB/589AFkzshXAE8KXEi0qNGjSMlEajnpJcxN+exUy3OTIzUeUXvue4WsXC0mWAAAIfkE
-AAYA/wAsAAAAAGICBAACA/4YotIuA8JBKxkk60KKN6BxiEdpnmiqrmhoeF6naVXdRI/DBAq/
-8MAAQDgsEgHIpHLJbDqf0Kh0Sq1ar9isdsvterdEIW8IJAfPv0XOEalZZjJYwcWq2++i0Fwu
-m2HcbWs5PWoMgm01F4obci90d5CRJS5yHBw0GX8UEpw6D4RnY0FGYUVfp6ipqqusra6vXKVk
-pqFBhYM5gYkYcJWOIZLBdnovMH2YbjcSOLc+hA2GyoB/cBmWe8DC2ivExpdw05vMn4W1o2Wi
-sOrr7O3u7/BVoujz5mrQhxNuF7zWHTCPtgmcNALEHmPg+NnohOvHs3yILPRjBBAYiYHaXBRD
-6CtnmiBP5mqZGhmvpMmTKFOqbBJGTEgg+D5GlFjt2pyAGIVR4lNNU7JxnhwCACH5BAAGAP8A
-LAAAAABiAgQAAgPtWLZ7/jDKSaU5rOhCuu9DKA5CKJRnGgjB6rJt3AIxDdzBbet87//AoHBI
-LBqPyKRyyWw6n9CodOrL8ay5rFa2YsG8qRNJXAoRRB8CZ6NgYCrweJxhUNjd8rz+QWevPwMg
-ImUoYWEtX1wzNFg2jVSQkZKTlJWWl5iZTo+OW4qIMYZhJKQjgWlqbHQXe61wFwt2bQ2utROw
-sX6oZqYoY4YvLp81WY47msjJysvMzc7PxjPEw2DVKWOmvKceaxurtuB8GLl1Dazhtn0bqGdn
-vb/AXsPE0dD29/j5+vvLVtHzJ7qIKpSNXSpVtNCly1AAACH5BAAGAP8ALAAAAABiAgQAAgPV
-eLq8diYWUwqxJJOx9/iDEIpCaZpBmQZs6wYAC8QwPd94ru987//AoHBILBqPyKRyyWw6n9Ao
-Elaj0l4tlYC1PZVCoHBnnLFUJpF0Y81uOyCTc0Wj4YRBJO9qu8LKqjaAUoOEhYaHiImKi4yN
-TzUxN1STflxZXiZgInccdGZyaQ9uo24PoXFmdHacJCOYKXx8lZRXM5COuLm6u7y9vr+KtJSz
-e1perpwZnRqfaGqk0GunZxd0yh54mq8qxFaRwODh4uPk5eaEVVbdxpibm3fWZXLOotEAADs=
-ENDofIMG
-
-demo.show_image('bmp', '1-bit', <<'ENDofIMG')
-Qk3OAQAAAAAAAD4AAAAoAAAAIgAAADIAAAABAAEAAAAAAJABAABtCwAAbQsAAAIAAAACAAAA
-MzPMAMwzMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAZmTKAAAAAABIRIwAAAAAAEZAigAAAAAAQECIAAAAAAAAAAgAAAAAAAAEAA
-AAAAAAABQAAAAAAAAAPAAAAAAAAAB+AAAAAAAAAC4AAAAAAAAALgAAAAAAAAAsAAAAAAAAAC
-wAAAAAAAAALgAAAAAAAABuAAAAAAAAAG4AAAAAAAAAbgAAAAAAAABuAAAAAAAAAG4AAAAAAA
-AAfgAAAAAAAAA+AAAAAAAAADcAAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD+AAAAAAAAAP4AAAA
-AAAAA/gAAAAAAAAD4AAAAAAAAAHgAAAAAAAAAfAAAAAAAAAA+AAAAAAAAAB8AAAAAAAAADgA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-ENDofIMG
-
-demo.show_image('bmp', '4-bit', <<'ENDofIMG')
-Qk1aBAAAAAAAAHIAAAAoAAAAIgAAADIAAAABAAQAAAAAAOgDAABtCwAAbQsAAA8AAAAPAAAA
-////AAD//wDMzP8AmZn/AGaZ/wAzM8wAmZnMAGaZzAAzZswAzMyZAJmZmQDMZjMAZjNmADMz
-ZgBmMzMABWMgAAAAAAAAAAAAAAAAAAAAAAAFVVVVVVVVVVVVVVVVVVVVUAAAAAVVVVVVVVVV
-VVVVVVVVVVVQAAAABVVVVVVVVVVVVVVVVVVVVVAAAAAFVVVVVVVVVVVVVVVVVVVVUAAAAAVV
-VVVVVVVVVVVVVVVVVVWAAAAABVVVVVVVVVVVVVVVVVVVVVAAAAAFVVBVU3VSVVNVB1UFBVVV
-UAAAAAVVUFU1VVNVVVUFVQBVVVVgAAAABVVQVVUFU1VVVQVVBVVVVTAAAAAIVVBVVVVTVXVV
-BVUFVVVVMAAAAAVVVVVVVVFVFVVVVQVVVVUgAAAABVVVVVVVVVUFVVVVVVVVVSAAAAAHVVVV
-VVVVW5tVVVVVVVVVAAAAAAZVVVVVVVW8u2VVVVVVVVUAAAAAA1VVVVVVW7W7tVVVVVVVVQAA
-AAADVVVVVVWCtbuzVVVVVVVVAAAAAANVVVVVVVW1vrJVVVVVVVUAAAAAAlVVVVVVWLW7UFVV
-VVVVVQAAAAACVVVVVVVatbtVVVVVVVVVAAAAAABVVVVVVVq3u8NVVVVVVVUAAAAAAFVVVVVV
-XrS74VVVVVVVVQAAAAAAVVVVVVWLtbuyVVVVVVVVAAAAAABVVVVVVUu1u7BVVVVVVVUAAAAA
-AFVVVVVVO7W7sFVVVVVVVQAAAAAAVVVVVVUbtbu6VVVVVVVVAAAAAABVVVVVVSu9u1VVVVVV
-VVUAAAAAAFVVVVVVJb67tVVVVVVVVQAAAAAAVVVVVVVVu6u7VVVVVVVVAAAAAABVVVVVVVW7
-u7slVVVVVVUAAAAAAFVVVVVVVbu7u1VVVVVVVQAAAAACVVVVVVVVu7u7wlRVVVVVAAAAAAJV
-VVVVVVW7u7uwV1VVVVUAAAAAA1VVVVVVVbu7u7BVhVVVVSAAAAADVVVVVYVVu7vFAFUVVVVV
-MAAAAAZVVVVVhVUbu7VVVRVXVVVgAAAAB1VVVVVVVVu7u1VVFVFVVVAAAAAFVVVVVVhVVLu7
-xVVVVVVVgAAAAAVVVVVVUVVVK7u1VVVVVVVQAAAACFVVVVhRVVVQq7VVVVVVVVAAAAAFVVVV
-VFV1VVUgBVVVVVVVUAAAAAVVVVVUVRVVVVVVVVVVVVVQAAAABVVVVViFUVVVVVVVVVVVVVAA
-AAAFVVVVVRVUFVVVVVVVVVVVUAAAAAVVVVVVVVVVVVVVVVVVVVVQAAAABVVVVVVVVVVVVVVV
-VVVVVVIAAAAFVVVVVVVVVVVVVVVVVVVVUQAAAAVVVVVVVVVVVVVVVTdVVVVWAAAAAAAhNnWF
-VVVVVVcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==}
-ENDofIMG
-
-if false
-demo.show_image('bmp', '4-bit-RLE', <<'ENDofIMG')
-Qk1sAwAAAAAAAHYAAAAoAAAAIgAAADIAAAABAAQAAgAAAPYCAAAAAAAAAAAAABAAAAAQAAAA
-////AMzM/wAA//8AmZn/AJmZzABmmcwAMzPMADNmzABmmf8AmZmZAMxmMwBmM2YAZjMzADMz
-ZgDMzJkAAAAAAAAGBkMQABwAAAACBh5mAmAAAAIGHmYCYAAAAgYeZgJgAAACBh5mAmAAAAIG
-HmYCcAAAAgYeZgJgAAAAIgZmYGZjVmFmY2YFZgYGZmZgAAAAACIGZmBmNmZjZmZmBmYAZmZm
-QAAAAAAiBmZgZmYGY2ZmZgZmBmZmZjAAAAAAIgdmYGZmZmNmVmYGZgZmZmYwAAAAAgYKZgAW
-YmYmZmZmBmZmZhAAAAACBg5mAgYOZgIQAAACBQxmAARq6g5mAgAAAAIEDGYABquqRgAMZgIA
-AAACAwpmAAhqpqqmDGYCAAAAAgMKZgAIcaaqowxmAgAAAAIDDGYABqasoQAMZgIAAAACAQpm
-AAhnpqpgDGYCAAAAAgEKZgAGaaaqAA5mAgAAAAIACmYACGmlqrMMZgIAAAACAApmAAhsqKrC
-DGYCAAAAAgAKZgAIeqaqoQxmAgAAAAIACmYACIqmqqAMZgIAAAACAApmAAg6pqqgDGYCAAAA
-AgAKZgAIKqaqqQxmAgAAAAIACmYABhqtqgAOZgIAAAACAApmAAgWrKqmDGYCAAAAAgAMZgAG
-qpqqAAxmAgAAAAIADGYACKqqqhYKZgIAAAACAAxmAAaqqqoADGYCAAAAAgEMZgAKqqqqsWgA
-CGYCAAAAAgEMZgAKqqqqoGUACGYCAAAAAgMMZgAUqqqqoGZ2ZmZmEAAAAgMIZgAYdmaqqrYA
-ZiZmZmYwAAACBAhmABh2ZiqqpmZmJmVmZkAAAAIFDGYAFGqqqmZmJmJmZmAAAAIGCGYADGdm
-aKqqtgpmAnAAAAIGCGYADGJmZhqqpgpmAmAAAAAWB2ZmZmdiZmZgmqYACmYCYAAAABYGZmZm
-aGZWZmYQBgAKZgJgAAAADgZmZmZoZiYAEmYCYAAAAA4GZmZmZ3ZiABJmAmAAAAIGCGYABiZo
-JgAQZgJgAAACBh5mAmAAAAIGHmYCYQAAAgYeZgJiAAACBhZmAAo1ZmZmZAAAAAAMAAASNFZ2
-CGYCZQwAAAAiAAAB
-ENDofIMG
-end
-
-demo.show_image('bmp', '8-bit', <<'ENDofIMG')
-Qk0CCAAAAAAAAPoAAAAoAAAAIgAAADIAAAABAAgAAAAAAAgHAABtCwAAbQsAADEAAAAxAAAA
-////AMz//wAA//8AzMz/AJnM/wAAzP8AmZn/AGaZ/wAAmf8AZmb/ADNm/wAzM/8A/8zMAMzM
-zACZmcwAZpnMAACZzABmZswAM2bMAABmzAAzM8wAADPMAAAAzAD/zJkAzMyZAMyZmQCZmZkA
-ZmaZAGYzmQAzM5kAzJlmAJlmZgBmZmYAZjNmADMzZgDMmTMAmWYzAJkzMwBmMzMAmWYAAJkz
-AAAAAN0A7u7uAN3d3QC7u7sAqqqqAIiIiAB3d3cAVVVVAAARDgYDKgAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAVFRUVFRUVFRUVFBQUFBQUFRUVFRUVFRUVFRUVFRUVFQAAAAAV
-FRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFQAAAAAVFRUVFRUVFRUVFRUVFRUVFRUV
-FRUVFRUVFRUVFRUVFAAAAAAVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFAAAAAAV
-FRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVEgAAAAAVFRUVFhUVFRYVFRUWFRUVERUV
-FhUVFRYVFhUVFRUVEQAAAAAUFRUWABEVFQYPFhUDERUWBhUVKg8VFAAUABQVFRUVEQAAAAAU
-FRUWABYVBhQWFRUGFBUWERUWABYVFgAAFRUVFRUVDgAAAAAUFRUVABUVFBEAFhUGFBUUFRUV
-ABUVFgARFRUVFRUVBgAAAAASFRUWABUVFRUVFRUGFBUPFhUWABYVFgAVFBUVFRUVBgAAAAAR
-FRUVFhUVFRUVFRUEFBUEFhUVFhUVFQAWFRUVFRUVAwAAAAARFRUVFRUVFRUVFRUVFRUrHRUV
-FRUVFRUVFRUVFRUVAwAAAAAPFRUVFRUVFRUVFRUVFCQYKBUVFRUVFRUVFRUVFRUVKgAAAAAO
-FRUVFRUVFRUVFRUUJyEeKA4VFRUVFRUVFRUVFRUVAAAAAAAGFRUVFRUVFRUVFRYeKB0kKCQU
-FRUVFRUVFRUVFRUVAAAAAAAGFRUVFRUVFRUVFRIDKBQnKCgGFRUVFRUVFRUVFRUVAAAAAAAG
-FRUVFRUVFRUVFRUVJxEnJigDFRUVFRUVFRUVFRUVAAAAAAADFRUVFRUVFRUVFRUSKBEnKAkq
-FRUVFRUVFRUVFRUVAAAAAAADFRUVFRUVFRUVFRUuJxEoKBEWFRUVFRUVFRUVFRUVAAAAAAAr
-FRUVFRUVFRUVFRYvKA8oKCEGFRUVFRUVFRUVFRUVAAAAAAAqFRUVFRUVFRUVFRQmKAcoKCYE
-FRUVFRUVFRUVFRUVAAAAAAAAFRUVFRUVFRUVFRIoJwkoKCgDFRUVFRUVFRUVFRUVAAAAAAAA
-FRUVFRUVFRUVFQcoJxEnKCgBFRUVFRUVFRUVFRUUAAAAAAAAFRUVFRUVFRUVFQYoKBQnKCgq
-FhUVFRUVFRUVFRUUAAAAAAAAFRUVFRUVFRUVFQQoKBQkKCgsFhUVFRUVFRUVFRUUAAAAAAAA
-FRUVFRUVFRUVFQMkKCIjKB0RFRUVFRUVFRUVFRUUAAAAAAAAFRUVFRUVFRUVFQMUKCYeKCgV
-FRUVFRUVFRUVFRUVAAAAAAAAFRUVFRUVFRUVFRUVKCgaKCgnFRUVFRUVFRUVFRUVAAAAAAAA
-FRUVFRUVFRUVFRUUKCgkKCgoAxYVFRUVFRUVFRUVAAAAAAArFRUVFRUVFRUVFRURKCgoKCgo
-ERQVFRUVFRUVFRUVAAAAAAADFRUVFRUVFRUVFRURKCgoKCgoIQMWCBUVFRUVFRUVAAAAAAAD
-FRUVFRUVFRUVFRURKCgoKCgoKAAWEBYVFRUVFRUVKgAAAAAGFRUVFRUVFRUVFRUUJygoKCgo
-KAAWFRMVFRUVFRUVAwAAAAAGFRUVFRUVFRUTFhUWHigoKCEUKgAWFgIVFRUVFRUVBgAAAAAO
-FRUVFRUVFRUTFRUVBCgoKCgUFRYVFgIWFRAWFRUVDgAAAAAPFRUVFRUVFRUVFRUVFR4oKCgo
-FRUVFQIVFQUVFRUVEQAAAAARFRUVFRUVFRUVExUVFQckKCgoIRUVFRYVFRUVFRUVEgAAAAAR
-FRUVFRUVFRUWAhYVFRYDJygoKB0VFRUVFRUVFRUVFAAAAAASFRUVFRUVFRMVBRUVFRUWKhko
-KBQVFRUVFRUVFRUVFQAAAAAUFRUVFRUVFQgWFRAVFRUVFgMAKxYVFRUVFRUVFRUVFQAAAAAU
-FRUVFRUVFQgWFQIWFRUVFRUWFhUVFRUVFRUVFRUVFQAAAAAUFRUVFRUVFRMTFRUFFhUVFRUV
-FRUVFRUVFRUVFRUVFQAAAAAVFRUVFRUVFRYFFhUIAhYVFRUVFRUVFRUVFRUVFRUVFQAAAAAV
-FRUVFRUVFRUVFRUVFhUVFRUVFRUVFRUVFRUVFRUVFQAAAAAVFRUVFRUVFRUVFRUVFRUVFRUV
-FRUVFRUVFRUVFRUVFQMAAAAVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFQQAAAAV
-FRUVFRUVFRUVFRUVFRUVFRUVFRUVFAYPEREUFBQVFQ4AAAAAACoDBAYODxESFBQVFRUVFRUV
-FQ8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-ENDofIMG
-
-if false
-demo.show_image('bmp', '8-bit-RLE', <<'ENDofIMG')
-Qk22CAAAAAAAADYEAAAoAAAAIgAAADIAAAABAAgAAQAAAIAEAAAAAAAAAAAAAAABAAAAAQAA
-////AO7u7gDMzP8Amcz/AJmZ/wCZmcwAZpnMAGZmzAAzZswAMzPMAAAzzAAAAMwAAMz/AACZ
-/wAA//8AAGbMAACZzADd3d0AzJmZAJkzAACZZgAAMzOZAGaZ/wCZZjMAZjNmAMyZZgCZmZkA
-ZjMzADMzZgDMmTMAu7u7AMz//wBmZv8Ad3d3AIiIiADMzJkAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG
-AAcFBAIBHAAAAAEACgoGCRAKAQAAAAEAIAoBAAAAAQAfCgEJAQAAAAEAHwoBCQEAAAABAB8K
-AQgBAAAAAQAECgAWCwoKCgsKCgoLCgoKBwoKCwoKCgsKCwUKAQcBAAAAABwACQoKCwAHCgoE
-BgsKAgcKCwQKCgEGCgkACQAJBAoBBwEAAAAAGgAJCgoLAAsKBAkLCgoECQoLBwoLAAsKCwAA
-BgoBBQEAAAAAGgAJCgoKAAoKCQcACwoECQoJCgoKAAoKCwAHBgoBBAEAAAAABgAICgoLAAcK
-AA4ECQoGCwoLAAsKCwAKCQUKAQQBAAAAAAYABwoKCgsHCgANAwkKAwsKCgsKCgoACwAGCgEC
-AQAAAAEAAQcOCgERARUOCgECAQAAAAEAAQYMCgAECRcjEw4KAQEBAAAAAQABBQsKAAYJFBgZ
-EwUNCgEAAQAAAAEAAQQKCgAICxkTFRcTFwkMCgEAAQAAAAEAAQQKCgAICAITCRQTEwQMCgEA
-AQAAAAEAAQQMCgAGFAcUGxMCDAoBAAEAAAABAAECCwoABwgTBxQTIAEADAoBAAEAAAABAAEC
-CwoAByIUBxMTBwsADAoBAAEAAAABAAERCgoACAshEwYTExgEDAoBAAEAAAABAAEBCgoACAkb
-ExYTExsDDAoBAAEAAAABAAEACgoACAgTFCATExMCDAoBAAEAAAABAAEACgoACBYTFAcUExMf
-CwoAAwkAAAAAAAEAAQAKCgAJBBMTCRQTEwELAAoKAAMJAAAAAAABAAEACgoACQMTEwkXExMe
-CwAKCgADCQAAAAAAAQABAAoKAAgCFxMcHRMVBwsKAAMJAAAAAAABAAEACgoABwIJExsZExMA
-DQoBAAEAAAABAAEADAoABhMTGhMTFAwKAQABAAAAAQABAAsKAAkJExMXExMTAgsACgoBAAEA
-AAABAAERCwoBBwYTAQcBCQoKAQABAAAAAQABAgsKAQcGEwAEGAILDQgKAQABAAAAAQABAgsK
-AQcHEwAEAAsQCwcKAQEBAAAAAQABBAsKAQkBFAYTAAQACwoPBwoBAgEAAAABAAEECAoADw8L
-CgsZExMTGAkBAAsLDgAHCgEEAQAAAAEAAQUICgAFDwoKCgMABBMADwkKCwoLDgsKEAsKCgoF
-AAAAAAEAAQYNCgEZBBMECgAEDgoKDAQKAQcBAAAAAQABBwkKAA4PCgoKFhcTExMYCgoKCwcK
-AQgBAAAAAQABBwgKAAwLDgsKCgsCFBMTExUKCgEJAQAAAAEAAQgHCgADDwoMAAQKAAYLARIT
-EwkLCgEAAAABAAEJBwoABA0LChAECgAFCwIAEQsACwoBAAAAAQABCQcKAAUNCwoOCwAFCgEL
-AQsMCgEAAAABAAEJBwoABg8PCgoMCxIKAQAAAAEACAoABwsMCwoNDgsAEQoBAAAAAQANCgEL
-EgoBAAAAAQAgCgECAAABACAKAQMAAAEAFgoACwkEBgcHCQkJCgoFAAAAAA0AAAABAgMEBQYH
-CAkJAAgKAQYMAAAAIgAAAQ==
-ENDofIMG
-end
-
-demo.show_image('bmp', '32-bit', <<'ENDofIMG')
-Qk2GFAAAAAAAADYAAAAoAAAAIgAAADIAAAABABgAAAAAAFAUAABtCwAAbQsAAAAAAAAAAAAA
-////ZmbMmZnMmZn/zMz/7u7u////////////////////////////////////////////////
-////////////////////////////////////////////////////////////////AAD///8A
-M8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wzM8wzM8wzM8wzM8wzM8wzM8wAM8wAM8wA
-M8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8z///8AAP///wAzzAAz
-zAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAz
-zAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzP///wAA////ADPMADPMADPM
-ADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPM
-ADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMMzPM////AAD///8AM8wAM8wAM8wAM8wA
-M8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wA
-M8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wzM8z///8AAP///wAzzAAzzAAzzAAzzAAzzAAz
-zAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAz
-zAAzzAAzzAAzzAAzzAAzzAAzzAAzzDNmzP///wAA////ADPMADPMADPMADPMAADMADPMADPM
-ADPMAADMADPMADPMADPMAADMADPMADPMADPMZmbMADPMADPMAADMADPMADPMADPMAADMADPM
-AADMADPMADPMADPMADPMADPMZmbM////AAD///8zM8wAM8wAM8wAAMz///9mZswAM8wAM8yZ
-mf9mmcwAAMwAM8zMzP9mZswAM8wAAMyZmf8AM8wAM8zu7u5mmcwAM8wzM8z///8zM8z///8z
-M8wAM8wAM8wAM8wAM8xmZsz///8AAP///zMzzAAzzAAzzAAAzP///wAAzAAzzJmZ/zMzzAAA
-zAAzzAAzzJmZ/zMzzAAzzAAAzGZmzAAzzAAAzP///wAAzAAzzAAAzP///////wAzzAAzzAAz
-zAAzzAAzzAAzzJmZzP///wAA////MzPMADPMADPMADPM////ADPMADPMMzPMZmbM////AADM
-ADPMmZn/MzPMADPMMzPMADPMADPMADPM////ADPMADPMAADM////ZmbMADPMADPMADPMADPM
-ADPMADPMmZn/////AAD///8zZswAM8wAM8wAAMz///8AM8wAM8wAM8wAM8wAM8wAM8wAM8yZ
-mf8zM8wAM8xmmcwAAMwAM8wAAMz///8AAMwAM8wAAMz///8AM8wzM8wAM8wAM8wAM8wAM8wA
-M8yZmf////8AAP///2ZmzAAzzAAzzAAzzAAAzAAzzAAzzAAzzAAzzAAzzAAzzAAzzJnM/zMz
-zAAzzJnM/wAAzAAzzAAzzAAAzAAzzAAzzAAzzP///wAAzAAzzAAzzAAzzAAzzAAzzAAzzMzM
-/////wAA////ZmbMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPM
-3d3dMzOZADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMzMz/////
-AAD///9mmcwAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wzM8yZZjPMzJmZ
-MwAAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8zu7u7///8AAP//
-/5mZzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzDMzzJlmAGYzZsyZZpkzAJmZ
-zAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzP///////wAA////mZn/
-ADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMAADMzJlmmTMAMzOZmWYzmTMAmWYzMzPM
-ADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPM////////AAD///+Zmf8AM8wA
-M8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wzZszMzP+ZMwAzM8yZZgCZMwCZMwCZmf8AM8wA
-M8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8z///////8AAP///5mZ/wAzzAAzzAAz
-zAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzJlmAGZmzJlmAGYzM5kzAMzM/wAzzAAzzAAz
-zAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzP///////wAA////zMz/ADPMADPMADPMADPM
-ADPMADPMADPMADPMADPMADPMADPMM2bMmTMAZmbMmWYAmTMAZmb/7u7uADPMADPMADPMADPM
-ADPMADPMADPMADPMADPMADPMADPMADPM////////AAD////MzP8AM8wAM8wAM8wAM8wAM8wA
-M8wAM8wAM8wAM8wAM8wAM8yIiIiZZgBmZsyZMwCZMwBmZswAAMwAM8wAM8wAM8wAM8wAM8wA
-M8wAM8wAM8wAM8wAM8wAM8wAM8z///////8AAP///93d3QAzzAAzzAAzzAAzzAAzzAAzzAAz
-zAAzzAAzzAAzzAAAzHd3d5kzAGaZzJkzAJkzAGYzZpmZ/wAzzAAzzAAzzAAzzAAzzAAzzAAz
-zAAzzAAzzAAzzAAzzAAzzP///////wAA////7u7uADPMADPMADPMADPMADPMADPMADPMADPM
-ADPMADPMMzPMZjMzmTMAZpn/mTMAmTMAZjMzmcz/ADPMADPMADPMADPMADPMADPMADPMADPM
-ADPMADPMADPMADPM////////AAD///////8AM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wA
-M8wzZsyZMwCZZgBmZv+ZMwCZMwCZMwDMzP8AM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wA
-M8wAM8wAM8z///////8AAP///////wAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzGaZ
-/5kzAJlmAGZmzJlmAJkzAJkzAMz//wAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAz
-zDMzzP///////wAA////////ADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMmZn/mTMA
-mTMAMzPMmWYAmTMAmTMA7u7uAADMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMMzPM
-////////AAD///////8AM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8yZzP+ZMwCZMwAz
-M8yZZjOZMwCZMwC7u7sAAMwAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wzM8z/////
-//8AAP///////wAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzMzM/5lmM5kzADMzZsyZ
-M5kzADMzmWZmzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzDMzzP///////wAA
-////////ADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMzMz/MzPMmTMAZjMzzJlmmTMA
-mTMAADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPM////////AAD/////
-//8AM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8yZMwCZMwCZmZmZMwCZMwCZ
-ZgAAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8z///////8AAP///////wAz
-zAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzDMzzJkzAJkzAJlmM5kzAJkzAJkzAMzM
-/wAAzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzP///////wAA////3d3dADPMADPM
-ADPMADPMADPMADPMADPMADPMADPMADPMADPMZmbMmTMAmTMAmTMAmTMAmTMAmTMAZmbMMzPM
-ADPMADPMADPMADPMADPMADPMADPMADPMADPMADPM////////AAD////MzP8AM8wAM8wAM8wA
-M8wAM8wAM8wAM8wAM8wAM8wAM8wAM8xmZsyZMwCZMwCZMwCZMwCZMwCZMwBmM2bMzP8AAMwA
-mf8AM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8z///////8AAP///8zM/wAzzAAzzAAzzAAzzAAz
-zAAzzAAzzAAzzAAzzAAzzAAzzGZmzJkzAJkzAJkzAJkzAJkzAJkzAJkzAP///wAAzACZzAAA
-zAAzzAAzzAAzzAAzzAAzzAAzzAAzzO7u7v///wAA////mZn/ADPMADPMADPMADPMADPMADPM
-ADPMADPMADPMADPMADPMMzPMmWYAmTMAmTMAmTMAmTMAmTMAmTMA////AADMADPMAGbMADPM
-ADPMADPMADPMADPMADPMADPMzMz/////AAD///+Zmf8AM8wAM8wAM8wAM8wAM8wAM8wAM8wA
-M8wAZswAAMwAM8wAAMzMmWaZMwCZMwCZMwBmM2YzM8zu7u7///8AAMwAAMwA//8AM8wAM8wA
-M8wAM8wAM8wAM8wAM8yZmf////8AAP///5mZzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzABm
-zAAzzAAzzAAzzJnM/5kzAJkzAJkzAJkzADMzzAAzzAAAzAAzzAAAzAD//wAAzAAzzACZzAAA
-zAAzzAAzzAAzzJmZzP///wAA////ZpnMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPM
-ADPMADPMADPMzJlmmTMAmTMAmTMAmTMAADPMADPMADPMADPMAP//ADPMADPMAMz/ADPMADPM
-ADPMADPMZmbM////AAD///9mZswAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAZswAM8wA
-M8wAM8xmmf+ZZjOZMwCZMwCZMwBmM2YAM8wAM8wAM8wAAMwAM8wAM8wAM8wAM8wAM8wAM8wA
-M8wzZsz///8AAP///2ZmzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAAzAD//wAAzAAzzAAz
-zAAAzMzM/5lmAJkzAJkzAJkzADMzmQAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzDMz
-zP///wAA////M2bMADPMADPMADPMADPMADPMADPMADPMAGbMADPMAMz/ADPMADPMADPMADPM
-AADM7u7uzJmZmTMAmTMAMzPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPM////
-AAD///8zM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAmf8AAMwAM8wAmcwAM8wAM8wAM8wAM8wA
-AMzMzP/////d3d0AAMwAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8z///8AAP//
-/zMzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzACZ/wAAzAAzzAD//wAAzAAzzAAzzAAzzAAzzAAz
-zAAAzAAAzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzP///wAA////MzPM
-ADPMADPMADPMADPMADPMADPMADPMAGbMAGbMADPMADPMAMz/AADMADPMADPMADPMADPMADPM
-ADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPM////AAD///8AM8wAM8wA
-M8wAM8wAM8wAM8wAM8wAM8wAAMwAzP8AAMwAM8wAmf8A//8AAMwAM8wAM8wAM8wAM8wAM8wA
-M8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8z///8AAP///wAzzAAzzAAzzAAz
-zAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAAzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAz
-zAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzP///wAA////ADPMADPMADPMADPMADPM
-ADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPMADPM
-ADPMADPMADPMADPMADPMADPMADPMADPMADPMzMz/AAD///8AM8wAM8wAM8wAM8wAM8wAM8wA
-M8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wAM8wA
-M8wAM8wAM8wAM8wAM8wAM8wAM8wAM8yZzP8AAP///wAzzAAzzAAzzAAzzAAzzAAzzAAzzAAz
-zAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzAAzzDMzzJmZ/2aZzGZm
-zGZmzDMzzDMzzDMzzAAzzAAzzJmZzAAA////////////7u7uzMz/mcz/mZn/mZnMZpnMZmbM
-M2bMMzPMMzPMADPMADPMADPMADPMADPMADPMADPMADPMZpnM////////////////////////
-////////////////////////AAD/////////////////////////////////////////////
-////////////////////////////////////////////////////////////////////////
-//////////////////8AAA==
-ENDofIMG
-
-demo.show_image('gif', 'gif87a', <<'ENDofIMG')
-R0lGODdhQAAoAPcAAAAAADgoOHBgYJiIkIB4iJCAiIB4gGBIUGhggKiYmLCYoLiooHBocMCA
-eJBocLCYmMCooKiQkKCAgGBASIiAiGhYeLiQiIhoaJhwcJh4gMCYkMCgoMCoqKiQiEBAWEg4
-QMiwoMioqMComLCIiFhAWIBgaJhweHBgcLiQkIiAgDg4UIhwgHhgYJh4cMiooFBQcGBYeJiA
-iIBwgIh4iKCAiKB4eHhYYGhIWKiIiEhAWFBIYEhAaEhIaHBYcHBgeFBQeHBogHBQYHBQWGBA
-UFhQaGBYaFhYeKCIkLCQmHhYaGBIWLCYiFBAYEhAYFhQYFBIaFhYcKCIiKCQkKiIkLCIgHBQ
-aIhwcJiAeIBgcJBwcLCQiKiAeKB4gHhwgNCwqMiwqIBoeHBYaJh4eMCYmJBweGhYYNC4qEg4
-UEA4WGBQWEBAYFBQaHBoeFhQcGhgeGhYcMiwsJB4cGBIYNjIwEAwSMCgmHhocFBAWNDAuNDI
-uIBweGBYcHhoeDgwQGhgaKCIgNjQuKiAgNjIuKiIgKCAeKCQiEhIWFBIUGBQaNC4sGBQcGBY
-YMi4sGhYWFhIYFhIaFhQWHhoaLCQkDg4SHBgaJB4gJB4eLiYmLiomGhYaEhIYFhYaIh4gHho
-gGhgcIBoaGBIaHhgcNDAsFBAUGhQYLigoLioqJiIgGhQaFA4SFhIWHhweFBIWJiAgIh4eFhI
-UHBYYIhweEg4WLiYkDg4WGBQYEA4SEA4UMCwqIhocHhgaJB4iJCAgFhASEBAUEhAUIBocFhA
-UKCQmHhgeEgwSNjQwEg4SLCgmDgwUGhQWLCgoEAwUFBASLigmEAwQGhIUFg4SIhoeEgwQKiY
-kFA4UDgwSJiIiIBwcKiQmLCooLCYkDgoQP//////////////////////////////////////
-////////////////////////////////////////////////////////////////////////
-/////////////////////////////////ywAAAAAQAAoAAAI/gABCBxIsKDBggEEDBhAoICB
-AwcjSpxIMSKCBAoWIGDQoIGDBxAURJBAoKLJkwcnUKgQoYEFlxcwdOyYoYGGDRw6eEDJc+IH
-CSBCiHg5YiaJEjM7mjgBAkUKAip6Sh24YqYGmUkbYGDRwoWGlxocvIABI4aMGVN70qiRNSkL
-Gzda4BhhIoeOHTx6+PjxwwcCIGlPouiI4WUDFkFYCLlhYwiLBkU73iBShAgRAkaMHCGAIDBF
-JBpmXkiiZMiQCagzLEFRgi0GDUyaONHx5MkLKFFCSOns+eCUBlRKVIErxIYVG1ewsMiixYSW
-LVxQkIDRpDqRJF1gVPDyhQDg3gSB/mQAwyKMmBJjpoAhU6bKCjMgMGxZAuIMmjRq0KhpsmbN
-EjZtuHEEAgQ4Ad5ACLxRQhkZwBHHGHKMAcccdFxhBgpU1FGDHUzc0QESduDhxRx56DEHHnvs
-4R0ffRzYhREwYOHHH4BUEQgZYYlgoSBfjCHIBh0MAoEdAxBSiCGHIJLIHHCYwEEFQHRhx4Ew
-LLCHIm4sIggjc9RhgQhzgEAIIGSEAAIgjShhwhwN4MGEI4/sAIkjSEQiCRJYuAHEJL0RwMge
-ejzBBiV6VGKJFpcMskUcFyQygoiEbAABJn9kogkaa+RgwCZEMEEEBlNw4gMbiPQ2QyeefAKK
-GpT0cAIk/jjEgQIKggAiiAMgUAFZIkiEIkokozyigyakLFLBGzb8IcUDPXjSGxArlGJKKKcg
-sQAqdojAlQMaCDLGHIlk8EkqiFhQBxJL5BAGE0yo4gQaTBTAQAYc2NGDZ4UAYcoOhfBxwiql
-nFGGDQ3UwMIFGsyBAgs19MBKDg0IQUoroqCRgweO5OCKJjo4osEYBXjySmAE/JBCDHBMUUkT
-T6AxiktgvXTDDbDEUoEsF8ySQxl8LJEGLTugUUQtllBQyyqW8DFyWggY8UYoHPBxxh1O0PDA
-GA0g1ZEQQphQwhus2GJDEGh4cAstbjSBBhF7aEJEEzwYQUQnaQSWHQ+o4BIG/i5gPFIKHl8k
-ZYENGOSiixysqHHGLYbE4IQTt1TQhA6o8KDJGjy8YJkiJPOlCAw7OPKEB7LccYsQoUFWxwSq
-2EFJETo8ogoaThSRwy2y4KEGBaDwUIQfu1DiwyOBNc3DGrzI0cYdnNyRQx+vuCRIAyD0wokS
-aehgSw60+GIILbSoYMstpvwywxM88PAEETwQQTIMCOwBBjAdfMFIFBcEQ4IIDdTaAjAJgMQd
-UnGGJJTtdpMI3yRUAAEP4AUIT9DECRxhN2EoIAZ7IAUkAhECDgwDDLYgxgREgQk8FMNWcxAF
-BwjRhztEQRWtoIQdbHGGHOCBFmqAgRr2kIm6pWUC/p3wwRFAMYM/6IIUR0gAE+Rwh2DIwRgo
-wEMe5jAHQQhCFHFoBAAycYxXxMER27MBMtTACtkU4QyeUYACStGEO8QADA/wRAAEIoMsiOEK
-NxACCEAgiDwIAg+l+EQyAnCKDljAFLbghTHKp4Yi9IBznlEGBxLhiGUsgQOM+EQWAPABKkBC
-DBEIRC/iIApbCQICgxhCMERAiBZYwRLMmIAxFgAK7r3gCb1hAwXwYIUogKIMQSBEHprhDCVc
-4BNVnAMgABEm+hTgGYcoAzQWIAIsTOABaSBEFNIAiSfIAjwIYEQIZIGFMIAhDW/IAy6igYNE
-fEEUiWDEJcRgjBsEgRTM/pDDH5jRAUbgwhQJcIUkaAAEWvziQAjgQCnukIBW6KEWVsDDLFhA
-hQuEwAUjAMEsZnGBPwhBAtI4AAMaEYEOfAIAyjjGNOKgByLM8UADUAYnEmCJLwQBB3jAhRYG
-gTAN4CALWajDEWBxAV1MIBIMcIItjCEQSEShEqoYBTUOJBBbFACAqWjGBl5BhS+gQAs4mEYH
-COHPXmCBEBMYxjQC0IhbVEMglEgDKX5xBgpSVSAEqAAnTtGMB4CBEApAAS6yMIhmlMISlmjG
-IKxxjFnc4AgCsIMqXMEJXujhF7eABFPvKhAEsMENqliAFHpBCRvUAQKm4IAVxBCFBSijFA8Y
-2MQAjDENUrjCClaohB2KAAlWcJYgCLjGABKAjVYsIBsJuEQEmoGJbJjiuNpIQDY4UYAC8EEP
-kegEA9zwBk38tiAIMEB0swGBbGDjGM2QhDIeMItsONe9MrWGMKxhXU8Q4aDfLcgkCpCCCCRA
-G0hQQAKU4d4FGDgbyiBuBAZQAArIAAZ7yEF+IwIER8wAGxherwKOcQllTGMaSJBCBGLAi1Os
-gBJ2nbBEoFCAAUQhCtiIQASEIeMB0IAG1rAsH5ywDRWbJACdmEFDdlGAGMyAxF1gAwzuQNWA
-AAA7
-ENDofIMG
-
-demo.show_image('gif', 'gif89a', <<'ENDofIMG')
-R0lGODlhQAAoAPcAAMnJyTgoOHBgYJiIkIB4iJCAiIB4gGBIUGhggKiYmLCYoLiooHBocMCA
-eJBocLCYmMCooKiQkKCAgGBASIiAiGhYeLiQiIhoaJhwcJh4gMCYkMCgoMCoqKiQiEBAWEg4
-QMiwoMioqMComLCIiFhAWIBgaJhweHBgcLiQkIiAgDg4UIhwgHhgYJh4cMiooFBQcGBYeJiA
-iIBwgIh4iKCAiKB4eHhYYGhIWKiIiEhAWFBIYEhAaEhIaHBYcHBgeFBQeHBogHBQYHBQWGBA
-UFhQaGBYaFhYeKCIkLCQmHhYaGBIWLCYiFBAYEhAYFhQYFBIaFhYcKCIiKCQkKiIkLCIgHBQ
-aIhwcJiAeIBgcJBwcLCQiKiAeKB4gHhwgNCwqMiwqIBoeHBYaJh4eMCYmJBweGhYYNC4qEg4
-UEA4WGBQWEBAYFBQaHBoeFhQcGhgeGhYcMiwsJB4cGBIYNjIwEAwSMCgmHhocFBAWNDAuNDI
-uIBweGBYcHhoeDgwQGhgaKCIgNjQuKiAgNjIuKiIgKCAeKCQiEhIWFBIUGBQaNC4sGBQcGBY
-YMi4sGhYWFhIYFhIaFhQWHhoaLCQkDg4SHBgaJB4gJB4eLiYmLiomGhYaEhIYFhYaIh4gHho
-gGhgcIBoaGBIaHhgcNDAsFBAUGhQYLigoLioqJiIgGhQaFA4SFhIWHhweFBIWJiAgIh4eFhI
-UHBYYIhweEg4WLiYkDg4WGBQYEA4SEA4UMCwqIhocHhgaJB4iJCAgFhASEBAUEhAUIBocFhA
-UKCQmHhgeEgwSNjQwEg4SLCgmDgwUGhQWLCgoEAwUFBASLigmEAwQGhIUFg4SIhoeEgwQKiY
-kFA4UDgwSJiIiIBwcKiQmLCooLCYkDgoQP//////////////////////////////////////
-////////////////////////////////////////////////////////////////////////
-/////////////////////////////////yH5BAEAAAAALAAAAABAACgAAAj+AAEIHEiwoMGC
-AQQMGECggIEDByNKnEgxIoIEChYgYNCggYMHEBREkECgosmTBydQqBChgQWXFzB07JihgYYN
-HDp4QMlz4gcJIEKIeDliJokSMzuaOAECRQoCKnpKHbhipgaZSRtgYNHChYaXGhy8gAEjhowZ
-U3vSqJE1KQsbN1rgGGEih44dPHr4+PHDBwIgaU+i6IjhZQMWQVgIuWFjCIsGRTveIFKECBEC
-RowcIYAgMEUkGmZeSKJkyJAJqDMsQVGCLQYNTJo40fHkyQsoUUJI6ez54JQGVEpUgSvEhhUb
-V7CwyKLFhJYtXFCQgNGkOpEkXWBU8PKFAODeBIH+ZADDIoyYEmOmgCFTpsoKMyAwbFkC4gya
-NGrQqGmyZs0SNm24cQQCBDgB3kAIvFFCGRnAEccYcowBxxx0XGEGClTUUYMdTNzRARJ24OHF
-HHnoMQcee+zhHR99HNiFETBg4ccfgFQRCBlhiWChIF+MIcgGHQwCgR0DEFKIIYcgksgccJjA
-QQVAdGHHgTAssIcibiwiCCNz1GGBCHOAQAggZIQAAiCNKGHCHA3gwYQjj+wAiSNIRCIJEli4
-AcQkvRHAyB56PMEGJXpUYokWlwyyRRwXJDKCiIRsAAEmf2SiCRpr5GDAJkQwQQQGU3DiAxuI
-9DZDJ558AooalPRwAiT+OMSBAgqCACKIAyBQAVkiSIQiSiSjPKKDJqQsUsEbNvwhxQM9eNIb
-ECuUYkoopyCxACp2iMCVAxoIMsYciWTwSSqIWFAHEkvkEAYTTKjiBBpMFMBABhzY0YNnhQBh
-yg6F8HHCKqWcUYYNDdTAwgUazIECCzX0wEoODQhBSiuioJGDB47k4IomOjiiwRgFePJKYAT8
-kEIMcExRSRNPoDGKS2C9dMMNsMRSgSwXzJJDGXwskQYtO6BRRC2WUFDLKpbwMXJaCBjxRigc
-8HHGHU7Q8MAYDSDVkRBCmFDCG6zYYkMQaHhwCy1uNIEGEXtoQkQTPBhBRCdpBJYdD6jgEgb+
-LmA8UgoeXyRlgQ0Y5KKLHKyoccYthsTghBO3VNCEDqjwoMkaPLxgmSIk86UIDDs48oQHstxx
-ixChQVbHBKrYQUkROjyiChpOFJHDLbLgoQYFoPBQhB+7UOLDI4E1zcMavMjRxh2c3JFDH6+4
-JEgDIPTCiRJp6GBLDrT4YggttKhgyy2m/DLDEzzw8AQRPBBBMgwI7AEGMB18wUgUFwRDgggN
-1NoCMAmAxB1ScYYklO12kwjfJFQAAQ/gBQhP0MQJHGE3YSggBnsgBSQCEQIODAMMtiDGBESB
-CTwUw1ZzEAUHCNGHO0RBFa2ghB1scYYc4IEWaoCBGvaQibqlZQL+nfDBEUAxgz/oghRHSAAT
-5HCHYMjBGCjAQx7mMAdBCEIUcWgEADJxjFfEwRHbswEy1MAK2RThDJ5RgAJK0YQ7xAAMD/BE
-AAQigyyI4Qo3EAIIQCCIPAgCD6X4RDICcIoOWMAUtuCFMcqnhiL0gHOeUQYHEuGIZSyBA4z4
-RBYA8AEqQEIMEQhEL+IgClsJAgKDGEIwRECIFljBEsyYgDEWAAruveAJvWEDBfBghSiAogxB
-IEQemuEMJVzgE1WcAyAAESb6FOAZhygDNBYgAixM4AFpIEQU0gCJJ8gCPAhgRAhkgYUwgCEN
-b8gDLqKBg0R8QRSJYMQlxGCMGwSBFMz+kMMfmNEBRuDCFAlwhSRoAARa/OJACOBAKe6QgFbo
-oRZWwMMsWECFC4TABSMAwSxmcYE/CEEC0jgAAxoRgQ58AgDKOMY04qAHIszxQANQBicSYIkv
-BAEHeMCFFgaBMA3gIAtZqMMRYHEBXUwgEgxwgi2MIRBIRKESqhgFNQ4kEFsUAICpaMYGXkGF
-L6BACziYRgcI4c9eYIEQExjGNALQiFtUQyCUSAMpfnEGClJVIASoACdO0YwHgIEQCkABLrIw
-iGaUwhKWaMYgrHGMWdzgCAKwgypcwQle6OEXt4AEU+8qEASwwQ2qWIAUekEJG9QBAqbggBXE
-EIUFKKMUDxjYxACMMQ1SuMIKVqiEHYoACVZwliAIuMYAEoCNViwgGwm4RASagYlsmOK42khA
-NjhRgALwQQ+R6AQD3PAGTfy2IAgwQHSzAYFsYOMYzZCEMh4wi2w4170ytYYwrGFdTxDhoN8t
-yCQKkIIIJEAbSFBAApTh3gUYOBvKIG4EBlAACsgABnvIQX4jAgRHzAAbGF6vAo5xCWVMYxpI
-kEIEYsCLU6yAEnadsESgUIABRCEK2IhABIQh4wHQgAbWsCwfnLANFZskAJ2YQUN2UYAYzIDE
-XWADDO5A1YAAADs=
-ENDofIMG
-
-teapot = <<'ENDofIMG'
-",
-".. c #998074",
-"#. c #84aadc",
-"a. c #c47e55",
-"b. c #4c6ea0",
-"c. c #d48a64",
-"d. c #ecccbc",
-"e. c #8c6252",
-"f. c #b1a094",
-"g. c #714628",
-"h. c #af8a76",
-"i. c #2c5284",
-"j. c #98745f",
-"k. c #8f5124",
-"l. c #844614",
-"m. c #5074a6",
-"n. c #aeb2b9",
-"o. c #3e291c",
-"p. c #44689b",
-"q. c #4c2705",
-"r. c #1b2b43",
-"s. c #e1c8bb",
-"t. c #dd782d",
-"u. c #9c5824",
-"v. c #547aac",
-"w. c #906e5a",
-"x. c #545253",
-"y. c #e07e33",
-"z. c #bcaeac",
-"A. c #aeb6bc",
-"B. c #6f737b",
-"C. c #7e5942",
-"D. c #b55e1a",
-"E. c #7c5134",
-"F. c #8c7a70",
-"G. c #62524d",
-"H. c #bc8a6c",
-"I. c #936754",
-"J. c #6e6d75",
-"K. c #8cb0e2",
-"L. c #d4beb4",
-"M. c #2a201a",
-"N. c #c48664",
-"O. c #412105",
-"P. c #a95a19",
-"Q. c #747a7c",
-"R. c #2a2e33",
-"S. c #484c53",
-"T. c #8690a1",
-"U. c #6c524c",
-"V. c #505967",
-"W. c #040204",
-"X. c #8cb6e4",
-"Y. c #8f4912",
-"Z. c #846e5c",
-"0. c #244a7c",
-"1. c #dcc2b6",
-"2. c #33261b",
-"3. c #81736c",
-"4. c #3c3b46",
-"5. c #735f53",
-"6. c #545e69",
-"7. c #bc7c58",
-"8. c #4c2f1d",
-"9. c #a4806b",
-".# c #604c4c",
-"## c #d4916b",
-"a# c #5c80b2",
-"b# c #e3d3cd",
-"c# c #c8ad9a",
-"d# c #bf6c2e",
-"e# c #08121c",
-"f# c #9c5e34",
-"g# c #9298a1",
-"h# c #8b7f7c",
-"i# c #835f44",
-"j# c #a46e54",
-"k# c #474649",
-"l# c #a65d26",
-"m# c #be6420",
-"n# c #7c9ed2",
-"o# c #ac622c",
-"p# c #726e6c",
-"q# c #e1a684",
-"r# c #a48676",
-"s# c #54464c",
-"t# c #a0a4ac",
-"u# c #b37b5a",
-"v# c #947a70",
-"w# c #543d31",
-"x# c #743e12",
-"y# c #98bcee",
-"z# c #d49e7c",
-"A# c #64320c",
-"B# c #d4cac6",
-"C# c #2c3642",
-"D# c #6e686b",
-"E# c #5c463e",
-"F# c #7f7575",
-"G# c #bcb2b0",
-"H# c #979dac",
-"I# c #a47a61",
-"J# c #8c9094",
-"K# c #1c262c",
-"L# c #d3c3bc",
-"M# c #9cc2f4",
-"N# c #af7455",
-"O# c #fcad5f",
-"P# c #6486b8",
-"Q# c #d4742d",
-"R# c #6d4e3d",
-"S# c #242224",
-"T# c #3b444c",
-"U# c #181515",
-"V# c #6e4024",
-"W# c #749bcc",
-"X# c #afabac",
-"Y# c #7e6a64",
-"Z# c #343634",
-"0# c #e8ac8a",
-"1# c #343a44",
-"2# c #b18f7a",
-"3# c #dda07f",
-"4# c #6f380d",
-"5# c #2f5684",
-"6# c #a08d86",
-"7# c #5f6068",
-"8# c #625751",
-"9# c #16253b",
-".a c #94b6e9",
-"#a c #dfcec8",
-"aa c #3c6194",
-"ba c #ecdad3",
-"ca c #948a89",
-"da c #a4c8fa",
-"ea c #bcb6b8",
-"fa c #604432",
-"ga c #cc6d29",
-"ha c #949ea4",
-"ia c #413024",
-"ja c #a48a7a",
-"ka c #9a867d",
-"la c #1c1a1c",
-"ma c #342116",
-"na c #bc8364",
-"oa c #9c8674",
-"pa c #844e25",
-"qa c #3c4a5c",
-"ra c #582c0d",
-"sa c #c7835a",
-"ta c #613c24",
-"ua c #614b41",
-"va c #adaeb5",
-"wa c #805c4c",
-"xa c #0a0b0f",
-"ya c #c4b2ac",
-"za c #648abc",
-"Aa c #af846a",
-"Ba c #c68a69",
-"Ca c #483c39",
-"Da c #7f400d",
-"Ea c #646e74",
-"Fa c #a85515",
-"Ga c #042244",
-"Ha c #816759",
-"Ia c #95817c",
-"Ja c #9c9aa1",
-"Ka c #9c6b54",
-"La c #7e4924",
-"Ma c #0c1a2c",
-"Na c #5f595f",
-"Oa c #6f615e",
-"Pa c #474149",
-"Qa c #8c9aac",
-"Ra c #cbbeb8",
-"Sa c #806e68",
-"Ta c #82624e",
-"Ua c #949294",
-"Va c #b4652c",
-"Wa c #9c9ea4",
-"Xa c #72574c",
-"Ya c #2a303e",
-"Za c #bc9175",
-"0a c #9c7a64",
-"1a c #261a13",
-"2a c #aca6ac",
-"3a c #341a04",
-"4a c #593520",
-"5a c #d49878",
-"6a c #26282c",
-"7a c #475261",
-"8a c #3f3535",
-"9a c #63676f",
-".b c #a47255",
-"#b c #bc967c",
-"ab c #52433a",
-"bb c #80a4d6",
-"cb c #544c4c",
-"db c #bc723c",
-"eb c #645e54",
-"fb c #a4abb4",
-"gb c #c89070",
-"hb c #8c7469",
-"ib c #c7b8b3",
-"                                                                                                                                ",
-"                                                                                                                                ",
-"                                                                                                                                ",
-"                                                            wawae.e.wa                                                          ",
-"                                                          .#j#N#7.a.db.#                                                        ",
-"                                                            8.g.x#C.o.                                                          ",
-"                                                  N#DaA#raY.Xa4aV#4aPas#q.W.W.6a                                                ",
-"                                            i#O.l.4.4.4.4.4.s#wa7.N#wawaXawawawaA#q.C.                                          ",
-"                                        3a3a4#wawawae.e.e.I.j#m#d#VaN#KaI.e.e.e.e.waDaO..#j#j#N#N#j#fa                          ",
-"                                        O.A#wae.e.I.e.I.I.Kal#m#m#D.u.KaKaKaKaI.e.I.e.Da3aXaE#C#W.o.C.                          ",
-"                                      w#e.k.I.I.Kaf#KaKaKaKal#m#m#D.l#j#Kaj#KaKaKaKaKaFai#u.    GaDaI.                          ",
-"                                      .#waKaI.KaKaj#j#j#j#j#VaD.m#FaVaj#j#j#j#j#j#j#KaKae.U.    9#o.Ka                          ",
-"                                      .#Xae.Kaj#j#N#N#N#N#N#j#N#j#N#N#N#N#N#dbdbN#N#N#I.waU.  e#M.taPa                          ",
-"                                    .#U.Xawae.Kaj#N#7.dbj#a.a.a.a.a.a.a.j#7.sa##naj#I.e.waXaU.Yama.#                            ",
-"                                    .#U.Xawae.I.Ka.bna3#0#3###sasaa.sac.##Ba7.u#N#Kaf#f#waXaU.4.s#Pa                            ",
-"      j#N#5aW.Y.u#j#R#            8a.#XaXae.e.I.KaN#naz#0#q#gb7.7.N#N#N#u#nau#N#N#Kaf#f#e.waU.LaU.                              ",
-"        4.Hahb.bI.j#KaY.          s#U.XaXawae.KaKaN#na3#0#3#gbna7.N#u#u#N#7.u#N#.bj#KaI.e.waXa.#                                ",
-"              G.2#e.KaI.E#        .#U.Xawae.P.Kaj#N#H.z#q#3#gb7.7.7.7.N#N#u#u#N#.bj#KaI.e.TaXaU.0.                              ",
-"                Ca.#e.j#Va  5#aa0.MaU.Xawak.d#I.j#I#N.5a3#5aBa7.dbN#N#dbN#N#u#I#j#KaKaI.e.waXaU.0.i.p.                          ",
-"                  abU.I.KapaaaaaxaGaU.C.wau.VaKaj#I#na5a5agbN.u#N#7.N#N#N#N#N#.bj#KaKaI.e.waXa.#R#m.m.m.p.                      ",
-"            zaW#0.0.s#waKam#0.0.e#GaU.C.k.l#I.KaKa.bnagbgbBa7.u#7.N#N#N#N#N#.bj#j#KaKaI.e.waXa.#.#b.m.m.i.i.0.                  ",
-"    5#aaW#W#n#aaaa0.U..#e.Kau.ta4aLak.k.u.o#e.KaKa.bu#H.H.nau#N#N#N#N#N#N#j#N#j#KaKaI.I.e.waXa.#fab.m.i.i.i.i.i.0.              ",
-"p.p.p.aan#W#0.0.0.0.p.uaU.KaKal#o#d#gal#o#o#e.I.Kaj#N#Aau#u#N#N#N#.bN#N#j#.bj#j#KaKaI.I.e.waXa.#E#m.m.v.m.i.i.m.n#bbn#          ",
-"p.p.n#n#n#p.0.0.0.0.0.xa.#waKaKagaQ#t.y.d#dbi#e.I.Ka.bN#I#N#N#N#N#.bN#N#j#N#j#KaKaI.f#e.waXaU.U.w#5#m.m.i.i.i.m.bbbbbbbbaa      ",
-"n#n#n#n#n#n#0.aaaap.aaaas#s#waKaj#na##O#dbl#wae.I.I.j.j#j#j#j#j#j#j#.bj#j#j#KaKaKaI.e.e.waXaE.Hai.m.m.i.i.i.i.p.p.bbb.b.p.p.aa  ",
-"p.bbn#bbp.p.p.p.p.p.aaaaaaua..#be.Kaj#j#u.XawaTae.I.KaKaKaKaj#j#j#j#j#KaKaKaKaKaI.I.i#waXawaR#uav.m.m.v.v.i.b.bbbbbbbbp.p.b.p.p.",
-"bbp.p.p.p.p.p.n#p.0.0.0.0.p.8#Oa2#ZaZaZak.XaXawae.e.e.I.KaKaKaj#KaKaKaKaI.w.I.I.I.e.waXa0aXa5.5#i.m.m.v.v.p.p.#.#.#.#.#.#.b.bb#.",
-"bbW#p.p.p.n#bbbbp.0.0.0.0.0.0.0.x.D#3.3.w.waU.wawae.e.e.e.f#I.I.I.I.I.I.I.f#e.e.wawaXae.w.ua4.5#5#i.7ai.b.b.b.p.b.#.#.#.p.b.b.#.",
-"p.bbp.bbbbp.p.p.p.0.0.6.p.p.p.0.0.0.0.9#R#wae.9.j.wawae.Tae.e.e.e.I.e.Tai#e.wawaw.Aaw.hbOa6aC#5#m.v.v.#.p.p.b.b.p.#.#.b.b.p.p.b.",
-"0.0.0.p.p.p.p.aa0.0.p.p.p.p.p.p.0.0.p.qaT#s#Z.0a..h.I#I#ZaZaI#gbI#.bH..b.bH.h.j.r#HaU.PaV.V.Na1#v.m.K.K.K.#.b.#.#.#.#.K.p.b.m.p.",
-"0.0.0.0.p.0.0.0.0.0.0.p.p.p.p.0.0.p.p.qaqaqa2.iaR#HaY#ja2#2#I#Za2#0a2#2#h.jaoaF.8#V.6aC#C#C#CaNab.bbbbK.#.b.b.b.#.K.K.#.#.#.X.#.",
-"b.b.p.p.p.0.i.0.0.0.0.p.0.0.0.i.0.0.qaqak#6aR.6a3aiawaY#OaOaOaD#Iah#D#OaF#cbPa6a6aW.V.6.1#C#7ap#b.b.b.b.b.b.b.b.b.K.K.#.b.b.b.b.",
-"bb#.#.#.#.b.b.i.0.p.p.p.0.b.b.0.0.0.qar.YaYaYaR.K#Z#E.xa1a2.S#.#x.x.S.R.laU#1#W.W.9a6.J#J#T.7av#K.K.K.K.b.b.m.m.b.m.K.b.p.m.b.b.",
-"#.#.#.#.#.#.K.#.#.#.#.#.#.b.b.b.#.p.qaqaYaR.YaR.Pa6ak#S#lalaW.W.xaW.W.W.W.U#U#ebT.hag#g#haT.7ac#K.K.K.K.K.K.b.b.#.K.K.K.K.m.b.b.",
-"#.#.#.b.b.b.b.#.#.bb#.#.#.b.K.bbK.#.T.T.J#R.YaS.S.x.ebebR.2.S#S#S#T#S#S#S.9a7aEaEafbhag#6.7aV.m.K.K.K.K.X.K.m.X.K.K..a.aX.K.b.m.",
-"b.b.p.b.p.b.p.K.K.K.b.b.b.b.#.#.#.#.T.T.J#UaJ#J#g#g#haWaWa7#9a2at#fbA.t#9a6.9aJ.EaEafbV.6.V.Nam.b.m..a.am.b.m.m.m.K.X.K..a.a.am.",
-"  p.b.p.p.b.p.K.b.b.p.b.b.b.b.K.#.K.7a7aV.9aWat#X#WahaH#ha6.t#n.n.n.n.fbfb9a9an.t#t#fbfb7aV.7#m.m.m..am.m.m.m.m.m.m..a.a.am.m.m.",
-"  b.p.b.#.#.#.#.#.b.b.b.b.b.b.K.Pax.V.7aNa7#7#t#vafbB.B.B.B.B.n.A.A.A.fbfb9aA.t#t#fbfbQaH#7#D#m.X..a.a.aX.v.v.v.v.m.m..am.v.m.m.",
-"    #.K.K.K.K.K.#.b.b.b.b.K.K.K.T.S.V.9aB.ebNaV.p#9a9aB.D#9a9aB.A.A.A.9aB.B.Eafbn.t#g#hat#X#m..ay#y#y#y#.ay#v.v.v..aX.y#.av.v.v.",
-"    #.K.K.#.K.K.K.K.K.K.K.K.K.QaT.V.7#Ea9af.f.2at#OaD#F#Q.J.9aEaB.Ea9a6.Ea9aEaV.H#H#t#2aD#J.v.m.y#y#y#y#X..ay#y#y#y#y#y#.ay#.av.",
-"      K.K.K.K.b.b.b.b.K.K.K.K.g#g#t#D#fbWag#c#X#2a2aeb7#D#Q.vaA.2at#p#9a6.V.7#7#9avaSaSaSav.m.v.v.y#.ay#X.v.v.v.v.y#y#y#y#y#y#y#",
-"      K.K.b.m.b.b.b.b.K.K.K.K.Ja7#7#6.2az.#ac#z.G#eaG#p#2a2a2at#t#t#t#7#9aD#J.SaL#RaRaF#v.v.v.v.v.v.y#m.v.v.a#a#v.v.M#M#M#y#y#  ",
-"        b.b.m.b.m.b.b.b.K.X.7#7#7#7#D#3.1.z.yac#yaibh#caB#L#eaz.z.z.z.z.F#h##ab##aL#ibibv.a#m.m.v.y#M#y#a#v.v.v.a#a#a#a#M#      ",
-"        p.b.m.b.b.m.b.b.m.b.7#9a9aSahb..m..ayayahbhbF.h#Ias.RaRaibibL.L#kab#bab#1.L.L.y#y#a#v.v.M#y#y#M#y#v.a#a#a#v.a#a#        ",
-"          b.m.b.b.X.K..aK.b.7#D#F#hbv#m.b.m.m.F.F.F.v#v#F.v#L.L.L.L#..ka6#h.s.1.L#1.y#M#y#daM#M#day#y#M#M#M#a#a#a#a#            ",
-"          p.b.X.X.X.X.X.X.X.9aD#6#..m..aX.y#m.m.F.v#v#v#....1.Ia....kakar#r#r#1.s.M#M#y#a#a#a#M#M#y#y#daM#dadada                ",
-"            .a.aX..aX..aX..aD#SaF..ay#y#.aX..am.m.........s.s.9.9.r#r#r#r#kakar#M#M#a#a#a#a#a#a#M#M#M#M#dadada                  ",
-"            K.X..a.a.a.a.aH#vab#1.y#X.X.y#y#y#y#v.v...s.d.d.d.s.r#r#h.jajajar#a#M#v.a#a#a#a#a#a#P#dadadaM#                      "};
-ENDofIMG
-
-demo.show_image('xpm', 'color', "/* XPM */
-static char * teapot[] = {
-\"64 48 204 2\",
-\"   c #145ec4#{teapot}")
-
-demo.show_image('xpm', 'transparent', "/* XPM */
-static char * teapot[] = {
-\"64 48 204 2\",
-\"   s None c None#{teapot}")
-
-demo.show_image('xbm', 'bitmap', <<'ENDofIMG')
-#define flagup_width 48
-#define flagup_height 48
-static char flagup_bits[] = {
-   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00,
-   0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xef, 0x6a, 0x00,
-   0x00, 0x00, 0xc0, 0x7b, 0x75, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x6a, 0x00,
-   0x00, 0x00, 0x30, 0x60, 0x75, 0x00, 0x00, 0x00, 0x18, 0xe0, 0x7f, 0x00,
-   0x00, 0x00, 0x0c, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x06, 0xe0, 0x04, 0x00,
-   0x00, 0x00, 0x03, 0xe0, 0x04, 0x00, 0x00, 0x80, 0x01, 0xe0, 0x06, 0x00,
-   0x00, 0xc0, 0x1f, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x7f, 0xe0, 0x07, 0x00,
-   0x00, 0x70, 0xe0, 0xe0, 0x05, 0x00, 0x00, 0x38, 0x80, 0xe1, 0x04, 0x00,
-   0x00, 0x18, 0x80, 0xf1, 0x04, 0x00, 0x00, 0x0c, 0x00, 0xfb, 0x04, 0x00,
-   0x00, 0x0c, 0x00, 0xff, 0x04, 0x00, 0x00, 0x86, 0x1f, 0xee, 0x04, 0x00,
-   0x00, 0x06, 0x06, 0xe6, 0x04, 0x00, 0x00, 0x06, 0x00, 0xe6, 0x04, 0x00,
-   0x00, 0x06, 0x00, 0xe6, 0x04, 0x00, 0x00, 0x06, 0x00, 0x66, 0x04, 0x00,
-   0x7f, 0x56, 0x52, 0x06, 0xe4, 0xff, 0x00, 0x76, 0x55, 0x06, 0x04, 0x00,
-   0x00, 0x56, 0x57, 0x06, 0x04, 0x00, 0x00, 0x56, 0x55, 0x06, 0x06, 0x00,
-   0x00, 0x56, 0xd5, 0x06, 0x03, 0x00, 0x00, 0x06, 0x00, 0x86, 0x01, 0x00,
-   0x54, 0x06, 0x00, 0xc6, 0x54, 0x55, 0xaa, 0x06, 0x00, 0x66, 0xaa, 0x2a,
-   0x54, 0x06, 0x00, 0x36, 0x55, 0x55, 0xaa, 0x06, 0x00, 0xbe, 0xaa, 0x2a,
-   0x54, 0xfe, 0xff, 0x6f, 0x55, 0x55, 0xaa, 0xfc, 0xff, 0xa7, 0xaa, 0x2a,
-   0x54, 0x01, 0x88, 0x60, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa0, 0xaa, 0x2a,
-   0x54, 0x55, 0x8d, 0x60, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa0, 0xaa, 0x2a,
-   0x54, 0x55, 0x8d, 0x60, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa0, 0xaa, 0x2a,
-   0x54, 0x55, 0x8d, 0x50, 0x55, 0x55, 0xaa, 0xaa, 0x8a, 0xa8, 0xaa, 0x2a,
-   0x54, 0x55, 0x95, 0x54, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x2a,
-   0x54, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-ENDofIMG
-
-demo.show_image('png', 'color', <<'ENDofIMG')
-iVBORw0KGgoAAAANSUhEUgAAAC4AAAAjCAIAAAETQp8oAAAIVklEQVR4nNVXPYgbSRb+xm7B
-K5CgC07QtaCDOvBCDeyAFAxIwQYdbKCBDeTgQBMqtOGCcTYOvXDBODjwHBzsBHcwExzMBAtW
-4GN7YQ1ScKAOBNPBLFcLHugGC7pgBf0WeuGC1vz6h7XZ4O5DIJp69dX3qr969Rp4A3erv69H
-YQn8aasDxh0Aw66JTtPU5ZIIhLsAvIZXw9rLJItfvd74vVzNepPx3Rh2DQAPwPFO3zqenaaO
-GcAdAAdRkuf50TQxyv8Q0gqh0ZWYNQDD0GRpHrbVJHFRYvtGE9H9nr7/dAwg8OkugLldmFaz
-1fDLtXKj1eytt76fv9JKKkkmaE5/yFbMD0IzDA2A3UEbQFsHH6bs7rsGvt0dnC9yu1heRTwZ
-dKPkHMDhTj9OXp0tXpelCBp0F8DXo/DLjp5ni+3uxou5fXT/c5Tl/HwxPcvO3dIDkOXFxGYA
-0tz+5/neNJooRSqVqi1DE3iXqyhJp2n+1dODooBjVpKKAm2t7gAIpCACgHUlD6IkXFfj2HaN
-YnBs3Ur2oK0BHO/030zqDgBmVpIAVPv924AI7cDvt3X16L0/usKzUcjAo4MIwKjftjb1SRAR
-g6/UVjje6T8bhXvDlZ/3Rt3Di/QOJ6fa9wEMu6arJJFwXGSOT6b2NsvEppPTNMnSZ6Owa4I0
-5Ulsn+8OAIABIh34WvuCKIotAN/Hg377293BDRZFBCDNmQABxNbN0vwwig93BrHNJnHS1TLL
-nE/U7xqfJBhp6m5rAdDTSkkaz6xWUitSvhCCRk9Pjnf6StHR1BYFGGwUSYLRgZKUZO4Gi1Ey
-shYAEQE4iJJwPSgKMLD1dEwQAI6myf2n469O4rZWSorxzD48iFAdxcsXEZ1aJfyJtbF1/bYO
-TaCV/ACD+PRrI//3MOzeOC+/yrvX4RM96Lcz50ah8Wm1EXfePwdAaIKvR/1RaKrHve0wSTMA
-RYHMrU7A26vTs2HY39Tj2AJAWdYEDqOkBPaGYbJ4XTKWS14syyRdnF33S1v7Twbdb3cHO/02
-gJP4FMVFCpKIiIFh15Agm7rM5Qykeb5a5pJlFJrT1B1ESdjWD/pmkmRK0ZNRtxpNUzfsmszl
-He0nNo2SbBzbyrWhCa4yapuWcywEqFZblmXLl2se/JpQ0h/HPypJZ855pbeh1d++m5vA37yn
-7in55+3eX17EZXmhRQkBIM/ZprkkAlAwj2d2Z9ADUDBCo9e1ZObK0NUsAno6uMpIXnhX+jSz
-WeZYK+kTJok9ffZA+qKtVV5wASYSBBARAbHNK8YVi80LBjsUbSUlyCcIwDEe7o/jxFa+cK5w
-edEzgZJUERWMauiCJXMdHez2e0+jxLq8ykJJGvXbjw8nWx2tCFGSHU+tUTItWCuSAiDW/jUt
-xxNLwMOjKCDSSkpJWVEUBZjZOpfmeWWvqc2Ysd0zVU49rR4eRVcsjpkgKmICigJ7J7GSlOYM
-4NHR1KZ5Fbm9P54kqSTR0XLromhcnSMGtCQGADqaxv22BiG68FXljgpPx/Etr1+dI1+AiHyi
-/SgGsN0zkogvRg+iBL8Gxzv9qlP4eFye8f8/mOBG87b2rrjfHMc7/cTlKKClJEJi87ZRW1+d
-XAZ8cNV9P9o6eDzojGN73RfPdwdpxvvjWeBLZrbSFQU62mfm63N/GymBTx2tQqOVpP1xEiUr
-u/fbOuxom7loZisjEVFeMDPGcWayj5XSb+vtnk7zQiv55GSyagcBAFW7l2SpL3Wlwye639OD
-rnHMB9GMIHySjlcbQQQi2NT5hIub6EJKtbG54ywviJAzJ9Z1dNA1KrZpynwysePYjmM7Co0v
-5eNBL0rS/atzTbkrtPI7WgEYdo0QSHN2jnPmwgFUZAygmNjs5mu5wg3b+oRHg24BuEoqMwP9
-ts6ZT2ZWCwJB+X7qeNDWmXM508ODVYnqmkAAu6P7+4djx4VPomeCtlbMvPVG79PVwVZXE4TR
-FCf545Mpbl3QXKL/WWtdSbtY4sJULSkWeWE+qb9IUikEL1n9rv7P6Q+b91SNsB1+/v08WXLZ
-8LyG8DbX1XfJebEsG1RrNuvlz7UFMzNMS36mpJLStOQ9JQXVXi+WX2xq55YP//GyWv12r/Dl
-5qcN8uz5AkAJnKZ506/XBVyBl/GP1bfd5sYn38/Ts9R58DqfNj/f3PhjGB6+mJIg5zhc18uC
-Pc9rCmop0fLrLxNb92oM1D14WP0AqIZYlgBwdqtBvY604CRnm7MAfCGUL2c26xrdM0oH0qVF
-1fjHNus9OuA8VUgPdwZEAFj7xMwMntnMpnnmOPBldR0QkZQkJVXI8sIE/uVX6u1dMcpvNRtl
-WTYEbbb8L3t/yF6X4/mZzYqax3WvweBwo5XY5e/qxMuyLPngu6Srm8uyXFcytouWlH+fzL1f
-vB/yZVPWWlK2pHDlUklyy7LRIM/zxFq5VoNjbjUbZVl7MbdvkcI/8eanzWWJhVvOX7lv/n02
-P89Vs9HAWp0aUlKNUfcECSzc8l7L9+u1+bn7JrZfbLSIoJpkAvnXf83P3dItueF5Rknlk1cT
-S8bPv/BPZck/lbJBql43SjouyxKVlLcU/mejkFEcRtYEghlEJASKAlIgL+CYcy62jE7ZEcgx
-XxZWE/ijsFP1G9cJCXgy7PpCAOACKedaSkEAsL1/Ffm2ElfAKGkCJyWBwcWqDhDRUbQqJI/6
-nTRxDEQzezkvydzjk2hvO7xeuAAw8Oho+paFbuItUqQkgACkqVOSSICIolliL+hHoUkd5znW
-FVl3o2Ax4+FB5BMB7yhkHyQFgGPurfs2ZRCc42tVFcPQnNr8/V2Qe1dBfS9ue2Vv2CUhiGia
-2Oczm7mPIf04/BfyDD1tMD0WfgAAAABJRU5ErkJggg==
-ENDofIMG
-
-demo.show_image('png', 'grayscale', <<'ENDofIMG')
-iVBORw0KGgoAAAANSUhEUgAAAC4AAAAjCAAAAAG5S1ejAAAEJElEQVR4nKWTXUwcZRiFH2YG
-ZpiBLsx2wW6ZpU1YC+3axWClf7ZKY5NVozHRxIYaL0xq1YuGeOFVRW40TXthk4aLxsT/xJjG
-+tdiGkUl1nQV6rYokuy2IFugy8/irp3dHXYGvFiwBdQ08Vx9+d73Oznfe84LAIjQNv+ELdBy
-aVqTRBSh/8p6aGMZWpDomBwwETg7020sL0NjG0XsTTT9GmlSdreji1xZ555bvzmyVvcNAI/s
-pRX/8lfi4uHoREIEnrnEKwNjcxUibdt+39PX6gwNTEkkB0l+3VPtdgclQI8fs0zd8gvoMkZX
-MBywY3B0Ox0FKoGcTvtKhQuQa5tBuvXmkHOCx4Y1xS7o6Qg29vFi6DvMe79paRjP5sIgAL/1
-jxwKJC4ewS72+kp7WfX4UQRgFUlBjA1/2R7t25DQdpbZiQJPU5V1xVMuqW+9ykc+X37WKJLC
-AmD8gkJX0HIOS3S3f+B3h48jAVNI0Viztbub4wCdC+rUf/3J7eEBOgr6l0Dbr4TUpffBl0Jw
-cARr5qYvL2wPM1d8bv65a3kzPTKKBHU7AuFT53eAS3FaSsdyynQcRGiNxXaVff9wfa+Of/rB
-T66OpgkmRNiYkkssj6CuDusJ6s4YDTUHTjsCuEiNauQu7MNqXJ8LekGoRwAVXNGkV+1/33Wn
-mVdERYx5EWDCttbJqpQ5NqCRSgV0UbE0BBjzP/XpBDn90Te3ll3q8aXXqGIVAvSInau8rrSV
-m5iaY9DaU6TUdyKAKVUhWh/qSU6Owmv9mv9wIQ+OxynqbpZ6IQ6cAgrzURXtc/ZoDnQtGWFH
-6z/OW/t/dhkARbfR2DGer5avbnyZZWleCv/+C13AkYmP3bkxqy73X+y6v9F9NgLNW8Sf7DJs
-yzI+X8ne3DK99r0YoDNSEUHbdb95RiozLWR5TM2ABP79fyRlc8gfiKZ7wuFQ5dOR01CU8vpp
-kZMp05St+UFrga4IQN3npMg7W2/8UCm5k9uT2TcgID7/rqkF/LnDANTvkNYNvlMIZn6L73re
-YfWMEdEynm8bSkIXs3Lppki21G3fsGpr3bU1yvS21InFHO8sjTMfryzNXIxbmyPXhPrm0Bkl
-fXdGKr/DfVl2ZEEQqJhl9O91SF+fFMtWR+8KeKdsogdSxe3ynCdnR0dn3IqmuFyKkqwxFtmN
-alutu2/qx3FRsZuGXFm7a8OsL+r5ikSFx53Vb5RJomBWO30L7WaDNTN8fthTrLrmZHnGVz58
-4Z4ST81nU3/Khl6SnbWy5ZVGxu5btOmQfa7GUmRLzZhmU0oyu8B4SOwEEJ/VsFJVCq/ftCm/
-xnDZOVC+gCd/dnqB+NsH1QzgnLzFxoX2CoGELiu9kxBKpo1JAOv4ygwvhsDcNC6lTgF7h25u
-g7mivaD9QKlyOZxcUVyJvwDv65E2xA9RYAAAAABJRU5ErkJggg==
-ENDofIMG
-
-demo.show_image('png', 'transparent color', <<'ENDofIMG')
-iVBORw0KGgoAAAANSUhEUgAAAC4AAAAjCAYAAAGcIAh/AAAIl0lEQVR4nOWYIXDjyNLHf7p6
-oMU0TIIDtcxhNhT0Mi9LoD+2y7JsF+6xhG3YBSYsYWt2gg6zWcS+gSM2w9RsPiDbiS/Z/e7u
-3b33ql5Xqcoujbp7unv+/+6B70i2//HLskn3G8f8xLJaO34COJ3WqX30+BgwIiCML7oYiKps
-Xcw+362pjDyp+Z6t/19Op3UC+AfA3fk8uahsHj1RFdgZv247QgjcPnRZXRV/3txBmtqmvecZ
-wGlTp94HmknFuou0nWNeW0SEdzPLu8tVBlAWkg4hnE9smtkSFyMAE1tx0z5y1rxh6zzDALcP
-3WE975s6nTbjlj8tJmn8qPwnAvh75NdPi9TUo5Wfnr/4spgeTN+cz5MtJF2u1kDO1JbpH/CU
-4AfnuTht0sfbNrNVxWJW03aOresz2KWwDwNr1wPgg+N/v12kh3ZNVQmVN1QTk5q6HBfvpTLC
-ow/8fHnNMEBUpTLCMIwh/QmgNDmyq7k3leG67bLmTcVq67JpXaEoWxefdryY2ARjVX0vMj8B
-6M4ccEjz3yoipElZpPnOQ+A4IL9Hvi6bpMDH6zYDWM4nyTlPITkigqKHtUdJvzufp6/LJl2c
-Ph3ci+U03TyL0836EVuMB+10WqdpZRDJiTrQR+X+wWWvKl87z/rR0/Wer8smTesyea+st45v
-nxajAR1jYMsiWVuQi9BuHQBFAe/nk/Trbu2R8mqXfx8UAXJg6yIbH7hpt9ycL9LW9ay3HVNr
-6PtIIcJ8WlOIAQXv4+thAZjZisoIq43DVgZbCVWRk+fC8vKeu/M5VSXcPrhsGEBR6kowArUt
-qYzQ9fGl8roytG7coux2MRZwyaiI7O3lKhNyYASNd5er7Of7bTaxFZXJWW0cH3bJPqrRr8sm
-tY+OKi9YO8fWxWw+sampS2xl/nxNF8LfjEz/qXI6fYkdf/iE/lYKkfR+PqGPkWVTp2IPZ7xS
-ij+Spi7TL8t5Wu6YBODirKHzI/AOA/Tx6fj/MPtfT5tEzqG0bCGpObHctB0K2cVpk1wMhKCo
-KlFBBFbbEQIOnk9skb4spunXT4t0Ph+57X77CMOzEBjZgRPZ6bROkgvOR/oYUMCHcFB8pHzZ
-1Dz6yHXb0Uws7+d1Wnc9VSV8WT6xmPeR02md+hg4sQWd87Rdn622Luv6mO3DB88S6nce5jm4
-PiIiLKY1nQ8Uec6ymaTrdpuZWpKPgQLBB8VFzeqySLYyByfPrlbHnlf5eKRDUJzfdVXAoMpq
-4zhfzHb/oaktb6xBVWnq8qAYQICZLY+Vm6cKwhTCxvX0UbGVoRBYd47Hr++TKXImtiIMyoAi
-kiOMWCTA1gX2xg7KXRhQlMjApDIYhEJG2I0KH65WbDvHvo5jHIhhYFaPSLg3MCiHNU/K+8iJ
-Lfk0n3HZdrgYDmGojLCcT/h8s+btiaUSaLs+u3tw1JXBD4qtBJMDotjiN57frR0CfLhtKUWw
-lcEYoR+GEW5VcTFmPoQDSz64PlOFs1kNjGU6sxUfbtvjOo+qmZAfrArjibu431KZsTIAPt4+
-ZM6HQ37OrlbZuvMYyTmxhrfPYPkIWxSwRnaeCbcP22w+sQnhwJPAgWn2crnavnrSj7ClyMek
-FCJcteMHZ7MaszuV+3XXbffHSePufJ72be1fKoXIfycT1WXxYuP/NBH9lXJ3Pk9dDDCANQYR
-6FxgUle8/fn+aO2/zPGJLdPnxQmrrXtRyN8+LZLvlavVhrIYsdaZyDDAiS1Q1Rf6/lbHy0LS
-ia1oaktlhKtVR9u5oyGzObG4PtJu3GEIEhHCoKjCattT93+h4/OJTWcziw8DtjJ8uV+zdfEo
-kvuZqes9hbEHpwuR9G5mWUxroirX7QYhpxBD1NHhcQPj43ykEFJUXgLiPpUhKn0YEIGgSudG
-/pjWFVvn8arcrx2rrctWWzc2WMbweTGj7Xy6OgJHIcQBWxWc2AoYp5w8H2eLGJWgyhABGRgD
-Ow62qj9up168LIT0cTFlAOK+KdNxOptPLEGV+43D5uNtS1UU+KgsJpY+RoIKH66fqGJalykH
-Pi3fcXWzIupAITmzumRiK1T1iFqey9SW6e3UIuTUVth2gc/3D8f8tpeoZAKc7JsQfRopVZUY
-BuZvSjY+oAq+j1SFcLnaIiKYAu4+LVNZjNgdd7yoGoiMTA8j3blecVFpapvmE5sWE5v2v+cT
-m0yRs+l6alsQox6cftVxANl1XTw7zY8+4MKA5BAH6H3k28axcYHC5Pg4cN12PLpAZeDq4xl3
-X86Tj0pQuG87Fic1tjTjEKdgCqjLAhiQ3WaKMZGHB8bgBB3P1Q8d34sflC4oLig5UOQ5VWHY
-uJ5pbZnVFbY0RD8cRv2t65l9vM40eCo8N+eLHVoothBUFUXZuB7nA31UysIc+gERwZjxkd3/
-PgzUZcHza7dXHd+3OnU1Lp7XJeeLE3SAm3WH6weiBoTxbqK2hkrM2BnqOHecXa6yR9fjY+Rs
-9gYfFB+VtfP4fmDrw+GurXlTYQzYaozx3mGT7xr5GMeLpOKph37V8XbjUFVyGSPUdj2fb9fc
-PDwiuWCLEbqMEQyC98pkRxS1LZjWI4L8z3WbqSoi0JyU2FLoo2YPrs9cH7POBQZVqkKoqwoQ
-8nxEsxAUEcEWBVNb4eMxln8XcsZboIGb1lGXOapjJPJ8bEpNDmF3pRZ04G1t8RoRZIfNT+xY
-l0VaNif7zvmFTYH05XRKsTtbOoDXgDWGfFfoZ1fH332fgIbxVqQuI8aMJaDD065FhNv2CbM/
-zk+S7yK6y9hz6fqYfb5v08VZ84JIYLxd+Xj78F1XXpPvOm7M07n2Po6Tzq6pbjcdLurB+LKp
-R/QI8KaSo3cH55Tsw3W7a3FfUvgflR9SflRl9qbAeQUZCenqN2PDaVOnRxd+9wQQ9eWm/oy8
-quTidJokH280HzrHt42jfyWK/075P4AQnUfVTZNLAAAAAElFTkSuQmCC
-ENDofIMG
-
-demo.show_image('png', 'transparent grayscale', <<'ENDofIMG')
-iVBORw0KGgoAAAANSUhEUgAAAC4AAAAjCAQAAAE2KcD0AAAFPElEQVR4nMXWXYicZxUH8N+z
-M3HezCy76axJzJrtR8jWVVc29IMtTTG6hUqqqL1QWlrxQmirXpTihRdSY4pUSws1IIEWBesH
-CAZFapNaSISgpUurJra2i7u2IWs+dpNMnbWzndfM9Hixs5tNmrYJCv7vHvi///ec85z/OQ/L
-kODeeMZ1fq+LsTjolIqixAejx3jqj5EFknfEWFBke5zwkga62O01+9LAO38INsW9QeKmmHG1
-vzrgapkttiWqkWA0hsziSr/1CX+T25fAp+Km4PZg8F2CfCseipGga+HwxYBvxur4hWQoigtp
-T7grHk3rbXHAVKJIzQRq9sZ+a/XpixHFBZGqaQ/LNVTlBnVRVcKAPWnEeBrWMrXw7+uD7WfF
-3EVTFdvSxaaiFJfFaGAxlLfinmj7fuIzcUhFpmUZfXvUND2a+Gr0uT+x1+cxFhsc1zDvQOrE
-CC97wWH3xHDM+JMHg5YV+uNSKz2PHrfEQ2eK24OaLgVTDnnKtpj0Rx8wo+IG3VpmLFNnSNW4
-futUZb7tW9b6Xcq1rFe2QdU/ztAHvIgMe9KIXDvdl4rYl7aln6VBfcbtSEupnkTRpKk0Grkt
-9mHHUsV3nl378kV31f8SH1/qkbe91UVU4hanbI0ylhXybIzE12JrwN0OI/caOqPgDL4SK+xI
-rI5rPK2d7opZdU3zSsYXC7kxNhs2blf6g82gV6adxmKlo5oyp0yf6Zmtpu1xrc/Gi9a6O2DG
-WJyy0SsOpvE0nRiJjvq/UHJUZovDun0ynkyVOKak5kQaiH7c7IFF9V7UHVFB07NuQ26TKzSN
-RH+nJkOL9HIn3kk1/cpe8NPodaWG0zIFmYIp/Yv0WS25y5WUFc172EsqqKsbVlWQyVUW6UcN
-utWvzVow9Kf9wHW6HUz7XWrOOmUFaxbp+xXs1KNfrzm5ptl00puYSLkbJZkhO1OH3khFa1CQ
-+7mqGh5LR8AD6QUVg+5Ly3qmbbW2ZF8ajaLnwXTnpnctu/lOz5RlKp5I3KiinWDP2w+k7XH7
-hVuk8v9008DSz9/VTBeG7XHMaWuVvOJDvv7fiA/GHZ5dKvODMeuX+jQdlduoucS7yMVQjUGb
-9Nndmd6jca2C57R0oyWXG/BEuoDIR2PMKe/3E1MdehWHrXIgUYmP+piGJxV1a8hRUnJUOebP
-NONg3OGfakoaXjVo2KQ5+42ncVvjEl9wIH6VFhKt6zeIsSipqWtoKMmFCfk5dVg6luM2bXWc
-1nad1z3jEkV9aq5X84bvJRiOgi/7sYaKYYOaHcssYCg2K7rchMfTslk6nwqu6EjTVHeVQ3Iz
-qnbJ9PhuVIM65v1bjrbjTtoUo3F9bIrRGI1eL9tgzuPL9ymsxGkwbVbJvBnjpqxSs9srqr7h
-kaiZt9cN+mVaeqwXCtrKCgoKOG7ewlPgnC0w57gTCrq916SPGNbvpBYm3ZnqVtim5E2rNbVM
-OuI1fTIVmV69Mpma9RYedcvEj2DAgKvcqmmvY15X1LJBr4qW1XF/+rtTblRTM2HWIbMY0WMd
-Mpmyklnz+s4Vf05TpumgH9ons1q3XiUzNmq6wjAeSU3vcY33qaWJdDS96g1Vl0lKGuoyawyp
-ndstcE+0PG29XKYkVzavoeFqdUWNjicH4maFZW+DQnxJBbm6NTJ853wmOm2dAb1aHQtnfpPg
-c/Fn7c4oZjr9KO5eMgrt9Jjz4yzxVbowo6ok87wTCbZGzZyBzgnytOOCBu859m/4sGOK6ktL
-4qZ49byboHEBU2kZ5c5YKfMX42oX/849L/4D4jD0vGNZ6YMAAAAASUVORK5CYII=
-ENDofIMG
-
-demo.show_image('jpeg', 'color', <<'ENDofIMG')
-/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
-Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
-MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
-CAAmADkDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
-AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
-FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
-h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
-5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
-AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
-NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
-hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
-5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDzLyJSuV5FIsUm4DAzW1Ywpb3sbPhoQ4LA
-jPGea6jWdH0W6EdxYLJA78gICUb169KIq8JTutDWnSnUmqcFds4y2e5jkzGrOVGTt7Ct2aae
-ZFzGSR6cmni1t4RiFWCseRknJHf+f51MsZG4JHwP4hXmVaqctEfVYDLqsKbTla+43S7NZLkr
-dHamMEgg9R6isDVtDu7KdjFGZoOodOcD3rowWIVRkbDuUHI3DFbWnOs1n9pIIMZwwIzyBxwe
-v/16ujWs9iK+VQqfFN3W3Yo6Pp/n6LbXFx9rWeCNifLbjac9T6YxXN+a/wDzy/SvedC13S5/
-DtnZ3ckZmMQSVVTK8cYJ6HI96tfZvC3/AD42/wD35NdfM5dT5Pdtp3PBtEji1CVTtyR1U9vc
-11WpXOnRW9rYwWxB6O+/n2OOgrm40EZyg2n2rTm8M6xp+lrrk1q76bIu4hcMwB74zkD3/TFV
-KcXRcFHXudWGm6deM+axUmCQytGjrIi8Kyg81NFKrxqogVsMWk5OH78j8/YfnQ1hKlrbXU8F
-xCk43ws67d4/L3H5j1rLurqVLhhno2RXlKErn2f1qEIKV7xL77QN21VxwMdqdLdvBpbpDveS
-5cJGiHBzyMj8/wBB61i3OoySJjhR3C0+71FYYfIjncSgbSUOMj0J/mBW1OlJSuzz8fmsY0nG
-kvQ6qO4ubaLyt8fnR/Idh3AEdfyNQeVrH/QQuf8Avv8A+tWd4fu0j0dePnEjIM+vU/zqz/aq
-f8/J/wC/h/xotNSaifEO6bsVo1yy8DmvetkF3HbaW0INuYFMiYwpXA4wKKK7Y7HWtzSvNPs7
-ywezurdJLYrjyyOgx29D6EcivGviF4EtfDlnFqVpeSvFLMsPkSKCVJVjncO3y9MfjRRRUirX
-NKdWcfdi9DhbW3YRS3a7cW+GOepycDA+vWsaS3AcqScjvRRUU9zOcnLVlqx8+Elll43qoH1r
-K2L70UVaerMluf/Z
-ENDofIMG
-
-demo.show_image('jpeg', 'grayscale', <<'ENDofIMG')
-/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
-Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAAmADkBAREA/8QAHwAA
-AQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQR
-BRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RF
-RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip
-qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEB
-AAA/APMvIlK5XkUixSbgMDNX7Z7mOTMas5UZO3sK3Zpp5kXMZJHpyan0uzWS5K3R2pjBIIPU
-eorA1bQ7uynYxRmaDqHTnA966/R9P8/Rba4uPtazwRsT5bcbTnqfTGK5vzX/AOeX6VFYwpb3
-sbPhoQ4LAjPGea6jWdH0W6EdxYLJA78gICUb169KzBa28IxCrBWPIyTkjv8Az/OpljI3BI+B
-/EKcCxCqMjYdyg5G4Yra051ms/tJBBjOGBGeQOOD1/8Ar16PoWu6XP4ds7O7kjMxiCSqqZXj
-jBPQ5HvVr7N4W/58bf8A78mvBtEji1CVTtyR1U9vc11WpXOnRW9rYwWxB6O+/n2OOgrDmCQy
-tGjrIi8Kyg81NFKrxqogVsMWk5OH78j8/YfnUT7QN21VxwMdqdLdvBpbpDveS5cJGiHBzyMj
-8/0HrWnHcXNtF5W+Pzo/kOw7gCOv5GoPK1j/AKCFz/33/wDWrIjQRnKDafatObwzrGn6WuuT
-Wrvpsi7iFwzAHvjOQPf9MVE1hKlrbXU8FxCk43ws67d4/L3H5j1rLurqVLhhno2RVa51GSRM
-cKO4Wn3eorDD5Ec7iUDaShxkehP8wK0vD92kejrx84kZBn16n+dWf7VT/n5P/fw/41WjXLLw
-Oa962QXcdtpbQg25gUyJjClcDjArSvNPs7ywezurdJLYrjyyOgx29D6EcivGviF4EtfDlnFq
-VpeSvFLMsPkSKCVJVjncO3y9MfjXC2tuwilu124t8Mc9Tk4GB9etY0luA5Uk5HerVj58JLLL
-xvVQPrWVsX3r/9k=
-ENDofIMG
-
-demo.show_image('jpeg', 'progressive color', <<'ENDofIMG')
-/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
-Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
-MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wgAR
-CAAmADkDASIAAhEBAxEB/8QAGgAAAgMBAQAAAAAAAAAAAAAAAAQDBQYBAv/EABkBAAIDAQAA
-AAAAAAAAAAAAAAECAAMFBP/aAAwDAQACEAMQAAABzA7aRqV/vvl1eIWLrCCt3stuTgrWtaNs
-PsV5dljqXX57XwtLMSLehdazjQjUSQBZVQK//8QAHhAAAgIDAQEBAQAAAAAAAAAAAQIAAwQR
-EiEQBRP/2gAIAQEAAQUC0ZoxegSSZUm2toZDTXuncQcvdTS05UTXyv1KL6jj84spAsNjVhT4
-QfIW1UGZRq6DyHGurq4PLMemsJjWaGO2qf6wTxg9aOn6GCuOir4VibHz/8QAHxEAAgEEAgMA
-AAAAAAAAAAAAAQIAAwQQERIxEyFB/9oACAEDAQE/AVUseIlC3YL3HtQ3ZxTPFwdzygDfyV7o
-BdLlWI9CE7x//8QAGxEAAwEBAAMAAAAAAAAAAAAAAAECESEQEjH/2gAIAQIBAT8BXxsqukWb
-o2vTMMZMvTu8EUifH//EACgQAAEDAwIDCQAAAAAAAAAAAAIAAREQITESUQMiMhMjM0FScYGR
-of/aAAgBAQAGPwKllhcys0shItUs3ksJtkxBLKyxTVsgAnaYuugfqggwqMrHvS2SwotLLxCp
-27j3boSdiacVhnuvldX7QeFHLF1oIZHZNxBN4d4h05emmaf/xAAgEAEAAwACAgIDAAAAAAAA
-AAABABEhMUFRcWGBEJHx/9oACAEBAAE/IcshZFgLXiHkBRkjX2ZMMXcupaDQ7fZRlXxwzq2m
-HKvtNw8afMR+4nAyQDPwUhn1PcOblWCA4SAgq7fyjXNBFYupQJoHCzZ/Qg6ZDC0rzWJF3bSr
-hl7gHj1CvvTIIebEpAaSnHFp1UQioh8wNbjHv6jUa7TSpzzsEon/2gAMAwEAAgADAAAAEIb7
-MuvRaP43Yv/EABoRAQADAQEBAAAAAAAAAAAAAAEAETEhUXH/2gAIAQMBAT8QGjax8NL2bzZn
-k1Ubj8VKe1w5H5Gxahs6xyN0w2f/xAAaEQEBAQEBAQEAAAAAAAAAAAABABEhMUFR/9oACAEC
-AQE/EBu05G8Fg+WvqUj1+xtC02FE8QZt6h63/8QAJBABAAICAgIBBAMAAAAAAAAAAQARITFB
-UWGRcaGx0fCB4fH/2gAIAQEAAT8QvtkSkKLl8RFvQllJTrLEKYaUR2dkTm2mejzMlLHRa9vV
-VP3kopAoS8XmEZJwK929QBQEyWtpz9/cQpiOEFAWXobKVLxEVQS8hjDv+46IjecMUumzzP8A
-cRqyTa48sXGOt/w1ogxTIDmGiosjXPJ78HuVGgwVxK9tt03ks9/Q7nZ8b0E36Z+z/EFWbeJY
-AwKAPNXYefpUHWepPryezuBl6sSs4HJFYsll1Z0v3CYYxDfe37zz/b8yzAZldCmppUMURDFp
-Y0Vx09JklKrxFSl046V/MBjlFe22ij53AGls5lpwah8z5p//2Q==
-ENDofIMG
-
-demo.show_image('jpeg', 'progressive grayscale', <<'ENDofIMG')
-/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
-Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wgALCAAmADkBAREA/8QAGgAA
-AgMBAQAAAAAAAAAAAAAAAgQDBQYBAP/aAAgBAQAAAAHMenfNC3rRtFT67pJcFaomPWQTaBWP
-rMsW9ZxtElKr/8QAHhAAAgIDAQEBAQAAAAAAAAAAAQIAAwQREiEQBRP/2gAIAQEAAQUC0Zox
-egSSZUm2toZDTXuncQcvdTS05UTXyv1KL6jj84spAsNjVhT4QfIW1UGZRq6DyHGurq4PLMem
-sJjWaGO2qf6wTxg9aOn6GCuOir4VibHz/8QAKBAAAQMDAgMJAAAAAAAAAAAAAgABERAhMRJR
-AyIyEyMzQVJxgZGh/9oACAEBAAY/AqWWFzKzSyEi1SzeSwm2TEEsrLFNWyACdpi66B+qCDCo
-yse9LZLCi0svEKnbuPduhJ2JpxWGe6+V1ftB4UcsXWghkdk3EE3h3iHTl6aZp//EACAQAQAD
-AAICAgMAAAAAAAAAAAEAESExQVFxYYEQkfH/2gAIAQEAAT8hyyFkWAteIeQFGSNfZkwxdy6l
-oNDt9lGVfHDOraYcq+03Dxp8xH7icDJAM/BSGfU9w5uVYIDhICCrt/KNc0EVi6lAmgcLNn9C
-DpkMLSvNYkXdtKuGXuAePUK+9Mgh5sSkBpKccWnVRCKiHzA1uMe/qNRrtNKnPOwSif/aAAgB
-AQAAABCrPPK25v/EACQQAQACAgICAQQDAAAAAAAAAAEAESExQVFhkXGhsdHwgeHx/9oACAEB
-AAE/EL7ZEpCi5fERb0JZSU6yxCmGlEdnZE5tpno8zJSx0Wvb1VT95KKQKEvF5hGScCvdvUAU
-BMlrac/f3EKYjhBQFl6GylS8RFUEvIYw7/uOiI3nDFLps8z/AHEask2uPLFxjrf8NaIMUyA5
-hoqLI1zye/B7lRoMFcSvbbdN5LPf0O52fG9BN+mfs/xBVm3iWAMCgDzV2Hn6VB1nqT68ns7g
-ZerErOByRWLJZdWdL9wmGMQ33t+88/2/MswGZXQpqaVDFEQxaWNFcdPSZJSq8RUpdOOlfzAY
-5RXttoo+dwBpbOZacGofM+af/9k=
-ENDofIMG
-
-demo.show_image('tiff', 'uncompressed', <<'ENDofIMG')
-TU0AKgAAHggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAADb///bttu2tv+Sttu2ttvb2/8AJEkAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////b//+229u2
-29vb2/+2ttttttu2ttu22//b//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAJAC229skbZLb//+2tv8AJEkkbZJtkrbb///b//9tktvb//8A
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSttu2
-29u2ttvb2/8AAAC229skbZIAACSSttu229uSttsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAJCQAJCSSttsAAACS
-ttvb//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAASUkAAABJbZIAACQkAACStrYASQDb2/8AAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////29v//9v/29v///8AAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AABtJACSbSS2bUnbkm22km3btm22kkn/25L//9ttJAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSSSSSSSTbkm2SSSSSSSSSJACSSSS2
-bUm2bUm2bUn/27b//9v/////////////27b/tm3btm3//9v/27b//////////////9skAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAkAABJAAAAAACSSSRJAABtJABtJACSbSSSSSTbtm22km3btm3btm3btm22km3/
-km22bUn/25L/27b/25Lbtm3btpLbkm3/27bbtpLbtm22km3/25L/27b//7b/27b//////9v/
-/////9v/////tpL/km1tJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtAABJAABJAABJAACSJCRJ
-AABtJABtAACSSSRtJACSbSSSSSTbkm222222km22bUm2kknbtpLb25K2km22kknbtpLbtm3b
-tpLbtm22km3btpK2km3btpLb25L//9v/25L/25Lb29v//7b/27b//7b/27b/25Lb29v/27bb
-tpL//9v//////7b///////////////+2bUkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAABJAABJAABJAABJAABJJACSSSSSJABtSQCSSSSSSSSSSSSSJCSSSSS2
-bUmSSSSSJABtJABtAACSSSS2kkm2bUnbkkm2kkn/25K2kknbtm22km3bkm22km3/tm3btm3b
-tm3btpLbkm22km22kkm2kknbtm3bkpL/25L/27b//7b/27b//7b/////tm3btpL/27b/tm3b
-tpLbtm3//7b/25L//9v/////////////////////2/8AAAAAAAAAAAAAAACSSSQkAABtJABJ
-AABtJABJAABJAABJAACSSSRtSQBtJABtSSS2kkmSJCSSJCSSSSSSSSSSSSSSSSSSSSSSSSRt
-JACSSSSSSSS2bUm2km3//9u2bUm2bUm2bUm2SSS2bUm2bUm2km2SSSSSSSTbtm3btpL/25K2
-km3btkm2km3btm22km3bkm3btpL/25K2tm3bkm22km3btm22bUm2bUm2bUm2kkm2bUnbtm22
-tm3bkm3b25L//9v///////////8ADgEAAAMAAAABAEAAAAEBAAMAAAABACgAAAECAAMAAAAD
-AAAetgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEV
-AAMAAAABAAMAAAEWAAMAAAABACgAAAEXAAQAAAABAAAeAAEaAAUAAAABAAAevAEbAAUAAAAB
-AAAexAEcAAMAAAABAAEAAAEoAAMAAAABAAIAAAAAAAAACAAIAAgSwAAAAAQAABLAAAAABAAA
-ENDofIMG
-
-demo.show_image('tiff', 'packbits compressed', <<'ENDofIMG')
-TU0AKgAABAqBAMEAgQDBAIEAwQCBAMEAgQDBAIEAwQCBAMEAgQDBAIEAwQCBAMEAgQDBAIEA
-wQCBAMEAgQDBAIEAwQCbAAvb///bttu2tv+Sttv/tv7bA/8AJEm8AKEA/v8G2///ttvbtv3b
-Df+2ttttttu2ttu22//b//+/AKMACCQAttvbJG2S2////7YR/wAkSSRtkm2Sttv//9v//22S
-/9v//8IAoQADkrbbtv/b/7b+2wD//gARttvbJG2SAAAkkrbbttvbkrbbwgCcAAAk9wD/JAUA
-JCSSttv+AAGStv/b///CAJcA/0n+AAJJbZL/AP8k/wAIkra2AEkA29v/wgCBAMEAgQDBAIEA
-wQCBAMEAgQDBAIEAwQCBAMEAgQDBAIEAwQCBAMEAgQDBAIEAwQD9///b//8B2///2/7/gQDQ
-AB5tJACSbSS2bUnbkm22km3btm22kkn/25L//9ttJAAkgQDgACOSSSSSSSTbkm2SSSSSSSSS
-JACSSSS2bUm2bUm2bUn/27b//9v3/w3btv+2bdu2bf//2//btvb/AdskigADJAAASfwAU5JJ
-JEkAAG0kAG0kAJJtJJJJJNu2bbaSbdu2bdu2bdu2bbaSbf+SbbZtSf/bkv/btv/bktu2bdu2
-ktuSbf/bttu2ktu2bbaSbf/bkv/btv//tv/btvz/ANv8/wDb/f8GtpL/km1tJLUAYm0AAEkA
-AEkAAEkAAJIkJEkAAG0kAG0AAJJJJG0kAJJtJJJJJNuSbbbbbbaSbbZtSbaSSdu2ktvbkraS
-bbaSSdu2ktu2bdu2ktu2bbaSbdu2kraSbdu2ktvbkv//2//bkv/bkv7b//8Mtv/btv//tv/b
-tv/bkv7bCP/bttu2kv//2/z/ALb1/wK2bUnXAH9JAABJAABJAABJAABJJACSSSSSJABtSQCS
-SSSSSSSSSSSSJCSSSSS2bUmSSSSSJABtJABtAACSSSS2kkm2bUnbkkm2kkn/25K2kknbtm22
-km3bkm22km3/tm3btm3btm3btpLbkm22km22kkm2kknbtm3bkpL/25L/27b//7b/2wO2//+2
-/f8Ztm3btpL/27b/tm3btpLbtm3//7b/25L//9vx/wHb//UAAZJJ/yT/AH9tJABJAABtJABJ
-AABJAABJAACSSSRtSQBtJABtSSS2kkmSJCSSJCSSSSSSSSSSSSSSSSSSSSSSSSRtJACSSSSS
-SSS2bUm2km3//9u2bUm2bUm2bUm2SSS2bUm2bUm2km2SSSSSSSTbtm3btpL/25K2km3btkm2
-km3btm22km3bkjBt27aS/9uStrZt25JttpJt27Zttm1Jtm1Jtm1JtpJJtm1J27ZttrZt25Jt
-29uS///b+P8ADgEAAAMAAAABAEAAAAEBAAMAAAABACgAAAECAAMAAAADAAAEuAEDAAMAAAAB
-gAUAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMAAAABAAMAAAEW
-AAMAAAABACgAAAEXAAQAAAABAAAEAgEaAAUAAAABAAAEvgEbAAUAAAABAAAExgEcAAMAAAAB
-AAEAAAEoAAMAAAABAAIAAAAAAAAACAAIAAgSwAAAAAQAABLAAAAABAAA
-ENDofIMG
-
-if false
-demo.show_image('tiff', 'pixarlog compressed', <<'ENDofIMG')
-TU0AKgAAA3Z4nO2aIWzbUBCGz7HjYyVTNDAp0CgKDRorCauiSGFjRmWRxs0rlQ2FlUWKrLKQ
-sIDK1BoyjFRUjZSF7f13eYnjpZOmdeuU3Wc1se+dn17uf/ee5SuRYRiGYRiGYRiGYRiGYRiG
-YRg/YxVt3EG04IpLJkqocJ8VD6S1746ELsOP8UNMxO1J9MbDPQs2EvOKcV66uOsZoo34lwxb
-JraMfEsif+S06Lrj74/5XNi2iG6jdbCKruMRz3gdfKUbF/OFi/c0vHbzfNvqBDl1giENKHdt
-492dI/7sdIElMRV+i0l0G62igcx3ZMBhnUFc0ebV4fZzeBfDfx2ofyGr1DycOt+3/RXnALIB
-63rTqnYo9SVYBxptVS11+WDz//WZh/MQ8Z5E8/AiwjdmPnTg9qfg1sV+Hn7gabiK3gWbSDPl
-rcdsGIZhGIZhGIZhGIZhnCebXc1IKxeJ2LSGkbija+8G/zAXEd4LDqkTbFuo091T312l8iYd
-79JhK7ngGY+dNSfoklKP38eX4VOMt73NN77Gr4B3tP4NOeLbCWY84qfYt18x4ntPUCd133XG
-zv+RSOp5RD57DlRSiSo5Y59RY1HQV2fH1KRyunbDy/D/0VRjr3HVirQqMuJJxO2UvDY+R4hm
-DKUe3RXywudIHbVrdBe8lNzJJfK08y2kQr5k7RfXS0ZeZaJNIfYl+35S8dF7j1fI8dHV8fmC
-P7P23OO7+Dl8/idVvZCYz7hpz6VyNHKz/6ACxj8kqLNk5MWxIrkoktKhP0Re49uX+qtWxUtn
-1cjP2Nvhi8/h7vyg7FDUXLKe+7o6tEKs/bgrGUEiFfdTeqji6qN1evSaiLYH34X4/piVaOnx
-Qzx1Gr72f03MX9xdEdlcVh5dhZaMLBkS1XJCuZJxo1XXKOwWsOld6nPQbiC9asT70l+5+93Q
-cMFY//rSk1eBaj7IgaoxW3wGlXu710X7QetwpxnRqTxSEHlEupJZk+x3v2xnIRk1VMvk3oJp
-32tz7a2Du7svVNl0tUFdmtt+NiNWOuf1vE6+m/8aUR/5bSuTqBYu06/2UTjeLU7h8+h+r6nf
-ZfAMMKYbUaTH3+Lj+1Tf+n4E/6K2c+kKqS26Py0k7xDTmcz+tPZ04VUmyTLvX4p/wdR4Gsm4
-uV54beCT1Z5edCVNpc/TSn0HoOsh4gAOAQAAAwAAAAEAQAAAAQEAAwAAAAEAKAAAAQIAAwAA
-AAMAAAQkAQMAAwAAAAGAjQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAA
-ARUAAwAAAAEAAwAAARYAAwAAAAEAKAAAARcABAAAAAEAAANuARoABQAAAAEAAAQqARsABQAA
-AAEAAAQyARwAAwAAAAEAAQAAASgAAwAAAAEAAgAAAAAAAAAIAAgACBLAAAAABAAAEsAAAAAE
-AAA=
-ENDofIMG
-end
-
-if false
-demo.show_image('tiff', 'logluv compressed', <<'ENDofIMG')
-TU0AKgAAAAgADgEAAAMAAAABAEAAAAEBAAMAAAABACgAAAECAAMAAAADAAAAtgEDAAMAAAAB
-h3QAAAEGAAMAAAABAAIAAAERAAQAAAABAAAAAAESAAMAAAABAAEAAAEVAAMAAAABAAMAAAEW
-AAMAAAABACgAAAEXAAQAAAABAAAAAAEaAAUAAAABAAAAvAEbAAUAAAABAAAAxAEcAAMAAAAB
-AAEAAAEoAAMAAAABAAIAAAAAAAAAEAAQABASwAAAAAQAABLAAAAABAAA
-ENDofIMG
-end
-
-demo.show_image('tiff', 'jpeg compressed', <<'ENDofIMG')
-TU0AKgAABID/2P/AABEIACgAQAMAEQABEQACEQD/2gAMAwAAAQACAAA/APn+vn+vn+iiiiii
-iiiiiiiiiiiiiiiiiiiiiiiiiiitK28O63e28VxaaNqE8ExIilitXZXIODtIGDyCOPStO18O
-a5e28VxaaNqNxBLny5IrV3V8Eg4IGDyCPqDWtZ+FvEOo2kd3Y6Dql1bS/wCrmgs5HR+SOCBg
-8gj6g1m1mkEEgggjqDWUysjFWUqwOCCMEGikpKKKKKKKKKKKKKKUHBB449RRXdXHxU16+nt5
-Ll1j8li5MDOTIxdWJYOzKSMMF3KwG4jHTHo83xl8QXs8U92Y1aJWASAMAxZkO472ZSQA4G5W
-A3YwRjb6mfjj4guZ4pblYYhEr/u7VWHmMzIcszuwyAHC5Vgu7G054x/GPiGDxNqtvqEcLRz/
-AGcR3LFAvmSB3wwwTxsKcEnbjaCQorA8e+J7bxbrdvqcEDRzfZViunaNU82QM3zgAnjaUGCT
-jG0HAFcx8QfFlt4z1221aK18i4+yrFdt5ap50iu+HwCTymzgkkY25IUE87XLVydFFFFFFFFF
-FFFFFFFFFFFFFFFFFFe2vceH9WtktdR8KaRGsEu53hjW2Z8ZH3o1jP8AeG32B6/d7l/E9hqU
-ENvqHhjSkWKUNKUt47Z2IJHDRiM+oK5xx7Db0t34mjvrWK3u9F0vEcoeUxWkdvI2MjAaJUOO
-eV6d/TFlfhp4BvnlmZtYtCHG6G3uUKJk9F3Izce7ZP542IfDXgG5trm4uv7YtJlOfJhnURAs
-TiNMxuxwM43NkgZ61p2lh4Lube5muodVhmDMdlvdII0JJwqgxuxA46tkj8cT23wi+HtwIsat
-raF/veZcQx4PoN0QJ+vA4zV+x8C/Dm6it92rauJJOH33McIVs8gb4cnjvwDjOfS5p+geAZoo
-BcXuqmWRQGYXEcKo2eRhoiTgc54HB554zofgFayMfM8XeSp+ZC2nggr0/wCeo7+38jitB8H9
-OLAXfi9bVXXfG72PyuucZB8z1BH4fXEUHw70/wDdte+IzaxyLvjZrLO5ckZA3jnIx6Z79cNm
-+AEUkFwNO8YQXF3EuRFLYtGh/wB5w7bRjnODS3HwYtJYpF0fxfbXlzHgvHNZvEqg9CWVnwMc
-5x0/HEt18NNPc+VpPimG7uVAaRJ7NokQHHJZWf37c44zms4fs++JyCf7Y8P/AC5zi5lOB68R
-9ODVdfgZr7KP+J54fDEkbBcysw9yBGePft3qOH4S6lLGr/2/oCgnH/HxK2PQnbGeD69B3xkZ
-w7z4N+MrW8lgjs7O5RGwJor+FUf3AdlbGeOQOlYM/wAL/E0V08McdhOik7ZV1CGNZAP4gJGV
-sfUDofSsV/Aeti9kt4jYShSdsxvookcDuPNZTjnuAfbg1n6h8MPGumiMy+HbybzM4+x7brGM
-Z3eUW29e+M846GoL34aeMrHZu8P3dxuyM2O26C4x97yi23qOuM0tz8PPFlvs2aLNeb8/8g90
-vNuMfe8ktt68ZxnnHQ1//9kAAA8BAAADAAAAAQBAAAABAQADAAAAAQAoAAABAgADAAAAAwAA
-BToBAwADAAAAAQAHAAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQAD
-AAAAAQADAAABFgADAAAAAQAoAAABFwAEAAAAAQAABHcBGgAFAAAAAQAABUABGwAFAAAAAQAA
-BUgBHAADAAAAAQABAAABKAADAAAAAQACAAABWwAHAAABIQAABVAAAAAAAAgACAAIEsAAAAAE
-AAASwAAAAAQAAP/Y/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQu
-JyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQF
-BgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0Kx
-wRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlq
-c3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT
-1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9k=
-ENDofIMG
-
-demo.show_image('tiff', 'deflate compressed', <<'ENDofIMG')
-TU0AKgAAAah4nO2Y643EMAiEXQzNUIyboRiaoRh2ADuP+7N70knZkxhZlmNH2fkMRPGO0Wq1
-Wq1Wq9Vqtb5L5m5qqi7Rm5kP4qdNfSSHc3dYDtfmMD8TQS3mn3b3TjRgm6YEgsaeYzwRg4TC
-9PcjRMLYzpmxcABW8+ifNviJ6DIktLKN/vv3/xRHwXJuPoV5HTwqKK1Wq9VqtVqtz+VxwMjv
-8ej/39fUpCGTdLLJVJmm6NlNQIQlev+AhyVMaDBfA6GYAU41nFrzqLSFSw3GjJf6ZeEpUvwu
-bxDOcFREAkpXRKph7IjRzOjAvEnOC9jzcC7rnlp13YB29ip4wvxT1Jn+qwlthMQ5QWDbwlsE
-RTis4uQX+cZl+zCPQfWWGZgsEkfHhaML3KyQN901lIjwL/6a4GvL5EEK4QErneKSKqPW0qaD
-+awarnpJlkTIOnI9Aic1o1LsuEHuMdIyHTgrPyVTVKsM/YfuRzY4odxz3v2KBfaf021aDQqi
-E2q3SYs0QxN1cdSOHnW0i8uWyYoR79dFIK95nedr5HhObRRmctXuUC9uNR31AAAOAQAAAwAA
-AAEAQAAAAQEAAwAAAAEAKAAAAQIAAwAAAAMAAAJWAQMAAwAAAAGAsgAAAQYAAwAAAAEAAgAA
-AREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEAAwAAARYAAwAAAAEAKAAAARcABAAA
-AAEAAAGfARoABQAAAAEAAAJcARsABQAAAAEAAAJkARwAAwAAAAEAAQAAASgAAwAAAAEAAgAA
-AAAAAAAIAAgACBLAAAAABAAAEsAAAAAEAAA=
-ENDofIMG
-
-if Tk::PLATFORM['platform'] != 'windows'
-demo.show_image('other', 'postscript', <<'ENDofIMG')
-%!PS-Adobe-3
-%%Title: postscript.ps
-%%BoundingBox: 66 648 146 720
-%%Pages: 1
-%%DocumentProcSets: Adobe_distill 0.96
-%%EndComments
-%%BeginProcSet: Adobe_distill 0.96
-/PROLOGUE 30 40 add dict def
- % 30 procedure entries + room for 40 cached font dictionaries
- PROLOGUE begin
- /clip { } def    % causes problems. remove if "clip" is needed
- /bdef { bind def } bind def   /ldef { load def } bdef
- /T { moveto show } bdef       /A { moveto ashow } bdef
- /W { moveto widthshow } bdef  /AW { moveto awidthshow } bdef
- /f /fill ldef                 /R { { rlineto } repeat } bdef
- /r /rlineto ldef              /L { { lineto } repeat } bdef
- /m /moveto ldef               /l { moveto lineto stroke } bdef
- /x { 0 rlineto } bdef         /y { 0 exch rlineto } bdef
- /c /curveto ldef              /cp /closepath ldef
- /s /stroke ldef               /w /setlinewidth ldef
- /g /setgray ldef              /j /setlinejoin ldef
- /d /setdash ldef              /F /setfont ldef
- /C /setcmykcolor where { /setcmykcolor get }{ %ifelse
-   { %def
-     1 sub 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat
-     setrgbcolor
-   } bind
- } ifelse def
- /selectfont where { pop }{ %ifelse
-     /selectfont { exch findfont exch scalefont setfont } bdef
- } ifelse
- /MF { exch findfont exch makefont setfont } bdef
- /FF /selectfont ldef
- /DF { selectfont currentfont def } bdef
- /BEGINPAGE { pop /pagesave save def } bdef
- /ENDPAGE { pop pagesave restore showpage } def
- /REMAP { %def
-   FontDirectory 2 index known { pop pop pop } { %ifelse
-     findfont dup length dict begin
-       { 1 index /FID ne {def}{pop pop} ifelse } forall
-       exch dup length 0 gt { /Encoding exch def }{ pop } ifelse
-     currentdict end definefont pop
-   } ifelse
- } bdef
- /RECODE { %def
-    3 -1 roll 1 index findfont /Encoding get 256 array copy exch
-    0 exch { %forall
-     dup type/nametype eq
-       { 3 {2 index} repeat put pop 1 add }{ exch pop }ifelse
-    } forall pop 3 1 roll REMAP
- } bdef
- end %PROLOGUE
-%%EndProcSet: Adobe_distill 0.96
-%%EndProlog
-%%BeginSetup
-PROLOGUE begin
-%%EndSetup
-%%Page: 1 1
-1 BEGINPAGE
-1 g
-2 setlinecap
-144 53 m
-390 x
--19 y
--390 x
-eofill
-0 g
-1.268 w
-0 setlinecap
-4 setmiterlimit
-[] 0 d
-109.698 714.182 m
-111.525 713.672 112.472 713.234 113.624 712.431 c
--22.3128 -25.8381 r
-97.4019 682.652 103.794 672.84 100.329 664.844 c
-102.034 675.687 90.7436 683.82 84.1099 684.842 c
-25.588 29.3407 r
-f
-1.0361 w
-f
-f
-91.8805 654.468 m
-96.0255 654.285 100.155 654.188 104.481 654.188 c
-113.804 654.188 122.752 654.636 131.141 655.44 c
-134.222 655.737 136.724 658.133 137.108 661.279 c
-137.79 666.855 138.107 672.696 138.107 678.705 c
-138.107 684.714 137.79 690.555 137.108 696.131 c
-136.724 699.277 134.222 701.674 131.141 701.97 c
-127.476 702.321 123.704 702.604 119.84 702.813 c
-119.84 702.813 103.842 668.373 102.231 664.827 c
-99.8549 659.595 96.601 655.765 91.8805 654.468 c
-f
-0.7851 w
-77.8202 655.44 m
-74.7171 655.948 72.2887 657.716 71.8525 661.279 c
-71.1725 666.855 70.8549 672.696 70.8549 678.705 c
-70.8549 684.714 71.1725 690.555 71.8525 696.131 c
-72.2381 699.277 74.7417 701.674 77.8202 701.97 c
-82.1335 702.383 86.5932 702.702 91.1764 702.916 c
-8.16241 9.07727 r
-99.2863 711.98 101.266 712.345 102.996 711.921 c
--28.4564 -32.9334 r
-80.6983 681.906 98.7446 677.354 98.7446 666.708 c
-98.7446 655.332 86.3243 654.054 77.8202 655.44 c
-f
-0.0843 w
-139.67 644.154 m
-140.194 644.154 140.619 644.576 140.619 645.098 c
-140.619 645.619 140.194 646.042 139.67 646.042 c
-139.146 646.042 138.721 645.619 138.721 645.098 c
-138.721 644.576 139.146 644.154 139.67 644.154 c
-1 ENDPAGE
-%%Trailer
-end %PROLOGUE
-%%Pages: 1
-%%EOF
-ENDofIMG
-end
-
-if false
-demo.show_image('other', 'pdf', <<'ENDofIMG')
-JVBERi0xLjIKJcfsj6IKNCAwIG9iago8PC9MZW5ndGggNSAwIFIvRmlsdGVyIC9GbGF0ZURl
-Y29kZT4+CnN0cmVhbQp4nF1TSY7cQAy7+xX1AkFbaXlG3jBAgAAzh/z/Esp2uyeDPhhUayEp
-FZMsnt/9/fg6/h6y/hzCHdS1UlyodH0dIrJJNyIWlLpE1OcLrGQOjLg6MOIm6+NoMULWiopN
-bevz6HRiaUQ0aKMHW1L7itQitGA2UvwdDuhoIaw8zSN3UOVqTnILNLAiXQVy3NNvCvQs+M57
-Zv4Gj6LivWK7UxS0dDCknBGl2jNY6MKoKmBkljwYfQUD2d8ZqjkKgINASEyEfCq208nc0Fon
-YSdZIiFy7IldQmbACe4FraKUfVYkzEAgarhgIBJyvIGi+IYrCWqm4I6UJ4mvV4PmfTW4J3TI
-tZCHQzdmDqeLY7Jgpf6IAG7KKVAsLAMBxWIEqrEvuAAc8xXp2Rtgkdhp038B7PfcCyQZ5WDV
-oXIuWGdCI387SO/GjezVgcZyuRaAP1b3gXVmopb1ZfXXkSM/z6Imx+4xpHAsseGHgD2abFzu
-2+qEzjwjl9fJN4vb6zd+ef1Ebq+fDrfZz4zH7GFhc0O32cPSJR+zXzIes0vnMPZlNk73ejWT
-gFNDYs/IOM3tkTXmGUbMsaPF9cAwq8KuyNwxFMc4gJY+d47S0Td/68nSNxkiUNpz159H8Twg
-g1LkcKyGBe6TkQYL3jhwTDwreSJ7gw9eZeBY3GZpPBU/FjY7/HX8A9+h3WJlbmRzdHJlYW0K
-ZW5kb2JqCjUgMCBvYmoKNTE2CmVuZG9iagozIDAgb2JqCjw8Ci9UeXBlIC9QYWdlCi9NZWRp
-YUJveCBbMCAwIDYxMiA3OTJdCi9QYXJlbnQgMiAwIFIKL1Jlc291cmNlcyA8PCAvUHJvY1Nl
-dCBbL1BERl0KPj4KL0NvbnRlbnRzIDQgMCBSCj4+CmVuZG9iagoyIDAgb2JqCjw8IC9UeXBl
-IC9QYWdlcyAvS2lkcyBbCjMgMCBSCl0gL0NvdW50IDEKPj4KZW5kb2JqCjEgMCBvYmoKPDwg
-L1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSCj4+CmVuZG9iago2IDAgb2JqCjw8IC9DcmVh
-dGlvbkRhdGUgKEQ6MTk5NzEyMDUyMjU2MzcpCi9Qcm9kdWNlciAoQWxhZGRpbiBHaG9zdHNj
-cmlwdCA1LjEwKQo+PgplbmRvYmoKeHJlZgowIDcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAw
-MDAwNzk5IDAwMDAwIG4gCjAwMDAwMDA3NDAgMDAwMDAgbiAKMDAwMDAwMDYyMCAwMDAwMCBu
-IAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDA2MDEgMDAwMDAgbiAKMDAwMDAwMDg0OCAw
-MDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDcgL1Jvb3QgMSAwIFIgL0luZm8gNiAwIFIKPj4K
-c3RhcnR4cmVmCjkzOQolJUVPRgo=
-ENDofIMG
-end
-
-#######################
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkimg/license_terms_of_Img_extension b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkimg/license_terms_of_Img_extension
deleted file mode 100644 (file)
index 7f515fe..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-This software is copyrighted by Jan Nijtmans (the maintainer)
-and a lot of other people who contributed code (most notably
-Andreas Kupries, Thomas G. Lane, Ioi K. Lam, Mario Weilguni
-and Roger E Critchlow Jr).
-The following terms apply to all files associated with the
-software unless explicitly disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute,
-and license this software and its documentation for any purpose, provided
-that existing copyright notices are retained in all copies and that this
-notice is included verbatim in any distributions. No written agreement,
-license, or royalty fee is required for any of the authorized uses.
-Modifications to this software may be copyrighted by their authors
-and need not follow the licensing terms described here, provided that
-the new terms are clearly indicated on the first page of each file where
-they apply.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
-DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
-IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
-NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-GOVERNMENT USE: If you are acquiring this software on behalf of the
-U.S. government, the Government shall have only "Restricted Rights"
-in the software and related documentation as defined in the Federal 
-Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
-are acquiring the software on behalf of the Department of Defense, the
-software shall be classified as "Commercial Computer Software" and the
-Government shall have only "Restricted Rights" as defined in Clause
-252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
-authors grant the U.S. Government and others acting in its behalf
-permission to use and distribute the software in accordance with the
-terms specified in this license. 
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkimg/readme.txt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tkimg/readme.txt
deleted file mode 100644 (file)
index 4d97744..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-The script 'demo.rb' is based on 'demo.tcl' of Tcl/Tk's 'Img' extention. 
-Image data in 'demo.rb' is those of 'demo.tcl'.
-Please read 'license_terms_of_Img_extension' file.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/Orig_LICENSE.txt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/Orig_LICENSE.txt
deleted file mode 100644 (file)
index dd176a7..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-
-  #######################################################################
-  ###  The following text is the original 'license.txt' of tktable    ###
-  ###  extension.                                                     ###
-  ###  Original Tcl source files are not include in this directry,    ###
-  ###  because of all of them are rewrited to Ruby files.             ###
-  ###  However, the image data file is quoted from iwidgets source    ###
-  ###  archive.                                                       ###
-  #######################################################################
-
-
-                  * COPYRIGHT AND LICENSE TERMS *
-
-(This file blatantly stolen from Tcl/Tk license and adapted - thus assume
-it falls under similar license terms).
-
-This software is copyrighted by Jeffrey Hobbs <jeff.hobbs@acm.org>.  The
-following terms apply to all files associated with the software unless
-explicitly disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute, and
-license this software and its documentation for any purpose, provided that
-existing copyright notices are retained in all copies and that this notice
-is included verbatim in any distributions.  No written agreement, license,
-or royalty fee is required for any of the authorized uses.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
-DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
-OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF,
-EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE IS
-PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO
-OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-RESTRICTED RIGHTS: Use, duplication or disclosure by the U.S. government
-is subject to the restrictions as set forth in subparagraph (c) (1) (ii)
-of the Rights in Technical Data and Computer Software Clause as DFARS
-252.227-7013 and FAR 52.227-19.
-
-SPECIAL NOTES:
-
-This software also falls under the bourbon_ware clause:
-
-    Should you find this software useful in your daily work, you should
-    feel obliged to take the author out for a drink if the opportunity
-    presents itself.  The user may feel exempt from this clause if they
-    are under 21 or think the author has already partaken of too many
-    drinks.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/basic.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/basic.rb
deleted file mode 100644 (file)
index 0d2d488..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env ruby
-##
-## basic.rb
-##
-## This demo shows the basic use of the table widget
-## 
-## ( based on 'basic.tcl' included source archive of tktable extension )
-##
-require 'tk'
-require 'tkextlib/tktable'
-
-ary  = TkVariable.new_hash
-rows = 8
-cols = 8
-
-# fill table variable
-((-(rows))..rows).each{|x|
-  ((-(cols))..cols).each{|y|
-    ary[x,y] = "r#{x},c#{y}"
-  }
-}
-
-lbl = TkLabel.new(:text=>"TkTable v1 Example")
-
-table = Tk::TkTable.new(:rows=>rows, :cols=>cols, :variable=>ary, 
-                        :width=>6, :height=>6, 
-                        :titlerows=>1, :titlecols=>2, 
-                        :roworigin=>-1, :colorigin=>-2, 
-                        :rowstretchmode=>:last, :colstretchmode=>:last,
-                        :rowtagcommand=>proc{|row|
-                          row = Integer(row)
-                          (row>0 && row%2 == 1)? 'OddRow': ''
-                        }, 
-                        :coltagcommand=>proc{|col|
-                          col = Integer(col)
-                          (col>0 && col%2 == 1)? 'OddCol': ''
-                        }, 
-                        :selectmode=>:extended, :sparsearray=>false)
-
-sx = table.xscrollbar(TkScrollbar.new)
-sy = table.yscrollbar(TkScrollbar.new)
-
-btn = TkButton.new(:text=>'Exit', :command=>proc{exit})
-
-Tk.grid(lbl, '-', :sticky=>:ew)
-Tk.grid(table, sy, :sticky=>:news)
-Tk.grid(sx, :sticky=>:ew)
-Tk.grid(btn, :sticky=>:ew, :columnspan=>2)
-
-Tk.root.grid_columnconfig(0, :weight=>1)
-Tk.root.grid_rowconfig(1, :weight=>1)
-
-table.tag_configure('OddRow', :bg=>'orange', :fg=>'purple')
-table.tag_configure('OddCol', :bg=>'brown', :fg=>'pink')
-
-table.set_width([-2, 7], [-1, 7], [1, 5], [2, 8], [4, 14])
-
-puts "Table is #{table.path} with array #{(table['variable'])}"
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/buttons.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/buttons.rb
deleted file mode 100644 (file)
index b21e867..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env ruby
-##
-## buttons.rb
-##
-## demonstrates the simulation of a button array
-##
-## ( based on 'buttons.tcl' included source archive of tktable extension )
-##
-require 'tk'
-require 'tkextlib/tktable'
-
-# create the table
-tab  = TkVariable.new_hash
-rows = 20
-cols = 20
-
-table = Tk::TkTable.new(:rows=>rows + 1, :cols=>cols + 1, 
-                        :variable=>tab, :titlerows=>1, :titlecols=>1, 
-                        :roworigin=>-1, :colorigin=>-1, 
-                        :colwidth=>4, :width=>8, :height=>8, 
-                        :cursor=>'top_left_arrow', :borderwidth=>2, 
-                        :flashmode=>false, :state=>:disabled)
-
-sx = table.xscrollbar(TkScrollbar.new)
-sy = table.yscrollbar(TkScrollbar.new)
-
-Tk.grid(table, sy, :sticky=>:news)
-Tk.grid(sx, :sticky=>:ew)
-
-Tk.root.grid_columnconfig(0, :weight=>1)
-Tk.root.grid_rowconfig(0, :weight=>1)
-
-# set up tags for the various states of the buttons
-table.tag_configure('OFF', :bg=>'red',    :relief=>:raised)
-table.tag_configure('ON',  :bg=>'green',  :relief=>:sunken)
-table.tag_configure('sel', :bg=>'gray75', :relief=>:flat)
-
-# clean up if mouse leaves the widget
-table.bind('Leave', proc{|w| w.selection_clear_all}, '%W')
-
-# highlight the cell under the mouse
-table.bind('Motion', proc{|w, x, y|
-             Tk.callback_break if w.selection_include?(TkComm._at(x,y))
-             w.selection_clear_all
-             w.selection_set(TkComm._at(x,y))
-             Tk.callback_break
-             ## "break" prevents the call to tkTableCheckBorder
-           }, '%W %x %y')
-
-# mousebutton 1 toggles the value of the cell
-# use of "selection includes" would work here
-table.bind('1', proc{|w, x, y|
-             #rc = w.curselection[0]
-             rc = w.index(TkComm._at(x,y))
-             if tab[rc] == 'ON'
-               tab[rc] = 'OFF'
-               w.tag_cell('OFF', rc)
-             else
-               tab[rc] = 'ON'
-               w.tag_cell('ON', rc)
-             end}, '%W %x %y')
-
-
-# inititialize the array, titles, and celltags
-0.step(rows){|i|
-  tab[i,-1] = i
-  0.step(cols){|j|
-    if i == 0
-      tab[-1,j] = j
-    end 
-    tab[i,j] = "OFF"
-    table.tag_cell('OFF', "#{i},#{j}")
-  }
-}
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/command.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/command.rb
deleted file mode 100644 (file)
index bf36159..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/env ruby
-##
-## command.rb
-##
-## This demo shows the use of the table widget's -command options
-##
-## ( based on 'command.tcl' included source archive of tktable extension )
-##
-require 'tk'
-require 'tkextlib/tktable'
-
-# create the table
-data = TkVariable.new_hash
-rows = 10
-cols = 10
-
-# fill table variable
-((-(rows))..rows).each{|x|
-  ((-(cols))..cols).each{|y|
-    data[x,y] = "#{x} x #{y}"
-  }
-}
-
-lbl = TkLabel.new(:text=>"TkTable :command Example")
-cur_var = TkVariable.new
-current = TkLabel.new(:textvariable=>cur_var, :width=>5)
-ent_var = TkVariable.new
-entry = TkEntry.new(:textvariable=>ent_var)
-
-table = Tk::TkTable.new(:rows=>rows, :cols=>cols, 
-                        :command=>[proc{|mode, cell, val|
-                          if (mode == :w)
-                            data[cell] = val
-                          else
-                            begin
-                              data[cell]  # exist
-                            rescue
-                              ''          # not exist
-                            end
-                          end
-                        }, '%i %C %s'], 
-                        :width=>6, :height=>6, 
-                        :titlerows=>1, :titlecols=>1, 
-                        :roworigin=>-1, :colorigin=>-1, 
-                        :rowstretchmode=>:last, :colstretchmode=>:last,
-                        :rowtagcommand=>proc{|row|
-                          row = Integer(row)
-                          (row>0 && row%2 == 1)? 'OddRow': ''
-                        },
-                        :coltagcommand=>proc{|col|
-                          col = Integer(col)
-                          (col>0 && col%2 == 1)? 'OddCol': ''
-                        }, 
-                        :selectmode=>:extended, :flashmode=>true, 
-                        :rowstretch=>:unset, :colstretch=>:unset,
-                        :browsecommand=>[proc{|w, s|
-                          cur_var.value = s
-                          ent_var.value = w.get(s)
-                        }, '%W %S'], 
-                        :validate=>true, 
-                        :validatecommand=>proc{|e| 
-                          ent_var.value = e.new_value; true
-                        })
-=begin
-                        :validatecommand=>[
-                          proc{|s| 
-                            ent_var.value = s; true
-                          }, '%S'])
-=end
-
-sx = table.xscrollbar(TkScrollbar.new)
-sy = table.yscrollbar(TkScrollbar.new)
-
-entry.bind('Return', proc{|w| table.curvalue = w.value}, '%W')
-
-Tk.grid(lbl, '-', '-', :sticky=>:ew)
-Tk.grid(current, entry, '-', :sticky=>:ew)
-Tk.grid(table, '-', sy, :sticky=>:news)
-Tk.grid(sx, '-', :sticky=>:ew)
-
-Tk.root.grid_columnconfig(1, :weight=>1)
-Tk.root.grid_rowconfig(2, :weight=>1)
-
-table.tag_configure('OddRow', :bg=>'orange', :fg=>'purple')
-table.tag_configure('OddCol', :bg=>'brown', :fg=>'pink')
-
-puts "Table is #{table.path}"
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/debug.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/debug.rb
deleted file mode 100644 (file)
index d5cd5e4..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/env ruby
-##
-## debug.rb
-##
-## This demo uses most features of the table widget
-##
-## ( based on 'debug.tcl' included source archive of tktable extension )
-##
-require 'tk'
-require 'tkextlib/tktable'
-
-# create the table
-ary  = TkVariable.new_hash
-rows = 25
-cols = 20
-
-# fill table variable
-((-(rows))..rows).each{|x|
-  ((-(cols))..cols).each{|y|
-    ary[x,y] = "r#{x},c#{y}"
-  }
-}
-
-lbl = TkLabel.new(:text=>"TkTable v2 Example")
-
-table = Tk::TkTable.new(:rows=>rows, :cols=>cols, :variable=>ary, 
-                        :width=>6, :height=>6, 
-                        :titlerows=>1, :titlecols=>2, 
-                        :roworigin=>-5, :colorigin=>-2, 
-                        :coltagcommand=>proc{|col|
-                          col = Integer(col)
-                          (col>0 && col%2 == 1)? 'OddCol': ''
-                        }, 
-                        :selectmode=>:extended, :flashmode=>true, 
-                        :rowstretch=>:unset, :colstretch=>:unset,
-                        :selecttitles=>false, :drawmode=>:single)
-
-sx = table.xscrollbar(TkScrollbar.new)
-sy = table.yscrollbar(TkScrollbar.new)
-
-btn = TkButton.new(:text=>'Exit', :command=>proc{exit})
-
-Tk.grid(lbl, '-', :sticky=>:ew)
-Tk.grid(table, sy, :sticky=>:news)
-Tk.grid(sx, :sticky=>:ew)
-Tk.grid(btn, :sticky=>:ew, :columnspan=>2)
-
-Tk.root.grid_columnconfig(0, :weight=>1)
-Tk.root.grid_rowconfig(1, :weight=>1)
-
-table.tag_configure('OddCol', :bg=>'brown', :fg=>'pink')
-table.tag_configure('title',  :bg=>'red',   :fg=>'green', :relief=>:sunken)
-table.tag_configure('dis',    :state=>:disabled)
-
-first = table[:colorigin]
-%w(n s e w nw ne sw se c).each_with_index{|anchor, idx|
-  table.tag_configure(anchor, :anchor=>anchor)
-  table.tag_row(anchor, idx)
-  table.set([idx,first], anchor)
-}
-courier = TkFont.new(:family=>'Courier', :size=>10)
-table.tag_configure('s', :font=>courier, :justify=>:center)
-
-logo = TkPhotoImage.new(:file=>File.join(File.dirname(File.expand_path(__FILE__)), 'tcllogo.gif'))
-table.tag_configure('logo', :image=>logo, :showtext=>true)
-table.tag_cell('logo', [1,2], [2,3], [4,1])
-table.tag_cell('dis', [2,1], [1,-1], [3,0])
-table.set_width([-2,8], [-1,9], [0, 12], [4, 14])
-
-table.set([1,1], "multi-line\ntext\nmight be\ninteresting", 
-          [3,2], "more\nmulti-line\nplaying\n", 
-          [2,2], "null\0byte")
-
-# This is in the row span
-l = TkLabel.new(table, :text=>'Window s', :bg=>'yellow')
-table.window_configure([6,0], :sticky=>:s, :window=>l)
-
-# This is in the row titles
-l = TkLabel.new(table, :text=>'Window ne', :bg=>'yellow')
-table.window_configure([4,-1], :sticky=>:ne, :window=>l)
-
-# This will get swallowed by a span
-l = TkLabel.new(table, :text=>'Window ew', :bg=>'yellow')
-table.window_configure([5,3], :sticky=>:ew, :window=>l)
-
-# This is in the col titles
-l = TkLabel.new(table, :text=>'Window news', :bg=>'yellow')
-table.window_configure([-5,1], :sticky=>:news, :window=>l)
-
-l = TkLabel.new(table.winfo_parent, :text=>'Sibling l', :bg=>'orange')
-table.window_configure([5,1], :sticky=>:news, :window=>l)
-
-if table.span_list.empty?
-  table.set_spans([-1,-2], [0,3], [1,2], [0,5], [3,2], [2,2], [6,0], [4,0])
-end
-
-puts "Table is #{table.path} with array #{(table['variable'])}"
-
-# table.postscript(:file=>'out.ps', :first=>:origin, :last=>[2,2])
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/dynarows.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/dynarows.rb
deleted file mode 100644 (file)
index d083e26..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/env ruby
-##
-## dynarows.rb
-##
-## This demos shows the use of the validation mechanism of the table
-## and uses the table's cache (no -command or -variable) with a cute
-## dynamic row routine.
-## 
-## ( based on 'dynarows.tcl' included source archive of tktable extension )
-##
-require 'tk'
-require 'tkextlib/tktable'
-
-def table_validate(w, idx)
-  return unless idx =~ /^(\d+),(\d+)$/
-  row = Integer($1)
-  col = Integer($2)
-  val = w.get(idx)
-
- [w, idx]
-  nrows = w[:rows]
-  return if row == nrows - 1 && val == ''
-
-  begin
-    time = Tk.tk_call('clock', 'scan', val)
-    date = []
-    Tk.tk_call('clock', 'format', time, 
-               :format=>'%m %d %Y').split(' ').each{|item|
-      date << item.sub(/^\s*0*/,'')
-    }
-    w.set(idx, date.join('/'))
-    if row == nrows - 1
-      if w.get([row,1]) != '' && w.get([row,2]) != ''
-        w.tag_row_reset(row)
-        w.set([row,0], row)
-        nrows += 1
-        row += 1
-        w.configure(:rows=>nrows)
-        w.tag_row('unset', row)
-        w.set([row,0], '*')
-        w.see([row,1])
-        w.activate([row,1])
-      end
-    end
-  rescue
-    Tk.bell
-    w.activate(idx)
-    w.selection_clear_all
-    w.selection_set(:active)
-    w.see(:active)
-  end
-end
-
-
-lbl = TkLabel.new(:text=>"Dynamic Date Validated Rows")
-
-table = Tk::TkTable.new(:rows=>2, :cols=>3, :cache=>1, :selecttype=>:row, 
-                        :titlerows=>1, :titlecols=>1, :height=>5, 
-                        :colstretch=>:unset, :rowstretch=>:unset, 
-                        :autoclear=>true, 
-                        :browsecommand=>[
-                          proc{|w,s| table_validate(w, s)}, 
-                          '%W %s'
-                        ])
-table.set([0,1], 'Begin', [0,2], 'End', [1,0], '*')
-table.tag_configure('unset', :fg=>'#008811')
-table.tag_configure('title', :fg=>'red')
-table.tag_row('unset', 1)
-table.set_width(0,3)
-
-sx = table.xscrollbar(TkScrollbar.new)
-sy = table.yscrollbar(TkScrollbar.new)
-
-Tk.grid(lbl, '-', :sticky=>:ew)
-Tk.grid(table, sy, :sticky=>:news)
-Tk.grid(sx, :sticky=>:ew)
-
-Tk.root.grid_columnconfig(0, :weight=>1)
-Tk.root.grid_rowconfig(1, :weight=>1)
-
-rtn_proc = proc{|w|
-  r = w.row_index(:active)
-  c = w.col_index(:active)
-
-  if c == 2
-    r += 1
-    w.activate([r,1])
-  else
-    c += 1
-    w.activate([r,c])
-  end
-  w.see(:active)
-  Tk.callback_break
-}
-
-table.bind('Return', rtn_proc, '%W')
-table.bind('KP_Enter', rtn_proc, '%W')
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/maxsize.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/maxsize.rb
deleted file mode 100644 (file)
index aff68ff..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env ruby
-##
-## maxsize.rb
-##
-## This demo uses a really big table.  The big startup time is in
-## filling the table's Tcl array var.
-## 
-## ( based on 'maxsize.tcl' included source archive of tktable extension )
-##
-require 'tk'
-require 'tkextlib/tktable'
-
-ary  = TkVariable.new_hash
-rows = 40000
-cols = 10
-
-# fill table variable
-((-(rows))..rows).each{|x|
-  ((-(cols))..cols).each{|y|
-    ary[x,y] = "#{x},#{y}"
-  }
-}
-
-lbl = TkLabel.new(:text=>"TkTable v2 Example")
-
-table = Tk::TkTable.new(:rows=>rows, :cols=>cols, :variable=>ary, 
-                        :width=>6, :height=>8, 
-                        :titlerows=>1, :titlecols=>1, 
-                        :coltagcommand=>proc{|col|
-                          col = Integer(col)
-                          (col>0 && col%2 == 1)? 'OddCol': ''
-                        }, 
-                        :selectmode=>:extended, 
-                        :colstretch=>:unset, :rowstretch=>:unset, 
-                        :selecttitles=>false, :drawmode=>:slow)
-
-sx = table.xscrollbar(TkScrollbar.new)
-sy = table.yscrollbar(TkScrollbar.new)
-
-btn = TkButton.new(:text=>'Exit', :command=>proc{exit})
-
-Tk.grid(lbl, '-', :sticky=>:ew)
-Tk.grid(table, sy, :sticky=>:news)
-Tk.grid(sx, :sticky=>:ew)
-Tk.grid(btn, :sticky=>:ew, :columnspan=>2)
-
-Tk.root.grid_columnconfig(0, :weight=>1)
-Tk.root.grid_rowconfig(1, :weight=>1)
-
-table.tag_configure('OddCol', :bg=>'brown', :fg=>'pink')
-table.tag_configure('title',  :bg=>'red',   :fg=>'blue', :relief=>:sunken)
-table.tag_configure('dis',    :state=>:disabled)
-
-first = table[:colorigin]
-%w(n s e w nw ne sw se c).each_with_index{|anchor, idx|
-  table.tag_configure(anchor, :anchor=>anchor)
-  table.tag_row(anchor, idx)
-  table.set([idx,first], anchor)
-}
-courier = TkFont.new(:family=>'Courier', :size=>10)
-table.tag_configure('s', :font=>courier, :justify=>:center)
-
-table.set_width([-2, 8], [-1, 9], [0, 12], [4, 14])
-
-puts "Table is #{table.path} with array #{(table['variable'])}"
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/spreadsheet.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/spreadsheet.rb
deleted file mode 100644 (file)
index 9da896f..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-#!/usr/bin/env ruby
-##
-## spreadsheet.rb
-##
-## This demos shows how you can simulate a 3D table
-## and has other basic features to begin a basic spreadsheet
-## 
-## ( based on 'spreadsheet.tcl' included source archive of tktable extension )
-##
-require 'tk'
-require 'tkextlib/tktable'
-
-rows = 10
-cols = 10
-cur_var = TkVariable.new
-table_list = Hash.new{|hash, key| hash[key] = TkVariable.new_hash}
-page = TkVariable.new('AA')
-color = Hash.new('pink')
-color['AA'] = 'orange'
-color['BB'] = 'blue'
-color['CC'] = 'green'
-
-def colorize(num)
-  num = Integer(num)
-  return 'colored' if (num > 0 && num % 2 == 1)
-end
-
-def fill_table(tbl_list, page, r=10, c=10)
-  ary = tbl_list[page]
-
-  (0...r).each{|i|
-    (0...c).each{|j|
-      if i!=0 && j!=0
-        ary[i,j] = "#{page} #{i},#{j}"
-      elsif i!=0
-        ary[i,j] = i.to_s
-      else
-        ary[i,j] = (64+j).chr
-      end
-    }
-  }
-end
-
-def changepage(tbl_list, tbl, ent, col, var, elem, op)
-  if elem != ''
-    page = var[elem]
-  else
-    page = var.value
-  end
-  if tbl[:variable] != tbl_list[page].id
-    tbl.selection_clear_all
-    tbl.variable(tbl_list[page])
-    ent.textvariable(tbl_list[page].ref('active'))
-    tbl.activate('origin')
-    tbl.tag_configure('colored', :bg=>col[page])
-    tbl.see('active')
-  end
-end
-
-lbl = TkLabel.new(:text=>"TkTable v1 Spreadsheet Example")
-
-current = TkLabel.new(:textvariable=>cur_var, :width=>5)
-entry = TkEntry.new(:textvariable=>table_list[page.value].ref('active'))
-lpage = TkLabel.new(:text=>'PAGE:', :width=>6, :anchor=>:e)
-optmenu = TkOptionMenubutton.new(page, *(%w(AA BB CC DD)))
-
-fill_table(table_list, page.value)
-fill_table(table_list, 'BB', Integer(rows/2), Integer(cols/2))
-
-table = Tk::TkTable.new(:rows=>rows, :cols=>cols, :width=>5, :height=>5, 
-                        :variable=>table_list[page.value], 
-                        :titlerows=>1, :titlecols=>1, 
-                        :coltagcommand=>proc{|n| colorize(n)},
-                        :flashmode=>true, :selectmode=>:extended, 
-                        :colstretch=>:unset, :rowstretch=>:unset, 
-                        :browsecommand=>proc{|e| cur_var.value = e.new_index})
-
-page.trace(:w, proc{|var, elem, op| 
-             changepage(table_list, table, entry, color, var, elem, op)
-           })
-
-table.tag_configure('colored', :bg=>color[page.value])
-table.tag_configure('title',   :fg=>'red', :relief=>:groove)
-table.tag_configure('blue',    :bg=>'blue')
-table.tag_configure('green',   :bg=>'green')
-
-table.tag_cell('green', [6,3], [5,7], [4,9])
-table.tag_cell('blue', [8,8])
-table.tag_row('blue', 7)
-table.tag_col('blue', 6, 8)
-table.set_width([0, 3], [2, 7])
-
-sx = table.xscrollbar(TkScrollbar.new)
-sy = table.yscrollbar(TkScrollbar.new)
-
-btn = TkButton.new(:text=>'Exit', :command=>proc{exit})
-
-Tk.grid(lbl, '-', '-', '-', '-', :sticky=>:ew)
-Tk.grid(current, entry, lpage, optmenu, '-', :sticky=>:ew)
-Tk.grid(table, '-', '-', '-', sy, :sticky=>:ns)
-Tk.grid(sx, '-', '-', '-', :sticky=>:ew)
-Tk.grid(btn, '-', '-', '-', '-', :sticky=>:ew)
-
-Tk.root.grid_columnconfig(1, :weight=>1)
-Tk.root.grid_rowconfig(2, :weight=>1)
-
-table.grid_configure(:sticky=>:news)
-
-entry.bind('Return', proc{
-             r = table.row_index(:active)
-             c = table.col_index(:active)
-             rmax = table[:rows]
-             cmax = table[:cols]
-
-             c += 1
-             if c == cmax
-               c = table[:titlecols]
-               r += 1
-               if r == rmax
-                 r = table[:titlerows]
-               end
-             end
-             table.activate([r, c])
-             table.see('active')
-           })
-
-menu = TkMenu.new
-m_file = TkMenu.new(menu)
-Tk.root.menu(menu)
-menu.add(:cascade, :label=>'File', :underline=>0, :menu=>m_file)
-m_file.add(:command, :label=>'Fill Array', 
-           :command=>proc{ fill_table(table_list, page.value) })
-m_file.add(:command, :label=>'Quit', :command=>proc{exit})
-
-puts "Table is #{table.path} with array #{(table['variable'])}"
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/tcllogo.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/tcllogo.gif
deleted file mode 100644 (file)
index 4603d4f..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/tcllogo.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/valid.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/tktable/valid.rb
deleted file mode 100644 (file)
index e5d3f11..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/env ruby
-##
-## valid.rb
-##
-## This demos shows the use of the validation mechanism of the table
-## and uses the table's cache (no -command or -variable)
-## 
-## ( based on 'valid.tcl' included source archive of tktable extension )
-##
-require 'tk'
-require 'tkextlib/tktable'
-
-rows = 10
-cols = 10
-
-def colorize(num)
-  num = Integer(num)
-  return 'colored' if (num > 0 && num % 2 == 1)
-end
-
-def fill_headers(w, r=10, c=10)
-  (1..(r-1)).each{|i| w.set([i,0], i.to_s)}
-
-  (1..(c-1)).each{|j|
-    if j % 3 == 1
-      w.set([0,j], 'AlphaNum')
-    elsif j % 2 == 1
-      w.set([0,j], 'Alpha')
-    elsif j != 0
-      w.set([0,j], 'Real')
-    end
-  }
-end
-
-def validate_proc(c, val)
-  if c % 3 == 1
-    # AlphaNum
-    regexp = /^[A-Za-z0-9 ]*$/
-  elsif c % 2 == 1
-    # Alpha
-    regexp = /^[A-Za-z ]*$/
-  elsif c != 0
-    # 'Real'
-    regexp = /^[-+]?[0-9]*\.?[0-9]*([0-9]\.?e[-+]?[0-9]*)?$/
-  end
-  if val =~ regexp
-    return true
-  else
-    Tk.bell
-    return false
-  end
-end
-
-lbl = TkLabel.new(:text=>"TkTable v1 Validated Table Example")
-
-table = Tk::TkTable.new(:rows=>rows, :cols=>cols, :cache=>1, 
-                        :width=>5, :height=>5, :titlerows=>1, :titlecols=>1, 
-                        :coltagcommand=>proc{|n| colorize(n)},
-                        :flashmode=>true, :selectmode=>:extended, 
-                        :colstretch=>:unset, :rowstretch=>:unset, 
-                        :validate=>true, 
-                        :validatecommand=>proc{|e|
-                          unless e.widget.tag_include?('title', e.index)
-                            validate_proc(e.column, e.new_value)
-                          end } )
-
-fill_headers(table)
-
-table.tag_configure('colored', :bg=>'lightblue')
-table.tag_configure('title',   :fg=>'red')
-table.set_width(0,3)
-
-sx = table.xscrollbar(TkScrollbar.new)
-sy = table.yscrollbar(TkScrollbar.new)
-
-btn = TkButton.new(:text=>'Exit', :command=>proc{exit})
-
-Tk.grid(lbl, '-', :sticky=>:ew)
-Tk.grid(table, sy, :sticky=>:news)
-Tk.grid(sx, :sticky=>:ew)
-Tk.grid(btn, '-', :sticky=>:ew)
-
-Tk.root.grid_columnconfig(0, :weight=>1)
-Tk.root.grid_rowconfig(1, :weight=>1)
-
-puts "Table is #{table.path}"
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/bitmaps.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/bitmaps.rb
deleted file mode 100644 (file)
index 745e6a2..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# Demo: Bitmaps
-#
-def demoBitmaps(t)
-  #if $Version_1_1_OrLater
-  if @has_bgimg
-    t.configure(:showroot=>false, :showbuttons=>false, :showlines=>false, 
-                :selectmode=>:browse, :orient=>:horizontal, :wrap=>'5 items', 
-                :showheader=>false, :backgroundimage=>@images['sky'])
-  else
-    t.configure(:showroot=>false, :showbuttons=>false, :showlines=>false, 
-                :selectmode=>:browse, :orient=>:horizontal, :wrap=>'5 items', 
-                :showheader=>false)
-  end
-
-  if $HasColumnCreate
-    t.column_create(:itembackground=>['gray90', []])
-  else
-    t.column_configure(0, :itembackground=>['gray90', []])
-  end
-
-  t.element_create('elemTxt', :text, 
-                   :fill=>[@SystemHighlightText, ['selected', 'focus']])
-  t.element_create('elemSelTxt', :rect, :showfocus=>true, 
-                   :fill=>[@SystemHighlight, ['selected', 'focus']])
-  t.element_create('elemSelBmp', :rect, :outlinewidth=>4, 
-                   :outline=>[@SystemHighlight, ['selected', 'focus']])
-  t.element_create('elemBmp', :bitmap, 
-                   :foreground=>[@SystemHighlight, ['selected', 'focus']], 
-                   :background=>'linen', 
-                   :bitmap=>['question' ['selected']])
-
-  s = t.style_create('STYLE', :orient=>:vertical)
-  t.style_elements(s, ['elemSelBmp', 'elemBmp', 'elemSelTxt', 'elemTxt'])
-  t.style_layout(s, 'elemSelBmp', :union=>'elemBmp', :ipadx=>6, :ipady=>6)
-  t.style_layout(s, 'elemBmp',    :pady=>[0, 6], :expand=>:we)
-  t.style_layout(s, 'elemSelTxt', :union=>'elemTxt', :ipadx=>2)
-  t.style_layout(s, 'elemTxt',    :expand=>:we)
-
-  # Set default item style
-  if $Version_1_1_OrLater
-    t.defaultstyle = [s]
-  end
-
-  bitmap_names = %w(error gray75 gray50 gray25 gray12 
-                    hourglass info questhead question warning)
-
-  bitmap_names.each{|name|
-    i = t.item_create
-    unless $Version_1_1_OrLater
-      t.item_style_set(i, 0, s)
-    end
-    t.item_text(i, 0, name)
-    t.item_element_configure(i, 0, 'elemBmp', :bitmap=>name)
-    t.item_lastchild(:root, i)
-  }
-
-  bitmap_names.each{|name|
-    i = t.item_create
-    t.item_style_set(i, 0, s)
-    t.item_text(i, 0, name)
-    if true
-      t.item_element_configure(i, 0, 'elemBmp', :bitmap=>name, 
-                               :foreground=>['brown', ''], 
-                               :background=>['', ''])
-    else
-      t.item_element_configure(i, 0, 'elemBmp', :bitmap=>name, 
-                               :foreground=>[
-                                 @SystemHighlight, ['selected', 'focus'], 
-                                 'brown', []
-                               ], 
-                               :background=>['', []])
-    end
-    t.item_lastchild(:root, i)
-  }
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/demo.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/demo.rb
deleted file mode 100644 (file)
index eed95d0..0000000
+++ /dev/null
@@ -1,1311 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-require 'tkextlib/treectrl'
-
-$ScriptDir = File.dirname(File.expand_path(__FILE__))
-
-$HasColumnCreate = Tk::TreeCtrl::HasColumnCreateCommand
-
-$Version_1_1_OrLater = (TkPackage.vcompare(Tk::TreeCtrl.package_version, '1.1') >= 0)
-
-#if Hash.instance_methods.include?(:key)
-if TkCore::WITH_RUBY_VM  ### Ruby 1.9 !!!!
-  # ruby 1.9.x --> use Hash#key
-  # Because Hash#index show warning "Hash#index is deprecated; use Hash#key".
-else
-  # ruby 1.8.x --> use Hash#index
-  class Hash
-    alias key index
-  end
-end
-
-class TkTreeCtrl_demo
-  def initialize(dir)
-    @ScriptDir = dir || '.'
-
-    @thisPlatform = Tk::PLATFORM['platform']
-    if @thisPlatform == 'unix' && Tk.windowingsystem == 'aqua'
-      @thisPlatform = 'macosx'
-    end
-
-    @RandomN = [500]
-
-    @images = Hash.new
-    @sel_images = Hash.new
-
-    @popup = Hash.new
-    @mTree = Hash.new
-    @mHeader = Hash.new
-
-    @non_clear_list = []
-
-    @demoCmd = Hash.new
-    @demoFile = Hash.new
-
-    # Get default colors
-    w = TkListbox.new
-    @SystemButtonFace    = w[:highlightbackground]
-    @SystemHighlight     = w[:selectbackground]
-    @SystemHighlightText = w[:selectforeground]
-    w.destroy
-
-    ####################
-
-    make_source_window()
-    make_menubar()
-    make_main_window()
-
-    if $Version_1_1_OrLater
-      begin
-        @tree2[:backgroundimage]
-        @has_bgimg = true
-      rescue
-        @has_bgimg = false
-      end
-    else
-      @has_bgimg = false
-    end
-
-    ####################
-
-    make_list_popup()
-    make_header_popup()
-
-    init_pics('sky')
-
-    ####################
-
-    @tree2.bind('ButtonPress-3', 
-                proc{|w, x, y, rootx, rooty|
-                  show_list_popup(w, x, y, rootx, rooty)
-                }, '%W %x %y %X %Y')
-
-    # Allow "scan" bindings
-    if @thisPlatform == 'windows'
-      @tree2.bind_remove('Control-ButtonPress-3')
-    end
-
-    ####################
-
-    init_demo_scripts_module()
-    load_demo_scripts()
-    init_demo_list()
-
-    ####################
-
-    @tree1.notify_bind(@tree1, 'Selection', 
-                       proc{|c, t|
-                         if c == 1
-                           item = t.selection_get[0]
-                           demo_set(@demoCmd[item], @demoFile[item])
-                         end
-                       }, '%c %T')
-
-    # When one item is selected in the demo list, display the styles in 
-    # that item.
-    # See DemoClear for why the tag "DontDelete" is used
-    @tree2.notify_bind('DontDelete', 'Selection', 
-                       proc{|c, t|
-                         display_styles_in_item(t.selection_get[0]) if c == 1
-                       }, '%c %T')
-  end
-
-  ##########################
-
-  def init_pics(*args)
-    args.each{|pat|
-      unless TkImage.names.find{|img| (name = @images.key(img)) && File.fnmatch(pat, name)}
-        Dir.glob(File.join(@ScriptDir, 'pics', "#{pat}.gif")).each{|file|
-          name = File.basename(file, '.gif')
-          img = TkPhotoImage.new(:file=>file)
-          @images[name] = img
-          @sel_images[name] = TkPhotoImage.new
-          @sel_images[name].copy(img)
-          Tk::TreeCtrl.image_tint(@sel_images[name], @SystemHighlight, 128)
-        }
-      end
-    }
-  end
-
-  ##########################
-
-  private
-
-  def make_menubar
-    menuspec = [
-      [['File']]
-    ]
-    if Tk::PLATFORM['platform'] != 'unix'
-      TkConsole.create
-      TkConsole.eval('.console conf -height 8')
-      menuspec[0] << ['Console', proc{
-          if TkComm.bool(TkConsole.eval('winfo ismapped .'))
-            TkConsole.hide
-          else
-            TkConsole.show
-          end
-        }]
-    end
-    menuspec[0] << ['View Source', proc{toggle_source_window()}]
-    menuspec[0] << ['Quit', proc{exit}]
-    Tk.root.add_menubar(menuspec)
-  end
-
-  def make_source_window
-    @src_top = TkToplevel.new
-    f = TkFrame.new(@src_top, :borderwidth=>0)
-    case @thisPlatform
-    when 'macintosh', 'macos'
-      font = TkFont.new(['Geneva', 9])
-    when 'unix'
-      font = TkFont.new(['Courier', -12])
-    else
-      font = TkFont.new(['Courier', 9])
-    end
-
-    @src_txt = TkText.new(f, :font=>font, :tabs=>font.measure('1234'), 
-                          :wrap=>:none)
-    xscr = @src_txt.xscrollbar(TkScrollbar.new(f))
-    yscr = @src_txt.yscrollbar(TkScrollbar.new(f))
-
-    f.pack(:expand=>true, :fill=>:both)
-    f.grid_columnconfigure(0, :weight=>1)
-    f.grid_rowconfigure(0, :weight=>1)
-    @src_txt.grid(:row=>0, :column=>0, :sticky=>:news)
-    xscr.grid(:row=>1, :column=>0, :sticky=>:we)
-    yscr.grid(:row=>0, :column=>1, :sticky=>:ns)
-
-    @src_top.protocol('WM_DELETE_WINDOW', proc{@src_top.withdraw})
-    @src_top.geometry('-0+0')
-    @src_top.withdraw
-  end
-
-  def show_source(file)
-    @src_top.title("Demo Source: #{file}")
-    @src_txt.value = IO.read(File.join(@ScriptDir, file))
-    @src_txt.set_insert('1.0')
-  end
-
-  def toggle_source_window
-    if @src_top.winfo_mapped?
-      @src_top.withdraw
-    else
-      @src_top.deiconify
-    end
-  end
-
-  def tree_plus_scrollbars_in_a_frame(parent, h, v)
-    f = TkFrame.new(parent, :borderwidth=>1, :relief=>:sunken)
-    case @thisPlatform
-    when 'macintosh'
-      font = TkFont.new(['Geneva', 9])
-    when 'macos'
-      font = TkFont.new(['Lucida Grande', 11])
-    when 'unix'
-      font = TkFont.new(['Helvetica', -12])
-    else
-      # There is a bug on my Win98 box with Tk_MeasureChars() and
-      # MS Sans Serif 8.
-      font = TkFont.new(['MS Sans', 8])
-    end
-
-    tree = Tk::TreeCtrl.new(f, :highlightthickness=>0, 
-                            :borderwidth=>0, :font=>font)
-    tree[:xscrollincrement] = 20
-    tree.debug_configure(:enable=>false, :display=>false)
-
-    if h
-      h_scr = TkScrollbar.new(f, :orient=>:horizontal, 
-                              :command=>proc{|*args| tree.xview(*args)})
-      tree.notify_bind(h_scr, 'Scroll-x', 
-                       proc{|w, l, u| w.set(l, u)}, '%W %l %u')
-      h_scr.bind('ButtonPress-1', proc{tree.set_focus})
-    end
-
-    if v
-      v_scr = TkScrollbar.new(f, :orient=>:vertical, 
-                              :command=>proc{|*args| tree.yview(*args)})
-      tree.notify_bind(v_scr, 'Scroll-y', 
-                       proc{|w, l, u| w.set(l, u)}, '%W %l %u')
-      v_scr.bind('ButtonPress-1', proc{tree.set_focus})
-    end
-
-    f.grid_columnconfigure(0, :weight=>1)
-    f.grid_rowconfigure(0, :weight=>1)
-    tree.grid(:row=>0, :column=>0, :sticky=>:news)
-    h_scr.grid(:row=>1, :column=>0, :sticky=>:we) if h
-    v_scr.grid(:row=>0, :column=>1, :sticky=>:ns) if v
-
-    [f, tree]
-  end
-
-  def make_main_window
-    Tk.root.title('Tk::TreeCtrl Demo')
-
-    case @thisPlatform
-    when 'macintosh', 'macosx'
-      Tk.root.geometry('+40+40')
-    else
-      Tk.root.geometry('+0+30')
-    end
-
-    pane1 = TkPanedWindow.new(:orient=>:vertical, :borderwidth=>0)
-    pane2 = TkPanedWindow.new(:orient=>:horizontal, :borderwidth=>0)
-
-    # Tree + scrollbar: demos
-    f1, @tree1 = tree_plus_scrollbars_in_a_frame(nil, false, true)
-    @tree1.configure(:showbuttons=>false, :showlines=>:false, 
-                    :showroot=>false, :height=>100)
-    if $HasColumnCreate
-      @tree1.column_create(:text=>'List of Demos', 
-                           :expand=>true, :button=>false)
-    else
-      @tree1.column_configure(0, :text=>'List of Demos', 
-                              :expand=>true, :button=>false)
-    end
-
-    # Tree + scrollbar: styles + elements in list
-    f4, @tree4 = tree_plus_scrollbars_in_a_frame(nil, false, true)
-    @tree4.configure(:showroot=>false, :height=>140)
-    if $HasColumnCreate
-      @tree4.column_create(:text=>'Elements and Styles', 
-                           :expand=>true, :button=>false)
-    else
-      @tree4.column_configure(0, :text=>'Elements and Styles', 
-                              :expand=>true, :button=>false)
-    end
-
-    # Tree + scrollbar: styles + elements in selected item
-    f3, @tree3 = tree_plus_scrollbars_in_a_frame(nil, false, true)
-    @tree3.configure(:showroot=>false)
-    if $HasColumnCreate
-      @tree3.column_create(:text=>'Styles in Item', 
-                           :expand=>true, :button=>false)
-    else
-      @tree3.column_configure(0, :text=>'Styles in Item', 
-                              :expand=>true, :button=>false)
-    end
-
-    pane1.add(f1, f4, f3, :height=>150)
-    pane1.pack(:expand=>true, :fill=>:both)
-
-    # Frame on right
-    f2_base = TkFrame.new
-
-    # Tree + scrollbars
-    f2, @tree2 = tree_plus_scrollbars_in_a_frame(f2_base, true, true)
-    @tree2.configure(:indent=>19)
-    @tree2.debug_configure(:enable=>false, :display=>true, 
-                           :erasecolor=>'pink', :displaydelay=>30)
-
-    # Give it a big border to debug drawing
-    @tree2.configure(:borderwidth=>6, :relief=>:ridge, :highlightthickness=>3)
-
-    f2_base.grid_columnconfigure(0, :weight=>1)
-    f2_base.grid_rowconfigure(0, :weight=>1)
-    f2.grid(:row=>0, :column=>0, :sticky=>:news, :pady=>0)
-
-    pane2.add(pane1, :width=>200)
-    pane2.add(f2_base, :width=>450)
-
-    pane2.pack(:expand=>true, :fill=>:both)
-
-    ###
-    # A treectrl widget can generate the following built-in events:
-    # <ActiveItem> called when the active item changes
-    # <Collapse-before> called before an item is closed
-    # <Collapse-after> called after an item is closed
-    # <Expand-before> called before an item is opened
-    # <Expand-after> called after an item is opened
-    # <Selection> called when items are added to or removed from the selection
-    # <Scroll-x> called when horizontal scroll position changes
-    # <Scroll-y> called when vertical scroll position changes
-    #
-    # The application programmer can define custom events to be
-    # generated by the "T notify generate" command. The following events
-    # are generated by the example bindings.
-
-    @tree2.notify_install_event('Header')
-    @tree2.notify_install_detail('Header', 'invoke')
-
-    @tree2.notify_install_event('Drag')
-    @tree2.notify_install_detail('Drag', 'begin')
-    @tree2.notify_install_detail('Drag', 'end')
-    @tree2.notify_install_detail('Drag', 'receive')
-
-    @tree2.notify_install_event('Edit')
-    @tree2.notify_install_detail('Edit', 'accept')
-  end
-
-  def make_list_popup
-    @popup[:bgimg] = TkVariable.new
-    @popup[:bgmode] = TkVariable.new
-    @popup[:debug] = Hash.new{|h, k| h[k] = TkVariable.new}
-    @popup[:doublebuffer] = TkVariable.new
-    @popup[:linestyle] = TkVariable.new
-    @popup[:orient] = TkVariable.new
-    @popup[:selectmode] = TkVariable.new
-    @popup[:show] = Hash.new{|h, k| h[k] = TkVariable.new}
-
-    menuspec = [
-      [ 'Collapse', [], nil, '', {:menu_config=>{:tearoff=>false}} ], 
-
-      [ 'Expand',   [], nil, '', {:menu_config=>{:tearoff=>false}} ]
-    ]
-
-    # if $Version_1_1_OrLater
-    if @has_bgimg
-      menuspec << \
-      [ 'Background Image', 
-        [
-          [ 'none', [@popup[:bgimg], 'none'], nil, '', 
-            {:command=>proc{@tree2.backgroundimage = ''}} ], 
-          [ 'sky',  [@popup[:bgimg], 'sky'],  nil, '', 
-            {:command=>proc{
-                @tree2.backgroundimage = @images[@popup[:bgimg].value]}} ]
-        ], 
-        nil, '', {:menu_config=>{:tearoff=>false}}
-      ]
-    end
-
-    menuspec.concat([
-      [ 'Background Mode', 
-        %w(column index row visindex).collect{|val|
-          [ val, [@popup[:bgmode], val] , nil, '', 
-            {:command=>proc{@tree2.backgroundmode = @popup[:bgmode].value}} ]
-        }, 
-        nil, '', {:menu_config=>{:tearoff=>false}}
-      ],
-
-      [ 'Debug', 
-        [
-          [ 'Data',    @popup[:debug][:data],    nil, '', 
-            {:command=>proc{
-                @tree2.debug_configure(:data=>@popup[:debug][:data].value)
-              }
-            } ], 
-          [ 'Display', @popup[:debug][:display], nil, '', 
-            {:command=>proc{
-                @tree2.debug_configure(:display=>@popup[:debug][:display].value)
-              }
-            } ], 
-          [ 'Enable',  @popup[:debug][:enable],  nil, '', 
-            {:command=>proc{
-                @tree2.debug_configure(:enable=>@popup[:debug][:enable].value)
-              }
-            } ]
-        ], 
-        nil, '', {:menu_config=>{:tearoff=>false}}
-      ],
-
-      [ 'Buffering', 
-        [
-          [ 'none',   [@popup[:doublebuffer], 'none'],   nil, '', 
-            {:command=>proc{
-                @tree2.doublebuffer = @popup[:doublebuffer].value
-              }
-            } ], 
-          [ 'item',   [@popup[:doublebuffer], 'item'],   nil, '', 
-            {:command=>proc{
-                @tree2.doublebuffer = @popup[:doublebuffer].value
-              }
-            } ], 
-          [ 'window', [@popup[:doublebuffer], 'window'], nil, '', 
-            {:command=>proc{
-                @tree2.doublebuffer = @popup[:doublebuffer].value
-              }
-            } ]
-        ],
-        nil, '', {:menu_config=>{:tearoff=>false}}
-      ],
-
-      [ 'Line style', 
-        [
-          [ 'dot',   [@popup[:linestyle], 'dot'],   nil, '', 
-            {:command=>proc{@tree2.linestyle = @popup[:linestyle].value}} ], 
-          [ 'solid', [@popup[:linestyle], 'solid'], nil, '', 
-            {:command=>proc{@tree2.linestyle = @popup[:linestyle].value}} ]
-        ], 
-        nil, '', {:menu_config=>{:tearoff=>false}}
-      ],
-
-      [ 'Orient', 
-        [
-          [ 'Horizontal', [@popup[:orient], 'horizontal'], nil, '', 
-            {:command=>proc{@tree2.orient = @popup[:orient].value}} ], 
-          [ 'Vertical',   [@popup[:orient], 'vertical'],   nil, '', 
-            {:command=>proc{@tree2.orient = @popup[:orient].value}} ]
-        ], 
-        nil, '', {:menu_config=>{:tearoff=>false}}
-      ],
-
-      [ 'Selectmode', 
-        %w(list browse extended multiple single).collect{|val|
-          [ val, [@popup[:selectmode], val] , nil, '', 
-            {:command=>proc{@tree2.selectmode = @popup[:selectmode].value}} ]
-        }, 
-        nil, '', {:menu_config=>{:tearoff=>false}}
-      ],
-
-      [ 'Show', 
-        [
-          [ 'Buttons', @popup[:show][:buttons], nil, '', 
-            {:command=>proc{
-                @tree2.showbuttons = @popup[:show][:buttons].value
-              }
-            } ], 
-          [ 'Header', @popup[:show][:header], nil, '', 
-            {:command=>proc{
-                @tree2.showheader = @popup[:show][:header].value
-              }
-            } ], 
-          [ 'Lines', @popup[:show][:lines], nil, '', 
-            {:command=>proc{
-                @tree2.showlines = @popup[:show][:lines].value
-              }
-            } ], 
-          [ 'Root', @popup[:show][:root], nil, '', 
-            {:command=>proc{
-                @tree2.showroot = @popup[:show][:root].value
-              }
-            } ], 
-          [ 'Root Button', @popup[:show][:rootbutton], nil, '', 
-            {:command=>proc{
-                @tree2.showrootbutton = @popup[:show][:rootbutton].value
-              }
-            } ]
-        ], 
-        nil, '', {:menu_config=>{:tearoff=>false}}
-      ],
-
-      [ 'Visible', [], nil, '', {:menu_config=>{:tearoff=>false}} ]
-    ])
-
-    m = TkMenu.new_menuspec(menuspec, @tree2, false)
-    @non_clear_list << m
-    @mTree[@tree2] = m
-  end
-
-  def show_list_popup(w, x, y, rootx, rooty)
-    id = w.identify(x, y)
-    unless id.empty?
-      if id[0] == 'header'
-        col = id[1]
-        @popup[:column].value = col
-        @popup[:arrow].value = w.column_cget(col, :arrow)
-        @popup[:arrowside].value = w.column_cget(col, :arrowside)
-        @popup[:arrowgravity].value = w.column_cget(col, :arrowgravity)
-        @popup[:expand].value = w.column_cget(col, :expand)
-        @popup[:squeeze].value = w.column_cget(col, :squeeze)
-        @popup[:justify].value = w.column_cget(col, :justify)
-        @mHeader[w].popup(rootx, rooty)
-        return
-      end
-    end
-
-    m = @mTree[w].entrycget('Collapse', :menu)
-    m.delete(0, :end)
-    if $Version_1_1_OrLater
-      m.add_command(:label=>'All', :command=>proc{w.item_collapse(:all)})
-    else
-      m.add_command(:label=>'All', :command=>proc{w.collapse(:all)})
-    end
-    unless id.empty?
-      if id[0] == 'item'
-        item = id[1]
-        if $Version_1_1_OrLater
-          m.add_command(:label=>"Item #{item}", 
-                        :command=>proc{w.item_collapse(item)})
-          m.add_command(:label=>"Item #{item} (recurse)", 
-                        :command=>proc{w.item_collapse_recurse(item)})
-        else
-          m.add_command(:label=>"Item #{item}", 
-                        :command=>proc{w.collapse(item)})
-          m.add_command(:label=>"Item #{item} (recurse)", 
-                        :command=>proc{w.collapse_recurse(item)})
-        end
-      end
-    end
-
-    m = @mTree[w].entrycget('Expand', :menu)
-    m.delete(0, :end)
-    if $Version_1_1_OrLater
-      m.add_command(:label=>'All', :command=>proc{w.item_expand(:all)})
-    else
-      m.add_command(:label=>'All', :command=>proc{w.expand(:all)})
-    end
-    unless id.empty?
-      if id[0] == 'item'
-        item = id[1]
-        if $Version_1_1_OrLater
-          m.add_command(:label=>"Item #{item}", 
-                        :command=>proc{w.item_expand(item)})
-          m.add_command(:label=>"Item #{item} (recurse)", 
-                        :command=>proc{w.item_expand_recurse(item)})
-        else
-          m.add_command(:label=>"Item #{item}", 
-                        :command=>proc{w.expand(item)})
-          m.add_command(:label=>"Item #{item} (recurse)", 
-                        :command=>proc{w.expand_recurse(item)})
-        end
-      end
-    end
-
-    [:data, :display, :enable].each{|k|
-      @popup[:debug][k].value = w.debug_cget(k)
-    }
-    # if $Version_1_1_OrLater
-    if @has_bgimg
-      @popup[:bgimg].value = @images.key(w[:backgroundimage])
-    end
-    @popup[:bgmode].value = w[:backgroundmode]
-    @popup[:doublebuffer].value = w[:doublebuffer]
-    @popup[:linestyle].value = w[:linestyle]
-    @popup[:orient].value = w[:orient]
-    @popup[:selectmode].value = w[:selectmode]
-    @popup[:show][:buttons].value = w[:showbuttons]
-    @popup[:show][:header].value = w[:showheader]
-    @popup[:show][:lines].value = w[:showlines]
-    @popup[:show][:root].value = w[:showroot]
-    @popup[:show][:rootbutton].value = w[:showrootbutton]
-
-    m = @mTree[w].entrycget('Visible', :menu)
-    m.delete(0, :end)
-    @popup[:visible] = []
-    (0...(w.numcolumns)).each{|i|
-      @popup[:visible][i] = TkVariable.new(w.column_cget(i, :visible))
-      txt = w.column_cget(i, :text)
-      img_name = w.column_cget(i, :image)
-      img_name = @images.key(img_name) if img_name.kind_of?(TkImage)
-      m.add_checkbutton(:variable=>@popup[:visible][i], 
-                        :label=>"Column #{i} \"#{txt}\" [#{img_name}]", 
-                        :command=>proc{w.column_configure(i, :visible=>@popup[:visible][i].value)})
-    }
-
-    @mTree[w].popup(rootx, rooty)
-  end
-
-  def make_header_popup
-    @popup[:column] = TkVariable.new unless @popup[:column]
-    @popup[:arrow] = TkVariable.new
-    @popup[:arrowside] = TkVariable.new
-    @popup[:arrowgravity] = TkVariable.new
-    @popup[:expand] = TkVariable.new
-    @popup[:squeeze] = TkVariable.new
-    @popup[:justify] = TkVariable.new
-
-    menuspec = [
-      [ 'Arrow', 
-        [
-          [ 'None', [@popup[:arrow], 'none'], nil, '', 
-            {:command=>proc{
-                @tree2.column_configure(@popup[:column].value, :arrow=>:none)
-              }
-            } ],
-          [ 'Up', [@popup[:arrow], 'up'], nil, '', 
-            {:command=>proc{
-                @tree2.column_configure(@popup[:column].value, :arrow=>:up)
-              }
-            } ],
-          [ 'Down', [@popup[:arrow], 'down'], nil, '', 
-            {:command=>proc{
-                @tree2.column_configure(@popup[:column].value, :arrow=>:down)
-              }
-            } ],
-
-          '---', 
-
-          [ 'Side Left', [@popup[:arrowside], 'left'], nil, '', 
-            {:command=>proc{
-                @tree2.column_configure(@popup[:column].value, 
-                                        :arrowside=>:left)
-              }
-            } ],
-          [ 'Side Right', [@popup[:arrowside], 'right'], nil, '', 
-            {:command=>proc{
-                @tree2.column_configure(@popup[:column].value, 
-                                        :arrowside=>:right)
-              }
-            } ],
-
-          '---', 
-
-          [ 'Gravity Left', [@popup[:arrowgravity], 'left'], nil, '', 
-            {:command=>proc{
-                @tree2.column_configure(@popup[:column].value, 
-                                        :arrowgravity=>:left)
-              }
-            } ],
-          [ 'Gravity Right', [@popup[:arrowgravity], 'right'], nil, '', 
-            {:command=>proc{
-                @tree2.column_configure(@popup[:column].value, 
-                                        :arrowgravity=>:right)
-              }
-            } ],
-        ], 
-        nil, '', {:menu_config=>{:tearoff=>false}} ], 
-
-      [ 'Expand',  @popup[:expand],  nil, '', 
-        {:command=>proc{
-            @tree2.column_configure(@popup[:column].value, 
-                                    :expand=>@popup[:expand].value)
-          }
-        } ],
-
-      [ 'Squeeze', @popup[:squeeze], nil, '', 
-        {:command=>proc{
-            @tree2.column_configure(@popup[:column].value, 
-                                    :squeeze=>@popup[:squeeze].value)
-          }
-        } ],
-
-      [ 'Justify', 
-        [
-          [ 'Left', [@popup[:justify], 'left'], nil, '', 
-            {:command=>proc{
-                @tree2.column_configure(@popup[:column].value, :justify=>:left)
-              }
-            } ],
-          [ 'Center', [@popup[:justify], 'center'], nil, '', 
-            {:command=>proc{
-                @tree2.column_configure(@popup[:column].value, 
-                                        :justify=>:center)
-              }
-            } ],
-          [ 'Right', [@popup[:justify], 'right'], nil, '', 
-            {:command=>proc{
-                @tree2.column_configure(@popup[:column].value, 
-                                        :justify=>:right)
-              }
-            } ]
-        ], 
-        nil, '', {:menu_config=>{:tearoff=>false}} ]
-    ]
-
-    m = TkMenu.new_menuspec(menuspec, @tree2, false)
-    @non_clear_list << m
-    @mHeader[@tree2] = m
-  end
-
-  ###########################
-
-  def init_demo_scripts_module
-    @demo_scripts = Module.new
-
-    master = self
-
-    has_bgimg = @has_bgimg
-
-    scriptDir = @ScriptDir
-
-    thisPlatform = @thisPlatform
-
-    randomN = @RandomN
-
-    images = @images
-    sel_images = @sel_images
-
-    systemButtonFace = @SystemButtonFace
-    systemHighlight  = @SystemHighlight
-    systemHighlightText = @SystemHighlightText
-
-    def master._pub_display_styles_in_item(item)
-      display_styles_in_item(item)
-    end
-    proc_disp_styles_in_item = proc{|item| 
-      master._pub_display_styles_in_item(item)
-    }
-
-    @demo_scripts.instance_eval{
-      @master = master
-
-      @has_bgimg = has_bgimg
-
-      @display_styles_in_item = proc_disp_styles_in_item
-
-      @Priv = TkVarAccess.new('::TreeCtrl::Priv')
-
-      @ScriptDir = scriptDir
-
-      @thisPlatform = thisPlatform
-
-      @RandomN = randomN
-
-      @images = images
-      @sel_images = sel_images
-
-      @SystemButtonFace = systemButtonFace
-      @SystemHighlight  = systemHighlight
-      @SystemHighlightText = systemHighlightText
-    }
-
-    class << @demo_scripts
-      def _get_binding
-        binding
-      end
-      private :_get_binding
-
-      def load_demo(file)
-        puts "load \"#{file}\"" if $DEBUG
-        begin
-          eval(IO.readlines(file).join, _get_binding())
-        rescue Exception => e
-          bt = e.backtrace
-
-          if bt[0] =~ /^([^:]+):(\d+):/
-            errline = $2.to_i
-          else
-            raise e
-          end
-
-          if bt[1] =~ /^([^:]+):(\d+):/
-            bt.unshift("#{file}:#{errline - $2.to_i + 1}")
-            raise e
-          else
-            raise e
-          end
-        end
-      end
-
-      def init_pics(*args)
-        @master.init_pics(*args)
-      end
-    end
-  end
-
-  def load_demo_scripts
-    # demo sources
-    [
-      'bitmaps',  
-      'explorer', 
-      'help', 
-      'imovie', 
-      'layout', 
-      'mailwasher', 
-      'outlook-folders', 
-      'outlook-newgroup', 
-      'random', 
-      'www-options'
-    ].each{|f|
-      @demo_scripts.load_demo(File.join(@ScriptDir, "#{f}.rb"))
-    }
-  end
-
-  ###########################
-
-  def init_demo_list
-    @tree1.element_create('e1', :text, 
-                          :fill=>[@SystemHighlightText, ['selected', 'focus']])
-    @tree1.element_create('e2', :rect, :showfocus=>true, 
-                          :fill=>[
-                            @SystemHighlight, ['selected', 'focus'], 
-                            'gray', ['selected', '!focus'], 
-                          ])
-    @tree1.style_create('s1')
-    @tree1.style_elements('s1', ['e2', 'e1'])
-
-    # Tk listbox has linespace + 1 height
-    @tree1.style_layout('s1', 'e2', :union=>['e1'], 
-                        :ipadx=>2, :ipady=>[0, 1], :iexpand=>:e)
-
-    if $Version_1_1_OrLater
-      @tree1.defaultstyle = 's1'
-    end
-
-    ###
-    [
-      ["Random #{@RandomN[0]} Items", :demoRandom, 'random.rb'], 
-      ["Random #{@RandomN[0]} Items, Button Images", :demoRandom2, 'random.rb'], 
-      ["Outlook Express (Folders)", :demoOutlookFolders, 'outlook-folders.rb'],
-      ["Outlook Express (Newsgroup)", :demoOutlookNewsgroup, 'outlook-newgroup.rb'], 
-      ["Explorer (Details)", :demoExplorerDetails, 'explorer.rb'], 
-      ["Explorer (List)", :demoExplorerList, 'explorer.rb'], 
-      ["Explorer (Large icons)", :demoExplorerLargeIcons, 'explorer.rb'], 
-      ["Explorer (Small icons)", :demoExplorerSmallIcons, 'explorer.rb'], 
-      ["Internet Options", :demoInternetOptions, 'www-options.rb'], 
-      ["Help Contents", :demoHelpContents, 'help.rb'], 
-      ["Layout", :demoLayout, 'layout.rb'], 
-      ["MailWasher", :demoMailWasher, 'mailwasher.rb'], 
-      ["Bitmaps", :demoBitmaps, 'bitmaps.rb'], 
-      ["iMovie", :demoIMovie, 'imovie.rb']
-    ].each{|label, cmd, file|
-      item = @tree1.item_create
-      @tree1.item_lastchild(:root, item)
-      unless $Version_1_1_OrLater
-        @tree1.item_style_set(item, 0, 's1')
-      end
-      @tree1.item_text(item, 0, label)
-      @demoCmd[item] = cmd
-      @demoFile[item] = file
-    }
-
-    @tree1.yview_moveto(0.0)
-  end
-
-  def demo_set(cmd, file)
-    demo_clear()
-    clicks = Tk::Clock.clicks
-    @demo_scripts.__send__(cmd, @tree2)
-    clicks = Tk::Clock.clicks - clicks
-    puts "set list in #{'%.2g'%(clicks/1000000.0)} seconds (#{clicks} clicks)"
-    @tree2.xview_moveto(0)
-    @tree2.yview_moveto(0)
-    Tk.update
-    display_styles_in_list()
-    show_source(file)
-  end
-
-  def display_styles_in_list
-    # Create elements and styles the first time this is called
-    if @tree4.style_names.empty?
-      @tree4.element_create('e1', :text, 
-                            :fill=>[@SystemHighlightText,['selected','focus']])
-      @tree4.element_create('e2', :text, 
-                            :fill=>[
-                              @SystemHighlightText, ['selected','focus'], 
-                              '', ['selected','!focus'], 
-                              'blue', []
-                            ])
-      @tree4.element_create('e3', :rect, :showfocus=>true, 
-                            :fill=>[
-                              @SystemHighlight, ['selected','focus'],
-                              'gray', ['selected', '!focus']
-                            ])
-
-      @tree4.style_create('s1')
-      @tree4.style_elements('s1', ['e3', 'e1'])
-      @tree4.style_layout('s1', 'e3', :union=>['e1'], :ipadx=>1, :ipady=>[0,1])
-
-      @tree4.style_create('s2')
-      @tree4.style_elements('s2', ['e3', 'e1', 'e2'])
-      @tree4.style_layout('s2', 'e1', :padx=>[0,4])
-      @tree4.style_layout('s2', 'e3', :union=>['e1', 'e2'], 
-                          :ipadx=>1, :ipady=>[0,1])
-    end
-
-    # Clear the list
-    @tree4.item_delete(:all)
-    
-    # One item for each element in the demo list
-    @tree2.element_names.sort.each{|elem|
-      if $Version_1_1_OrLater
-        item = @tree4.item_create(:button=>true)
-        @tree4.item_collapse(item)
-      else
-        item = @tree4.item_create
-        @tree4.item_hasbutton(item, true)
-        @tree4.collapse(item)
-      end
-      @tree4.item_style_set(item, 0, 's1')
-      @tree4.item_text(item, 0, 
-                       "Element #{elem} (#{@tree2.element_type(elem)})")
-
-      # One item for each configuration option for this element
-      @tree2.element_configinfo(elem).each{|name, x, y, default, current|
-        item2 = @tree4.item_create
-
-        if default == current
-          @tree4.item_style_set(item2, 0, 's1')
-          @tree4.item_complex(item2, [
-                                ['e1', {:text=>"#{name} #{current.inspect}"}]
-                              ])
-        else
-          @tree4.item_style_set(item2, 0, 's2')
-          @tree4.item_complex(item2, [
-                                ['e1', {:text=>name}], 
-                                ['e2', {:text=>current.inspect}]
-                              ])
-        end
-
-        @tree4.item_lastchild(item, item2)
-      }
-
-      @tree4.item_lastchild(:root, item)
-    }
-
-    # One item for each style in the demo list
-    @tree2.style_names.sort.each{|sty|
-      if $Version_1_1_OrLater
-        item = @tree4.item_create(:button=>true)
-        @tree4.item_collapse(item)
-      else
-        item = @tree4.item_create
-        @tree4.item_hasbutton(item, true)
-        @tree4.collapse(item)
-      end
-      @tree4.item_style_set(item, 0, 's1')
-      @tree4.item_text(item, 0, "Style #{sty}")
-
-      # One item for each element in the style
-      @tree2.style_elements(sty).each{|elem|
-        if $Version_1_1_OrLater
-          item2 = @tree4.item_create(:button=>true)
-          @tree4.item_collapse(item2)
-        else
-          item2 = @tree4.item_create
-          @tree4.item_hasbutton(item2, true)
-          @tree4.collapse(item2)
-        end
-        @tree4.item_style_set(item2, 0, 's1')
-        @tree4.item_text(item2, 0, 
-                         "Element #{elem} (#{@tree2.element_type(elem)})")
-
-        # One item for each layout option for this element in this style
-        @tree2.style_layout(sty, elem).each{|k, v|
-          item3 = @tree4.item_create
-          unless $Version_1_1_OrLater
-            @tree4.item_hasbutton(item3, false)
-          end
-          @tree4.item_style_set(item3, 0, 's1')
-          @tree4.item_text(item3, 0, "#{k} #{v.inspect}")
-          @tree4.item_lastchild(item2, item3)
-        }
-
-        @tree4.item_lastchild(item, item2)
-      }
-
-      @tree4.item_lastchild(:root, item)
-    }
-
-    @tree4.xview_moveto(0)
-    @tree4.yview_moveto(0)
-  end
-
-  def display_styles_in_item(item)
-    @tree3.column_configure(0, :text=>"Styles in item #{@tree2.index(item)}")
-
-    # Create elements and styles the first time this is called
-    if @tree3.style_names.empty?
-      @tree3.element_create('e1', :text, 
-                            :fill=>[@SystemHighlightText,['selected','focus']])
-      @tree3.element_create('e2', :text, 
-                            :fill=>[
-                              @SystemHighlightText, ['selected','focus'], 
-                              '', ['selected','!focus'], 
-                              'blue', []
-                            ])
-      @tree3.element_create('e3', :rect, :showfocus=>true, 
-                            :fill=>[
-                              @SystemHighlight, ['selected','focus'],
-                              'gray', ['selected', '!focus']
-                            ])
-
-      @tree3.style_create('s1')
-      @tree3.style_elements('s1', ['e3', 'e1'])
-      @tree3.style_layout('s1', 'e3', :union=>['e1'], :ipadx=>1, :ipady=>[0,1])
-
-      @tree3.style_create('s2')
-      @tree3.style_elements('s2', ['e3', 'e1', 'e2'])
-      @tree3.style_layout('s2', 'e1', :padx=>[0,4])
-      @tree3.style_layout('s2', 'e3', :union=>['e1', 'e2'], 
-                          :ipadx=>1, :ipady=>[0,1])
-    end
-    # Clear the list
-    @tree3.item_delete(:all)
-
-    # One item for each item-column
-    column = 0
-    @tree2.item_style_set(item).each{|sty|
-      item2 = @tree3.item_create
-      if $Version_1_1_OrLater
-        @tree3.item_collapse(item2)
-      else
-        @tree3.collapse(item2)
-      end
-      @tree3.item_style_set(item2, 0, 's1')
-      @tree3.item_element_configure(item2, 0, 'e1', 
-                                    :text=>"Column #{column}: Style #{sty}")
-
-      button = false
-
-      # One item for each element in this style
-      unless sty.to_s.empty?
-        @tree2.item_style_elements(item, column).each{|elem|
-          button = true
-          if $Version_1_1_OrLater
-            item3 = @tree3.item_create(:button=>true)
-          else
-            item3 = @tree3.item_create
-            @tree3.item_hasbutton(item3, true)
-          end
-          if $Version_1_1_OrLater
-            @tree3.item_collapse(item3)
-          else
-            @tree3.collapse(item3)
-          end
-          @tree3.item_style_set(item3, 0, 's1')
-          @tree3.item_element_configure(item3, 0, 'e1', 
-                                        :text=>"Element #{elem} (#{@tree2.element_type(elem)})")
-
-          # One item for each configuration option in this element
-          @tree2.item_element_configinfo(item, column, elem) \
-          .each{|name, x, y, default, current|
-            item4 = @tree3.item_create
-            masterDefault = @tree2.element_cget(elem, name)
-            sameAsMaster = (masterDefault == current)
-            if !sameAsMaster && current == ''
-              sameAsMaster = true
-              current = masterDefault
-            end
-
-            if sameAsMaster
-              @tree3.item_style_set(item4, 0, 's1')
-              @tree3.item_complex(item4, [
-                                    ['e1', 
-                                      {:text=>"#{name} #{current.inspect}"}]
-                                  ])
-            else
-              @tree3.item_style_set(item4, 0, 's2')
-              @tree3.item_complex(item4, [
-                                    ['e1', {:text=>name}], 
-                                    ['e2', {:text=>current.inspect}]
-                                  ])
-            end
-            @tree3.item_lastchild(item3, item4)
-          }
-          @tree3.item_lastchild(item2, item3)
-        }
-        if $Version_1_1_OrLater
-          @tree3.item_configure(item2, :button=>true) if button
-        else
-          @tree3.item_hasbutton(item2, true) if button
-        end
-      end
-      @tree3.item_lastchild(:root, item2)
-      column += 1
-    }
-
-    @tree3.xview_moveto(0)
-    @tree3.yview_moveto(0)
-  end
-
-  def demo_clear
-    # Clear the demo list
-    @tree2.item_delete(:all)
-
-    # Clear all bindings on the demo list added by the previous demo.
-    # This is why DontDelete is used for the <Selection> binding.
-    @tree2.notify_bindinfo(@tree2).each{|ev|
-      @tree2.notify_bind_remove(@tree2, ev)
-    }
-
-    # Clear all run-time states
-    @tree2.state_names.each{|st| @tree2.state_undefine(st) }
-
-    # Clear the styles-in-item list
-    @tree3.item_delete(:all)
-
-    # Delete columns in demo list
-    while (@tree2.numcolumns > 0)
-      @tree2.column_delete(0)
-    end
-
-    # Delete all styles in demo list
-    @tree2.style_delete(*(@tree2.style_names))
-
-    # Delete all elements in demo list
-    @tree2.element_delete(*(@tree2.element_names))
-
-    if $Version_1_1_OrLater
-      @tree2.item_configure(:root, :button=>false)
-      @tree2.item_expand(:root)
-    else
-      @tree2.item_hasbutton(:root, false)
-      @tree2.expand(:root)
-    end
-
-    # Restore some happy defaults to the demo list
-    # if $Version_1_1_OrLater
-    if @has_bgimg
-      @tree2.configure(:orient=>:vertical, :wrap=>'', 
-                       :xscrollincrement=>0, :yscrollincrement=>0, 
-                       :itemheight=>0, :showheader=>true, 
-                       :background=>'white', :scrollmargin=>0, 
-                       :xscrolldelay=>50, :yscrolldelay=>50, 
-                       :openbuttonimage=>'', :closedbuttonimage=>'', 
-                       :backgroundmode=>:row, :treecolumn=>0, :indent=>19, 
-                       :defaultstyle=>'', :backgroundimage=>'')
-    else
-      @tree2.configure(:orient=>:vertical, :wrap=>'', 
-                       :xscrollincrement=>0, :yscrollincrement=>0, 
-                       :itemheight=>0, :showheader=>true, 
-                       :background=>'white', :scrollmargin=>0, 
-                       :xscrolldelay=>50, :yscrolldelay=>50, 
-                       :openbuttonimage=>'', :closedbuttonimage=>'', 
-                       :backgroundmode=>:row, :treecolumn=>0, :indent=>19)
-    end
-
-    # Restore default bindings to the demo list
-    @tree2.bindtags = [ @tree2, Tk::TreeCtrl, @tree2.winfo_toplevel, :all ]
-
-    @tree2.winfo_children.each{|w| 
-      w.destroy unless @non_clear_list.include?(w)
-    }
-  end
-end
-
-TkTreeCtrl_demo.new($ScriptDir)
-
-##############################################
-
-def cursor_window(top = nil)
-  top.destroy if top.kind_of?(TkWindow) && top.winfo_exist?
-  top = TkToplevel.new(:title=>'Cursor Window')
-
-  c = TkCanvas.new(top, :background=>'white', 
-                   :width=>50*10, :highlightthickness=>0, 
-                   :borderwidth=>0).pack(:expand=>true, :fill=>:both)
-  cursors = %w(
-       X_cursor
-       arrow
-       based_arrow_down
-       based_arrow_up
-       boat
-       bogosity
-       bottom_left_corner
-       bottom_right_corner
-       bottom_side
-       bottom_tee
-       box_spiral
-       center_ptr
-       circle
-       clock
-       coffee_mug
-       cross
-       cross_reverse
-       crosshair
-       diamond_cross
-       dot
-       dotbox
-       double_arrow
-       draft_large
-       draft_small
-       draped_box
-       exchange
-       fleur
-       gobbler
-       gumby
-       hand1
-       hand2
-       heart
-       icon
-       iron_cross
-       left_ptr
-       left_side
-       left_tee
-       leftbutton
-       ll_angle
-       lr_angle
-       man
-       middlebutton
-       mouse
-       pencil
-       pirate
-       plus
-       question_arrow
-       right_ptr
-       right_side
-       right_tee
-       rightbutton
-       rtl_logo
-       sailboat
-       sb_down_arrow
-       sb_h_double_arrow
-       sb_left_arrow
-       sb_right_arrow
-       sb_up_arrow
-       sb_v_double_arrow
-       shuttle
-       sizing
-       spider
-       spraycan
-       star
-       target
-       tcross
-       top_left_arrow
-       top_left_corner
-       top_right_corner
-       top_side
-       top_tee
-       trek
-       ul_angle
-       umbrella
-       ur_angle
-       watch
-       xterm
-    )
-
-  orig_cursor = c.cursor
-  col = 0
-  row = 0
-
-  cursors.each{|cur|
-    x = col * 50
-    y = row * 40
-
-    begin
-      c.cursor = cur
-
-      r = TkcRectangle.new(c, x, y, x+50, y+40, 
-                           :fill=>'gray90', :outline=>'black', :width=>2)
-      t = TkcText.new(c, x+50/2, y+4, :text=>cur, :anchor=>:n, :width=>42)
-
-      col += 1
-      if col >= 10
-        col = 0
-        row += 1
-      end
-
-      r.bind('Enter', proc{c.cursor = cur; r.fill = 'linen'})
-      r.bind('Leave', proc{c.cursor = ''; r.fill = 'gray90'})
-
-      t.bind('Enter', proc{c.cursor = cur})
-      t.bind('Leave', proc{c.cursor = ''})
-    rescue
-      c.cursor = orig_cursor
-    end
-  }
-
-  c.cursor = orig_cursor
-  c.height = (row + 1) * 40
-end
-
-cursor_window()
-
-##############################################
-
-# A little screen magnifier for X11
-if Tk::PLATFORM['platform'] == 'unix' && Tk.windowingsystem != 'aqua'
-  def show_loupe(setting=nil)
-    loupe = (setting.kind_of?(Hash))? setting: {}
-    loupe[:zoom] = 3 unless loupe[:zoom]
-    loupe[:x] = 0 unless loupe[:x]
-    loupe[:y] = 0 unless loupe[:y]
-    loupe[:auto] = true unless loupe[:auto]
-    loupe[:delay] = 500 unless loupe[:delay]
-    loupe[:image] = 
-      TkPhotoImage.new(:width=>150, :height=>150) unless loupe[:image]
-
-    top = TkToplevel.new(:geometry=>'-0+30', 
-                         :title=>'A little screen magnifier for X11')
-    TkLabel.new(top, :image=>loupe[:image]).pack
-
-    TkTimer.new(proc{loupe[:delay]}, -1, proc{
-                  x, y = TkWinfo.pointerxy(Tk.root)
-                  if loupe[:auto] || loupe[:x] != x || loupe[:y] != y
-                    w = loupe[:image].width
-                    h = loupe[:image].height
-                    Tk::TreeCtrl.loupe(loupe[:image], x, y, w, h, loupe[:zoom])
-                    loupe[:x] = x
-                    loupe[:y] = y
-                  end
-                }).start
-  end
-
-  show_loupe()
-end
-
-##############################################
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/explorer.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/explorer.rb
deleted file mode 100644 (file)
index 242777c..0000000
+++ /dev/null
@@ -1,430 +0,0 @@
-
-def demoExplorerAux(t, dir_proc, file_proc)
-  base_dir = File.dirname(File.dirname(@ScriptDir))
-
-  clicks = Tk::Clock.clicks
-  globDirs = Dir.glob(File.join(base_dir, '*')).find_all{|file|
-    FileTest.directory?(file)
-  }
-  clickGlobDirs = Tk::Clock.clicks - clicks
-
-  clicks = Tk::Clock.clicks
-  list = globDirs.sort
-  clickSortDirs = Tk::Clock.clicks - clicks
-
-  clicks = Tk::Clock.clicks
-  list.each{|file| dir_proc.call(file)}
-  clickAddDirs = Tk::Clock.clicks - clicks
-
-  clicks = Tk::Clock.clicks
-  globFiles = Dir.glob(File.join(base_dir, '*')).find_all{|file|
-    FileTest.file?(file)
-  }
-  clickGlobFiles = Tk::Clock.clicks - clicks
-
-  clicks = Tk::Clock.clicks
-  list = globFiles.sort
-  clickSortFiles = Tk::Clock.clicks - clicks
-
-  clicks = Tk::Clock.clicks
-  list.each{|file| file_proc.call(file)}
-  clickAddFiles = Tk::Clock.clicks - clicks
-
-  gd = '%.2g' % (clickGlobDirs / 1000000.0)
-  sd = '%.2g' % (clickSortDirs / 1000000.0)
-  ad = '%.2g' % (clickAddDirs  / 1000000.0)
-  gf = '%.2g' % (clickGlobFiles / 1000000.0)
-  sf = '%.2g' % (clickSortFiles / 1000000.0)
-  af = '%.2g' % (clickAddFiles  / 1000000.0)
-
-  puts "dirs(#{globDirs.length}) glob/sort/add #{gd}/#{sd}/#{ad}    files(#{globFiles.length}) glob/sort/add #{gf}/#{sf}/#{af}"
-
-  @Priv[:DirCnt, t] = globDirs.length
-end
-
-#
-# Demo: explorer files
-#
-def demoExplorerDetails(t)
-  height = t.font.metrics(:linespace)
-  height = 18 if height < 18
-
-  t.configure(:showroot=>false, :showbuttons=>false, :showlines=>false, 
-              :itemheight=>height, :selectmode=>:extended, 
-              :xscrollincrement=>20, :scrollmargin=>16, 
-              :xscrolldelay=>[500, 50], :yscrolldelay=>[500, 50])
-
-  init_pics('small-*')
-
-  if $HasColumnCreate
-    t.column_create(:text=>'Name', :tag=>'name', 
-                    :width=>200, :arrow=>:up, :arrowpad=>6)
-    t.column_create(:text=>'Size', :tag=>'size', :justify=>:right, 
-                    :width=>60, :arrowside=>:left, :arrowgravity=>:right)
-    t.column_create(:text=>'Type', :tag=>'type', :width=>120)
-    t.column_create(:text=>'Modified', :tag=>'modified', :width=>130)
-  else
-    t.column_configure(0, :text=>'Name', :tag=>'name', 
-                       :width=>200, :arrow=>:up, :arrowpad=>6)
-    t.column_configure(1, :text=>'Size', :tag=>'size', :justify=>:right, 
-                       :width=>60, :arrowside=>:left, :arrowgravity=>:right)
-    t.column_configure(2, :text=>'Type', :tag=>'type', :width=>120)
-    t.column_configure(3, :text=>'Modified', :tag=>'modified', :width=>130)
-  end
-
-  t.element_create('e1', :image, 
-                   :image=>[
-                     @sel_images['small-folder'], ['selected'], 
-                     @images['small-folder'], []
-                   ])
-  t.element_create('e2', :text, :lines=>1, 
-                   :fill=>[@SystemHighlightText, ['selected', 'focus']])
-  t.element_create('txtType', :text, :lines=>1)
-  t.element_create('txtSize', :text, :lines=>1, 
-                   :datatype=>:integer, :format=>'%dKB')
-  t.element_create('txtDate', :text, :lines=>1, 
-                   :datatype=>:time, :format=>'%d/%m/%y %I:%M %p')
-  t.element_create('e4', :rect, :showfocus=>true,
-                   :fill=>[
-                     @SystemHighlight, ['selected', 'focus'], 
-                     'gray', ['selected', '!focus']
-                   ])
-
-  # image + text
-  s = t.style_create('styName', :orient=>:horizontal)
-  t.style_elements(s, ['e4', 'e1', 'e2'])
-  t.style_layout(s, 'e1', :expand=>:ns)
-  t.style_layout(s, 'e2', :padx=>[2,0], :squeeze=>:x, :expand=>:ns)
-  t.style_layout(s, 'e4', :union=>['e2'], :iexpand=>:ns, :ipadx=>2)
-
-  # column 1: text
-  s = t.style_create('stySize')
-  t.style_elements(s, ['txtSize'])
-  t.style_layout(s, 'txtSize', :padx=>6, :squeeze=>:x, :expand=>:ns)
-
-  # column 2: text
-  s = t.style_create('styType')
-  t.style_elements(s, ['txtType'])
-  t.style_layout(s, 'txtType', :padx=>6, :squeeze=>:x, :expand=>:ns)
-
-  # column 3: text
-  s = t.style_create('styDate')
-  t.style_elements(s, ['txtDate'])
-  t.style_layout(s, 'txtDate', :padx=>6, :squeeze=>:x, :expand=>:ns)
-
-  @Priv[:edit, t] = ['e2']
-  @Priv[:sensitive, t] = [ ['name', 'styName', 'e1', 'e2'] ]
-  @Priv[:dragimage, t] = [ ['name', 'styName', 'e1', 'e2'] ]
-
-  t.notify_bind(t, 'Edit-accept', 
-                proc{|w, i, tt| w.item_text(i, 0, tt)}, '%T %I %t')
-
-  dir_proc = proc{|file|
-    item = t.item_create
-    t.item_style_set(item, 0, 'styName', 2, 'styType', 3, 'styDate')
-    t.item_complex(item, 
-                   [['e2', {:text=>File.basename(file)}]], 
-                   [], 
-                   [['txtType', {:text=>'Folder'}]], 
-                   [['txtDate', {:data=>File.mtime(file).tv_sec}]])
-    t.item_lastchild(:root, item)
-  }
-
-  file_proc = proc{|file|
-    item = t.item_create
-    t.item_style_set(item, 0, 'styName', 1, 'stySize', 
-                           2, 'styType', 3, 'styDate')
-
-    ext = File.extname(file)
-    case ext
-    when '.dll'
-      img = 'small-dll'
-    when '.exe'
-      img = 'small-exe'
-    when '.txt'
-      img = 'small-txt'
-    else
-      img = 'small-file'
-    end
-
-    type = ext.upcase
-    type = type[1..-1] << ' ' unless type.empty?
-    type << 'File'
-
-    t.item_complex(item, 
-                   [ 
-                     ['e1', {:image=>[@sel_images[img], ['selected'], 
-                                      @images[img], []]}],
-                     ['e2', {:text=>File.basename(file)}]
-                   ], 
-                   [ ['txtSize', {:data=>File.size(file)/1024 + 1}] ], 
-                   [ ['txtType', {:text=>type}] ], 
-                   [ ['txtDate', {:data=>File.mtime(file).tv_sec}] ]
-                   )
-    t.item_lastchild(:root, item)
-  }
-
-  demoExplorerAux(t, dir_proc, file_proc)
-
-  @SortColumn = 0
-  t.notify_bind(t, 'Header-invoke', 
-                proc{|w, c| explorerHeaderInvoke(t, w, c)}, '%T %C')
-
-  t.bindtags = [ t, 'TreeCtrlFileList', Tk::TreeCtrl, t.winfo_toplevel, :all ]
-end
-
-def explorerHeaderInvoke(t, w, c)
-  if (c == @SortColumn)
-    if t.column_cget(@SortColumn, :arrow) == 'down'
-      order = :increasing
-      arrow = :up
-    else
-      order = :decreasing
-      arrow = :down
-    end
-  else
-    if t.column_cget(@SortColumn, :arrow) == 'down'
-      order = :decreasing
-      arrow = :down
-    else
-      order = :increasing
-      arrow = :up
-    end
-    t.column_configure(@SortColumn, :arrow=>:none)
-    @SortColumn = c
-  end
-
-  t.column_configure(c, :arrow=>arrow)
-  dirCount = TkComm.number(@Priv[:DirCnt, t])
-  lastDir = dirCount - 1
-  case t.column_cget(c, :tag)
-  when 'name'
-    if dirCount > 0
-      t.item_sort(:root, order, {:last=>"root child #{lastDir}"}, 
-                  {:column=>c, :dictionary=>true})
-    end
-    if dirCount < t.numitems - 1
-      t.item_sort(:root, order, {:first=>"root child #{dirCount}"}, 
-                  {:column=>c, :dictionary=>true})
-    end
-
-  when 'size'
-    if dirCount < t.numitems - 1
-      t.item_sort(:root, order, {:first=>"root child #{dirCount}"}, 
-                  {:column=>c, :integer=>true}, 
-                  {:column=>'name', :dictionary=>true})
-    end
-
-  when 'type'
-    if dirCount < t.numitems - 1
-      t.item_sort(:root, order, {:first=>"root child #{dirCount}"}, 
-                  {:column=>c, :dictionary=>true}, 
-                  {:column=>'name', :dictionary=>true})
-    end
-
-  when 'modified'
-    if dirCount > 0
-      t.item_sort(:root, order, {:last=>"root child #{lastDir}"}, 
-                  {:column=>c, :integer=>true}, 
-                  {:column=>'name', :dictionary=>true})
-    end
-    if dirCount < t.numitems - 1
-      t.item_sort(:root, order, {:first=>"root child #{dirCount}"}, 
-                  {:column=>c, :integer=>true}, 
-                  {:column=>'name', :dictionary=>true})
-    end
-
-  end
-end
-
-def demoExplorerLargeIcons(t)
-  # Item height is 32 for icon, 4 padding, 3 lines of text
-  itemHeight = 32 + 4 + t.font.metrics(:linespace) * 3
-
-  t.configure(:showroot=>false, :showbuttons=>false, :showlines=>false, 
-              :selectmode=>:extended, :wrap=>:window, :orient=>:horizontal, 
-              :itemheight=>itemHeight, :showheader=>false, :scrollmargin=>16, 
-              :xscrolldelay=>[500, 50], :yscrolldelay=>[500, 50])
-
-  init_pics('big-*')
-
-  if $HasColumnCreate
-    t.column_create(:width=>75)
-  else
-    t.column_configure(0, :width=>75)
-  end
-
-  t.element_create('elemImg', :image, 
-                   :image=>[
-                     @sel_images['big-folder'], ['selected'], 
-                     @images['big-folder'], []
-                   ])
-  t.element_create('elemTxt', :text, :justify=>:center, 
-                   :lines=>1, :width=>71, :wrap=>:word, 
-                   :fill=>[@SystemHighlightText, ['selected', 'focus']])
-  t.element_create('elemSel', :rect, :showfocus=>true, 
-                   :fill=>[
-                     @SystemHighlight, ['selected', 'focus'], 
-                     'gray', ['selected']
-                   ])
-
-  # image + text
-  s = t.style_create('STYLE', :orient=>:vertical)
-  t.style_elements(s, ['elemSel', 'elemImg', 'elemTxt'])
-  t.style_layout(s, 'elemImg', :expand=>:we)
-  t.style_layout(s, 'elemTxt', 
-                 :pady=>[4,0], :padx=>2, :squeeze=>:x, :expand=>:we)
-  t.style_layout(s, 'elemSel', :union=>['elemTxt'])
-
-  @Priv[:edit, t] = ['elemTxt']
-  @Priv[:sensitive, t] = [ [0, 'STYLE', 'elemImg', 'elemTxt'] ]
-  @Priv[:dragimage, t] = [ [0, 'STYLE', 'elemImg', 'elemTxt'] ]
-
-  t.notify_bind(t, 'Edit-accept', 
-                proc{|w, i, tt| w.item_text(i, 0, tt)}, '%T %I %t')
-
-  dir_proc = proc{|file|
-    item = t.item_create
-    t.item_style_set(item, 0, 'STYLE')
-    t.item_text(item, 0, File.basename(file))
-    t.item_lastchild(:root, item)
-  }
-
-  file_proc = proc{|file|
-    item = t.item_create
-    t.item_style_set(item, 0, 'STYLE')
-
-    ext = File.extname(file)
-    case ext
-    when '.dll'
-      img = 'big-dll'
-    when '.exe'
-      img = 'big-exe'
-    when '.txt'
-      img = 'big-txt'
-    else
-      img = 'big-file'
-    end
-
-    type = ext.upcase
-    type = type[1..-1] << ' ' unless type.empty?
-    type << 'File'
-
-    t.item_complex(item, 
-                   [ 
-                     ['elemImg', {:image=>[@sel_images[img], ['selected'], 
-                                           @images[img], []]}],
-                     ['elemTxt', {:text=>File.basename(file)}]
-                   ])
-    t.item_lastchild(:root, item)
-  }
-
-  demoExplorerAux(t, dir_proc, file_proc)
-
-  t.activate(t.index('root firstchild'))
-
-  t.notify_bind(t, 'ActiveItem', 
-                proc{|w, a, c|
-                  w.item_element_configure(a, 0, 'elemTxt', :lines=>'')
-                  w.item_element_configure(c, 0, 'elemTxt', :lines=>3)
-                }, '%T %p %c')
-
-  t.bindtags = [ t, 'TreeCtrlFileList', Tk::TreeCtrl, t.winfo_toplevel, :all ]
-end
-
-# Tree is horizontal, wrapping occurs at right edge of window, each item
-# is as wide as the smallest needed multiple of 110 pixels
-def demoExplorerSmallIcons(t)
-  demoExplorerList(t)
-  t.configure(:orient=>:horizontal, :xscrollincrement=>0)
-  t.column_configure(0, :width=>'', :stepwidth=>110, :widthhack=>false)
-end
-
-# Tree is vertical, wrapping occurs at bottom of window, each range has the
-# same width (as wide as the longest item), xscrollincrement is by range
-def demoExplorerList(t)
-  height = t.font.metrics(:linespace) + 2
-  height = 18 if height < 18
-
-  t.configure(:showroot=>false, :showbuttons=>false, :showlines=>false, 
-              :itemheight=>height, :selectmode=>:extended, :wrap=>:window, 
-              :showheader=>false, :scrollmargin=>16, 
-              :xscrolldelay=>[500, 50], :yscrolldelay=>[500, 50])
-
-  init_pics('small-*')
-
-  if $HasColumnCreate
-    t.column_create(:widthhack=>true)
-  else
-    t.column_configure(0, :widthhack=>true)
-  end
-
-  t.element_create('elemImg', :image, 
-                   :image=>[
-                     @sel_images['small-folder'], ['selected'], 
-                     @images['small-folder'], []
-                   ])
-  t.element_create('elemTxt', :text, :lines=>1, 
-                   :fill=>[@SystemHighlightText, ['selected', 'focus']])
-  t.element_create('elemSel', :rect, :showfocus=>true, 
-                   :fill=>[
-                     @SystemHighlight, ['selected', 'focus'], 
-                     'gray', ['selected', '!focus']
-                   ])
-
-  # image + text
-  s = t.style_create('STYLE')
-  t.style_elements(s, ['elemSel', 'elemImg', 'elemTxt'])
-  t.style_layout(s, 'elemImg', :expand=>:ns)
-  t.style_layout(s, 'elemTxt', :squeeze=>:x, :expand=>:ns, :padx=>[2,0])
-  t.style_layout(s, 'elemSel', :union=>['elemTxt'], :iexpand=>:ns, :ipadx=>2)
-
-  @Priv[:edit, t] = ['elemTxt']
-  @Priv[:sensitive, t] = [ [0, 'STYLE', 'elemImg', 'elemTxt'] ]
-  @Priv[:dragimage, t] = [ [0, 'STYLE', 'elemImg', 'elemTxt'] ]
-
-  t.notify_bind(t, 'Edit-accept', 
-                proc{|w, i, tt| w.item_text(i, 0, tt)}, '%T %I %t')
-
-  dir_proc = proc{|file|
-    item = t.item_create
-    t.item_style_set(item, 0, 'STYLE')
-    t.item_text(item, 0, File.basename(file))
-    t.item_lastchild(:root, item)
-  }
-
-  file_proc = proc{|file|
-    item = t.item_create
-    t.item_style_set(item, 0, 'STYLE')
-
-    ext = File.extname(file)
-    case ext
-    when '.dll'
-      img = 'small-dll'
-    when '.exe'
-      img = 'small-exe'
-    when '.txt'
-      img = 'small-txt'
-    else
-      img = 'small-file'
-    end
-
-    type = ext.upcase
-    type = type[1..-1] << ' ' unless type.empty?
-    type << 'File'
-
-    t.item_complex(item, 
-                   [ 
-                     ['elemImg', {:image=>[@sel_images[img], ['selected'], 
-                                           @images[img], []]}],
-                     ['elemTxt', {:text=>File.basename(file)}]
-                   ])
-    t.item_lastchild(:root, item)
-  }
-
-  demoExplorerAux(t, dir_proc, file_proc)
-
-  t.activate(t.item_firstchild(:root))
-
-  t.bindtags = [ t, 'TreeCtrlFileList', Tk::TreeCtrl, t.winfo_toplevel, :all ]
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/help.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/help.rb
deleted file mode 100644 (file)
index af026fc..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-#
-# Demo: Help contents
-#
-def demoHelpContents(t)
-  height = t.font.metrics(:linespace)
-  height = 18 if height < 18
-  t.configure(:showroot=>false, :showbuttons=>false, :showlines=>false, 
-              :itemheight=>height, :selectmode=>:browse)
-
-  init_pics('help-*')
-
-  if $Version_1_1_OrLater
-    t.column_create(:text=>'Help Contents')
-  else # TreeCtrl 1.0
-    t.column_configure(0, :text=>'Help Contents')
-  end
-
-  # Define a new item state
-  t.state_define('mouseover')
-
-  t.element_create('e1', :image, :image=>@images['help-page'])
-  t.element_create('e2', :image, :image=>[
-                     @images['help-book-open'], ['open'], 
-                     @images['help-book-closed'], [], 
-                   ])
-  t.element_create('e3', :text, 
-                   :font=>[t.font.dup.underline(true), ['mouseover']], 
-                   :fill=>[
-                     @SystemHighlightText, ['selected', 'focus'], 
-                     'blue', ['mouseover']
-                   ])
-  t.element_create('e4', :rect, :showfocus=>true, 
-                   :fill=>[@SystemHighlight, ['selected', 'focus']])
-
-  # book
-  s = t.style_create('s1')
-  t.style_elements(s, ['e4', 'e1', 'e3'])
-  t.style_layout(s, 'e1', :padx=>[0,4], :expand=>:ns)
-  t.style_layout(s, 'e3', :expand=>:ns)
-  t.style_layout(s, 'e4', :union=>['e3'], :iexpand=>:ns, :ipadx=>2)
-
-  # page
-  s = t.style_create('s2')
-  t.style_elements(s, ['e4', 'e2', 'e3'])
-  t.style_layout(s, 'e2', :padx=>[0,4], :expand=>:ns)
-  t.style_layout(s, 'e3', :expand=>:ns)
-  t.style_layout(s, 'e4', :union=>['e3'], :iexpand=>:ns, :ipadx=>2)
-
-  parentList = [:root, '', '', '', '', '', '']
-  parent = :root
-  [
-     [0, 's1', "Welcome to Help"], 
-     [0, 's2', "Introducing Windows 98"], 
-        [1, 's2', "How to Use Help"], 
-           [2, 's1', "Find a topic"], 
-           [2, 's1', "Get more out of help"],
-        [1, 's2', "Register Your Software"],
-           [2, 's1', "Registering Windows 98 online"], 
-        [1, 's2', "What's New in Windows 98"], 
-           [2, 's1', "Innovative, easy-to-use features"], 
-           [2, 's1', "Improved reliability"], 
-           [2, 's1', "A faster operating system"], 
-           [2, 's1', "True Web integration"], 
-           [2, 's1', "More entertaining and fun"], 
-        [1, 's2', "If You're New to Windows 98"], 
-           [2, 's2', "Tips for Macintosh Users"], 
-              [3, 's1', "Why does the mouse have two buttons?"]
-  ].each{|depth, style, text|
-    item = t.item_create
-    t.item_style_set(item, 0, style)
-    t.item_element_configure(item, 0, 'e3', :text=>text)
-    if $Version_1_1_OrLater
-      t.item_collapse(item)
-    else # TreeCtrl 1.0
-      t.collapse(item)
-    end
-    t.item_lastchild(parentList[depth], item)
-    depth += 1
-    parentList[depth] = item
-  }
-
-  treeCtrlHelp = TkBindTag.new
-
-  treeCtrlHelp.bind('Double-ButtonPress-1', 
-                    proc{|w, x, y|
-                      if w.identify(x, y)[0] == 'header'
-                        Tk::TreeCtrl::BindCallback.doubleButton1(w, x, y)
-                      else
-                        helpButton1(w, x, y)
-                      end
-                      Tk.callback_break
-                    }, '%W %x %y')
-
-  treeCtrlHelp.bind('ButtonPress-1', 
-                    proc{|w, x, y|
-                      helpButton1(w, x, y)
-                      Tk.callback_break
-                    }, '%W %x %y')
-
-  treeCtrlHelp.bind('Button1-Motion', 
-                    proc{|w, x, y|
-                      helpMotion1(w, x, y)
-                      Tk.callback_break
-                    }, '%W %x %y')
-
-  treeCtrlHelp.bind('Button1-Leave', 
-                    proc{|w, x, y|
-                      helpLeave1(w, x, y)
-                      Tk.callback_break
-                    }, '%W %x %y')
-
-  treeCtrlHelp.bind('ButtonRelease-1', 
-                    proc{|w, x, y|
-                      helpRelease1(w, x, y)
-                      Tk.callback_break
-                    }, '%W %x %y')
-
-  treeCtrlHelp.bind('Motion', proc{|w, x, y| helpMotion(w, x, y) }, '%W %x %y')
-
-  treeCtrlHelp.bind('Leave', proc{|w, x, y| helpMotion(w, x, y) }, '%W %x %y')
-
-  treeCtrlHelp.bind('KeyPress-Return', 
-                    proc{|w, x, y|
-                      if w.selection_get.length == 1
-                        if $Version_1_1_OrLater
-                          w.item_toggle(w.selection_get[0])
-                        else # TreeCtrl 1.0
-                          w.toggle(w.selection_get[0])
-                        end
-                      end
-                      Tk.callback_break
-                    }, '%W %x %y')
-
-  @Priv[:help, :prev] = ''
-
-  t.bindtags = [ t, treeCtrlHelp, Tk::TreeCtrl, t.winfo_toplevel, :all ]
-end
-
-# This is an alternate implementation that does not define a new item state
-# to change the appearance of the item under the cursor.
-def demoHelpContents2(t)
-  height = t.font.metrics(:linespace)
-  height = 18 if height < 18
-  t.configure(:showroot=>false, :showbuttons=>false, :showlines=>false, 
-              :itemheight=>height, :selectmode=>:browse)
-
-  init_pics('help-*')
-
-  if $Version_1_1_OrLater
-    t.column_create(:text=>'Help Contents')
-  else # TreeCtrl 1.0
-    t.column_configure(0, :text=>'Help Contents')
-  end
-
-  t.element_create('e1', :image, :image=>@images['help-page'])
-  t.element_create('e2', :image, :image=>[
-                     @images['help-book-open'], ['open'], 
-                     @images['help-book-closed'], [], 
-                   ])
-  t.element_create('e3', :text, 
-                   :fill=>[
-                     @SystemHighlightText, ['selected', 'focus'], 
-                     'blue', []
-                   ])
-  t.element_create('e4', :rect, :showfocus=>true, 
-                   :fill=>[@SystemHighligh, ['selected', 'focus']])
-  t.element_create('e5', :text, :font=>t.font.dup.underline(true), 
-                   :fill=>[
-                     @SystemHighlightText, ['selected', 'focus'], 
-                     'blue', []
-                   ])
-
-  # book
-  s = t.style_create('s1')
-  t.style_elements(s, ['e4', 'e1', 'e3'])
-  t.style_layout(s, 'e1', :padx=>[0,4], :expand=>:ns)
-  t.style_layout(s, 'e3', :expand=>:ns)
-  t.style_layout(s, 'e4', :union=>['e3'], :iexpand=>:ns, :ipadx=>2)
-
-  # page
-  s = t.style_create('s2')
-  t.style_elements(s, ['e4', 'e2', 'e3'])
-  t.style_layout(s, 'e2', :padx=>[0,4], :expand=>:ns)
-  t.style_layout(s, 'e3', :expand=>:ns)
-  t.style_layout(s, 'e4', :union=>['e3'], :iexpand=>:ns, :ipadx=>2)
-
-  # book (focus)
-  s = t.style_create('s1.f')
-  t.style_elements(s, ['e4', 'e1', 'e5'])
-  t.style_layout(s, 'e1', :padx=>[0,4], :expand=>:ns)
-  t.style_layout(s, 'e5', :expand=>:ns)
-  t.style_layout(s, 'e4', :union=>['e5'], :iexpand=>:ns, :ipadx=>2)
-
-  # page (focus)
-  s = t.style_create('s2')
-  t.style_elements(s, ['e4', 'e2', 'e5'])
-  t.style_layout(s, 'e2', :padx=>[0,4], :expand=>:ns)
-  t.style_layout(s, 'e5', :expand=>:ns)
-  t.style_layout(s, 'e4', :union=>['e5'], :iexpand=>:ns, :ipadx=>2)
-
-  parentList = [:root, '', '', '', '', '', '']
-  parent = :root
-  [
-     [0, 's1', "Welcome to Help"], 
-     [0, 's2', "Introducing Windows 98"], 
-        [1, 's2', "How to Use Help"], 
-           [2, 's1' "Find a topic"], 
-           [2, 's1', "Get more out of help"],
-        [1, 's2', "Register Your Software"],
-           [2, 's1', "Registering Windows 98 online"], 
-        [1, 's2', "What's New in Windows 98"], 
-           [2, 's1', "Innovative, easy-to-use features"], 
-           [2, 's1', "Improved reliability"], 
-           [2, 's1', "A faster operating system"], 
-           [2, 's1', "True Web integration"], 
-           [2, 's1', "More entertaining and fun"], 
-        [1, 's2', "If You're New to Windows 98"], 
-           [2, 's2', "Tips for Macintosh Users"], 
-              [3, 's1', "Why does the mouse have two buttons?"]
-  ].each{|depth, style, text|
-    item = t.item_create
-    t.item_style_set(item, 0, style)
-    t.item_element_configure(item, 0, 'e3', :text=>text)
-    if $Version_1_1_OrLater
-      t.item_collapse(item)
-    else # TreeCtrl 1.0
-      t.collapse(item)
-    end
-    t.item_lastchild(parentList[depth], item)
-    depth += 1
-    parentList[depth] = item
-  }
-
-  treeCtrlHelp = TkBindTag.new
-
-  treeCtrlHelp.bind('Double-ButtonPress-1', 
-                    proc{|w, x, y|
-                      if w.identify(x, y)[0] == 'header'
-                        Tk::TreeCtrl::BindCallback.doubleButton1(w, x, y)
-                      else
-                        helpButton1(w, x, y)
-                      end
-                      Tk.callback_break
-                    }, '%W %x %y')
-
-  treeCtrlHelp.bind('ButtonPress-1', 
-                    proc{|w, x, y|
-                      helpButton1(w, x, y)
-                      Tk.callback_break
-                    }, '%W %x %y')
-
-  treeCtrlHelp.bind('Button1-Motion', 
-                    proc{|w, x, y|
-                      helpMotion1(w, x, y)
-                      Tk.callback_break
-                    }, '%W %x %y')
-
-  treeCtrlHelp.bind('Button1-Leave', 
-                    proc{|w, x, y|
-                      helpLeave1(w, x, y)
-                      Tk.callback_break
-                    }, '%W %x %y')
-
-  treeCtrlHelp.bind('ButtonRelease-1', 
-                    proc{|w, x, y|
-                      helpRelease1(w, x, y)
-                      Tk.callback_break
-                    }, '%W %x %y')
-
-  treeCtrlHelp.bind('Motion', proc{|w, x, y| helpMotion(w, x, y) }, '%W %x %y')
-
-  treeCtrlHelp.bind('Leave', proc{|w, x, y| helpMotion(w, x, y) }, '%W %x %y')
-
-  treeCtrlHelp.bind('KeyPress-Return', 
-                    proc{|w, x, y|
-                      if w.selection_get.length == 1
-                        w.item_toggle(w.selection_get[0])
-                      end
-                      Tk.callback_break
-                    }, '%W %x %y')
-
-  @Priv[:help, :prev] = ''
-
-  t.bindtags = [ t, treeCtrlHelp, Tk::TreeCtrl, t.winfo_toplevel, :all ]
-end
-
-def helpButton1(w, x, y)
-  w.set_focus
-  id = w.identify(x, y)
-  @Priv['buttonMode'] = ''
-  if id[0] == 'header'
-    Tk::TreeCtrl::BindCallback.buttonPress1(w, x, y)
-  elsif id[0] == 'item'
-    item = id[1]
-    # didn't click an element
-    return if id.length != 6
-    if w.selection_includes(item)
-      w.toggle(item)
-      return
-    end
-    if w.selection_get.length > 0
-      item2 = w.selection_get[0]
-      if $Version_1_1_OrLater
-        w.item_collapse(item2)
-      else # TreeCtrl 1.0
-        w.collapse(item2)
-      end
-      w.item_ancestors(item2).each{|i|
-        if $Version_1_1_OrLater
-          w.item_collapse(i) if w.compare(item, '!=', i)
-        else # TreeCtrl 1.0
-          w.collapse(i) if w.compare(item, '!=', i)
-        end
-      }
-    end
-    w.activate(item)
-    if $Version_1_1_OrLater
-      w.item_ancestors(item).each{|i|
-        w.item_expand(i)
-      }
-      w.item_toggle(item)
-    else # TreeCtrl 1.0
-      w.expand(*(w.item_ancestors(item)))
-      w.toggle(item)
-    end
-    w.selection_modify(item, :all)
-  end
-end
-
-def helpMotion1(w, x, y)
-  case @Priv['buttonMode']
-  when 'resize', 'header'
-    Tk::TreeCtrl::BindCallback.motion1(w, x, y)
-  end
-end
-
-def helpLeave1(w, x, y)
-  # This is called when I do ButtonPress-1 on Unix for some reason,
-  # and buttonMode is undefined.
-  return unless @Priv.exist?('buttonMode')
-  case @Priv['buttonMode']
-  when 'header'
-    w.column_configure(@Priv['column'], :sunken=>false)
-  end
-end
-
-def helpRelease1(w, x, y)
-  case @Priv['buttonMode']
-  when 'resize', 'header'
-    Tk::TreeCtrl::BindCallback.release1(w, x, y)
-  end
-  @Priv['buttonMode'] = ''
-end
-
-def helpMotion(w, x, y)
-  id = w.identify(x, y)
-  if id.empty?
-  elsif id[0] == 'header'
-  elsif id[0] == 'item'
-    item = id[1]
-    if id.length == 6
-      if @Priv[:help, :prev] != TkComm._get_eval_string(item)
-        if @Priv[:help, :prev] != ''
-          w.item_state_set(@Priv[:help, :prev], '!mouseover')
-        end
-        w.item_state_set(item, 'mouseover')
-        @Priv[:help, :prev] = item
-      end
-      return
-    end
-  end
-  if @Priv[:help, :prev] != ''
-    w.item_state_set(@Priv[:help, :prev], '!mouseover')
-    @Priv[:help, :prev] = ''
-  end
-end
-
-# Alternate implementation doesn't rely on mouseover state
-def helpMotion2(w, x, y)
-  id = w.identify(x, y)
-  if id[0] == 'header'
-  elsif !id.empty?
-    item = id[1]
-    if id.kength == 6
-      if @Priv[:help, :prev] != TkComm._get_eval_string(item)
-        if @Priv[:help, :prev] != ''
-          style = w.item_style_set(@Priv[:help, :prev], 0)
-          style.sub!(/\.f$/, '')
-          w.item_style_map(@Priv[:help, :prev], 0, style, ['e5', 'e3'])
-        end
-        style = w.item_style_set(item, 0)
-        w.item_style_map(item, 0, style + '.f', ['e3', 'e5'])
-        @Priv[:help, :prev] = item
-      end
-      return
-    end
-  end
-  if @Priv[:help, :prev] != ''
-    style = w.item_style_set(@Priv[:help, :prev], 0)
-    style.sub!(/\.f$/, '')
-    w.item_style_map(@Priv[:help, :prev], 0, style, ['e5', 'e3'])
-    @Priv[:help, :prev] = ''
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/imovie.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/imovie.rb
deleted file mode 100644 (file)
index d61bf9a..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-#
-# Demo: iMovie
-#
-def demoIMovie(t)
-  t.configure(:showroot=>false, :showbuttons=>false, :showlines=>false, 
-              :selectmode=>:browse, :orient=>:horizontal, :wrap=>:window, 
-              :showheader=>false, :background=>'#dcdcdc')
-
-  if $HasColumnCreate
-    t.column_create
-  end
-
-  init_pics('imovie-*')
-
-  case @thisPlatform
-  when 'macintosh', 'macosx'
-    font1 = TkFont.new(['Geneva', 9])
-    font2 = TkFont.new(['Geneva', 10])
-  when 'unix'
-    font1 = TkFont.new(['Helvetica', -12])
-    font2 = TkFont.new(['Helvetica', -14])
-  else
-    font1 = TkFont.new(['Helvetica', 8])
-    font2 = TkFont.new(['Helvetica', 10])
-  end
-
-  t.element_create('elemTime', :text, :font=>font1)
-  t.element_create('elemName', :text, :font=>font2, :lines=>1, :width=>80)
-  t.element_create('elemRect', :rect, :outline=>'#827878', :outlinewidth=>1, 
-                   :fill=>['#ffdc5a', ['selected'], 'white', []])
-  t.element_create('elemImg', :image)
-  t.element_create('elemShadow', :rect, :outline=>'gray', :outlinewidth=>1, 
-                   :open=>:wn)
-
-  s = t.style_create('STYLE', :orient=>:vertical)
-  t.style_elements(s, [
-                     'elemShadow', 'elemRect', 'elemTime', 
-                     'elemImg', 'elemName'
-                   ])
-  t.style_layout(s, 'elemShadow', :detach=>true, 
-                 :padx=>[1,2], :pady=>[1,2], :iexpand=>:es)
-  t.style_layout(s, 'elemTime', :padx=>[2,0])
-  t.style_layout(s, 'elemImg', :pady=>[0,1])
-  t.style_layout(s, 'elemName', :expand=>:we, :ipady=>[0,2], :padx=>[0,3], 
-                 :squeeze=>:x)
-  t.style_layout(s, 'elemRect', :union=>['elemTime', 'elemImg', 'elemName'], 
-                 :ipadx=>6, :padx=>[0,3], :pady=>[0,3])
-
-  # Set default item style
-  if $Version_1_1_OrLater
-    t.defaultstyle([s])
-  end
-
-  (0..4).each{|i|
-    [
-      ['15:20', 'Clip 1', @images['imovie-01']], 
-      ['19:18', 'Clip 2', @images['imovie-02']], 
-      ['07:20', 'Clip 3', @images['imovie-03']], 
-      ['07:20', 'Clip 4', @images['imovie-04']], 
-      ['07:20', 'Clip 5', @images['imovie-05']], 
-      ['07:20', 'Clip 6', @images['imovie-06']], 
-      ['07:20', 'Clip 7', @images['imovie-07']]
-    ].each{|time, name, image|
-      item = t.item_create
-      unless $Version_1_1_OrLater
-        t.item_style_set(item, 0, s)
-      end
-      t.item_element_configure(item, 0, 'elemTime', :text=>time)
-      t.item_element_configure(item, 0, 'elemName', :text=>name)
-      t.item_element_configure(item, 0, 'elemImg', :image=>image)
-      t.item_lastchild(:root, item)
-    }
-  }
-
-  t.notify_bind(t, 'Edit-accept', proc{|w, i, c, e, tt|
-                  w.item_element_configure(i, c, e, :text=>tt)
-                }, '%T %I %C %E %t')
-
-  iMovie = TkBindTag.new
-  iMovie.bind('ButtonPress-1', proc{|w, x, y|
-                iMovieButton1(w, x, y)
-              }, '%W %x %y')
-
-  t.bindtags = [t, iMovie, Tk::TreeCtrl, t.winfo_toplevel, TkBindTag::ALL]
-end
-
-def iMovieButton1(w, x, y)
-  w.set_focus
-  id = w.identify(x,y)
-
-  if id.empty?
-    # Click outside any item
-
-  elsif id[0] == 'header'
-    # Click in header
-    Tk::TreeCtrl::BindCallback.buttonPress1(w, x, y)
-
-  elsif id[0] == 'item'
-    # Click in item
-    Tk::TreeCtrl::BindCallback.buttonPress1(w, x, y)
-    Tk.update
-    where, item, arg1, arg2, arg3, arg4 = id
-    case arg1
-    when 'column'
-      i = id[1]
-      if id.length == 6
-        e = id[-1]
-        if e == 'elemName'
-          exists = TkWinfo.exist?(w.path + '.entry')
-          Tk::TreeCtrl::BindCallback.entryOpen(w, i, 0, e)
-          ent = TkComm.window(w.path + '.entry')
-          unless exists
-            ent.configure(:borderwidth=>0, :justify=>:center, 
-                          :background=>'#ffdc5a')
-            x1, y1, x2, y2 = w.item_bbox(i, 0, e)
-            ent.place(:y=>y1 - 1)
-          end
-          ent.selection_clear
-          x1, y1, x2, y2 = w.item_bbox(i)
-          ent.place(:x=>x1 + 1, :width=>x2 - x1 - 5)
-          puts "@#{x - (x1 + 1)}"
-          # ent.icursor = ent.index("@#{x - (x1 + 1)}")
-          ent.icursor = ent.index(TkComm._at(x - (x1 + 1)))
-        end
-      end
-    end
-  end
-
-  Tk.callback_break
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/layout.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/layout.rb
deleted file mode 100644 (file)
index 745ac86..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-#
-# Demo: Layout
-#
-def demoLayout(t)
-  t.configure(:showroot=>false, :showrootbutton=>true, :showbuttons=>true, 
-              :showlines=>true, :itemheight=>0, :selectmode=>:browse)
-
-  if $HasColumnCreate
-    t.column_create(:text=>'Layout')
-  else
-    t.column_configure(0, :text=>'Layout')
-  end
-
-  t.element_create('e1', :rect, :width=>30, :height=>30, :fill=>'gray20')
-  t.element_create('e2', :rect, :width=>30, :height=>30, :fill=>'gray40', 
-                   :outline=>'blue', :outlinewidth=>3)
-  t.element_create('e3', :rect, :fill=>'gray60')
-  t.element_create('e4', :rect, :showfocus=>true, 
-                   :fill=>[
-                     @SystemHighlight, ['selected', 'focus'], 'gray80', []
-                   ])
-  t.element_create('e5', :rect, :fill=>'{sky blue}', :width=>20, :height=>20)
-  t.element_create('e6', :rect, :fill=>'{sea green}', :width=>30, :height=>16)
-  t.element_create('e7', :rect, :fill=>'{sky blue}', :width=>30, :height=>16)
-  t.element_create('e8', :rect, :fill=>'gray70', :height=>1)
-
-  s = t.style_create('s1')
-  t.style_elements(s, ['e4', 'e3', 'e1', 'e2', 'e5', 'e6', 'e7'])
-  t.style_layout(s, 'e1', :padx=>[28, 4], :pady=>4)
-  t.style_layout(s, 'e2', :expand=>:es, :padx=>[0, 38])
-  t.style_layout(s, 'e3', :union=>['e1', 'e2'], :ipadx=>4, :ipady=>4, :pady=>2)
-  t.style_layout(s, 'e4', :detach=>true, :iexpand=>:es)
-  t.style_layout(s, 'e5', :detach=>true, :padx=>[2,0], :pady=>2, :iexpand=>:s)
-  t.style_layout(s, 'e6', :detach=>true, :expand=>:ws, 
-                 :padx=>[0,2], :pady=>[2,0])
-  t.style_layout(s, 'e7', :detach=>true, :expand=>:wn, 
-                 :padx=>[0,2], :pady=>[0,2])
-
-  if $Version_1_1_OrLater
-    i = t.item_create(:button=>true)
-  else
-    i = t.item_create
-    t.item_hasbutton(i, true)
-  end
-  t.item_style_set(i, 0, s)
-  t.item_lastchild(:root, i)
-  parent = i
-
-  i = t.item_create()
-  unless $Version_1_1_OrLater
-    t.item_hasbutton(i, false)
-  end
-  t.item_style_set(i, 0, s)
-  t.item_lastchild(parent, i)
-
-  ### 
-
-  s = t.style_create('s2')
-  t.style_elements(s, ['e4', 'e3', 'e1'])
-  t.style_layout(s, 'e1', :padx=>8, :pady=>8, :iexpand=>:e)
-  t.style_layout(s, 'e3', :union=>['e1'], :ipadx=>[20,4], :ipady=>[4,12])
-  t.style_layout(s, 'e4', :detach=>true, :iexpand=>:es)
-
-  if $Version_1_1_OrLater
-    i = t.item_create(:button=>true)
-  else
-    i = t.item_create
-    t.item_hasbutton(i, true)
-  end
-  t.item_style_set(i, 0, s)
-  t.item_lastchild(:root, i)
-
-  i2 = t.item_create()
-  unless $Version_1_1_OrLater
-    t.item_hasbutton(i2, false)
-  end
-  t.item_style_set(i2, 0, s)
-  t.item_lastchild(i, i2)
-
-  ### 
-
-  s = t.style_create('s3')
-  t.style_elements(s, ['e4', 'e3', 'e1', 'e5', 'e6'])
-  t.style_layout(s, 'e4', :union=>['e1', 'e6'], :ipadx=>8, :ipady=>[8,0])
-  t.style_layout(s, 'e3', :union=>['e1', 'e5'], :ipadx=>4, :ipady=>4)
-  t.style_layout(s, 'e5', :ipady=>[0,20])
-
-  if $Version_1_1_OrLater
-    i = t.item_create(:button=>true)
-  else
-    i = t.item_create
-    t.item_hasbutton(i, true)
-  end
-  t.item_style_set(i, 0, s)
-  t.item_lastchild(:root, i)
-
-  i2 = t.item_create()
-  unless $Version_1_1_OrLater
-    t.item_hasbutton(i2, false)
-  end
-  t.item_style_set(i2, 0, s)
-  t.item_lastchild(i, i2)
-
-  ### 
-
-  t.element_create('eb', :border, :background=>@SystemButtonFace, 
-                   :relief=>[:sunken, ['selected'], :raised, []], 
-                   :thickness=>2, :filled=>true)
-  t.element_create('et', :text)
-
-  text = "Here is a text element surrounded by a border element.\nResize the column to watch me wrap."
-
-  s = t.style_create('e4')
-  t.style_elements(s, ['eb', 'et'])
-  t.style_layout(s, 'eb', :union=>['et'], :ipadx=>2, :ipady=>2)
-  t.style_layout(s, 'et', :squeeze=>:x)
-
-  if $Version_1_1_OrLater
-    i = t.item_create(:button=>true)
-  else
-    i = t.item_create
-    t.item_hasbutton(i, true)
-  end
-  t.item_style_set(i, 0, s)
-  t.item_text(i, 0, text)
-  t.item_lastchild(:root, i)
-  parent = i
-
-  i = t.item_create()
-  unless $Version_1_1_OrLater
-    t.item_hasbutton(i, false)
-  end
-  t.item_style_set(i, 0, s)
-  t.item_text(i, 0, text)
-  t.item_lastchild(parent, i)
-
-  ### 
-
-  styleNum = 5
-  [ 
-    [:horizontal, [:s, :ns, :n]], 
-    [:vertical,   [:e, :we, :w]]
-  ].each{|orient, expandList|
-    expandList.each{|expand|
-      s = t.style_create("s#{styleNum}", :orient=>orient)
-      t.style_elements(s, ['e4', 'e8', 'e2', 'e5', 'e6'])
-      t.style_layout(s, 'e4', :detach=>true, :iexpand=>:es)
-      t.style_layout(s, 'e8', :detach=>true, :expand=>:n, :iexpand=>:e)
-      t.style_layout(s, 'e2', :expand=>expand)
-      t.style_layout(s, 'e5', :expand=>expand)
-      t.style_layout(s, 'e6', :expand=>expand)
-      styleNum += 1
-
-      i = t.item_create()
-      t.item_style_set(i, 0, s)
-      t.item_lastchild(:root, i)
-    }
-  }
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/mailwasher.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/mailwasher.rb
deleted file mode 100644 (file)
index 836e1e8..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-#
-# Demo: MailWasher
-#
-def demoMailWasher(t)
-  init_pics('*checked')
-
-  height = t.font.metrics(:linespace) + 2
-  height = 18 if height < 18
-
-  t.configure(:showroot=>false, :showrootbutton=>false, :showbuttons=>false, 
-              :showlines=>false, :itemheight=>height, :selectmode=>:browse, 
-              :xscrollincrement=>1)
-
-  pad = 4
-
-  if $Version_1_1_OrLater
-    t.column_create(:text=>'Delete', :textpadx=>pad, :tag=>'delete')
-    t.column_create(:text=>'Bounce', :textpadx=>pad, :tag=>'bounce')
-    t.column_create(:text=>'Status', :width=>80, :textpadx=>pad, 
-                    :tag=>'status')
-    t.column_create(:text=>'Size', :width=>40, :textpadx=>pad, 
-                    :justify=>:right, :tag=>'size')
-    t.column_create(:text=>'From', :width=>140, :textpadx=>pad, :tag=>'from')
-    t.column_create(:text=>'Subject', :width=>240, :textpadx=>pad, 
-                    :tag=>'subject')
-    t.column_create(:text=>'Received', :textpadx=>pad, :arrow=>:up, 
-                    :arrowpad=>[4,0], :tag=>'received')
-    t.column_create(:text=>'Attachments', :textpadx=>pad, :tag=>'attachments')
-
-    t.state_define('CHECK')
-
-    t.element_create('imgCheck', :image, :image=>[
-                       @images['checked'], ['CHECK'], @images['unchecked'], []
-                     ])
-
-  else # TreeCtrl 1.0
-    t.column_configure(0, :text=>'Delete', :textpadx=>pad, :tag=>'delete')
-    t.column_configure(1, :text=>'Bounce', :textpadx=>pad, :tag=>'bounce')
-    t.column_configure(2, :text=>'Status', :width=>80, :textpadx=>pad, 
-                       :tag=>'status')
-    t.column_configure(3, :text=>'Size', :width=>40, :textpadx=>pad, 
-                       :justify=>:right, :tag=>'size')
-    t.column_configure(4, :text=>'From', :width=>140, :textpadx=>pad, 
-                       :tag=>'from')
-    t.column_configure(5, :text=>'Subject', :width=>240, :textpadx=>pad, 
-                       :tag=>'subject')
-    t.column_configure(6, :text=>'Received', :textpadx=>pad, :arrow=>:up, 
-                       :arrowpad=>[4,0], :tag=>'received')
-    t.column_configure(7, :text=>'Attachments', :textpadx=>pad, 
-                       :tag=>'attachments')
-
-    t.element_create('imgOff', :image, :image=>@images['unchecked'])
-    t.element_create('imgOn', :image, :image=>@images['checked'])
-  end
-
-  t.element_create('border', :rect, :open=>:nw, :outline=>'gray', 
-                   :outlinewidth=>1, :fill=>[@SystemHighlight, ['selected']])
-  t.element_create('txtAny', :text, :lines=>1, 
-                   :fill=>[@SystemHighlightText, ['selected']])
-  t.element_create('txtNone', :text, :text=>'none', :lines=>1, 
-                   :fill=>[@SystemHighlightText, ['selected']])
-  t.element_create('txtYes', :text, :text=>'yes', :lines=>1, 
-                   :fill=>[@SystemHighlightText, ['selected']])
-  t.element_create('txtNormal', :text, :text=>'Normal', :lines=>1, 
-                   :fill=>[@SystemHighlightText, ['selected'], '#006800', []])
-  t.element_create('txtPossSpam', :text, :text=>'Possible Spam', :lines=>1, 
-                   :fill=>[@SystemHighlightText, ['selected'], '#787800', []])
-  t.element_create('txtProbSpam', :text, :text=>'Probably Spam', :lines=>1, 
-                   :fill=>[@SystemHighlightText, ['selected'], '#FF9000', []])
-  t.element_create('txtBlacklist', :text, :text=>'Blacklisted', :lines=>1, 
-                   :fill=>[@SystemHighlightText, ['selected'], '#FF5800', []])
-
-  if $Version_1_1_OrLater
-    s = t.style_create('styCheck')
-    t.style_elements(s, ['border', 'imgCheck'])
-    t.style_layout(s, 'border', :detach=>true, :iexpand=>:es)
-    t.style_layout(s, 'imgCheck', :expand=>:news)
-  else
-    ['Off', 'On'].each{|name|
-      s = t.style_create('sty' << name)
-      i = 'img' << name
-      t.style_elements(s, ['border', i])
-      t.style_layout(s, 'border', :detach=>true, :iexpand=>:es)
-      t.style_layout(s, i, :expand=>:news)
-    }
-  end
-
-  pad = 4
-
-  %w(Any None Yes Normal PossSpam ProbSpam Blacklist).each{|name|
-    s = t.style_create('sty' << name)
-    e = 'txt' << name
-    t.style_elements(s, ['border', e])
-    t.style_layout(s, 'border', :detach=>true, :iexpand=>:es)
-    t.style_layout(s, e, :padx=>pad, :squeeze=>:x, :expand=>:ns)
-  }
-
-  [
-    ['baldy@spammer.com',  "Your hair is thinning"], 
-    ['flat@spammer.com', "Your breasts are too small"], 
-    ['tiny@spammer.com',  "Your penis is too small"], 
-    ['dumbass@spammer.com', "You are not very smart"], 
-    ['bankrobber@spammer.com', "You need more money"], 
-    ['loser@spammer.com', "You need better friends"], 
-    ['gossip@spammer.com', "Find out what your coworkers think about you"], 
-    ['whoami@spammer.com', "Find out what you think about yourself"],
-    ['downsized@spammer.com', "You need a better job"], 
-    ['poorhouse@spammer.com', "Your mortgage is a joke"], 
-    ['spam4ever@spammer.com', "You need more spam"]
-  ].each{|frm, subj|
-    item = t.item_create
-    status = ['styNormal','styPossSpam','styProbSpam','styBlacklist'][rand(4)]
-    attachments = ['styNone','styYes'][rand(2)]
-
-    if $Version_1_1_OrLater
-      delete = [false, true][rand(2)]
-      bounce = [false, true][rand(2)]
-      t.item_style_set(item, 
-                       0, 'styCheck', 1, 'styCheck', 2, status, 3, 'styAny', 
-                       4, 'styAny', 5, 'styAny', 6, 'styAny', 7, attachments)
-      t.item_state_forcolumn(item, 'delete', 'CHECK') if delete
-      t.item_state_forcolumn(item, 'bounce', 'CHECK') if bounce
-
-    else # TreeCtrl 1.0
-      delete = ['styOn', 'styOff'][rand(2)]
-      bounce = ['styOn', 'styOff'][rand(2)]
-      t.item_style_set(item, 
-                       0, delete, 1, bounce, 2, status, 3, 'styAny', 
-                       4, 'styAny', 5, 'styAny', 6, 'styAny', 7, attachments)
-    end
-
-    bytes = 512 + rand(1024 * 12)
-    size = "#{bytes / 1024 + 1}KB"
-    seconds = Tk::Clock.seconds - rand(100000)
-    received = Tk::Clock.format(seconds, '%d/%m/%y %I:%M %p')
-    t.item_text(item, 3, size, 4, frm, 5, subj, 6, received)
-    t.item_lastchild(:root, item)
-  }
-
-  sortColumn = 6
-  t.notify_bind(t, 'Header-invoke', 
-                proc{|c, w|
-                  if c == sortColumn
-                    if w.column_cget(sortColumn, :arrow) == 'down'
-                      order = :increasing
-                      arrow = :up
-                    else
-                      order = :decreasing
-                      arrow = :down
-                    end
-                  else
-                    if w.column_cget(sortColumn, :arrow) == 'down'
-                      order = :decreasing
-                      arrow = :down
-                    else
-                      order = :increasing
-                      arrow = :up
-                    end
-                    w.column_configure(sortColumn, :arrow=>:none)
-                    sortColumn = c
-                  end
-                  w.column_configure(c, :arrow=>arrow)
-                  case w.column_cget(c, :tag)
-                  when 'bounce', 'delete'
-                    w.item_sort(:root, order, 
-                                { 
-                                  :column=>c, 
-                                  :command=>proc{|item1, item2|
-                                    compareOnOff(w, c, item1, item2)
-                                  }
-                                }, 
-                                { :column=>'subject', :dictionary=>true })
-                  when 'status'
-                    w.item_sort(:root, order, 
-                                { :column=>c, :dictionary=>true })
-                  when 'from'
-                    w.item_sort(:root, order, 
-                                { :column=>c, :dictionary=>true }, 
-                                { :column=>'subject', :dictionary=>true })
-                  when 'subject'
-                    w.item_sort(:root, order, 
-                                { :column=>c, :dictionary=>true })
-                  when 'size'
-                    w.item_sort(:root, order, 
-                                { :column=>c, :dictionary=>true }, 
-                                { :column=>'subject', :dictionary=>true })
-                  when 'received'
-                    w.item_sort(:root, order, 
-                                { :column=>c, :dictionary=>true }, 
-                                { :column=>'subject', :dictionary=>true })
-                  when 'attachments'
-                    w.item_sort(:root, order, 
-                                { :column=>c, :dictionary=>true }, 
-                                { :column=>'subject', :dictionary=>true })
-                  end
-                }, '%C %T')
-
-  mailWasher = TkBindTag.new
-
-  if $Version_1_1_OrLater
-    mailWasher.bind('ButtonPress-1', 
-                    proc{|w, x, y|
-                      id = w.identify(x, y)
-                      if id.empty?
-                      elsif id[0] == 'header'
-                      else
-                        what, item, where, arg1, arg2, arg3 = id
-                        if where == 'column'
-                          tag = w.column_cget(arg1, :tag)
-                          if tag == 'delete' || tag == 'bounce'
-                            w.item_state_forcolumn(item, arg1, '~CHECK')
-                          end
-                        end
-                      end
-                    }, '%W %x %y')
-  else # TreeCtrl 1.0
-    mailWasher.bind('ButtonPress-1', 
-                    proc{|w, x, y|
-                      id = w.identify(x, y)
-                      if id.empty?
-                      elsif id[0] == 'header'
-                      else
-                        what, item, where, arg1, arg2, arg3 = id
-                        if where == 'column'
-                          tag = w.column_cget(arg1, :tag)
-                          if tag == 'delete' || tag == 'bounce'
-                            style = w.item_style_set(item, arg1)
-                            if style == 'styOn'
-                              style = 'styOff'
-                            else
-                              style = 'styOn'
-                            end
-                            w.item_style_set(item, arg1, style)
-                            @display_styles_in_item.call(item)
-                          end
-                        end
-                      end
-                    }, '%W %x %y')
-  end
-
-  t.bindtags = [t, mailWasher, Tk::TreeCtrl, t.winfo_toplevel, TkBindTag::ALL]
-end
-
-if $Version_1_1_OrLater
-  def compareOnOff(w, c, item1, item2)
-    s1 = w.item_state_forcolumn(item1, c)
-    s2 = w.item_state_forcolumn(item2, c)
-    if (s1 == s2)
-      0
-    elsif (s1 == 'CHECK')
-      -1
-    else
-      1
-    end
-  end
-
-else # TreeCtrl 1.0
-  def compareOnOff(w, c, item1, item2)
-    s1 = w.item_style_set(item1, c)
-    s2 = w.item_style_set(item2, c)
-    if (s1 == s2)
-      0
-    elsif (s1 == 'styOff')
-      -1
-    else
-      1
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/outlook-folders.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/outlook-folders.rb
deleted file mode 100644 (file)
index c3af868..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-#
-# Demo: Outlook Express folder list
-#
-def demoOutlookFolders(t)
-  init_pics('outlook-*')
-
-  height = t.font.metrics(:linespace) + 2
-  height = 18 if height < 18
-
-  t.configure(:itemheight=>height, :selectmode=>:browse, :showlines=>true, 
-              :showroot=>true, :showrootbutton=>false, :showbuttons=>true)
-
-  if $HasColumnCreate
-    t.column_create(:text=>'Folders')
-  else
-    t.column_configure(0, :text=>'Folders')
-  end
-
-  t.element_create('e1', :image)
-  t.element_create('e2', :text, :lines=>1, 
-                   :fill=>[@SystemHighlightText, ['selected', 'focus']])
-  t.element_create('e3', :text, :lines=>1, :font=>t.font.dup.weight(:bold), 
-                   :fill=>[@SystemHighlightText, ['selected', 'focus']])
-  t.element_create('e4', :text, :fill=>'blue')
-  t.element_create('e5', :image, :image=>@images['outlook-folder'])
-  t.element_create('e6', :rect, :showfocus=>true, 
-                   :fill=>[
-                     @SystemHighlight, ['selected', 'focus'], 
-                     'gray', ['selected', '!focus']
-                   ])
-
-  # image + text
-  s = t.style_create('s1')
-  t.style_elements(s, ['e6', 'e1', 'e2'])
-  t.style_layout(s, 'e1', :expand=>:ns)
-  t.style_layout(s, 'e2', :padx=>[4,0], :expand=>:ns, :squeeze=>:x)
-  t.style_layout(s, 'e6', :union=>['e2'], :iexpand=>:ns, :ipadx=>2)
-
-  # image + text + text
-  s = t.style_create('s2')
-  t.style_elements(s, ['e6', 'e1', 'e3', 'e4'])
-  t.style_layout(s, 'e1', :expand=>:ns)
-  t.style_layout(s, 'e3', :padx=>4, :expand=>:ns, :squeeze=>:x)
-  t.style_layout(s, 'e4', :expand=>:ns)
-  t.style_layout(s, 'e6', :union=>['e3'], :iexpand=>:ns, :ipadx=>2)
-
-  # folder + text
-  s = t.style_create('s3')
-  t.style_elements(s, ['e6', 'e5', 'e2'])
-  t.style_layout(s, 'e5', :expand=>:ns)
-  t.style_layout(s, 'e2', :padx=>[4,0], :expand=>:ns, :squeeze=>:x)
-  t.style_layout(s, 'e6', :union=>['e2'], :iexpand=>:ns, :ipadx=>2)
-
-  # folder + text + text
-  s = t.style_create('s4')
-  t.style_elements(s, ['e6', 'e5', 'e3', 'e4'])
-  t.style_layout(s, 'e5', :expand=>:ns)
-  t.style_layout(s, 'e3', :padx=>4, :expand=>:ns, :squeeze=>:x)
-  t.style_layout(s, 'e4', :expand=>:ns)
-  t.style_layout(s, 'e6', :union=>['e3'], :iexpand=>:ns, :ipadx=>2)
-
-  t.item_style_set(:root, 0, 's1')
-  t.item_complex(:root, 
-                 [
-                   ['e1', {:image=>@images['outlook-main']}], 
-                   ['e2', {:text=>'Outlook Express'}]
-                 ])
-
-  parentList = [:root, '', '', '', '', '', '']
-  parent = :root
-  [
-     [0, :local, "Local Folders", true, 0], 
-        [1, :inbox, 'Inbox', false, 5], 
-        [1, :outbox, 'Outbox', false, 0], 
-        [1, :sent, "Sent Items", false, 0], 
-        [1, :deleted, "Deleted Items", false, 50], 
-        [1, :draft, 'Drafts', false, 0], 
-        [1, :folder, "Messages to Dad", false, 0], 
-        [1, :folder, "Messages to Sis", false, 0], 
-        [1, :folder, "Messages to Me", false, 0], 
-           [2, :folder, "2001", false, 0], 
-           [2, :folder, "2000", false, 0], 
-           [2, :folder, "1999", false, 0], 
-     [0, :server, "news.gmane.org", true, 0], 
-        [1, :group, "gmane.comp.lang.lua.general", false, 498]
-  ].each{|depth, img, text, button, unread|
-    if $Version_1_1_OrLater
-      item = t.item_create(:button=>button)
-    else
-      item = t.item_create
-      t.item_hasbutton(item, button)
-    end
-    if img == :folder
-      if unread != 0
-        t.item_style_set(item, 0, 's4')
-        t.item_complex(item, 
-                       [['e3', {:text=>text}], ['e4', {:text=>"(#{unread})"}]])
-      else
-        t.item_style_set(item, 0, 's3')
-        t.item_complex(item, [['e2', {:text=>text}]])
-      end
-    else
-      if unread != 0
-        t.item_style_set(item, 0, 's2')
-        t.item_complex(item, 
-                       [
-                         ['e1', {:image=>@images["outlook-#{img}"]}], 
-                         ['e3', {:text=>text}], 
-                         ['e4', {:text=>"(#{unread})"}]
-                       ])
-      else
-        t.item_style_set(item, 0, 's1')
-        t.item_complex(item, 
-                       [
-                         ['e1', {:image=>@images["outlook-#{img}"]}], 
-                         ['e2', {:text=>text}]
-                       ])
-      end
-    end
-    t.item_lastchild(parentList[depth], item)
-    depth += 1
-    parentList[depth] = item
-  }
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/outlook-newgroup.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/outlook-newgroup.rb
deleted file mode 100644 (file)
index d7e7f7e..0000000
+++ /dev/null
@@ -1,448 +0,0 @@
-#
-# Demo: Outlook Express newsgroup messages
-#
-def demoOutlookNewsgroup(t)
-  init_pics('outlook-*')
-
-  height = t.font.metrics(:linespace)
-  height = 18 if height < 18
-  t.configure(:itemheight=>height, :selectmode=>:browse, :showlines=>false, 
-              :showroot=>false, :showrootbutton=>false, :showbuttons=>true)
-
-  if $Version_1_1_OrLater
-    t.column_create(:image=>@images['outlook-clip'], :tag=>'clip')
-    t.column_create(:image=>@images['outlook-arrow'], :tag=>'arrow')
-    t.column_create(:image=>@images['outlook-watch'], :tag=>'watch')
-    t.column_create(:text=>'Subject', :width=>250, :tag=>'subject')
-    t.column_create(:text=>'From', :width=>150, :tag=>'from')
-    t.column_create(:text=>'Sent', :width=>150, :tag=>'sent')
-    t.column_create(:text=>'Size', :width=>60, :justify=>:right, :tag=>'size')
-  else # TreeCtrl 1.0
-    t.column_configure(0, :image=>@images['outlook-clip'], :tag=>'clip')
-    t.column_configure(1, :image=>@images['outlook-arrow'], :tag=>'arrow')
-    t.column_configure(2, :image=>@images['outlook-watch'], :tag=>'watch')
-    t.column_configure(3, :text=>'Subject', :width=>250, :tag=>'subject')
-    t.column_configure(4, :text=>'From', :width=>150, :tag=>'from')
-    t.column_configure(5, :text=>'Sent', :width=>150, :tag=>'sent')
-    t.column_configure(6, :text=>'Size', :width=>60, :justify=>:right, 
-                       :tag=>'size')
-  end
-
-  # Would be nice if I could specify a column -tag too
-  t.treecolumn = 3
-
-  # State for a read message
-  t.state_define('read')
-
-  # State for a message with unread descendants
-  t.state_define('unread')
-
-  t.element_create('elemImg', :image, 
-                   :image=>[
-                     @sel_images['outlook-read-2'], 
-                          ['selected', 'read', 'unread', '!open'], 
-                     @images['outlook-read-2'], ['read', 'unread', '!open'],
-                     @sel_images['outlook-read'], ['selected', 'read'], 
-                     @images['outlook-read'], ['read'], 
-                     @sel_images['outlook-unread'], ['selected'], 
-                     @images['outlook-unread'], []
-                   ])
-  t.element_create('elemTxt', :text, :lines=>1, 
-                   :fill=>[@SystemHighlightText, ['selected', 'focus']], 
-                   :font=>[
-                     t.font.dup.weight(:bold), ['read', 'unread', '!open'], 
-                     t.font.dup.weight(:bold), ['!read']
-                   ])
-  t.element_create('sel.e', :rect, :open=>:e, :showfocus=>true, 
-                   :fill=>[
-                     @SystemHighlight, ['selected', 'focus'], 
-                     'gray',  ['selected', '!focus']
-                   ])
-  t.element_create('sel.w', :rect, :open=>:w, :showfocus=>true, 
-                   :fill=>[
-                     @SystemHighlight, ['selected', 'focus'], 
-                     'gray',  ['selected', '!focus']
-                   ])
-  t.element_create('sel.we', :rect, :open=>:we, :showfocus=>true, 
-                   :fill=>[
-                     @SystemHighlight, ['selected', 'focus'], 
-                     'gray',  ['selected', '!focus']
-                   ])
-
-  # Image + text
-  s = t.style_create('s1')
-  t.style_elements(s, ['sel.e', 'elemImg', 'elemTxt'])
-  t.style_layout(s, 'elemImg', :expand=>:ns)
-  t.style_layout(s, 'elemTxt', :padx=>[2,6], :squeeze=>:x, :expand=>:ns)
-  t.style_layout(s, 'sel.e', :union=>['elemTxt'], 
-                 :iexpand=>:nes, :ipadx=>[2,0])
-
-  # Text
-  s = t.style_create('s2.we')
-  t.style_elements(s, ['sel.we', 'elemTxt'])
-  t.style_layout(s, 'elemTxt', :padx=>6, :squeeze=>:x, :expand=>:ns)
-  t.style_layout(s, 'sel.we', :detach=>true, :iexpand=>:es)
-
-  # Text
-  s = t.style_create('s2.w')
-  t.style_elements(s, ['sel.w', 'elemTxt'])
-  t.style_layout(s, 'elemTxt', :padx=>6, :squeeze=>:x, :expand=>:ns)
-  t.style_layout(s, 'sel.w', :detach=>true, :iexpand=>:es)
-
-  # Set default item style
-  if $Version_1_1_OrLater
-    t.defaultstyle = ['', '', '', 's1', 's2.we', 's2.we', 's2.w']
-  end
-
-  msgCnt = 100
-  thread = 0
-
-  @Message = Hash.new{|k, v| k[v] = Hash.new}
-  @Message[:count][0] = 0
-
-  items = [t.index(:root)]
-
-  (1...(msgCnt)).each{|i|
-    item_i = t.item_create
-    item_j = nil
-    j = nil
-    loop {
-      j = rand(i)
-      item_j = items[j]
-      break if j == 0
-      next if t.depth(item_j) == 5
-      next if @Message[:count][@Message[:thread][item_j]] == 15
-      break
-    }
-    t.item_lastchild(item_j, item_i)
-
-    @Message[:read][item_i] = (rand(2) == 0)
-    if j == 0
-      thread += 1
-      @Message[:thread][item_i] = thread
-      @Message[:seconds][item_i] = (Tk::Clock.seconds - rand(500000))
-      @Message[:seconds2][item_i] = @Message[:seconds][item_i]
-      @Message[:count][thread] = 1
-    else
-      @Message[:thread][item_i] = @Message[:thread][item_j]
-      @Message[:seconds][item_i] = (@Message[:seconds2][item_j] + rand(10000))
-      @Message[:seconds2][item_i] = @Message[:seconds][item_i]
-      @Message[:seconds2][item_j] = @Message[:seconds][item_i]
-      @Message[:count][@Message[:thread][item_j]] += 1
-    end
-    items << item_i
-  }
-
-  (1...(msgCnt)).each{|i|
-    item_i = items[i]
-    subject = "This is thread number #{@Message[:thread][item_i]}"
-    from = 'somebody@somewhere.net'
-    sent = Tk::Clock.format(@Message[:seconds][item_i], "%d/%m/%y %I:%M %p")
-    size = "#{1 + rand(10)}KB"
-
-    # This message has been read
-    t.item_state_set(item_i, 'read') if @Message[:read][item_i]
-
-    # This message has unread descendants
-    t.item_state_set(item_i, 'unread')  if anyUnreadDescendants(t, item_i)
-
-    if t.item_numchildren(item_i) > 0
-      if $Version_1_1_OrLater
-        t.item_configure(item_i, :button=>true)
-      else # TreeCtrl 1.0
-        t.item_hasbutton(item_i, true)
-      end
-
-      # Collapse some messages
-      if $Version_1_1_OrLater
-        t.item_collapse(item_i) if rand(2) == 0
-      else # TreeCtrl 1.0
-        t.collapse(item_i) if rand(2) == 0
-      end
-    end
-
-    unless $Version_1_1_OrLater
-      t.item_style_set(item_i, 3, 's1', 4, 's2.we', 5, 's2.we', 6, 's2.w')
-    end
-    t.item_text(item_i, 3, subject, 4, from, 5, sent, 6, size)
-  }
-
-  # Do something when the selection changes
-  t.notify_bind(t, 'Selection', 
-                proc{|w|
-                  if w.selection_count == 1
-                    # One item is selected
-                    if @Message[:afterId][:id]
-                      Tk.after_cancel(@Message[:afterId][:id]) 
-                    end
-                    @Message[:afterId][:item] = w.selection_get[0]
-                    @Message[:afterId][:id] = Tk.after(500, proc{
-                                                         messageReadDelayed(w)
-                                                       })
-                  end
-                }, '%T')
-end
-
-def messageReadDelayed(t)
-  @Message[:afterId].delete(:id)
-  i = @Message[:afterId][:item]
-  return unless t.selection_includes(i)
-
-  # This message is not read
-  unless @Message[:read][i]
-    # Read the message
-    t.item_state_set(i, 'read')
-    @Message[:read][i] = true
-
-    # Check ancestors (except root)
-    t.item_ancestors(i)[0..-2].each{|i2|
-      # This ancestor has no more unread descendants
-      t.item_state_set(i2, '!unread') unless anyUnreadDescendants(t, i2)
-    }
-  end
-end
-
-# Alternate implementation which does not rely on run-time states
-def demoOutlookNewsgroup2(t)
-  init_pics('outlook-*')
-
-  height = t.font.metrics(:linespace)
-  height = 18 if height < 18
-  t.configure(:itemheight=>height, :selectmode=>:browse, :showlines=>false, 
-              :showroot=>false, :showrootbutton=>false, :showbuttons=>true)
-
-  if $Version_1_1_OrLater
-    t.column_create(:image=>@images['outlook-clip'], :tag=>'clip')
-    t.column_create(:image=>@images['outlook-arrow'], :tag=>'arrow')
-    t.column_create(:image=>@images['outlook-watch'], :tag=>'watch')
-    t.column_create(:text=>'Subject', :width=>250, :tag=>'subject')
-    t.column_create(:text=>'From', :width=>150, :tag=>'from')
-    t.column_create(:text=>'Sent', :width=>150, :tag=>'sent')
-    t.column_create(:text=>'Size', :width=>60, :justify=>:right, :tag=>'size')
-  else # TreeCtrl 1.0
-    t.column_configure(0, :image=>@images['outlook-clip'], :tag=>'clip')
-    t.column_configure(1, :image=>@images['outlook-arrow'], :tag=>'arrow')
-    t.column_configure(2, :image=>@images['outlook-watch'], :tag=>'watch')
-    t.column_configure(3, :text=>'Subject', :width=>250, :tag=>'subject')
-    t.column_configure(4, :text=>'From', :width=>150, :tag=>'from')
-    t.column_configure(5, :text=>'Sent', :width=>150, :tag=>'sent')
-    t.column_configure(6, :text=>'Size', :width=>60, :justify=>:right, 
-                       :tag=>'size')
-  end
-
-  t.treecolumn = 3
-
-  t.element_create('image.unread', :image, :image=>@images['outlook-unread'])
-  t.element_create('image.read', :image, :image=>@images['outlook-read'])
-  t.element_create('image.read2', :image, :image=>@images['outlook-read-2'])
-  t.element_create('text.read', :text, :lines=>1, 
-                   :fill=>[@SystemHighlightText, ['selected', 'focus']])
-  t.element_create('text.unread', :text, :lines=>1, 
-                   :fill=>[@SystemHighlightText, ['selected', 'focus']], 
-                   :font=>t.font.dup.weight(:bold))
-  t.element_create('sel.e', :rect, :open=>:e, :showfocus=>true, 
-                   :fill=>[
-                     @SystemHighlight, ['selected', 'focus'], 
-                     'gray',  ['selected', '!focus']
-                   ])
-  t.element_create('sel.w', :rect, :open=>:w, :showfocus=>true, 
-                   :fill=>[
-                     @SystemHighlight, ['selected', 'focus'], 
-                     'gray',  ['selected', '!focus']
-                   ])
-  t.element_create('sel.we', :rect, :open=>:we, :showfocus=>true, 
-                   :fill=>[
-                     @SystemHighlight, ['selected', 'focus'], 
-                     'gray',  ['selected', '!focus']
-                   ])
-
-  # Image + text
-  s = t.style_create('unread')
-  t.style_elements(s, ['sel.e', 'image.unread', 'text.unread'])
-  t.style_layout(s, 'image.unread', :expand=>:ns)
-  t.style_layout(s, 'text.unread', :padx=>[2,6], :squeeze=>:x, :expand=>:ns)
-  t.style_layout(s, 'sel.e', :union=>['text.unread'], 
-                 :iexpand=>:nes, :ipadx=>[2,0])
-
-  # Image + text
-  s = t.style_create('read')
-  t.style_elements(s, ['sel.e', 'image.read', 'text.read'])
-  t.style_layout(s, 'image.read', :expand=>:ns)
-  t.style_layout(s, 'text.read', :padx=>[2,6], :squeeze=>:x, :expand=>:ns)
-  t.style_layout(s, 'sel.e', :union=>['text.read'], 
-                 :iexpand=>:nes, :ipadx=>[2,0])
-
-  # Image + text
-  s = t.style_create('read2')
-  t.style_elements(s, ['sel.e', 'image.read2', 'text.unread'])
-  t.style_layout(s, 'image.read2', :expand=>:ns)
-  t.style_layout(s, 'text.unread', :padx=>[2,6], :squeeze=>:x, :expand=>:ns)
-  t.style_layout(s, 'sel.e', :union=>['text.unread'], 
-                 :iexpand=>:nes, :ipadx=>[2,0])
-
-  # Text
-  s = t.style_create('unread.we')
-  t.style_elements(s, ['sel.we', 'text.unread'])
-  t.style_layout(s, 'text.unread', :padx=>6, :squeeze=>:x, :expand=>:ns)
-  t.style_layout(s, 'sel.we', :detach=>true, :iexpand=>:es)
-
-  # Text
-  s = t.style_create('read.we')
-  t.style_elements(s, ['sel.we', 'text.read'])
-  t.style_layout(s, 'text.read', :padx=>6, :squeeze=>:x, :expand=>:ns)
-  t.style_layout(s, 'sel.we', :detach=>true, :iexpand=>:es)
-
-  # Text
-  s = t.style_create('unread.w')
-  t.style_elements(s, ['sel.w', 'text.unread'])
-  t.style_layout(s, 'text.unread', :padx=>6, :squeeze=>:x, :expand=>:ns)
-  t.style_layout(s, 'sel.w', :detach=>true, :iexpand=>:es)
-
-  # Text
-  s = t.style_create('read.w')
-  t.style_elements(s, ['sel.w', 'text.read'])
-  t.style_layout(s, 'text.read', :padx=>6, :squeeze=>:x, :expand=>:ns)
-  t.style_layout(s, 'sel.w', :detach=>true, :iexpand=>:es)
-
-  msgCnt = 100
-  thread = 0
-
-  @Message = Hash.new{|k, v| k[v] = Hash.new}
-  @Message[:count][0] = 0
-
-  (1...(msgCnt)).each{|i|
-    t.item_create
-    j = nil
-    loop {
-      j = rand(i)
-      break if j == 0
-      next if t.depth(j) == 5
-      next if @Message[:count][@Message[:thread][j]] == 15
-      break
-    }
-    t.item_lastchild(j, i)
-
-    @Message[:read][i] = (rand(2) == 0)
-    if j == 0
-      thread += 1
-      @Message[:thread][i] = thread
-      @Message[:seconds][i] = (Tk::Clock.seconds - rand(500000))
-      @Message[:seconds2][i] = @Message[:seconds][i]
-      @Message[:count][thread] = 1
-    else
-      @Message[:thread][i] = @Message[:thread][j]
-      @Message[:seconds][i] = (@Message[:seconds2][j] + rand(10000))
-      @Message[:seconds2][i] = @Message[:seconds][i]
-      @Message[:seconds2][j] = @Message[:seconds][i]
-      @Message[:count][@Message[:thread][j]] += 1
-    end
-  }
-
-  (1...(msgCnt)).each{|i|
-    subject = "This is thread number #{@Message[:thread][i]}"
-    from = 'somebody@somewhere.net'
-    sent = Tk::Clock.format(@Message[:seconds][i], "%d/%m/%y %I:%M %p")
-    size = "#{1 + rand(10)}KB"
-    if @Message[:read][i]
-      style = 'read'
-      style2 = 'read2'
-    else
-      style = 'unread'
-      style2 = 'unread2'
-    end
-    t.item_style_set(i, 3, style, 4, "#{style2}.we", 5, "#{style2}.we", 
-                     6, "#{style2}.w")
-    t.item_text(i, 3, subject, 4, from, 5, sent, 6, size)
-    if t.item_numchildren(i) > 0
-      t.item_configure(item_i, :button=>true)
-    end
-  }
-
-  # Do something when the selection changes
-  t.notify_bind(t, 'Selection', 
-                proc{|w|
-                  if w.selection_count == 1
-                    i = t.selection_get[0]
-                    unless @Message[:read][i]
-                      if t.item_isopen(i) || !anyUnreadDescendants(t, i)
-                        # unread -> read
-                        t.item_style_map(i, 'subject', 'read', 
-                                         ['text.unread', 'text.read'])
-                        t.item_style_map(i, 'from', 'read.we', 
-                                         ['text.unread', 'text.read'])
-                        t.item_style_map(i, 'sent', 'read.we', 
-                                         ['text.unread', 'text.read'])
-                        t.item_style_map(i, 'size', 'read.w', 
-                                         ['text.unread', 'text.read'])
-                      else
-                        # unread -> read2
-                        t.item_style_map(i, 'subject', 'read2', 
-                                         ['text.unread', 'text.unread'])
-                      end
-
-                      @Message[:read][i] = true
-                      @display_styles_in_item.call(i)
-                    end
-                  end
-                }, '%T')
-
-  t.notify_bind(t, 'Expand-after', 
-                proc{|w, i|
-                  if @Messge[:read][i] && anyUnreadDescendants(t, i)
-                    # read2 -> read
-                    t.item_style_map(i, 'subject', 'read', 
-                                     ['text.unread', 'text.read'])
-                    # unread -> read
-                    t.item_style_map(i, 'from', 'read.we', 
-                                     ['text.unread', 'text.read'])
-                    t.item_style_map(i, 'sent', 'read.we', 
-                                     ['text.unread', 'text.read'])
-                    t.item_style_map(i, 'size', 'read.w', 
-                                     ['text.unread', 'text.read'])
-                  end
-                }, '%T %I')
-
-  t.notify_bind(t, 'Collapse-after', 
-                proc{|w, i|
-                  if @Messge[:read][i] && anyUnreadDescendants(t, i)
-                    # read -> read2
-                    t.item_style_map(i, 'subject', 'read2', 
-                                     ['text.read', 'text.unread'])
-                    # read -> unread
-                    t.item_style_map(i, 'from', 'unread.we', 
-                                     ['text.read', 'text.unread'])
-                    t.item_style_map(i, 'sent', 'unread.we', 
-                                     ['text.read', 'text.unread'])
-                    t.item_style_map(i, 'size', 'unread.w', 
-                                     ['text.read', 'text.unread'])
-                  end
-                }, '%T %I')
-
-  (1...(msgCnt)).each{|i|
-    if rand(2) == 0
-      if t.item_numchildren(i) > 0
-        if $Version_1_1_OrLater
-          t.item_collapse(i)
-        else # TreeCtrl 1.0
-          t.collapse(i)
-        end
-      end
-    end
-  }
-end
-
-def anyUnreadDescendants(t, i)
-  itemList = []
-  item = t.item_firstchild(i)
-  itemList.push(item) if item != ''
-
-  while item = itemList.pop
-    return true unless @Message[:read][item]
-
-    item2 = t.item_nextsibling(item)
-    itemList.push(item2) if item2 != ''
-    item2 = t.item_firstchild(item)
-    itemList.push(item2) if item2 != ''
-  end
-  false
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-dll.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-dll.gif
deleted file mode 100644 (file)
index 09170c0..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-dll.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-exe.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-exe.gif
deleted file mode 100644 (file)
index e19aac1..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-exe.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-file.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-file.gif
deleted file mode 100644 (file)
index 6c75231..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-file.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-folder.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-folder.gif
deleted file mode 100644 (file)
index 186c974..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-folder.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-txt.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-txt.gif
deleted file mode 100644 (file)
index a934925..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/big-txt.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/checked.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/checked.gif
deleted file mode 100644 (file)
index 3b9b176..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/checked.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/file.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/file.gif
deleted file mode 100644 (file)
index a64c2a0..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/file.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/folder-closed.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/folder-closed.gif
deleted file mode 100644 (file)
index 0a06437..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/folder-closed.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/folder-open.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/folder-open.gif
deleted file mode 100644 (file)
index 3fac27f..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/folder-open.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/help-book-closed.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/help-book-closed.gif
deleted file mode 100644 (file)
index 0a0497b..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/help-book-closed.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/help-book-open.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/help-book-open.gif
deleted file mode 100644 (file)
index 40656c5..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/help-book-open.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/help-page.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/help-page.gif
deleted file mode 100644 (file)
index e1ce1d7..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/help-page.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-01.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-01.gif
deleted file mode 100644 (file)
index 5fd9215..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-01.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-02.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-02.gif
deleted file mode 100644 (file)
index 3d2d1c1..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-02.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-03.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-03.gif
deleted file mode 100644 (file)
index 9fccf12..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-03.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-04.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-04.gif
deleted file mode 100644 (file)
index eff851c..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-04.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-05.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-05.gif
deleted file mode 100644 (file)
index ad00c82..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-05.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-06.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-06.gif
deleted file mode 100644 (file)
index 238bf16..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-06.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-07.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-07.gif
deleted file mode 100644 (file)
index a9287e1..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/imovie-07.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-check-off.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-check-off.gif
deleted file mode 100644 (file)
index e64866a..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-check-off.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-check-on.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-check-on.gif
deleted file mode 100644 (file)
index cf652be..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-check-on.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-print.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-print.gif
deleted file mode 100644 (file)
index 7ac25b1..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-print.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-radio-off.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-radio-off.gif
deleted file mode 100644 (file)
index 90ef629..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-radio-off.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-radio-on.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-radio-on.gif
deleted file mode 100644 (file)
index 9de742c..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-radio-on.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-search.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-search.gif
deleted file mode 100644 (file)
index 1f9a047..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-search.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-security.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-security.gif
deleted file mode 100644 (file)
index 86d3943..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/internet-security.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/mac-collapse.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/mac-collapse.gif
deleted file mode 100644 (file)
index 81302c8..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/mac-collapse.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/mac-expand.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/mac-expand.gif
deleted file mode 100644 (file)
index 0a2cd80..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/mac-expand.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-arrow.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-arrow.gif
deleted file mode 100644 (file)
index b1c2afd..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-arrow.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-clip.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-clip.gif
deleted file mode 100644 (file)
index 8578132..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-clip.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-deleted.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-deleted.gif
deleted file mode 100644 (file)
index 7cc8369..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-deleted.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-draft.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-draft.gif
deleted file mode 100644 (file)
index f195850..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-draft.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-folder.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-folder.gif
deleted file mode 100644 (file)
index b3f7335..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-folder.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-group.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-group.gif
deleted file mode 100644 (file)
index 29ad9b4..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-group.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-inbox.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-inbox.gif
deleted file mode 100644 (file)
index f41d804..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-inbox.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-local.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-local.gif
deleted file mode 100644 (file)
index 0c74970..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-local.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-main.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-main.gif
deleted file mode 100644 (file)
index 92325fa..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-main.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-outbox.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-outbox.gif
deleted file mode 100644 (file)
index c7e8052..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-outbox.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-read-2.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-read-2.gif
deleted file mode 100644 (file)
index 2f15a3a..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-read-2.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-read.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-read.gif
deleted file mode 100644 (file)
index a6f9562..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-read.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-sent.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-sent.gif
deleted file mode 100644 (file)
index 963b56c..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-sent.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-server.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-server.gif
deleted file mode 100644 (file)
index c950845..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-server.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-unread.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-unread.gif
deleted file mode 100644 (file)
index 3df4b99..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-unread.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-watch.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-watch.gif
deleted file mode 100644 (file)
index 87ec861..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/outlook-watch.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/sky.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/sky.gif
deleted file mode 100644 (file)
index b7fbf14..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/sky.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-dll.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-dll.gif
deleted file mode 100644 (file)
index d8875ec..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-dll.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-exe.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-exe.gif
deleted file mode 100644 (file)
index 69d30be..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-exe.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-file.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-file.gif
deleted file mode 100644 (file)
index f340662..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-file.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-folder.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-folder.gif
deleted file mode 100644 (file)
index ad1b24d..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-folder.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-txt.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-txt.gif
deleted file mode 100644 (file)
index cdc7cbf..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/small-txt.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/unchecked.gif b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/unchecked.gif
deleted file mode 100644 (file)
index 833e482..0000000
Binary files a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/pics/unchecked.gif and /dev/null differ
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/random.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/random.rb
deleted file mode 100644 (file)
index 2c9e614..0000000
+++ /dev/null
@@ -1,508 +0,0 @@
-# 
-def random_N
-  @RandomN[0] || 500
-end
-
-#
-# Demo: random N items
-#
-def demoRandom(t)
-  init_pics('folder-*', 'small-*')
-
-  height = t.font.metrics(:linespace)
-  height = 18 if height < 18
-  t.configure(:itemheight=>height, :selectmode=>:extended, 
-              :showroot=>true, :showrootbutton=>true, :showbuttons=>true, 
-              :showlines=>true, :scrollmargin=>16, 
-              :xscrolldelay=>[500, 50], :yscrolldelay=>[500, 50])
-
-  if $Version_1_1_OrLater
-    t.column_create(:expand=>true, :text=>'Item', 
-                    :itembackground=>['#e0e8f0', []], :tag=>'item')
-    t.column_create(:text=>'Parent', :justify=>:center, 
-                    :itembackground=>['gray90', []], :tag=>'parent')
-    t.column_create(:text=>'Depth', :justify=>:center, 
-                    :itembackground=>['linen', []], :tag=>'depth')
-  else # TreeCtrl 1.0
-    t.column_configure(0, :expand=>true, :text=>'Item', 
-                       :itembackground=>['#e0e8f0', []], :tag=>'item')
-    t.column_configure(1, :text=>'Parent', :justify=>:center, 
-                       :itembackground=>['gray90', []], :tag=>'parent')
-    t.column_configure(2, :text=>'Depth', :justify=>:center, 
-                       :itembackground=>['linen', []], :tag=>'depth')
-  end
-
-  t.element_create('e1', :image, :image=>[
-                     @images['folder-open'], ['open'], 
-                     @images['folder-closed'], []
-                   ])
-  t.element_create('e2', :image, :image=>@images['small-file'])
-  t.element_create('e3', :text, 
-                   :fill=>[@SystemHighlightText, ['selected', 'focus']])
-  t.element_create('e4', :text, :fill=>'blue')
-  t.element_create('e6', :text)
-  t.element_create('e5', :rect, :showfocus=>true, 
-                   :fill=>[
-                     @SystemHighlight, ['selected', 'focus'], 
-                     'gray', ['selected', '!focus']
-                   ])
-
-  s = t.style_create('s1')
-  t.style_elements(s, ['e5', 'e1', 'e3', 'e4'])
-  t.style_layout(s, 'e1', :padx=>[0,4], :expand=>:ns)
-  t.style_layout(s, 'e3', :padx=>[0,4], :expand=>:ns)
-  t.style_layout(s, 'e4', :padx=>[0,6], :expand=>:ns)
-  t.style_layout(s, 'e5', :union=>['e3'], :iexpand=>:ns, :ipadx=>2)
-
-  s = t.style_create('s2')
-  t.style_elements(s, ['e5', 'e2', 'e3'])
-  t.style_layout(s, 'e2', :padx=>[0,4], :expand=>:ns)
-  t.style_layout(s, 'e3', :padx=>[0,4], :expand=>:ns)
-  t.style_layout(s, 'e5', :union=>['e3'], :iexpand=>:ns, :ipadx=>2)
-
-  s = t.style_create('s3')
-  t.style_elements(s, ['e6'])
-  t.style_layout(s, 'e6', :padx=>6, :expand=>:ns)
-
-  @Priv[:sensitive, t] = [
-    [:item, 's1',  'e5', 'e1', 'e3'], 
-    [:item, 's2',  'e5', 'e2', 'e3']
-  ]
-  @Priv[:dragimage, t] = [
-    [:item, 's1',  'e1', 'e3'], 
-    [:item, 's2',  'e2', 'e3']
-  ]
-
-  clicks = Tk::Clock.clicks
-  items = [ t.index(:root) ]
-  (1...(random_N())).each{|i|
-    item_i = t.item_create
-    item_j = nil
-    loop {
-      j = rand(i)
-      item_j = items[j]
-      break if t.depth(item_j) < 5
-    }
-    if $Version_1_1_OrLater
-      t.item_collapse(item_i) if rand(2) == 0
-    else # TreeCtrl 1.0
-      t.collapse(item_i) if rand(2) == 0
-    end
-    if rand(2) == 0
-      t.item_lastchild(item_j, item_i)
-    else
-      t.item_firstchild(item_j, item_i)
-    end
-    items << item_i
-  }
-  puts "created #{random_N() - 1} items in #{Tk::Clock.clicks - clicks} clicks"
-
-  clicks = Tk::Clock.clicks
-  (0...(random_N())).each{|i|
-    item_i = items[i]
-    numChildren = t.item_numchildren(item_i)
-    if numChildren > 0
-      if $Version_1_1_OrLater
-        t.item_configure(item_i, :button=>true)
-      else # TreeCtrl 1.0
-        t.item_hasbutton(item_i, true)
-      end
-      t.item_style_set(item_i, 0, 's1', 1, 's3', 2, 's3')
-      t.item_complex(item_i, 
-                     [ ['e3', {:text=>"Item #{i}"}], 
-                       ['e4', {:text=>"(#{numChildren})"}] ], 
-                     [ ['e6', {:text=>"#{t.item_parent(item_i)}"}] ], 
-                     [ ['e6', {:text=>"#{t.depth(item_i)}"}] ])
-    else
-      t.item_style_set(item_i, 1, 's3', 2, 's3', 0, 's2')
-      t.item_complex(item_i, 
-                     [ ['e3', {:text=>"Item #{i}"}] ], 
-                     [ ['e6', {:text=>"#{t.item_parent(item_i)}"}] ], 
-                     [ ['e6', {:text=>"#{t.depth(item_i)}"}] ])
-    end
-  }
-  puts "configured #{random_N()} items in #{Tk::Clock.clicks - clicks} clicks"
-
-  treeCtrlRandom = TkBindTag.new
-
-  treeCtrlRandom.bind('Double-ButtonPress-1', 
-                      proc{|w, x, y|
-                        Tk::TreeCtrl::BindCallback.doubleButton1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-
-  treeCtrlRandom.bind('Control-ButtonPress-1', 
-                      proc{|w, x, y|
-                        @Priv['selectMode'] = :toggle
-                        randomButton1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-
-  treeCtrlRandom.bind('Shift-ButtonPress-1', 
-                      proc{|w, x, y|
-                        @Priv['selectMode'] = :add
-                        randomButton1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-
-  treeCtrlRandom.bind('ButtonPress-1', 
-                      proc{|w, x, y|
-                        @Priv['selectMode'] = :set
-                        randomButton1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-
-  treeCtrlRandom.bind('Button1-Motion', 
-                      proc{|w, x, y|
-                        randomMotion1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-
-  treeCtrlRandom.bind('Button1-Leave', 
-                      proc{|w, x, y|
-                        randomLeave1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-
-  treeCtrlRandom.bind('ButtonRelease-1', 
-                      proc{|w, x, y|
-                        randomRelease1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-
-  t.bindtags = [ t, treeCtrlRandom, Tk::TreeCtrl, t.winfo_toplevel, :all ]
-end
-
-def randomButton1(t, x, y)
-  t.set_focus
-  id = t.identify(x, y)
-  puts id.inspect
-  @Priv['buttonMode'] = ''
-
-  # Click outside any item
-  if id.empty?
-    t.selection_clear
-
-  # Click in header
-  elsif id[0] == 'header'
-    Tk::TreeCtrl::BindCallback.buttonPress1(t, x, y)
-
-  # Click in item
-  else
-    where, item, arg1, arg2, arg3, arg4 = id
-    case arg1
-    when 'button'
-      if $Version_1_1_OrLater
-        t.item_toggle(item)
-      else # TreeCtrl 1.0
-        t.toggle(item)
-      end
-
-    when 'line'
-      if $Version_1_1_OrLater
-        t.item_toggle(arg2)
-      else # TreeCtrl 1.0
-        t.toggle(arg2)
-      end
-
-    when 'column'
-      ok = false
-      # Clicked an element
-      if id.length == 6
-        column = id[3]
-        e = id[5]
-        @Priv.list_element(:sensitive, t).each{|lst|
-          c, s, *eList = TkComm.simplelist(lst)
-          next if column != t.column_index(c)
-          next if t.item_style_set(item, c) != s
-          next if eList.find{|le| le == e} == nil
-          ok = true
-          break
-        }
-      end
-      unless ok
-        t.selection_clear
-        return
-      end
-
-      @Priv[:drag, :motion] = 0
-      @Priv[:drag, :x] = t.canvasx(x)
-      @Priv[:drag, :y] = t.canvasy(y)
-      @Priv[:drop] = ''
-
-      if @Priv['selectMode'] == 'add'
-          Tk::TreeCtrl::BindCallback.beginExtend(t, item)
-      elsif @Priv['selectMode'] == 'toggle'
-          Tk::TreeCtrl::BindCallback.beginToggle(t, item)
-      elsif ! t.selection_includes(item)
-          Tk::TreeCtrl::BindCallback.beginSelect(t, item)
-      end
-      t.activate(item)
-
-      if t.selection_includes(item)
-        @Priv['buttonMode'] = 'drag'
-      end
-    end
-  end
-end
-
-def randomMotion1(t, x, y)
-  case @Priv['buttonMode']
-  when 'resize', 'header'
-    Tk::TreeCtrl::BindCallback.motion1(t, x, y)
-  when 'drag'
-    randomAutoScanCheck(t, x, y)
-    randomMotion(t, x, y)
-  end
-end
-
-def randomMotion(t, x, y)
-  case @Priv['buttonMode']
-  when 'resize', 'header'
-    Tk::TreeCtrl::BindCallback.motion1(t, x, y)
-
-  when 'drag'
-    # Detect initial mouse movement
-    unless @Priv.bool_element(:drag, :motion)
-      @Priv[:selection] = t.selection_get
-      @Priv[:drop] = ''
-      t.dragimage_clear
-      # For each selected item, add 2nd and 3rd elements of
-      # column "item" to the dragimage
-      @Priv.list_element(:selection).each{|i|
-        @Priv.list_element(:dragimage,t).each{|lst|
-          c, s, *eList = TkComm.simplelist(lst)
-          if t.item_style_set(i, c) == s
-            t.dragimage_add(i, c, *eList)
-          end
-        }
-      }
-      @Priv[:drag,:motion] = true
-    end
-
-    # Find the item under the cursor
-    cursor = 'X_cursor'
-    drop = ''
-    id = t.identify(x, y)
-    ok = false
-    if !id.empty? && id[0] == 'item' && id.length == 6
-      item = id[1]
-      column = id[3]
-      e = id[5]
-      @Priv.list_element(:sensitive,t).each{|lst|
-        c, s, *eList = TkComm.simplelist(lst)
-        next if column != t.column_index(c)
-        next if t.item_style_set(item, c) != s
-        next unless eList.find{|val| val.to_s == e.to_s}
-        ok = true
-        break
-      }
-      ok = true if @Priv.list_element(:sensitive,t).find{|val| TkComm.simplelist(val).index(e)}
-    end
-
-    if ok
-      # If the item is not in the pre-drag selection
-      # (i.e. not being dragged) see if we can drop on it
-      unless @Priv.list_element(:selection).find{|val| val.to_s == item.to_s}
-        drop = item
-        # We can drop if dragged item isn't an ancestor
-        @Priv.list_element(:selection).each{|item2|
-          if t.item_isancestor(item2, item)
-            drop = ''
-            break
-          end
-        }
-        if drop != ''
-          x1, y1, x2, y2 = t.item_bbox(drop)
-          if y < y1 + 3
-            cursor = 'top_side'
-            @Priv[:drop,:pos] = 'prevsibling'
-          elsif y >= y2 - 3
-            cursor = 'bottom_side'
-            @Priv[:drop,:pos] = 'nextsibling'
-          else
-            cursor = ''
-            @Priv[:drop,:pos] = 'lastchild'
-          end
-        end
-      end
-    end
-
-    t[:cursor] = cursor if t[:cursor] != cursor
-
-    # Select the item under the cursor (if any) and deselect
-    # the previous drop-item (if any)
-    t.selection_modify(drop, @Priv[:drop])
-    @Priv[:drop] = drop
-
-    # Show the dragimage in its new position
-    x = t.canvasx(x) - @Priv.numeric_element(:drag,:x)
-    y = t.canvasx(y) - @Priv.numeric_element(:drag,:y)
-    t.dragimage_offset(x, y)
-    t.dragimage_configure(:visible=>true)
-  end
-end
-
-def randomLeave1(t, x, y)
-  # This is called when I do ButtonPress-1 on Unix for some reason,
-  # and buttonMode is undefined.
-  return unless @Priv.exist?('buttonMode')
-  case @Priv['buttonMode']
-  when 'header'
-    Tk::TreeCtrl::BindCallback.leave1(t, x, y)
-  end
-end
-
-def randomRelease1(t, x, y)
-  case @Priv['buttonMode']
-  when 'resize', 'header'
-    Tk::TreeCtrl::BindCallback.release1(t, x, y)
-  when 'drag'
-    Tk::TreeCtrl::BindCallback.autoScanCancel(t)
-    t.dragimage_configure(:visible=>false)
-    t.selection_modify('', @Priv[:drop])
-    t[:cursor] = ''
-    if @Priv[:drop] != ''
-      randomDrop(t, @Priv[:drop], @Priv.list_element(:selection), 
-                 @Priv[:drop, :pos])
-    end
-  end
-  @Priv['buttonMode'] = ''
-end
-
-def randomDrop(t, target, src, pos)
-  parentList = []
-  case pos
-  when 'lastchild'
-    parent = target
-  when 'prevsibling'
-    parent = t.item_parent(target)
-  when 'nextsibling'
-    parent = t.item_parent(target)
-  end
-  src.each{|item|
-    # Ignore any item whose ancestor is also selected
-    ignore = false
-    t.item_ancestors(item).each{|ancestor|
-      if src.find{|val| val.to_s == ancestor.to_s}
-        ignore = true
-        break
-      end
-    }
-    next if ignore
-
-    # Update the old parent of this moved item later
-    unless parentList.find{|val| val.to_s == item.to_s}
-      parentList << t.item_parent(item)
-    end
-
-    # Add to target
-    t.__send__("item_#{pos}", target, item)
-
-    # Update text: parent
-    t.item_element_configure(item, 'parent', 'e6', :text=>parent)
-
-    # Update text: depth
-    t.item_element_configure(item, 'depth', 'e6', :text=>t.depth(item))
-
-    # Recursively update text: depth
-    itemList = []
-    item = t.item_firstchild(item)
-    itemList << item if item != ''
-
-    while item = itemList.pop
-      t.item_element_configure(item, 'depth', 'e6', :text=>t.depth(item))
-
-      item2 = t.item_nextsibling(item)
-      itemList << item2 if item2 != ''
-
-      item2 = t.item_firstchild(item)
-      itemList << item2 if item2 != ''
-    end
-  }
-
-  # Update items that lost some children
-  parentList.each{|item|
-    numChildren = t.item_numchildren(item)
-    if numChildren == 0
-      if $Version_1_1_OrLater
-        t.item_configure(item, :button=>false)
-      else # TreeCtrl 1.0
-        t.item_hasbutton(item, false)
-      end
-      t.item_style_map(item, 'item', 's2', ['e3', 'e3'])
-    else
-      t.item_element_configure(item, 'item', 'e4', :text=>"(#{numChildren})")
-    end
-  }
-
-  # Update the target that gained some children
-  if t.item_style_set(parent, 0) != 's1'
-    if $Version_1_1_OrLater
-      t.item_configure(parent, :button=>true)
-    else # TreeCtrl 1.0
-      t.item_hasbutton(parent, true)
-    end
-    t.item_style_map(parent, 'item', 's1', ['e3', 'e3'])
-  end
-  numChildren = t.item_numchildren(parent)
-  t.item_element_configure(parent, 'item', 'e4', :text=>"(#{numChildren})")
-end
-
-# Same as TreeCtrl::AutoScanCheck, but calls RandomMotion and
-# RandomAutoScanCheckAux
-def randomAutoScanCheck(t, x, y)
-  x1, y1, x2, y2 = t.contentbox
-  margin = t.winfo_pixels(t.scrollmargin)
-  if x < x1 + margin || x >= x2 - margin || y < y1 + margin || y >= y2 - margin
-    if ! @Priv.exist?(:autoscan, :afterId, t)
-      if y >= y2 - margin
-        t.yview(:scroll, 1, :units)
-        delay = t.yscrolldelay
-      elsif y < y1 + margin
-        t.yview(:scroll, -1, :units)
-        delay = t.yscrolldelay
-      elsif x >= x2 - margin
-        t.xview(:scroll, 1, :units)
-        delay = t.xscrolldelay
-      elsif x < x1 + margin
-        t.xview(:scroll, -1, :units)
-        delay = t.xscrolldelay
-      end
-      if @Priv.exist?(:autoscan, :scanning, t)
-        delay = delay[1] if delay.kind_of?(Array)
-      else
-        delay = delay[0] if delay.kind_of?(Array)
-        @Priv[:autoscan, :scanning, t] = true
-      end
-      case @Priv['buttonMode']
-      when 'drag', 'marquee'
-        randomMotion(t, x, y)
-      end
-      @Priv[:autoscan, :afterId, t] = 
-        Tk.after(delay, proc{ randomAutoScanCheckAux(t) })
-    end
-    return
-  end
-  Tk::TreeCtrl::BindCallback.autoScanCancel(t)
-end
-
-def randomAutoScanCheckAux(t)
-  @Priv.unset(:autoscan, :afterId, t)
-  x = t.winfo_pointerx - t.winfo_rootx
-  y = t.winfo_pointery - t.winfo_rooty
-  randomAutoScanCheck(t, x, y)
-end
-
-#
-# Demo: random N items, button images
-#
-def demoRandom2(t)
-  demoRandom(t)
-
-  init_pics('mac-*')
-
-  t.configure(:openbuttonimage=>@images['mac-collapse'], 
-              :closedbuttonimage=>@images['mac-expand'], 
-              :showlines=>false)
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/readme.txt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/readme.txt
deleted file mode 100644 (file)
index 9f26ac0..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-The scripts and image files in this directory are based on demo files
-of Tcl/Tk's TreeCtrl extention. 
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/www-options.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/treectrl/www-options.rb
deleted file mode 100644 (file)
index efa55ca..0000000
+++ /dev/null
@@ -1,303 +0,0 @@
-def demoInternetOptions (t)
-  @Option = TkVarAccess.new_hash('::Option')
-
-  height = t.font.metrics(:linespace) + 2
-  height = 18 if height < 18
-  t.configure(:showroot=>false, :showbuttons=>false, :showlines=>false, 
-              :itemheight=>height, :selectmode=>:browse)
-
-  init_pics('internet-*')
-
-  if $HasColumnCreate
-    t.column_create(:text=>'Internet Options')
-  else
-    t.column_configure(0, :text=>'Internet Options')
-  end
-
-  t.state_define('check')
-  t.state_define('radio')
-  t.state_define('on')
-
-  t.element_create('e1', :image, :image=>[
-                     @images['internet-check-on'],  ['check', 'on'], 
-                     @images['internet-check-off'], ['check'], 
-                     @images['internet-radio-on'],  ['radio', 'on'], 
-                     @images['internet-radio-off'], ['radio']
-                   ])
-  t.element_create('e2', :text, 
-                   :fill=>[@SystemHighlightText, ['selected', 'focus']])
-  t.element_create('e3', :rect, :showfocus=>true, 
-                   :fill=>[@SystemHighlight, ['selected', 'focus']])
-
-  s = t.style_create('s1')
-  t.style_elements(s, ['e3', 'e1', 'e2'])
-  t.style_layout(s, 'e1', :padx=>[0,4], :expand=>:ns)
-  t.style_layout(s, 'e2', :expand=>:ns)
-  t.style_layout(s, 'e3', :union=>['e2'], :iexpand=>:ns, :ipadx=>2)
-
-  parentList = [:root, '', '', '', '', '', '']
-  parent = :root
-  [
-    [0, :print, "Printing", "", ""], 
-        [1, :off, "Print background colors and images", "o1", ""], 
-    [0, :search, "Search from Address bar", "", ""], 
-        [1, :search, "When searching", "", ""], 
-            [2, :off, "Display results, and go to the most likely sites", 
-                                                                 "o2", "r1"], 
-            [2, :off, "Do not search from the Address bar", "o3", "r1"], 
-            [2, :off, "Just display the results in the main window", 
-                                                                 "o4", "r1"],
-            [2, :on, "Just go to the most likely site", "o5", "r1"], 
-    [0, :security, "Security", "", ""], 
-        [1, :on, "Check for publisher's certificate revocation", "o5", ""], 
-        [1, :off, "Check for server certificate revocation (requires restart)",
-                                                                 "o6", ""]
-  ].each{|depth, setting, text, option, group|
-    item = t.item_create()
-    t.item_style_set(item, 0, 's1')
-    t.item_element_configure(item, 0, 'e2', :text=>text)
-    @Option[:option, item] = option
-    @Option[:group, item] = group
-    if setting == :on || setting == :off
-      @Option[:setting, item] = setting
-      if group == ''
-        t.item_state_set(item, 'check')
-        if setting == :on
-          t.item_state_set(item, 'on')
-        end
-      else
-        if setting == :on
-          @Option[:current, group] = item
-          t.item_state_set(item, 'on')
-        end
-        t.item_state_set(item, 'radio')
-      end
-    else
-      t.item_element_configure(item, 0, 'e1', 
-                               :image=>@images["internet-#{setting}"])
-    end
-    t.item_lastchild(parentList[depth], item)
-    depth += 1
-    parentList[depth] = item
-  }
-
-  treeCtrlOption = TkBindTag.new
-  treeCtrlOption.bind('Double-ButtonPress-1', proc{|w, x, y|
-                        Tk::TreeCtrl::BindCallback.doubleButton1(w, x, y)
-                      }, '%W %x %y')
-  treeCtrlOption.bind('ButtonPress-1', proc{|w, x, y|
-                        optionButton1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-  treeCtrlOption.bind('Button1-Motion', proc{|w, x, y|
-                        optionMotion1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-  treeCtrlOption.bind('Button1-Leave', proc{|w, x, y|
-                        optionLeave1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-  treeCtrlOption.bind('ButtonRelease-1', proc{|w, x, y|
-                        optionRelease1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-
-  t.bindtags = [
-    t, treeCtrlOption, Tk::TreeCtrl, t.winfo_toplevel, TkBindTag::ALL
-  ]
-end
-
-def optionButton1(w, x, y)
-  w.set_focus
-  id = w.identify(x, y)
-  if id[0] == 'header'
-    Tk::TreeCtrl::BindCallback.buttonPress1(w, x, y)
-  elsif id.empty?
-    @Priv['buttonMode'] = ''
-  else
-    @Priv['buttonMode'] = ''
-    item = id[1]
-    w.selection_modify(item, :all)
-    w.activate(item)
-    return if @Option[:option, item] == ''
-    group = @Option[:group, item]
-    if group == ''
-      # a checkbutton
-      w.item_state_set(item, '~on')
-      if @Option[:setting, item] == 'on'
-        setting = :off
-      else
-        setting = :on
-      end
-      @Option[:setting, item] = setting
-    else
-      # a radiobutton
-      current = @Option[:current, group]
-      return if current == item.to_s
-      w.item_state_set(current, '!on')
-      w.item_state_set(item, 'on')
-      @Option[:setting, item] = :on
-      @Option[:current, group] = item
-    end
-  end
-end
-
-# Alternate implementation that doesn't rely on run-time styles
-def demoInternetOptions_2(t)
-  height = t.font.metrics(:linespace) + 2
-  height = 18 if height < 18
-  t.configure(:showroot=>false, :showbuttons=>false, :showlines=>false, 
-              :itemheight=>height, :selectmode=>:browse)
-
-  init_pics('internet-*')
-
-  t.column_configure(0, :text=>'Internet Options')
-
-  t.element_create('e1', :image)
-  t.element_create('e2', :text, 
-                   :fill=>[@SystemHighlightText, ['selected', 'focus']])
-  t.element_create('e3', :rect, :showfocus=>true, 
-                   :fill=>[@SystemHighlight, ['selected', 'focus']])
-
-  s = t.style_create('s1')
-  t.style_elements('s1', ['e3', 'e1', 'e2'])
-  t.style_layout(s, 'e1', :padx=>[0,4], :expand=>:ns)
-  t.style_layout(s, 'e2', :expand=>:ns)
-  t.style_layout(s, 'e3', :union=>['e2'], :iexpand=>:ns, :ipadx=>2)
-
-  parentList = [:root, '', '', '', '', '', '']
-  parent = :root
-  [
-    [0, :print, "Printing", "", ""], 
-        [1, :off, "Print background colors and images", "o1", ""], 
-    [0, :search, "Search from Address bar", "", ""], 
-        [1, :search, "When searching", "", ""], 
-            [2, :off, "Display results, and go to the most likely sites", 
-                                                                 "o2", "r1"], 
-            [2, :off, "Do not search from the Address bar", "o3", "r1"], 
-            [2, :off, "Just display the results in the main window", 
-                                                                 "o4", "r1"],
-            [2, :on, "Just go to the most likely site", "o5", "r1"], 
-    [0, :security, "Security", "", ""], 
-        [1, :on, "Check for publisher's certificate revocation", "o5", ""], 
-        [1, :off, "Check for server certificate revocation (requires restart)",
-                                                                 "o6", ""]
-  ].each{|depth, setting, text, option, group|
-    item = t.item_create()
-    t.item_style_set(item, 0, 's1')
-    t.item_element_configure(item, 0, 'e2', :text=>text)
-    @Option[:option, item] = option
-    @Option[:group, item] = group
-    if setting == :on || setting == :off
-      @Option[:setting, item] = setting
-      if group == ''
-        img = @images["internet-check-#{setting}"]
-        t.item_element_configure(item, 0, 'e1', :image=>img)
-      else
-        if setting == :on
-          @Option[:current, group] = item
-        end
-        img = @images["internet-radio-#{setting}"]
-        t.item_element_configure(item, 0, 'e1', :image=>img)
-      end
-    else
-      t.item_element_configure(item, 0, 'e1', 
-                               :image=>@images["internet-#{setting}"])
-    end
-    t.item_lastchild(parentList[depth], item)
-    depth += 1
-    parentList[depth] = item
-  }
-
-  treeCtrlOption = TkBindTag.new
-  treeCtrlOption.bind('Double-ButtonPress-1', proc{|w, x, y|
-                        Tk::TreeCtrl::BindCallback.doubleButton1(w, x, y)
-                      }, '%W %x %y')
-  treeCtrlOption.bind('ButtonPress-1', proc{|w, x, y|
-                        optionButton1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-  treeCtrlOption.bind('Button1-Motion', proc{|w, x, y|
-                        optionMotion1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-  treeCtrlOption.bind('Button1-Leave', proc{|w, x, y|
-                        optionLeave1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-  treeCtrlOption.bind('ButtonRelease-1', proc{|w, x, y|
-                        optionRelease1(w, x, y)
-                        Tk.callback_break
-                      }, '%W %x %y')
-
-  t.bindtags = [
-    t, treeCtrlOption, Tk::TreeCtrl, t.winfo_toplevel, TkBindTag::ALL
-  ]
-end
-
-def optionButton1_2(w, x, y)
-  w.set_focus
-  id = w.identify(x, y)
-  if id[0] == 'header'
-    Tk::TreeCtrl::BindCallback.buttonPress1(w, x, y)
-  elsif id.empty?
-    @Priv['buttonMode'] = ''
-  else
-    @Priv['buttonMode'] = ''
-    item = id[1]
-    w.selection_modify(item, :all)
-    w.activate(item)
-    return if @Option[:option, item] == ''
-    group = @Option[:group, item]
-    if group == ''
-      # a checkbutton
-      if @Option[:setting, item] == 'on'
-        setting = :off
-      else
-        setting = :on
-      end
-      w.item_element_configure(item, 0, 'e1', 
-                               :image=>@images["internet-check-#{setting}"])
-      @Option[:setting, item] = setting
-    else
-      # a radiobutton
-      current = @Option[:current, group]
-      return if current == item.to_s
-      w.item_element_configure(current, 0, 'e1', 
-                               :image=>@images["internet-radio-off"])
-      w.item_element_configure(item, 0, 'e1', 
-                               :image=>@images["internet-radio-on"])
-      @Option[:setting, item] = :on
-      @Option[:current, group] = item
-    end
-  end
-end
-
-def optionMotion1(w, x, y)
-  case @Priv['buttonMode']
-  when 'resize', 'header'
-    Tk::TreeCtrl::BindCallback.motion1(w, x, y)
-  end
-end
-
-def optionLeave1(w, x, y)
-  # This is called when I do ButtonPress-1 on Unix for some reason,
-  # and buttonMode is undefined.
-  begin
-    mode = @Priv['buttonMode']
-  rescue
-  else
-    case mode
-    when 'header'
-      t.column_configure(@Priv['column'], :sunken=>false)
-    end
-  end
-end
-
-def optionRelease1(w, x, y)
-  case @Priv['buttonMode']
-  when 'resize', 'header'
-    Tk::TreeCtrl::BindCallback.release1(w, x, y)
-  end
-  @Priv['buttonMode'] = ''
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/Orig_LICENSE.txt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/Orig_LICENSE.txt
deleted file mode 100644 (file)
index f5f2f77..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-
-  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-  >>>  The following text is the original 'license.txt' of vu extension.  <<<
-  >>>  Original Tcl source files are not include in this directry,        <<<
-  >>>  because of all of them are rewrited to Ruby files.                 <<<
-  >>>  However, the bitmap data file included in this directory is the    <<<
-  >>>  same file of vu extension. So, the bitmap data file is under the   <<<
-  >>>  following license.                                                 <<<
-  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-                  * COPYRIGHT AND LICENSE TERMS *
-
-(This file blatantly stolen from Tcl/Tk license and adapted - thus assume
-it falls under similar license terms).
-
-This software is copyrighted by Jeffrey Hobbs <jeff.hobbs@acm.org> and
-others.  The following terms apply to all files associated with the
-software unless explicitly disclaimed in individual files.
-
-The authors hereby grant permission to use, copy, modify, distribute, and
-license this software and its documentation for any purpose, provided that
-existing copyright notices are retained in all copies and that this notice
-is included verbatim in any distributions.  No written agreement, license,
-or royalty fee is required for any of the authorized uses.
-
-IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
-DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
-OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF,
-EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE IS
-PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO
-OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-RESTRICTED RIGHTS: Use, duplication or disclosure by the U.S. government
-is subject to the restrictions as set forth in subparagraph (c) (1) (ii)
-of the Rights in Technical Data and Computer Software Clause as DFARS
-252.227-7013 and FAR 52.227-19.
-
-SPECIAL NOTES:
-
-This software also falls under the bourbon_ware clause:
-
-    Should you find this software useful in your daily work, you should
-    feel obliged to take the author out for a drink if the opportunity
-    presents itself.  The user may feel exempt from this clause if they
-    are under 21 or think the author has already partaken of too many
-    drinks.
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/README.txt b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/README.txt
deleted file mode 100644 (file)
index ce5f371..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-
-  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-  >>>  The following text is the original 'README.txt' of  <<<
-  >>>  vu extension demos.                                 <<<
-  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-##
-## DESCRIPTION OF DEMOS
-##
-
-canvItems.tcl
-       old demo of all canvas chart items, useful to find memory leaks.
-       <1> prints out the additional memory usage (charts.so + script)
-
-canvSticker.tcl
-       Heribert Dahms original "demo.tcl"
-       <p> creates DEMO.ps
-
-canvSticker2.tcl
-       compares "sticker" and "text"; press <1>, <2> or <1> ...
-       <p> creates DEMO.ps
-
-dial.tcl
-       demo of variations of the dial widget.
-
-load.tcl
-       Just a utility file, not a real demo.
-
-m128_000.xbm
-       XBM pic used by sticker and canvItems demos
-
-oscilloscope.tcl
-       the heart of a Realtime Oscilloscope,where the PC´s joystick
-       port gives 4 digtal inputs and 4 analog 8 bit values with an
-       resolution of ~1 millisecond (!!!)  running Realtime Linux.
-       <p> creates DEMO.ps
-
-pie.tcl
-       The magic 3D spinning pie chart!
-
-vu.tcl
-       demo fo Vu widgets
-
-canvLabel.tcl
-       'label' is a canvas item just like 'text', but with -angle
-       rotation of the string.  This is not built in by default, as
-       it requires the internal Tk headers.
-       press <1>, <2> or <1> ...
-       <p> creates DEMO.ps
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/canvItems.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/canvItems.rb
deleted file mode 100644 (file)
index 33acf4f..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-require 'tkextlib/vu/charts'
-
-#######################################
-
-xbm = File.join(File.dirname(File.expand_path(__FILE__)), 'm128_000.xbm')
-
-sval = [ 11, 22, 33, 44, 55, 66, 77, 88, 99 ]
-
-l0 = TkLabel.new(:width=>128, :height=>128, 
-                 :bitmap=>"@#{xbm}", :relief=>:groove).pack(:side=>:left)
-
-c0 = TkCanvas.new(:width=>80, :height=>80, 
-                  :insertwidth=>0, :highlightthickness=>0, 
-                  :selectborderwidth=>0, :borderwidth=>2, 
-                  :relief=>:ridge).place(:in=>l0, :relx=>0.5, :rely=>0.5, 
-                                         :anchor=>:c)
-
-st = Tk::Vu::TkcStripchart.new(c0, 3, 3, 80, 80, 
-                               :background=>"#b7c0d7", :fill=>'slategray3', 
-                               :jumpscroll=>1, :outline=>'black', 
-                               :scaleline=>'blue', :stripline=>'red', 
-                               :selected=>1, :values=>sval)
-
-TkcText.create(c0, 40, 40, 
-               :text=>Tk::TCL_PATCHLEVEL, :fill=>'cyan', :tags=>'text')
-
-
-l1 = TkLabel.new(:width=>128, :height=>128, 
-                 :bitmap=>"@#{xbm}", :relief=>:groove).pack(:side=>:left)
-
-c1 = TkCanvas.new(:width=>80, :height=>80, 
-                  :insertwidth=>0, :highlightthickness=>0, 
-                  :selectborderwidth=>0, :borderwidth=>2, 
-                  :relief=>:ridge).place(:in=>l1, :relx=>0.5, :rely=>0.5, 
-                                         :anchor=>:c)
-
-bar1 = Tk::Vu::TkcBarchart.new(c1, 3, 3, 80, 80, 
-                               :background=>"#b7c0d7", :scalevalue=>10.0, 
-                               :autocolor=>true, :selected=>1, 
-                               :outline=>'black', :barline=>'yellow', 
-                               :scalelinestyle=>0)
-
-bar2 = Tk::Vu::TkcBarchart.new(c1, 53, 3, 80, 80, 
-                               :background=>"#b7c0d7", :scalevalue=>10.0, 
-                               :autocolor=>true, :selected=>1, 
-                               :outline=>'black', :fill=>"#b7c0d7", 
-                               :barline=>'red', :scalelinestyle=>22)
-
-
-l2 = TkLabel.new(:width=>128, :height=>128, 
-                 :bitmap=>"@#{xbm}", :relief=>:groove).pack(:side=>:left)
-
-c2 = TkCanvas.new(:width=>80, :height=>80, 
-                  :insertwidth=>0, :highlightthickness=>0, 
-                  :selectborderwidth=>0, :borderwidth=>2, 
-                  :relief=>:ridge).place(:in=>l2, :relx=>0.5, :rely=>0.5, 
-                                         :anchor=>:c)
-
-begin
-  stick = Tk::Vu::TkcSticker.new(c2, 3, 3, 80, 80, 
-                                 :text=>"Tcl/Tk", :space=>0, :color=>'red', 
-                                 :outline=>'red', :font=>'Helvetica 14 bold', 
-                                 :fill=>'', :stipple=>'', :bar=>'blue', 
-                                 :orient=>:vertical, :anchor=>:s, 
-                                 :relheight=>1.0, :relwidth=>0.15, 
-                                 :relx=>0.1, :rely=>0.0)
-rescue
-  stick = nil
-  TkcText.new(c2, 40, 10, :text=>"No Sticker Item")
-end
-
-c_do = proc{
-  st[:values]   = rand() * 100
-
-  bar1[:values] = rand() * 10
-  bar2[:values] = rand() * 10
-
-  stick[:rely]  = rand() * 100 * 0.01 if stick
-}
-
-c0.bind('1', c_do)
-
-TkTimer.new(100, -1, c_do).start
-
-Tk.root.bind('q', proc{exit})
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/canvSticker.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/canvSticker.rb
deleted file mode 100644 (file)
index e2cd604..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-require 'tkextlib/vu/charts'
-
-#######################################
-
-Tk.root.geometry('+30+30')
-
-delay = 2000
-
-c = TkCanvas.new.pack
-
-begin
-  st = Tk::Vu::TkcSticker.new(c, 0, 0, 10, 10)
-rescue
-  Tk.messageBox(:type=>'ok', :title=>"No sticker Item", 
-                :message=>"This build of vu does not include the sticker item")
-  exit
-end
-#st.delete
-
-steps = []
-
-steps << proc{
-  # I used a 75dpi screen for testing, but others should make no difference!
-  puts 'You\'ll see a small upright rectangle with "He" inside.'
-  st = Tk::Vu::TkcSticker.new(c, '6m', '10m', '13m', '27m', :text=>'Hello')
-}
-
-steps << proc{
-  puts 'You\'ll see the whole "Hello" drawn rotated 90 degrees.'
-  st[:orient] = :vertical
-}
-
-steps << proc{
-  puts 'The rectangle shrinks and the text is clipped to "Hell"'
-  #st.coords('6m', '10m', '13m', '20m')
-  st.coords('6m', '10m', '13m', '17m')
-}
-
-steps << proc{
-  puts 'Now you\'ll read "ello"'
-  st[:lefttrunc] = true
-}
-
-steps << proc{
-  puts 'Enlarging the rectangle shows the complete "Hello" again'
-  st.scale(0, 0, 3, 3)
-}
-
-steps << proc{
-  puts 'This time the text is repeated: "Hello", approx. 5mm space, "Hello"'
-  st[:space] = '5m'
-}
-
-steps << proc{
-  puts 'A vertical bar appears in the lower right region and text jumps to the left.'
-  st.configure(:anchor=>:n, :relw=>0.3, :relh=>0.7, 
-               :relx=>0.6, :rely=>0.3, :bar=>'red')
-}
-
-steps << proc{
-  puts 'Paint the backgound.'
-  st[:fill] = 'yellow'
-}
-
-steps << proc{
-  puts "Let's test stippling."
-  st[:stipple] = 'gray25'
-}
-
-steps << proc{
-  puts 'Finally a large outline forces a single "Hello" and shrinks the bar.'
-  st[:width] = '6m'
-}
-
-Tk.root.bind('q', proc{exit})
-
-TkTimer.new(delay, 1, *steps).start
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/canvSticker2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/canvSticker2.rb
deleted file mode 100644 (file)
index 548a72c..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-require 'tkextlib/vu/charts'
-
-#######################################
-
-c = TkCanvas.new.pack
-
-begin
-  st = Tk::Vu::TkcSticker.new(c, 0, 0, 10, 10)
-rescue
-  Tk.messageBox(:type=>'ok', :title=>"No sticker Item", 
-                :message=>"This build of vu does not include the sticker item")
-  exit
-end
-
-c.destroy
-
-#---
-#--- set STRING {{x0 y0 x1 y1} {...text...} {resize point: center}
-
-#sti_conf = [ [10, 10, 180, 180], "Sticker äöüß@²³¼½¾",  :center ]
-#txt_conf = [ [210, 210],        "Text    äöüß@²³¼½¾",  :center ]
-sti_conf = [ [10, 10, 350, 350], 
-             Tk::UTF8_String('Sticker \u00E4\u00F6\u00FC\u00DF\u0040\u00B2\u00B3\u00BC\u00BD\u00BE'),
-             :center ]
-txt_conf = [ [250, 250],
-             Tk::UTF8_String('Text    \u00E4\u00F6\u00FC\u00DF\u0040\u00B2\u00B3\u00BC\u00BD\u00BE'),
-             :center ]
-
-#p sti_conf
-
-fnt = TkFont.new('Helvetica 24 bold')
-
-#---GUI
-c = TkCanvas.new(:width=>500, :height=>500, :bg=>'aquamarine3').pack
-
-#---CRRW Use the technique of eval the coord ...
-sti = Tk::Vu::TkcSticker.new(c, sti_conf[0]){
-  anchor    sti_conf[2]
-  bar       'black'
-  color     'red'
-  fill      ''
-  font      fnt
-  lefttrunc 0
-  outline   ''
-  relheight 0.0
-  relwidth  0.0
-  relx      0.0
-  rely      0.0
-  space     0
-  stipple   ''
-  tags      'sti'
-  text      sti_conf[1]
-  width     0
-  orient    :vertical
-  minwidth  0
-  minheight 0
-  maxwidth  32767
-  maxheight 32767
-}
-
-txt = TkcText.new(c, txt_conf[0]){
-  activefill      ''
-  activestipple   ''
-  anchor          txt_conf[2]
-  disabledfill    ''
-  disabledstipple ''
-  fill            'blue'
-  font            fnt
-  justify         :left
-  offset          '0,0'
-  state           ''
-  stipple         ''
-  tags            ['tex']
-  text            txt_conf[1]
-  width           0
-}
-
-#---BINDINGS
-c.bind('2', proc{
-         sti[:orient] = :horizontal
-         txt[:width] = 0  # horizontal
-       })
-
-c.bind('3', proc{
-         sti[:orient] = :vertical
-         txt[:width] = 1  # top down
-       })
-
-Tk.root.bind('p', proc{
-               c.postscript(:file=>'DEMO.ps')
-               puts "DEMO.ps printed"
-             })
-
-Tk.root.bind('q', proc{exit})
-
-#####################
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/dial_demo.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/dial_demo.rb
deleted file mode 100644 (file)
index 09bd3e9..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-require 'tkextlib/vu/dial'
-
-#######################################
-
-v_volume = TkVariable.new
-v_speed  = TkVariable.new
-v_dir    = TkVariable.new
-v_rot    = TkVariable.new
-v_linked = TkVariable.new
-v_needle = TkVariable.new
-
-volume = Tk::Vu::Dial.new(:label=>"Volume", :from=>-0.1, :to=>0.1, 
-                          :resolution=>0.001, :minortickinterval=>0.01, 
-                          :tickinterval=>0.1, :beginangle=>-20, 
-                          :endangle=>260, :variable=>v_volume)
-
-speed = Tk::Vu::Dial.new(:label=>"Speed", :from=>2000, :to=>100, 
-                         :resolution=>10, :tickinterval=>100, 
-                         :minortickinterval=>0, :variable=>v_speed, 
-                         :showtags=>:label, :showvalue=>false)
-
-speed.set_tag_constrain(100, 'Fast', 2000, 'Slow')
-
-fwd  = Tk::Vu::Dial.new(:from=>-10.0, :to=>-20.0, :resolution=>0.1, 
-                        :tickinterval=>5.0, :minortickinterval=>1.0, 
-                        :variable=>v_dir)
-
-rev  = Tk::Vu::Dial.new(:from=>-20.0, :to=>-10.0, :resolution=>0.1, 
-                        :tickinterval=>5.0, :minortickinterval=>1.0, 
-                        :variable=>v_dir)
-
-small = Tk::Vu::Dial.new(:font=>"Helvetica -10", :from=>0, :to=>10, 
-                         :resolution=>0.05, :tickinterval=>2,
-                         :minortickinterval=>0.5, :radius=>20, 
-                         :dialcolor=>'red2', :activebackground=>'red', 
-                         :variable=>v_rot)
-
-large = Tk::Vu::Dial.new(:font=>"Helvetica -8", :from=>0, :to=>10, 
-                         :resolution=>0.05, :tickinterval=>1,
-                         :minortickinterval=>0.25, :radius=>40, 
-                         :dialcolor=>'red2', :activebackground=>'red', 
-                         :variable=>v_rot)
-
-turn = Tk::Vu::Dial.new(:needlecolor=>'red', :label=>"Linked", 
-                        :variable=>v_linked)
-
-scale = TkScale.new(:label=>"Linked", :variable=>v_linked)
-
-d1 = Tk::Vu::Dial.new(:resolution=>0.0001, :from=>-0.1, :to=>0.1, 
-                      :showvalue=>true, :minortickinterval=>0.01, 
-                      :tickinterval=>0.1, :radius=>30, :label=>"Dial", 
-                      :beginangle=>-20, :endangle=>260, :variable=>v_needle, 
-                      :relief=>:raised)
-
-d2 = Tk::Vu::Dial.new(:resolution=>0.01, :from=>-0.1, :to=>0.1, 
-                      :showvalue=>true, :minortickinterval=>0.01, 
-                      :tickinterval=>0.1, :radius=>30, :label=>"Dial 2", 
-                      :beginangle=>-20, :endangle=>260, :variable=>v_needle, 
-                      :dialrelief=>:flat, :needlecolor=>'red', 
-                      :needletype=>:triangle, :relief=>:sunken)
-
-d3 = Tk::Vu::Dial.new(:resolution=>0.001, :from=>-0.1, :to=>0.1, 
-                      :showvalue=>true, :minortickinterval=>0.01, 
-                      :tickinterval=>0.1, :radius=>30, :label=>"Dial 3", 
-                      :beginangle=>-20, :endangle=>260, :variable=>v_needle, 
-                      :dialrelief=>:flat, :needlecolor=>'blue', 
-                      :needletype=>:arc, :relief=>:ridge)
-
-f_btns = TkFrame.new
-f_sep  = TkFrame.new(:height=>2, :relief=>:sunken, :bd=>1)
-
-
-v_volume.value = -0.1
-v_speed.value = 500
-
-update = TkTimer.new(proc{v_speed.numeric}, -1, proc{
-                       if v_volume == volume[:to]
-                         v_volume.numeric = volume[:from]
-                       else
-                         v_volume.numeric += volume[:resolution]
-                       end
-                     })
-
-b_start = TkButton.new(:text=>"Start", :command=>proc{update.start})
-b_stop  = TkButton.new(:text=>"Stop",  :command=>proc{update.stop})
-b_exit  = TkButton.new(:text=>"Exit",  :command=>proc{exit})
-
-Tk.grid(b_start, :in=>f_btns, :sticky=>:ew, :padx=>4, :pady=>4)
-Tk.grid(b_stop,  :in=>f_btns, :sticky=>:ew, :padx=>4, :pady=>4)
-f_btns.grid_columnconfigure(0, :weight=>1)
-
-Tk.grid(f_btns, speed, volume, :sticky=>:news)
-Tk.grid(f_sep,  '-',   '-',    :sticky=>:news)
-Tk.grid(fwd,    rev,   d1,     :sticky=>:news)
-Tk.grid(small,  large, d2,     :sticky=>:news)
-Tk.grid(turn,   scale, d3,     :sticky=>:news)
-
-Tk.grid(b_exit, '-',   '-',    :sticky=>:ew, :padx=>4, :pady=>4)
-
-Tk.root.grid_columnconfigure(0, :weight=>1)
-Tk.root.grid_columnconfigure(1, :weight=>1)
-Tk.root.grid_columnconfigure(2, :weight=>1)
-
-Tk.root.grid_rowconfigure(0, :weight=>1)
-Tk.root.grid_rowconfigure(2, :weight=>1)
-Tk.root.grid_rowconfigure(3, :weight=>1)
-Tk.root.grid_rowconfigure(4, :weight=>1)
-
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/m128_000.xbm b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/m128_000.xbm
deleted file mode 100644 (file)
index 455e3c5..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-#define m128_000_width 128
-#define m128_000_height 128
-static unsigned char m128_000_bits[] = {
-  0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-  0xff, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0xff,
-  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
-  0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-  0xff, 0xff, 0xff, 0x03, 0xfc, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xea, 0x0f, 0xfc, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xd5, 0x0f,
-  0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3f, 0x7f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3f, 0xaf, 0xfa, 0xab, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xfa, 0xab, 0x3e,
-  0x5f, 0xf5, 0x57, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0xf5, 0x57, 0x3d, 0xaf, 0x0e, 0xac, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e, 0xac, 0x3e, 0x5f, 0x0d, 0x5c, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x0d, 0x5c, 0x3d,
-  0xaf, 0x03, 0xb0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0x03, 0xb0, 0x3e, 0x5f, 0x03, 0x70, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x03, 0x70, 0x3d, 0xaf, 0x03, 0xb0, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x03, 0xb0, 0x3e,
-  0x5f, 0x03, 0x70, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x03, 0x70, 0x3d, 0xaf, 0x03, 0xb0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x03, 0xb0, 0x3e, 0x5f, 0x03, 0x70, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x03, 0x70, 0x3d,
-  0xaf, 0x0e, 0xac, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0x0e, 0xac, 0x3e, 0x5f, 0x0d, 0x5c, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x0d, 0x5c, 0x3d, 0xaf, 0xfa, 0xab, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xfa, 0xab, 0x3e,
-  0x5f, 0xf5, 0x57, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0xf5, 0x57, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d,
-  0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e,
-  0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d,
-  0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e,
-  0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d,
-  0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e,
-  0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d,
-  0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e,
-  0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d,
-  0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e,
-  0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d,
-  0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e,
-  0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d,
-  0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e,
-  0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d,
-  0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e,
-  0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d,
-  0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e,
-  0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d,
-  0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e,
-  0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d,
-  0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e,
-  0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d,
-  0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e,
-  0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d,
-  0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e,
-  0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x3d, 0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d,
-  0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0x3e, 0x5f, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3d, 0xaf, 0xfa, 0xab, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xfa, 0xab, 0x3e,
-  0x5f, 0xf5, 0x57, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0xf5, 0x57, 0x3d, 0xaf, 0x0e, 0xac, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0e, 0xac, 0x3e, 0x5f, 0x0d, 0x5c, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x0d, 0x5c, 0x3d,
-  0xaf, 0x03, 0xb0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0x03, 0xb0, 0x3e, 0x5f, 0x03, 0x70, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x03, 0x70, 0x3d, 0xaf, 0x03, 0xb0, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x03, 0xb0, 0x3e,
-  0x5f, 0x03, 0x70, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x03, 0x70, 0x3d, 0xaf, 0x03, 0xb0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x03, 0xb0, 0x3e, 0x5f, 0x03, 0x70, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x03, 0x70, 0x3d,
-  0xaf, 0x0e, 0xac, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0x0e, 0xac, 0x3e, 0x5f, 0x0d, 0x5c, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x0d, 0x5c, 0x3d, 0xaf, 0xfa, 0xab, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xfa, 0xab, 0x3e,
-  0x5f, 0xf5, 0x57, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0xf5, 0x57, 0x3d, 0xbf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3f, 0x7f, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x3f,
-  0xfc, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-  0xaa, 0xaa, 0xea, 0x0f, 0xfc, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-  0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xd5, 0x0f, 0xf0, 0xff, 0xff, 0xff,
-  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03,
-  0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-  0xff, 0xff, 0xff, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff,
-  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/oscilloscope.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/oscilloscope.rb
deleted file mode 100644 (file)
index 2015e46..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-require 'tkextlib/vu/charts'
-
-#---USAGE
-info = "...the heart of a Realtime Oscilloscope, where the PCIs
-joystick port gives 4 digtal inputs and 4 analog 8 bit
-values with an resolution of ~1 millisecond (!!!)
-running Realtime Linux.
-<p> creates DEMO.ps
-<B1-Motion> see what happens"
-puts info
-
-#---GEOMETRY
-geo_fr  = [10, 10, 210, 180]
-geo_ch0 = [10, 10, 210,  90]
-geo_ch1 = [10, 90, 210, 180]
-geo_t1  = [15, 88]
-
-#---GUI
-c = TkCanvas.new(:width=>220, :height=>190).pack(:fill=>:both, :expand=>true)
-
-#---background
-TkcRectangle.new(c, geo_fr, :width=>4, :fill=>'aquamarine3', 
-                 :tags=>['osc', 'frbg'])
-
-#---channel 0
-ch0 = Tk::Vu::TkcStripchart.new(c, geo_ch0, 
-                                :fill=>'', :jumpscroll=>false, 
-                                :outline=>'', :scaleline=>'', 
-                                :stripline=>'cyan', :tags=>['osc', 'ch0'])
-
-#---channel 1
-ch1 = Tk::Vu::TkcStripchart.new(c, geo_ch1, 
-                                :fill=>'', :jumpscroll=>0, 
-                                :outline=>'', :scaleline=>'', 
-                                :stripline=>'red', :tags=>['osc', 'ch1'])
-
-#---frame
-TkcRectangle.new(c, geo_fr, :width=>4, :tags=>['osc', 'frfg'])
-
-#---position
-txt1 = TkcText.new(c, geo_t1, :text=>"B1-Motion: X:%X\tY:%Y", 
-                   :anchor=>:nw, :tags=>['osc', 'txt1'])
-
-#---BINDINGS
-c.bind('B1-Motion', proc{|x, y, xx, yy|
-         ch0[:values] = x
-         ch1[:values] = y
-         txt1[:text] = "B1-Motion: X:#{xx}\tY:#{yy}"
-       }, '%x %y %X %Y')
-
-Tk.root.bind('v', proc{
-               puts ch0[:values].join(' ')
-               puts ch0[:values].size
-             })
-
-Tk.root.bind('p', proc{
-               c.postscript(:file=>'DEMO.ps')
-               puts "DEMO.ps printed"
-             })
-
-Tk.root.bind('q', proc{exit})
-
-#####################
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/pie.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/pie.rb
deleted file mode 100644 (file)
index ed598d6..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-require 'tkextlib/vu/pie'
-
-pie = Tk::Vu::Pie.new(:label=>"My Revolving Budget"){
-  itemconfigure('Welfare',   :value=>3.004)
-  itemconfigure('Military',  :value=>7.006)
-  itemconfigure('Transport', :value=>1.6, :explode=>15)
-  itemconfigure('Parks',     :value=>0.9)
-  itemconfigure('Schools',   :value=>2)
-  itemconfigure('Debt',      :value=>4,   :explode=>10)
-
-  configure(:angle=>10, :origin=>90, :shadow=>10)
-}
-
-spin = TkTimer.new(60, -1, proc{|obj|
-  pie.configure(:origin=>pie[:origin] + 1)
-})
-
-f = TkFrame.new
-fast_btn = TkButton.new(f, :text=>"Spin Faster", :command=>proc{spin.start})
-slow_btn = TkButton.new(f, :text=>"Spin Slower", :command=>proc{spin.stop})
-quit_btn = TkButton.new(f, :text=>"Exit", :command=>proc{exit})
-
-Tk.grid(pie, :sticky=>:news)
-Tk.grid(f, :sticky=>:ew)
-
-Tk.pack(fast_btn, slow_btn, quit_btn, 
-        :in=>f, :side=>:left, :fill=>:both, :expand=>true, :padx=>6, :pady=>4)
-
-Tk.root.grid_columnconfigure(0, :weight=>1)
-Tk.root.grid_rowconfigure(0, :weight=>1)
-
-priv = { 
-  :x=>0, :y=>0, :pie_in=>false, :angle=>pie[:angle], :origin=>pie[:origin]
-}
-
-pie.bind('ButtonPress-1', proc{|w, x, y|
-             priv[:x] = x
-             priv[:y] = y
-             priv[:pie_in] = (w.winfo_width/1.8 > x)
-             priv[:angle]  = w[:angle]
-             priv[:origin] = w[:origin]
-         }, '%W %x %y')
-
-pie.bind('B1-Motion', proc{|w, x, y|
-           if priv[:pie_in]
-             w.configure(:angle=>priv[:angle] + (priv[:y] - y)/3, 
-                         :origin=>(priv[:origin] + 
-                                   ((w.winfo_height/2.2 > y)? -1: 1) * 
-                                   (priv[:x] - x)/3) % 360)
-           end
-         }, '%W %x %y')
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/vu_demo.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkextlib/vu/vu_demo.rb
deleted file mode 100644 (file)
index d078ae1..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-require 'tkextlib/vu'
-
-#######################################
-
-puts "Show off barchart and dial widgets"
-
-speed = TkVariable.new(0)
-
-dial = Tk::Vu::Dial.new(:resolution=>0.001, :from=>-0.1, :to=>0.1, 
-                        :showvalue=>true, :minortickinterval=>0.01, 
-                        :tickinterval=>0.1, :radius=>50, :label=>"Dial", 
-                        :beginangle=>-20, :endangle=>260, :dialcolor=>'red3', 
-                        :active=>'red2', :variable=>speed)
-
-bar = Tk::Vu::Bargraph.new(:from=>0, :to=>100, :relief=>:groove, 
-                           :border=>2, :label=>"Bar Chart")
-
-#######################################
-
-green   = 25
-blue    = 50
-purple  = 75
-current = 50
-
-def rand_bool
-  
-end
-
-update = TkTimer.new(200, -1, proc{
-                       if (rand() - 0.5 + speed.numeric * 3) > 0
-                         current += 1
-                       else
-                         current -= 1
-                       end
-                       bar.set(current)
-                       if current < green
-                         current = 100 if current <= 0
-                         bar[:barcolor] = 'green'
-                       elsif current < blue
-                         bar[:barcolor] = 'blue'
-                       elsif current < purple
-                         bar[:barcolor] = 'purple'
-                       else
-                         bar[:barcolor] = 'red'
-                         current = 0 if current >= 100
-                       end
-                     })
-
-#######################################
-
-gobar = TkButton.new(:text=>"Start", :command=>proc{update.start})
-nobar = TkButton.new(:text=>"Stop",  :command=>proc{update.stop})
-quit  = TkButton.new(:text=>"Exit",  :command=>proc{exit})
-
-Tk.grid('x', gobar, :sticky=>:ew, :padx=>4, :pady=>4)
-Tk.grid(dial, bar, :sticky=>:news)
-Tk.grid('x', nobar, :sticky=>:ew, :padx=>4, :pady=>4)
-Tk.grid(quit, '-', '-', :sticky=>:ew, :padx=>4, :pady=>4)
-Tk.root.grid_columnconfigure(2, :weight=>1)
-Tk.root.grid_rowconfigure(1, :weight=>1)
-                       
-#######################################
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkfrom.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkfrom.rb
deleted file mode 100644 (file)
index 2cece73..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/usr/bin/env ruby
-
-require "parsedate"
-require "base64"
-
-include ParseDate
-
-class Mail
-  def Mail.new(f)
-    if !f.kind_of?(IO)
-      f = open(f, "r")
-      me = super(f)
-      f.close
-    else
-      me = super
-    end
-    return me
-  end
-
-  def initialize(f)
-    @header = {}
-    @body = []
-    while line = f.gets()
-      $_.chop!
-      next if /^From / =~ line  # skip From-line  
-      break if /^$/ =~ line     # end of header
-      if /^(\S+):\s*(.*)/ =~ line
-        @header[attr = $1.capitalize] = $2
-      elsif attr
-        sub(/^\s*/, '')
-        @header[attr] += "\n" + $_
-      end
-    end
-
-    return unless $_
-
-    while line = f.gets()
-      break if /^From / =~ line
-      @body.push($_)
-    end
-  end
-
-  def header
-    return @header
-  end
-
-  def body
-    return @body
-  end
-
-end
-
-if ARGV.length == 0
-  if ENV['MAIL']
-    ARGV[0] = ENV['MAIL']
-  elsif ENV['USER']
-    ARGV[0] = '/var/spool/mail/' + ENV['USER']
-  elsif ENV['LOGNAME']
-    ARGV[0] = '/var/spool/mail/' + ENV['LOGNAME']
-  end
-end
-
-require "tk"
-list = scroll = nil
-TkFrame.new{|f|
-  list = TkListbox.new(f) {
-    yscroll proc{|*idx|
-        scroll.set *idx
-    }
-    relief 'raised'
-#    geometry "80x5"
-    width 80
-    height 5
-    setgrid 'yes'
-    pack('side'=>'left','fill'=>'both','expand'=>'yes')
-  }
-  scroll = TkScrollbar.new(f) {
-    command proc{|idx|
-      list.yview *idx
-    }
-    pack('side'=>'right','fill'=>'y')
-  }
-  pack
-}
-root = Tk.root
-TkButton.new(root) {
-  text 'Dismiss'
-  command proc {exit}
-  pack('fill'=>'both','expand'=>'yes')
-}
-root.bind "Control-c", proc{exit}
-root.bind "Control-q", proc{exit}
-root.bind "space", proc{exit}
-
-$outcount = 0;
-for file in ARGV
-  next unless File.exist?(file)
-  atime = File.atime(file)
-  mtime = File.mtime(file)
-  f = open(file, "r")
-  begin
-    until f.eof
-      mail = Mail.new(f)
-      date = mail.header['Date']
-      next unless date
-      from = mail.header['From']
-      subj = mail.header['Subject']
-      y = m = d = 0
-      y, m, d = parsedate(date) if date
-      from = "sombody@somewhere" unless from
-      subj = "(nil)" unless subj
-      from = decode_b(from)
-      subj = decode_b(subj)
-      list.insert 'end', format('%-02d/%02d/%02d [%-28.28s] %s',y,m,d,from,subj)
-      $outcount += 1
-    end
-  ensure
-    f.close
-    File.utime(atime, mtime, file)
-    list.see 'end'
-  end
-end
-
-limit = 10000
-if $outcount == 0
-  list.insert 'end', "You have no mail."
-  limit = 2000
-end
-Tk.after limit, proc{
-  exit
-}
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkhello.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkhello.rb
deleted file mode 100644 (file)
index 3b505f4..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-require "tk"
-
-TkButton.new(nil, 
-             :text => 'hello',
-             :command => proc{print "hello\n"}).pack(:fill=>'x')
-TkButton.new(nil,
-             :text => 'quit',
-             :command => proc{exit}).pack(:fill=>'x')
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkline.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkline.rb
deleted file mode 100644 (file)
index 3124c2f..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-
-require "tkclass"
-
-$tkline_init = FALSE
-def start_random
-  return if $tkline_init
-  $tkline_init = TRUE
-  if defined? Thread
-    Thread.start do
-      loop do
-        sleep 2
-        Line.new($c, rand(400), rand(200), rand(400), rand(200))
-      end
-    end
-  end
-end
-
-Label.new('text'=>'Please press or drag button-1').pack
-
-$c = Canvas.new
-$c.pack
-$start_x = start_y = 0
-
-def do_press(x, y)
-  $start_x = x
-  $start_y = y
-  $current_line = Line.new($c, x, y, x, y)
-  start_random
-end
-def do_motion(x, y)
-  if $current_line
-    $current_line.coords $start_x, $start_y, x, y
-  end
-end
-
-def do_release(x, y)
-  if $current_line
-    $current_line.coords $start_x, $start_y, x, y
-    $current_line.fill 'black'
-    $current_line = nil
-  end
-end
-
-$c.bind("1", proc{|e| do_press e.x, e.y})
-$c.bind("B1-Motion", proc{|x, y| do_motion x, y}, "%x %y")
-$c.bind("ButtonRelease-1", proc{|x, y| do_release x, y}, "%x %y")
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmenubutton.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmenubutton.rb
deleted file mode 100644 (file)
index 37f6128..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-#!/usr/bin/env ruby
-#
-#  menubutton sample : based on sample menubuttons on the Tcl/Tk demo script
-#
-require 'tk'
-
-TkLabel.new(:text=>'Sample of TkMenubutton').pack(:side=>:top)
-
-TkFrame.new{|f|
-  pack(:side=>:top) 
-
-
-  TkMenubutton.new(:parent=>f, :text=>'Right', :underline=>0, 
-                   :direction=>:right, :relief=>:raised){|mb|
-    menu TkMenu.new(:parent=>mb, :tearoff=>0){
-      add(:command, :label=>'Right menu: first item', 
-                    :command=>proc{print 'You have selected the first item' + 
-                                         " from the Right menu.\n"})
-      add(:command, :label=>'Right menu: second item', 
-                    :command=>proc{print 'You have selected the second item' + 
-                                         " from the Right menu.\n"})
-    }
-    pack(:side=>:left, :padx=>25, :pady=>25)
-  }
-
-  TkMenubutton.new(:parent=>f, :text=>'Below', :underline=>0, 
-                   :direction=>:below, :relief=>:raised){|mb|
-    menu(TkMenu.new(:parent=>mb, :tearoff=>0){
-      add(:command, :label=>'Below menu: first item', 
-                    :command=>proc{print 'You have selected the first item' + 
-                                         " from the Below menu.\n"})
-      add(:command, :label=>'Below menu: second item', 
-                    :command=>proc{print 'You have selected the second item' + 
-                                         " from the Below menu.\n"})
-    })
-    pack(:side=>:left, :padx=>25, :pady=>25)
-  }
-
-  TkMenubutton.new(:parent=>f, :text=>'Above', :underline=>0, 
-                   :direction=>:above, :relief=>:raised){|mb|
-    menu TkMenu.new(:parent=>mb, :tearoff=>0){
-      add(:command, :label=>'Above menu: first item', 
-                    :command=>proc{print 'You have selected the first item' + 
-                                         " from the Above menu.\n"})
-      add(:command, :label=>'Above menu: second item', 
-                    :command=>proc{print 'You have selected the second item' + 
-                                         " from the Above menu.\n"})
-    }
-    pack(:side=>:left, :padx=>25, :pady=>25)
-  }
-
-  TkMenubutton.new(:parent=>f, :text=>'Left', :underline=>0, 
-                   :direction=>:left, :relief=>:raised){|mb|
-    menu(TkMenu.new(:parent=>mb, :tearoff=>0){
-      add(:command, :label=>'Left menu: first item', 
-                    :command=>proc{print 'You have selected the first item' + 
-                                         " from the Left menu.\n"})
-      add(:command, :label=>'Left menu: second item', 
-                    :command=>proc{print 'You have selected the second item' + 
-                                         " from the Left menu.\n"})
-    })
-    pack(:side=>:left, :padx=>25, :pady=>25)
-  }
-}
-
-############################
-TkFrame.new(:borderwidth=>2, :relief=>:sunken, 
-            :height=>5).pack(:side=>:top, :fill=>:x, :padx=>20)
-############################
-
-TkLabel.new(:text=>'Sample of TkOptionMenu').pack(:side=>:top)
-
-colors = %w(Black red4 DarkGreen NavyBlue gray75 Red Green Blue gray50 
-            Yellow Cyan Magenta White Brown DarkSeaGreen DarkViolet)
-
-TkFrame.new{|f|
-  pack(:side=>:top) 
-
-  b1 = TkOptionMenubutton . 
-    new(:parent=>f, :values=>%w(one two three)) . 
-    pack(:side=>:left, :padx=>25, :pady=>25)
-
-  b2 = TkOptionMenubutton.new(:parent=>f, :values=>colors) {|optMB|
-    colors.each{|color|
-      no_sel = TkPhotoImage.new(:height=>16, :width=>16){
-        put 'gray50', *[ 0,  0, 16,  1]
-        put 'gray50', *[ 0,  1,  1, 16]
-        put 'gray75', *[ 0, 15, 16, 16]
-        put 'gray75', *[15,  1, 16, 16]
-        put color,    *[ 1,  1, 15, 15]
-      }
-      sel = TkPhotoImage.new(:height=>16, :width=>16){
-        put 'Black',  *[ 0,  0, 16,  2]
-        put 'Black',  *[ 0,  2,  2, 16]
-        put 'Black',  *[ 2, 14, 16, 16]
-        put 'Black',  *[14,  2, 16, 14]
-        put color,    *[ 2,  2, 14, 14]
-      }
-      optMB.entryconfigure(color, :hidemargin=>1, 
-                           :image=>no_sel, :selectimage=>sel)
-    }
-    optMB.menuconfigure(:tearoff, 1)
-    %w(Black gray75 gray50 White).each{|color|
-      optMB.entryconfigure(color, :columnbreak=>true)
-    }
-    pack(:side=>:left, :padx=>25, :pady=>25)
-  }
-
-  TkButton.new(:parent=>f){
-    text 'show values'
-    command proc{p [b1.value, b2.value]}
-    pack(:side=>:left, :padx=>25, :pady=>5, :anchor=>:s)
-  }
-}
-
-############################
-TkFrame.new(:borderwidth=>2, :relief=>:sunken, 
-            :height=>5).pack(:side=>:top, :fill=>:x, :padx=>20)
-############################
-
-root = TkRoot.new(:title=>'menubutton samples')
-
-TkButton.new(root, :text=>'exit', :command=>proc{exit}){
-  pack(:side=>:top, :padx=>25, :pady=>5, :anchor=>:e)
-}
-
-# VirtualEvent <<MenuSelect>> on Tcl/Tk ==> '<MenuSelect>' on Ruby/Tk
-# ( remove the most external <, > for Ruby/Tk notation )
-TkMenu.bind('<MenuSelect>', proc{|widget|
-              p widget.entrycget('active', :label)
-            }, '%W')
-
-############################
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmsgcat-load_rb.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmsgcat-load_rb.rb
deleted file mode 100644 (file)
index 5373e00..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-
-demo_dir = File.dirname($0)
-msgcat_dir = [demo_dir, 'msgs_rb'].join(File::Separator)
-top_win = nil
-#msgcat = TkMsgCatalog.new('::tk')
-msgcat = TkMsgCatalog.new('::tkmsgcat_demo')
-default_locale = msgcat.locale
-#msgcat.load_rb(msgcat_dir)
-msgcat.load(msgcat_dir)
-
-col_proc = TkComm.install_bind(proc{|w, color, frame, label|
-                                 TkComm.window(frame).background(color)
-                                 Tk.update
-                                 TkComm.window(label).text(
-                                          msgcat["%1$s:: %2$s", 'Color', 
-                                                 color.capitalize])
-                                 w.flash; w.flash
-                                 Tk.callback_break;
-                              }, "%W")
-
-del_proc = TkComm.install_cmd(proc{top_win.destroy; top_win = nil})
-
-err_proc = TkComm.install_cmd(proc{fail(RuntimeError, 
-                                        msgcat['Application Error'])})
-
-show_sample = proc{|loc|
-  top_win = TkToplevel.new(:title=>loc)
-
-  msgcat.locale = loc
-  #msgcat.load_rb(msgcat_dir)
-  msgcat.load(msgcat_dir)
-
-  TkLabel.new(top_win){
-    text "preferences:: #{msgcat.preferences.join(' ')}"
-    pack(:pady=>10, :padx=>10)
-  }
-
-  lbl = TkLabel.new(top_win, :text=>msgcat["%1$s:: %2$s", 
-                                           'Color', '']).pack(:anchor=>'w')
-
-  bg = TkFrame.new(top_win).pack(:ipadx=>20, :ipady=>10, 
-                                 :expand=>true, :fill=>:both)
-
-  TkFrame.new(bg){|f|
-    ['blue', 'green', 'red'].each{|col|
-      TkButton.new(f, :text=>msgcat[col]){
-        bind('ButtonRelease-1', col_proc, "#{col} #{bg.path} #{lbl.path}")
-      }.pack(:fill=>:x)
-    }
-  }.pack(:anchor=>'center', :pady=>15)
-
-  TkFrame.new(top_win){|f|
-    TkButton.new(f, :text=>msgcat['Delete'], 
-                 :command=>del_proc).pack(:side=>:right, :padx=>5)
-    TkButton.new(f, :text=>msgcat['Error'], 
-                 :command=>err_proc).pack(:side=>:left, :padx=>5)
-  }.pack(:side=>:bottom, :fill=>:x)
-
-  top_win
-}
-
-
-#  listbox for locale list
-TkLabel.new(:text=>"Please click a locale.").pack(:padx=>5, :pady=>3)
-
-TkFrame.new{|f|
-  TkButton.new(f, :text=>msgcat['Exit'], 
-               :command=>proc{exit}).pack(:side=>:right, :padx=>5)
-}.pack(:side=>:bottom, :fill=>:x)
-
-f = TkFrame.new.pack(:side=>:top, :fill=>:both, :expand=>true)
-lbox = TkListbox.new(f).pack(:side=>:left, :fill=>:both, :expand=>true)
-lbox.yscrollbar(TkScrollbar.new(f, :width=>12).pack(:side=>:right, :fill=>:y))
-
-lbox.bind('ButtonRelease-1'){|ev|
-  idx = lbox.index("@#{ev.x},#{ev.y}")
-  if idx == 0
-    loc = default_locale
-  else
-    loc = lbox.get(idx)
-  end
-  if top_win != nil && top_win.exist?
-    top_win.destroy
-  end
-  top_win = show_sample.call(loc)
-}
-
-lbox.insert('end', 'default')
-
-Dir.entries(msgcat_dir).sort.each{|f| 
-  if f =~ /^(.*).msg$/
-    lbox.insert('end', $1)
-  end
-}
-
-top_win = show_sample.call(default_locale)
-
-#  start eventloop
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmsgcat-load_rb2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmsgcat-load_rb2.rb
deleted file mode 100644 (file)
index 5524654..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-
-demo_dir = File.dirname($0)
-msgcat_dir = [demo_dir, 'msgs_rb2'].join(File::Separator)
-top_win = nil
-#msgcat = TkMsgCatalog.new('::tk')
-msgcat = TkMsgCatalog.new('::tkmsgcat_demo')
-default_locale = msgcat.locale
-#msgcat.load_rb(msgcat_dir)
-msgcat.load(msgcat_dir)
-
-col_proc = TkComm.install_bind(proc{|w, color, frame, label|
-                                 TkComm.window(frame).background(color)
-                                 Tk.update
-                                 TkComm.window(label).text(
-                                          msgcat["%1$s:: %2$s", 'Color', 
-                                                 color.capitalize])
-                                 w.flash; w.flash
-                                 Tk.callback_break;
-                              }, "%W")
-
-del_proc = TkComm.install_cmd(proc{top_win.destroy; top_win = nil})
-
-err_proc = TkComm.install_cmd(proc{fail(RuntimeError, 
-                                        msgcat['Application Error'])})
-
-show_sample = proc{|loc|
-  top_win = TkToplevel.new(:title=>loc)
-
-  msgcat.locale = loc
-  #msgcat.load_rb(msgcat_dir)
-  msgcat.load(msgcat_dir)
-
-  TkLabel.new(top_win){
-    text "preferences:: #{msgcat.preferences.join(' ')}"
-    pack(:pady=>10, :padx=>10)
-  }
-
-  lbl = TkLabel.new(top_win, :text=>msgcat["%1$s:: %2$s", 
-                                           'Color', '']).pack(:anchor=>'w')
-
-  bg = TkFrame.new(top_win).pack(:ipadx=>20, :ipady=>10, 
-                                 :expand=>true, :fill=>:both)
-
-  TkFrame.new(bg){|f|
-    ['blue', 'green', 'red'].each{|col|
-      TkButton.new(f, :text=>msgcat[col]){
-        bind('ButtonRelease-1', col_proc, "#{col} #{bg.path} #{lbl.path}")
-      }.pack(:fill=>:x)
-    }
-  }.pack(:anchor=>'center', :pady=>15)
-
-  TkFrame.new(top_win){|f|
-    TkButton.new(f, :text=>msgcat['Delete'], 
-                 :command=>del_proc).pack(:side=>:right, :padx=>5)
-    TkButton.new(f, :text=>msgcat['Error'], 
-                 :command=>err_proc).pack(:side=>:left, :padx=>5)
-  }.pack(:side=>:bottom, :fill=>:x)
-
-  top_win
-}
-
-
-#  listbox for locale list
-TkLabel.new(:text=>"Please click a locale.").pack(:padx=>5, :pady=>3)
-
-TkFrame.new{|f|
-  TkButton.new(f, :text=>msgcat['Exit'], 
-               :command=>proc{exit}).pack(:side=>:right, :padx=>5)
-}.pack(:side=>:bottom, :fill=>:x)
-
-f = TkFrame.new.pack(:side=>:top, :fill=>:both, :expand=>true)
-lbox = TkListbox.new(f).pack(:side=>:left, :fill=>:both, :expand=>true)
-lbox.yscrollbar(TkScrollbar.new(f, :width=>12).pack(:side=>:right, :fill=>:y))
-
-lbox.bind('ButtonRelease-1'){|ev|
-  idx = lbox.index("@#{ev.x},#{ev.y}")
-  if idx == 0
-    loc = default_locale
-  else
-    loc = lbox.get(idx)
-  end
-  if top_win != nil && top_win.exist?
-    top_win.destroy
-  end
-  top_win = show_sample.call(loc)
-}
-
-lbox.insert('end', 'default')
-
-Dir.entries(msgcat_dir).sort.each{|f| 
-  if f =~ /^(.*).msg$/
-    lbox.insert('end', $1)
-  end
-}
-
-top_win = show_sample.call(default_locale)
-
-#  start eventloop
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmsgcat-load_tk.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmsgcat-load_tk.rb
deleted file mode 100644 (file)
index 45d68e4..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'tk'
-
-demo_dir = File.dirname($0)
-msgcat_dir = [demo_dir, 'msgs_tk'].join(File::Separator)
-top_win = nil
-#msgcat = TkMsgCatalog.new('::tk')
-msgcat = TkMsgCatalog.new('::tkmsgcat_demo')
-default_locale = msgcat.locale
-msgcat.load_tk(msgcat_dir)
-
-col_proc = TkComm.install_bind(proc{|w, color, frame, label|
-                                 TkComm.window(frame).background(color)
-                                 Tk.update
-                                 TkComm.window(label).text(
-                                          msgcat.mc("%1$s:: %2$s", 'Color', 
-                                                    color.capitalize))
-                                 w.flash; w.flash
-                                 Tk.callback_break;
-                              }, "%W")
-
-del_proc = TkComm.install_cmd(proc{top_win.destroy; top_win = nil})
-
-err_proc = TkComm.install_cmd(proc{fail(RuntimeError, 
-                                        msgcat.mc('Application Error'))})
-
-show_sample = proc{|loc|
-  top_win = TkToplevel.new(:title=>loc)
-
-  msgcat.locale = loc
-  msgcat.load_tk(msgcat_dir)
-
-  TkLabel.new(top_win){
-    text "preferences:: #{msgcat.preferences.join(' ')}"
-    pack(:pady=>10, :padx=>10)
-  }
-
-  lbl = TkLabel.new(top_win, :text=>msgcat.mc("%1$s:: %2$s", 
-                                              'Color', '')).pack(:anchor=>'w')
-
-  bg = TkFrame.new(top_win).pack(:ipadx=>20, :ipady=>10, 
-                                 :expand=>true, :fill=>:both)
-
-  TkFrame.new(bg){|f|
-    ['blue', 'green', 'red'].each{|col|
-      TkButton.new(f, :text=>msgcat.mc(col)){
-        bind('ButtonRelease-1', col_proc, "#{col} #{bg.path} #{lbl.path}")
-      }.pack(:fill=>:x)
-=begin
-      TkButton.new(f, :text=>msgcat.mc(col), 
-                   :command=>proc{
-                     bg.background col
-                     lbl.text msgcat.mc("%1$s:: %2$s", 'Color', col.capitalize)
-                   }).pack(:fill=>:x)
-=end
-    }
-  }.pack(:anchor=>'center', :pady=>15)
-
-  TkFrame.new(top_win){|f|
-    TkButton.new(f, :text=>msgcat.mc('Delete'), 
-                 :command=>del_proc).pack(:side=>:right, :padx=>5)
-    TkButton.new(f, :text=>msgcat.mc('Error'), 
-                 :command=>err_proc).pack(:side=>:left, :padx=>5)
-=begin
-    TkButton.new(f, :text=>msgcat.mc('Delete'), 
-                 :command=>proc{
-                   top_win.destroy
-                   top_win = nil
-                 }).pack(:side=>:right, :padx=>5)
-    TkButton.new(f, :text=>msgcat.mc('Error'), 
-                 :command=>proc{
-                   fail RuntimeError, msgcat.mc('Application Error')
-                 }).pack(:side=>:left, :padx=>5)
-=end
-  }.pack(:side=>:bottom, :fill=>:x)
-
-  top_win
-}
-
-
-#  listbox for locale list
-TkLabel.new(:text=>"Please click a locale.").pack(:padx=>5, :pady=>3)
-
-TkFrame.new{|f|
-  TkButton.new(f, :text=>msgcat.mc('Exit'), 
-               :command=>proc{exit}).pack(:side=>:right, :padx=>5)
-}.pack(:side=>:bottom, :fill=>:x)
-
-f = TkFrame.new.pack(:side=>:top, :fill=>:both, :expand=>true)
-lbox = TkListbox.new(f).pack(:side=>:left, :fill=>:both, :expand=>true)
-lbox.yscrollbar(TkScrollbar.new(f, :width=>12).pack(:side=>:right, :fill=>:y))
-
-lbox.bind('ButtonRelease-1'){|ev|
-  idx = lbox.index("@#{ev.x},#{ev.y}")
-  if idx == 0
-    loc = default_locale
-  else
-    loc = lbox.get(idx)
-  end
-  if top_win != nil && top_win.exist?
-    top_win.destroy
-  end
-  top_win = show_sample.call(loc)
-}
-
-lbox.insert('end', 'default')
-
-Dir.entries(msgcat_dir).sort.each{|f| 
-  if f =~ /^(.*).msg$/
-    lbox.insert('end', $1)
-  end
-}
-
-top_win = show_sample.call(default_locale)
-
-#  start eventloop
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmulticolumnlist.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmulticolumnlist.rb
deleted file mode 100644 (file)
index 255eb69..0000000
+++ /dev/null
@@ -1,743 +0,0 @@
-#
-# tkmulticolumnlist.rb : multiple column list widget on scrollable frame
-#                        by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
-#
-require 'tk'
-
-class TkMultiColumnList < TkText
-  include TkComposite
-
-  #   lbox_height : height of listboxes (pixel)
-  #   title_info  : array [ [<title_string>,<init_width>], ... ]
-  #   keys        : hash {<option>=><value>, ... }
-  def initialize_composite(lbox_height, title_info, keys={})
-    # argument check
-    if (! title_info.kind_of? Array) or (title_info.size < 2)
-      raise
-    end
-
-    # mode
-    @keep_minsize = true
-    @show_each_hscr = true
-    @show_win_hscr = true
-
-    # init arrays
-    @base_list  = []
-    @rel_list   = []
-    @title_list = []
-    @title_cmd  = []
-    @lbox_list  = []
-    @hscr_list  = []
-
-    # decide total width
-    @lbox_total = title_info.size
-    @width_total = 0
-    title_info.each{|title, width, cmd| 
-      @width_total += width.to_f
-      @title_cmd << cmd
-    }
-
-    # rel-table of label=>index
-    @name_index = {}
-
-    # size definition
-    @window_width = @width_total
-    @sash = 5
-    @scrbar_width = 15
-    @scrbar_border = 3
-    @lbox_border = 1
-    @title_border = 3
-    @h_l_thick = 0
-
-    # init status
-    @mode = :title
-    @command = nil
-
-    # virtical scrollbar
-    @v_scroll = TkYScrollbar.new(@frame, 'highlightthickness'=>@h_l_thick, 
-                                 'borderwidth'=>@scrbar_border, 
-                                 'width'=>@scrbar_width)
-
-    # horizontal scrollbar
-    @h_scroll = TkXScrollbar.new(@frame, 'highlightthickness'=>@h_l_thick, 
-                                 'borderwidth'=>@scrbar_border, 
-                                 'width'=>@scrbar_width)
-
-    # create base flames
-    @c_title = TkCanvas.new(@frame, 'highlightthickness'=>@h_l_thick, 
-                            'width'=>@window_width)
-    @f_title = TkFrame.new(@c_title, 'width'=>@width_total)
-    @w_title = TkcWindow.new(@c_title, 0, 0, 
-                             'window'=>@f_title, 'anchor'=>'nw')
-
-    @c_lbox  = TkCanvas.new(@frame, 'highlightthickness'=>@h_l_thick, 
-                            'width'=>@window_width)
-    @f_lbox  = TkFrame.new(@c_lbox, 'width'=>@width_total)
-    @w_lbox  = TkcWindow.new(@c_lbox, 0, 0, 'window'=>@f_lbox, 'anchor'=>'nw')
-
-    @c_hscr  = TkCanvas.new(@frame, 'highlightthickness'=>@h_l_thick, 
-                            'width'=>@window_width)
-    @f_hscr  = TkFrame.new(@c_hscr, 'width'=>@width_total)
-    @w_hscr  = TkcWindow.new(@c_hscr, 0, 0, 'window'=>@f_hscr, 'anchor'=>'nw')
-
-    # create each listbox
-    sum = 0.0
-    @rel_list << sum/@width_total
-    title_info.each_with_index{|(label, width), idx|
-      # set relation between label and index
-      if @name_index.include?(label)
-        @name_index[label] << idx
-      else
-        @name_index[label] = [idx]
-      end
-
-      # calculate relative positioning
-      sum += width
-      @rel_list << sum/@width_total
-
-      # title field
-      f = TkFrame.new(@f_title, 'width'=>width)
-      base = [f]
-
-      title = TkLabel.new(f, 'text'=>label, 'borderwidth'=>@title_border, 
-                          'relief'=>'raised', 'highlightthickness'=>@h_l_thick)
-      title_binding(title, idx)
-      title.pack('fill'=>'x')
-
-      @title_list << title
-
-      f.place('relx'=>@rel_list[idx], 'y'=>0, 'anchor'=>'nw', 'width'=>1, 
-              'relheight'=>1.0, 
-              'relwidth'=>@rel_list[idx+1] - @rel_list[idx])
-
-      # listbox field
-      f = TkFrame.new(@f_lbox, 'width'=>width)
-      base << f
-      @lbox_list << TkText.new(f, 'highlightthickness'=>@h_l_thick, 
-                               'borderwidth'=>@lbox_border, 
-                               'takefocus'=>false, 
-                               'wrap'=>'none') {
-
-        bindtags(bindtags - [TkText])
-
-        @seltag = TkTextTag.new(self, 'background'=>'#b3b3b3', 
-                                'borderwidth'=>1, 'relief'=>'raised')
-        def self.nearest(y)
-          self.index("@1,#{y}").split('.')[0].to_i
-        end
-
-        def self.select_clear(first, last=nil)
-          first = "#{first}.0" if first.kind_of?(Integer)
-          first = self.index(first.to_s + ' linestart')
-          last = first unless last
-          last = "#{last}.0" if first.kind_of?(Integer)
-          last = self.index(last.to_s + ' + 1 lines linestart')
-          @seltag.remove(first, last)
-        end
-
-        def self.select_set(first, last=nil)
-          first = "#{first}.0" if first.kind_of?(Integer)
-          first = self.index(first.to_s + ' linestart')
-          last = first unless last
-          last = "#{last}.0" if first.kind_of?(Integer)
-          last = self.index(last.to_s + ' + 1 lines linestart')
-          @seltag.add(first, last)
-        end
-
-        def self.select_index
-          self.index(@seltag.first).split('.')[0].to_i
-        end
-
-        pack('fill'=>'both', 'expand'=>true)
-      }
-
-      f.place('relx'=>@rel_list[idx], 'y'=>0, 'anchor'=>'nw', 'width'=>1, 
-              'relwidth'=>@rel_list[idx+1] - @rel_list[idx], 'relheight'=>1.0)
-
-      # scrollbar field
-      f = TkFrame.new(@f_hscr, 'width'=>width)
-      base << f
-      @hscr_list << TkXScrollbar.new(f, 'width'=>@scrbar_width, 
-                                     'borderwidth'=>@scrbar_border, 
-                                     'highlightthickness'=>@h_l_thick
-                                    ).pack('fill'=>'x', 'anchor'=>'w')
-      f.place('relx'=>@rel_list[idx], 'y'=>0, 'anchor'=>'nw', 'width'=>1, 
-              'relwidth'=>@rel_list[idx+1] - @rel_list[idx])
-
-      @lbox_list[idx].xscrollbar(@hscr_list[idx])
-
-      # add new base
-      @base_list << base
-    }
-
-    # pad
-    @f_title_pad = TkFrame.new(@frame, 'relief'=>'raised', 
-                               'borderwidth'=>@title_border, 
-                               'highlightthickness'=>@h_l_thick)
-
-    @f_scr_pad = TkFrame.new(@frame, 'relief'=>'sunken', 
-                             'borderwidth'=>1, 
-                             'highlightthickness'=>@h_l_thick)
-
-    # height check
-    title_height = 0
-    @title_list.each{|w| 
-      h = w.winfo_reqheight
-      title_height = h if title_height < h
-    }
-
-    hscr_height = 0
-    @hscr_list.each{|w| 
-      h = w.winfo_reqheight
-      hscr_height = h if hscr_height < h
-    }
-
-    @f_title.height title_height
-    @f_lbox.height lbox_height
-    @f_hscr.height hscr_height
-
-    # set control procedure for virtical scroll
-    @v_scroll.assign(*@lbox_list)
-
-    # set control procedure for horizoncal scroll
-    @h_scroll.assign(@c_title, @c_lbox, @c_hscr)
-
-    # binding for listboxes
-    @lbox_list.each_with_index{|l, idx| 
-      l.bind('Button-1', proc{|w, y| 
-               @frame.focus
-               select_line(w, w.nearest(y))
-             }, '%W %y')
-      l.bind('B1-Motion', proc{|w, y| 
-               select_line(w, w.nearest(y))
-             }, '%W %y')
-      l.bind('Double-Button-1', proc{
-               @command.call(get_select) if @command
-             })
-
-      l.bind('Control-Home', proc{|w| select_line(w, 0)}, '%W')
-      l.bind('Control-End', proc{|w| select_line(w, 'end')}, '%W')
-
-      l.bind('Button-2', proc{|x, y| 
-               @lbox_mark_x = x
-               @lbox_list.each{|lbox| lbox.scan_mark(x, y)}
-             }, '%x %y')
-      l.bind('B2-Motion', proc{|x, y| 
-               @lbox_list.each{|lbox| lbox.scan_dragto(@lbox_mark_x, y)}
-               l.scan_dragto(x, y)
-             }, '%x %y')
-    }
-
-    bbox = @w_title.bbox
-    @c_title.height(bbox[3])
-    @c_title.scrollregion(bbox)
-
-    bbox = @w_lbox.bbox
-    @c_lbox.height(bbox[3])
-    @c_lbox.scrollregion(bbox)
-
-    if @show_each_hscr
-      bbox = @w_hscr.bbox
-      @c_hscr.height(bbox[3])
-      @c_hscr.scrollregion(bbox)
-    end
-
-    # binding
-    @frame.takefocus(true)
-    @frame.bind('Key-Up', proc{select_shift(@lbox_list[0], -1)})
-    @frame.bind('Key-Down', proc{select_shift(@lbox_list[0], 1)})
-    @frame.bind('Return', proc{@command.call(get_select) if @command})
-
-    # alignment
-    TkGrid.rowconfigure(@frame, 0, 'weight'=>0)
-    TkGrid.rowconfigure(@frame, 1, 'weight'=>1)
-    TkGrid.rowconfigure(@frame, 2, 'weight'=>0)
-    TkGrid.rowconfigure(@frame, 3, 'weight'=>0)
-    TkGrid.columnconfigure(@frame, 0, 'weight'=>1)
-    TkGrid.columnconfigure(@frame, 1, 'weight'=>0)
-    TkGrid.columnconfigure(@frame, 2, 'weight'=>0)
-    @v_scroll.grid('row'=>1, 'column'=>2, 'sticky'=>'ns')
-    @c_title.grid('row'=>0, 'column'=>0, 'sticky'=>'news')
-    @f_title_pad.grid('row'=>0, 'column'=>2, 'sticky'=>'news')
-    @c_lbox.grid('row'=>1, 'column'=>0, 'sticky'=>'news')
-    @c_hscr.grid('row'=>2, 'column'=>0, 'sticky'=>'ew') if @show_each_hscr
-    @h_scroll.grid('row'=>3, 'column'=>0, 'sticky'=>'ew') if @show_win_hscr
-    @f_scr_pad.grid('row'=>2, 'rowspan'=>2, 'column'=>2, 'sticky'=>'news')
-
-    # binding for 'Configure' event
-    @c_lbox.bind('Configure', 
-                 proc{|height, width| reconstruct(height, width)}, 
-                 '%h %w')
-
-    # set default receiver of method calls
-    @path = @frame.path
-
-    # configure options
-    keys = {} unless keys
-    keys = _symbolkey2str(keys)
-
-    # command
-    cmd = keys.delete('command')
-    command(cmd) if cmd
-
-    # 'scrollbarwidth' option == 'width' option of scrollbars
-    width = keys.delete('scrollbarwidth')
-    scrollbarwidth(width) if width
-
-    # options for listbox titles
-    title_font = keys.delete('titlefont')
-    titlefont(title_font) if title_font
-
-    title_fg = keys.delete('titleforeground')
-    titleforeground(title_fg) if title_fg
-
-    title_bg = keys.delete('titlebackground')
-    titlebackground(title_bg) if title_bg
-
-    # set receivers for configure methods
-    delegate('DEFAULT', *@lbox_list)
-    delegate('activebackground', @v_scroll, @h_scroll, *@hscr_list)
-    delegate('troughcolor', @v_scroll, @h_scroll, *@hscr_list)
-    delegate('repeatdelay', @v_scroll, @h_scroll, *@hscr_list)
-    delegate('repeatinterval', @v_scroll, @h_scroll, *@hscr_list)
-    delegate('borderwidth', @frame)
-    delegate('width', @c_lbox, @c_title, @c_hscr)
-    delegate('relief', @frame)
-
-    # configure
-    configure(keys) if keys.size > 0
-  end
-  private :initialize_composite
-
-  # keep_minsize?
-  def keep_minsize?
-    @keep_minsize
-  end
-  def keep_minsize(bool)
-    @keep_minsize = bool
-  end
-
-  # each hscr
-  def show_each_hscr
-    @show_each_hscr = true
-    @c_hscr.grid('row'=>2, 'column'=>0, 'sticky'=>'ew')
-  end
-  def hide_each_hscr
-    @show_each_hscr = false
-    @c_hscr.ungrid
-  end
-
-  # window hscroll
-  def show_win_hscr
-    @show_win_hscr = true
-    @h_scroll.grid('row'=>3, 'column'=>0, 'sticky'=>'ew')
-  end
-  def hide_win_hscr
-    @show_each_hscr = false
-    @h_scroll.ungrid
-  end
-
-  # set command
-  def command(cmd)
-    @command = cmd
-    self
-  end
-
-  # set scrollbar width
-  def scrollbarwidth(width)
-    @scrbar_width = width
-    @v_scroll['width'] = @scrbar_width
-    @h_scroll['width'] = @scrbar_width
-    @hscr_list.each{|hscr| hscr['width'] = @scrbar_width}
-    self
-  end
-
-  # set scrollbar border
-  def scrollbarborder(width)
-    @scrbar_border = width
-    @v_scroll['border'] = @scrbar_border
-    @h_scroll['border'] = @scrbar_border
-    @hscr_list.each{|hscr| hscr['border'] = @scrbar_border}
-    self
-  end
-
-  # set listbox borders
-  def listboxborder(width)
-    @lbox_border = width
-    @lbox_list.each{|w| w['border'] = @lbox_border}
-    self
-  end
-
-  # set listbox relief
-  def listboxrelief(relief)
-    @lbox_list.each{|w| w['relief'] = relief}
-    self
-  end
-
-  # set title borders
-  def titleborder(width)
-    @title_border = width
-    @f_title_pad['border'] = @title_border
-    @title_list.each{|label| label['border'] = @title_border}
-    self
-  end
-
-  # set title font
-  def titlefont(font)
-    @title_list.each{|label| label['font'] = font}
-    title_height = 0
-    @title_list.each{|w| 
-      h = w.winfo_reqheight
-      title_height = h if title_height < h
-    }
-    @f_title.height title_height
-    bbox = @w_title.bbox
-    @c_title.height(bbox[3])
-    @c_title.scrollregion(bbox)
-    self
-  end
-
-  # set title foreground color
-  def titleforeground(fg)
-    @title_list.each{|label| label['foreground'] = fg}
-    self
-  end
-
-  # set title background color
-  def titlebackground(bg)
-    @f_title_pad['background'] = bg
-    @title_list.each{|label| label['background'] = bg}
-    self
-  end
-
-  # set title cmds
-  def titlecommand(idx, cmd=Proc.new)
-    @title_cmd[idx] = cmd
-  end
-
-  # call title cmds
-  def titleinvoke(idx)
-    @title_cmd[idx].call if @title_cmd[idx]
-  end
-
-  # get label widgets of listbox titles
-  def titlelabels(*indices)
-    @title_list[*indices]
-  end
-
-  # get listbox widgets
-  def columns(*indices)
-    @lbox_list[*indices]
-  end
-
-  def delete(*idx)
-    idx = idx.collect{|i|
-      if i.kind_of?(Integer)
-        "#{i}.0"
-      else
-        i.to_s
-      end
-    }
-    @lbox_list.collect{|lbox| lbox.delete(*idx)}
-  end
-
-  def get(idx_s, idx_e=nil)
-    unless idx_e
-      if idx_s.kind_of?(Integer)
-        idx_s = "#{idx_s}.0"
-        idx_e = "#{idx_s} lineend"
-      else
-        idx_s = idx_s.to_s
-        idx_e = "#{idx_s} lineend"
-      end
-      @lbox_list.collect{|lbox|
-        lbox.get(idx_s, idx_e)
-      }
-    else
-      if idx_s.kind_of?(Integer)
-        idx_s = "#{idx_s}.0"
-      else
-        idx_s = idx_s.to_s
-      end
-      if idx_e.kind_of?(Integer)
-        idx_e = "#{idx_e}.end"
-      else
-        idx_e = "#{idx_e} lineend"
-      end
-      list = @lbox_list.collect{|lbox| lbox.get(idx_s, idx_e).split(/\n/)}
-      result = []
-      list[0].each_with_index{|line, index|
-        result << list.collect{|lines| lines[index]}
-      }
-      result
-    end
-  end
-
-  def get_select
-    get(@lbox_list[0].select_index)
-  end
-
-  def _line_array_to_hash(line)
-    result = {}
-    @name_index.each_pair{|label, indices|
-      if indices.size == 1
-        result[label] = line[indices[0]]
-      else
-        result[label] = indices.collect{|index| line[index]}
-      end
-    }
-    result
-  end
-  private :_line_array_to_hash
-
-  def get_by_hash(*idx)
-    get_result = get(*idx)
-    if idx.size == 1
-      _line_array_to_hash(get_result)
-    else
-      get_result.collect{|line| _line_array_to_hash(line)}
-    end
-  end
-
-  def insert(idx, *lines)
-    lbox_ins = []
-    (0..@lbox_list.size).each{lbox_ins << []}
-
-    if idx.kind_of?(Integer)
-      idx = "#{idx}.0"
-    else
-      idx = idx.to_s
-    end
-
-    if @lbox_list[0].index('1.0 + 1 char') == @lbox_list[0].index('end')
-      cr = ""
-    else
-      cr = "\n"
-    end
-
-    lines.each{|line|
-      if line.kind_of? Hash
-        array = []
-        @name_index.each_pair{|label, indices|
-          if indices.size == 1
-            array[indices[0]] = line[label]
-          else
-            if line[label].kind_of? Array
-              indices.each_with_index{|index, num| 
-                array[index] = line[label][num]
-              }
-            else
-              array[indices[0]] = line[label]
-            end
-          end
-        }
-        line = array
-      end
-
-      @name_index.each_pair{|label, indices|
-        if indices.size == 1
-          lbox_ins[indices[0]] << line[indices[0]]
-        else
-          indices.each{|index| lbox_ins[index] << line[index]}
-        end
-      }
-    }   
-
-    @lbox_list.each_with_index{|lbox, index| 
-      lbox.insert(idx, cr + lbox_ins[index].join("\n")) if lbox_ins[index]
-    }
-  end
-
-  def select_clear(first, last=None)
-    @lbox_list.each{|lbox| lbox.sel_clear(first, last=None)}
-  end
-
-  def select_set(first, last=None)
-    @lbox_list.each{|lbox| lbox.sel_set(first, last=None)}
-  end
-
-  ###########################################
-  private
-
-  def reconstruct(height, width)
-    if @keep_minsize && width <= @width_total
-      @f_title.width(@width_total)
-      @f_lbox.width(@width_total)
-      @f_hscr.width(@width_total) if @show_each_hscr
-      @window_width = @width_total
-    else
-      @f_title.width(width)
-      @f_lbox.width(width)
-      @f_hscr.width(width) if @show_each_hscr
-      @window_width = width
-    end
-
-    @f_lbox.height(height)
-
-    @c_title.scrollregion(@w_title.bbox)
-    @c_lbox.scrollregion(@w_lbox.bbox)
-    @c_hscr.scrollregion(@w_hscr.bbox) if @show_each_hscr
-
-    (0..(@rel_list.size - 2)).each{|idx|
-      title, lbox, hscr = @base_list[idx]
-      title.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx])
-      lbox.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx], 
-                 'relheight'=>1.0)
-      hscr.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx])
-    }
-  end
-
-  def resize(x)
-    idx = @sel_sash
-    return if idx == 0
-
-    # adjustment of relative positioning
-    delta = (x - @x) / @frame_width
-    if delta < @rel_list[idx-1] - @rel_list[idx] + (2*@sash/@frame_width)
-      delta = @rel_list[idx-1] - @rel_list[idx] + (2*@sash/@frame_width)
-    elsif delta > @rel_list[idx+1] - @rel_list[idx] - (2*@sash/@frame_width)
-      delta = @rel_list[idx+1] - @rel_list[idx] - (2*@sash/@frame_width)
-    end
-    @rel_list[idx] += delta
-
-    # adjustment of leftside widget of the sash
-    title, lbox, hscr = @base_list[idx - 1]
-    title.place('relwidth'=>@rel_list[idx] - @rel_list[idx-1])
-    lbox.place('relwidth'=>@rel_list[idx] - @rel_list[idx-1], 'relheight'=>1.0)
-    hscr.place('relwidth'=>@rel_list[idx] - @rel_list[idx-1])
-
-    # adjustment of rightside widget of the sash
-    title, lbox, hscr = @base_list[idx]
-    title.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx], 
-                'relx'=>@rel_list[idx])
-    lbox.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx], 
-               'relx'=>@rel_list[idx], 'relheight'=>1.0)
-    hscr.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx], 
-               'relx'=>@rel_list[idx])
-
-    # update reference position
-    @x = x
-  end
-
-  def motion_cb(w, x, idx)
-    if x <= @sash && idx > 0
-      w.cursor 'sb_h_double_arrow'
-      @mode = :sash
-      @sel_sash = idx
-    elsif x >= w.winfo_width - @sash && idx < @lbox_total - 1
-      w.cursor 'sb_h_double_arrow'
-      @mode = :sash
-      @sel_sash = idx + 1
-    else
-      w.cursor ""
-      @mode = :title
-      @sel_sash = 0
-    end
-  end
-
-  def title_binding(title, index)
-    title.bind('Motion', proc{|w, x, idx| motion_cb(w, x, idx.to_i)}, 
-               "%W %x #{index}")
-
-    title.bind('Enter', proc{|w, x, idx| motion_cb(w, x, idx.to_i)}, 
-               "%W %x #{index}")
-
-    title.bind('Leave', proc{|w| w.cursor ""}, "%W")
-
-    title.bind('Button-1', 
-               proc{|w, x| 
-                 if @mode == :sash
-                   @x = x
-                   @frame_width = TkWinfo.width(@f_title).to_f
-                 else
-                   title.relief 'sunken'
-                 end
-               }, 
-               '%W %X')
-
-    title.bind('ButtonRelease-1', 
-               proc{|w, x, idx| 
-                 i = idx.to_i
-                 if @mode == :title && @title_cmd[i].kind_of?(Proc)
-                   @title_cmd[i].call
-                 end
-                 title.relief 'raised'
-                 motion_cb(w,x,i)
-               }, 
-               "%W %x #{index}")
-
-    title.bind('B1-Motion', proc{|x| resize(x) if @mode == :sash}, "%X")
-  end
-
-  ########################
-  def select_line(w, idx)
-    @lbox_list.each{|l|
-      l.select_clear(1, 'end')
-      l.select_set(idx)
-    }
-    w.select_set(idx)
-  end
-
-  def select_shift(w, dir)
-    head = w.index('@1,1').split('.')[0].to_i
-    tail = w.index("@1,#{w.winfo_height - 1}").split('.')[0].to_i - 1
-    idx = w.select_index + dir
-    last = w.index('end - 1 char').split('.')[0].to_i
-    if idx < 1
-      idx = 1
-    elsif idx > last
-      idx = last
-    end
-    @lbox_list.each{|l|
-      l.select_clear(1, 'end')
-      l.select_set(idx)
-    }
-    if head > idx
-      @lbox_list.each{|l| l.yview('scroll', -1, 'units')}
-    elsif tail < idx
-      @lbox_list.each{|l| l.yview('scroll', 1, 'units')}
-    end
-  end
-  ########################
-end
-
-################################################
-# test
-################################################
-if __FILE__ == $0
-  l = TkMultiColumnList.new(nil, 200, 
-                            [ ['L1', 200, proc{p 'click L1'}], 
-                              ['L2', 100], 
-                              ['L3', 200] ], 
-                            'width'=>350, 
-                            #'titleforeground'=>'yellow', 
-                            'titleforeground'=>'white', 
-                            #'titlebackground'=>'navy',
-                            'titlebackground'=>'blue',
-                            'titlefont'=>'courier'
-                            ).pack('fill'=>'both', 'expand'=>true)
-  l.insert('end', [1,2,3])
-  l.insert('end', [4,5,6])
-  l.insert('end', [4,5,6], [4,5,6])
-  l.insert('end', ['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 
-                   'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
-                   'cccccccccccccccccccccccccccccccccccccccccccccccccccc'])
-  l.insert('end', [1,2,3])
-  l.insert('end', [4,5,6], [4,5,6])
-  l.insert('end', ['aaaaaaaaaaaaaaa','bbbbbbbbbbbbbb','ccccccccccccccccc'])
-  l.insert('end', [1,2,3])
-  l.insert('end', [4,5,6], [4,5,6])
-  l.insert('end', ['aaaaaaaaaaaaaaa','bbbbbbbbbbbbbb','ccccccccccccccccc'])
-  l.insert('end', [1,2,3])
-  l.insert('end', [4,5,6], [4,5,6])
-  l.insert('end', ['aaaaaaaaaaaaaaa','bbbbbbbbbbbbbb','ccccccccccccccccc'])
-  l.insert('end', [1,2,3])
-  l.insert('end', [4,5,6], [4,5,6])
-  p l.columns(1)
-  p l.columns(1..3)
-  p l.columns(1,2)
-
-  l.command proc{|line_info| p line_info}
-
-  Tk.mainloop
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmultilistbox.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmultilistbox.rb
deleted file mode 100644 (file)
index 6f956d0..0000000
+++ /dev/null
@@ -1,654 +0,0 @@
-#
-# tkmultilistbox.rb : multiple listbox widget
-#                       by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
-#
-require 'tk'
-
-class TkMultiListbox < TkListbox
-  include TkComposite
-
-  #   lbox_height : height of listboxes (pixel)
-  #   title_info  : array [ [<title_string>,<init_width>], ... ]
-  #   keys        : hash {<option>=><value>, ... }
-  def initialize_composite(lbox_height, title_info, keys={})
-    # argument check
-    if (! title_info.kind_of? Array) or (title_info.size < 2)
-      raise
-    end
-
-    # decide total width
-    @width_total = 0
-    title_info.each{|title, width| @width_total += width.to_f}
-
-    # virtical scrollbar
-    @v_scroll = TkScrollbar.new(@frame, 'orient'=>'vertical')
-
-    # init arrays
-    @base_list = []
-    @rel_list   = []
-    @title_list = []
-    @lbox_list  = []
-    @hscr_list  = []
-
-    # rel-table of label=>index
-    @name_index = {}
-
-    # create base flames
-    @f_title = TkFrame.new(@frame, 'width'=>@width_total)
-    @f_lbox  = TkFrame.new(@frame, 
-                           'width'=>@width_total, 'height'=>lbox_height)
-    @f_hscr  = TkFrame.new(@frame, 'width'=>@width_total, 
-                           'height'=>@v_scroll.cget('width') + 
-                                     2 * @v_scroll.cget('borderwidth'))
-
-    # dummy label to keep the hight of title space
-    TkLabel.new(@f_title, 'text'=>' ').pack
-
-    # create each listbox
-    sum = 0.0
-    @rel_list << sum/@width_total
-    title_info.each_with_index{|(label, width), idx|
-      # set relation between label and index
-      if @name_index.include?(label)
-        @name_index[label] << idx
-      else
-        @name_index[label] = [idx]
-      end
-
-      # calculate relative positioning
-      sum += width
-      @rel_list << sum/@width_total
-
-      # title field
-      f = TkFrame.new(@f_title, 'width'=>width)
-      base = [f]
-      @title_list << TkLabel.new(f, 'text'=>label).pack('fill'=>'x')
-      f.place('relx'=>@rel_list[idx], 'y'=>0, 'anchor'=>'nw', 'width'=>-6, 
-              'relwidth'=>@rel_list[idx+1] - @rel_list[idx])
-
-      # listbox field
-      f = TkFrame.new(@f_lbox, 'width'=>width)
-      base << f
-      @lbox_list << TkListbox.new(f).pack('fill'=>'both', 'expand'=>true)
-      f.place('relx'=>@rel_list[idx], 'y'=>0, 'anchor'=>'nw', 'width'=>-4, 
-              'relwidth'=>@rel_list[idx+1] - @rel_list[idx], 'relheight'=>1.0)
-
-      # scrollbar field
-      f = TkFrame.new(@f_hscr, 'width'=>width)
-      base << f
-      @hscr_list << TkScrollbar.new(f, 'orient'=>'horizontal') . 
-                                              pack('fill'=>'x', 'anchor'=>'w')
-      f.place('relx'=>@rel_list[idx], 'y'=>0, 'anchor'=>'nw', 'width'=>-4, 
-              'relwidth'=>@rel_list[idx+1] - @rel_list[idx])
-
-      @lbox_list[idx].xscrollcommand proc{|first, last| 
-        @hscr_list[idx].set first, last
-      }
-      @hscr_list[idx].command proc{|*args| @lbox_list[idx].xview *args}
-
-      # add new base
-      @base_list << base
-    }
-
-    # create tab
-    @tab_list = [nil]
-    (1..(@rel_list.size - 2)).each{|idx|
-      tab = TkFrame.new(@f_title, 'cursor'=>'sb_h_double_arrow', 
-                        'width'=>6, 'borderwidth'=>2, 'relief'=>'raised')
-      @tab_list << tab
-      tab.place('relx'=>@rel_list[idx], 'anchor'=>'ne', 'relheight'=>0.95)
-      tab.bind('Button-1', 
-               proc{|x| @x = x; @frame_width = TkWinfo.width(@f_title).to_f}, 
-               '%X')
-      tab.bind('B1-Motion', proc{|x, idx| resize(x, idx.to_i)}, "%X #{idx}")
-    }
-
-    # set control procedure for virtical scroll
-    @lbox_list.each{|lbox|
-      lbox.yscrollcommand proc{|first, last| 
-        @v_scroll.set first, last
-      }
-    }
-    @v_scroll.command proc{|*args| @lbox_list.each{|lbox| lbox.yview *args} }
-
-    # binding for listboxes
-    @mode = {}
-    @mode['browse']   = browse_mode_bindtag
-    @mode['single']   = single_mode_bindtag
-    @mode['extended'] = extended_mode_bindtag
-    @mode['multiple'] = multiple_mode_bindtag
-    @current_mode = 'browse'
-    @lbox_list.each{|l| 
-      l.bind('Shift-Key-Left', 
-             proc{|w| focus_shift(w, -1); Tk.callback_break}, '%W')
-      l.bind('Shift-Key-Right', 
-             proc{|w| focus_shift(w, 1); Tk.callback_break}, '%W')
-
-      l.bind('Button-2', proc{|x, y| 
-               @lbox_mark_x = x
-               @lbox_list.each{|lbox| lbox.scan_mark(x, y)}
-             }, '%x %y')
-      l.bind('B2-Motion', proc{|x, y| 
-               @lbox_list.each{|lbox| lbox.scan_dragto(@lbox_mark_x, y)}
-               l.scan_dragto(x, y)
-             }, '%x %y')
-
-      l.bindtags(l.bindtags.unshift(@mode[@current_mode]))
-    }
-
-    # alignment
-    TkGrid.rowconfigure(@frame, 0, 'weight'=>0)
-    TkGrid.rowconfigure(@frame, 1, 'weight'=>1)
-    TkGrid.rowconfigure(@frame, 2, 'weight'=>0)
-    TkGrid.columnconfigure(@frame, 0, 'weight'=>1)
-    TkGrid.columnconfigure(@frame, 1, 'weight'=>0)
-    @v_scroll.grid('row'=>1, 'column'=>1, 'sticky'=>'ns')
-    @f_title.grid('row'=>0, 'column'=>0, 'sticky'=>'news')
-    @f_lbox.grid('row'=>1, 'column'=>0, 'sticky'=>'news')
-    @f_hscr.grid('row'=>2, 'column'=>0, 'sticky'=>'ew')
-
-    # binding for 'Configure' event
-    @frame.bind('Configure', proc{reconstruct})
-
-    # set default receiver of method calls
-    @path = @lbox_list[0].path
-
-    # configure options
-    keys = {} unless keys
-    keys = _symbolkey2str(keys)
-
-    # 'mode' option of listboxes
-    sel_mode = keys.delete('mode')
-    mode(sel_mode) if sel_mode
-
-    # 'scrollbarwidth' option == 'width' option of scrollbars
-    width = keys.delete('scrollbarwidth')
-    scrollbarwidth(width) if width
-
-    # options for listbox titles
-    title_font = keys.delete('titlefont')
-    title_fg = keys.delete('titleforeground')
-    title_bg = keys.delete('titlebackground')
-    if title_font or title_fg or title_bg
-      titleconfig(title_font, title_fg, title_bg)
-    end
-
-    # set receivers for configure methods
-    delegate('DEFAULT', *@lbox_list)
-    delegate('activebackground', @v_scroll, *@hscr_list)
-    delegate('troughcolor', @v_scroll, *@hscr_list)
-    delegate('repeatdelay', @v_scroll, *@hscr_list)
-    delegate('repeatinterval', @v_scroll, *@hscr_list)
-    delegate('borderwidth', @frame)
-    delegate('relief', @frame)
-
-    # configure
-    configure(keys) if keys.size > 0
-  end
-  private :initialize_composite
-
-  # set 'mode' option of listboxes
-  def mode(sel_mode)
-    @lbox_list.each{|l| 
-      tags = l.bindtags
-      tags = tags - [ @mode[@current_mode] ]
-      l.bindtags(tags.unshift(@mode[sel_mode]))
-      @current_mode = sel_mode
-    }
-  end
-
-  # set scrollbar width
-  def scrollbarwidth(width)
-    @v_scroll['width'] = width
-    @hscr_list.each{|hscr| hscr['width'] = width}
-    @f_hscr['height'] = width + 2 * @v_scroll.cget('borderwidth')
-  end
-
-  # set options of titles
-  def titleconfig(font, fg, bg)
-    keys = {}
-    keys['font'] = font if font
-    keys['foreground'] = fg if fg
-    keys['background'] = bg if bg
-    @title_list.each{|label| label.configure(keys)}
-  end
-
-  # get label widgets of listbox titles
-  def titlelabels(*indices)
-    @title_list[*indices]
-  end
-
-  # get listbox widgets
-  def columns(*indices)
-    @lbox_list[*indices]
-  end
-
-  def activate(idx)
-    @lbox_list.each{|lbox| lbox.activate(idx)}
-  end
-
-  def bbox(idx)
-    @lbox_list.collect{|lbox| lbox.bbox(idx)}
-  end
-
-  def delete(*idx)
-    @lbox_list.collect{|lbox| lbox.delete(*idx)}
-  end
-
-  def get(*idx)
-    if idx.size == 1
-      @lbox_list.collect{|lbox| lbox.get(*idx)}
-    else
-      list = @lbox_list.collect{|lbox| lbox.get(*idx)}
-      result = []
-      list[0].each_with_index{|line, index|
-        result << list.collect{|lines| lines[index]}
-      }
-      result
-    end
-  end
-
-  def _line_array_to_hash(line)
-    result = {}
-    @name_index.each_pair{|label, indices|
-      if indices.size == 1
-        result[label] = line[indices[0]]
-      else
-        result[label] = indices.collect{|index| line[index]}
-      end
-    }
-    result
-  end
-  private :_line_array_to_hash
-
-  def get_by_hash(*idx)
-    get_result = get(*idx)
-    if idx.size == 1
-      _line_array_to_hash(get_result)
-    else
-      get_result.collect{|line| _line_array_to_hash(line)}
-    end
-  end
-
-  def insert(idx, *lines)
-    lbox_ins = []
-    (0..@lbox_list.size).each{lbox_ins << []}
-
-    lines.each{|line|
-      if line.kind_of? Hash
-        array = []
-        @name_index.each_pair{|label, indices|
-          if indices.size == 1
-            array[indices[0]] = line[label]
-          else
-            if line[label].kind_of? Array
-              indices.each_with_index{|index, num| 
-                array[index] = line[label][num]
-              }
-            else
-              array[indices[0]] = line[label]
-            end
-          end
-        }
-        line = array
-      end
-
-      @name_index.each_pair{|label, indices|
-        if indices.size == 1
-          lbox_ins[indices[0]] << line[indices[0]]
-        else
-          indices.each{|index| lbox_ins[index] << line[index]}
-        end
-      }
-    }   
-
-    @lbox_list.each_with_index{|lbox, index| 
-      lbox.insert(idx, *lbox_ins[index]) if lbox_ins[index]
-    }
-  end
-
-  def selection_anchor(index)
-    @lbox_list.each{|lbox| lbox.selection_anchor(index)}
-  end
-
-  def selection_clear(first, last=None)
-    @lbox_list.each{|lbox| lbox.selection_clear(first, last=None)}
-  end
-
-  def selection_set(first, last=None)
-    @lbox_list.each{|lbox| lbox.selection_set(first, last=None)}
-  end
-
-  ###########################################
-  private
-
-  def reconstruct
-    (0..(@rel_list.size - 2)).each{|idx|
-      title, lbox, hscr = @base_list[idx]
-      title.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx])
-      lbox.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx], 
-                 'relheight'=>1.0)
-      hscr.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx])
-
-      tab = @tab_list[idx]
-      tab.place('relx'=>@rel_list[idx]) if tab
-    }
-  end
-
-  def resize(x, idx)
-    # adjustment of relative positioning
-    delta = (x - @x) / @frame_width
-    if delta < @rel_list[idx-1] - @rel_list[idx] + 0.02
-      delta = @rel_list[idx-1] - @rel_list[idx] + 0.02
-    elsif delta > @rel_list[idx+1] - @rel_list[idx] - 0.02
-      delta = @rel_list[idx+1] - @rel_list[idx] - 0.02
-    end
-    @rel_list[idx] += delta
-
-    # adjustment of leftside widget of the tab
-    title, lbox, hscr = @base_list[idx - 1]
-    title.place('relwidth'=>@rel_list[idx] - @rel_list[idx-1])
-    lbox.place('relwidth'=>@rel_list[idx] - @rel_list[idx-1], 'relheight'=>1.0)
-    hscr.place('relwidth'=>@rel_list[idx] - @rel_list[idx-1])
-
-    # adjustment of the tab position
-    @tab_list[idx].place('relx'=>@rel_list[idx])
-
-    # adjustment of rightside widget of the tab
-    title, lbox, hscr = @base_list[idx]
-    title.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx], 
-                'relx'=>@rel_list[idx])
-    lbox.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx], 
-               'relx'=>@rel_list[idx], 'relheight'=>1.0)
-    hscr.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx], 
-               'relx'=>@rel_list[idx])
-
-    # update reference position
-    @x = x
-  end
-
-  #################################
-  def browse_mode_bindtag
-    t = TkBindTag.new
-    t.bind('Button-1', 
-           proc{|w, y| w.focus; select_line(w, w.nearest(y))}, '%W %y')
-    t.bind('B1-Motion', proc{|w, y| select_line(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Shift-Button-1', 
-           proc{|w, y| active_line(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Key-Up', proc{|w| select_shift(w, -1)}, '%W')
-    t.bind('Key-Down', proc{|w| select_shift(w, 1)}, '%W')
-
-    t.bind('Control-Home', proc{|w| select_line(w, 0)}, '%W')
-    t.bind('Control-End', proc{|w| select_line(w, 'end')}, '%W')
-
-    t.bind('space', proc{|w| select_line(w, w.index('active').to_i)}, '%W')
-    t.bind('Select', proc{|w| select_line(w, w.index('active').to_i)}, '%W')
-    t.bind('Control-slash', 
-           proc{|w| select_line(w, w.index('active').to_i)}, '%W')
-
-    t
-  end
-
-  ########################
-  def single_mode_bindtag
-    t = TkBindTag.new
-    t.bind('Button-1', 
-           proc{|w, y| w.focus; select_only(w, w.nearest(y))}, '%W %y')
-    t.bind('ButtonRelease-1', 
-           proc{|w, y| active_line(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Shift-Button-1', 
-           proc{|w, y| active_line(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Key-Up', proc{|w| select_shift(w, -1)}, '%W')
-    t.bind('Key-Down', proc{|w| select_shift(w, 1)}, '%W')
-
-    t.bind('Control-Home', proc{|w| select_line(w, 0)}, '%W')
-    t.bind('Control-End', proc{|w| select_line(w, 'end')}, '%W')
-
-    t.bind('space', proc{|w| select_line(w, w.index('active').to_i)}, '%W')
-    t.bind('Select', proc{|w| select_line(w, w.index('active').to_i)}, '%W')
-    t.bind('Control-slash', 
-           proc{|w| select_line(w, w.index('active').to_i)}, '%W')
-    t.bind('Control-backslash', 
-           proc{@lbox_list.each{|l| l.selection_clear(0, 'end')}})
-
-    t
-  end
-
-  ########################
-  def extended_mode_bindtag
-    t = TkBindTag.new
-    t.bind('Button-1', 
-           proc{|w, y| w.focus; select_only(w, w.nearest(y))}, '%W %y')
-    t.bind('B1-Motion', proc{|w, y| select_range(w, w.nearest(y))}, '%W %y')
-
-    t.bind('ButtonRelease-1', 
-           proc{|w, y| active_line(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Shift-Button-1', 
-           proc{|w, y| select_range(w, w.nearest(y))}, '%W %y')
-    t.bind('Shift-B1-Motion', 
-           proc{|w, y| select_range(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Control-Button-1', 
-           proc{|w, y| select_toggle(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Control-B1-Motion', 
-           proc{|w, y| select_drag(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Key-Up', proc{|w| active_shift(w, -1)}, '%W')
-    t.bind('Key-Down', proc{|w| active_shift(w, 1)}, '%W')
-
-    t.bind('Shift-Up', proc{|w| select_expand(w, -1)}, '%W')
-    t.bind('Shift-Down', proc{|w| select_expand(w, 1)}, '%W')
-
-    t.bind('Control-Home', proc{|w| select_line2(w, 0)}, '%W')
-    t.bind('Control-End', proc{|w| select_line2(w, 'end')}, '%W')
-
-    t.bind('Control-Shift-Home', proc{|w| select_range(w, 0)}, '%W')
-    t.bind('Control-Shift-End', proc{|w| select_range(w, 'end')}, '%W')
-
-    t.bind('space', proc{|w| select_active(w)}, '%W')
-    t.bind('Select', proc{|w| select_active(w)}, '%W')
-    t.bind('Control-slash', proc{|w| select_all}, '%W')
-    t.bind('Control-backslash', proc{|w| clear_all}, '%W')
-
-    t
-  end
-
-  ########################
-  def multiple_mode_bindtag
-    t = TkBindTag.new
-    t.bind('Button-1', 
-           proc{|w, y| w.focus; select_line3(w, w.nearest(y))}, '%W %y')
-    t.bind('ButtonRelease-1', 
-           proc{|w, y| active_line(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Key-Up', proc{|w| active_shift(w, -1)}, '%W')
-    t.bind('Key-Down', proc{|w| active_shift(w, 1)}, '%W')
-
-    t.bind('Control-Home', proc{|w| select_line2(w, 0)}, '%W')
-    t.bind('Control-End', proc{|w| select_line2(w, 'end')}, '%W')
-
-    t.bind('Control-Shift-Home', proc{|w| active_line(w, 0)}, '%W')
-    t.bind('Control-Shift-End', proc{|w| active_line(w, 'end')}, '%W')
-
-    t.bind('space', proc{|w| select_active(w)}, '%W')
-    t.bind('Select', proc{|w| select_active(w)}, '%W')
-    t.bind('Control-slash', proc{|w| select_all}, '%W')
-    t.bind('Control-backslash', proc{|w| clear_all}, '%W')
-
-    t
-  end
-
-  ########################
-  def active_line(w, idx)
-    @lbox_list.each{|l| l.activate(idx)}
-  end
-
-  def select_only(w, idx)
-    @lbox_list.each{|l|
-      l.selection_clear(0, 'end')
-      l.selection_anchor(idx)
-      l.selection_set('anchor')
-    }
-  end
-
-  def select_range(w, idx)
-    @lbox_list.each{|l|
-      l.selection_clear(0, 'end')
-      l.selection_set('anchor', idx)
-    }
-  end
-
-  def select_toggle(w, idx)
-    st = w.selection_includes(idx)
-    @lbox_list.each{|l|
-      l.selection_anchor(idx)
-      if st == 1
-        l.selection_clear(idx)
-      else
-        l.selection_set(idx)
-      end
-    }
-  end
-
-  def select_drag(w, idx)
-    st = w.selection_includes('anchor')
-    @lbox_list.each{|l|
-      if st == 1
-        l.selection_set('anchor', idx)
-      else
-        l.selection_clear('anchor', idx)
-      end
-    }
-  end
-
-  def select_line(w, idx)
-    @lbox_list.each{|l|
-      l.selection_clear(0, 'end')
-      l.activate(idx)
-      l.selection_anchor(idx)
-      l.selection_set('anchor')
-    }
-    w.selection_set('anchor')
-  end
-
-  def select_line2(w, idx)
-    @lbox_list.each{|l|
-      l.activate(idx)
-      l.selection_anchor(idx)
-      l.selection_set('anchor')
-    }
-  end
-
-  def select_line3(w, idx)
-    @lbox_list.each{|l|
-      l.selection_set(idx)
-    }
-  end
-
-  def select_active(w)
-    idx = l.activate(idx)
-    @lbox_list.each{|l|
-      l.selection_set(idx)
-    }
-  end
-
-  def select_expand(w, dir)
-    idx = w.index('active').to_i + dir
-    if idx < 0
-      idx = 0
-    elsif idx >= w.size
-      idx = w.size - 1
-    end
-    @lbox_list.each{|l|
-      l.activate(idx)
-      l.selection_set(idx)
-    }
-  end
-
-  def active_shift(w, dir)
-    idx = w.index('active').to_i + dir
-    if idx < 0
-      idx = 0
-    elsif idx >= w.size
-      idx = w.size - 1
-    end
-    @lbox_list.each{|l|
-      l.activate(idx)
-      l.selection_anchor(idx)
-    }
-  end
-
-  def select_shift(w, dir)
-    idx = w.index('anchor').to_i + dir
-    if idx < 0
-      idx = 0
-    elsif idx >= w.size
-      idx = w.size - 1
-    end
-    @lbox_list.each{|l|
-      l.selection_clear(0, 'end')
-      l.activate(idx)
-      l.selection_anchor(idx)
-      l.selection_set('anchor')
-    }
-  end
-
-  def select_all
-    @lbox_list.each{|l|
-      l.selection_set(0, 'end')
-    }
-  end
-
-  def clear_all
-    @lbox_list.each{|l|
-      l.selection_clear(0, 'end')
-    }
-  end
-
-  def focus_shift(w, dir)
-    idx = @lbox_list.index(w) + dir
-    return if idx < 0
-    return if idx >= @lbox_list.size
-    @lbox_list[idx].focus
-  end
-  ########################
-end
-
-################################################
-# test
-################################################
-if __FILE__ == $0
-  f = TkFrame.new(nil, 'width'=>300, 
-                  'height'=>200).pack('fill'=>'both', 'expand'=>'true')
-  #f = TkFrame.new.pack('fill'=>'both', 'expand'=>'true')
-  l = TkMultiListbox.new(f, 150, 
-                         [ ['L1', 100], 
-                           ['L2', 200], 
-                           ['L3', 50] ], 
-                         'titlefont'=>'courier', 
-                         'titleforeground'=>'yellow', 
-                         'titlebackground'=>'navy'
-                         ).pack('fill'=>'both', 'expand'=>true)
-  l.insert('end', [1,2,3])
-  l.insert('end', [4,5,6])
-  l.insert('end', [4,5,6], [4,5,6])
-  l.insert('end', ['aaaaaaaaaaaaaaa','bbbbbbbbbbbbbb','ccccccccccccccccc'])
-  l.insert('end', [1,2,3])
-  l.insert('end', [4,5,6], [4,5,6])
-  l.insert('end', ['aaaaaaaaaaaaaaa','bbbbbbbbbbbbbb','ccccccccccccccccc'])
-  l.insert('end', [1,2,3])
-  l.insert('end', [4,5,6], [4,5,6])
-  l.insert('end', ['aaaaaaaaaaaaaaa','bbbbbbbbbbbbbb','ccccccccccccccccc'])
-  l.insert('end', [1,2,3])
-  l.insert('end', [4,5,6], [4,5,6])
-  p l.columns(1)
-  p l.columns(1..3)
-  p l.columns(1,2)
-  Tk.mainloop
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmultilistframe.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkmultilistframe.rb
deleted file mode 100644 (file)
index ef1a0a8..0000000
+++ /dev/null
@@ -1,940 +0,0 @@
-#
-# tkmultilistframe.rb : multiple listbox widget on scrollable frame
-#                       by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
-#
-require 'tk'
-
-class TkMultiListFrame < TkListbox
-  include TkComposite
-
-  #   lbox_height : height of listboxes (pixel)
-  #   title_info  : array [ [<title_string>,<init_width>], ... ]
-  #   keys        : hash {<option>=><value>, ... }
-  def initialize_composite(lbox_height, title_info, keys={})
-    # argument check
-    if (! title_info.kind_of? Array) or (title_info.size < 2)
-      raise
-    end
-
-    # mode
-    @keep_minsize = true
-    @show_each_hscr = true
-    @show_win_hscr = true
-
-    # init arrays
-    @base_list  = []
-    @rel_list   = []
-    @title_list = []
-    @title_cmd  = []
-    @lbox_list  = []
-    @hscr_list  = []
-
-    # decide total width
-    @lbox_total = title_info.size
-    @width_total = 0
-    title_info.each{|title, width, cmd| 
-      @width_total += width.to_f
-      @title_cmd << cmd
-    }
-
-    # rel-table of label=>index
-    @name_index = {}
-
-    # size definition
-    @window_width = @width_total
-    @sash = 5
-    @scrbar_width = 15
-    @scrbar_border = 3
-    @lbox_border = 1
-    @title_border = 3
-    @h_l_thick = 0
-
-    # init status
-    @mode = :title
-
-    # virtical scrollbar
-=begin
-    @v_scroll = TkScrollbar.new(@frame, 'highlightthickness'=>@h_l_thick, 
-                                'borderwidth'=>@scrbar_border, 
-                                'orient'=>'vertical', 'width'=>@scrbar_width)
-=end
-    @v_scroll = TkYScrollbar.new(@frame, 'highlightthickness'=>@h_l_thick, 
-                                 'borderwidth'=>@scrbar_border, 
-                                 'width'=>@scrbar_width)
-
-    # horizontal scrollbar
-=begin
-    @h_scroll = TkScrollbar.new(@frame, 'highlightthickness'=>@h_l_thick, 
-                                'borderwidth'=>@scrbar_border, 
-                                'orient'=>'horizontal', 'width'=>@scrbar_width)
-=end
-    @h_scroll = TkXScrollbar.new(@frame, 'highlightthickness'=>@h_l_thick, 
-                                 'borderwidth'=>@scrbar_border, 
-                                 'width'=>@scrbar_width)
-
-    # create base flames
-    @c_title = TkCanvas.new(@frame, 'highlightthickness'=>@h_l_thick, 
-                            'width'=>@window_width)
-    @f_title = TkFrame.new(@c_title, 'width'=>@width_total)
-    @w_title = TkcWindow.new(@c_title, 0, 0, 
-                             'window'=>@f_title, 'anchor'=>'nw')
-
-    @c_lbox  = TkCanvas.new(@frame, 'highlightthickness'=>@h_l_thick, 
-                            'width'=>@window_width)
-    @f_lbox  = TkFrame.new(@c_lbox, 'width'=>@width_total)
-    @w_lbox  = TkcWindow.new(@c_lbox, 0, 0, 'window'=>@f_lbox, 'anchor'=>'nw')
-
-    @c_hscr  = TkCanvas.new(@frame, 'highlightthickness'=>@h_l_thick, 
-                            'width'=>@window_width)
-    @f_hscr  = TkFrame.new(@c_hscr, 'width'=>@width_total)
-    @w_hscr  = TkcWindow.new(@c_hscr, 0, 0, 'window'=>@f_hscr, 'anchor'=>'nw')
-
-    # create each listbox
-    sum = 0.0
-    @rel_list << sum/@width_total
-    title_info.each_with_index{|(label, width), idx|
-      # set relation between label and index
-      if @name_index.include?(label)
-        @name_index[label] << idx
-      else
-        @name_index[label] = [idx]
-      end
-
-      # calculate relative positioning
-      sum += width
-      @rel_list << sum/@width_total
-
-      # title field
-      f = TkFrame.new(@f_title, 'width'=>width)
-      base = [f]
-
-      title = TkLabel.new(f, 'text'=>label, 'borderwidth'=>@title_border, 
-                          'relief'=>'raised', 'highlightthickness'=>@h_l_thick)
-      title_binding(title, idx)
-      title.pack('fill'=>'x')
-
-      @title_list << title
-
-      f.place('relx'=>@rel_list[idx], 'y'=>0, 'anchor'=>'nw', 'width'=>1, 
-              'relheight'=>1.0, 
-              'relwidth'=>@rel_list[idx+1] - @rel_list[idx])
-
-      # listbox field
-      f = TkFrame.new(@f_lbox, 'width'=>width)
-      base << f
-      @lbox_list << TkListbox.new(f, 'highlightthickness'=>@h_l_thick, 
-                                  'borderwidth'=>@lbox_border
-                                  ).pack('fill'=>'both', 'expand'=>true)
-      f.place('relx'=>@rel_list[idx], 'y'=>0, 'anchor'=>'nw', 'width'=>1, 
-              'relwidth'=>@rel_list[idx+1] - @rel_list[idx], 'relheight'=>1.0)
-
-      # scrollbar field
-      f = TkFrame.new(@f_hscr, 'width'=>width)
-      base << f
-=begin
-      @hscr_list << TkScrollbar.new(f, 'orient'=>'horizontal', 
-                                    'width'=>@scrbar_width, 
-                                    'borderwidth'=>@scrbar_border, 
-                                    'highlightthickness'=>@h_l_thick
-                                    ).pack('fill'=>'x', 'anchor'=>'w')
-=end
-      @hscr_list << TkXScrollbar.new(f, 'width'=>@scrbar_width, 
-                                     'borderwidth'=>@scrbar_border, 
-                                     'highlightthickness'=>@h_l_thick
-                                    ).pack('fill'=>'x', 'anchor'=>'w')
-      f.place('relx'=>@rel_list[idx], 'y'=>0, 'anchor'=>'nw', 'width'=>1, 
-              'relwidth'=>@rel_list[idx+1] - @rel_list[idx])
-
-=begin
-      @lbox_list[idx].xscrollcommand proc{|first, last| 
-        @hscr_list[idx].set first, last
-      }
-      @hscr_list[idx].command proc{|*args| @lbox_list[idx].xview *args}
-=end
-      @lbox_list[idx].xscrollbar(@hscr_list[idx])
-
-      # add new base
-      @base_list << base
-    }
-
-    # pad
-    # @f_title_pad = TkFrame.new(@frame)
-    @f_title_pad = TkFrame.new(@frame, 'relief'=>'raised', 
-                               'borderwidth'=>@title_border, 
-                               'highlightthickness'=>@h_l_thick)
-
-    @f_scr_pad = TkFrame.new(@frame, 'relief'=>'sunken', 
-                             'borderwidth'=>1, 
-                             'highlightthickness'=>@h_l_thick)
-
-    # height check
-    title_height = 0
-    @title_list.each{|w| 
-      h = w.winfo_reqheight
-      title_height = h if title_height < h
-    }
-
-    hscr_height = 0
-    @hscr_list.each{|w| 
-      h = w.winfo_reqheight
-      hscr_height = h if hscr_height < h
-    }
-
-    @f_title.height title_height
-    @f_lbox.height lbox_height
-    @f_hscr.height hscr_height
-
-    # set control procedure for virtical scroll
-=begin
-    @lbox_list.each{|lbox|
-      lbox.yscrollcommand proc{|first, last| 
-        @v_scroll.set first, last
-      }
-    }
-    @v_scroll.command proc{|*args| @lbox_list.each{|lbox| lbox.yview *args} }
-=end
-    @v_scroll.assign(*@lbox_list)
-
-    # set control procedure for horizoncal scroll
-=begin
-    @c_title.xscrollcommand proc{|first, last| 
-      @h_scroll.set first, last
-    }
-    @c_lbox.xscrollcommand proc{|first, last| 
-      @h_scroll.set first, last
-    }
-    @c_hscr.xscrollcommand proc{|first, last| 
-      @h_scroll.set first, last
-    }
-    @h_scroll.command proc{|*args| 
-      @c_title.xview *args
-      @c_lbox.xview *args
-      @c_hscr.xview *args if @show_each_hscr
-    }
-=end
-    @h_scroll.assign(@c_title, @c_lbox, @c_hscr)
-
-    # binding for listboxes
-    @lbox_mode = {}
-    @lbox_mode['browse']   = browse_mode_bindtag
-    @lbox_mode['single']   = single_mode_bindtag
-    @lbox_mode['extended'] = extended_mode_bindtag
-    @lbox_mode['multiple'] = multiple_mode_bindtag
-    @current_mode = 'browse'
-    @lbox_list.each_with_index{|l, idx| 
-      l.bind('Shift-Key-Left', 
-             proc{|w| focus_shift(w, -1); Tk.callback_break}, '%W')
-      l.bind('Shift-Key-Right', 
-             proc{|w| focus_shift(w, 1); Tk.callback_break}, '%W')
-
-      l.bind('Button-2', proc{|x, y| 
-               @lbox_mark_x = x
-               @lbox_list.each{|lbox| lbox.scan_mark(x, y)}
-             }, '%x %y')
-      l.bind('B2-Motion', proc{|x, y| 
-               @lbox_list.each{|lbox| lbox.scan_dragto(@lbox_mark_x, y)}
-               l.scan_dragto(x, y)
-             }, '%x %y')
-
-      l.bindtags(l.bindtags.unshift(@lbox_mode[@current_mode]))
-    }
-
-    bbox = @w_title.bbox
-    @c_title.height(bbox[3])
-    @c_title.scrollregion(bbox)
-
-    bbox = @w_lbox.bbox
-    @c_lbox.height(bbox[3])
-    @c_lbox.scrollregion(bbox)
-
-    if @show_each_hscr
-      bbox = @w_hscr.bbox
-      @c_hscr.height(bbox[3])
-      @c_hscr.scrollregion(bbox)
-    end
-
-    # alignment
-    TkGrid.rowconfigure(@frame, 0, 'weight'=>0)
-    TkGrid.rowconfigure(@frame, 1, 'weight'=>1)
-    TkGrid.rowconfigure(@frame, 2, 'weight'=>0)
-    TkGrid.rowconfigure(@frame, 3, 'weight'=>0)
-    TkGrid.columnconfigure(@frame, 0, 'weight'=>1)
-    TkGrid.columnconfigure(@frame, 1, 'weight'=>0)
-    TkGrid.columnconfigure(@frame, 2, 'weight'=>0)
-    @v_scroll.grid('row'=>1, 'column'=>2, 'sticky'=>'ns')
-    @c_title.grid('row'=>0, 'column'=>0, 'sticky'=>'news')
-    @f_title_pad.grid('row'=>0, 'column'=>2, 'sticky'=>'news')
-    @c_lbox.grid('row'=>1, 'column'=>0, 'sticky'=>'news')
-    @c_hscr.grid('row'=>2, 'column'=>0, 'sticky'=>'ew') if @show_each_hscr
-    @h_scroll.grid('row'=>3, 'column'=>0, 'sticky'=>'ew') if @show_win_hscr
-    @f_scr_pad.grid('row'=>2, 'rowspan'=>2, 'column'=>2, 'sticky'=>'news')
-
-    # binding for 'Configure' event
-    @c_lbox.bind('Configure', 
-                 proc{|height, width| reconstruct(height, width)}, 
-                 '%h %w')
-
-    # set default receiver of method calls
-    @path = @lbox_list[0].path
-
-    # configure options
-    keys = {} unless keys
-    keys = _symbolkey2str(keys)
-
-    # 'mode' option of listboxes
-    sel_mode = keys.delete('mode')
-    mode(sel_mode) if sel_mode
-
-    # 'scrollbarwidth' option == 'width' option of scrollbars
-    width = keys.delete('scrollbarwidth')
-    scrollbarwidth(width) if width
-
-    # options for listbox titles
-    title_font = keys.delete('titlefont')
-    titlefont(title_font) if title_font
-
-    title_fg = keys.delete('titleforeground')
-    titleforeground(title_fg) if title_fg
-
-    title_bg = keys.delete('titlebackground')
-    titlebackground(title_bg) if title_bg
-
-    # set receivers for configure methods
-    delegate('DEFAULT', *@lbox_list)
-    delegate('activebackground', @v_scroll, @h_scroll, *@hscr_list)
-    delegate('troughcolor', @v_scroll, @h_scroll, *@hscr_list)
-    delegate('repeatdelay', @v_scroll, @h_scroll, *@hscr_list)
-    delegate('repeatinterval', @v_scroll, @h_scroll, *@hscr_list)
-    delegate('borderwidth', @frame)
-    delegate('width', @c_lbox, @c_title, @c_hscr)
-    delegate('relief', @frame)
-
-    # configure
-    configure(keys) if keys.size > 0
-  end
-  private :initialize_composite
-
-  # set 'mode' option of listboxes
-  def mode(sel_mode)
-    @lbox_list.each{|l| 
-      tags = l.bindtags
-      tags = tags - [ @lbox_mode[@current_mode] ]
-      l.bindtags(tags.unshift(@lbox_mode[sel_mode]))
-      @current_mode = sel_mode
-    }
-  end
-
-  # keep_minsize?
-  def keep_minsize?
-    @keep_minsize
-  end
-  def keep_minsize(bool)
-    @keep_minsize = bool
-  end
-
-  # each hscr
-  def show_each_hscr
-    @show_each_hscr = true
-    @c_hscr.grid('row'=>2, 'column'=>0, 'sticky'=>'ew')
-  end
-  def hide_each_hscr
-    @show_each_hscr = false
-    @c_hscr.ungrid
-  end
-
-  # window hscroll
-  def show_win_hscr
-    @show_win_hscr = true
-    @h_scroll.grid('row'=>3, 'column'=>0, 'sticky'=>'ew')
-  end
-  def hide_win_hscr
-    @show_each_hscr = false
-    @h_scroll.ungrid
-  end
-
-  # set scrollbar width
-  def scrollbarwidth(width)
-    @scrbar_width = width
-    @v_scroll['width'] = @scrbar_width
-    @h_scroll['width'] = @scrbar_width
-    @hscr_list.each{|hscr| hscr['width'] = @scrbar_width}
-    self
-  end
-
-  # set scrollbar border
-  def scrollbarborder(width)
-    @scrbar_border = width
-    @v_scroll['border'] = @scrbar_border
-    @h_scroll['border'] = @scrbar_border
-    @hscr_list.each{|hscr| hscr['border'] = @scrbar_border}
-    self
-  end
-
-  # set listbox borders
-  def listboxborder(width)
-    @lbox_border = width
-    @lbox_list.each{|w| w['border'] = @lbox_border}
-    self
-  end
-
-  # set listbox relief
-  def listboxrelief(relief)
-    @lbox_list.each{|w| w['relief'] = relief}
-    self
-  end
-
-  # set title borders
-  def titleborder(width)
-    @title_border = width
-    @f_title_pad['border'] = @title_border
-    @title_list.each{|label| label['border'] = @title_border}
-    self
-  end
-
-  # set title font
-  def titlefont(font)
-    @title_list.each{|label| label['font'] = font}
-    title_height = 0
-    @title_list.each{|w| 
-      h = w.winfo_reqheight
-      title_height = h if title_height < h
-    }
-    @f_title.height title_height
-    bbox = @w_title.bbox
-    @c_title.height(bbox[3])
-    @c_title.scrollregion(bbox)
-    self
-  end
-
-  # set title foreground color
-  def titleforeground(fg)
-    @title_list.each{|label| label['foreground'] = fg}
-    self
-  end
-
-  # set title background color
-  def titlebackground(bg)
-    @f_title_pad['background'] = bg
-    @title_list.each{|label| label['background'] = bg}
-    self
-  end
-
-  # set title cmds
-  def titlecommand(idx, cmd=Proc.new)
-    @title_cmd[idx] = cmd
-  end
-
-  # call title cmds
-  def titleinvoke(idx)
-    @title_cmd[idx].call if @title_cmd[idx]
-  end
-
-  # get label widgets of listbox titles
-  def titlelabels(*indices)
-    @title_list[*indices]
-  end
-
-  # get listbox widgets
-  def columns(*indices)
-    @lbox_list[*indices]
-  end
-
-  def activate(idx)
-    @lbox_list.each{|lbox| lbox.activate(idx)}
-  end
-
-  def bbox(idx)
-    @lbox_list.collect{|lbox| lbox.bbox(idx)}
-  end
-
-  def delete(*idx)
-    @lbox_list.collect{|lbox| lbox.delete(*idx)}
-  end
-
-  def get(*idx)
-    if idx.size == 1
-      @lbox_list.collect{|lbox| lbox.get(*idx)}
-    else
-      list = @lbox_list.collect{|lbox| lbox.get(*idx)}
-      result = []
-      list[0].each_with_index{|line, index|
-        result << list.collect{|lines| lines[index]}
-      }
-      result
-    end
-  end
-
-  def _line_array_to_hash(line)
-    result = {}
-    @name_index.each_pair{|label, indices|
-      if indices.size == 1
-        result[label] = line[indices[0]]
-      else
-        result[label] = indices.collect{|index| line[index]}
-      end
-    }
-    result
-  end
-  private :_line_array_to_hash
-
-  def get_by_hash(*idx)
-    get_result = get(*idx)
-    if idx.size == 1
-      _line_array_to_hash(get_result)
-    else
-      get_result.collect{|line| _line_array_to_hash(line)}
-    end
-  end
-
-  def insert(idx, *lines)
-    lbox_ins = []
-    (0..@lbox_list.size).each{lbox_ins << []}
-
-    lines.each{|line|
-      if line.kind_of? Hash
-        array = []
-        @name_index.each_pair{|label, indices|
-          if indices.size == 1
-            array[indices[0]] = line[label]
-          else
-            if line[label].kind_of? Array
-              indices.each_with_index{|index, num| 
-                array[index] = line[label][num]
-              }
-            else
-              array[indices[0]] = line[label]
-            end
-          end
-        }
-        line = array
-      end
-
-      @name_index.each_pair{|label, indices|
-        if indices.size == 1
-          lbox_ins[indices[0]] << line[indices[0]]
-        else
-          indices.each{|index| lbox_ins[index] << line[index]}
-        end
-      }
-    }   
-
-    @lbox_list.each_with_index{|lbox, index| 
-      lbox.insert(idx, *lbox_ins[index]) if lbox_ins[index]
-    }
-  end
-
-  def selection_anchor(index)
-    @lbox_list.each{|lbox| lbox.selection_anchor(index)}
-  end
-
-  def selection_clear(first, last=None)
-    @lbox_list.each{|lbox| lbox.selection_clear(first, last=None)}
-  end
-
-  def selection_set(first, last=None)
-    @lbox_list.each{|lbox| lbox.selection_set(first, last=None)}
-  end
-
-  ###########################################
-  private
-
-  def reconstruct(height, width)
-    if @keep_minsize && width <= @width_total
-      @f_title.width(@width_total)
-      @f_lbox.width(@width_total)
-      @f_hscr.width(@width_total) if @show_each_hscr
-      @window_width = @width_total
-    else
-      @f_title.width(width)
-      @f_lbox.width(width)
-      @f_hscr.width(width) if @show_each_hscr
-      @window_width = width
-    end
-
-    @f_lbox.height(height)
-
-    @c_title.scrollregion(@w_title.bbox)
-    @c_lbox.scrollregion(@w_lbox.bbox)
-    @c_hscr.scrollregion(@w_hscr.bbox) if @show_each_hscr
-
-    (0..(@rel_list.size - 2)).each{|idx|
-      title, lbox, hscr = @base_list[idx]
-      title.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx])
-      lbox.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx], 
-                 'relheight'=>1.0)
-      hscr.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx])
-    }
-  end
-
-  def resize(x)
-    idx = @sel_sash
-    return if idx == 0
-
-    # adjustment of relative positioning
-    delta = (x - @x) / @frame_width
-    if delta < @rel_list[idx-1] - @rel_list[idx] + (2*@sash/@frame_width)
-      delta = @rel_list[idx-1] - @rel_list[idx] + (2*@sash/@frame_width)
-    elsif delta > @rel_list[idx+1] - @rel_list[idx] - (2*@sash/@frame_width)
-      delta = @rel_list[idx+1] - @rel_list[idx] - (2*@sash/@frame_width)
-    end
-    @rel_list[idx] += delta
-
-    # adjustment of leftside widget of the sash
-    title, lbox, hscr = @base_list[idx - 1]
-    title.place('relwidth'=>@rel_list[idx] - @rel_list[idx-1])
-    lbox.place('relwidth'=>@rel_list[idx] - @rel_list[idx-1], 'relheight'=>1.0)
-    hscr.place('relwidth'=>@rel_list[idx] - @rel_list[idx-1])
-
-    # adjustment of rightside widget of the sash
-    title, lbox, hscr = @base_list[idx]
-    title.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx], 
-                'relx'=>@rel_list[idx])
-    lbox.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx], 
-               'relx'=>@rel_list[idx], 'relheight'=>1.0)
-    hscr.place('relwidth'=>@rel_list[idx+1] - @rel_list[idx], 
-               'relx'=>@rel_list[idx])
-
-    # update reference position
-    @x = x
-  end
-
-  def motion_cb(w, x, idx)
-    if x <= @sash && idx > 0
-      w.cursor 'sb_h_double_arrow'
-      @mode = :sash
-      @sel_sash = idx
-    elsif x >= w.winfo_width - @sash && idx < @lbox_total - 1
-      w.cursor 'sb_h_double_arrow'
-      @mode = :sash
-      @sel_sash = idx + 1
-    else
-      w.cursor ""
-      @mode = :title
-      @sel_sash = 0
-    end
-  end
-
-  def title_binding(title, index)
-    title.bind('Motion', proc{|w, x, idx| motion_cb(w, x, idx.to_i)}, 
-               "%W %x #{index}")
-
-    title.bind('Enter', proc{|w, x, idx| motion_cb(w, x, idx.to_i)}, 
-               "%W %x #{index}")
-
-    title.bind('Leave', proc{|w| w.cursor ""}, "%W")
-
-    title.bind('Button-1', 
-               proc{|w, x| 
-                 if @mode == :sash
-                   @x = x
-                   @frame_width = TkWinfo.width(@f_title).to_f
-                 else
-                   title.relief 'sunken'
-                 end
-               }, 
-               '%W %X')
-
-    title.bind('ButtonRelease-1', 
-               proc{|w, x, idx| 
-                 i = idx.to_i
-                 if @mode == :title && @title_cmd[i].kind_of?(Proc)
-                   @title_cmd[i].call
-                 end
-                 title.relief 'raised'
-                 motion_cb(w,x,i)
-               }, 
-               "%W %x #{index}")
-
-    title.bind('B1-Motion', proc{|x| resize(x) if @mode == :sash}, "%X")
-  end
-
-  #################################
-  def browse_mode_bindtag
-    t = TkBindTag.new
-    t.bind('Button-1', 
-           proc{|w, y| w.focus; select_line(w, w.nearest(y))}, '%W %y')
-    t.bind('B1-Motion', proc{|w, y| select_line(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Shift-Button-1', 
-           proc{|w, y| active_line(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Key-Up', proc{|w| select_shift(w, -1)}, '%W')
-    t.bind('Key-Down', proc{|w| select_shift(w, 1)}, '%W')
-
-    t.bind('Control-Home', proc{|w| select_line(w, 0)}, '%W')
-    t.bind('Control-End', proc{|w| select_line(w, 'end')}, '%W')
-
-    t.bind('space', proc{|w| select_line(w, w.index('active').to_i)}, '%W')
-    t.bind('Select', proc{|w| select_line(w, w.index('active').to_i)}, '%W')
-    t.bind('Control-slash', 
-           proc{|w| select_line(w, w.index('active').to_i)}, '%W')
-
-    t
-  end
-
-  ########################
-  def single_mode_bindtag
-    t = TkBindTag.new
-    t.bind('Button-1', 
-           proc{|w, y| w.focus; select_only(w, w.nearest(y))}, '%W %y')
-    t.bind('ButtonRelease-1', 
-           proc{|w, y| active_line(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Shift-Button-1', 
-           proc{|w, y| active_line(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Key-Up', proc{|w| select_shift(w, -1)}, '%W')
-    t.bind('Key-Down', proc{|w| select_shift(w, 1)}, '%W')
-
-    t.bind('Control-Home', proc{|w| select_line(w, 0)}, '%W')
-    t.bind('Control-End', proc{|w| select_line(w, 'end')}, '%W')
-
-    t.bind('space', proc{|w| select_line(w, w.index('active').to_i)}, '%W')
-    t.bind('Select', proc{|w| select_line(w, w.index('active').to_i)}, '%W')
-    t.bind('Control-slash', 
-           proc{|w| select_line(w, w.index('active').to_i)}, '%W')
-    t.bind('Control-backslash', 
-           proc{@lbox_list.each{|l| l.selection_clear(0, 'end')}})
-
-    t
-  end
-
-  ########################
-  def extended_mode_bindtag
-    t = TkBindTag.new
-    t.bind('Button-1', 
-           proc{|w, y| w.focus; select_only(w, w.nearest(y))}, '%W %y')
-    t.bind('B1-Motion', proc{|w, y| select_range(w, w.nearest(y))}, '%W %y')
-
-    t.bind('ButtonRelease-1', 
-           proc{|w, y| active_line(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Shift-Button-1', 
-           proc{|w, y| select_range(w, w.nearest(y))}, '%W %y')
-    t.bind('Shift-B1-Motion', 
-           proc{|w, y| select_range(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Control-Button-1', 
-           proc{|w, y| select_toggle(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Control-B1-Motion', 
-           proc{|w, y| select_drag(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Key-Up', proc{|w| active_shift(w, -1)}, '%W')
-    t.bind('Key-Down', proc{|w| active_shift(w, 1)}, '%W')
-
-    t.bind('Shift-Up', proc{|w| select_expand(w, -1)}, '%W')
-    t.bind('Shift-Down', proc{|w| select_expand(w, 1)}, '%W')
-
-    t.bind('Control-Home', proc{|w| select_line2(w, 0)}, '%W')
-    t.bind('Control-End', proc{|w| select_line2(w, 'end')}, '%W')
-
-    t.bind('Control-Shift-Home', proc{|w| select_range(w, 0)}, '%W')
-    t.bind('Control-Shift-End', proc{|w| select_range(w, 'end')}, '%W')
-
-    t.bind('space', proc{|w| select_active(w)}, '%W')
-    t.bind('Select', proc{|w| select_active(w)}, '%W')
-    t.bind('Control-slash', proc{|w| select_all}, '%W')
-    t.bind('Control-backslash', proc{|w| clear_all}, '%W')
-
-    t
-  end
-
-  ########################
-  def multiple_mode_bindtag
-    t = TkBindTag.new
-    t.bind('Button-1', 
-           proc{|w, y| w.focus; select_line3(w, w.nearest(y))}, '%W %y')
-    t.bind('ButtonRelease-1', 
-           proc{|w, y| active_line(w, w.nearest(y))}, '%W %y')
-
-    t.bind('Key-Up', proc{|w| active_shift(w, -1)}, '%W')
-    t.bind('Key-Down', proc{|w| active_shift(w, 1)}, '%W')
-
-    t.bind('Control-Home', proc{|w| select_line2(w, 0)}, '%W')
-    t.bind('Control-End', proc{|w| select_line2(w, 'end')}, '%W')
-
-    t.bind('Control-Shift-Home', proc{|w| active_line(w, 0)}, '%W')
-    t.bind('Control-Shift-End', proc{|w| active_line(w, 'end')}, '%W')
-
-    t.bind('space', proc{|w| select_active(w)}, '%W')
-    t.bind('Select', proc{|w| select_active(w)}, '%W')
-    t.bind('Control-slash', proc{|w| select_all}, '%W')
-    t.bind('Control-backslash', proc{|w| clear_all}, '%W')
-
-    t
-  end
-
-  ########################
-  def active_line(w, idx)
-    @lbox_list.each{|l| l.activate(idx)}
-  end
-
-  def select_only(w, idx)
-    @lbox_list.each{|l|
-      l.selection_clear(0, 'end')
-      l.selection_anchor(idx)
-      l.selection_set('anchor')
-    }
-  end
-
-  def select_range(w, idx)
-    @lbox_list.each{|l|
-      l.selection_clear(0, 'end')
-      l.selection_set('anchor', idx)
-    }
-  end
-
-  def select_toggle(w, idx)
-    st = w.selection_includes(idx)
-    @lbox_list.each{|l|
-      l.selection_anchor(idx)
-      if st == 1
-        l.selection_clear(idx)
-      else
-        l.selection_set(idx)
-      end
-    }
-  end
-
-  def select_drag(w, idx)
-    st = w.selection_includes('anchor')
-    @lbox_list.each{|l|
-      if st == 1
-        l.selection_set('anchor', idx)
-      else
-        l.selection_clear('anchor', idx)
-      end
-    }
-  end
-
-  def select_line(w, idx)
-    @lbox_list.each{|l|
-      l.selection_clear(0, 'end')
-      l.activate(idx)
-      l.selection_anchor(idx)
-      l.selection_set('anchor')
-    }
-    w.selection_set('anchor')
-  end
-
-  def select_line2(w, idx)
-    @lbox_list.each{|l|
-      l.activate(idx)
-      l.selection_anchor(idx)
-      l.selection_set('anchor')
-    }
-  end
-
-  def select_line3(w, idx)
-    @lbox_list.each{|l|
-      l.selection_set(idx)
-    }
-  end
-
-  def select_active(w)
-    idx = l.activate(idx)
-    @lbox_list.each{|l|
-      l.selection_set(idx)
-    }
-  end
-
-  def select_expand(w, dir)
-    idx = w.index('active').to_i + dir
-    if idx < 0
-      idx = 0
-    elsif idx >= w.size
-      idx = w.size - 1
-    end
-    @lbox_list.each{|l|
-      l.activate(idx)
-      l.selection_set(idx)
-    }
-  end
-
-  def active_shift(w, dir)
-    idx = w.index('active').to_i + dir
-    if idx < 0
-      idx = 0
-    elsif idx >= w.size
-      idx = w.size - 1
-    end
-    @lbox_list.each{|l|
-      l.activate(idx)
-      l.selection_anchor(idx)
-    }
-  end
-
-  def select_shift(w, dir)
-    idx = w.index('anchor').to_i + dir
-    if idx < 0
-      idx = 0
-    elsif idx >= w.size
-      idx = w.size - 1
-    end
-    @lbox_list.each{|l|
-      l.selection_clear(0, 'end')
-      l.activate(idx)
-      l.selection_anchor(idx)
-      l.selection_set('anchor')
-    }
-  end
-
-  def select_all
-    @lbox_list.each{|l|
-      l.selection_set(0, 'end')
-    }
-  end
-
-  def clear_all
-    @lbox_list.each{|l|
-      l.selection_clear(0, 'end')
-    }
-  end
-
-  def focus_shift(w, dir)
-    idx = @lbox_list.index(w) + dir
-    return if idx < 0
-    return if idx >= @lbox_list.size
-    @lbox_list[idx].focus
-  end
-  ########################
-end
-
-################################################
-# test
-################################################
-if __FILE__ == $0
-  l = TkMultiListFrame.new(nil, 200, 
-                           [ ['L1', 200, proc{p 'click L1'}], 
-                             ['L2', 100], 
-                             ['L3', 200] ], 
-                           'width'=>350, 
-                           #'titleforeground'=>'yellow', 
-                           'titleforeground'=>'white', 
-                           #'titlebackground'=>'navy',
-                           'titlebackground'=>'blue',
-                           'titlefont'=>'courier'
-                           ).pack('fill'=>'both', 'expand'=>true)
-  l.insert('end', [1,2,3])
-  l.insert('end', [4,5,6])
-  l.insert('end', [4,5,6], [4,5,6])
-  l.insert('end', ['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 
-                   'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
-                   'cccccccccccccccccccccccccccccccccccccccccccccccccccc'])
-  l.insert('end', [1,2,3])
-  l.insert('end', [4,5,6], [4,5,6])
-  l.insert('end', ['aaaaaaaaaaaaaaa','bbbbbbbbbbbbbb','ccccccccccccccccc'])
-  l.insert('end', [1,2,3])
-  l.insert('end', [4,5,6], [4,5,6])
-  l.insert('end', ['aaaaaaaaaaaaaaa','bbbbbbbbbbbbbb','ccccccccccccccccc'])
-  l.insert('end', [1,2,3])
-  l.insert('end', [4,5,6], [4,5,6])
-  l.insert('end', ['aaaaaaaaaaaaaaa','bbbbbbbbbbbbbb','ccccccccccccccccc'])
-  l.insert('end', [1,2,3])
-  l.insert('end', [4,5,6], [4,5,6])
-  p l.columns(1)
-  p l.columns(1..3)
-  p l.columns(1,2)
-  Tk.mainloop
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkoptdb-safeTk.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkoptdb-safeTk.rb
deleted file mode 100644 (file)
index a060983..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'multi-tk'
-
-TkMessage.new(:text => <<EOM).pack
-This is a sample of the safe-Tk slave interpreter. \
-On the slave interpreter, 'tkoptdb.rb' demo is running.
-( NOTE:: a safe-Tk interpreter can't read options \
-from a file. Options are given by the master interpreter \
-in this script. )
-The window shown this message is a root widget of \
-the default master interpreter. The other window \
-is a toplevel widget of the master interpreter, and it \
-has a container frame of the safe-Tk slave interpreter.
-'exit' on the slave interpreter exits the slave only. \
-You can also delete the slave by the button on the toplevel widget.
-EOM
-
-if ENV['LANG'] =~ /^ja/
-  # read Japanese resource
-  ent = TkOptionDB.read_entries(File.expand_path('resource.ja', 
-                                                 File.dirname(__FILE__)),
-                                'euc-jp')
-else
-  # read English resource
-  ent = TkOptionDB.read_entries(File.expand_path('resource.en', 
-                                                File.dirname(__FILE__)))
-end
-
-file = File.expand_path('tkoptdb.rb', File.dirname(__FILE__))
-
-ip = MultiTkIp.new_safeTk{
-  # When a block is given to 'new_safeTk' method, 
-  # the block is evaluated on $SAFE==4.
-  ent.each{|pat, val| Tk.tk_call('option', 'add', pat, val)}
-}
-
-print "ip.eval_proc{$SAFE} ==> ", ip.eval_proc{$SAFE}, "\n"
-
-print "\ncall 'ip.wait_on_mainloop = false'\n"
-print "If 'ip.wait_on_mainloop? == true', ", 
-  "when 'mainloop' is called on 'ip.eval_proc', ", 
-  "'ip.eval_proc' does't return while the root window exists.\n", 
-  "If you want to avoid that, set wait_on_mainloop to false. ", 
-  "Then the mainloop in the eval_proc returns soon ", 
-  "and the following steps are evaluated. \n", 
-  "If you hate the both of them, use 'ip.bg_eval_proc' or ", 
-  "wrap 'ip.eval_proc' by a thread.\n"
-
-ip.wait_on_mainloop = false
-
-ret = ip.eval_proc{
-  # When a block is given to 'eval_proc' method, 
-  # the block is evaluated on the IP's current safe level.
-  # So, the followings raises an exception. 
-  # An Exception object of the exception is returned as a 
-  # return value of this method.
-
-  load file
-}
-print "\nip.eval_proc{}, which includes insecure operiation in the given block, returns an exception object: ", ret.inspect, "\n"
-
-print "If a proc object is given, the proc is evaluated on the safe-level which is kept on the proc :: ip.eval_proc( proc{$SAFE} ) ==> ", ip.eval_proc(proc{$SAFE}), "\n"
-
-safe0_cmd = Proc.new{
-  print 'safe0_cmd safe-level == ', $SAFE, "\n"
-  # This proc object keeps current safe-level ($SAFE==0). 
-  load file
-}
-ip.eval_proc{safe0_cmd.call}
-
-# Tk.mainloop is ignored on the slave-IP
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkoptdb.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkoptdb.rb
deleted file mode 100644 (file)
index 47784ea..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-#!/usr/bin/env ruby
-#
-#  sample script of TkOptionDB
-#
-#  If 'LANG' environment variable's value is started by 'ja',  
-#  then read Japanese resource data and display Japanese button text. 
-#  In other case, read English resource data and display English text. 
-#
-require "tk"
-
-if __FILE__ == $0 || !TkCore::INTERP.safe?
-  if ENV['LANG'] =~ /^ja/
-    # read Japanese resource
-    TkOptionDB.read_with_encoding(File.expand_path('resource.ja', 
-                                                   File.dirname(__FILE__)), 
-                                  'euc-jp')
-  else
-    # read English resource
-    TkOptionDB.readfile(File.expand_path('resource.en', 
-                                         File.dirname(__FILE__)))
-  end
-end
-
-# 'show_msg' and 'bye_msg' procedures can be defined on BTN_CMD resource.
-# Those procedures are called under $SAFE==2
-cmd = TkOptionDB.new_proc_class(:BTN_CMD, [:show_msg, :bye_msg], 3) {
-  # If you want to check resource string (str), 
-  # please define __check_proc_string__(str) like this.
-  class << self
-    def __check_proc_string__(str)
-      print "($SAFE=#{$SAFE} >>>) check!! str.tainted?::#{str.tainted?}"
-      str.untaint
-      print "==>#{str.tainted?} (<<< $SAFE=#{$SAFE}): "
-      str
-    end
-    private :__check_proc_string__
-  end
-}
-
-# following two frame widgets use same database entry
-TkFrame.new(:class=>'BtnFrame'){|f|
-  pack(:padx=>5, :pady=>5)
-  TkButton.new(:parent=>f, :widgetname=>'hello'){ 
-    command proc{
-      print "($SAFE=#{$SAFE} >>>) : "
-      cmd.show_msg(TkOptionDB.inspect)
-      print "(<<< $SAFE=#{$SAFE})"
-    } 
-    pack(:fill=>:x, :padx=>10, :pady=>10)
-  }
-  TkButton.new(:command=>proc{
-                 print "($SAFE=#{$SAFE} >>>) : "
-                 cmd.bye_msg
-                 print "(<<< $SAFE=#{$SAFE} ) : "
-                 exit
-               }, 
-               :parent=>f, :widgetname=>'quit'){
-    pack(:fill=>:x, :padx=>10, :pady=>10)
-  }
-}
-
-class BtnFrame < TkFrame; end
-BtnFrame.new{|f|
-  pack(:padx=>5, :pady=>5)
-  TkButton.new(:parent=>f, :widgetname=>'hello'){ 
-    command proc{
-      print "($SAFE=#{$SAFE} >>>) : "
-      cmd.show_msg(TkOptionDB.inspect)
-      print "(<<< $SAFE=#{$SAFE})"
-    } 
-    pack(:fill=>:x, :padx=>10, :pady=>10)
-  }
-  TkButton.new(:command=>proc{
-                 print "($SAFE=#{$SAFE} >>>) : "
-                 cmd.bye_msg
-                 print "(<<< $SAFE=#{$SAFE})"
-                 exit
-               }, 
-               :parent=>f, :widgetname=>'quit'){
-    pack(:fill=>:x, :padx=>10, :pady=>10)
-  }
-}
-
-# if unknown class, use default option values
-TkFrame.new(:class=>'BtnFrame2'){|f|
-  pack(:padx=>5, :pady=>5)
-  TkButton.new(:parent=>f, :widgetname=>'hello'){ 
-    command proc{
-      print "($SAFE=#{$SAFE} >>>) : "
-      cmd.show_msg(TkOptionDB.inspect)
-      print "(<<< $SAFE=#{$SAFE})"
-    } 
-    pack(:fill=>:x, :padx=>10, :pady=>10)
-  }
-  TkButton.new(:command=>proc{
-                 print "($SAFE=#{$SAFE} >>>) : "
-                 cmd.bye_msg
-                 print "(<<< $SAFE=#{$SAFE})"
-                 exit
-               }, 
-               :parent=>f, :widgetname=>'quit'){
-    pack(:fill=>:x, :padx=>10, :pady=>10)
-  }
-}
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkrttimer.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tkrttimer.rb
deleted file mode 100644 (file)
index 0abd4ec..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/env ruby
-# This script is a re-implementation of tktimer.rb with TkTimer(TkAfter) class.
-
-require "tk"
-
-root = TkRoot.new(:title=>'realtime timer sample')
-
-f1 = TkFrame.new(:borderwidth=>2, :relief=>:ridge)
-f1.pack(:side=>:bottom, :fill=>:both)
-TkLabel.new(f1, :text=>'use TkTimer (TkAfter) class').pack(:anchor=>:center)
-label1 = TkLabel.new(:parent=>f1, :relief=>:raised, 
-                     :width=>10).pack(:fill=>:both)
-
-f2 = TkFrame.new(:borderwidth=>2, :relief=>:ridge)
-f2.pack(:side=>:bottom, :fill=>:both)
-TkLabel.new(f2, :text=>'use TkRTTimer class').pack
-label2 = TkLabel.new(:parent=>f2, :relief=>:raised, 
-                     :width=>10).pack(:fill=>:both)
-
-TkLabel.new(:padx=>10, :pady=>5, :justify=>'left', :text=><<EOT).pack
-Interval setting of each timer object is 10 ms.
-Each timer object counts up the value on each callback
-(the value is not the clock data).
-The count of the TkTimer object is delayed by execution 
-time of callbacks and inaccuracy of interval.
-On the other hand, the count of the TkRTTimer object is 
-not delayed. Its callback interval is not accurate too. 
-But it can compute error correction about the time when 
-a callback should start.
-EOT
-
-# define the procedure repeated by the TkTimer object
-tick = proc{|aobj| #<== TkTimer object
-  cnt = aobj.return_value + 1  # return_value keeps a result of the last proc
-  label = aobj.current_args[0]
-  label.text format("%d.%02d", *(cnt.divmod(100)))
-  cnt #==> return value is kept by TkTimer object
-      #    (so, can be send to the next repeat-proc)
-}
-
-timer1 = TkTimer.new(10, -1, [tick, label1])    # 10 ms interval
-timer2 = TkRTTimer.new(10, -1, [tick, label2])  # 10 ms interval
-
-timer1.start(0, proc{ label1.text('0.00'); 0 })
-timer2.start(0, proc{ label2.text('0.00'); 0 })
-
-b_start = TkButton.new(:text=>'Start', :state=>:disabled) {
-  pack(:side=>:left, :fill=>:both, :expand=>true)
-}
-
-b_stop  = TkButton.new(:text=>'Stop', :state=>:normal) {
-  pack('side'=>'left', 'fill'=>'both', 'expand'=>'yes')
-}
-
-b_start.command {
-  timer1.continue
-  timer2.continue
-  b_stop.state(:normal)
-  b_start.state(:disabled)
-}
-
-b_stop.command {
-  timer1.stop
-  timer2.stop
-  b_start.state(:normal)
-  b_stop.state(:disabled)
-}
-
-TkButton.new(:text=>'Reset', :state=>:normal) {
-  command { timer1.reset; timer2.reset }
-  pack(:side=>:right, :fill=>:both, :expand=>:yes)
-}
-
-ev_quit = TkVirtualEvent.new('Control-c', 'Control-q')
-Tk.root.bind(ev_quit, proc{Tk.exit}).focus
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tksleep_sample.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tksleep_sample.rb
deleted file mode 100644 (file)
index 23f6eca..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-require 'tk'
-
-v = TkVariable.new(0)
-l = TkLabel.new(:textvariable=>v).pack(:pady=>[1, 10])
-
-a = TkButton.new(:text=>"button A :: proc{p ['AAA', v.value]}").pack(:fill=>:x, :pady=>[1, 15], :padx=>15)
-a.command{p ['AAA', v.value]}
-
-TkLabel.new(:text=>'Callback of the button B returns LIFO order').pack
-b = TkButton.new(:text=>"button B :: proc{n = v.value; p ['B:start', n]; Tk.sleep(10000); p ['B:end', n]}").pack(:fill=>:x, :pady=>[1, 15], :padx=>15)
-b.command{n = v.value; p ['B:start', n]; Tk.sleep(10000); p ['B:end', n]}
-
-TkLabel.new(:text=>'Callback of the button C returns FIFO order').pack
-c = TkButton.new(:text=>"button C :: proc{n = v.value; Thread.new{p ['C:start', n]; Tk.sleep(10000); p ['C:end', n]}}").pack(:fill=>:x, :pady=>[1, 15], :padx=>15)
-c.command{n = v.value; Thread.new{p ['C:start', n]; Tk.sleep(10000); p ['C:end', n]}}
-
-TkLabel.new(:text=>'Callback of the button D blocks eventloop (no respond to event)').pack
-d = TkButton.new(:text=>"button D :: proc{n = v.value; p ['D:start', n]; sleep(10); p ['D:end', n]}").pack(:fill=>:x, :pady=>[1,15], :padx=>15)
-d.command{n = v.value; p ['D:start', n]; sleep(10); p ['D:end', n]}
-
-TkLabel.new(:text=>'Callback of the button E is another way to avoid eventloop blocking').pack
-e = TkButton.new(:text=>"button E :: proc{n = v.value; Thread.new{p ['D:start', n]; sleep(10); p ['D:end', n]}}").pack(:fill=>:x, :pady=>[1,15], :padx=>15)
-e.command{n = v.value; Thread.new{p ['D:start', n]; sleep(10); p ['D:end', n]}}
-
-TkButton.new(:text=>'QUIT', :command=>proc{exit}).pack
-
-TkTimer.new(500, -1){v.numeric += 1}.start
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tktextframe.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tktextframe.rb
deleted file mode 100644 (file)
index bdab057..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-#
-#  tktextframe.rb : a sample of TkComposite
-#
-#                         by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
-#
-require 'tk'
-
-class TkTextFrame < TkText
-  include TkComposite
-
-  def initialize_composite(keys={})
-    keys = _symbolkey2str(keys)
-
-    # create scrollbars
-    @v_scroll = TkScrollbar.new(@frame, 'orient'=>'vertical')
-    @h_scroll = TkScrollbar.new(@frame, 'orient'=>'horizontal')
-
-    # create a text widget
-    @text = TkText.new(@frame, 'wrap'=>'none')
-
-    # set default receiver of method calls
-    @path = @text.path
-
-    # assign scrollbars
-    @text.xscrollbar(@h_scroll)
-    @text.yscrollbar(@v_scroll)
-
-    # allignment
-    TkGrid.rowconfigure(@frame, 0, 'weight'=>1, 'minsize'=>0)
-    TkGrid.columnconfigure(@frame, 0, 'weight'=>1, 'minsize'=>0)
-    @text.grid('row'=>0, 'column'=>0, 'sticky'=>'news')
-
-    # scrollbars ON
-    vscroll(keys.delete('vscroll'){true})
-    hscroll(keys.delete('hscroll'){true})
-
-    # set background of the text widget
-=begin
-    color = keys.delete('textbackground')
-    textbackground(color) if color
-=end
-    # please check the differences of the following definitions
-    option_methods(
-       [:scrollbarwidth, :get_scrollbarwidth], 
-       [:textbackground, nil, :textbg_info], 
-       :textborderwidth, 
-       :textrelief
-    )
-
-    # set receiver widgets for configure methods (with alias)
-    delegate_alias('scrollbarrelief', 'relief', @h_scroll, @v_scroll)
-
-    # set receiver widgets for configure methods
-    delegate('DEFAULT', @text)
-    delegate('background', @frame, @h_scroll, @v_scroll)
-    delegate('activebackground', @h_scroll, @v_scroll)
-    delegate('troughcolor', @h_scroll, @v_scroll)
-    delegate('repeatdelay', @h_scroll, @v_scroll)
-    delegate('repeatinterval', @h_scroll, @v_scroll)
-    delegate('borderwidth', @frame)
-    delegate('relief', @frame)
-
-    # do configure
-    configure keys unless keys.empty?
-  end
-  private :initialize_composite
-
-  # set background color of text widget
-  def textbackground(color = nil)
-    if color
-      @text.background(color)
-    else
-      @text.background
-    end
-  end
-
-  def textbg_info
-    info = @text.configinfo(:background)
-    if TkComm::GET_CONFIGINFO_AS_ARRAY
-      info[0] = 'textbackground'
-      info
-    else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
-      {'textbackground' => info['background']}
-    end
-  end
-
-  # get/set borderwidth of text widget
-  def set_textborderwidth(width)
-    @text.borderwidth(width)
-  end
-  def get_textborderwidth
-    @text.borderwidth
-  end
-  def textborderwidth(width = nil)
-    if width
-      set_textborderwidth(width)
-    else
-      get_textborderwidth
-    end
-  end
-
-  # set relief of text widget
-  def textrelief(type)
-    @text.relief(type)
-  end
-
-  # get/set width of scrollbar
-  def get_scrollbarwidth
-    @v_scroll.width
-  end
-  def set_scrollbarwidth(width)
-    @v_scroll.width(width)
-    @h_scroll.width(width)
-  end
-  alias :scrollbarwidth :set_scrollbarwidth
-
-  # vertical scrollbar : ON/OFF
-  def vscroll(mode)
-    st = TkGrid.info(@v_scroll)
-    if mode && st.size == 0 then
-      @v_scroll.grid('row'=>0, 'column'=>1, 'sticky'=>'ns')
-    elsif !mode && st.size != 0 then
-      @v_scroll.ungrid
-    end
-    self
-  end
-
-  # horizontal scrollbar : ON/OFF
-  def hscroll(mode, wrap_mode="char")
-    st = TkGrid.info(@h_scroll)
-    if mode && st.size == 0 then
-      @h_scroll.grid('row'=>1, 'column'=>0, 'sticky'=>'ew')
-      wrap 'none'  # => self.wrap('none')
-    elsif !mode && st.size != 0 then
-      @h_scroll.ungrid
-      wrap wrap_mode  # => self.wrap(wrap_mode)
-    end
-    self
-  end
-end
-
-
-################################################
-# test
-################################################
-if __FILE__ == $0
-  f = TkFrame.new.pack('fill'=>'x')
-  #t = TkTextFrame.new.pack
-  t = TkTextFrame.new(:textborderwidth=>3, 
-                      :textrelief=>:ridge, 
-                      :scrollbarrelief=>:ridge).pack
-  p t.configinfo
-  TkButton.new(f, 'text'=>'vscr OFF', 
-               'command'=>proc{t.vscroll(false)}).pack('side'=>'right')
-  TkButton.new(f, 'text'=>'vscr ON', 
-               'command'=>proc{t.vscroll(true)}).pack('side'=>'right')
-  TkButton.new(f, 'text'=>'hscr ON', 
-               'command'=>proc{t.hscroll(true)}).pack('side'=>'left')
-  TkButton.new(f, 'text'=>'hscr OFF', 
-               'command'=>proc{t.hscroll(false)}).pack('side'=>'left')
-  Tk.mainloop
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tktextio.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tktextio.rb
deleted file mode 100644 (file)
index 9f012fe..0000000
+++ /dev/null
@@ -1,1060 +0,0 @@
-#!/usr/bin/env ruby
-#
-#  TkTextIO class :: handling I/O stream on a TkText widget
-#                             by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
-#
-#  NOTE: TkTextIO supports 'character' (not 'byte') access only. 
-#        So, for example, TkTextIO#getc returns a character, TkTextIO#pos 
-#        means the character position, TkTextIO#read(size) counts by 
-#        characters, and so on.
-#        Of course, it is available to make TkTextIO class to suuport 
-#        'byte' access. However, it may break multi-byte characters. 
-#        and then, displayed string on the text widget may be garbled.
-#        I think that it is not good on the supposed situation of using 
-#        TkTextIO. 
-#
-require 'tk'
-require 'tk/text'
-require 'tk/textmark'
-require 'thread'
-
-class TkTextIO < TkText
-  # keep safe level
-  @@create_queues = proc{ [Queue.new, Mutex.new, Queue.new, Mutex.new] }
-
-  OPT_DEFAULTS = {
-    'mode'       => nil,
-    'overwrite'  => false, 
-    'text'       => nil, 
-    'show'       => :pos, 
-    'wrap'       => 'char', 
-    'sync'       => true, 
-    'prompt'     => nil, 
-    'prompt_cmd' => nil, 
-    'hist_size'  => 1000, 
-  }
-
-  def create_self(keys)
-    opts = _get_io_params((keys.kind_of?(Hash))? keys: {})
-
-    super(keys)
-
-    @count_var = TkVariable.new
-
-    @write_buffer = ''
-    @read_buffer  = ''
-    @buf_size = 0
-    @buf_max = 1024
-
-    @write_buf_queue, @write_buf_mutex, 
-    @read_buf_queue,  @read_buf_mutex  = @@create_queues.call
-
-    @idle_flush  = TkTimer.new(:idle, 1, proc{ @flusher.run rescue nil })
-    @timer_flush = TkTimer.new(250, -1, proc{ @flusher.run rescue nil })
-
-    @flusher = Thread.new{ loop { Thread.stop; flush() } }
-
-    @receiver = Thread.new{
-      begin
-        loop {
-          str = @write_buf_queue.deq
-          @write_buf_mutex.synchronize { @write_buffer << str }
-          @idle_flush.start
-        }
-      ensure
-        @flusher.kill
-      end
-    }
-
-    @timer_flush.start
-
-    _setup_io(opts)
-  end
-  private :create_self
-
-  def destroy
-    @flusher.kill rescue nil
-
-    @idle_flush.stop rescue nil
-    @timer_flush.stop rescue nil
-
-    @receiver.kill rescue nil
-
-    super()
-  end
-
-  ####################################
-
-  def _get_io_params(keys)
-    opts = {}
-    self.class.const_get(:OPT_DEFAULTS).each{|k, v| 
-      if keys.has_key?(k)
-        opts[k] = keys.delete(k)
-      else
-        opts[k] = v
-      end
-    }
-    opts
-  end
-
-  def _setup_io(opts)
-    unless defined? @txtpos
-      @txtpos = TkTextMark.new(self, '1.0')
-    else
-      @txtpos.set('1.0')
-    end
-    @txtpos.gravity = :left
-
-    @lineno = 0
-    @line_offset = 0
-
-    @hist_max = opts['hist_size'].to_i
-    @hist_index = 0
-    @history = Array.new(@hist_max)
-    @history[0] = ''
-
-    self['wrap'] = wrap
-
-    self.show_mode = opts['show']
-
-    self.value = opts['text'] if opts['text']
-
-    @overwrite = (opts['overwrite'])? true: false
-
-    @sync = opts['sync']
-
-    @prompt = opts['prompt']
-    @prompt_cmd = opts['prompt_cmd']
-
-    @open  = {:r => true,  :w => true}  # default is 'r+'
-
-    @console_mode = false
-    @end_of_stream = false
-    @console_buffer = nil
-
-    case opts['mode']
-    when nil
-      # do nothing
-
-    when :console, 'console'
-      @console_mode = true
-      # @console_buffer = TkTextIO.new(:mode=>'r')
-      @console_buffer = self.class.new(:mode=>'r')
-      self.show_mode = :insert
-
-    when 'r', 'rb'
-      @open[:r] = true; @open[:w] = nil
-
-    when 'r+', 'rb+', 'r+b'
-      @open[:r] = true; @open[:w] = true
-
-    when 'w', 'wb'
-      @open[:r] = nil;  @open[:w] = true
-      self.value=''
-
-    when 'w+', 'wb+', 'w+b'
-      @open[:r] = true; @open[:w] = true
-      self.value=''
-
-    when 'a', 'ab'
-      @open[:r] = nil;  @open[:w] = true
-      @txtpos.set('end - 1 char')
-      @txtpos.gravity = :right
-
-    when 'a+', 'ab+', 'a+b'
-      @open[:r] = true;  @open[:w] = true
-      @txtpos.set('end - 1 char')
-      @txtpos.gravity = :right
-
-    else
-      fail ArgumentError, "unknown mode `#{opts['mode']}'"
-    end
-
-    unless defined? @ins_head
-      @ins_head = TkTextMark.new(self, 'insert')
-      @ins_head.gravity = :left
-    end
-
-    unless defined? @ins_tail
-      @ins_tail = TkTextMark.new(self, 'insert')
-      @ins_tail.gravity = :right
-    end
-
-    unless defined? @tmp_mark
-      @tmp_mark = TkTextMark.new(self, 'insert')
-      @tmp_mark.gravity = :left
-    end
-
-    if @console_mode
-      _set_console_line
-      _setup_console_bindings
-    end
-  end
-  private :_get_io_params, :_setup_io
-
-  def _set_console_line
-    @tmp_mark.set(@ins_tail)
-
-    mark_set('insert', 'end')
-
-    prompt = ''
-    prompt << @prompt_cmd.call if @prompt_cmd
-    prompt << @prompt if @prompt
-    insert(@tmp_mark, prompt)
-
-    @ins_head.set(@ins_tail)
-    @ins_tail.set('insert')
-
-    @txtpos.set(@tmp_mark)
-
-    _see_pos
-  end
-
-  def _replace_console_line(str)
-    self.delete(@ins_head, @ins_tail)
-    self.insert(@ins_head, str)
-  end
-
-  def _get_console_line
-    @tmp_mark.set(@ins_tail)
-    s = self.get(@ins_head, @tmp_mark)
-    _set_console_line
-    s
-  end
-  private :_set_console_line, :_replace_console_line, :_get_console_line
-
-  def _cb_up
-    @history[@hist_index].replace(self.get(@ins_head, @ins_tail))
-    @hist_index += 1
-    @hist_index -= 1 if @hist_index >= @hist_max || !@history[@hist_index]
-    _replace_console_line(@history[@hist_index]) if @history[@hist_index]
-    Tk.callback_break
-  end
-  def _cb_down
-    @history[@hist_index].replace(self.get(@ins_head, @ins_tail))
-    @hist_index -= 1
-    @hist_index = 0 if @hist_index < 0
-    _replace_console_line(@history[@hist_index]) if @history[@hist_index]
-    Tk.callback_break
-  end
-  def _cb_left
-    if @console_mode && compare('insert', '<=', @ins_head)
-      mark_set('insert', @ins_head)
-      Tk.callback_break
-    end
-  end
-  def _cb_backspace
-    if @console_mode && compare('insert', '<=', @ins_head)
-      Tk.callback_break
-    end
-  end
-  def _cb_ctrl_a
-    if @console_mode
-      mark_set('insert', @ins_head)
-      Tk.callback_break
-    end
-  end
-  def _cb_ctrl_u
-    if @console_mode
-      mark_set('insert', @ins_head)
-      delete('insert', 'insert lineend')
-      Tk.callback_break
-    end
-  end
-  private :_cb_up, :_cb_down, :_cb_left, :_cb_backspace, 
-          :_cb_ctrl_a, :_cb_ctrl_u
-
-  def _setup_console_bindings
-    @bindtag = TkBindTag.new
-
-    tags = self.bindtags
-    tags[tags.index(self)+1, 0] = @bindtag
-    self.bindtags = tags
-
-    @bindtag.bind('Return'){
-      insert('end - 1 char', "\n")
-      if (str = _get_console_line)
-        @read_buf_queue.push(str)
-
-        @history[0].replace(str.chomp)
-        @history.pop
-        @history.unshift('')
-        @hist_index = 0
-      end
-
-      Tk.update
-      Tk.callback_break
-    }
-    @bindtag.bind('Alt-Return'){
-      Tk.callback_continue
-    }
-
-    @bindtag.bind('FocusIn'){
-      if @console_mode
-        mark_set('insert', @ins_tail)
-        Tk.callback_break
-      end
-    }
-
-    ins_mark = TkTextMark.new(self, 'insert')
-
-    @bindtag.bind('ButtonPress'){
-      if @console_mode
-        ins_mark.set('insert')
-      end
-    }
-
-    @bindtag.bind('ButtonRelease-1'){
-      if @console_mode && compare('insert', '<=', @ins_head)
-        mark_set('insert', ins_mark)
-        Tk.callback_break
-      end
-    }
-
-    @bindtag.bind('ButtonRelease-2', '%x %y'){|x, y|
-      if @console_mode
-        # paste a text at 'insert' only
-        x1, y1, x2, y2 =  bbox(ins_mark)
-        unless x == x1 && y == y1
-          Tk.event_generate(self, 'ButtonRelease-2', :x=>x1, :y=>y1)
-          Tk.callback_break
-        end
-      end
-    }
-
-    @bindtag.bind('Up'){ _cb_up }
-    @bindtag.bind('Control-p'){ _cb_up }
-
-    @bindtag.bind('Down'){ _cb_down }
-    @bindtag.bind('Control-n'){ _cb_down }
-
-    @bindtag.bind('Left'){ _cb_left }
-    @bindtag.bind('Control-b'){ _cb_left }
-
-    @bindtag.bind('BackSpace'){ _cb_backspace }
-    @bindtag.bind('Control-h'){ _cb_backspace }
-
-    @bindtag.bind('Home'){ _cb_ctrl_a }
-    @bindtag.bind('Control-a'){ _cb_ctrl_a }
-
-    @bindtag.bind('Control-u'){ _cb_ctrl_u }
-  end
-  private :_setup_console_bindings
-
-  def _block_read(size = nil, ret = '', block_mode = true)
-    return '' if size == 0
-    return nil if ! @read_buf_queue && @read_buffer.empty?
-    ret = '' unless ret.kind_of?(String)
-    ret.replace('') unless ret.empty?
-
-    if block_mode == nil # partial
-      if @read_buffer.empty?
-        ret << @read_buffer.slice!(0..-1)
-        return ret
-      end
-    end
-
-    if size.kind_of?(Numeric)
-      loop{
-        @read_buf_mutex.synchronize {
-          buf_len = @read_buffer.length
-          if buf_len >= size
-            ret << @read_buffer.slice!(0, size)
-            return ret
-          else
-            ret << @read_buffer.slice!(0..-1)
-            size -= buf_len
-            return ret unless @read_buf_queue
-          end
-        }
-        @read_buffer << @read_buf_queue.pop
-      }
-    else # readline
-      rs = (size)? size: $/
-      rs = rs.to_s if rs.kind_of?(Regexp)
-      loop{
-        @read_buf_mutex.synchronize {
-          if (str = @read_buffer.slice!(/\A(.*)(#{rs})/m))
-            ret << str
-            return ret
-          else
-            ret << @read_buffer.slice!(0..-1)
-            return ret unless @read_buf_queue
-          end
-        }
-        @read_buffer << @read_buf_queue.pop
-      }
-    end
-  end
-
-  def _block_write
-    ###### currently, not support
-  end
-  private :_block_read, :_block_write
-
-  ####################################
-
-  def <<(obj)
-    _write(obj)
-    self
-  end
-
-  def binmode
-    self
-  end
-
-  def clone
-    fail NotImplementedError, 'cannot clone TkTextIO'
-  end
-  def dup
-    fail NotImplementedError, 'cannot duplicate TkTextIO'
-  end
-
-  def close
-    close_read
-    close_write
-    nil
-  end
-  def close_read
-    @open[:r] = false if @open[:r]
-    nil
-  end
-  def close_write
-    @open[:w] = false if @opne[:w]
-    nil
-  end
-
-  def closed?(dir=nil)
-    case dir
-    when :r, 'r'
-      !@open[:r]
-    when :w, 'w'
-      !@open[:w]
-    else
-      !@open[:r] && !@open[:w]
-    end
-  end
-
-  def _check_readable
-    fail IOError, "not opened for reading" if @open[:r].nil?
-    fail IOError, "closed stream" if !@open[:r]
-  end
-  def _check_writable
-    fail IOError, "not opened for writing" if @open[:w].nil?
-    fail IOError, "closed stream" if !@open[:w]
-  end
-  private :_check_readable, :_check_writable
-
-  def each_line(rs = $/)
-    _check_readable
-    while(s = self.gets(rs))
-      yield(s)
-    end
-    self
-  end
-  alias each each_line
-
-  def each_char
-    _check_readable
-    while(c = self.getc)
-      yield(c)
-    end
-    self
-  end
-  alias each_byte each_char
-
-  def eof?
-    compare(@txtpos, '==', 'end - 1 char')
-  end
-  alias eof eof?
-
-  def fcntl(*args)
-    fail NotImplementedError, "fcntl is not implemented on #{self.class}"
-  end
-
-  def fsync
-    0
-  end
-
-  def fileno
-    nil
-  end
-
-  def flush
-    Thread.pass
-    if @open[:w] || ! @write_buffer.empty?
-      @write_buf_mutex.synchronize {
-        _sync_write_buf(@write_buffer) 
-        @write_buffer[0..-1] = ''
-      }
-    end
-    self
-  end
-
-  def getc
-    return _block_read(1) if @console_mode
-
-    _check_readable
-    return nil if eof?
-    c = get(@txtpos)
-    @txtpos.set(@txtpos + '1 char')
-    _see_pos
-    c
-  end
-
-  def gets(rs = $/)
-    return _block_read(rs) if @console_mode
-
-    _check_readable
-    return nil if eof?
-    _readline(rs)
-  end
-
-  def ioctrl(*args)
-    fail NotImplementedError, 'iocntl is not implemented on TkTextIO'
-  end
-
-  def isatty
-    false
-  end
-  def tty?
-    false
-  end
-
-  def lineno
-    @lineno + @line_offset
-  end
-
-  def lineno=(num)
-    @line_offset = num - @lineno
-    num
-  end
-
-  def overwrite?
-    @overwrite
-  end
-
-  def overwrite=(ovwt)
-    @overwrite = (ovwt)? true: false
-  end
-
-  def pid
-    nil
-  end
-
-  def index_pos
-    index(@txtpos)
-  end
-  alias tell_index index_pos
-
-  def index_pos=(idx)
-    @txtpos.set(idx)
-    @txtpos.set('end - 1 char') if compare(@txtpos, '>=', :end)
-    _see_pos
-    idx
-  end
-
-  def pos
-    s = get('1.0', @txtpos)
-    number(tk_call('string', 'length', s))
-  end
-  alias tell pos
-
-  def pos=(idx)
-    seek(idx, IO::SEEK_SET)
-    idx
-  end
-
-  def pos_gravity
-    @txtpos.gravity
-  end
-
-  def pos_gravity=(side)
-    @txtpos.gravity = side
-    side
-  end
-
-  def print(arg=$_, *args)
-    _check_writable
-    args.unshift(arg)
-    args.map!{|val| (val == nil)? 'nil': val.to_s }
-    str = args.join($,)
-    str << $\ if $\
-    _write(str)
-    nil
-  end
-  def printf(*args)
-    _check_writable
-    _write(sprintf(*args))
-    nil
-  end
-
-  def putc(c)
-    _check_writable
-    c = c.chr if c.kind_of?(Fixnum)
-    _write(c)
-    c
-  end
-
-  def puts(*args)
-    _check_writable
-    if args.empty?
-      _write("\n")
-      return nil
-    end
-    args.each{|arg|
-      if arg == nil
-        _write("nil\n")
-      elsif arg.kind_of?(Array)
-        puts(*arg)
-      elsif arg.kind_of?(String)
-        _write(arg.chomp)
-        _write("\n")
-      else
-        begin
-          arg = arg.to_ary
-          puts(*arg)
-        rescue
-          puts(arg.to_s)
-        end
-      end
-    }
-    nil
-  end
-
-  def _read(len)
-    epos = @txtpos + "#{len} char"
-    s = get(@txtpos, epos)
-    @txtpos.set(epos)
-    @txtpos.set('end - 1 char') if compare(@txtpos, '>=', :end)
-    _see_pos
-    s
-  end
-  private :_read
-
-  def read(len=nil, buf=nil)
-    return _block_read(len, buf) if @console_mode
-
-    _check_readable
-    if len
-      return "" if len == 0
-      return nil if eof?
-      s = _read(len)
-    else
-      s = get(@txtpos, 'end - 1 char')
-      @txtpos.set('end - 1 char')
-      _see_pos
-    end
-    buf.replace(s) if buf.kind_of?(String)
-    s
-  end
-
-  def readchar
-    return _block_read(1) if @console_mode
-
-    _check_readable
-    fail EOFError if eof?
-    c = get(@txtpos)
-    @txtpos.set(@txtpos + '1 char')
-    _see_pos
-    c
-  end
-
-  def _readline(rs = $/)
-    if rs == nil
-      s = get(@txtpos, 'end - 1 char')
-      @txtpos.set('end - 1 char')
-    elsif rs == ''
-      @count_var.value  # make it global
-      idx = tksearch_with_count([:regexp], @count_var, 
-                                   "\n(\n)+", @txtpos, 'end - 1 char')
-      if idx
-        s = get(@txtpos, idx) << "\n"
-        @txtpos.set("#{idx} + #{@count_var.value} char")
-        @txtpos.set('end - 1 char') if compare(@txtpos, '>=', :end)
-      else
-        s = get(@txtpos, 'end - 1 char')
-        @txtpos.set('end - 1 char')
-      end
-    else
-      @count_var.value  # make it global
-      idx = tksearch_with_count(@count_var, rs, @txtpos, 'end - 1 char')
-      if idx
-        s = get(@txtpos, "#{idx} + #{@count_var.value} char")
-        @txtpos.set("#{idx} + #{@count_var.value} char")
-        @txtpos.set('end - 1 char') if compare(@txtpos, '>=', :end)
-      else
-        s = get(@txtpos, 'end - 1 char')
-        @txtpos.set('end - 1 char')
-      end
-    end
-
-    _see_pos
-    @lineno += 1
-    $_ = s
-  end
-  private :_readline
-
-  def readline(rs = $/)
-    return _block_readline(rs) if @console_mode
-
-    _check_readable
-    fail EOFError if eof?
-    _readline(rs)
-  end
-
-  def readlines(rs = $/)
-    if @console_mode
-      lines = []
-      while (line = _block_readline(rs))
-        lines << line
-      end
-      return lines
-    end
-
-    _check_readable
-    lines = []
-    until(eof?)
-      lines << _readline(rs)
-    end
-    $_ = nil
-    lines
-  end
-
-  def readpartial(maxlen, buf=nil)
-    #return @console_buffer.readpartial(maxlen, buf) if @console_mode
-    return _block_read(maxlen, buf, nil) if @console_mode
-
-    _check_readable
-    fail EOFError if eof?
-    s = _read(maxlen)
-    buf.replace(s) if buf.kind_of?(String)
-    s
-  end
-
-  def reopen(*args)
-    fail NotImplementedError, 'reopen is not implemented on TkTextIO'
-  end
-
-  def rewind
-    @txtpos.set('1.0')
-    _see_pos
-    @lineno = 0
-    @line_offset = 0
-    self
-  end
-
-  def seek(offset, whence=IO::SEEK_SET)
-    case whence
-    when IO::SEEK_SET
-      offset = "1.0 + #{offset} char" if offset.kind_of?(Numeric)
-      @txtpos.set(offset)
-
-    when IO::SEEK_CUR
-      offset = "#{offset} char" if offset.kind_of?(Numeric)
-      @txtpos.set(@txtpos + offset)
-
-    when IO::SEEK_END
-      offset = "#{offset} char" if offset.kind_of?(Numeric)
-      @txtpos.set("end - 1 char + #{offset}")
-
-    else
-      fail Errno::EINVAL, 'invalid whence argument'
-    end
-
-    @txtpos.set('end - 1 char') if compare(@txtpos, '>=', :end)
-    _see_pos
-
-    0
-  end
-  alias sysseek seek
-
-  def _see_pos
-    see(@show) if @show
-  end
-  private :_see_pos
-
-  def show_mode
-    (@show == @txtpos)? :pos : @show
-  end
-
-  def show_mode=(mode)
-    # define show mode  when file position is changed. 
-    #  mode == :pos or "pos" or true :: see current file position. 
-    #  mode == :insert or "insert"   :: see insert cursor position. 
-    #  mode == nil or false          :: do nothing
-    #  else see 'mode' position ('mode' should be text index or mark)
-    case mode
-    when :pos, 'pos', true
-      @show = @txtpos
-    when :insert, 'insert'
-      @show = :insert
-    when nil, false
-      @show = false
-    else
-      begin
-        index(mode)
-      rescue
-        fail ArgumentError, 'invalid show-position'
-      end
-      @show = mode
-    end
-
-    _see_pos
-
-    mode
-  end
-
-  def stat
-    fail NotImplementedError, 'stat is not implemented on TkTextIO'
-  end
-
-  def sync
-    @sync
-  end
-
-  def sync=(mode)
-    @sync = mode
-  end
-
-  def sysread(len, buf=nil)
-    return _block_read(len, buf) if @console_mode
-
-    _check_readable
-    fail EOFError if eof?
-    s = _read(len)
-    buf.replace(s) if buf.kind_of?(String)
-    s
-  end
-
-  def syswrite(obj)
-    _write(obj)
-  end
-
-  def to_io
-    self
-  end
-
-  def trancate(len)
-    delete("1.0 + #{len} char", :end)
-    0
-  end
-
-  def ungetc(c)
-    if @console_mode
-      @read_buf_mutex.synchronize {
-        @read_buffer[0,0] = c.chr
-      }
-      return nil
-    end
-
-    _check_readable
-    c = c.chr if c.kind_of?(Fixnum)
-    if compare(@txtpos, '>', '1.0')
-      @txtpos.set(@txtpos - '1 char')
-      delete(@txtpos)
-      insert(@txtpos, tk_call('string', 'range', c, 0, 1))
-      @txtpos.set(@txtpos - '1 char') if @txtpos.gravity == 'right'
-      _see_pos
-    else
-      fail IOError, 'cannot ungetc at head of stream'
-    end
-    nil
-  end
-
-=begin
-  def _write(obj)
-    #s = _get_eval_string(obj)
-    s = (obj.kind_of?(String))? obj: obj.to_s
-    n = number(tk_call('string', 'length', s))
-    delete(@txtpos, @txtpos + "#{n} char") if @overwrite
-    self.insert(@txtpos, s)
-    @txtpos.set(@txtpos + "#{n} char")
-    @txtpos.set('end - 1 char') if compare(@txtpos, '>=', :end)
-    _see_pos
-    Tk.update if @sync
-    n
-  end
-  private :_write
-=end
-#=begin
-  def _sync_write_buf(s)
-    if (n = number(tk_call('string', 'length', s))) > 0
-      delete(@txtpos, @txtpos + "#{n} char") if @overwrite
-      self.insert(@txtpos, s)
-      #Tk.update
-
-      @txtpos.set(@txtpos + "#{n} char")
-      @txtpos.set('end - 1 char') if compare(@txtpos, '>=', :end)
-
-      @ins_head.set(@txtpos) if compare(@txtpos, '>', @ins_head)
-
-      _see_pos
-    end
-    self
-  end
-  private :_sync_write_buf
-
-  def _write(obj)
-    s = (obj.kind_of?(String))? obj: obj.to_s
-    n = number(tk_call('string', 'length', s))
-    @write_buf_queue.enq(s)
-    if @sync
-      Thread.pass
-      Tk.update
-    end
-    n
-  end
-  private :_write
-#=end
-
-  def write(obj)
-    _check_writable
-    _write(obj)
-  end
-end
-
-####################
-#  TEST
-####################
-if __FILE__ == $0
-  ev_loop = Thread.new{Tk.mainloop}
-
-  f = TkFrame.new.pack
-  #tio = TkTextIO.new(f, :show=>:nil, 
-  #tio = TkTextIO.new(f, :show=>:pos, 
-  tio = TkTextIO.new(f, :show=>:insert, 
-                     :text=>">>> This is an initial text line. <<<\n\n"){
-#    yscrollbar(TkScrollbar.new(f).pack(:side=>:right, :fill=>:y))
-    pack(:side=>:left, :fill=>:both, :expand=>true)
-  }
-
-  Tk.update
-
-  $stdin  = tio
-  $stdout = tio
-  $stderr = tio
-
-  STDOUT.print("\n========= TkTextIO#gets for inital text ========\n\n")
-
-  while(s = gets)
-    STDOUT.print(s)
-  end
-
-  STDOUT.print("\n============ put strings to TkTextIO ===========\n\n")
-
-  puts "On this sample, a text widget works as if it is a I/O stream."
-  puts "Please see the code."
-  puts
-  printf("printf message: %d %X\n", 123456, 255)
-  puts
-  printf("(output by 'p' method) This TkTextIO object is ...\n")
-  p tio
-  print(" [ Current wrap mode of this object is 'char'. ]\n")
-  puts
-  warn("This is a warning message generated by 'warn' method.")
-  puts
-  puts "current show_mode is #{tio.show_mode}."
-  if tio.show_mode == :pos
-    puts "So, you can see the current file position on this text widget."
-  else
-    puts "So, you can see the position '#{tio.show_mode}' on this text widget."
-  end
-  print("Please scroll up this text widget to see the head of lines.\n")
-  print("---------------------------------------------------------\n")
-
-  STDOUT.print("\n=============== TkTextIO#readlines =============\n\n")
-
-  tio.seek(0)
-  lines = readlines
-  STDOUT.puts(lines.inspect)
-
-  STDOUT.print("\n================== TkTextIO#each ===============\n\n")
-
-  tio.rewind
-  tio.each{|line| STDOUT.printf("%2d: %s\n", tio.lineno, line.chomp)}
-
-  STDOUT.print("\n================================================\n\n")
-
-  STDOUT.print("\n========= reverse order (seek by lines) ========\n\n")
-
-  tio.seek(-1, IO::SEEK_END)
-  begin
-    begin
-      tio.seek(:linestart, IO::SEEK_CUR)
-    rescue
-      # maybe use old version of tk/textmark.rb
-      tio.seek('0 char linestart', IO::SEEK_CUR)
-    end
-    STDOUT.print(gets)
-    tio.seek('-1 char linestart -1 char', IO::SEEK_CUR)
-  end while(tio.pos > 0)
-
-  STDOUT.print("\n================================================\n\n")
-
-  tio.seek(0, IO::SEEK_END)
-
-  STDOUT.print("tio.sync ==  #{tio.sync}\n")
-#  tio.sync = false
-#  STDOUT.print("tio.sync ==  #{tio.sync}\n")
-
-  (0..10).each{|i|
-    STDOUT.print("#{i}\n")
-    s = ''
-    (0..1000).each{ s << '*' }
-    print(s)
-  }
-  print("\n")
-  print("\n=========================================================\n\n")
-
-  s = ''
-  timer = TkTimer.new(:idle, -1, proc{
-                        #STDOUT.print("idle call\n")
-                        unless s.empty?
-                          print(s)
-                          s = ''
-                        end
-                      }).start
-  (0..10).each{|i|
-    STDOUT.print("#{i}\n")
-    (0..1000).each{ s << '*' }
-  }
-#  timer.stop
-  until s.empty?
-    sleep 0.1
-  end
-  timer.stop
-
-=begin
-  tio.sync = false
-  print("\n")
-  #(0..10000).each{ putc('*') }
-  (0..10).each{|i|
-    STDOUT.print("#{i}\n")
-    (0..1000).each{ putc('*') }
-  }
-
-  (0..10).each{|i|
-    STDOUT.print("#{i}\n")
-    s = ''
-    (0..1000).each{ s << '*' }
-    print(s)
-  }
-=end
-
-  num = 0
-#  io = TkTextIO.new(:mode=>:console, :prompt=>'').pack
-#=begin
-  io = TkTextIO.new(:mode=>:console, 
-                    :prompt_cmd=>proc{
-                      s = "[#{num}]"
-                      num += 1
-                      s
-                    }, 
-                    :prompt=>'-> ').pack
-#=end
-  Thread.new{loop{sleep 2; io.puts 'hoge'}}
-  Thread.new{loop{p io.gets}}
-
-  ev_loop.join
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tktimer.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tktimer.rb
deleted file mode 100644 (file)
index b1adb5b..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env ruby
-# This script generates a counter with start and stop buttons.
-
-require "tk"
-$label = TkLabel.new {
-  text '0.00'
-  relief 'raised'
-  width 10
-  pack('side'=>'bottom', 'fill'=>'both')
-}
-
-TkButton.new {
-  text 'Start'
-  command proc {
-    if $stopped
-      $stopped = FALSE
-      tick
-    end
-  }
-  pack('side'=>'left','fill'=>'both','expand'=>'yes')
-}
-TkButton.new {
-  text 'Stop'
-  command proc{
-    exit if $stopped
-    $stopped = TRUE
-  }
-  pack('side'=>'right','fill'=>'both','expand'=>'yes')
-}
-
-$seconds=0
-$hundredths=0
-$stopped=TRUE
-
-def tick
-  if $stopped then return end
-  Tk.after 50, proc{tick}
-  $hundredths+=5
-  if $hundredths >= 100
-    $hundredths=0
-    $seconds+=1
-  end
-  $label.text format("%d.%02d", $seconds, $hundredths)
-end
-
-root = Tk.root
-root.bind "Control-c", proc{root.destroy}
-root.bind "Control-q", proc{root.destroy}
-Tk.root.focus
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tktimer2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tktimer2.rb
deleted file mode 100644 (file)
index dd31bb0..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env ruby
-# This script is a re-implementation of tktimer.rb with TkTimer(TkAfter) class.
-
-require "tk"
-
-# new notation :
-#   * symbols are acceptable as keys or values of the option hash
-#   * the parent widget can be given by :parent key on the option hash 
-root = TkRoot.new(:title=>'timer sample')
-label = TkLabel.new(:parent=>root, :relief=>:raised, :width=>10) \
-               .pack(:side=>:bottom, :fill=>:both)
-
-# define the procedure repeated by the TkTimer object
-tick = proc{|aobj| #<== TkTimer object
-  cnt = aobj.return_value + 5 # return_value keeps a result of the last proc
-  label.text format("%d.%02d", *(cnt.divmod(100)))
-  cnt #==> return value is kept by TkTimer object
-      #    (so, can be send to the next repeat-proc)
-}
-
-timer = TkTimer.new(50, -1, tick).start(0, proc{ label.text('0.00'); 0 })
-        # ==> repeat-interval : (about) 50 ms,  
-        #     repeat : infinite (-1) times, 
-        #     repeat-procedure : tick (only one, in this case)
-        #
-        # ==> wait-before-call-init-proc : 0 ms, 
-        #     init_proc : proc{ label.text('0.00'); 0 }
-        #
-        # (0ms)-> init_proc ->(50ms)-> tick ->(50ms)-> tick ->....
-
-TkButton.new(:text=>'Start') {
-  command proc{ timer.continue unless timer.running? }
-  pack(:side=>:left, :fill=>:both, :expand=>true)
-}
-TkButton.new(:text=>'Restart') {
-  command proc{ timer.restart(0, proc{ label.text('0.00'); 0 }) }
-  pack(:side=>:left, :fill=>:both, :expand=>true)
-}
-TkButton.new(:text=>'Stop') {
-  command proc{ timer.stop if timer.running? }
-  pack('side'=>'right','fill'=>'both','expand'=>'yes')
-}
-
-ev_quit = TkVirtualEvent.new('Control-c', 'Control-q')
-Tk.root.bind(ev_quit, proc{Tk.exit}).focus
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tktimer3.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tktimer3.rb
deleted file mode 100644 (file)
index e3bb4c3..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/usr/bin/env ruby
-# This script is a re-implementation of tktimer.rb with TkTimer(TkAfter) class.
-
-require "tk"
-
-# new notation :
-#   * symbols are acceptable as keys or values of the option hash
-#   * the parent widget can be given by :parent key on the option hash 
-root = TkRoot.new(:title=>'timer sample')
-label = TkLabel.new(:parent=>root, :relief=>:raised, :width=>10) \
-               .pack(:side=>:bottom, :fill=>:both)
-
-# define the procedure repeated by the TkTimer object
-tick = proc{|aobj| #<== TkTimer object
-  cnt = aobj.return_value + 5 # return_value keeps a result of the last proc
-  label.text format("%d.%02d", *(cnt.divmod(100)))
-  cnt #==> return value is kept by TkTimer object
-      #    (so, can be send to the next repeat-proc)
-}
-
-timer = TkTimer.new(50, -1, tick).start(0, proc{ label.text('0.00'); 0 })
-        # ==> repeat-interval : (about) 50 ms,  
-        #     repeat : infinite (-1) times, 
-        #     repeat-procedure : tick (only one, in this case)
-        #
-        # ==> wait-before-call-init-proc : 0 ms, 
-        #     init_proc : proc{ label.text('0.00'); 0 }
-        #
-        # (0ms)-> init_proc ->(50ms)-> tick ->(50ms)-> tick ->....
-
-b_start = TkButton.new(:text=>'Start', :state=>:disabled) {
-  pack(:side=>:left, :fill=>:both, :expand=>true)
-}
-
-b_stop  = TkButton.new(:text=>'Stop', :state=>:normal) {
-  pack('side'=>'left', 'fill'=>'both', 'expand'=>'yes')
-}
-
-b_start.command {
-  timer.continue
-  b_stop.state(:normal)
-  b_start.state(:disabled)
-}
-
-b_stop.command {
-  timer.stop
-  b_start.state(:normal)
-  b_stop.state(:disabled)
-}
-
-TkButton.new(:text=>'Reset', :state=>:normal) {
-  command { timer.reset }
-  pack(:side=>:right, :fill=>:both, :expand=>:yes)
-}
-
-ev_quit = TkVirtualEvent.new('Control-c', 'Control-q')
-Tk.root.bind(ev_quit, proc{Tk.exit}).focus
-
-Tk.mainloop
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tktree.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tktree.rb
deleted file mode 100644 (file)
index 56b7211..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-##########################################################################
-# TkTree widget class
-#
-#    see <http://wiki.tcl.tk/10615>
-#
-#  Note:  optional argument '-font' of the Tcl library is changed to 
-#         'itemfont' on this Ruby library, because of avoiding font 
-#         operation trouble in 'initialize' method  ( see the following 
-#         test script ). 
-#
-##########################################################################
-require 'tk'
-
-class TkTree < TkCanvas
-  TCL_SCRIPT_PATH = File.join(File.dirname(__FILE__), 'tktree.tcl')
-
-  def create_self(keys)
-    args = [@path]
-    if keys.kind_of?(Hash)
-      font = keys.delete('itemfont')
-#      font = hash_kv(font) if font.kind_of?(Hash)
-      keys['font'] = font if font
-#      args.concat(hash_kv(keys))
-      args << keys
-    end
-    begin
-      tk_call('::tktree::treecreate', *args)
-    rescue NameError, RuntimeError
-      Tk.load_tclscript(TkTree::TCL_SCRIPT_PATH)
-      tk_call('::tktree::treecreate', *args)
-    end
-  end
-
-  def newitem(itempath, keys = nil)
-    if keys.kind_of?(Hash)
-      keys = _symbolkey2str(keys)
-      font = keys.delete('itemfont')
-#      font = hash_kv(font) if font.kind_of?(Hash)
-      keys['font'] = font if font
-#      tk_call('::tktree::newitem', @path, itempath, *hash_kv(keys))
-      tk_call('::tktree::newitem', @path, itempath, keys)
-    else
-      tk_call('::tktree::newitem', @path, itempath)
-    end
-  end
-
-  def delitem(itempath)
-    tk_call('::tktree::delitem', @path, itempath)
-  end
-
-  def labelat(xpos, ypos)
-    tk_call('::tktree::delitem', @path, xpos, ypos)
-  end
-
-  def getselection
-    tk_call('::tktree::getselection', @path)
-  end
-
-  def setselection(itempath)
-    tk_call('::tktree::getselection', @path, itempath)
-  end
-end
-
-
-##########################################################################
-# test script
-##########################################################################
-if __FILE__ == $0
-  TkLabel.new(:text=><<EOL, :relief=>:ridge, :justify=>:left).pack
-
- This is a sample to use a Tcl library script on Ruby/Tk. 
- This sample loads tktree.tcl (see <http://wiki.tcl.tk/10615>) 
- and calls functions of the Tcl script. 
-EOL
-
-  items = %w(/group1/item1 /group1/item2 /group1/subgroup/item1 /group2/item1 /item1)
-
-  tr1 = TkTree.new.pack(:expand=>true, :fill=>:both)
-  tr1.focus
-
-  items.each{|item|
-    tr1.newitem(item, 
-                :command=>proc{Tk.messageBox(:message=>"#{item} executed")})
-  }
-
-  f = TkFrame.new.pack(:expand=>true, :fill=>:both)
-  tr2 = TkTree.new(f, :bg=>'black', #:itemfont=>{:family=>'Times', :size=>14}, 
-                   :textcolor=>'red', :bd=>4, :relief=>:ridge, 
-                   :selectbackground=>'darkBlue', :selectforeground=>'yellow', 
-                   :selectborderwidth=>3, :linecolor=>'yellow') {
-    yscrollbar(TkScrollbar.new(f, :width=>10).pack(:side=>:right, :fill=>:y))
-    xscrollbar(TkScrollbar.new(f, :width=>10).pack(:side=>:bottom, :fill=>:x))
-    pack(:expand=>true, :fill=>:both)
-  }
-
-  items.each{|item|
-    tr2.newitem(item, :textcolor=>'green', :image=>'', 
-                :itemfont=>{:family=>'Times', :size=>10}, 
-                :command=>proc{Tk.messageBox(:message=>"#{item} executed")})
-  }
-
-  Tk.mainloop
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/tktree.tcl b/ruby/doc/ruby/ruby-1.8.7/sample/tk/tktree.tcl
deleted file mode 100644 (file)
index a5e47eb..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-#
-#  This Tcl/Tk script is quoted from <http://wiki.tcl.tk/10615>.
-#
- package require Tk
-  namespace eval ::tktree {
-
-    # Images used for open and close state of subgroups
-    set ::tktree::imgcollapse [image create photo .tktreeopenbm -data {
-      R0lGODdhCQAJAIAAAAEBAf///ywAAAAACQAJAAACEISPoRvG614D80x5ZXyogwIAOw==}]
-    set ::tktree::imgexpand [image create photo .tktreeclosebm -data {
-      R0lGODdhCQAJAIAAAAEBAf///ywAAAAACQAJAAACEYSPoRu28KCSDSJLc44s3lMAADs=}]
-    ###Default images for groups and children
-    set ::tktree::imgsubgroups [image create photo .tktreeimgfolder -data {
-                R0lGODlhEAANAKIAANnZ2Xh4eLi4uPj4APj4+AAAAP///////yH5BAEAAAAA
-                LAAAAAAQAA0AAANkCIChiqDLITgyEgi6GoIjIyMYugCBpMsaWBA0giMjIzgy
-                UYBBMjIoIyODEgVBODIygiMjE1gQJIMyMjIoI1GAQSMjODIyghMFQSgjI4My
-                MhJYEDSCIyMjODJRgKHLXAiApcsMmAA7}]
-    set ::tktree::imgchildren [image create photo .tktreeimgfile -data {
-                R0lGODlhDQAQAKIAANnZ2Xh4ePj4+Li4uAAAAP///////////yH5BAEAAAAA
-                LAAAAAANABAAAANSGLoLgACBoqsRCBAoujqCASGDojtESCEihCREIjgUKLo8
-                hCGCpCsySIGiy0MYIki6IoMUKLo8hCGCpCsySIGiy0MYKLo8hIGiy0MYOLo8
-                SLrMCQA7}]
-
-    #### Swtich all subgroups of a layer to open or close
-    proc ::tktree::switchlayer {win opn {layer /}} {
-      variable cfg
-      foreach child $cfg($win,$layer:subgroups) {
-        set cfg($win,$child:open) $opn
-        switchlayer $win $opn $child
-      }
-      buildwhenidle $win
-    }
-
-    ####  will open or close the item given
-    proc ::tktree::switchstate {win item} {
-      set ::tktree::cfg($win,$item:open) [expr ! $::tktree::cfg($win,$item:open)]
-      buildwhenidle $win
-    }
-
-    #### Select the next item up or down
-    proc ::tktree::updown {win down} {
-      variable cfg
-      set index [lsearch -exact $cfg($win,sortlist) $cfg($win,selection)]
-      if {$down} {incr index} {incr index -1}
-      if {$index < 0} {set index end} elseif {$index >= [llength $cfg($win,sortlist)]} {set index 0}
-      setselection $win [lindex $cfg($win,sortlist) $index]
-    }
-
-    #### left-right button binding commands
-    proc ::tktree::leftright {win right} {
-      variable cfg
-      set item $cfg($win,selection)
-      set index [lsearch -exact $cfg($win,sortlist) $item]
-      set parentindex [lsearch -exact $cfg($win,sortlist) [file dirname $item]]
-      if {$parentindex == -1} {set parentindex [expr $index - 1]}
-      if {$cfg($win,$item:group)} {
-        if {$right} {
-          if {$cfg($win,$item:open)} {incr index} {set cfg($win,$item:open) 1}
-        } else {
-          if {$cfg($win,$item:open)} {set cfg($win,$item:open) 0} {set index $parentindex}
-        }
-      } else {
-        if {$right} {incr index} {set index $parentindex}
-      }
-      if {$index < 0} {set index end} elseif {$index >= [llength $cfg($win,sortlist)]} {set index 0}
-      setselection $win [lindex $cfg($win,sortlist) $index]
-      buildwhenidle $win
-    }
-
-    #### will return the pathname of the item at x and y cooridinates
-    proc ::tktree::labelat {win x y} {
-      set x [$win canvasx $x]; set y [$win canvasy $y]
-      foreach m [$win find overlapping $x $y $x $y] {
-        if {[info exists ::tktree::cfg($win,tag:$m)]} {return $::tktree::cfg($win,tag:$m)}
-      }
-      return ""
-    }
-
-    #### will return the path of the current selection in the given tree widget
-    proc ::tktree::getselection {win} {
-      return $::tktree::cfg($win,selection)
-    }
-
-    #### adjust the scrollview to show the selected item as needed
-    proc ::tktree::scrolladjust {win tag} {
-      update
-      set item [$win bbox $tag]
-      set region [$win cget -scrollregion]
-      foreach {axis idx1 idx2} {yview 1 3 xview 0 2} {
-        set range [expr abs([lindex $region $idx2]) - abs([lindex $region $idx1])]
-        set itemtop [lindex $item $idx1];  set itembot [lindex $item $idx2]
-        set viewtop [expr $range * [lindex [$win $axis] 0]]
-        set viewbot [expr $range * [lindex [$win $axis] 1]]
-        if {$itembot > $viewbot} {$win $axis moveto [expr ($itembot. - $viewbot + $viewtop) / $range]}
-        if {$itemtop < $viewtop} {$win $axis moveto [expr $itemtop. / $range]}
-      }
-    }
-
-    #### will set the current selection to the given item on the given tree
-    proc ::tktree::setselection {win item} {
-      variable cfg
-      if {![llength $cfg($win,sortlist)]} {return}
-      if {$item eq ""} {set item [lindex $cfg($win,sortlist) 0]}
-      if {![info exists cfg($win,$item:tag)]} {set item [lindex $cfg($win,sortlist) 0]}
-      if {[$win gettags $cfg($win,$item:tag)] ne ""} {
-        $win select from $cfg($win,$item:tag) 0
-        $win select to $cfg($win,$item:tag) end
-        set cfg($win,selection) $item
-        scrolladjust $win $cfg($win,$item:tag)
-      } {
-        setselection $win "/[lindex $cfg($win,/:sortlist) 0]"
-      }
-    }
-
-    #### will delete the item given from the tree given
-    proc ::tktree::delitem {win item} {
-      variable cfg
-      if {$item eq "/"} {
-        array unset cfg $win,* ; catch {destroy $win}
-      } {
-        set group [file dirname $item]
-        if {$cfg($win,$item:group)} {set type subgroups} {set type children}
-        set index [lsearch -exact $cfg($win,$group:$type) $item]
-        set cfg($win,$group:$type) [lreplace $cfg($win,$group:$type) $index $index]
-        array unset cfg $win,$item*
-        buildwhenidle $win
-      }
-    }
-
-    #### create a new item in the tree and rebuild the widget
-    proc ::tktree::newitem {win item args} {
-      variable cfg
-      if {[string index $item 0] ne "/"} {set item /$item}
-      if {[string index $item end] eq "/"} {
-        set subgroup 1
-        set type subgroups
-        set item [string range $item 0 end-1]
-        set cfg($win,$item:command) [list ::tktree::switchstate $win $item]
-      } {
-        set subgroup 0
-        set type children
-        set cfg($win,$item:command) {}
-      }
-      #Build parent group if needed
-      set group [file dirname $item]
-      if {![info exists cfg($win,$group:open)]} {newitem $win "$group\/"}
-      lappend cfg($win,$group:$type) $item
-      #Configure the new item
-      set cfg($win,$item:group) $subgroup
-      set cfg($win,$item:subgroups) {}
-      set cfg($win,$item:children) {}
-      set cfg($win,$item:sortlist) {}
-      set cfg($win,$item:tags) {}
-      set cfg($win,$item:open) 0
-      set cfg($win,$item:image) {}
-      set cfg($win,$item:textcolor) $cfg($win,textcolor)
-      set cfg($win,$item:font) $cfg($win,font)
-      if {$cfg($win,images)} {set cfg($win,$item:image) [eval list \$::tktree::img$type]}
-      foreach {confitem confval} $args {
-        switch -exact -- $confitem {
-          -textcolor  {set cfg($win,$item:textcolor) $confval}
-          -command    {set cfg($win,$item:command)   $confval}
-          -image      {set cfg($win,$item:image)     $confval}
-          -font       {set cfg($win,$item:font)      $confval}
-        }
-      }
-      buildwhenidle $win
-    }
-
-    #### Draw the given layer of the tree on the canvas starting at xposition
-    proc ::tktree::buildlayer {win layer xpos} {
-      variable cfg
-      #Record y positions for vertical line later on
-      set ystart $cfg($win,y); set yend $cfg($win,y)
-      if {$layer eq "/"} {set cfg($win,sortlist) ""}
-      foreach child $cfg($win,$layer:sortlist) {
-        lappend cfg($win,sortlist) $child
-        #Check spacing required for images
-        set imgwidth 0; set imgheight 0
-        if {[string length $cfg($win,$child:image)]} {
-          set imgwidth [expr  ([image width $cfg($win,$child:image)] + 2) / 2]
-          set imgheight [expr ([image height $cfg($win,$child:image)] + 2) / 2]
-        }
-        #find X-axis points for image, horiz line, and text
-        if {$imgwidth} {
-          set centerX [expr $imgwidth + $xpos + 7]
-          set rightX  [expr $xpos + 7]
-          set textX   [expr ($imgwidth * 2) + $xpos + 10]
-        } {
-          set centerX [expr $xpos + 10]
-          set rightX  [expr $centerX + 4]
-          set textX   [expr $rightX + 1]
-        }
-        #Find the proper amount to increment the y axis
-        set fontheight [lindex [font metrics $cfg($win,$child:font)] 5]
-        set yincr [expr ($fontheight + 1) / 2]
-        if {$imgheight > $yincr} {set yincr $imgheight}
-        incr cfg($win,y) $yincr
-        #Draw the horizonal line
-        $win create line $xpos $cfg($win,y) $rightX $cfg($win,y) -fill $cfg($win,linecolor)
-        set yend $cfg($win,y)
-        #Draw the image, if it exists
-        if {$imgwidth} {
-          set it [$win create image $centerX $cfg($win,y) -image $cfg($win,$child:image)]
-          $win bind $it <1> [list ::tktree::setselection $win $child]
-        }
-        #Draw text and store tags for reference
-        set cfg($win,$child:tag) [$win create text $textX $cfg($win,y) \
-            -text [file tail $child] -font $cfg($win,$child:font) -anchor w -tags x -fill $cfg($win,$child:textcolor)]
-        set cfg($win,tag:$cfg($win,$child:tag)) $child
-        #Command binding
-        $win bind $cfg($win,$child:tag) <1> [list ::tktree::setselection $win $child]
-        $win bind $cfg($win,$child:tag) <Double-1> $cfg($win,$child:command)
-        #next step up on the y axis
-        incr cfg($win,y) $yincr
-        #If its a group, add open-close functionality
-        if {$cfg($win,$child:group)} {
-          if {$cfg($win,$child:open)} {set img collapse} {set img expand}
-          set ocimg [$win create image $xpos [expr $cfg($win,y) - $yincr] -image [eval list \$::tktree::img$img]]
-          $win bind $ocimg <1> [list ::tktree::switchstate $win $child]
-          if {$cfg($win,$child:open)} {buildlayer $win $child $centerX}
-        }
-      }
-      #Vertical line
-      $win lower [$win create line $xpos [expr $ystart - 7] $xpos $yend -fill $cfg($win,linecolor)]
-    }
-
-    #### sort the layer by subgroups then children
-    proc ::tktree::sortlayer {win {layer /}} {
-      variable cfg
-      set cfg($win,$layer:subgroups) [lsort -dictionary $cfg($win,$layer:subgroups)]
-      set cfg($win,$layer:children) [lsort -dictionary $cfg($win,$layer:children)]
-      set cfg($win,$layer:sortlist) [join [list $cfg($win,$layer:subgroups) $cfg($win,$layer:children)]]
-      foreach group $cfg($win,$layer:subgroups) {sortlayer $win $group}
-    }
-
-    #### build the tree at the given path
-    proc ::tktree::buildtree {win} {
-      variable cfg
-      $win delete all
-      sortlayer $win
-      set xpos 5
-      set cfg($win,y) 5
-      #Draw global expand/contract button, if needed
-      if {[string length $cfg($win,/:subgroups)] && $cfg($win,expandall)} {
-        set exp 0
-        foreach subgroup $cfg($win,/:subgroups) {incr exp $cfg($win,$subgroup:open)}
-        if {$exp} {set type collapse} {set type expand}
-        set ocimg [$win create image 1 1 -image [eval list \$::tktree::img$type] -anchor w]
-        $win bind $ocimg <1> [list ::tktree::switchlayer $win [expr ! $exp]]
-      }
-      #Build the layers and set initial selection
-      buildlayer $win / $xpos
-      $win config -scrollregion [$win bbox all]
-      setselection $win $cfg($win,selection)
-    }
-
-    #### internal use - set up a handle to build the tree when everything is idle
-    proc ::tktree::buildwhenidle {win} {
-      catch {after cancel $::tktree::cfg($win,buildHandle)}
-      set ::tktree::cfg($win,buildHandle) [after idle [list ::tktree::buildtree $win]]
-    }
-
-    #### will create a new tree widget at the given path
-    proc ::tktree::treecreate {win args} {
-      variable cfg
-      #Default configuration for new tree
-      set cfg($win,selection) {}
-      set cfg($win,selidx) {}
-      set cfg($win,/:subgroups) {}
-      set cfg($win,/:children) {}
-      set cfg($win,/:open) 1
-      set cfg($win,images) 1
-      set cfg($win,expandall) 1
-      set cfg($win,linecolor)  black
-      set cfg($win,textcolor)  black
-      set cfg($win,font) {-family Helvetica -size 10}
-      #Parse and setup custom configuration options
-      set canvascfg ""
-      foreach {item val} $args {
-        switch -- $item {
-          -linecolor            {set cfg($win,linecolor) $val}
-          -textcolor            {set cfg($win,textcolor) $val}
-          -font                 {set cfg($win,font) $val}
-          -images               {set cfg($win,images) $val}
-          -expandall            {set cfg($win,expandall) $val}
-          default               {lappend canvascfg $item $val}
-        }
-      }
-      #Build the canvas
-      eval {canvas $win -takefocus 1} $canvascfg
-      bind $win <Destroy> [list ::tktree::delitem $win /]
-      bind $win <1>  [list focus $win]
-      bind $win <Return> {eval $::tktree::cfg(%W,[::tktree::getselection %W]:command)}
-      bind $win <space> {eval $::tktree::cfg(%W,[::tktree::getselection %W]:command)}
-      bind $win <Up>    [list ::tktree::updown $win 0]
-      bind $win <Down>    [list ::tktree::updown $win 1]
-      bind $win <Left>    [list ::tktree::leftright $win 0]
-      bind $win <Right>    [list ::tktree::leftright $win 1]
-
-      #Build the tree when idle
-      buildwhenidle $win
-    }
- }
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tk/ttk_wrapper.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tk/ttk_wrapper.rb
deleted file mode 100644 (file)
index 1580668..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-#!/usr/bin/env ruby
-#
-#  ttk_wrapper.rb  --  use Ttk widgets as default on old Ruby/Tk scripts
-#
-#                       by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
-#
-version = '0.1.3'
-#
-##########################################################################
-#  parse commandline arguments
-##########################################################################
-require 'optparse'
-opt = OptionParser.new("Usage: #{$0} [options] rubytk_script" << "\n    " << 
-                         "Ruby/Tk script wrapper. Use Ttk widgets as default.")
-opt.version = version
-
-OPTS = {}
-OPTS[:themedir] = []
-OPTS[:rb_theme] = []
-OPTS[:theme] = 'default'
-
-opt.on('-l', '--list', 'list available theme names'){|v| OPTS[:list] = true}
-opt.on('-t', '--theme theme', 'theme name'){|v| OPTS[:theme] = v}
-opt.on('-d', '--themedir themes_dir', 'directory of theme definitions'){|v| 
-  OPTS[:themedir] << v
-}
-opt.on('-r', '--rubytheme rb_theme', 'theme definition file (ruby script)'){|v|
-  OPTS[:rb_theme] << v
-}
-opt.on('-v', '--verbose', 'print verbose messages'){|v| OPTS[:verbose] = true}
-
-opt.parse!(ARGV)
-
-
-##########################################################################
-#  load Ttk (Tile) extension
-##########################################################################
-require 'tk'
-
-begin
-  require 'tkextlib/tile'
-  Tk.default_widget_set = :Ttk
-rescue LoadError
-  if OPTS[:verbose]
-    print "warning: fail to load 'Ttk' extension. use standard widgets.\n" 
-  end
-end
-
-if OPTS[:verbose]
-  print "current default widget set is '#{Tk.default_widget_set}'\n"
-end
-
-
-##########################################################################
-# define Tcl/Tk procedures for compatibility.
-# those are required when want to use themes included 
-# in "sample/tkextlib/tile/demo.rb".
-##########################################################################
-Tk::Tile.__define_LoadImages_proc_for_compatibility__!
-Tk::Tile::Style.__define_wrapper_proc_for_compatibility__!
-
-
-##########################################################################
-#  use themes defined on the demo of Ttk (Tile) extension
-##########################################################################
-demodir = File.dirname(__FILE__)
-demo_themesdir = File.expand_path(File.join(demodir, 'tkextlib', 'tile', 'themes'))
-
-Tk::AUTO_PATH.lappend(*OPTS[:themedir]) unless OPTS[:themedir].empty?
-Tk::AUTO_PATH.lappend('.', demodir, demo_themesdir)
-
-OPTS[:themedir] << demo_themesdir
-print "theme-dirs: #{OPTS[:themedir].inspect}\n" if OPTS[:verbose]
-
-OPTS[:themedir].each{|themesdir|
-  if File.directory?(themesdir)
-    Dir.foreach(themesdir){|name|
-      next if name == '.' || name == '..'
-      path = File.join(themesdir, name)
-      Tk::AUTO_PATH.lappend(path) if File.directory?(path)
-    }
-  end
-}
-
-# This forces an update of the available packages list. It's required
-# for package names to find the themes in demos/themes/*.tcl
-Tk.ip_eval("#{TkPackage.unknown_proc}  Tcl #{TkPackage.provide('Tcl')}")
-
-# load themes written in Ruby.
-themes_by_ruby = [File.join(demo_themesdir, 'kroc.rb')]
-themes_by_ruby.concat OPTS[:rb_theme]
-print "ruby-themes: #{themes_by_ruby.inspect}\n" if OPTS[:verbose]
-
-themes_by_ruby.each{|f|
-  begin
-    load(f, true)
-  rescue LoadError
-    print "fail to load \"#{f}\"\n" if OPTS[:verbose]
-  end
-}
-
-
-##########################################################################
-# ignore unsupported options of Ttk widgets
-##########################################################################
-TkConfigMethod.__set_IGNORE_UNKNOWN_CONFIGURE_OPTION__! true
-TkItemConfigMethod.__set_IGNORE_UNKNOWN_CONFIGURE_OPTION__! true
-
-
-##########################################################################
-#  set theme of widget style
-##########################################################################
-if OPTS[:list] || OPTS[:verbose]
-  print "supported theme names: #{Tk::Tile.themes.inspect}\n" 
-  exit if OPTS[:list] && ARGV.empty?
-end
-print "use theme: \"#{OPTS[:theme]}\"\n" if OPTS[:theme] && OPTS[:verbose]
-#setTheme(OPTS[:theme]) if OPTS[:theme]
-Tk::Tile.set_theme(OPTS[:theme]) if OPTS[:theme]
-
-
-##########################################################################
-#  replace $0 and $RPAGRAM_NAME
-##########################################################################
-#  When the expand_path of the target script is long, ruby sometimes 
-#  fails to set the path to $0 (the path string is trimmed).
-#  The following replaces $0 and $PROGNAME to avoid such trouble.
-progname_obj = $0.dup
-$program_name = progname_obj
-
-alias $REAL_PROGRAM_NAME $0
-alias $PROGRAM_NAME $program_name
-alias $0 $program_name
-
-trace_var(:$program_name){|val|
-  unless progname_obj.object_id == val.object_id
-    progname_obj.replace(val.to_s)
-    $program_name = progname_obj
-  end
-}
-
-
-##########################################################################
-#  load script
-##########################################################################
-if (path = ARGV.shift) && (script = File.expand_path(path))
-  print "load script \"#{script}\"\n" if OPTS[:verbose]
-  $0 = script
-  load(script)
-else
-  print "Error: no script is given.\n"
-  print opt.help
-  exit(1)
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/trojan.rb b/ruby/doc/ruby/ruby-1.8.7/sample/trojan.rb
deleted file mode 100644 (file)
index 3a35ac2..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#! /usr/local/bin/ruby
-
-path = ENV['PATH'].split(File::PATH_SEPARATOR)
-
-for dir in path
-  if File.directory?(dir)
-    for f in d = Dir.open(dir)
-      fpath = File.join(dir, f)  
-      if File.file?(fpath) && (File.stat(fpath).mode & 022) != 0
-       printf("file %s is writable from other users\n", fpath)
-      end
-    end
-    d.close
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/tsvr.rb b/ruby/doc/ruby/ruby-1.8.7/sample/tsvr.rb
deleted file mode 100644 (file)
index 52cdd32..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-# socket example - server side using thread
-# usage: ruby tsvr.rb
-
-require "socket"
-
-gs = TCPserver.open(0)
-addr = gs.addr
-addr.shift
-printf("server is on %s\n", addr.join(":"))
-
-loop do
-  Thread.start(gs.accept) do |s|
-    print(s, " is accepted\n")
-    while line = s.gets
-      s.write(line)
-    end
-    print(s, " is gone\n")
-    s.close
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/uumerge.rb b/ruby/doc/ruby/ruby-1.8.7/sample/uumerge.rb
deleted file mode 100644 (file)
index 2576bcb..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env ruby
-
-if ARGV[0] == "-c"
-  out_stdout = 1
-  ARGV.shift
-end
-
-$sawbegin = 0
-$sawend = 0
-
-while line = gets()
-  if /^begin\s*(\d*)\s*(\S*)/ =~ line
-    $mode, $file = $1, $2
-    $sawbegin+=1
-    if out_stdout
-      out = STDOUT
-    else
-      out = open($file, "w") if $file != ""
-    end
-    out.binmode
-    break
-  end
-end
-
-raise "missing begin" unless $sawbegin
-
-out.binmode
-while line = gets()
-  if /^end/ =~ line
-    $sawend+=1
-    out.close unless out_stdout
-    File.chmod $mode.oct, $file unless out_stdout
-    next
-  end
-  line.sub!(/[a-z]+$/, "")     # handle stupid trailing lowercase letters
-  next if /[a-z]/ =~ line
-  next if !(((($_[0] - 32) & 077) + 2) / 3 == $_.length / 4)
-  out << $_.unpack("u") if $sawbegin > $sawend
-end
-
-raise "missing end" if $sawbegin > $sawend
-raise "missing begin" if ! $sawbegin
-exit 0
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/webrick/demo-app.rb b/ruby/doc/ruby/ruby-1.8.7/sample/webrick/demo-app.rb
deleted file mode 100644 (file)
index c7a2a0a..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-require "pp"
-
-module DemoApplication
-  def initialize(config, enctype)
-    super
-    @enctype = enctype
-  end
-
-  def do_GET(req, res)
-    if req.path_info != "/"
-      res.set_redirect(WEBrick::HTTPStatus::Found, req.script_name + "/")
-    end
-    res.body =<<-_end_of_html_
-      <HTML>
-       <FORM method="POST" enctype=#{@enctype}>
-        text: <INPUT type="text" name="text"><BR>
-        file: <INPUT type="file" name="file"><BR>
-        check:
-        <INPUT type="checkbox" name="check" value="a">a,
-        <INPUT type="checkbox" name="check" value="b">b,
-        <INPUT type="checkbox" name="check" value="c">c,
-        <BR>
-        <INPUT type="submit">
-       </FORM>
-      </HTML>
-    _end_of_html_
-    res['content-type'] = 'text/html; charset=iso-8859-1'
-  end
-
-  def do_POST(req, res)
-    if req["content-length"].to_i > 1024*10
-      raise WEBrick::HTTPStatus::Forbidden, "file size too large"
-    end
-    res.body =<<-_end_of_html_
-      <HTML>
-       <H2>Query Parameters</H2>
-       #{display_query(req.query)}
-       <A href="#{req.path}">return</A>
-       <H2>Request</H2>
-       <PRE>#{WEBrick::HTMLUtils::escape(PP::pp(req, "", 80))}</PRE>
-       <H2>Response</H2>
-       <PRE>#{WEBrick::HTMLUtils::escape(PP::pp(res, "", 80))}</PRE>
-      </HTML>
-    _end_of_html_
-    res['content-type'] = 'text/html; charset=iso-8859-1'
-  end
-
-  private
-
-  def display_query(q)
-    ret = ""
-    q.each{|key, val|
-      ret << "<H3>#{WEBrick::HTMLUtils::escape(key)}</H3>"
-      ret << "<TABLE border=1>"
-      ret << make_tr("val", val.inspect)
-      ret << make_tr("val.to_a", val.to_a.inspect)
-      ret << make_tr("val.to_ary", val.to_ary.inspect)
-      ret << "</TABLE>"
-    }
-    ret
-  end
-
-  def make_tr(arg0, arg1)
-    "<TR><TD>#{arg0}</TD><TD>#{WEBrick::HTMLUtils::escape(arg1)}</TD></TR>"
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/webrick/demo-multipart.cgi b/ruby/doc/ruby/ruby-1.8.7/sample/webrick/demo-multipart.cgi
deleted file mode 100644 (file)
index 0893fad..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env ruby
-require "webrick/cgi"
-require "webrick/https" # should load if it runs on HTTPS server
-require "./demo-app"
-
-class DemoCGI < WEBrick::CGI
-  include DemoApplication
-end
-
-config = { :NPH => false }
-cgi = DemoCGI.new(config, "multipart/form-data")
-cgi.start
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/webrick/demo-servlet.rb b/ruby/doc/ruby/ruby-1.8.7/sample/webrick/demo-servlet.rb
deleted file mode 100644 (file)
index 9c18cc6..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-require "webrick"
-require "./demo-app"
-
-class DemoServlet < WEBrick::HTTPServlet::AbstractServlet
-  include DemoApplication
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/webrick/demo-urlencoded.cgi b/ruby/doc/ruby/ruby-1.8.7/sample/webrick/demo-urlencoded.cgi
deleted file mode 100644 (file)
index e4706f8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env ruby
-require "webrick/cgi"
-require "webrick/https"  # should load if it runs on HTTPS server 
-require "./demo-app"
-
-class DemoCGI < WEBrick::CGI
-  include DemoApplication
-end
-
-config = { :NPH => false } 
-cgi = DemoCGI.new(config, "application/x-www-form-urlencoded")
-cgi.start
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/webrick/hello.cgi b/ruby/doc/ruby/ruby-1.8.7/sample/webrick/hello.cgi
deleted file mode 100644 (file)
index 35d2240..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env ruby
-require "webrick/cgi"
-
-class HelloCGI < WEBrick::CGI
-  def do_GET(req, res)
-    res["content-type"] = "text/plain"
-    res.body = "Hello, world.\n"
-  end
-end
-
-HelloCGI.new.start
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/webrick/hello.rb b/ruby/doc/ruby/ruby-1.8.7/sample/webrick/hello.rb
deleted file mode 100644 (file)
index 4d02676..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-require "webrick"
-
-class HelloServlet < WEBrick::HTTPServlet::AbstractServlet
-  def do_GET(req, res)
-    res["content-type"] = "text/plain"
-    res.body = "Hello, world.\n"
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/webrick/httpd.rb b/ruby/doc/ruby/ruby-1.8.7/sample/webrick/httpd.rb
deleted file mode 100644 (file)
index b0edf47..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-require "webrick"
-
-httpd = WEBrick::HTTPServer.new(
-  :DocumentRoot => File::dirname(__FILE__),
-  :Port         => 10080,
-  :Logger       => WEBrick::Log.new($stderr, WEBrick::Log::DEBUG),
-  :AccessLog    => [
-    [ $stderr, WEBrick::AccessLog::COMMON_LOG_FORMAT  ],
-    [ $stderr, WEBrick::AccessLog::REFERER_LOG_FORMAT ],
-    [ $stderr, WEBrick::AccessLog::AGENT_LOG_FORMAT   ],
-  ],
-  :CGIPathEnv   => ENV["PATH"]   # PATH environment variable for CGI.
-)
-
-require "./hello"
-httpd.mount("/hello", HelloServlet)
-
-require "./demo-servlet"
-httpd.mount("/urlencoded", DemoServlet, "application/x-www-form-urlencoded")
-httpd.mount("/multipart", DemoServlet, "multipart/form-data")
-
-trap(:INT){ httpd.shutdown }
-httpd.start
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/webrick/httpproxy.rb b/ruby/doc/ruby/ruby-1.8.7/sample/webrick/httpproxy.rb
deleted file mode 100644 (file)
index bca0cc4..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-require "webrick"
-require "webrick/httpproxy"
-
-# :ProxyContentHandler will be invoked before sending
-# response to User-Agenge. You can inspect the pair of
-# request and response messages (or can edit the response
-# message if necessary).
-
-pch = Proc.new{|req, res|
-  p [ req.request_line, res.status_line ]
-}
-
-def upstream_proxy
-  if prx = ENV["http_proxy"]
-    return URI.parse(prx)
-  end
-  return nil
-end
-
-httpd = WEBrick::HTTPProxyServer.new(
-  :Port     => 10080,
-  :ProxyContentHandler => pch,
-  :ProxyURI => upstream_proxy
-)
-Signal.trap(:INT){ httpd.shutdown }
-httpd.start
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/webrick/httpsd.rb b/ruby/doc/ruby/ruby-1.8.7/sample/webrick/httpsd.rb
deleted file mode 100644 (file)
index a120782..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-require "webrick"
-require "webrick/https"
-
-hostname = WEBrick::Utils::getservername
-subject = [["O", "ruby-lang.org"], ["OU", "sample"], ["CN", hostname]]
-comment = "Comment for self-signed certificate"
-
-httpd = WEBrick::HTTPServer.new(
-  :DocumentRoot   => File::dirname(__FILE__),
-  :Port           => 10443,
-  :SSLEnable      => true,
-
-  # Specify key pair and server certificate.
-  # :SSLPrivateKey  => OpenSSL::PKey::RSA.new(File.read("server.key")),
-  # :SSLCertificate => OpenSSL::X509::Certificate.new(File.read("server.crt")),
-
-  # specify the following SSL options if you want to use auto
-  # generated self-signed certificate.
-  :SSLCertName    => subject,
-  :SSLComment     => comment,
-
-  :CGIPathEnv     => ENV["PATH"]  # PATH environment variable for CGI.
-)
-
-require "./hello"
-httpd.mount("/hello", HelloServlet)
-
-require "./demo-servlet"
-httpd.mount("/urlencoded", DemoServlet, "application/x-www-form-urlencoded")
-httpd.mount("/multipart", DemoServlet, "multipart/form-data")
-
-trap(:INT){ httpd.shutdown }
-httpd.start
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/excel1.rb b/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/excel1.rb
deleted file mode 100644 (file)
index e366a52..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'win32ole'
-
-#application = WIN32OLE.new('Excel.Application.5')
-application = WIN32OLE.new('Excel.Application')
-
-application.visible = TRUE
-workbook = application.Workbooks.Add();
-worksheet = workbook.Worksheets(1);
-worksheet.Range("A1:D1").value = ["North","South","East","West"];
-worksheet.Range("A2:B2").value = [5.2, 10];
-worksheet.Range("C2").value = 8;
-worksheet.Range("D2").value = 20;
-
-range = worksheet.Range("A1:D2");
-range.Select
-chart = workbook.Charts.Add;
-
-workbook.saved = TRUE;
-
-application.ActiveWorkbook.Close(0);
-application.Quit();
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/excel2.rb b/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/excel2.rb
deleted file mode 100644 (file)
index 46f459b..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'win32ole'
-
-#   -4100 is the value for the Excel constant xl3DColumn.
-ChartTypeVal = -4100;
-
-#   Creates OLE object to Excel
-#excel = WIN32OLE.new("excel.application.5")
-excel = WIN32OLE.new("excel.application")
-
-# Create and rotate the chart
-
-excel['Visible'] = TRUE;
-excel.Workbooks.Add();
-excel.Range("a1")['Value'] = 3;
-excel.Range("a2")['Value'] = 2;
-excel.Range("a3")['Value'] = 1;
-excel.Range("a1:a3").Select();
-excelchart = excel.Charts.Add();
-excelchart['Type'] = ChartTypeVal;
-
-i = 30
-i.step(180, 10) do |rot|
-#    excelchart['Rotation'] = rot;
-    excelchart.rotation=rot;
-end
-# Done, bye
-
-excel.ActiveWorkbook.Close(0);
-excel.Quit();
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/excel3.rb b/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/excel3.rb
deleted file mode 100644 (file)
index 0f96717..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-require 'win32ole'
-
-#application = WIN32OLE.new('Excel.Application.5')
-application = WIN32OLE.new('Excel.Application')
-
-application.visible = TRUE
-workbook = application.Workbooks.Add();
-sheet = workbook.Worksheets(1);
-sheetS = workbook.Worksheets
-puts "The number of sheets is #{sheetS.count}"
-puts "Now add 2 sheets after of `#{sheet.name}`"
-sheetS.add({'count'=>2, 'after'=>sheet})
-puts "The number of sheets is #{sheetS.count}"
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/ie.rb b/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/ie.rb
deleted file mode 100644 (file)
index 11dc861..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-require 'win32ole'
-url = 'http://www.ruby-lang.org/'
-ie = WIN32OLE.new('InternetExplorer.Application')
-ie.visible = TRUE
-ie.gohome
-print "Now navigate Ruby home page... Please enter."
-gets
-ie.navigate(url)
-print "Now quit Internet Explorer... Please enter."
-gets
-ie.Quit()
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/ieconst.rb b/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/ieconst.rb
deleted file mode 100644 (file)
index 234272c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-require 'win32ole'
-
-ie = WIN32OLE.new('InternetExplorer.Application')
-=begin
-WIN32OLE.const_load(ie)
-WIN32OLE.constants.sort.each do |c|
-  puts "#{c} = #{WIN32OLE.const_get(c)}"
-end
-=end
-
-module IE_CONST
-end
-
-WIN32OLE.const_load(ie, IE_CONST)
-IE_CONST.constants.sort.each do |c|
-  puts "#{c} = #{IE_CONST.const_get(c)}"
-end
-
-#------------------------------------------------------------
-# Remark!!! CONSTANTS has not tested enoughly!!!
-# CONSTANTS is alpha release.
-# If there are constants which first letter is not [a-zA-Z],
-# like a '_Foo', then maybe you can access the value by 
-# using CONSTANTS['_Foo']
-#------------------------------------------------------------
-IE_CONST::CONSTANTS.each do |k, v|
-  puts "#{k} = #{v}"
-end
-
-puts WIN32OLE::VERSION
-ie.quit
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/ienavi.rb b/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/ienavi.rb
deleted file mode 100644 (file)
index c7fa3f5..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'win32ole'
-
-$urls = []
-
-def navigate(url)
-  $urls << url
-end
-
-def stop_msg_loop
-  puts "Now Stop IE..."
-  $LOOP = FALSE;
-end
-
-def default_handler(event, *args)
-  case event
-  when "BeforeNavigate"
-    puts "Now Navigate #{args[0]}..."
-  end
-end
-
-ie = WIN32OLE.new('InternetExplorer.Application')
-ie.visible = TRUE
-ie.gohome
-
-ev = WIN32OLE_EVENT.new(ie, 'DWebBrowserEvents')
-
-ev.on_event {|*args| default_handler(*args)}
-ev.on_event("NavigateComplete") {|url| navigate(url)}
-ev.on_event("Quit") {|*args| stop_msg_loop} 
-
-$LOOP = TRUE
-while ($LOOP)
-  WIN32OLE_EVENT.message_loop
-end
-
-puts "You Navigated the URLs ..."
-$urls.each_with_index do |url, i|
-  puts "(#{i+1}) #{url}"
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/oledirs.rb b/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/oledirs.rb
deleted file mode 100644 (file)
index 1c77e76..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# You need WSH(Windows Scripting Host) to run this script.
-#
-
-require "win32ole"
-
-def listup(items)
-#  items.each do |i|
-  for i in items
-    puts i.name 
-  end
-end
-
-fs = WIN32OLE.new("Scripting.FileSystemObject")
-
-folder = fs.GetFolder(".")
-
-puts "--- folder of #{folder.path} ---"
-listup(folder.SubFolders)
-
-puts "--- files of #{folder.path} ---"
-listup(folder.Files)
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/olegen.rb b/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/olegen.rb
deleted file mode 100644 (file)
index 06f675f..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-#-----------------------------
-# olegen.rb
-# $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
-# $Revision: 11708 $
-#-----------------------------
-
-require 'win32ole'
-
-class WIN32COMGen
-  def initialize(typelib)
-    @typelib = typelib
-    @reciever = ""
-  end
-  attr_reader :typelib
-
-  def ole_classes(typelib)
-    begin
-      @ole = WIN32OLE.new(typelib)
-      [@ole.ole_obj_help]
-    rescue
-      WIN32OLE_TYPE.ole_classes(typelib)
-    end
-  end
-
-  def generate_args(method)
-    args = []
-    if method.size_opt_params >= 0
-      size_required_params = method.size_params - method.size_opt_params
-    else
-      size_required_params = method.size_params - 1
-    end
-    size_required_params.times do |i|
-      if method.params[i] && method.params[i].optional?
-        args.push "arg#{i}=nil"
-      else
-        args.push "arg#{i}"
-      end
-    end
-    if method.size_opt_params >= 0
-      method.size_opt_params.times do |i|
-        args.push "arg#{i + size_required_params}=nil"
-      end
-    else
-      args.push "*arg"
-    end
-    args.join(", ")
-  end
-
-  def generate_argtype(typedetails)
-    ts = ''
-    typedetails.each do |t|
-      case t
-      when 'CARRAY', 'VOID', 'UINT', 'RESULT', 'DECIMAL', 'I8', 'UI8' 
-#        raise "Sorry type\"" + t + "\" not supported"
-      ts << "\"??? NOT SUPPORTED TYPE:`#{t}'\""
-      when 'USERDEFINED', 'Unknown Type 9'
-        ts << 'VT_DISPATCH'
-        break;
-      when 'SAFEARRAY'
-        ts << 'VT_ARRAY|'
-      when 'PTR'
-        ts << 'VT_BYREF|'
-      when 'INT'
-        ts << 'VT_I4'
-      else
-        if String === t
-          ts << 'VT_' + t
-        end
-      end
-    end
-    if ts.empty?
-      ts = 'VT_VARIANT'
-    elsif ts[-1] == ?|
-       ts += 'VT_VARIANT'
-    end
-    ts
-  end
-
-  def generate_argtypes(method, proptypes)
-    types = method.params.collect{|param|
-      generate_argtype(param.ole_type_detail)
-    }.join(", ")
-    if proptypes
-      types += ", " if types.size > 0 
-      types += generate_argtype(proptypes)
-    end
-    types
-  end
-
-  def generate_method_body(method, disptype, types=nil)
-    "    ret = #{@reciever}#{disptype}(#{method.dispid}, [" +
-    generate_args(method).gsub("=nil", "") +
-    "], [" +
-    generate_argtypes(method, types) +
-    "])\n" +
-    "    @lastargs = WIN32OLE::ARGV\n" +
-    "    ret"
-  end
-
-  def generate_method_help(method, type = nil)
-    str = "  # "  
-    if type 
-      str += type
-    else
-      str += method.return_type
-    end
-    str += " #{method.name}"
-    if method.event?
-      str += " EVENT"
-      str += " in #{method.event_interface}"
-    end
-    if method.helpstring && method.helpstring != ""
-      str += "\n  # "
-      str += method.helpstring
-    end
-    args_help = generate_method_args_help(method)
-    if args_help
-      str += "\n"
-      str += args_help
-    end
-    str
-  end
-
-  def generate_method_args_help(method)
-    args = []
-    method.params.each_with_index {|param, i|
-      h = "  #   #{param.ole_type} arg#{i} --- #{param.name}" 
-      inout = []
-      inout.push "IN" if param.input?
-      inout.push "OUT" if param.output?
-      h += " [#{inout.join('/')}]"
-      h += " ( = #{param.default})" if param.default
-      args.push h
-    }
-    if args.size > 0
-      args.join("\n")
-    else
-      nil
-    end
-  end
-
-  def generate_method(method, disptype, io = STDOUT, types = nil)
-    io.puts "\n"
-    io.puts  generate_method_help(method)
-    if method.invoke_kind == 'PROPERTYPUT'
-      io.print "  def #{method.name}=("
-    else
-      io.print "  def #{method.name}("
-    end
-    io.print generate_args(method)
-    io.puts ")"
-    io.puts generate_method_body(method, disptype, types)
-    io.puts "  end"
-  end
-
-  def generate_propputref_methods(klass, io = STDOUT)
-    klass.ole_methods.select {|method|
-      method.invoke_kind == 'PROPERTYPUTREF' && method.visible?
-    }.each do |method|
-      generate_method(method, io)
-    end
-  end
-
-  def generate_properties_with_args(klass, io = STDOUT)
-    klass.ole_methods.select {|method|
-      method.invoke_kind == 'PROPERTYGET' &&
-      method.visible? &&
-      method.size_params > 0
-    }.each do |method|
-      types = method.return_type_detail 
-      io.puts "\n"
-      io.puts  generate_method_help(method, types[0])
-      io.puts  "  def #{method.name}"
-      if klass.ole_type == "Class"
-        io.print "    OLEProperty.new(@dispatch, #{method.dispid}, [" 
-      else
-        io.print "    OLEProperty.new(self, #{method.dispid}, [" 
-      end
-      io.print generate_argtypes(method, nil)
-      io.print "], ["
-      io.print generate_argtypes(method, types)
-      io.puts "])"
-      io.puts  "  end"
-    end
-  end
-
-  def generate_propput_methods(klass, io = STDOUT)
-    klass.ole_methods.select {|method|
-      method.invoke_kind == 'PROPERTYPUT' && method.visible? &&
-      method.size_params == 1
-    }.each do |method|
-      ms = klass.ole_methods.select {|m|
-        m.invoke_kind == 'PROPERTYGET' &&
-        m.dispid == method.dispid
-      }
-      types = []
-      if ms.size == 1
-        types = ms[0].return_type_detail
-      end
-      generate_method(method, '_setproperty', io, types)
-    end
-  end
-
-  def generate_propget_methods(klass, io = STDOUT)
-    klass.ole_methods.select {|method|
-      method.invoke_kind == 'PROPERTYGET' && method.visible? &&
-      method.size_params == 0
-    }.each do |method|
-      generate_method(method, '_getproperty', io)
-    end
-  end
-
-  def generate_func_methods(klass, io = STDOUT)
-    klass.ole_methods.select {|method|
-      method.invoke_kind == "FUNC" && method.visible?
-    }.each do |method|
-      generate_method(method, '_invoke', io)
-    end
-  end
-
-  def generate_methods(klass, io = STDOUT)
-    generate_propget_methods(klass, io)
-    generate_propput_methods(klass, io)
-    generate_properties_with_args(klass, io)
-    generate_func_methods(klass, io)
-#   generate_propputref_methods(klass, io)
-  end
-
-  def generate_constants(klass, io = STDOUT)
-    klass.variables.select {|v|
-      v.visible? && v.variable_kind == 'CONSTANT'
-    }.each do |v|
-      io.print "  "
-      io.print v.name.sub(/^./){|c| c.upcase}
-      io.print " = "
-      io.puts  v.value
-    end
-  end
-
-  def class_name(klass)
-    klass_name = klass.name
-    if klass.ole_type == "Class" &&
-       klass.guid &&
-       klass.progid
-       klass_name = klass.progid.gsub(/\./, '_')
-    end
-    if /^[A-Z]/ !~ klass_name || Module.constants.include?(klass_name)
-      klass_name = 'OLE' + klass_name
-    end
-    klass_name
-  end
-
-  def define_initialize(klass)
-    <<STR
-
-  def initialize(obj = nil)
-    @clsid = "#{klass.guid}"
-    @progid = "#{klass.progid}"
-    if obj.nil?
-      @dispatch = WIN32OLE.new @progid
-    else
-      @dispatch = obj
-    end
-  end
-STR
-  end
-
-  def define_include
-    "  include WIN32OLE::VARIANT"
-  end
-
-  def define_instance_variables
-    "  attr_reader :lastargs"
-  end
-
-  def define_method_missing
-    <<STR
-
-  def method_missing(cmd, *arg)
-    @dispatch.method_missing(cmd, *arg)
-  end
-STR
-  end
-
-  def define_class(klass, io = STDOUT)
-    io.puts "class #{class_name(klass)} # #{klass.name}"
-    io.puts define_include
-    io.puts define_instance_variables
-    io.puts "  attr_reader :dispatch"
-    io.puts "  attr_reader :clsid"
-    io.puts "  attr_reader :progid"
-    io.puts define_initialize(klass)
-    io.puts define_method_missing
-  end
-
-  def define_module(klass, io = STDOUT)
-    io.puts "module #{class_name(klass)}"
-    io.puts define_include
-    io.puts define_instance_variables
-  end
-
-  def generate_class(klass, io = STDOUT)
-    io.puts "\n# #{klass.helpstring}"
-    if klass.ole_type == "Class" &&
-       klass.guid &&
-       klass.progid
-      @reciever = "@dispatch."
-      define_class(klass, io)
-    else
-      @reciever = ""
-      define_module(klass, io)
-    end
-    generate_constants(klass, io)
-    generate_methods(klass, io)
-    io.puts "end"
-  end
-
-  def generate(io = STDOUT)
-    io.puts "require 'win32ole'"
-    io.puts "require 'win32ole/property'"
-
-    ole_classes(typelib).select{|klass|
-      klass.visible? &&
-      (klass.ole_type == "Class" || 
-       klass.ole_type == "Interface" || 
-       klass.ole_type == "Dispatch" ||
-       klass.ole_type == "Enum")
-    }.each do |klass|
-      generate_class(klass, io)
-    end
-    begin
-      @ole.quit if @ole
-    rescue 
-    end
-  end
-end
-
-require 'win32ole'
-if __FILE__ == $0
-  if ARGV.size == 0
-    $stderr.puts "usage: #{$0} Type Library [...]"
-    exit 1
-  end
-  ARGV.each do |typelib|
-    comgen = WIN32COMGen.new(typelib)
-    comgen.generate
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/xml.rb b/ruby/doc/ruby/ruby-1.8.7/sample/win32ole/xml.rb
deleted file mode 100644 (file)
index b95d6d5..0000000
+++ /dev/null
@@ -1,7306 +0,0 @@
-# 
-# This file created by olegen.rb as following.
-#    ruby olegen.rb 'Microsoft XML, version 2.0' > xml.rb
-# 
-require 'win32ole'
-require 'win32ole/property'
-
-# 
-module IXMLDOMImplementation
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BOOL hasFeature
-  #   BSTR arg0 --- feature [IN]
-  #   BSTR arg1 --- version [IN]
-  def hasFeature(arg0, arg1)
-    ret = _invoke(145, [arg0, arg1], [VT_BSTR, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# Core DOM node interface
-module IXMLDOMNode
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# Constants that define a node's type
-module OLEtagDOMNodeType
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-  NODE_INVALID = 0
-  NODE_ELEMENT = 1
-  NODE_ATTRIBUTE = 2
-  NODE_TEXT = 3
-  NODE_CDATA_SECTION = 4
-  NODE_ENTITY_REFERENCE = 5
-  NODE_ENTITY = 6
-  NODE_PROCESSING_INSTRUCTION = 7
-  NODE_COMMENT = 8
-  NODE_DOCUMENT = 9
-  NODE_DOCUMENT_TYPE = 10
-  NODE_DOCUMENT_FRAGMENT = 11
-  NODE_NOTATION = 12
-end
-
-# 
-module IXMLDOMNodeList
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # I4 length
-  # number of nodes in the collection
-  def length()
-    ret = _getproperty(74, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # PTR item
-  # collection of nodes
-  #   I4 arg0 --- index [IN]
-  def item
-    OLEProperty.new(self, 0, [VT_I4], [VT_I4, VT_BYREF|VT_DISPATCH])
-  end
-
-  # IXMLDOMNode nextNode
-  # get next node from iterator
-  def nextNode()
-    ret = _invoke(76, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID reset
-  # reset the position of iterator
-  def reset()
-    ret = _invoke(77, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# 
-module IXMLDOMNamedNodeMap
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # I4 length
-  # number of nodes in the collection
-  def length()
-    ret = _getproperty(74, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # PTR item
-  # collection of nodes
-  #   I4 arg0 --- index [IN]
-  def item
-    OLEProperty.new(self, 0, [VT_I4], [VT_I4, VT_BYREF|VT_DISPATCH])
-  end
-
-  # IXMLDOMNode getNamedItem
-  # lookup item by name
-  #   BSTR arg0 --- name [IN]
-  def getNamedItem(arg0)
-    ret = _invoke(83, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode setNamedItem
-  # set item by name
-  #   IXMLDOMNode arg0 --- newItem [IN]
-  def setNamedItem(arg0)
-    ret = _invoke(84, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeNamedItem
-  # remove item by name
-  #   BSTR arg0 --- name [IN]
-  def removeNamedItem(arg0)
-    ret = _invoke(85, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode getQualifiedItem
-  # lookup the item by name and namespace
-  #   BSTR arg0 --- baseName [IN]
-  #   BSTR arg1 --- namespaceURI [IN]
-  def getQualifiedItem(arg0, arg1)
-    ret = _invoke(87, [arg0, arg1], [VT_BSTR, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeQualifiedItem
-  # remove the item by name and namespace
-  #   BSTR arg0 --- baseName [IN]
-  #   BSTR arg1 --- namespaceURI [IN]
-  def removeQualifiedItem(arg0, arg1)
-    ret = _invoke(88, [arg0, arg1], [VT_BSTR, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextNode
-  # get next node from iterator
-  def nextNode()
-    ret = _invoke(89, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID reset
-  # reset the position of iterator
-  def reset()
-    ret = _invoke(90, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# 
-module IXMLDOMDocument
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocumentType doctype
-  # node corresponding to the DOCTYPE
-  def doctype()
-    ret = _getproperty(38, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMImplementation implementation
-  # info on this DOM implementation
-  def implementation()
-    ret = _getproperty(39, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMElement documentElement
-  # the root of the tree
-  def documentElement()
-    ret = _getproperty(40, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 readyState
-  # get the state of the XML document
-  def readyState()
-    ret = _getproperty(-525, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMParseError parseError
-  # get the last parser error
-  def parseError()
-    ret = _getproperty(59, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR url
-  # get the URL for the loaded XML document
-  def url()
-    ret = _getproperty(60, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL async
-  # flag for asynchronous download
-  def async()
-    ret = _getproperty(61, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL validateOnParse
-  # indicates whether the parser performs validation
-  def validateOnParse()
-    ret = _getproperty(65, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL resolveExternals
-  # indicates whether the parser resolves references to external DTD/Entities/Schema
-  def resolveExternals()
-    ret = _getproperty(66, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL preserveWhiteSpace
-  # indicates whether the parser preserves whitespace
-  def preserveWhiteSpace()
-    ret = _getproperty(67, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID async
-  # flag for asynchronous download
-  def async=(arg0)
-    ret = _setproperty(61, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID validateOnParse
-  # indicates whether the parser performs validation
-  def validateOnParse=(arg0)
-    ret = _setproperty(65, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID resolveExternals
-  # indicates whether the parser resolves references to external DTD/Entities/Schema
-  def resolveExternals=(arg0)
-    ret = _setproperty(66, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID preserveWhiteSpace
-  # indicates whether the parser preserves whitespace
-  def preserveWhiteSpace=(arg0)
-    ret = _setproperty(67, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID onreadystatechange
-  # register a readystatechange event handler
-  def onreadystatechange=(arg0)
-    ret = _setproperty(68, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID ondataavailable
-  # register an ondataavailable event handler
-  def ondataavailable=(arg0)
-    ret = _setproperty(69, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID ontransformnode
-  # register an ontransformnode event handler
-  def ontransformnode=(arg0)
-    ret = _setproperty(70, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMElement createElement
-  # create an Element node
-  #   BSTR arg0 --- tagName [IN]
-  def createElement(arg0)
-    ret = _invoke(41, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocumentFragment createDocumentFragment
-  # create a DocumentFragment node
-  def createDocumentFragment()
-    ret = _invoke(42, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMText createTextNode
-  # create a text node
-  #   BSTR arg0 --- data [IN]
-  def createTextNode(arg0)
-    ret = _invoke(43, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMComment createComment
-  # create a comment node
-  #   BSTR arg0 --- data [IN]
-  def createComment(arg0)
-    ret = _invoke(44, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMCDATASection createCDATASection
-  # create a CDATA section node
-  #   BSTR arg0 --- data [IN]
-  def createCDATASection(arg0)
-    ret = _invoke(45, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMProcessingInstruction createProcessingInstruction
-  # create a processing instruction node
-  #   BSTR arg0 --- target [IN]
-  #   BSTR arg1 --- data [IN]
-  def createProcessingInstruction(arg0, arg1)
-    ret = _invoke(46, [arg0, arg1], [VT_BSTR, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMAttribute createAttribute
-  # create an attribute node
-  #   BSTR arg0 --- name [IN]
-  def createAttribute(arg0)
-    ret = _invoke(47, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMEntityReference createEntityReference
-  # create an entity reference node
-  #   BSTR arg0 --- name [IN]
-  def createEntityReference(arg0)
-    ret = _invoke(49, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList getElementsByTagName
-  # build a list of elements by name
-  #   BSTR arg0 --- tagName [IN]
-  def getElementsByTagName(arg0)
-    ret = _invoke(50, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode createNode
-  # create a node of the specified node type and name
-  #   VARIANT arg0 --- type [IN]
-  #   BSTR arg1 --- name [IN]
-  #   BSTR arg2 --- namespaceURI [IN]
-  def createNode(arg0, arg1, arg2)
-    ret = _invoke(54, [arg0, arg1, arg2], [VT_VARIANT, VT_BSTR, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nodeFromID
-  # retrieve node from it's ID
-  #   BSTR arg0 --- idString [IN]
-  def nodeFromID(arg0)
-    ret = _invoke(56, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL load
-  # load document from the specified XML source
-  #   VARIANT arg0 --- xmlSource [IN]
-  def load(arg0)
-    ret = _invoke(58, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID abort
-  # abort an asynchronous download
-  def abort()
-    ret = _invoke(62, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL loadXML
-  # load the document from a string
-  #   BSTR arg0 --- bstrXML [IN]
-  def loadXML(arg0)
-    ret = _invoke(63, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID save
-  # save the document to a specified desination
-  #   VARIANT arg0 --- desination [IN]
-  def save(arg0)
-    ret = _invoke(64, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# 
-module IXMLDOMDocumentType
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR name
-  # name of the document type (root of the tree)
-  def name()
-    ret = _getproperty(131, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap entities
-  # a list of entities in the document
-  def entities()
-    ret = _getproperty(132, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap notations
-  # a list of notations in the document
-  def notations()
-    ret = _getproperty(133, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# 
-module IXMLDOMElement
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR tagName
-  # get the tagName of the element
-  def tagName()
-    ret = _getproperty(97, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT getAttribute
-  # look up the string value of an attribute by name
-  #   BSTR arg0 --- name [IN]
-  def getAttribute(arg0)
-    ret = _invoke(99, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID setAttribute
-  # set the string value of an attribute by name
-  #   BSTR arg0 --- name [IN]
-  #   VARIANT arg1 --- value [IN]
-  def setAttribute(arg0, arg1)
-    ret = _invoke(100, [arg0, arg1], [VT_BSTR, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID removeAttribute
-  # remove an attribute by name
-  #   BSTR arg0 --- name [IN]
-  def removeAttribute(arg0)
-    ret = _invoke(101, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMAttribute getAttributeNode
-  # look up the attribute node by name
-  #   BSTR arg0 --- name [IN]
-  def getAttributeNode(arg0)
-    ret = _invoke(102, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMAttribute setAttributeNode
-  # set the specified attribute on the element
-  #   IXMLDOMAttribute arg0 --- DOMAttribute [IN]
-  def setAttributeNode(arg0)
-    ret = _invoke(103, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMAttribute removeAttributeNode
-  # remove the specified attribute
-  #   IXMLDOMAttribute arg0 --- DOMAttribute [IN]
-  def removeAttributeNode(arg0)
-    ret = _invoke(104, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList getElementsByTagName
-  # build a list of elements by name
-  #   BSTR arg0 --- tagName [IN]
-  def getElementsByTagName(arg0)
-    ret = _invoke(105, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID normalize
-  # collapse all adjacent text nodes in sub-tree
-  def normalize()
-    ret = _invoke(106, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# 
-module IXMLDOMAttribute
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR name
-  # get name of the attribute
-  def name()
-    ret = _getproperty(118, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT value
-  # string value of the attribute
-  def value()
-    ret = _getproperty(120, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID value
-  # string value of the attribute
-  def value=(arg0)
-    ret = _setproperty(120, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# 
-module IXMLDOMDocumentFragment
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# 
-module IXMLDOMText
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR data
-  # value of the node
-  def data()
-    ret = _getproperty(109, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 length
-  # number of characters in value
-  def length()
-    ret = _getproperty(110, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID data
-  # value of the node
-  def data=(arg0)
-    ret = _setproperty(109, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR substringData
-  # retrieve substring of value
-  #   I4 arg0 --- offset [IN]
-  #   I4 arg1 --- count [IN]
-  def substringData(arg0, arg1)
-    ret = _invoke(111, [arg0, arg1], [VT_I4, VT_I4])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID appendData
-  # append string to value
-  #   BSTR arg0 --- data [IN]
-  def appendData(arg0)
-    ret = _invoke(112, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID insertData
-  # insert string into value
-  #   I4 arg0 --- offset [IN]
-  #   BSTR arg1 --- data [IN]
-  def insertData(arg0, arg1)
-    ret = _invoke(113, [arg0, arg1], [VT_I4, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID deleteData
-  # delete string within the value
-  #   I4 arg0 --- offset [IN]
-  #   I4 arg1 --- count [IN]
-  def deleteData(arg0, arg1)
-    ret = _invoke(114, [arg0, arg1], [VT_I4, VT_I4])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID replaceData
-  # replace string within the value
-  #   I4 arg0 --- offset [IN]
-  #   I4 arg1 --- count [IN]
-  #   BSTR arg2 --- data [IN]
-  def replaceData(arg0, arg1, arg2)
-    ret = _invoke(115, [arg0, arg1, arg2], [VT_I4, VT_I4, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMText splitText
-  # split the text node into two text nodes at the position specified
-  #   I4 arg0 --- offset [IN]
-  def splitText(arg0)
-    ret = _invoke(123, [arg0], [VT_I4])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# 
-module IXMLDOMCharacterData
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR data
-  # value of the node
-  def data()
-    ret = _getproperty(109, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 length
-  # number of characters in value
-  def length()
-    ret = _getproperty(110, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID data
-  # value of the node
-  def data=(arg0)
-    ret = _setproperty(109, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR substringData
-  # retrieve substring of value
-  #   I4 arg0 --- offset [IN]
-  #   I4 arg1 --- count [IN]
-  def substringData(arg0, arg1)
-    ret = _invoke(111, [arg0, arg1], [VT_I4, VT_I4])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID appendData
-  # append string to value
-  #   BSTR arg0 --- data [IN]
-  def appendData(arg0)
-    ret = _invoke(112, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID insertData
-  # insert string into value
-  #   I4 arg0 --- offset [IN]
-  #   BSTR arg1 --- data [IN]
-  def insertData(arg0, arg1)
-    ret = _invoke(113, [arg0, arg1], [VT_I4, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID deleteData
-  # delete string within the value
-  #   I4 arg0 --- offset [IN]
-  #   I4 arg1 --- count [IN]
-  def deleteData(arg0, arg1)
-    ret = _invoke(114, [arg0, arg1], [VT_I4, VT_I4])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID replaceData
-  # replace string within the value
-  #   I4 arg0 --- offset [IN]
-  #   I4 arg1 --- count [IN]
-  #   BSTR arg2 --- data [IN]
-  def replaceData(arg0, arg1, arg2)
-    ret = _invoke(115, [arg0, arg1, arg2], [VT_I4, VT_I4, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# 
-module IXMLDOMComment
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR data
-  # value of the node
-  def data()
-    ret = _getproperty(109, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 length
-  # number of characters in value
-  def length()
-    ret = _getproperty(110, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID data
-  # value of the node
-  def data=(arg0)
-    ret = _setproperty(109, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR substringData
-  # retrieve substring of value
-  #   I4 arg0 --- offset [IN]
-  #   I4 arg1 --- count [IN]
-  def substringData(arg0, arg1)
-    ret = _invoke(111, [arg0, arg1], [VT_I4, VT_I4])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID appendData
-  # append string to value
-  #   BSTR arg0 --- data [IN]
-  def appendData(arg0)
-    ret = _invoke(112, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID insertData
-  # insert string into value
-  #   I4 arg0 --- offset [IN]
-  #   BSTR arg1 --- data [IN]
-  def insertData(arg0, arg1)
-    ret = _invoke(113, [arg0, arg1], [VT_I4, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID deleteData
-  # delete string within the value
-  #   I4 arg0 --- offset [IN]
-  #   I4 arg1 --- count [IN]
-  def deleteData(arg0, arg1)
-    ret = _invoke(114, [arg0, arg1], [VT_I4, VT_I4])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID replaceData
-  # replace string within the value
-  #   I4 arg0 --- offset [IN]
-  #   I4 arg1 --- count [IN]
-  #   BSTR arg2 --- data [IN]
-  def replaceData(arg0, arg1, arg2)
-    ret = _invoke(115, [arg0, arg1, arg2], [VT_I4, VT_I4, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# 
-module IXMLDOMCDATASection
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR data
-  # value of the node
-  def data()
-    ret = _getproperty(109, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 length
-  # number of characters in value
-  def length()
-    ret = _getproperty(110, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID data
-  # value of the node
-  def data=(arg0)
-    ret = _setproperty(109, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR substringData
-  # retrieve substring of value
-  #   I4 arg0 --- offset [IN]
-  #   I4 arg1 --- count [IN]
-  def substringData(arg0, arg1)
-    ret = _invoke(111, [arg0, arg1], [VT_I4, VT_I4])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID appendData
-  # append string to value
-  #   BSTR arg0 --- data [IN]
-  def appendData(arg0)
-    ret = _invoke(112, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID insertData
-  # insert string into value
-  #   I4 arg0 --- offset [IN]
-  #   BSTR arg1 --- data [IN]
-  def insertData(arg0, arg1)
-    ret = _invoke(113, [arg0, arg1], [VT_I4, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID deleteData
-  # delete string within the value
-  #   I4 arg0 --- offset [IN]
-  #   I4 arg1 --- count [IN]
-  def deleteData(arg0, arg1)
-    ret = _invoke(114, [arg0, arg1], [VT_I4, VT_I4])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID replaceData
-  # replace string within the value
-  #   I4 arg0 --- offset [IN]
-  #   I4 arg1 --- count [IN]
-  #   BSTR arg2 --- data [IN]
-  def replaceData(arg0, arg1, arg2)
-    ret = _invoke(115, [arg0, arg1, arg2], [VT_I4, VT_I4, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMText splitText
-  # split the text node into two text nodes at the position specified
-  #   I4 arg0 --- offset [IN]
-  def splitText(arg0)
-    ret = _invoke(123, [arg0], [VT_I4])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# 
-module IXMLDOMProcessingInstruction
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR target
-  # the target
-  def target()
-    ret = _getproperty(127, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR data
-  # the data
-  def data()
-    ret = _getproperty(128, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID data
-  # the data
-  def data=(arg0)
-    ret = _setproperty(128, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# 
-module IXMLDOMEntityReference
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# structure for reporting parser errors
-module IXMLDOMParseError
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # I4 errorCode
-  # the error code
-  def errorCode()
-    ret = _getproperty(0, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR url
-  # the URL of the XML document containing the error
-  def url()
-    ret = _getproperty(179, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR reason
-  # the cause of the error
-  def reason()
-    ret = _getproperty(180, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR srcText
-  # the data where the error occurred
-  def srcText()
-    ret = _getproperty(181, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 line
-  # the line number in the XML document where the error occurred
-  def line()
-    ret = _getproperty(182, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 linepos
-  # the character position in the line containing the error
-  def linepos()
-    ret = _getproperty(183, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 filepos
-  # the absolute file position in the XML document containing the error
-  def filepos()
-    ret = _getproperty(184, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# 
-module IXMLDOMNotation
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT publicId
-  # the public ID
-  def publicId()
-    ret = _getproperty(136, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT systemId
-  # the system ID
-  def systemId()
-    ret = _getproperty(137, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# 
-module IXMLDOMEntity
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT publicId
-  # the public ID
-  def publicId()
-    ret = _getproperty(140, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT systemId
-  # the system ID
-  def systemId()
-    ret = _getproperty(141, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR notationName
-  # the name of the notation
-  def notationName()
-    ret = _getproperty(142, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# XTL runtime object
-module IXTLRuntime
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = _getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = _getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = _getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = _getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = _getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = _getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = _getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = _getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = _getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = _getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = _getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = _getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = _getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = _getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = _getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = _getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = _setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = _setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = _setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = _setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = _invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = _invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = _invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = _invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = _invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = _invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = _invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = _invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = _invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = _invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 uniqueID
-  #   IXMLDOMNode arg0 --- pNode [IN]
-  def uniqueID(arg0)
-    ret = _invoke(187, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 depth
-  #   IXMLDOMNode arg0 --- pNode [IN]
-  def depth(arg0)
-    ret = _invoke(188, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 childNumber
-  #   IXMLDOMNode arg0 --- pNode [IN]
-  def childNumber(arg0)
-    ret = _invoke(189, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 ancestorChildNumber
-  #   BSTR arg0 --- bstrNodeName [IN]
-  #   IXMLDOMNode arg1 --- pNode [IN]
-  def ancestorChildNumber(arg0, arg1)
-    ret = _invoke(190, [arg0, arg1], [VT_BSTR, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 absoluteChildNumber
-  #   IXMLDOMNode arg0 --- pNode [IN]
-  def absoluteChildNumber(arg0)
-    ret = _invoke(191, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR formatIndex
-  #   I4 arg0 --- lIndex [IN]
-  #   BSTR arg1 --- bstrFormat [IN]
-  def formatIndex(arg0, arg1)
-    ret = _invoke(192, [arg0, arg1], [VT_I4, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR formatNumber
-  #   R8 arg0 --- dblNumber [IN]
-  #   BSTR arg1 --- bstrFormat [IN]
-  def formatNumber(arg0, arg1)
-    ret = _invoke(193, [arg0, arg1], [VT_R8, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR formatDate
-  #   VARIANT arg0 --- varDate [IN]
-  #   BSTR arg1 --- bstrFormat [IN]
-  #   VARIANT arg2 --- varDestLocale [IN]
-  def formatDate(arg0, arg1, arg2=nil)
-    ret = _invoke(194, [arg0, arg1, arg2], [VT_VARIANT, VT_BSTR, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR formatTime
-  #   VARIANT arg0 --- varTime [IN]
-  #   BSTR arg1 --- bstrFormat [IN]
-  #   VARIANT arg2 --- varDestLocale [IN]
-  def formatTime(arg0, arg1, arg2=nil)
-    ret = _invoke(195, [arg0, arg1, arg2], [VT_VARIANT, VT_BSTR, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# W3C-DOM XML Document
-class Microsoft_XMLDOM_1_0 # DOMDocument
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-  attr_reader :dispatch
-  attr_reader :clsid
-  attr_reader :progid
-
-  def initialize(obj = nil)
-    @clsid = "{2933BF90-7B36-11D2-B20E-00C04F983E60}"
-    @progid = "Microsoft.XMLDOM.1.0"
-    if obj.nil?
-      @dispatch = WIN32OLE.new(@progid)
-    else
-      @dispatch = obj
-    end
-  end
-
-  def method_missing(cmd, *arg)
-    @dispatch.method_missing(cmd, *arg)
-  end
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = @dispatch._getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = @dispatch._getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = @dispatch._getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = @dispatch._getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = @dispatch._getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = @dispatch._getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = @dispatch._getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = @dispatch._getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = @dispatch._getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = @dispatch._getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = @dispatch._getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = @dispatch._getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = @dispatch._getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = @dispatch._getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = @dispatch._getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = @dispatch._getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = @dispatch._getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = @dispatch._getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = @dispatch._getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = @dispatch._getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = @dispatch._getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = @dispatch._getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocumentType doctype
-  # node corresponding to the DOCTYPE
-  def doctype()
-    ret = @dispatch._getproperty(38, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMImplementation implementation
-  # info on this DOM implementation
-  def implementation()
-    ret = @dispatch._getproperty(39, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMElement documentElement
-  # the root of the tree
-  def documentElement()
-    ret = @dispatch._getproperty(40, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 readyState
-  # get the state of the XML document
-  def readyState()
-    ret = @dispatch._getproperty(-525, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMParseError parseError
-  # get the last parser error
-  def parseError()
-    ret = @dispatch._getproperty(59, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR url
-  # get the URL for the loaded XML document
-  def url()
-    ret = @dispatch._getproperty(60, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL async
-  # flag for asynchronous download
-  def async()
-    ret = @dispatch._getproperty(61, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL validateOnParse
-  # indicates whether the parser performs validation
-  def validateOnParse()
-    ret = @dispatch._getproperty(65, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL resolveExternals
-  # indicates whether the parser resolves references to external DTD/Entities/Schema
-  def resolveExternals()
-    ret = @dispatch._getproperty(66, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL preserveWhiteSpace
-  # indicates whether the parser preserves whitespace
-  def preserveWhiteSpace()
-    ret = @dispatch._getproperty(67, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = @dispatch._setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = @dispatch._setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = @dispatch._setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = @dispatch._setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID async
-  # flag for asynchronous download
-  def async=(arg0)
-    ret = @dispatch._setproperty(61, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID validateOnParse
-  # indicates whether the parser performs validation
-  def validateOnParse=(arg0)
-    ret = @dispatch._setproperty(65, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID resolveExternals
-  # indicates whether the parser resolves references to external DTD/Entities/Schema
-  def resolveExternals=(arg0)
-    ret = @dispatch._setproperty(66, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID preserveWhiteSpace
-  # indicates whether the parser preserves whitespace
-  def preserveWhiteSpace=(arg0)
-    ret = @dispatch._setproperty(67, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID onreadystatechange
-  # register a readystatechange event handler
-  def onreadystatechange=(arg0)
-    ret = @dispatch._setproperty(68, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID ondataavailable
-  # register an ondataavailable event handler
-  def ondataavailable=(arg0)
-    ret = @dispatch._setproperty(69, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID ontransformnode
-  # register an ontransformnode event handler
-  def ontransformnode=(arg0)
-    ret = @dispatch._setproperty(70, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = @dispatch._invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = @dispatch._invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = @dispatch._invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = @dispatch._invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = @dispatch._invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = @dispatch._invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = @dispatch._invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = @dispatch._invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = @dispatch._invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = @dispatch._invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMElement createElement
-  # create an Element node
-  #   BSTR arg0 --- tagName [IN]
-  def createElement(arg0)
-    ret = @dispatch._invoke(41, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocumentFragment createDocumentFragment
-  # create a DocumentFragment node
-  def createDocumentFragment()
-    ret = @dispatch._invoke(42, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMText createTextNode
-  # create a text node
-  #   BSTR arg0 --- data [IN]
-  def createTextNode(arg0)
-    ret = @dispatch._invoke(43, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMComment createComment
-  # create a comment node
-  #   BSTR arg0 --- data [IN]
-  def createComment(arg0)
-    ret = @dispatch._invoke(44, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMCDATASection createCDATASection
-  # create a CDATA section node
-  #   BSTR arg0 --- data [IN]
-  def createCDATASection(arg0)
-    ret = @dispatch._invoke(45, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMProcessingInstruction createProcessingInstruction
-  # create a processing instruction node
-  #   BSTR arg0 --- target [IN]
-  #   BSTR arg1 --- data [IN]
-  def createProcessingInstruction(arg0, arg1)
-    ret = @dispatch._invoke(46, [arg0, arg1], [VT_BSTR, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMAttribute createAttribute
-  # create an attribute node
-  #   BSTR arg0 --- name [IN]
-  def createAttribute(arg0)
-    ret = @dispatch._invoke(47, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMEntityReference createEntityReference
-  # create an entity reference node
-  #   BSTR arg0 --- name [IN]
-  def createEntityReference(arg0)
-    ret = @dispatch._invoke(49, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList getElementsByTagName
-  # build a list of elements by name
-  #   BSTR arg0 --- tagName [IN]
-  def getElementsByTagName(arg0)
-    ret = @dispatch._invoke(50, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode createNode
-  # create a node of the specified node type and name
-  #   VARIANT arg0 --- type [IN]
-  #   BSTR arg1 --- name [IN]
-  #   BSTR arg2 --- namespaceURI [IN]
-  def createNode(arg0, arg1, arg2)
-    ret = @dispatch._invoke(54, [arg0, arg1, arg2], [VT_VARIANT, VT_BSTR, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nodeFromID
-  # retrieve node from it's ID
-  #   BSTR arg0 --- idString [IN]
-  def nodeFromID(arg0)
-    ret = @dispatch._invoke(56, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL load
-  # load document from the specified XML source
-  #   VARIANT arg0 --- xmlSource [IN]
-  def load(arg0)
-    ret = @dispatch._invoke(58, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID abort
-  # abort an asynchronous download
-  def abort()
-    ret = @dispatch._invoke(62, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL loadXML
-  # load the document from a string
-  #   BSTR arg0 --- bstrXML [IN]
-  def loadXML(arg0)
-    ret = @dispatch._invoke(63, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID save
-  # save the document to a specified desination
-  #   VARIANT arg0 --- desination [IN]
-  def save(arg0)
-    ret = @dispatch._invoke(64, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # HRESULT ondataavailable EVENT in XMLDOMDocumentEvents
-  def ondataavailable()
-    ret = @dispatch._invoke(198, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # HRESULT onreadystatechange EVENT in XMLDOMDocumentEvents
-  def onreadystatechange()
-    ret = @dispatch._invoke(-609, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# W3C-DOM XML Document (Apartment)
-class Microsoft_FreeThreadedXMLDOM_1_0 # DOMFreeThreadedDocument
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-  attr_reader :dispatch
-  attr_reader :clsid
-  attr_reader :progid
-
-  def initialize(obj = nil)
-    @clsid = "{2933BF91-7B36-11D2-B20E-00C04F983E60}"
-    @progid = "Microsoft.FreeThreadedXMLDOM.1.0"
-    if obj.nil?
-      @dispatch = WIN32OLE.new(@progid)
-    else
-      @dispatch = obj
-    end
-  end
-
-  def method_missing(cmd, *arg)
-    @dispatch.method_missing(cmd, *arg)
-  end
-
-  # BSTR nodeName
-  # name of the node
-  def nodeName()
-    ret = @dispatch._getproperty(2, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeValue
-  # value stored in the node
-  def nodeValue()
-    ret = @dispatch._getproperty(3, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DOMNodeType nodeType
-  # the node's type
-  def nodeType()
-    ret = @dispatch._getproperty(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode parentNode
-  # parent of the node
-  def parentNode()
-    ret = @dispatch._getproperty(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList childNodes
-  # the collection of the node's children
-  def childNodes()
-    ret = @dispatch._getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode firstChild
-  # first child of the node
-  def firstChild()
-    ret = @dispatch._getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode lastChild
-  # first child of the node
-  def lastChild()
-    ret = @dispatch._getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode previousSibling
-  # left sibling of the node
-  def previousSibling()
-    ret = @dispatch._getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nextSibling
-  # right sibling of the node
-  def nextSibling()
-    ret = @dispatch._getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNamedNodeMap attributes
-  # the collection of the node's attributes
-  def attributes()
-    ret = @dispatch._getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocument ownerDocument
-  # document that contains the node
-  def ownerDocument()
-    ret = @dispatch._getproperty(18, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR nodeTypeString
-  # the type of node in string form
-  def nodeTypeString()
-    ret = @dispatch._getproperty(21, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR text
-  # text content of the node and subtree
-  def text()
-    ret = @dispatch._getproperty(24, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL specified
-  # indicates whether node is a default value
-  def specified()
-    ret = @dispatch._getproperty(22, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode definition
-  # pointer to the definition of the node in the DTD or schema
-  def definition()
-    ret = @dispatch._getproperty(23, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue()
-    ret = @dispatch._getproperty(25, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT dataType
-  # the data type of the node
-  def dataType()
-    ret = @dispatch._getproperty(26, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR xml
-  # return the XML source for the node and each of its descendants
-  def xml()
-    ret = @dispatch._getproperty(27, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL parsed
-  # has sub-tree been completely parsed
-  def parsed()
-    ret = @dispatch._getproperty(31, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR namespaceURI
-  # the URI for the namespace applying to the node
-  def namespaceURI()
-    ret = @dispatch._getproperty(32, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR prefix
-  # the prefix for the namespace applying to the node
-  def prefix()
-    ret = @dispatch._getproperty(33, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR baseName
-  # the base name of the node (nodename with the prefix stripped off)
-  def baseName()
-    ret = @dispatch._getproperty(34, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocumentType doctype
-  # node corresponding to the DOCTYPE
-  def doctype()
-    ret = @dispatch._getproperty(38, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMImplementation implementation
-  # info on this DOM implementation
-  def implementation()
-    ret = @dispatch._getproperty(39, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMElement documentElement
-  # the root of the tree
-  def documentElement()
-    ret = @dispatch._getproperty(40, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 readyState
-  # get the state of the XML document
-  def readyState()
-    ret = @dispatch._getproperty(-525, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMParseError parseError
-  # get the last parser error
-  def parseError()
-    ret = @dispatch._getproperty(59, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR url
-  # get the URL for the loaded XML document
-  def url()
-    ret = @dispatch._getproperty(60, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL async
-  # flag for asynchronous download
-  def async()
-    ret = @dispatch._getproperty(61, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL validateOnParse
-  # indicates whether the parser performs validation
-  def validateOnParse()
-    ret = @dispatch._getproperty(65, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL resolveExternals
-  # indicates whether the parser resolves references to external DTD/Entities/Schema
-  def resolveExternals()
-    ret = @dispatch._getproperty(66, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL preserveWhiteSpace
-  # indicates whether the parser preserves whitespace
-  def preserveWhiteSpace()
-    ret = @dispatch._getproperty(67, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeValue
-  # value stored in the node
-  def nodeValue=(arg0)
-    ret = @dispatch._setproperty(3, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID text
-  # text content of the node and subtree
-  def text=(arg0)
-    ret = @dispatch._setproperty(24, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID nodeTypedValue
-  # get the strongly typed value of the node
-  def nodeTypedValue=(arg0)
-    ret = @dispatch._setproperty(25, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID dataType
-  # the data type of the node
-  def dataType=(arg0)
-    ret = @dispatch._setproperty(26, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID async
-  # flag for asynchronous download
-  def async=(arg0)
-    ret = @dispatch._setproperty(61, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID validateOnParse
-  # indicates whether the parser performs validation
-  def validateOnParse=(arg0)
-    ret = @dispatch._setproperty(65, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID resolveExternals
-  # indicates whether the parser resolves references to external DTD/Entities/Schema
-  def resolveExternals=(arg0)
-    ret = @dispatch._setproperty(66, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID preserveWhiteSpace
-  # indicates whether the parser preserves whitespace
-  def preserveWhiteSpace=(arg0)
-    ret = @dispatch._setproperty(67, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID onreadystatechange
-  # register a readystatechange event handler
-  def onreadystatechange=(arg0)
-    ret = @dispatch._setproperty(68, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID ondataavailable
-  # register an ondataavailable event handler
-  def ondataavailable=(arg0)
-    ret = @dispatch._setproperty(69, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID ontransformnode
-  # register an ontransformnode event handler
-  def ontransformnode=(arg0)
-    ret = @dispatch._setproperty(70, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode insertBefore
-  # insert a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   VARIANT arg1 --- refChild [IN]
-  def insertBefore(arg0, arg1)
-    ret = @dispatch._invoke(13, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode replaceChild
-  # replace a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  #   IXMLDOMNode arg1 --- oldChild [IN]
-  def replaceChild(arg0, arg1)
-    ret = @dispatch._invoke(14, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode removeChild
-  # remove a child node
-  #   IXMLDOMNode arg0 --- childNode [IN]
-  def removeChild(arg0)
-    ret = @dispatch._invoke(15, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode appendChild
-  # append a child node
-  #   IXMLDOMNode arg0 --- newChild [IN]
-  def appendChild(arg0)
-    ret = @dispatch._invoke(16, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL hasChildNodes
-  def hasChildNodes()
-    ret = @dispatch._invoke(17, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode cloneNode
-  #   BOOL arg0 --- deep [IN]
-  def cloneNode(arg0)
-    ret = @dispatch._invoke(19, [arg0], [VT_BOOL])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR transformNode
-  # apply the stylesheet to the subtree
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  def transformNode(arg0)
-    ret = @dispatch._invoke(28, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList selectNodes
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectNodes(arg0)
-    ret = @dispatch._invoke(29, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode selectSingleNode
-  # execute query on the subtree
-  #   BSTR arg0 --- queryString [IN]
-  def selectSingleNode(arg0)
-    ret = @dispatch._invoke(30, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID transformNodeToObject
-  # apply the stylesheet to the subtree, returning the result through a document or a stream
-  #   IXMLDOMNode arg0 --- stylesheet [IN]
-  #   VARIANT arg1 --- outputObject [IN]
-  def transformNodeToObject(arg0, arg1)
-    ret = @dispatch._invoke(35, [arg0, arg1], [VT_BYREF|VT_DISPATCH, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMElement createElement
-  # create an Element node
-  #   BSTR arg0 --- tagName [IN]
-  def createElement(arg0)
-    ret = @dispatch._invoke(41, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMDocumentFragment createDocumentFragment
-  # create a DocumentFragment node
-  def createDocumentFragment()
-    ret = @dispatch._invoke(42, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMText createTextNode
-  # create a text node
-  #   BSTR arg0 --- data [IN]
-  def createTextNode(arg0)
-    ret = @dispatch._invoke(43, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMComment createComment
-  # create a comment node
-  #   BSTR arg0 --- data [IN]
-  def createComment(arg0)
-    ret = @dispatch._invoke(44, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMCDATASection createCDATASection
-  # create a CDATA section node
-  #   BSTR arg0 --- data [IN]
-  def createCDATASection(arg0)
-    ret = @dispatch._invoke(45, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMProcessingInstruction createProcessingInstruction
-  # create a processing instruction node
-  #   BSTR arg0 --- target [IN]
-  #   BSTR arg1 --- data [IN]
-  def createProcessingInstruction(arg0, arg1)
-    ret = @dispatch._invoke(46, [arg0, arg1], [VT_BSTR, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMAttribute createAttribute
-  # create an attribute node
-  #   BSTR arg0 --- name [IN]
-  def createAttribute(arg0)
-    ret = @dispatch._invoke(47, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMEntityReference createEntityReference
-  # create an entity reference node
-  #   BSTR arg0 --- name [IN]
-  def createEntityReference(arg0)
-    ret = @dispatch._invoke(49, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNodeList getElementsByTagName
-  # build a list of elements by name
-  #   BSTR arg0 --- tagName [IN]
-  def getElementsByTagName(arg0)
-    ret = @dispatch._invoke(50, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode createNode
-  # create a node of the specified node type and name
-  #   VARIANT arg0 --- type [IN]
-  #   BSTR arg1 --- name [IN]
-  #   BSTR arg2 --- namespaceURI [IN]
-  def createNode(arg0, arg1, arg2)
-    ret = @dispatch._invoke(54, [arg0, arg1, arg2], [VT_VARIANT, VT_BSTR, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # IXMLDOMNode nodeFromID
-  # retrieve node from it's ID
-  #   BSTR arg0 --- idString [IN]
-  def nodeFromID(arg0)
-    ret = @dispatch._invoke(56, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL load
-  # load document from the specified XML source
-  #   VARIANT arg0 --- xmlSource [IN]
-  def load(arg0)
-    ret = @dispatch._invoke(58, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID abort
-  # abort an asynchronous download
-  def abort()
-    ret = @dispatch._invoke(62, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BOOL loadXML
-  # load the document from a string
-  #   BSTR arg0 --- bstrXML [IN]
-  def loadXML(arg0)
-    ret = @dispatch._invoke(63, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID save
-  # save the document to a specified desination
-  #   VARIANT arg0 --- desination [IN]
-  def save(arg0)
-    ret = @dispatch._invoke(64, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # HRESULT ondataavailable EVENT in XMLDOMDocumentEvents
-  def ondataavailable()
-    ret = @dispatch._invoke(198, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # HRESULT onreadystatechange EVENT in XMLDOMDocumentEvents
-  def onreadystatechange()
-    ret = @dispatch._invoke(-609, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# IXMLHttpRequest Interface
-module IXMLHttpRequest
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-
-  # I4 status
-  # Get HTTP status code
-  def status()
-    ret = _getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR statusText
-  # Get HTTP status text
-  def statusText()
-    ret = _getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DISPATCH responseXML
-  # Get response body
-  def responseXML()
-    ret = _getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR responseText
-  # Get response body
-  def responseText()
-    ret = _getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT responseBody
-  # Get response body
-  def responseBody()
-    ret = _getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT responseStream
-  # Get response body
-  def responseStream()
-    ret = _getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 readyState
-  # Get ready state
-  def readyState()
-    ret = _getproperty(13, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID onreadystatechange
-  # Register a complete event handler
-  def onreadystatechange=(arg0)
-    ret = _setproperty(14, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID open
-  # Open HTTP connection
-  #   BSTR arg0 --- bstrMethod [IN]
-  #   BSTR arg1 --- bstrUrl [IN]
-  #   VARIANT arg2 --- varAsync [IN]
-  #   VARIANT arg3 --- bstrUser [IN]
-  #   VARIANT arg4 --- bstrPassword [IN]
-  def open(arg0, arg1, arg2=nil, arg3=nil, arg4=nil)
-    ret = _invoke(1, [arg0, arg1, arg2, arg3, arg4], [VT_BSTR, VT_BSTR, VT_VARIANT, VT_VARIANT, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID setRequestHeader
-  # Add HTTP request header
-  #   BSTR arg0 --- bstrHeader [IN]
-  #   BSTR arg1 --- bstrValue [IN]
-  def setRequestHeader(arg0, arg1)
-    ret = _invoke(2, [arg0, arg1], [VT_BSTR, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR getResponseHeader
-  # Get HTTP response header
-  #   BSTR arg0 --- bstrHeader [IN]
-  def getResponseHeader(arg0)
-    ret = _invoke(3, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR getAllResponseHeaders
-  # Get all HTTP response headers
-  def getAllResponseHeaders()
-    ret = _invoke(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID send
-  # Send HTTP request
-  #   VARIANT arg0 --- varBody [IN]
-  def send(arg0=nil)
-    ret = _invoke(5, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID abort
-  # Abort HTTP request
-  def abort()
-    ret = _invoke(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# XML HTTP Request class.
-class Microsoft_XMLHTTP_1 # XMLHTTPRequest
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-  attr_reader :dispatch
-  attr_reader :clsid
-  attr_reader :progid
-
-  def initialize(obj = nil)
-    @clsid = "{ED8C108E-4349-11D2-91A4-00C04F7969E8}"
-    @progid = "Microsoft.XMLHTTP.1"
-    if obj.nil?
-      @dispatch = WIN32OLE.new(@progid)
-    else
-      @dispatch = obj
-    end
-  end
-
-  def method_missing(cmd, *arg)
-    @dispatch.method_missing(cmd, *arg)
-  end
-
-  # I4 status
-  # Get HTTP status code
-  def status()
-    ret = @dispatch._getproperty(7, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR statusText
-  # Get HTTP status text
-  def statusText()
-    ret = @dispatch._getproperty(8, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # DISPATCH responseXML
-  # Get response body
-  def responseXML()
-    ret = @dispatch._getproperty(9, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR responseText
-  # Get response body
-  def responseText()
-    ret = @dispatch._getproperty(10, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT responseBody
-  # Get response body
-  def responseBody()
-    ret = @dispatch._getproperty(11, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VARIANT responseStream
-  # Get response body
-  def responseStream()
-    ret = @dispatch._getproperty(12, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 readyState
-  # Get ready state
-  def readyState()
-    ret = @dispatch._getproperty(13, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID onreadystatechange
-  # Register a complete event handler
-  def onreadystatechange=(arg0)
-    ret = @dispatch._setproperty(14, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID open
-  # Open HTTP connection
-  #   BSTR arg0 --- bstrMethod [IN]
-  #   BSTR arg1 --- bstrUrl [IN]
-  #   VARIANT arg2 --- varAsync [IN]
-  #   VARIANT arg3 --- bstrUser [IN]
-  #   VARIANT arg4 --- bstrPassword [IN]
-  def open(arg0, arg1, arg2=nil, arg3=nil, arg4=nil)
-    ret = @dispatch._invoke(1, [arg0, arg1, arg2, arg3, arg4], [VT_BSTR, VT_BSTR, VT_VARIANT, VT_VARIANT, VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID setRequestHeader
-  # Add HTTP request header
-  #   BSTR arg0 --- bstrHeader [IN]
-  #   BSTR arg1 --- bstrValue [IN]
-  def setRequestHeader(arg0, arg1)
-    ret = @dispatch._invoke(2, [arg0, arg1], [VT_BSTR, VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR getResponseHeader
-  # Get HTTP response header
-  #   BSTR arg0 --- bstrHeader [IN]
-  def getResponseHeader(arg0)
-    ret = @dispatch._invoke(3, [arg0], [VT_BSTR])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # BSTR getAllResponseHeaders
-  # Get all HTTP response headers
-  def getAllResponseHeaders()
-    ret = @dispatch._invoke(4, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID send
-  # Send HTTP request
-  #   VARIANT arg0 --- varBody [IN]
-  def send(arg0=nil)
-    ret = @dispatch._invoke(5, [arg0], [VT_VARIANT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID abort
-  # Abort HTTP request
-  def abort()
-    ret = @dispatch._invoke(6, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# XML Data Source Object
-class Microsoft_XMLDSO_1_0 # XMLDSOControl
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-  attr_reader :dispatch
-  attr_reader :clsid
-  attr_reader :progid
-
-  def initialize(obj = nil)
-    @clsid = "{550DDA30-0541-11D2-9CA9-0060B0EC3D39}"
-    @progid = "Microsoft.XMLDSO.1.0"
-    if obj.nil?
-      @dispatch = WIN32OLE.new(@progid)
-    else
-      @dispatch = obj
-    end
-  end
-
-  def method_missing(cmd, *arg)
-    @dispatch.method_missing(cmd, *arg)
-  end
-
-  # IXMLDOMDocument XMLDocument
-  def XMLDocument()
-    ret = @dispatch._getproperty(65537, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 JavaDSOCompatible
-  def JavaDSOCompatible()
-    ret = @dispatch._getproperty(65538, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # I4 readyState
-  def readyState()
-    ret = @dispatch._getproperty(-525, [], [])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID XMLDocument
-  def XMLDocument=(arg0)
-    ret = @dispatch._setproperty(65537, [arg0], [VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # VOID JavaDSOCompatible
-  def JavaDSOCompatible=(arg0)
-    ret = @dispatch._setproperty(65538, [arg0], [VT_I4])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
-
-# Constants that define types for IXMLElement.
-module OLEtagXMLEMEM_TYPE
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-  XMLELEMTYPE_ELEMENT = 0
-  XMLELEMTYPE_TEXT = 1
-  XMLELEMTYPE_COMMENT = 2
-  XMLELEMTYPE_DOCUMENT = 3
-  XMLELEMTYPE_DTD = 4
-  XMLELEMTYPE_PI = 5
-  XMLELEMTYPE_OTHER = 6
-end
-
-# XMLDocument extends IXML Document.  It is obsolete.  You should use DOMDocument.  This object should not be confused with the XMLDocument property on the XML data island.
-class Msxml # XMLDocument
-  include WIN32OLE::VARIANT
-  attr_reader :lastargs
-  attr_reader :dispatch
-  attr_reader :clsid
-  attr_reader :progid
-
-  def initialize(obj = nil)
-    @clsid = "{CFC399AF-D876-11D0-9C10-00C04FC99C8E}"
-    @progid = "Msxml"
-    if obj.nil?
-      @dispatch = WIN32OLE.new(@progid)
-    else
-      @dispatch = obj
-    end
-  end
-
-  def method_missing(cmd, *arg)
-    @dispatch.method_missing(cmd, *arg)
-  end
-
-  # HRESULT url
-  # set URL to load an XML document from the URL.
-  #   BSTR arg0 --- p [IN]
-  def url=(arg0)
-    ret = @dispatch._setproperty(65641, [arg0], [VT_BSTR, VT_HRESULT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # HRESULT charset
-  # get encoding.
-  #   BSTR arg0 --- p [IN]
-  def charset=(arg0)
-    ret = @dispatch._setproperty(65645, [arg0], [VT_BSTR, VT_HRESULT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # HRESULT async
-  # get asynchronous loading flag.
-  #   BOOL arg0 --- pf [IN]
-  def async=(arg0)
-    ret = @dispatch._setproperty(65649, [arg0], [VT_BOOL, VT_HRESULT])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-
-  # HRESULT root
-  # get root IXMLElement of the XML document.
-  #   IXMLElement2,IXMLElement2 arg0 --- p [OUT]
-  def root
-    OLEProperty.new(@dispatch, 65637, [VT_BYREF|VT_BYREF|VT_DISPATCH], [VT_BYREF|VT_BYREF|VT_DISPATCH, VT_HRESULT])
-  end
-
-  # HRESULT url
-  # set URL to load an XML document from the URL.
-  #   BSTR arg0 --- p [OUT]
-  def url
-    OLEProperty.new(@dispatch, 65641, [VT_BYREF|VT_BSTR], [VT_BYREF|VT_BSTR, VT_HRESULT])
-  end
-
-  # HRESULT readyState
-  # get ready state.
-  #   I4 arg0 --- pl [OUT]
-  def readyState
-    OLEProperty.new(@dispatch, 65643, [VT_BYREF|VT_I4], [VT_BYREF|VT_I4, VT_HRESULT])
-  end
-
-  # HRESULT charset
-  # get encoding.
-  #   BSTR arg0 --- p [OUT]
-  def charset
-    OLEProperty.new(@dispatch, 65645, [VT_BYREF|VT_BSTR], [VT_BYREF|VT_BSTR, VT_HRESULT])
-  end
-
-  # HRESULT version
-  # get XML version number.
-  #   BSTR arg0 --- p [OUT]
-  def version
-    OLEProperty.new(@dispatch, 65646, [VT_BYREF|VT_BSTR], [VT_BYREF|VT_BSTR, VT_HRESULT])
-  end
-
-  # HRESULT doctype
-  # get document type.
-  #   BSTR arg0 --- p [OUT]
-  def doctype
-    OLEProperty.new(@dispatch, 65647, [VT_BYREF|VT_BSTR], [VT_BYREF|VT_BSTR, VT_HRESULT])
-  end
-
-  # HRESULT async
-  # get asynchronous loading flag.
-  #   BOOL arg0 --- pf [OUT]
-  def async
-    OLEProperty.new(@dispatch, 65649, [VT_BYREF|VT_BOOL], [VT_BYREF|VT_BOOL, VT_HRESULT])
-  end
-
-  # HRESULT createElement
-  # create different types of IXMLElements.
-  #   VARIANT arg0 --- vType [IN]
-  #   VARIANT arg1 --- var1 [IN]
-  #   IXMLElement2,IXMLElement2 arg2 --- ppElem [OUT]
-  def createElement(arg0, arg1=nil, arg2=nil)
-    ret = @dispatch._invoke(65644, [arg0, arg1, arg2], [VT_VARIANT, VT_VARIANT, VT_BYREF|VT_BYREF|VT_DISPATCH])
-    @lastargs = WIN32OLE::ARGV
-    ret
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/csv/test_csv.rb b/ruby/doc/ruby/ruby-1.8.7/test/csv/test_csv.rb
deleted file mode 100644 (file)
index 1db5409..0000000
+++ /dev/null
@@ -1,1753 +0,0 @@
-require 'test/unit'
-require 'tempfile'
-require 'fileutils'
-
-require 'csv'
-
-class CSV
-  class StreamBuf
-    # Let buffer work hard.
-    remove_const("BufSize")
-    BufSize = 2
-  end
-end
-
-
-module CSVTestSupport
-  def d(data)
-    data
-  end
-end
-
-
-class TestCSV < Test::Unit::TestCase
-  file = Tempfile.new("crlf")
-  file << "\n"
-  file.open
-  file.binmode
-  RSEP = file.read
-  file.close
-
-  include CSVTestSupport
-
-  class << self
-    include CSVTestSupport
-  end
-
-  @@simpleCSVData = {
-    [nil] => '',
-    [''] => '""',
-    [nil, nil] => ',',
-    [nil, nil, nil] => ',,',
-    ['foo'] => 'foo',
-    [','] => '","',
-    [',', ','] => '",",","',
-    [';'] => ';',
-    [';', ';'] => ';,;',
-    ["\"\r", "\"\r"] => "\"\"\"\r\",\"\"\"\r\"",
-    ["\"\n", "\"\n"] => "\"\"\"\n\",\"\"\"\n\"",
-    ["\t"] => "\t",
-    ["\t", "\t"] => "\t,\t",
-    ['foo', 'bar'] => 'foo,bar',
-    ['foo', '"bar"', 'baz'] => 'foo,"""bar""",baz',
-    ['foo', 'foo,bar', 'baz'] => 'foo,"foo,bar",baz',
-    ['foo', '""', 'baz'] => 'foo,"""""",baz',
-    ['foo', '', 'baz'] => 'foo,"",baz',
-    ['foo', nil, 'baz'] => 'foo,,baz',
-    [nil, 'foo', 'bar'] => ',foo,bar',
-    ['foo', 'bar', nil] => 'foo,bar,',
-    ['foo', "\r", 'baz'] => "foo,\"\r\",baz",
-    ['foo', "\n", 'baz'] => "foo,\"\n\",baz",
-    ['foo', "\r\n\r", 'baz'] => "foo,\"\r\n\r\",baz",
-    ['foo', "\r\n", 'baz'] => "foo,\"\r\n\",baz",
-    ['foo', "\r.\n", 'baz'] => "foo,\"\r.\n\",baz",
-    ['foo', "\r\n\n", 'baz'] => "foo,\"\r\n\n\",baz",
-    ['foo', '"', 'baz'] => 'foo,"""",baz',
-  }
-
-  @@fullCSVData = {
-    [d(nil)] => '',
-    [d('')] => '""',
-    [d(nil), d(nil)] => ',',
-    [d(nil), d(nil), d(nil)] => ',,',
-    [d('foo')] => 'foo',
-    [d('foo'), d('bar')] => 'foo,bar',
-    [d('foo'), d('"bar"'), d('baz')] => 'foo,"""bar""",baz',
-    [d('foo'), d('foo,bar'), d('baz')] => 'foo,"foo,bar",baz',
-    [d('foo'), d('""'), d('baz')] => 'foo,"""""",baz',
-    [d('foo'), d(''), d('baz')] => 'foo,"",baz',
-    [d('foo'), d(nil), d('baz')] => 'foo,,baz',
-    [d('foo'), d("\r"), d('baz')] => "foo,\"\r\",baz",
-    [d('foo'), d("\n"), d('baz')] => "foo,\"\n\",baz",
-    [d('foo'), d("\r\n"), d('baz')] => "foo,\"\r\n\",baz",
-    [d('foo'), d("\r.\n"), d('baz')] => "foo,\"\r.\n\",baz",
-    [d('foo'), d("\r\n\n"), d('baz')] => "foo,\"\r\n\n\",baz",
-    [d('foo'), d('"'), d('baz')] => 'foo,"""",baz',
-  }
-
-  @@fullCSVDataArray = @@fullCSVData.collect { |key, value| key }
-
-  def ssv2csv(ssvStr, row_sep = nil)
-    sepConv(ssvStr, ?;, ?,, row_sep)
-  end
-
-  def csv2ssv(csvStr, row_sep = nil)
-    sepConv(csvStr, ?,, ?;, row_sep)
-  end
-
-  def tsv2csv(tsvStr, row_sep = nil)
-    sepConv(tsvStr, ?\t, ?,, row_sep)
-  end
-
-  def csv2tsv(csvStr, row_sep = nil)
-    sepConv(csvStr, ?,, ?\t, row_sep)
-  end
-
-  def sepConv(srcStr, srcSep, destSep, row_sep = nil)
-    rows = []
-    cols, idx = CSV.parse_row(srcStr, 0, rows, srcSep, row_sep)
-    destStr = ''
-    cols = CSV.generate_row(rows, rows.size, destStr, destSep, row_sep)
-    destStr
-  end
-
-public
-
-  def setup
-    @tmpdir = File.join(Dir.tmpdir, "ruby_test_csv_tmp_#{$$}")
-    Dir.mkdir(@tmpdir)
-    @infile = File.join(@tmpdir, 'in.csv')
-    @infiletsv = File.join(@tmpdir, 'in.tsv')
-    @emptyfile = File.join(@tmpdir, 'empty.csv')
-    @outfile = File.join(@tmpdir, 'out.csv')
-    @bomfile = File.join(@tmpdir, "bom.csv")
-    @macfile = File.join(@tmpdir, "mac.csv")
-
-    CSV.open(@infile, "wb") do |writer|
-      @@fullCSVDataArray.each do |row|
-       writer.add_row(row)
-      end
-    end
-
-    CSV.open(@infiletsv, "wb", ?\t) do |writer|
-      @@fullCSVDataArray.each do |row|
-       writer.add_row(row)
-      end
-    end
-
-    CSV.generate(@emptyfile) do |writer|
-      # Create empty file.
-    end
-
-    File.open(@bomfile, "wb") do |f|
-      f.write("\357\273\277\"foo\"\r\n\"bar\"\r\n")
-    end
-
-    File.open(@macfile, "wb") do |f|
-      f.write("\"Avenches\",\"aus Umgebung\"\r\"Bad Hersfeld\",\"Ausgrabung\"")
-    end
-  end
-
-  def teardown
-    FileUtils.rm_rf(@tmpdir)
-  end
-
-  #### CSV::Reader unit test
-  
-  def test_Reader_each
-    file = File.open(@infile, "rb")
-    begin
-      reader = CSV::Reader.create(file)
-      expectedArray = @@fullCSVDataArray.dup
-      first = true
-      ret = reader.each { |row|
-       if first
-         assert_instance_of(Array, row)
-         first = false
-       end
-       expected = expectedArray.shift
-       assert_equal(expected, row)
-      }
-      assert_nil(ret, "Return is nil")
-      assert(expectedArray.empty?)
-    ensure
-      file.close
-    end
-
-    # Illegal format.
-    reader = CSV::Reader.create("a,b\r\na,b,\"c\"\ra")
-    assert_raises(CSV::IllegalFormatError) do
-      reader.each do |row|
-      end
-    end
-
-    reader = CSV::Reader.create("a,b\r\n\"")
-    assert_raises(CSV::IllegalFormatError) do
-      reader.each do |row|
-      end
-    end
-  end
-
-  def test_Reader_shift
-    file = File.open(@infile, "rb")
-    begin
-      reader = CSV::Reader.create(file)
-      first = true
-      checked = 0
-      @@fullCSVDataArray.each do |expected|
-       actual = reader.shift
-       if first
-         assert_instance_of(Array, actual)
-         first = false
-       end
-       assert_equal(expected, actual)
-       checked += 1
-      end
-      assert(checked == @@fullCSVDataArray.size)
-    ensure
-      file.close
-    end
-
-    # Illegal format.
-    reader = CSV::Reader.create("a,b\r\na,b,\"c\"\ra")
-    assert_raises(CSV::IllegalFormatError) do
-      reader.shift
-      reader.shift
-    end
-
-    reader = CSV::Reader.create("a,b\r\na,b,\"c\"\ra")
-    assert_raises(CSV::IllegalFormatError) do
-      reader.shift
-      reader.shift
-    end
-  end
-
-  def test_Reader_getRow
-    if CSV::Reader.respond_to?(:allocate)
-      obj = CSV::Reader.allocate
-      assert_raises(NotImplementedError) do
-       row = []
-       obj.shift
-      end
-    end
-  end
-
-  def test_IOReader_close_on_terminate
-    f = File.open(@infile, "r")
-    reader = CSV::IOReader.create(f)
-    reader.close
-    assert(!f.closed?)
-    f.close
-
-    f = File.open(@infile, "r")
-    writer = CSV::IOReader.create(f)
-    writer.close_on_terminate
-    writer.close
-    assert(f.closed?)
-  end
-
-  def test_Reader_close
-    f = File.open(@infile, "r")
-    reader = CSV::IOReader.create(f)
-    reader.close_on_terminate
-    reader.close
-    assert(f.closed?)
-  end
-
-  def test_Reader_s_new
-    assert_raises(RuntimeError) do
-      CSV::Reader.new(nil)
-    end
-  end
-
-  def test_Reader_s_create
-    reader = CSV::Reader.create("abc")
-    assert_instance_of(CSV::StringReader, reader, "With a String")
-
-    file = File.open(@infile, "rb")
-    reader = CSV::Reader.create(file)
-    assert_instance_of(CSV::IOReader, reader, 'With an IO')
-
-    obj = Object.new
-    def obj.sysread(size)
-      "abc"
-    end
-    def obj.read(size)
-      "abc"
-    end
-    reader = CSV::Reader.create(obj)
-    assert_instance_of(CSV::IOReader, reader, "With not an IO or String")
-
-    # No need to test Tempfile because it's a pseudo IO.  I test this here
-    # fors other tests.
-    reader = CSV::Reader.create(Tempfile.new("in.csv"))
-    assert_instance_of(CSV::IOReader, reader, "With an pseudo IO.")
-    file.close
-  end
-
-  def test_IOReader_s_create_binmode
-    file = File.open(@outfile, "wb")
-    file << "\"\r\n\",\"\r\",\"\n\"\r1,2,3"
-    file.close
-
-    file = File.open(@outfile, "rb")
-    begin
-      reader = CSV::IOReader.new(file, ?,, ?\r)
-      assert_equal(["\r\n", "\r", "\n"], reader.shift.to_a)
-      assert_equal(["1", "2", "3"], reader.shift.to_a)
-      reader.close
-    ensure
-      file.close
-    end
-
-    file = File.open(@outfile, "r")    # not "rb"
-    begin
-      lfincell = (RSEP == "\n" ? "\r\n" : "\n")
-      reader = CSV::IOReader.new(file, ?,, ?\r)
-      assert_equal([lfincell, "\r", "\n"], reader.shift.to_a)
-      assert_equal(["1", "2", "3"], reader.shift.to_a)
-      reader.close
-    ensure
-      file.close
-    end
-  end
-
-  def test_Reader_s_parse
-    ret = CSV::Reader.parse("a,b,c") { |row|
-      assert_instance_of(Array, row, "Block parameter")
-    }
-    assert_nil(ret, "Return is nil")
-
-    ret = CSV::Reader.parse("a;b;c", ?;) { |row|
-      assert_instance_of(Array, row, "Block parameter")
-    }
-
-    file = Tempfile.new("in.csv")
-    file << "a,b,c"
-    file.open
-    ret = CSV::Reader.parse(file) { |row|
-      assert_instance_of(Array, row, "Block parameter")
-    }
-    assert_nil(ret, "Return is nil")
-
-    file = Tempfile.new("in.csv")
-    file << "a,b,c"
-    file.open
-    ret = CSV::Reader.parse(file, ?,) { |row|
-      assert_instance_of(Array, row, "Block parameter")
-    }
-
-    # Illegal format.
-    assert_raises(CSV::IllegalFormatError) do
-      CSV::Reader.parse("a,b\r\na,b,\"c\"\ra") do |row|
-      end
-    end
-
-    assert_raises(CSV::IllegalFormatError) do
-      CSV::Reader.parse("a,b\r\na,b\"") do |row|
-      end
-    end
-  end
-
-
-  #### CSV::Writer unit test
-  
-  def test_Writer_s_new
-    assert_raises(RuntimeError) do
-      CSV::Writer.new(nil)
-    end
-  end
-
-  def test_Writer_s_generate
-    ret = CSV::Writer.generate(STDOUT) { |writer|
-      assert_instance_of(CSV::BasicWriter, writer, "Block parameter")
-    }
-
-    ret = CSV::Writer.generate(STDOUT, ?;) { |writer|
-      assert_instance_of(CSV::BasicWriter, writer, "Block parameter")
-    }
-
-    assert_nil(ret, "Return is nil")
-  end
-
-  def test_Writer_s_create
-    writer = CSV::Writer.create(STDERR)
-    assert_instance_of(CSV::BasicWriter, writer, "String")
-
-    writer = CSV::Writer.create(STDERR, ?;)
-    assert_instance_of(CSV::BasicWriter, writer, "String")
-
-    writer = CSV::Writer.create(Tempfile.new("out.csv"))
-    assert_instance_of(CSV::BasicWriter, writer, "IO")
-  end
-
-  def test_Writer_LSHIFT # '<<'
-    file = Tempfile.new("out.csv")
-    CSV::Writer.generate(file) do |writer|
-      ret = writer << ['a', 'b', 'c']
-      assert_instance_of(CSV::BasicWriter, ret, 'Return is self')
-
-      writer << [nil, 'e', 'f'] << [nil, nil, '']
-    end
-    file.open
-    file.binmode
-    str = file.read
-    assert_equal("a,b,c#{RSEP},e,f#{RSEP},,\"\"#{RSEP}", str, 'Normal')
-
-    file = Tempfile.new("out2.csv")
-    CSV::Writer.generate(file) do |writer|
-      ret = writer << [d('a'), d('b'), d('c')]
-      assert_instance_of(CSV::BasicWriter, ret, 'Return is self')
-
-      writer << [d(nil), d('e'), d('f')] << [d(nil), d(nil), d('')]
-    end
-    file.open
-    file.binmode
-    str = file.read
-    assert_equal("a,b,c#{RSEP},e,f#{RSEP},,\"\"#{RSEP}", str, 'Normal')
-  end
-
-  def test_Writer_add_row
-    file = Tempfile.new("out.csv")
-    CSV::Writer.generate(file) do |writer|
-      ret = writer.add_row(
-       [d('a'), d('b'), d('c')])
-      assert_instance_of(CSV::BasicWriter, ret, 'Return is self')
-
-      writer.add_row(
-       [d(nil), d('e'), d('f')]
-     ).add_row(
-       [d(nil), d(nil), d('')]
-     )
-    end
-    file.open
-    file.binmode
-    str = file.read
-    assert_equal("a,b,c#{RSEP},e,f#{RSEP},,\"\"#{RSEP}", str, 'Normal')
-  end
-
-  def test_Writer_close
-    f = File.open(@outfile, "w")
-    writer = CSV::BasicWriter.create(f)
-    writer.close_on_terminate
-    writer.close
-    assert(f.closed?)
-  end
-
-  def test_BasicWriter_close_on_terminate
-    f = File.open(@outfile, "w")
-    writer = CSV::BasicWriter.create(f)
-    writer.close
-    assert(!f.closed?)
-    f.close
-
-    f = File.open(@outfile, "w")
-    writer = CSV::BasicWriter.new(f)
-    writer.close_on_terminate
-    writer.close
-    assert(f.closed?)
-  end
-
-  def test_BasicWriter_s_create_binmode
-    file = File.open(@outfile, "w")    # not "wb"
-    begin
-      writer = CSV::BasicWriter.new(file, ?,, ?\r)
-      writer << ["\r\n", "\r", "\n"]
-      writer << ["1", "2", "3"]
-      writer.close
-    ensure
-      file.close
-    end
-
-    file = File.open(@outfile, "rb")
-    str = file.read
-    file.close
-    assert_equal("\"\r#{RSEP}\",\"\r\",\"#{RSEP}\"\r1,2,3\r", str)
-  end
-
-  #### CSV unit test
-
-  def test_s_open_reader
-    assert_raises(ArgumentError, 'Illegal mode') do
-      CSV.open("temp", "a")
-    end
-
-    assert_raises(ArgumentError, 'Illegal mode') do
-      CSV.open("temp", "a", ?;)
-    end
-
-    reader = CSV.open(@infile, "r")
-    assert_instance_of(CSV::IOReader, reader)
-    reader.close
-
-    reader = CSV.open(@infile, "rb")
-    assert_instance_of(CSV::IOReader, reader)
-    reader.close
-
-    reader = CSV.open(@infile, "r", ?;)
-    assert_instance_of(CSV::IOReader, reader)
-    reader.close
-
-    CSV.open(@infile, "r") do |row|
-      assert_instance_of(Array, row)
-      break
-    end
-
-    CSV.open(@infiletsv, "r", ?\t) do |row|
-      assert_instance_of(Array, row)
-      break
-    end
-
-    assert_raises(Errno::ENOENT) do
-      CSV.open("NoSuchFileOrDirectory", "r")
-    end
-
-    assert_raises(Errno::ENOENT) do
-      CSV.open("NoSuchFileOrDirectory", "r", ?;)
-    end
-
-    # Illegal format.
-    File.open(@outfile, "wb") do |f|
-      f << "a,b\r\na,b,\"c\"\ra"
-    end
-    assert_raises(CSV::IllegalFormatError) do
-      CSV.open(@outfile, "r") do |row|
-      end
-    end
-
-    File.open(@outfile, "wb") do |f|
-      f << "a,b\r\na,b\""
-    end
-    assert_raises(CSV::IllegalFormatError) do
-      CSV.open(@outfile, "r") do |row|
-      end
-    end
-
-    CSV.open(@emptyfile, "r") do |row|
-      assert_fail("Must not reach here")
-    end
-  end
-
-  def test_s_parse
-    result = CSV.parse(File.read(@infile))
-    assert_instance_of(Array, result)
-    assert_instance_of(Array, result[0])
-
-    result = CSV.parse(File.read(@infile))
-    assert_instance_of(Array, result)
-    assert_instance_of(Array, result[0])
-
-    assert_equal([], CSV.parse(""))
-    assert_equal([[nil]], CSV.parse("\n"))
-
-    CSV.parse(File.read(@infile)) do |row|
-      assert_instance_of(Array, row)
-      break
-    end
-
-    CSV.parse(File.read(@infiletsv), ?\t) do |row|
-      assert_instance_of(Array, row)
-      break
-    end
-
-    CSV.parse("") do |row|
-      assert(false)
-    end
-
-    count = 0
-    CSV.parse("\n") do |row|
-      assert_equal([nil], row)
-      count += 1
-    end
-    assert_equal(1, count)
-
-    assert_equal([["a|b-c|d"]], CSV.parse("a|b-c|d"))
-    assert_equal([["a", "b"], ["c", "d"]], CSV.parse("a|b-c|d", "|", "-"))
-  end
-
-  def test_s_open_writer
-    writer = CSV.open(@outfile, "w")
-    assert_instance_of(CSV::BasicWriter, writer)
-    writer.close
-
-    writer = CSV.open(@outfile, "wb")
-    assert_instance_of(CSV::BasicWriter, writer)
-    writer.close
-
-    writer = CSV.open(@outfile, "wb", ?;)
-    assert_instance_of(CSV::BasicWriter, writer)
-    writer.close
-
-    CSV.open(@outfile, "w") do |writer|
-      assert_instance_of(CSV::BasicWriter, writer)
-    end
-
-    CSV.open(@outfile, "w", ?;) do |writer|
-      assert_instance_of(CSV::BasicWriter, writer)
-    end
-
-    begin
-      CSV.open(@tmpdir, "w")
-      assert(false)
-    rescue Exception => ex
-      assert(ex.is_a?(Errno::EEXIST) || ex.is_a?(Errno::EISDIR) || ex.is_a?(Errno::EACCES))
-    end
-  end
-
-  def test_s_generate
-    writer = CSV.generate(@outfile)
-    assert_instance_of(CSV::BasicWriter, writer)
-    writer.close
-
-    writer = CSV.generate(@outfile, ?;)
-    assert_instance_of(CSV::BasicWriter, writer)
-    writer.close
-
-    CSV.generate(@outfile) do |writer|
-      assert_instance_of(CSV::BasicWriter, writer)
-    end
-
-    CSV.generate(@outfile, ?;) do |writer|
-      assert_instance_of(CSV::BasicWriter, writer)
-    end
-
-    begin
-      CSV.generate(@tmpdir)
-      assert(false)
-    rescue Exception => ex
-      assert(ex.is_a?(Errno::EEXIST) || ex.is_a?(Errno::EISDIR) || ex.is_a?(Errno::EACCES))
-    end
-  end
-
-  def test_s_generate_line
-    str = CSV.generate_line([])
-    assert_equal('', str, "Extra boundary check.")
-
-    str = CSV.generate_line([], ?;)
-    assert_equal('', str, "Extra boundary check.")
-
-    @@simpleCSVData.each do |col, str|
-      buf = CSV.generate_line(col)
-      assert_equal(str, buf)
-    end
-
-    @@simpleCSVData.each do |col, str|
-      buf = CSV.generate_line(col, ?;)
-      assert_equal(str + "\n", ssv2csv(buf))
-    end
-
-    @@simpleCSVData.each do |col, str|
-      buf = CSV.generate_line(col, ?\t)
-      assert_equal(str + "\n", tsv2csv(buf))
-    end
-
-    str = CSV.generate_line(['a', 'b'], nil, ?|)
-    assert_equal('a,b', str)
-
-    str = CSV.generate_line(['a', 'b'], nil, "a")
-    assert_equal('"a",b', str)
-  end
-
-  def test_s_generate_row
-    buf = ''
-    cols = CSV.generate_row([], 0, buf)
-    assert_equal(0, cols)
-    assert_equal("\n", buf, "Extra boundary check.")
-
-    buf = ''
-    cols = CSV.generate_row([], 0, buf, ?;)
-    assert_equal(0, cols)
-    assert_equal("\n", buf, "Extra boundary check.")
-
-    buf = ''
-    cols = CSV.generate_row([], 0, buf, ?\t)
-    assert_equal(0, cols)
-    assert_equal("\n", buf, "Extra boundary check.")
-
-    buf = ''
-    cols = CSV.generate_row([], 0, buf, ?\t, ?|)
-    assert_equal(0, cols)
-    assert_equal("|", buf, "Extra boundary check.")
-
-    buf = ''
-    cols = CSV.generate_row([d('1')], 2, buf)
-    assert_equal('1,', buf)
-
-    buf = ''
-    cols = CSV.generate_row([d('1')], 2, buf, ?;)
-    assert_equal('1;', buf)
-
-    buf = ''
-    cols = CSV.generate_row([d('1')], 2, buf, ?\t)
-    assert_equal("1\t", buf)
-
-    buf = ''
-    cols = CSV.generate_row([d('1')], 2, buf, ?\t, ?|)
-    assert_equal("1\t", buf)
-
-    buf = ''
-    cols = CSV.generate_row([d('1'), d('2')], 1, buf)
-    assert_equal("1\n", buf)
-
-    buf = ''
-    cols = CSV.generate_row([d('1'), d('2')], 1, buf, ?;)
-    assert_equal("1\n", buf)
-
-    buf = ''
-    cols = CSV.generate_row([d('1'), d('2')], 1, buf, ?\t)
-    assert_equal("1\n", buf)
-
-    buf = ''
-    cols = CSV.generate_row([d('1'), d('2')], 1, buf, ?\t, ?\n)
-    assert_equal("1\n", buf)
-
-    buf = ''
-    cols = CSV.generate_row([d('1'), d('2')], 1, buf, ?\t, ?\r)
-    assert_equal("1\r", buf)
-
-    buf = ''
-    cols = CSV.generate_row([d('1'), d('2')], 1, buf, ?\t, ?|)
-    assert_equal("1|", buf)
-
-    @@fullCSVData.each do |col, str|
-      buf = ''
-      cols = CSV.generate_row(col, col.size, buf)
-      assert_equal(col.size, cols)
-      assert_equal(str + "\n", buf)
-    end
-
-    @@fullCSVData.each do |col, str|
-      buf = ''
-      cols = CSV.generate_row(col, col.size, buf, ?;)
-      assert_equal(col.size, cols)
-      assert_equal(str + "\n", ssv2csv(buf))
-    end
-
-    @@fullCSVData.each do |col, str|
-      buf = ''
-      cols = CSV.generate_row(col, col.size, buf, ?\t)
-      assert_equal(col.size, cols)
-      assert_equal(str + "\n", tsv2csv(buf))
-    end
-
-    # row separator
-    @@fullCSVData.each do |col, str|
-      buf = ''
-      cols = CSV.generate_row(col, col.size, buf, ?,, ?|)
-      assert_equal(col.size, cols)
-      assert_equal(str + "|", buf)
-    end
-
-    # col and row separator
-    @@fullCSVData.each do |col, str|
-      buf = ''
-      cols = CSV.generate_row(col, col.size, buf, ?\t, ?|)
-      assert_equal(col.size, cols)
-      assert_equal(str + "|", tsv2csv(buf, ?|))
-    end
-
-    buf = ''
-    toBe = ''
-    cols = 0
-    colsToBe = 0
-    @@fullCSVData.each do |col, str|
-      cols += CSV.generate_row(col, col.size, buf)
-      toBe << str << "\n"
-      colsToBe += col.size
-    end
-    assert_equal(colsToBe, cols)
-    assert_equal(toBe, buf)
-
-    buf = ''
-    toBe = ''
-    cols = 0
-    colsToBe = 0
-    @@fullCSVData.each do |col, str|
-      lineBuf = ''
-      cols += CSV.generate_row(col, col.size, lineBuf, ?;)
-      buf << ssv2csv(lineBuf) << "\n"
-      toBe << ssv2csv(lineBuf) << "\n"
-      colsToBe += col.size
-    end
-    assert_equal(colsToBe, cols)
-    assert_equal(toBe, buf)
-
-    buf = ''
-    toBe = ''
-    cols = 0
-    colsToBe = 0
-    @@fullCSVData.each do |col, str|
-      lineBuf = ''
-      cols += CSV.generate_row(col, col.size, lineBuf, ?\t)
-      buf << tsv2csv(lineBuf) << "\n"
-      toBe << tsv2csv(lineBuf) << "\n"
-      colsToBe += col.size
-    end
-    assert_equal(colsToBe, cols)
-    assert_equal(toBe, buf)
-
-    buf = ''
-    toBe = ''
-    cols = 0
-    colsToBe = 0
-    @@fullCSVData.each do |col, str|
-      lineBuf = ''
-      cols += CSV.generate_row(col, col.size, lineBuf, ?|)
-      buf << tsv2csv(lineBuf, ?|)
-      toBe << tsv2csv(lineBuf, ?|)
-      colsToBe += col.size
-    end
-    assert_equal(colsToBe, cols)
-    assert_equal(toBe, buf)
-  end
-
-  def test_s_parse_line
-    @@simpleCSVData.each do |col, str|
-      row = CSV.parse_line(str)
-      assert_instance_of(Array, row)
-      assert_equal(col.size, row.size)
-      assert_equal(col, row)
-    end
-
-    @@simpleCSVData.each do |col, str|
-      str = csv2ssv(str)
-      row = CSV.parse_line(str, ?;)
-      assert_instance_of(Array, row)
-      assert_equal(col.size, row.size, str.inspect)
-      assert_equal(col, row, str.inspect)
-    end
-
-    @@simpleCSVData.each do |col, str|
-      str = csv2tsv(str)
-      row = CSV.parse_line(str, ?\t)
-      assert_instance_of(Array, row)
-      assert_equal(col.size, row.size)
-      assert_equal(col, row)
-    end
-
-    assert_equal(['a', 'b', 'c'], CSV.parse_line("a,b,c", nil, nil))
-    assert_equal(['a', nil], CSV.parse_line("a,b,c", nil, ?b))
-    assert_equal(['a', 'b', nil], CSV.parse_line("a,b,c", nil, "c"))
-    assert_equal([nil], CSV.parse_line(""))
-    assert_equal([nil], CSV.parse_line("\n"))
-    assert_equal([""], CSV.parse_line("\"\"\n"))
-    
-    # Illegal format.
-    buf = []
-    row = CSV.parse_line("a,b,\"c\"\ra")
-    assert_instance_of(Array, row)
-    assert_equal(0, row.size)
-
-    buf = Array.new
-    row = CSV.parse_line("a;b;\"c\"\ra", ?;)
-    assert_instance_of(Array, row)
-    assert_equal(0, row.size)
-
-    buf = Array.new
-    row = CSV.parse_line("a\tb\t\"c\"\ra", ?\t)
-    assert_instance_of(Array, row)
-    assert_equal(0, row.size)
-
-    row = CSV.parse_line("a,b\"")
-    assert_instance_of(Array, row)
-    assert_equal(0, row.size)
-
-    row = CSV.parse_line("a;b\"", ?;)
-    assert_instance_of(Array, row)
-    assert_equal(0, row.size)
-
-    row = CSV.parse_line("a\tb\"", ?\t)
-    assert_instance_of(Array, row)
-    assert_equal(0, row.size)
-
-    row = CSV.parse_line("\"a,b\"\r,")
-    assert_instance_of(Array, row)
-    assert_equal(0, row.size)
-
-    row = CSV.parse_line("\"a;b\"\r;", ?;)
-    assert_instance_of(Array, row)
-    assert_equal(0, row.size)
-
-    row = CSV.parse_line("\"a\tb\"\r\t", ?\t)
-    assert_instance_of(Array, row)
-    assert_equal(0, row.size)
-
-    row = CSV.parse_line("\"a,b\"\r\"")
-    assert_instance_of(Array, row)
-    assert_equal(0, row.size)
-
-    row = CSV.parse_line("\"a;b\"\r\"", ?;)
-    assert_instance_of(Array, row)
-    assert_equal(0, row.size)
-
-    row = CSV.parse_line("\"a\tb\"\r\"", ?\t)
-    assert_instance_of(Array, row)
-    assert_equal(0, row.size)
-  end
-
-  def test_s_parse_row
-    @@fullCSVData.each do |col, str|
-      buf = Array.new
-      cols, idx = CSV.parse_row(str + "\r\n", 0, buf)
-      assert_equal(cols, buf.size, "Reported size.")
-      assert_equal(col.size, buf.size, "Size.")
-      assert_equal(col, buf, str.inspect)
-
-      buf = Array.new
-      cols, idx = CSV.parse_row(str + "\n", 0, buf, ?,, ?\n)
-      assert_equal(cols, buf.size, "Reported size.")
-      assert_equal(col.size, buf.size, "Size.")
-      assert_equal(col, buf, str.inspect)
-
-      # separator: |
-      buf = Array.new
-      cols, idx = CSV.parse_row(str + "|", 0, buf, ?,)
-      assert_not_equal(col, buf)
-      buf = Array.new
-      cols, idx = CSV.parse_row(str + "|", 0, buf, ?,, ?|)
-      assert_equal(cols, buf.size, "Reported size.")
-      assert_equal(col.size, buf.size, "Size.")
-      assert_equal(col, buf, str.inspect)
-    end
-
-    @@fullCSVData.each do |col, str|
-      str = csv2ssv(str)
-      buf = Array.new
-      cols, idx = CSV.parse_row(str + "\r\n", 0, buf, ?;)
-      assert_equal(cols, buf.size, "Reported size.")
-      assert_equal(col.size, buf.size, "Size.")
-      assert_equal(col, buf, str)
-    end
-
-    @@fullCSVData.each do |col, str|
-      str = csv2tsv(str)
-      buf = Array.new
-      cols, idx = CSV.parse_row(str + "\r\n", 0, buf, ?\t)
-      assert_equal(cols, buf.size, "Reported size.")
-      assert_equal(col.size, buf.size, "Size.")
-      assert_equal(col, buf, str)
-    end
-
-    @@fullCSVData.each do |col, str|
-      str = csv2tsv(str, ?|)
-      buf = Array.new
-      cols, idx = CSV.parse_row(str + "|", 0, buf, ?\t, ?|)
-      assert_equal(cols, buf.size, "Reported size.")
-      assert_equal(col.size, buf.size, "Size.")
-      assert_equal(col, buf, str)
-    end
-
-    buf = []
-    CSV.parse_row("a,b,c", 0, buf, nil, nil)
-    assert_equal(['a', 'b', 'c'], buf)
-
-    buf = []
-    CSV.parse_row("a,b,c", 0, buf, nil, ?b)
-    assert_equal(['a', nil], buf)
-
-    buf = []
-    CSV.parse_row("a,b,c", 0, buf, nil, "c")
-    assert_equal(['a', 'b', nil], buf)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a,b,\"c\r\"", 0, buf)
-    assert_equal(["a", "b", "c\r"], buf.to_a)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a;b;\"c\r\"", 0, buf, ?;)
-    assert_equal(["a", "b", "c\r"], buf.to_a)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a\tb\t\"c\r\"", 0, buf, ?\t)
-    assert_equal(["a", "b", "c\r"], buf.to_a)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a,b,c\n", 0, buf, ?,, ?\n)
-    assert_equal(["a", "b", "c"], buf.to_a)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a\tb\tc\n", 0, buf, ?\t, ?\n)
-    assert_equal(["a", "b", "c"], buf.to_a)
-
-    # Illegal format.
-    buf = Array.new
-    cols, idx = CSV.parse_row("a,b,c\"", 0, buf)
-    assert_equal(0, cols, "Illegal format; unbalanced double-quote.")
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a;b;c\"", 0, buf, ?;)
-    assert_equal(0, cols, "Illegal format; unbalanced double-quote.")
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a,b,\"c\"\ra", 0, buf)
-    assert_equal(0, cols)
-    assert_equal(0, idx)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a,b,\"c\"\ra", 0, buf, ?;)
-    assert_equal(0, cols)
-    assert_equal(0, idx)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a,b\"", 0, buf)
-    assert_equal(0, cols)
-    assert_equal(0, idx)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a;b\"", 0, buf, ?;)
-    assert_equal(0, cols)
-    assert_equal(0, idx)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("\"a,b\"\r,", 0, buf)
-    assert_equal(0, cols)
-    assert_equal(0, idx)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a\r,", 0, buf)
-    assert_equal(0, cols)
-    assert_equal(0, idx)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a\r", 0, buf)
-    assert_equal(0, cols)
-    assert_equal(0, idx)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a\rbc", 0, buf)
-    assert_equal(0, cols)
-    assert_equal(0, idx)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a\r\"\"", 0, buf)
-    assert_equal(0, cols)
-    assert_equal(0, idx)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("a\r\rabc,", 0, buf)
-    assert_equal(0, cols)
-    assert_equal(0, idx)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("\"a;b\"\r;", 0, buf, ?;)
-    assert_equal(0, cols)
-    assert_equal(0, idx)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("\"a,b\"\r\"", 0, buf)
-    assert_equal(0, cols)
-    assert_equal(0, idx)
-
-    buf = Array.new
-    cols, idx = CSV.parse_row("\"a;b\"\r\"", 0, buf, ?;)
-    assert_equal(0, cols)
-    assert_equal(0, idx)
-  end
-
-  def test_s_parse_rowEOF
-    @@fullCSVData.each do |col, str|
-      if str == ''
-       # String "" is not allowed.
-       next
-      end
-      buf = Array.new
-      cols, idx = CSV.parse_row(str, 0, buf)
-      assert_equal(col.size, cols, "Reported size.")
-      assert_equal(col.size, buf.size, "Size.")
-      assert_equal(col, buf)
-    end
-  end
-
-  def test_s_parse_rowConcat
-    buf = ''
-    toBe = []
-    @@fullCSVData.each do |col, str|
-      buf  << str << "\r\n"
-      toBe.concat(col)
-    end
-    idx = 0
-    cols = 0
-    parsed = Array.new
-    parsedCols = 0
-    begin
-      cols, idx = CSV.parse_row(buf, idx, parsed)
-      parsedCols += cols
-    end while cols > 0
-    assert_equal(toBe.size, parsedCols)
-    assert_equal(toBe.size, parsed.size)
-    assert_equal(toBe, parsed)
-
-    buf = ''
-    toBe = []
-    @@fullCSVData.each do |col, str|
-      buf  << str << "\n"
-      toBe.concat(col)
-    end
-    idx = 0
-    cols = 0
-    parsed = Array.new
-    parsedCols = 0
-    begin
-      cols, idx = CSV.parse_row(buf, idx, parsed, ?,, ?\n)
-      parsedCols += cols
-    end while cols > 0
-    assert_equal(toBe.size, parsedCols)
-    assert_equal(toBe.size, parsed.size)
-    assert_equal(toBe, parsed)
-
-    buf = ''
-    toBe = []
-    @@fullCSVData.sort { |a, b|
-      a[0].length <=> b[0].length
-    }.each do |col, str|
-      buf  << str << "\n"
-      toBe.concat(col)
-    end
-    idx = 0
-    cols = 0
-    parsed = Array.new
-    parsedCols = 0
-    begin
-      cols, idx = CSV.parse_row(buf, idx, parsed, ?,, ?\n)
-      parsedCols += cols
-    end while cols > 0
-    assert_equal(toBe.size, parsedCols)
-    assert_equal(toBe.size, parsed.size)
-    assert_equal(toBe, parsed)
-
-    buf = ''
-    toBe = []
-    @@fullCSVData.each do |col, str|
-      buf  << str << "|"
-      toBe.concat(col)
-    end
-    idx = 0
-    cols = 0
-    parsed = []
-    parsedCols = 0
-    begin
-      cols, idx = CSV.parse_row(buf, idx, parsed, ?,, ?|)
-      parsedCols += cols
-    end while cols > 0
-    assert_equal(toBe.size, parsedCols)
-    assert_equal(toBe.size, parsed.size)
-    assert_equal(toBe, parsed)
-  end
-
-  def test_utf8
-    rows = []
-    CSV.open(@bomfile, "r") do |row|
-      rows << row.to_a
-    end
-    assert_equal([["foo"], ["bar"]], rows)
-
-    rows = []
-    file = File.open(@bomfile)
-    CSV::Reader.parse(file) do |row|
-      rows << row.to_a
-    end
-    assert_equal([["foo"], ["bar"]], rows)
-    file.close
-  end
-
-  def test_macCR
-    rows = []
-    CSV.open(@macfile, "r", ?,, ?\r) do |row|
-      rows << row.to_a
-    end
-    assert_equal([["Avenches", "aus Umgebung"], ["Bad Hersfeld", "Ausgrabung"]], rows)
-
-    rows = []
-    assert_raises(CSV::IllegalFormatError) do
-      CSV.open(@macfile, "r") do |row|
-        rows << row.to_a
-      end
-      assert_equal([["Avenches", "aus Umgebung\r\"Bad Hersfeld", "Ausgrabung"]], rows)
-    end
-
-    rows = []
-    file = File.open(@macfile)
-    begin
-      CSV::Reader.parse(file, ?,, ?\r) do |row|
-        rows << row.to_a
-      end
-      assert_equal([["Avenches", "aus Umgebung"], ["Bad Hersfeld", "Ausgrabung"]], rows)
-    ensure
-      file.close
-    end
-
-    rows = []
-    file = File.open(@macfile)
-    begin
-      assert_raises(CSV::IllegalFormatError) do
-        CSV::Reader.parse(file, ?,) do |row|
-          rows << row.to_a
-        end
-        assert_equal([["Avenches", "aus Umgebung\r\"Bad Hersfeld", "Ausgrabung"]], rows)
-      end
-    ensure
-      file.close
-    end
-  end
-
-
-  #### CSV unit test
-
-  InputStreamPattern = '0123456789'
-  InputStreamPatternSize = InputStreamPattern.size
-  def expChar(idx)
-    InputStreamPattern[idx % InputStreamPatternSize]
-  end
-
-  def expStr(idx, n)
-    if n > InputStreamPatternSize
-      InputStreamPattern + expStr(0, n - InputStreamPatternSize)
-    else
-      InputStreamPattern[idx % InputStreamPatternSize, n]
-    end
-  end
-
-  def setupInputStream(size, bufSize = nil)
-    setBufSize(bufSize) if bufSize
-    m = ((size / InputStreamPatternSize) + 1).to_i
-    File.open(@outfile, "wb") do |f|
-      f << (InputStreamPattern * m)[0, size]
-    end
-    file = File.open(@outfile, "rb")
-    buf = CSV::IOBuf.new(file)
-    if block_given?
-      yield(buf)
-      file.close
-      nil
-    else
-      buf
-    end
-  end
-
-  def setBufSize(size)
-    CSV::StreamBuf.module_eval('remove_const("BufSize")')
-    CSV::StreamBuf.module_eval("BufSize = #{ size }")
-  end
-
-  class StrBuf < CSV::StreamBuf
-  private
-    def initialize(string)
-      @str = string
-      @idx = 0
-      super()
-    end
-
-    def read(size)
-      str = @str[@idx, size]
-      if str.empty?
-        nil
-      else
-        @idx += str.size
-        str
-      end
-    end
-  end
-
-  class ErrBuf < CSV::StreamBuf
-    class Error < RuntimeError; end
-  private
-    def initialize
-      @first = true
-      super()
-    end
-
-    def read(size)
-      if @first
-       @first = false
-       "a" * size
-      else
-       raise ErrBuf::Error.new
-      end
-    end
-  end
-
-  def test_StreamBuf_MyBuf
-    # At first, check ruby's behaviour.
-    s = "abc"
-    assert_equal(?a, s[0])
-    assert_equal(?b, s[1])
-    assert_equal(?c, s[2])
-    assert_equal(nil, s[3])
-    assert_equal("a", s[0, 1])
-    assert_equal("b", s[1, 1])
-    assert_equal("c", s[2, 1])
-    assert_equal("", s[3, 1])
-    assert_equal(nil, s[4, 1])
-
-    s = StrBuf.new("abc")
-    assert_equal(?a, s[0])
-    assert_equal(?b, s.get(1))
-    assert_equal(?c, s[2])
-    assert_equal(nil, s.get(3))
-    assert_equal("a", s[0, 1])
-    assert_equal("b", s.get(1, 1))
-    assert_equal("c", s[2, 1])
-    assert_equal("", s.get(3, 1))
-    assert_equal(nil, s[4, 1])
-
-    dropped = s.drop(1)
-    assert_equal(1, dropped)
-    assert_equal(?b, s[0])
-    assert(!s.is_eos?)
-    dropped = s.drop(1)
-    assert_equal(1, dropped)
-    assert_equal(?c, s[0])
-    assert(!s.is_eos?)
-    dropped = s.drop(1)
-    assert_equal(1, dropped)
-    assert_equal(nil, s[0])
-    assert(s.is_eos?)
-    dropped = s.drop(1)
-    assert_equal(0, dropped)
-    assert_equal(nil, s[0])
-    assert(s.is_eos?)
-
-    s = StrBuf.new("")
-    assert_equal(nil, s[0])
-
-    s = StrBuf.new("")
-    dropped = s.drop(1)
-    assert_equal(0, dropped)
-
-    assert_raises(TestCSV::ErrBuf::Error) do
-      s = ErrBuf.new
-      s[1024]
-    end
-
-    assert_raises(TestCSV::ErrBuf::Error) do
-      s = ErrBuf.new
-      s.drop(1024)
-    end
-  end
-
-  def test_StreamBuf_AREF # '[idx]'
-    setupInputStream(22, 1024) do |s|
-      [0, 1, 9, 10, 19, 20, 21].each do |idx|
-       assert_equal(expChar(idx), s[idx], idx.to_s)
-      end
-      [22, 23].each do |idx|
-       assert_equal(nil, s[idx], idx.to_s)
-      end
-      assert_equal(nil, s[-1])
-    end
-
-    setupInputStream(22, 1) do |s|
-      [0, 1, 9, 10, 19, 20, 21].each do |idx|
-       assert_equal(expChar(idx), s[idx], idx.to_s)
-      end
-      [22, 23].each do |idx|
-       assert_equal(nil, s[idx], idx.to_s)
-      end
-    end
-
-    setupInputStream(1024, 1) do |s|
-      [1023, 0].each do |idx|
-       assert_equal(expChar(idx), s[idx], idx.to_s)
-      end
-      [1024, 1025].each do |idx|
-       assert_equal(nil, s[idx], idx.to_s)
-      end
-    end
-
-    setupInputStream(1, 1) do |s|
-      [0].each do |idx|
-       assert_equal(expChar(idx), s[idx], idx.to_s)
-      end
-      [1, 2].each do |idx|
-       assert_equal(nil, s[idx], idx.to_s)
-      end
-    end
-  end
-
-  def test_StreamBuf_AREF_n # '[idx, n]'
-    # At first, check ruby's behaviour.
-    assert_equal("", "abc"[3, 1])
-    assert_equal(nil, "abc"[4, 1])
-    
-    setupInputStream(22, 1024) do |s|
-      [0, 1, 9, 10, 19, 20, 21].each do |idx|
-       assert_equal(expStr(idx, 1), s[idx, 1], idx.to_s)
-      end
-      assert_equal("", s[22, 1])
-      assert_equal(nil, s[23, 1])
-    end
-
-    setupInputStream(22, 1) do |s|
-      [0, 1, 9, 10, 19, 20, 21].each do |idx|
-       assert_equal(expStr(idx, 1), s[idx, 1], idx.to_s)
-      end
-      assert_equal("", s[22, 1])
-      assert_equal(nil, s[23, 1])
-    end
-
-    setupInputStream(1024, 1) do |s|
-      [1023, 0].each do |idx|
-       assert_equal(expStr(idx, 1), s[idx, 1], idx.to_s)
-      end
-      assert_equal("", s[1024, 1])
-      assert_equal(nil, s[1025, 1])
-    end
-
-    setupInputStream(1, 1) do |s|
-      [0].each do |idx|
-       assert_equal(expStr(idx, 1), s[idx, 1], idx.to_s)
-      end
-      assert_equal("", s[1, 1])
-      assert_equal(nil, s[2, 1])
-    end
-
-    setupInputStream(22, 11) do |s|
-      [0, 1, 10, 11, 20].each do  |idx|
-       assert_equal(expStr(idx, 2), s[idx, 2], idx.to_s)
-      end
-      assert_equal(expStr(21, 1), s[21, 2])
-
-      assert_equal(expStr(0, 12), s[0, 12])
-      assert_equal(expStr(10, 12), s[10, 12])
-      assert_equal(expStr(10, 12), s[10, 13])
-      assert_equal(expStr(10, 12), s[10, 14])
-      assert_equal(expStr(10, 12), s[10, 1024])
-
-      assert_equal(nil, s[0, -1])
-      assert_equal(nil, s[21, -1])
-
-      assert_equal(nil, s[-1, 10])
-      assert_equal(nil, s[-1, -1])
-    end
-  end
-
-  def test_StreamBuf_get
-    setupInputStream(22, 1024) do |s|
-      [0, 1, 9, 10, 19, 20, 21].each do |idx|
-       assert_equal(expChar(idx), s.get(idx), idx.to_s)
-      end
-      [22, 23].each do |idx|
-       assert_equal(nil, s.get(idx), idx.to_s)
-      end
-      assert_equal(nil, s.get(-1))
-    end
-  end
-  
-  def test_StreamBuf_get_n
-    setupInputStream(22, 1024) do |s|
-      [0, 1, 9, 10, 19, 20, 21].each do |idx|
-       assert_equal(expStr(idx, 1), s.get(idx, 1), idx.to_s)
-      end
-      assert_equal("", s.get(22, 1))
-      assert_equal(nil, s.get(23, 1))
-
-      assert_equal(nil, s.get(-1, 1))
-      assert_equal(nil, s.get(-1, -1))
-    end
-  end
-
-  def test_StreamBuf_drop
-    setupInputStream(22, 1024) do |s|
-      assert_equal(expChar(0), s[0])
-      assert_equal(expChar(21), s[21])
-      assert_equal(nil, s[22])
-
-      dropped = s.drop(-1)
-      assert_equal(0, dropped)
-      assert_equal(expChar(0), s[0])
-
-      dropped = s.drop(0)
-      assert_equal(0, dropped)
-      assert_equal(expChar(0), s[0])
-
-      dropped = s.drop(1)
-      assert_equal(1, dropped)
-      assert_equal(expChar(1), s[0])
-      assert_equal(expChar(2), s[1])
-
-      dropped = s.drop(1)
-      assert_equal(1, dropped)
-      assert_equal(expChar(2), s[0])
-      assert_equal(expChar(3), s[1])
-    end
-
-    setupInputStream(4, 2) do |s|
-      dropped = s.drop(2)
-      assert_equal(2, dropped)
-      assert_equal(expChar(2), s[0])
-      assert_equal(expChar(3), s[1])
-      dropped = s.drop(1)
-      assert_equal(1, dropped)
-      assert_equal(expChar(3), s[0])
-      assert_equal(nil, s[1])
-      dropped = s.drop(1)
-      assert_equal(1, dropped)
-      assert_equal(nil, s[0])
-      assert_equal(nil, s[1])
-      dropped = s.drop(0)
-      assert_equal(0, dropped)
-      assert_equal(nil, s[0])
-      assert_equal(nil, s[1])
-    end
-
-    setupInputStream(6, 3) do |s|
-      dropped = s.drop(2)
-      assert_equal(2, dropped)
-      dropped = s.drop(2)
-      assert_equal(2, dropped)
-      assert_equal(expChar(4), s[0])
-      assert_equal(expChar(5), s[1])
-      dropped = s.drop(3)
-      assert_equal(2, dropped)
-      assert_equal(nil, s[0])
-      assert_equal(nil, s[1])
-    end
-  end
-
-  def test_StreamBuf_is_eos?
-    setupInputStream(3, 1024) do |s|
-      assert(!s.is_eos?)
-      s.drop(1)
-      assert(!s.is_eos?)
-      s.drop(1)
-      assert(!s.is_eos?)
-      s.drop(1)
-      assert(s.is_eos?)
-      s.drop(1)
-      assert(s.is_eos?)
-    end
-
-    setupInputStream(3, 2) do |s|
-      assert(!s.is_eos?)
-      s.drop(1)
-      assert(!s.is_eos?)
-      s.drop(1)
-      assert(!s.is_eos?)
-      s.drop(1)
-      assert(s.is_eos?)
-      s.drop(1)
-      assert(s.is_eos?)
-    end
-  end
-
-  def test_StreamBuf_s_new
-    # NotImplementedError should be raised from StreamBuf#read.
-    assert_raises(NotImplementedError) do
-      CSV::StreamBuf.new
-    end
-  end
-
-  def test_IOBuf_close
-    f = File.open(@outfile, "wb")
-    f << "tst"
-    f.close
-
-    f = File.open(@outfile, "rb")
-    iobuf = CSV::IOBuf.new(f)
-    iobuf.close
-    assert(true)       # iobuf.close does not raise any exception.
-    f.close
-  end
-
-  def test_IOBuf_s_new
-    iobuf = CSV::IOBuf.new(Tempfile.new("in.csv"))
-    assert_instance_of(CSV::IOBuf, iobuf)
-  end
-
-
-  #### CSV functional test
-
-  # sample data
-  #
-  #  1      2       3         4       5        6      7    8
-  # +------+-------+---------+-------+--------+------+----+------+
-  # | foo  | "foo" | foo,bar | ""    |(empty) |(null)| \r | \r\n |
-  # +------+-------+---------+-------+--------+------+----+------+
-  # | NaHi | "Na"  | Na,Hi   | \r.\n | \r\n\n | "    | \n | \r\n |
-  # +------+-------+---------+-------+--------+------+----+------+
-  #
-  def test_s_parseAndCreate
-    colSize = 8
-    csvStr = "foo,!!!foo!!!,!foo,bar!,!!!!!!,!!,,!\r!,!\r\n!\nNaHi,!!!Na!!!,!Na,Hi!,!\r.\n!,!\r\n\n!,!!!!,!\n!,!\r\n!".gsub!('!', '"')
-    csvStrTerminated = csvStr + "\n"
-
-    myStr = csvStr.dup
-    res1 = []; res2 = []
-    idx = 0
-    col, idx = CSV::parse_row(myStr, 0, res1)
-    col, idx = CSV::parse_row(myStr, idx, res2)
-
-    buf = ''
-    col = CSV::generate_row(res1, colSize, buf)
-    col = CSV::generate_row(res2, colSize, buf)
-    assert_equal(csvStrTerminated, buf)
-
-    parsed = []
-    CSV::Reader.parse(csvStrTerminated) do |row|
-      parsed << row
-    end
-
-    buf = ''
-    CSV::Writer.generate(buf) do |writer|
-      parsed.each do |row|
-       writer.add_row(row)
-      end
-    end
-    assert_equal(csvStrTerminated, buf)
-
-    buf = ''
-    CSV::Writer.generate(buf) do |writer|
-      parsed.each do |row|
-       writer << row
-      end
-    end
-    assert_equal(csvStrTerminated, buf)
-  end
-
-  def test_writer_fs_rs_generate
-    buf = ''
-    CSV::Writer.generate(buf, ",,") do |writer|
-      writer << []
-    end
-    assert_equal("\n", buf)
-
-    buf = ''
-    CSV::Writer.generate(buf, ",,") do |writer|
-      writer << [] << []
-    end
-    assert_equal("\n\n", buf)
-
-    buf = ''
-    CSV::Writer.generate(buf, ",,") do |writer|
-      writer << [1]
-    end
-    assert_equal("1\n", buf)
-
-    buf = ''
-    CSV::Writer.generate(buf, ",,") do |writer|
-      writer << [1, 2, 3]
-      writer << [4, ",,", 5]
-    end
-    assert_equal("1,,2,,3\n4,,\",,\",,5\n", buf)
-
-    buf = ''
-    CSV::Writer.generate(buf, ",,:", ",,;") do |writer|
-      writer << [nil, nil, nil]
-      writer << [nil, ",,", nil]
-    end
-    assert_equal(",,:,,:,,;,,:,,,,:,,;", buf)
-
-    buf = ''
-    CSV::Writer.generate(buf, "---") do |writer|
-      writer << [1, 2, 3]
-      writer << [4, "---\"---", 5]
-    end
-    assert_equal("1---2---3\n4---\"---\"\"---\"---5\n", buf)
-
-    buf = ''
-    CSV::Writer.generate(buf, nil) do |writer|
-      writer << [1, 2, 3]
-      writer << [4, ",\",", 5]
-    end
-    assert_equal("1,2,3\n4,\",\"\",\",5\n", buf)
-  end
-
-  def test_writer_fs_rs_parse
-    reader = CSV::Reader.create('a||b--c||d', '||', '--')
-    assert_equal(['a', 'b'], reader.shift)
-    assert_equal(['c', 'd'], reader.shift)
-
-    reader = CSV::Reader.create("a@|b@-c@|d", "@|", "@-")
-    assert_equal(['a', 'b'], reader.shift)
-    assert_equal(['c', 'd'], reader.shift)
-
-    reader = CSV::Reader.create("ababfsababrs", "abfs", "abrs")
-    assert_equal(['ab', 'ab'], reader.shift)
-
-    reader = CSV::Reader.create('"ab"abfsababrs', "abfs", "abrs")
-    assert_equal(['ab', 'ab'], reader.shift)
-
-    reader = CSV::Reader.create('"ab"aabfsababrs', "abfs", "abrs")
-    assert_raises(CSV::IllegalFormatError) do
-      reader.shift
-    end
-
-    # fs match while matching rs progress
-    reader = CSV::Reader.create("ab,ababrs", nil, "abrs")
-    assert_equal(['ab', 'ab'], reader.shift)
-
-    reader = CSV::Reader.create(',ababrs', nil, "abrs")
-    assert_equal([nil, 'ab'], reader.shift)
-
-    reader = CSV::Reader.create('"",ababrs', nil, "abrs")
-    assert_equal(['', 'ab'], reader.shift)
-
-    reader = CSV::Reader.create('ab,"ab"abrs', nil, "abrs")
-    assert_equal(['ab', 'ab'], reader.shift)
-
-    reader = CSV::Reader.create('ab,"ab"aabrs', nil, "abrs")
-    assert_raises(CSV::IllegalFormatError) do
-      reader.shift
-    end
-
-    # rs match while matching fs progress
-    reader = CSV::Reader.create("ab|abc", 'ab-', "ab|")
-    assert_equal([nil], reader.shift)
-    assert_equal(['abc'], reader.shift)
-
-    reader = CSV::Reader.create("ab\ncdabcef", "abc", "\n")
-    assert_equal(['ab'], reader.shift)
-    assert_equal(['cd', "ef"], reader.shift)
-
-    # EOF while fs/rs matching
-    reader = CSV::Reader.create("ab", 'ab-', "xyz")
-    assert_equal(['ab'], reader.shift)
-
-    reader = CSV::Reader.create("ab", 'xyz', "ab|")
-    assert_equal(['ab'], reader.shift)
-
-    reader = CSV::Reader.create("ab", 'ab-', "ab|")
-    assert_equal(['ab'], reader.shift)
-
-    reader = CSV::Reader.create(",,:,,:,,;,,:,,,,:,,;", ",,:", ",,;")
-    assert_equal([nil, nil, nil], reader.shift)
-    assert_equal([nil, ",,", nil], reader.shift)
-  end
-
-  def test_s_foreach
-    File.open(@outfile, "w") do |f|
-      f << "1,2,3\n4,5,6"
-    end
-    row = []
-    CSV.foreach(@outfile) { |line|
-      row << line
-    }
-    assert_equal([['1', '2', '3'], ['4', '5', '6']], row)
-
-    File.open(@outfile, "w") do |f|
-      f << "1,2,3\r4,5,6"
-    end
-    row = []
-    CSV.foreach(@outfile, "\r") { |line|
-      row << line
-    }
-    assert_equal([['1', '2', '3'], ['4', '5', '6']], row)
-  end
-
-  def test_s_readlines
-    File.open(@outfile, "w") do |f|
-      f << "1,2,3\n4,5,6"
-    end
-    assert_equal([["1", "2", "3"], ["4", "5", "6"]], CSV.readlines(@outfile))
-    assert_equal([["1", "2", nil], [nil, "5", "6"]], CSV.readlines(@outfile, "3\n4"))
-  end
-
-  def test_s_read
-    File.open(@outfile, "w") do |f|
-      f << "1,2,3\n4,5,6"
-    end
-    assert_equal([["1", "2", "3"], ["4", "5", "6"]], CSV.read(@outfile))
-    assert_equal([["1", "2"]], CSV.read(@outfile, 3))
-    assert_equal([[nil], ["4", nil]], CSV.read(@outfile, 3, 5))
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/dbm/test_dbm.rb b/ruby/doc/ruby/ruby-1.8.7/test/dbm/test_dbm.rb
deleted file mode 100644 (file)
index 941e139..0000000
+++ /dev/null
@@ -1,545 +0,0 @@
-require 'test/unit'
-
-begin
-  require 'dbm'
-rescue LoadError
-end
-
-if defined? DBM
-  require 'tmpdir'
-  require 'fileutils'
-
-  class TestDBM < Test::Unit::TestCase
-    def TestDBM.uname_s
-      require 'rbconfig'
-      case Config::CONFIG['target_os']
-      when 'cygwin'
-        require 'Win32API'
-        uname = Win32API.new('cygwin1', 'uname', 'P', 'I')
-        utsname = ' ' * 100
-        raise 'cannot get system name' if uname.call(utsname) == -1
-
-        utsname.unpack('A20' * 5)[0]
-      else
-        Config::CONFIG['target_os']
-      end
-    end
-    SYSTEM = uname_s
-
-    def setup
-      @path = "tmptest_dbm_"
-      assert_instance_of(DBM, @dbm = DBM.new(@path))
-
-      # prepare to make readonly DBM file
-      DBM.open("tmptest_dbm_rdonly") {|dbm|
-        dbm['foo'] = 'FOO'
-      }
-      
-      File.chmod(0400, *Dir.glob("tmptest_dbm_rdonly.*"))
-
-      assert_instance_of(DBM, @dbm_rdonly = DBM.new("tmptest_dbm_rdonly", nil))
-    end
-    def teardown
-      assert_nil(@dbm.close)
-      assert_nil(@dbm_rdonly.close)
-      ObjectSpace.each_object(DBM) do |obj|
-        obj.close unless obj.closed?
-      end
-      File.delete *Dir.glob("tmptest_dbm*").to_a
-      p Dir.glob("tmptest_dbm*") if $DEBUG
-    end
-
-    def check_size(expect, dbm=@dbm)
-      assert_equal(expect, dbm.size)
-      n = 0
-      dbm.each { n+=1 }
-      assert_equal(expect, n)
-      if expect == 0
-        assert_equal(true, dbm.empty?)
-      else
-        assert_equal(false, dbm.empty?)
-      end
-    end
-
-    def have_fork?
-      begin
-        fork{}
-        true
-      rescue NotImplementedError
-        false
-      end
-    end
-
-    def test_s_new_has_no_block
-      # DBM.new ignore the block
-      foo = true
-      assert_instance_of(DBM, dbm = DBM.new("tmptest_dbm") { foo = false })
-      assert_equal(foo, true)
-      assert_nil(dbm.close)
-    end
-    def test_s_open_no_create
-      assert_nil(dbm = DBM.open("tmptest_dbm", nil))
-    ensure
-      dbm.close if dbm
-    end
-    def test_s_open_with_block
-      assert_equal(DBM.open("tmptest_dbm") { :foo }, :foo)
-    end
-
-    def test_close
-      assert_instance_of(DBM, dbm = DBM.open("tmptest_dbm"))
-      assert_nil(dbm.close)
-
-      # closed DBM file
-      assert_raise(DBMError) { dbm.close }
-    end
-
-    def test_aref
-      assert_equal('bar', @dbm['foo'] = 'bar')
-      assert_equal('bar', @dbm['foo'])
-
-      assert_nil(@dbm['bar'])
-    end
-
-    def test_fetch
-      assert_equal('bar', @dbm['foo']='bar')
-      assert_equal('bar', @dbm.fetch('foo'))
-
-      # key not found
-      assert_raise(IndexError) {
-        @dbm.fetch('bar')
-      }
-
-      # test for `ifnone' arg
-      assert_equal('baz', @dbm.fetch('bar', 'baz'))
-
-      # test for `ifnone' block
-      assert_equal('foobar', @dbm.fetch('bar') {|key| 'foo' + key })
-    end
-
-    def test_aset
-      num = 0
-      2.times {|i|
-        assert_equal('foo', @dbm['foo'] = 'foo')
-        assert_equal('foo', @dbm['foo'])
-        assert_equal('bar', @dbm['foo'] = 'bar')
-        assert_equal('bar', @dbm['foo'])
-
-        num += 1 if i == 0
-        assert_equal(num, @dbm.size)
-
-        # assign nil
-        assert_equal('', @dbm['bar'] = '')
-        assert_equal('', @dbm['bar'])
-
-        num += 1 if i == 0
-        assert_equal(num, @dbm.size)
-
-        # empty string
-        assert_equal('', @dbm[''] = '')
-        assert_equal('', @dbm[''])
-
-        num += 1 if i == 0
-        assert_equal(num, @dbm.size)
-
-        # Fixnum
-        assert_equal('200', @dbm['100'] = '200')
-        assert_equal('200', @dbm['100'])
-
-        num += 1 if i == 0
-        assert_equal(num, @dbm.size)
-
-        # Big key and value
-        assert_equal('y' * 100, @dbm['x' * 100] = 'y' * 100)
-        assert_equal('y' * 100, @dbm['x' * 100])
-
-        num += 1 if i == 0
-        assert_equal(num, @dbm.size)
-      }
-    end
-
-    def test_index
-      assert_equal('bar', @dbm['foo'] = 'bar')
-      assert_equal('foo', @dbm.index('bar'))
-      assert_nil(@dbm['bar'])
-    end
-
-    def test_indexes
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-      @dbm[keys[0]], @dbm[keys[1]], @dbm[keys[2]] = values
-      assert_equal(values.reverse, @dbm.indexes(*keys.reverse))
-    end
-
-    def test_values_at
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-      @dbm[keys[0]], @dbm[keys[1]], @dbm[keys[2]] = values
-      assert_equal(values.reverse, @dbm.values_at(*keys.reverse))
-    end
-
-    def test_select_with_block
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-      @dbm[keys[0]], @dbm[keys[1]], @dbm[keys[2]] = values
-      ret = @dbm.select {|k,v|
-        assert_equal(k.upcase, v)
-        k != "bar"
-      }
-      assert_equal([['baz', 'BAZ'], ['foo', 'FOO']],
-                    ret.sort)
-    end
-
-    def test_length
-      num = 10
-      assert_equal(0, @dbm.size)
-      num.times {|i|
-        i = i.to_s
-        @dbm[i] = i
-      }
-      assert_equal(num, @dbm.size)
-
-      @dbm.shift
-
-      assert_equal(num - 1, @dbm.size)
-    end
-
-    def test_empty?
-      assert_equal(true, @dbm.empty?)
-      @dbm['foo'] = 'FOO'
-      assert_equal(false, @dbm.empty?)
-    end
-
-    def test_each_pair
-      n = 0
-      @dbm.each_pair { n += 1 }
-      assert_equal(0, n)
-
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-
-      @dbm[keys[0]], @dbm[keys[1]], @dbm[keys[2]] = values
-
-      n = 0
-      ret = @dbm.each_pair {|key, val|
-        assert_not_nil(i = keys.index(key))
-        assert_equal(val, values[i])
-
-        n += 1
-      }
-      assert_equal(keys.size, n)
-      assert_equal(@dbm, ret)
-    end
-
-    def test_each_value
-      n = 0
-      @dbm.each_value { n += 1 }
-      assert_equal(0, n)
-
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-
-      @dbm[keys[0]], @dbm[keys[1]], @dbm[keys[2]] = values
-
-      n = 0
-      ret = @dbm.each_value {|val|
-        assert_not_nil(key = @dbm.index(val))
-        assert_not_nil(i = keys.index(key))
-        assert_equal(val, values[i])
-
-        n += 1
-      }
-      assert_equal(keys.size, n)
-      assert_equal(@dbm, ret)
-    end
-
-    def test_each_key
-      n = 0
-      @dbm.each_key { n += 1 }
-      assert_equal(0, n)
-
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-
-      @dbm[keys[0]], @dbm[keys[1]], @dbm[keys[2]] = values
-
-      n = 0
-      ret = @dbm.each_key {|key|
-        assert_not_nil(i = keys.index(key))
-        assert_equal(@dbm[key], values[i])
-
-        n += 1
-      }
-      assert_equal(keys.size, n)
-      assert_equal(@dbm, ret)
-    end
-
-    def test_keys
-      assert_equal([], @dbm.keys)
-
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-
-      @dbm[keys[0]], @dbm[keys[1]], @dbm[keys[2]] = values
-
-      assert_equal(keys.sort, @dbm.keys.sort)
-      assert_equal(values.sort, @dbm.values.sort)
-    end
-
-    def test_values
-      test_keys
-    end
-
-    def test_shift
-      assert_nil(@dbm.shift)
-      assert_equal(0, @dbm.size)
-
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-
-      @dbm[keys[0]], @dbm[keys[1]], @dbm[keys[2]] = values
-
-      ret_keys = []
-      ret_values = []
-      while ret = @dbm.shift
-        ret_keys.push ret[0]
-        ret_values.push ret[1]
-
-        assert_equal(keys.size - ret_keys.size, @dbm.size)
-      end
-
-      assert_equal(keys.sort, ret_keys.sort)
-      assert_equal(values.sort, ret_values.sort)
-    end
-
-    def test_delete
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-      key = keys[1]
-
-      assert_nil(@dbm.delete(key))
-      assert_equal(0, @dbm.size)
-
-      @dbm[keys[0]], @dbm[keys[1]], @dbm[keys[2]] = values
-
-      assert_equal('BAR', @dbm.delete(key))
-      assert_nil(@dbm[key])
-      assert_equal(2, @dbm.size)
-
-      assert_nil(@dbm.delete(key))
-
-      if /^CYGWIN_9/ !~ SYSTEM
-        assert_raise(DBMError) {
-          @dbm_rdonly.delete("foo")
-        }
-
-        assert_nil(@dbm_rdonly.delete("bar"))
-      end
-    end
-    def test_delete_with_block
-      key = 'no called block'
-      @dbm[key] = 'foo'
-      assert_equal('foo', @dbm.delete(key) {|k| k.replace 'called block'})
-      assert_equal('no called block', key)
-      assert_equal(0, @dbm.size)
-
-      key = 'no called block'
-      assert_equal(:blockval,
-                    @dbm.delete(key) {|k| k.replace 'called block'; :blockval})
-      assert_equal('called block', key)
-      assert_equal(0, @dbm.size)
-    end
-
-    def test_delete_if
-      v = "0"
-      100.times {@dbm[v] = v; v = v.next}
-
-      ret = @dbm.delete_if {|key, val| key.to_i < 50}
-      assert_equal(@dbm, ret)
-      check_size(50, @dbm)
-
-      ret = @dbm.delete_if {|key, val| key.to_i >= 50}
-      assert_equal(@dbm, ret)
-      check_size(0, @dbm)
-
-      # break
-      v = "0"
-      100.times {@dbm[v] = v; v = v.next}
-      check_size(100, @dbm)
-      n = 0;
-      @dbm.delete_if {|key, val|
-        break if n > 50
-        n+=1
-        true
-      }
-      assert_equal(51, n)
-      check_size(49, @dbm)
-
-      @dbm.clear
-
-      # raise
-      v = "0"
-      100.times {@dbm[v] = v; v = v.next}
-      check_size(100, @dbm)
-      n = 0;
-      begin
-        @dbm.delete_if {|key, val|
-          raise "runtime error" if n > 50
-          n+=1
-          true
-        }
-      rescue
-      end
-      assert_equal(51, n)
-      check_size(49, @dbm)
-    end
-
-    def test_reject
-      v = "0"
-      100.times {@dbm[v] = v; v = v.next}
-
-      hash = @dbm.reject {|key, val| key.to_i < 50}
-      assert_instance_of(Hash, hash)
-      assert_equal(100, @dbm.size)
-
-      assert_equal(50, hash.size)
-      hash.each_pair {|key,val|
-        assert_equal(false, key.to_i < 50)
-        assert_equal(key, val)
-      }
-
-      hash = @dbm.reject {|key, val| key.to_i < 100}
-      assert_instance_of(Hash, hash)
-      assert_equal(true, hash.empty?)
-    end
-
-    def test_clear
-      v = "1"
-      100.times {v = v.next; @dbm[v] = v}
-
-      assert_equal(@dbm, @dbm.clear)
-
-      # validate DBM#size
-      i = 0
-      @dbm.each { i += 1 }
-      assert_equal(@dbm.size, i)
-      assert_equal(0, i)
-    end
-
-    def test_invert
-      v = "0"
-      100.times {@dbm[v] = v; v = v.next}
-
-      hash = @dbm.invert
-      assert_instance_of(Hash, hash)
-      assert_equal(100, hash.size)
-      hash.each_pair {|key, val|
-        assert_equal(key.to_i, val.to_i)
-      }
-    end
-
-    def test_update
-      hash = {}
-      v = "0"
-      100.times {v = v.next; hash[v] = v}
-
-      @dbm["101"] = "101"
-      @dbm.update hash
-      assert_equal(101, @dbm.size)
-      @dbm.each_pair {|key, val|
-        assert_equal(key.to_i, val.to_i)
-      }
-    end
-
-    def test_replace
-      hash = {}
-      v = "0"
-      100.times {v = v.next; hash[v] = v}
-
-      @dbm["101"] = "101"
-      @dbm.replace hash
-      assert_equal(100, @dbm.size)
-      @dbm.each_pair {|key, val|
-        assert_equal(key.to_i, val.to_i)
-      }
-    end
-
-    def test_haskey?
-      assert_equal('bar', @dbm['foo']='bar')
-      assert_equal(true,  @dbm.has_key?('foo'))
-      assert_equal(false, @dbm.has_key?('bar'))
-    end
-
-    def test_has_value?
-      assert_equal('bar', @dbm['foo']='bar')
-      assert_equal(true,  @dbm.has_value?('bar'))
-      assert_equal(false, @dbm.has_value?('foo'))
-    end
-
-    def test_to_a
-      v = "0"
-      100.times {v = v.next; @dbm[v] = v}
-
-      ary = @dbm.to_a
-      assert_instance_of(Array, ary)
-      assert_equal(100, ary.size)
-      ary.each {|key,val|
-        assert_equal(key.to_i, val.to_i)
-      }
-    end
-
-    def test_to_hash
-      v = "0"
-      100.times {v = v.next; @dbm[v] = v}
-
-      hash = @dbm.to_hash
-      assert_instance_of(Hash, hash)
-      assert_equal(100, hash.size)
-      hash.each {|key,val|
-        assert_equal(key.to_i, val.to_i)
-      }
-    end
-  end
-
-  class TestDBM2 < Test::Unit::TestCase
-    TMPROOT = "#{Dir.tmpdir}/ruby-dbm.#{$$}"
-
-    def setup
-      Dir.mkdir TMPROOT
-    end
-
-    def teardown
-      FileUtils.rm_rf TMPROOT if File.directory?(TMPROOT)
-    end
-
-    def test_reader_open
-      DBM.open("#{TMPROOT}/a") {}
-      v = DBM.open("#{TMPROOT}/a", nil, DBM::READER) {|d|
-        # Errno::EPERM is raised on Solaris which use ndbm.
-        # DBMError is raised on Debian which use gdbm. 
-        assert_raises(Errno::EPERM, DBMError) { d["k"] = "v" }
-        true
-      }
-      assert(v)
-    end
-
-    def test_newdb_open
-      DBM.open("#{TMPROOT}/a") {|dbm|
-        dbm["k"] = "v"
-      }
-      v = DBM.open("#{TMPROOT}/a", nil, DBM::NEWDB) {|d|
-        assert_equal(0, d.length)
-        assert_nil(d["k"])
-        true
-      }
-      assert(v)
-    end
-
-    def test_freeze
-      DBM.open("#{TMPROOT}/a") {|d|
-        d.freeze
-        assert_raises(TypeError) { d["k"] = "v" }
-      }
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/digest/test_digest.rb b/ruby/doc/ruby/ruby-1.8.7/test/digest/test_digest.rb
deleted file mode 100644 (file)
index 4b8b49f..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/env ruby
-#
-# $RoughId: test.rb,v 1.4 2001/07/13 15:38:27 knu Exp $
-# $Id: test_digest.rb 11708 2007-02-12 23:01:19Z shyouhei $
-
-require 'test/unit'
-
-require 'digest'
-%w[digest/md5 digest/rmd160 digest/sha1 digest/sha2].each do |lib|
-  begin
-    require lib
-  rescue LoadError
-  end
-end
-
-module TestDigest
-  Data1 = "abc"
-  Data2 = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
-
-  def test_s_hexdigest
-    self.class::DATA.each do |str, digest|
-      assert_equal(digest, self.class::ALGO.hexdigest(str))
-    end
-  end
-
-  def test_s_digest
-    self.class::DATA.each do |str, digest|
-      assert_equal([digest].pack("H*"), self.class::ALGO.digest(str))
-    end
-  end
-
-  def test_update
-    # This test is also for digest() and hexdigest()
-
-    str = "ABC"
-
-    md = self.class::ALGO.new
-    md.update str
-    assert_equal(self.class::ALGO.hexdigest(str), md.hexdigest)
-    assert_equal(self.class::ALGO.digest(str), md.digest)
-  end
-
-  def test_eq
-    # This test is also for clone()
-
-    md1 = self.class::ALGO.new
-    md1 << "ABC"
-
-    assert_equal(md1, md1.clone, self.class::ALGO)
-
-    md2 = self.class::ALGO.new
-    md2 << "A"
-
-    assert(md1 != md2, self.class::ALGO)
-
-    md2 << "BC"
-
-    assert_equal(md1, md2, self.class::ALGO)
-  end
-
-  def test_instance_eval
-    assert_nothing_raised {
-      self.class::ALGO.new.instance_eval { update "a" }
-    }
-  end
-
-  class TestMD5 < Test::Unit::TestCase
-    include TestDigest
-    ALGO = Digest::MD5
-    DATA = {
-      Data1 => "900150983cd24fb0d6963f7d28e17f72",
-      Data2 => "8215ef0796a20bcaaae116d3876c664a",
-    }
-  end if defined?(Digest::MD5)
-
-  class TestSHA1 < Test::Unit::TestCase
-    include TestDigest
-    ALGO = Digest::SHA1
-    DATA = {
-      Data1 => "a9993e364706816aba3e25717850c26c9cd0d89d",
-      Data2 => "84983e441c3bd26ebaae4aa1f95129e5e54670f1",
-    }
-  end if defined?(Digest::SHA1)
-
-  class TestSHA256 < Test::Unit::TestCase
-    include TestDigest
-    ALGO = Digest::SHA256
-    DATA = {
-      Data1 => "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad",
-      Data2 => "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1",
-    }
-  end if defined?(Digest::SHA256)
-
-  class TestSHA384 < Test::Unit::TestCase
-    include TestDigest
-    ALGO = Digest::SHA384
-    DATA = {
-      Data1 => "cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7",
-      Data2 => "3391fdddfc8dc7393707a65b1b4709397cf8b1d162af05abfe8f450de5f36bc6b0455a8520bc4e6f5fe95b1fe3c8452b",
-    }
-  end if defined?(Digest::SHA384)
-
-  class TestSHA512 < Test::Unit::TestCase
-    include TestDigest
-    ALGO = Digest::SHA512
-    DATA = {
-      Data1 => "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f",
-      Data2 => "204a8fc6dda82f0a0ced7beb8e08a41657c16ef468b228a8279be331a703c33596fd15c13b1b07f9aa1d3bea57789ca031ad85c7a71dd70354ec631238ca3445",
-    }
-  end if defined?(Digest::SHA512)
-
-  class TestRMD160 < Test::Unit::TestCase
-    include TestDigest
-    ALGO = Digest::RMD160
-    DATA = {
-      Data1 => "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc",
-      Data2 => "12a053384a9c0c88e405a06c27dcf49ada62eb2b",
-    }
-  end if defined?(Digest::RMD160)
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/dl/libtest.def b/ruby/doc/ruby/ruby-1.8.7/test/dl/libtest.def
deleted file mode 100644 (file)
index 8ecefc9..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-EXPORTS
-test_alloc_test_struct
-test_append
-test_arylen
-test_c2i
-test_call_func1
-test_callback1
-test_close
-test_d2f
-test_f2d
-test_fill_test_struct
-test_fill_test_union
-test_gets
-test_i2c
-test_init
-test_isucc
-test_lcc
-test_lsucc
-test_open
-test_strcat
-test_strlen
-test_succ
-test_data_init
-test_data_add
-test_data_aref
-test_set_long_value
-test_get_long_value
-internal_long_value
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/dl/test.c b/ruby/doc/ruby/ruby-1.8.7/test/dl/test.c
deleted file mode 100644 (file)
index 7321379..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-
-static char internal_string[] = "internal_string";
-long internal_long_value = 100;
-
-struct test_struct {
-  char c;
-  long l;
-};
-
-union test_union {
-  char c;
-  int  i;
-  long l;
-  void *p;
-};
-
-struct test_data {
-  char name[1024];
-  struct test_data *next;
-};
-
-long
-test_get_long_value()
-{
-  return internal_long_value;
-};
-
-void
-test_set_long_value(long l)
-{
-  internal_long_value = l;
-};
-
-void
-test_fill_test_struct(struct test_struct *ptr, char c, long l)
-{
-  ptr->c = c;
-  ptr->l = l;
-};
-
-void
-test_fill_test_union(union test_union *ptr, long l)
-{
-  ptr->l = l;
-};
-
-struct test_struct *
-test_alloc_test_struct(char c, long l)
-{
-  struct test_struct *data;
-
-  data = (struct test_struct *)malloc(sizeof(struct test_struct));
-  data->c = c;
-  data->l = l;
-
-  return data;
-};
-
-int
-test_c2i(char c)
-{
-  return (int)c;
-};
-
-char
-test_i2c(int i)
-{
-  return (char)i;
-};
-
-long
-test_lcc(char c1, char c2)
-{
-  return (long)(c1 + c2);
-};
-
-double
-test_f2d(float f)
-{
-  double d;
-  d = f;
-  return d;
-};
-
-float
-test_d2f(double d)
-{
-  float f;
-  f = d;
-  return f;
-};
-
-int
-test_strlen(const char *str)
-{
-  return strlen(str);
-};
-
-int
-test_isucc(int i)
-{
-  return (i+1);
-};
-
-long
-test_lsucc(long l)
-{
-  return (l+1);
-};
-
-void
-test_succ(long *l)
-{
-  (*l)++;
-};
-
-char *
-test_strcat(char *str1, const char *str2)
-{
-  return strcat(str1, str2);
-};
-
-int
-test_arylen(char *ary[])
-{
-  int i;
-  for( i=0; ary[i]; i++ ){};
-  return i;
-};
-
-void
-test_append(char *ary[], int len, char *astr)
-{
-  int i;
-  int size1,size2;
-  char *str;
-
-  size2 = strlen(astr);
-
-  for( i=0; i <= len - 1; i++ ){
-    size1 = strlen(ary[i]);
-    str = (char*)malloc(size1 + size2 + 1);
-    strcpy(str, ary[i]);
-    strcat(str, astr);
-    ary[i] = str;
-  };
-};
-
-int
-test_init(int *argc, char **argv[])
-{
-  int i;
-  char s[256];
-
-  for( i=0; i < (*argc); i++ ){
-    sprintf(s, "arg%d", i);
-    if( strcmp((*argv)[i], s) != 0 ){
-      return 1;
-    }
-  }
-  return 0;
-}
-
-FILE *
-test_open(const char *filename, const char *mode)
-{
-  FILE *file;
-  file = fopen(filename,mode);
-  return file;
-};
-
-void
-test_close(FILE *file)
-{
-  fclose(file);
-};
-
-char *
-test_gets(char *s, int size, FILE *f)
-{
-  return fgets(s,size,f);
-};
-
-typedef int callback1_t(int, char *);
-#define CALLBACK_MSG "callback message"
-
-int
-test_callback1(int err, const char *msg)
-{
-  if( strcmp(msg, CALLBACK_MSG) == 0 ){
-    return 1;
-  }
-  else{
-    return 0;
-  }
-}
-
-int
-test_call_func1(callback1_t *func)
-{
-  if( func ){
-    return (*func)(0, CALLBACK_MSG);
-  }
-  else{
-    return 0;
-  }
-}
-
-struct test_data *
-test_data_init()
-{
-  struct test_data *data;
-
-  data = (struct test_data *)malloc(sizeof(struct test_data));
-  data->next = NULL;
-  memset(data->name, 0, 1024);
-
-  return data;
-};
-
-void
-test_data_add(struct test_data *list, const char *name)
-{
-  struct test_data *data;
-
-  data = (struct test_data *)malloc(sizeof(struct test_data));
-  memset(data->name, 0, 1024);
-  strncpy(data->name, name, 1024);
-  data->next = list->next;
-  list->next = data;
-};
-
-struct test_data *
-test_data_aref(struct test_data *list, int i)
-{
-  struct test_data *data;
-  int j;
-
-  for( data = list->next, j=0; data; data = data->next, j++ ){
-    if( i == j ){
-      return data;
-    };
-  };
-  return NULL;
-};
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/dl/test.rb b/ruby/doc/ruby/ruby-1.8.7/test/dl/test.rb
deleted file mode 100644 (file)
index bf8dfc1..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
-# -*- ruby -*-
-
-require 'dl'
-require 'dl/import'
-
-$FAIL = 0
-$TOTAL = 0
-
-def assert(label, ty, *conds)
-  $TOTAL += 1
-  cond = !conds.include?(false)
-  if( cond )
-    printf("succeed in `#{label}'\n")
-  else
-    $FAIL += 1
-    case ty
-    when :may
-      printf("fail in `#{label}' ... expected\n")
-    when :must
-      printf("fail in `#{label}' ... unexpected\n")
-    when :raise
-      raise(RuntimeError, "fail in `#{label}'")
-    end
-  end
-end
-
-def debug(*xs)
-  if( $DEBUG )
-    xs.each{|x|
-      p x
-    }
-  end
-end
-
-print("DLSTACK   = #{DL::DLSTACK}\n")
-print("MAX_ARG   = #{DL::MAX_ARG}\n")
-print("\n")
-print("DL::FREE = #{DL::FREE.inspect}\n")
-print("\n")
-
-$LIB = nil
-if( !$LIB && File.exist?("libtest.so") )
-  $LIB = "./libtest.so"
-end
-if( !$LIB && File.exist?("test/libtest.so") )
-  $LIB = "./test/libtest.so"
-end
-
-module LIBTest
-  extend DL::Importable
-
-  dlload($LIB)
-  extern "int test_c2i(char)"
-  extern "char test_i2c(int)"
-  extern "long test_lcc(char, char)"
-  extern "double test_f2d(float)"
-  extern "float test_d2f(double)"
-  extern "int test_strlen(char*)"
-  extern "int test_isucc(int)"
-  extern "long test_lsucc(long)"
-  extern "void test_succ(long *)"
-  extern "int test_arylen(int [])"
-  extern "void test_append(char*[], int, char *)"
-end
-
-DL.dlopen($LIB){|h|
-  c2i = h["test_c2i","IC"]
-  debug c2i
-  r,rs = c2i[?a]
-  debug r,rs
-  assert("c2i", :may, r == ?a)
-  assert("extern c2i", :must, r == LIBTest.test_c2i(?a))
-
-  i2c = h["test_i2c","CI"]
-  debug i2c
-  r,rs = i2c[?a]
-  debug r,rs
-  assert("i2c", :may, r == ?a)
-  assert("exern i2c", :must, r == LIBTest.test_i2c(?a))
-
-  lcc = h["test_lcc","LCC"]
-  debug lcc
-  r,rs = lcc[1,2]
-  assert("lcc", :may, r == 3)
-  assert("extern lcc", :must, r == LIBTest.test_lcc(1,2))
-
-  f2d = h["test_f2d","DF"]
-  debug f2d
-  r,rs = f2d[20.001]
-  debug r,rs
-  assert("f2d", :may, r.to_i == 20)
-  assert("extern f2d", :must, r = LIBTest.test_f2d(20.001))
-
-  d2f = h["test_d2f","FD"]
-  debug d2f
-  r,rs = d2f[20.001]
-  debug r,rs
-  assert("d2f", :may, r.to_i == 20)
-  assert("extern d2f", :must, r == LIBTest.test_d2f(20.001))
-
-  strlen = h["test_strlen","IS"]
-  debug strlen
-  r,rs = strlen["0123456789"]
-  debug r,rs
-  assert("strlen", :must, r == 10)
-  assert("extern strlen", :must, r == LIBTest.test_strlen("0123456789"))
-
-  isucc = h["test_isucc","II"]
-  debug isucc
-  r,rs = isucc[2]
-  debug r,rs
-  assert("isucc", :must, r == 3)
-  assert("extern isucc", :must, r == LIBTest.test_isucc(2))
-
-  lsucc = h["test_lsucc","LL"]
-  debug lsucc
-  r,rs = lsucc[10000000]
-  debug r,rs
-  assert("lsucc", :must, r == 10000001)
-  assert("extern lsucc", :must, r == LIBTest.test_lsucc(10000000))
-
-  succ = h["test_succ","0l"]
-  debug succ
-  r,rs = succ[0]
-  debug r,rs
-  assert("succ", :must, rs[0] == 1)
-  l = DL.malloc(DL.sizeof("L"))
-  l.struct!("L",:lval)
-  LIBTest.test_succ(l)
-  assert("extern succ", :must, rs[0] == l[:lval])
-
-  arylen = h["test_arylen","IA"]
-  debug arylen
-  r,rs = arylen[["a","b","c","d",nil]]
-  debug r,rs
-  assert("arylen", :must, r == 4)
-
-  arylen = h["test_arylen","IP"]
-  debug arylen
-  r,rs = arylen[["a","b","c","d",nil]]
-  debug r,rs
-  assert("arylen", :must, r == 4)
-  assert("extern arylen", :must, r == LIBTest.test_arylen(["a","b","c","d",nil]))
-
-  append = h["test_append","0aIS"]
-  debug append
-  r,rs = append[["a","b","c"],3,"x"]
-  debug r,rs
-  assert("append", :must, rs[0].to_a('S',3) == ["ax","bx","cx"])
-
-  LIBTest.test_append(["a","b","c"],3,"x")
-  assert("extern append", :must, rs[0].to_a('S',3) == LIBTest._args_[0].to_a('S',3))
-
-  strcat = h["test_strcat","SsS"]
-  debug strcat
-  r,rs = strcat["abc\0","x"]
-  debug r,rs
-  assert("strcat", :must, rs[0].to_s == "abcx")
-
-  init = h["test_init","IiP"]
-  debug init
-  argc = 3
-  argv = ["arg0","arg1","arg2"].to_ptr
-  r,rs = init[argc, argv.ref]
-  assert("init", :must, r == 0)
-}
-
-
-h = DL.dlopen($LIB)
-
-sym_open = h["test_open", "PSS"]
-sym_gets = h["test_gets", "SsIP"]
-sym_close = h["test_close", "0P"]
-debug sym_open,sym_gets,sym_close
-
-line = "Hello world!\n"
-File.open("tmp.txt", "w"){|f|
-  f.print(line)
-}
-
-fp,rs = sym_open["tmp.txt", "r"]
-if( fp )
-  fp.free = sym_close
-  r,rs = sym_gets[" " * 256, 256, fp]
-  debug r,rs
-  assert("open,gets", :must, rs[0] == line)
-  ObjectSpace.define_finalizer(fp) {File.unlink("tmp.txt")}
-  fp = nil
-else
-  assert("open,gets", :must, line == nil)
-  File.unlink("tmp.txt")
-end
-
-
-callback1 = h["test_callback1"]
-debug callback1
-r,rs = h["test_call_func1", "IP"][callback1]
-debug r,rs
-assert("callback1", :must, r == 1)
-
-
-callback2 = DL.callback("LLP"){|num,ptr|
-  msg = ptr.to_s
-  if( msg == "callback message" )
-    2
-  else
-    0
-  end
-}
-debug callback2
-r,rs = h["test_call_func1", "IP"][callback2]
-debug r,rs
-assert("callback2", :must, r == 2)
-DL.remove_callback(callback2)
-
-ptr = DL.malloc(DL.sizeof('CL'))
-ptr.struct!("CL", :c, :l)
-ptr["c"] = 0
-ptr["l"] = 0
-r,rs = h["test_fill_test_struct","0PIL"][ptr,100,1000]
-debug r,rs
-assert("fill_test_struct", :must, ptr["c"] == 100, ptr["l"] == 1000)
-assert("fill_test_struct", :must, ptr[:c] == 100, ptr[:l] == 1000) unless (Fixnum === :-)
-
-
-r,rs = h["test_alloc_test_struct", "PIL"][100,200]
-r.free = DL::FREE
-r.struct!("CL", :c, :l)
-assert("alloc_test_struct", :must, r["c"] == 100, r["l"] == 200)
-assert("alloc_test_struct", :must, r[:c] == 100, r[:l] == 200) unless (Fixnum === :-)
-
-ptr = h["test_strlen"]
-sym1 = DL::Symbol.new(ptr,"foo","0")
-sym2 = h["test_strlen","LS"]
-assert("Symbol.new", :must, ptr == sym1.to_ptr, sym1.to_ptr == sym2.to_ptr)
-
-set_val = h["test_set_long_value","0"]
-get_val = h["test_get_long_value","L"]
-lval = get_val[][0]
-ptr = h["internal_long_value"]
-ptr.struct!("L", :l)
-assert("get value", :must, ptr["l"] == lval)
-assert("get value", :must, ptr[:l] == lval) unless (Fixnum === :-)
-ptr["l"] = 200
-lval = get_val[][0]
-assert("set value", :must, ptr["l"] == lval)
-assert("set value", :must, ptr[:l] == lval) unless (Fixnum === :-)
-
-
-data_init = h["test_data_init", "P"]
-data_add  = h["test_data_add", "0PS"]
-data_aref = h["test_data_aref", "PPI"]
-r,rs = data_init[]
-ptr = r
-data_add[ptr, "name1"]
-data_add[ptr, "name2"]
-data_add[ptr, "name3"]
-
-r,rs = data_aref[ptr, 1]
-ptr = r
-ptr.struct!("C1024P", :name, :next)
-assert("data_aref", :must,
-       ptr["name"].collect{|c| c.chr}.join.split("\0")[0] == "name2")
-assert("data_aref", :must,
-       ptr["name"].collect{|c| c.chr}.join.split("\0")[0] == "name2") unless (Fixnum === :-)
-
-ptr = ptr["next"]
-ptr.struct!("C1024P", :name, :next)
-assert("data_aref", :must,
-       ptr["name"].collect{|c| c.chr}.join.split("\0")[0] == "name1")
-assert("data_aref", :must,
-       ptr["name"].collect{|c| c.chr}.join.split("\0")[0] == "name1") unless (Fixnum === :-)
-
-GC.start
-
-ptr = DL::malloc(32)
-ptr.struct!("CHIL", "c", "h", "i", "l")
-ptr["c"] = 1
-ptr["h"] = 2
-ptr["i"] = 3
-ptr["l"] = 4
-assert("struct!", :must,
-       ptr["c"] == 1 &&
-       ptr["h"] == 2 &&
-       ptr["i"] == 3 &&
-       ptr["l"] == 4)
-
-ptr = DL::malloc(DL::sizeof("IP"))
-ptr.struct!("IP", "n", "ptr")
-ptr["n"] = 10
-ptr["ptr"] = nil
-assert("struct!", :must, ptr["n"] == 10 && ptr["ptr"] == nil)
-
-ptr = DL::malloc(16)
-ptr.struct!("CICI", "c1", "i1", "c2", "i2")
-ptr["c1"] = 0xf1
-ptr["c2"] = 0xf2
-c1 = [ptr["c1"]].pack("c").unpack("C")[0]
-c2 = [ptr["c2"]].pack("c").unpack("C")[0]
-assert("struct!", :must,
-  c1 == 0xf1 &&
-  c2 == 0xf2)
-
-
-GC.start
-printf("fail/total = #{$FAIL}/#{$TOTAL}\n")
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/drbtest.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/drbtest.rb
deleted file mode 100644 (file)
index bc16ab1..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-require 'test/unit'
-require 'drb/drb'
-require 'drb/extservm'
-require 'timeout'
-begin
-  loadpath = $:.dup
-  $:.replace($: | [File.expand_path("../ruby", File.dirname(__FILE__))])
-  require 'envutil'
-ensure
-  $:.replace(loadpath)
-end
-
-class DRbService
-  @@manager = DRb::ExtServManager.new
-  @@ruby = EnvUtil.rubybin
-  @@ruby += " -d" if $DEBUG
-  def self.add_service_command(nm)
-    dir = File.dirname(File.expand_path(__FILE__))
-    DRb::ExtServManager.command[nm] = "\"#{@@ruby}\" \"#{dir}/#{nm}\""
-  end
-
-  %w(ut_drb.rb ut_array.rb ut_port.rb ut_large.rb ut_safe1.rb ut_eval.rb).each do |nm|
-    add_service_command(nm)
-  end
-  @server = @@server = DRb::DRbServer.new('druby://localhost:0', @@manager, {})
-  @@manager.uri = @@server.uri
-  def self.manager
-    @@manager
-  end
-  def self.server
-    @server || @@server
-  end
-  def self.ext_service(name)
-    timeout(100, RuntimeError) do
-      manager.service(name)
-    end
-  end
-end
-
-class Onecky
-  include DRbUndumped
-  def initialize(n)
-    @num = n
-  end
-
-  def to_i
-    @num.to_i
-  end
-
-  def sleep(n)
-    Kernel.sleep(n)
-    to_i
-  end
-end
-
-class FailOnecky < Onecky
-  class OneckyError < RuntimeError; end
-  def to_i
-    raise(OneckyError, @num.to_s)
-  end
-end
-
-class XArray < Array
-  def initialize(ary)
-    ary.each do |x|
-      self.push(x)
-    end
-  end
-end
-
-module DRbCore
-  def setup
-    @ext = DRbService.ext_service('ut_drb.rb')
-    @there = @ext.front
-  end
-
-  def teardown
-    @ext.stop_service if @ext
-  end
-
-  def test_00_DRbObject
-    ro = DRbObject.new(nil, 'druby://localhost:12345')
-    assert_equal('druby://localhost:12345', ro.__drburi)
-    assert_equal(nil, ro.__drbref)
-
-    ro = DRbObject.new_with_uri('druby://localhost:12345')
-    assert_equal('druby://localhost:12345', ro.__drburi)
-    assert_equal(nil, ro.__drbref)
-
-    ro = DRbObject.new_with_uri('druby://localhost:12345?foobar')
-    assert_equal('druby://localhost:12345', ro.__drburi)
-    assert_equal(DRb::DRbURIOption.new('foobar'), ro.__drbref)
-  end
-
-  def test_01
-    assert_equal("hello", @there.hello)
-    onecky = Onecky.new('3')
-    assert_equal(6, @there.sample(onecky, 1, 2))
-    ary = @there.to_a
-    assert_kind_of(DRb::DRbObject, ary)
-    
-    assert(@there.respond_to?(:to_a, true))
-    assert(@there.respond_to?(:eval, true))
-    assert(! @there.respond_to?(:eval, false))
-    assert(! @there.respond_to?(:eval))
-  end
-
-  def test_01_02_loop
-    onecky = Onecky.new('3')
-    50.times do
-      assert_equal(6, @there.sample(onecky, 1, 2))
-      ary = @there.to_a
-      assert_kind_of(DRb::DRbObject, ary)
-    end
-  end
-
-  def test_02_unknown
-    obj = @there.unknown_class
-    assert_kind_of(DRb::DRbUnknown, obj)
-    assert_equal('Unknown2', obj.name)
-
-    obj = @there.unknown_module
-    assert_kind_of(DRb::DRbUnknown, obj)
-    if RUBY_VERSION >= '1.8'
-      assert_equal('DRbEx::', obj.name)
-    else
-      assert_equal('DRbEx', obj.name)
-    end
-
-    assert_raises(DRb::DRbUnknownError) do
-      @there.unknown_error
-    end
-
-    onecky = FailOnecky.new('3')
-
-    assert_raises(FailOnecky::OneckyError) do
-      @there.sample(onecky, 1, 2)
-    end
-  end
-
-  def test_03
-    assert_equal(8, @there.sum(1, 1, 1, 1, 1, 1, 1, 1))
-    assert_raises(ArgumentError) do
-      @there.sum(1, 1, 1, 1, 1, 1, 1, 1, 1)
-    end
-    assert_raises(DRb::DRbConnError) do
-      @there.sum('1' * 4096)
-    end
-  end
-
-  def test_04
-    assert_respond_to(@there, 'sum')
-    assert(!(@there.respond_to? "foobar"))
-  end
-
-  def test_05_eq
-    a = @there.to_a[0]
-    b = @there.to_a[0]
-    assert(a.object_id != b.object_id)
-    assert(a == b)
-    assert_equal(a, b)
-    assert(a == @there)
-    assert_equal(a.hash, b.hash)
-    assert_equal(a.hash, @there.hash)
-    assert(a.eql?(b))
-    assert(a.eql?(@there))
-  end
-
-  def test_06_timeout
-    ten = Onecky.new(10)
-    assert_raises(TimeoutError) do
-      @there.do_timeout(ten)
-    end
-    assert_raises(TimeoutError) do
-      @there.do_timeout(ten)
-    end
-  end
-
-  def test_07_public_private_protected_missing
-    assert_nothing_raised() {
-      begin
-       @there.method_missing(:eval)
-      rescue NoMethodError
-       assert_match(/^private method \`eval\'/, $!.message)
-      end
-    }
-    assert_nothing_raised() {
-      begin
-        @there.call_private_method
-      rescue NoMethodError
-        assert_equal(NoMethodError, $!.class)
-       assert_match(/^private method \`call_private_method\'/, $!.message)
-      end
-    }
-    assert_nothing_raised() {
-      begin
-        @there.call_protected_method
-      rescue NoMethodError
-        assert_equal(NoMethodError, $!.class)
-       assert_match(/^protected method \`call_protected_method\'/, $!.message)
-      end
-    }
-    assert_nothing_raised() {
-      begin
-       @there.method_missing(:undefined_method_test)
-      rescue NoMethodError
-        assert_equal(NoMethodError, $!.class)
-       assert_match(/^undefined method \`undefined_method_test\'/, $!.message)
-      end
-    }
-    assert_raises(SecurityError) do
-      @there.method_missing(:__send__, :to_s)
-    end
-    assert_equal(true, @there.missing)
-  end
-
-  def test_08_here
-    ro = DRbObject.new(nil, DRb.uri)
-    assert_kind_of(String, ro.to_s)
-
-    ro = DRbObject.new_with_uri(DRb.uri)
-    assert_kind_of(String, ro.to_s)
-  end
-
-  def uri_concat_option(uri, opt)
-    "#{uri}?#{opt}"
-  end
-
-  def test_09_option
-    uri = uri_concat_option(@there.__drburi, "foo")
-    ro = DRbObject.new_with_uri(uri)
-    assert_equal(ro.__drburi, @there.__drburi)
-    assert_equal(3, ro.size)
-
-    uri = uri_concat_option(@there.__drburi, "")
-    ro = DRbObject.new_with_uri(uri)
-    assert_equal(ro.__drburi, @there.__drburi)
-    assert_equal(DRb::DRbURIOption.new(''), ro.__drbref)
-
-    uri = uri_concat_option(@there.__drburi, "hello?world")
-    ro = DRbObject.new_with_uri(uri)
-    assert_equal(DRb::DRbURIOption.new('hello?world'), ro.__drbref)
-
-    uri = uri_concat_option(@there.__drburi, "?hello?world")
-    ro = DRbObject.new_with_uri(uri)
-    assert_equal(DRb::DRbURIOption.new('?hello?world'), ro.__drbref)
-  end
-
-  def test_10_yield
-    @there.simple_hash.each do |k, v|
-      assert_kind_of(String, k)
-      assert_kind_of(Symbol, v)
-    end
-  end
-
-  def test_10_yield_undumped
-    @there.xarray2_hash.each do |k, v|
-      assert_kind_of(String, k)
-      assert_kind_of(DRbObject, v)
-    end
-  end
-
-  def test_11_remote_no_method_error
-    assert_raises(DRb::DRbRemoteError) do
-      @there.remote_no_method_error
-    end
-    begin
-      @there.remote_no_method_error
-    rescue
-      error = $!
-      assert_match(/^undefined method .*\(NoMethodError\)/, error.message)
-      assert_equal('NoMethodError', error.reason)
-    end
-  end
-end
-
-module DRbAry
-  def setup
-    @ext = DRbService.ext_service('ut_array.rb')
-    @there = @ext.front
-  end
-
-  def teardown
-    @ext.stop_service if @ext
-  end
-
-  def test_01
-    assert_kind_of(DRb::DRbObject, @there)
-  end
-
-  def test_02_collect
-    ary = @there.collect do |x| x + x end
-    assert_kind_of(Array, ary)
-    assert_equal([2, 4, 'IIIIII', 8, 'fivefive', 12], ary)
-  end
-
-  def test_03_redo
-    ary = []
-    count = 0
-    @there.each do |x|
-      count += 1
-      ary.push x
-      redo if count == 3
-    end
-    assert_equal([1, 2, 'III', 'III', 4, 'five', 6], ary)
-  end
-
-  def test_04_retry
-    retried = false
-    ary = []
-    @there.each do |x|
-      ary.push x
-      if x == 4 && !retried
-       retried = true
-       retry
-      end
-    end
-    assert_equal([1, 2, 'III', 4, 1, 2, 'III', 4, 'five', 6], ary)
-  end
-
-  def test_05_break
-    ary = []
-    @there.each do |x|
-      ary.push x
-      break if x == 4
-    end
-    assert_equal([1, 2, 'III', 4], ary)
-  end
-
-  def test_06_next
-    ary = []
-    @there.each do |x|
-      next if String === x
-      ary.push x
-    end
-    assert_equal([1, 2, 4, 6], ary)
-  end
-
-  class_eval <<EOS
-  def test_07_break_18
-    ary = []
-    result = @there.each do |x|
-      ary.push x
-      break(:done) if x == 4
-    end
-    assert_equal([1, 2, 'III', 4], ary)
-    assert_equal(:done, result)
-  end
-EOS
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/ignore_test_drb.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/ignore_test_drb.rb
deleted file mode 100644 (file)
index d0bb1f4..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-require 'drbtest'
-
-class TestDRbReusePort < Test::Unit::TestCase
-  include DRbAry
-
-  def setup
-    @ext = DRbService.ext_service('ut_port.rb')
-    @there = @ext.front
-  end
-
-  def teardown
-    return unless @ext
-    @ext.stop_service
-    while true
-      sleep 0.1
-      begin
-        @ext.alive?
-      rescue DRb::DRbConnError
-        break
-      end
-    end
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/test_acl.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/test_acl.rb
deleted file mode 100644 (file)
index d8955e0..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-# acltest.rb - ACL unit test
-# Copyright (c) 2000 Masatoshi SEKI
-#
-# acltest.rb is copyrighted free software by Masatoshi SEKI.
-# You can redistribute it and/or modify it under the same terms as Ruby.
-
-require 'test/unit'
-require 'drb/acl'
-
-class SampleHosts
-  def initialize
-    list = %w(127.0.0.1 localhost
-              192.168.1.1 x68k.linux.or.jp
-              192.168.1.2 lc630.macos.or.jp
-              192.168.1.3 lib30.win32.or.jp
-              192.168.1.4 ns00.linux.or.jp
-              192.168.1.5 yum.macos.or.jp
-              ::ffff:192.168.1.5 ipv6.macos.or.jp
-              ::192.168.1.5 too.yumipv6.macos.or.jp
-              192.168.1.254 comstarz.foo.or.jp)
-
-    @hostlist = Array.new(list.size / 2)
-    @hostlist.each_index do |idx|
-      @hostlist[idx] = ["AF_INET", 10000, list[idx * 2 + 1], list[idx * 2]]
-    end
-
-    @hosts = Hash.new
-    @hostlist.each do |h|
-      @hosts[h[2].split('.')[0]] = h
-    end
-  end
-  attr_reader(:hostlist, :hosts)
-end
-
-
-class ACLEntryTest < Test::Unit::TestCase
-  HOSTS = SampleHosts.new
-
-  def setup
-    @hostlist = HOSTS.hostlist
-    @hosts = HOSTS.hosts
-  end
-
-  def test_all
-    a = ACL::ACLEntry.new("*")
-    b = ACL::ACLEntry.new("all")
-    @hostlist.each do |h|
-      assert(a.match(h))
-      assert(b.match(h))
-    end
-  end
-
-  def test_ip_v6
-    a = ACL::ACLEntry.new('::ffff:192.0.0.0/104')
-    assert(! a.match(@hosts['localhost']))
-    assert(a.match(@hosts['yum']))
-    assert(a.match(@hosts['ipv6']))
-    assert(! a.match(@hosts['too']))
-  end
-
-  def test_ip
-    a = ACL::ACLEntry.new('192.0.0.0/8')
-    assert(! a.match(@hosts['localhost']))
-    assert(a.match(@hosts['yum']))
-
-    a = ACL::ACLEntry.new('192.168.0.1/255.255.0.255')
-    assert(! a.match(@hosts['localhost']))
-    assert(! a.match(@hosts['yum']))
-    assert(a.match(@hosts['x68k']))
-
-    a = ACL::ACLEntry.new('192.168.1.0/24')
-    assert(! a.match(@hosts['localhost']))
-    assert(a.match(@hosts['yum']))
-    assert(a.match(@hosts['x68k']))
-
-    a = ACL::ACLEntry.new('92.0.0.0/8')
-    assert(! a.match(@hosts['localhost']))
-    assert(! a.match(@hosts['yum']))
-    assert(! a.match(@hosts['x68k']))
-
-    a = ACL::ACLEntry.new('127.0.0.1/255.0.0.255')
-    assert(a.match(@hosts['localhost']))
-    assert(! a.match(@hosts['yum']))
-    assert(! a.match(@hosts['x68k']))
-  end
-
-  def test_name
-    a = ACL::ACLEntry.new('*.jp')
-    assert(! a.match(@hosts['localhost']))
-    assert(a.match(@hosts['yum']))
-
-    a = ACL::ACLEntry.new('yum.*.jp')
-    assert(a.match(@hosts['yum']))
-    assert(! a.match(@hosts['lc630']))
-
-    a = ACL::ACLEntry.new('*.macos.or.jp')
-    assert(a.match(@hosts['yum']))
-    assert(a.match(@hosts['lc630']))
-    assert(! a.match(@hosts['lib30']))
-  end
-end
-
-class ACLListTest < Test::Unit::TestCase
-  HOSTS = SampleHosts.new
-
-  def setup
-    @hostlist = HOSTS.hostlist
-    @hosts = HOSTS.hosts
-  end
-
-  private
-  def build(list)
-    acl= ACL::ACLList.new
-    list.each do |s|
-      acl.add s
-    end
-    acl
-  end
-
-  public
-  def test_all_1
-    a = build(%w(all))
-    @hostlist.each do |h|
-      assert(a.match(h))
-    end
-  end
-
-  def test_all_2
-    a = build(%w(localhost 127.0.0.0/8 yum.* *))
-    @hostlist.each do |h|
-      assert(a.match(h))
-    end
-  end
-
-  def test_1
-    a = build(%w(192.0.0.1/255.0.0.255 yum.*.jp))
-    assert(a.match(@hosts['yum']))
-    assert(a.match(@hosts['x68k']))
-    assert(! a.match(@hosts['lc630']))
-  end
-
-  def test_2
-    a = build(%w(*.linux.or.jp))
-    assert(!a.match(@hosts['yum']))
-    assert(a.match(@hosts['x68k']))
-    assert(!a.match(@hosts['lc630']))
-  end
-end
-
-class ACLTest < Test::Unit::TestCase
-  HOSTS = SampleHosts.new
-
-  def setup
-    @hostlist = HOSTS.hostlist
-    @hosts = HOSTS.hosts
-  end
-
-  def test_0
-    a = ACL.new
-    @hostlist.each do |h|
-      assert(a.allow_addr?(h))
-    end
-  end
-
-  def test_not_0
-    a = ACL.new([], ACL::ALLOW_DENY)
-    @hostlist.each do |h|
-      assert(! a.allow_addr?(h))
-    end
-  end
-
-  def test_1
-    data = %w(deny all
-              allow localhost
-              allow x68k.*)
-
-    a = ACL.new(data)
-    assert(a.allow_addr?(@hosts['x68k']))
-    assert(a.allow_addr?(@hosts['localhost']))
-    assert(! a.allow_addr?(@hosts['lc630']))
-  end
-
-  def test_not_1
-    data = %w(deny 192.0.0.0/8
-              allow localhost
-              allow x68k.*)
-
-    a = ACL.new(data, ACL::ALLOW_DENY)
-    assert(!a.allow_addr?(@hosts['x68k']))
-    assert(a.allow_addr?(@hosts['localhost']))
-    assert(! a.allow_addr?(@hosts['lc630']))
-  end
-end
-
-  
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/test_drb.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/test_drb.rb
deleted file mode 100644 (file)
index 5719f60..0000000
+++ /dev/null
@@ -1,301 +0,0 @@
-require 'drbtest'
-
-class TestDRbCore < Test::Unit::TestCase
-  include DRbCore
-end
-
-class TestDRbYield < Test::Unit::TestCase
-  def setup
-    @ext = DRbService.ext_service('ut_drb.rb')
-    @there = @ext.front
-  end
-
-  def teardown
-    @ext.stop_service if @ext
-  end
-
-  def test_01_one
-    @there.echo_yield_1([]) {|one|
-      assert_equal([], one)
-    }
-    
-    @there.echo_yield_1(1) {|one|
-      assert_equal(1, one)
-    }
-    
-    @there.echo_yield_1(nil) {|one|
-      assert_equal(nil, one)
-    }
-  end
-
-  def test_02_two
-    @there.echo_yield_2([], []) {|one, two|
-      assert_equal([], one)
-      assert_equal([], two)
-    }
-
-    @there.echo_yield_2(1, 2) {|one, two|
-      assert_equal(1, one)
-      assert_equal(2, two)
-    }
-
-    @there.echo_yield_2(3, nil) {|one, two|
-      assert_equal(3, one)
-      assert_equal(nil, two)
-    }
-
-    @there.echo_yield_1([:key, :value]) {|one, two|
-      assert_equal(:key, one)
-      assert_equal(:value, two)
-    }
-  end
-
-  def test_03_many
-    @there.echo_yield_0 {|*s|
-      assert_equal([], s)
-    }
-    @there.echo_yield(nil) {|*s|
-      assert_equal([nil], s)
-    }
-    @there.echo_yield(1) {|*s|
-      assert_equal([1], s)
-    }
-    @there.echo_yield(1, 2) {|*s|
-      assert_equal([1, 2], s)
-    }
-    @there.echo_yield(1, 2, 3) {|*s|
-      assert_equal([1, 2, 3], s)
-    }
-    @there.echo_yield([], []) {|*s|
-      assert_equal([[], []], s)
-    }
-    @there.echo_yield([]) {|*s|
-      assert_equal([[]], s) # !
-    }
-  end
-
-  def test_04_many_to_one
-    @there.echo_yield_0 {|*s|
-      assert_equal([], s)
-    }
-    @there.echo_yield(nil) {|*s|
-      assert_equal([nil], s)
-    }
-    @there.echo_yield(1) {|*s|
-      assert_equal([1], s)
-    }
-    @there.echo_yield(1, 2) {|*s|
-      assert_equal([1, 2], s)
-    }
-    @there.echo_yield(1, 2, 3) {|*s|
-      assert_equal([1, 2, 3], s)
-    }
-    @there.echo_yield([], []) {|*s|
-      assert_equal([[], []], s)
-    }
-    @there.echo_yield([]) {|*s|
-      assert_equal([[]], s)
-    }
-  end
-
-  def test_05_array_subclass
-    @there.xarray_each {|x| assert_kind_of(XArray, x)}
-    @there.xarray_each {|*x| assert_kind_of(XArray, x[0])}
-  end
-
-  def test_06_taint
-    x = proc {}
-    assert(! x.tainted?)
-    @there.echo_yield(x) {|o|
-      assert_equal(x, o)
-      assert(! x.tainted?)
-    }
-  end
-end
-
-class TestRubyYield < TestDRbYield
-  def echo_yield(*arg)
-    yield(*arg)
-  end
-
-  def echo_yield_0
-    yield
-  end
-
-  def echo_yield_1(a)
-    yield(a)
-  end
-
-  def echo_yield_2(a, b)
-    yield(a, b)
-  end
-
-  def xarray_each
-    xary = [XArray.new([0])]
-    xary.each do |x|
-      yield(x)
-    end
-  end
-
-  def setup
-    @there = self
-  end
-  
-  def teardown
-  end
-end
-
-class TestRuby18Yield < TestRubyYield
-  class YieldTest18
-    def echo_yield(*arg, &proc)
-      proc.call(*arg)
-    end
-    
-    def echo_yield_0(&proc)
-      proc.call
-    end
-    
-    def echo_yield_1(a, &proc)
-      proc.call(a)
-    end
-    
-    def echo_yield_2(a, b, &proc)
-      proc.call(a, b)
-    end
-
-    def xarray_each(&proc)
-      xary = [XArray.new([0])]
-      xary.each(&proc)
-    end
-
-  end
-
-  def setup
-    @there = YieldTest18.new
-  end
-end
-
-class TestDRbAry < Test::Unit::TestCase
-  include DRbAry
-end
-
-class TestDRbMServer < Test::Unit::TestCase
-  def setup
-    @ext = DRbService.ext_service('ut_drb.rb')
-    @there = @ext.front
-    @server = (1..3).collect do |n|
-      DRb::DRbServer.new(nil, Onecky.new(n.to_s))
-    end
-  end
-
-  def teardown
-    @server.each do |s|
-      s.stop_service
-    end
-    @ext.stop_service if @ext
-  end
-
-  def test_01
-    assert_equal(6, @there.sample(@server[0].front, @server[1].front, @server[2].front))
-  end
-end
-
-class TestDRbSafe1 < TestDRbAry
-  def setup
-    @ext = DRbService.ext_service('ut_safe1.rb')
-    @there = @ext.front
-  end
-end
-
-class TestDRbEval < Test::Unit::TestCase
-  def setup
-    super
-    @ext = DRbService.ext_service('ut_eval.rb')
-    @there = @ext.front
-  end
-
-  def teardown
-    @ext.stop_service if @ext
-  end
-  
-  def test_01_safe1_safe4_eval
-    assert_raises(SecurityError) do
-      @there.method_missing(:instance_eval, 'ENV.inspect')
-    end
-
-    assert_raises(SecurityError) do
-      @there.method_missing(:send, :eval, 'ENV.inspect')
-    end
-
-    remote_class = @there.remote_class
-
-    assert_raises(SecurityError) do
-      remote_class.class_eval('ENV.inspect')
-    end
-
-    assert_raises(SecurityError) do
-      remote_class.module_eval('ENV.inspect')
-    end
-
-    four = @there.four
-    assert_equal(1, four.method_missing(:send, :eval, '1'))
-    
-    remote_class = four.remote_class
-
-    assert_equal(1, remote_class.class_eval('1'))
-
-    assert_equal(1, remote_class.module_eval('1'))
-
-    assert_raises(SecurityError) do
-      remote_class.class_eval('ENV = {}')
-    end
-
-    assert_raises(SecurityError) do
-      remote_class.module_eval('ENV = {}')
-    end
-  end
-end
-
-class TestDRbLarge < Test::Unit::TestCase
-  def setup
-    @ext = DRbService.ext_service('ut_large.rb')
-    @there = @ext.front
-  end
-
-  def teardown
-    @ext.stop_service if @ext
-  end
-
-  def test_01_large_ary
-    ary = [2] * 10240
-    assert_equal(10240, @there.size(ary))
-    assert_equal(20480, @there.sum(ary))
-  end
-
-  def test_02_large_ary
-    ary = ["Hello, World"] * 10240
-    assert_equal(10240, @there.size(ary))
-  end
-
-  def test_03_large_ary
-    ary = [Thread.current] * 10240
-    assert_equal(10240, @there.size(ary))
-  end
-
-  def test_04_many_arg
-    assert_raises(ArgumentError) {
-      @there.arg_test(1, 2, 3, 4, 5, 6, 7, 8, 9, 0)
-    }
-  end
-
-  def test_05_too_large_ary
-    ary = ["Hello, World"] * 102400
-    exception = nil
-    begin
-      @there.size(ary)      
-    rescue StandardError
-      exception = $!
-    end
-    assert_kind_of(StandardError, exception)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/test_drbssl.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/test_drbssl.rb
deleted file mode 100644 (file)
index cfb3bc3..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-require 'drbtest'
-
-begin
-  require 'drb/ssl'
-rescue LoadError
-end
-
-if Object.const_defined?("OpenSSL")
-
-
-class DRbSSLService < DRbService
-  %w(ut_drb_drbssl.rb ut_array_drbssl.rb).each do |nm|
-    add_service_command(nm)
-  end
-  config = Hash.new
-
-  config[:SSLVerifyMode] = OpenSSL::SSL::VERIFY_PEER
-  config[:SSLVerifyCallback] = lambda{ |ok,x509_store|
-    true
-  }
-  begin
-    data = open("sample.key"){|io| io.read }
-    config[:SSLPrivateKey] = OpenSSL::PKey::RSA.new(data)
-    data = open("sample.crt"){|io| io.read }
-    config[:SSLCertificate] = OpenSSL::X509::Certificate.new(data)
-  rescue
-    # $stderr.puts "Switching to use self-signed certificate"
-    config[:SSLCertName] =
-      [ ["C","JP"], ["O","Foo.DRuby.Org"], ["CN", "Sample"] ]
-  end
-
-  uri = ARGV.shift if $0 == __FILE__
-  @server = DRb::DRbServer.new(uri || 'drbssl://:0', self.manager, config)
-end
-
-class TestDRbSSLCore < Test::Unit::TestCase
-  include DRbCore
-  def setup
-    @ext = DRbSSLService.ext_service('ut_drb_drbssl.rb')
-    @there = @ext.front
-  end
-
-  def test_02_unknown
-  end
-
-  def test_01_02_loop
-  end
-
-  def test_05_eq
-  end
-end
-
-class TestDRbSSLAry < Test::Unit::TestCase
-  include DRbAry
-  def setup
-    @ext = DRbSSLService.ext_service('ut_array_drbssl.rb')
-    @there = @ext.front
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/test_drbunix.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/test_drbunix.rb
deleted file mode 100644 (file)
index e1a17ed..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-require 'drbtest'
-
-begin
-  require 'drb/unix'
-rescue LoadError
-end
-
-if Object.const_defined?("UNIXServer")
-
-
-class DRbUNIXService < DRbService
-  %w(ut_drb_drbunix.rb ut_array_drbunix.rb).each do |nm|
-    add_service_command(nm)
-  end
-
-  uri = ARGV.shift if $0 == __FILE__
-  @server = DRb::DRbServer.new(uri || 'drbunix:', self.manager, {})
-end
-
-class TestDRbUNIXCore < Test::Unit::TestCase
-  include DRbCore
-  def setup
-    @ext = DRbUNIXService.ext_service('ut_drb_drbunix.rb')
-    @there = @ext.front
-  end
-
-  def test_02_unknown
-  end
-
-  def test_01_02_loop
-  end
-
-  def test_05_eq
-  end
-end
-
-class TestDRbUNIXAry < Test::Unit::TestCase
-  include DRbAry
-  def setup
-    @ext = DRbUNIXService.ext_service('ut_array_drbunix.rb')
-    @there = @ext.front
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_array.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_array.rb
deleted file mode 100644 (file)
index 6d9778f..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-require 'drb/drb'
-require 'drb/extserv'
-
-if __FILE__ == $0
-  def ARGV.shift
-    it = super()
-    raise "usage: #{$0} <uri> <name>" unless it
-    it
-  end
-
-  DRb.start_service(nil, [1, 2, 'III', 4, "five", 6])
-  es = DRb::ExtServ.new(ARGV.shift, ARGV.shift)
-  DRb.thread.join
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_array_drbssl.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_array_drbssl.rb
deleted file mode 100644 (file)
index 5644af5..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-require 'drb/drb'
-require 'drb/extserv'
-require 'drb/ssl'
-
-if __FILE__ == $0
-  def ARGV.shift
-    it = super()
-    raise "usage: #{$0} <uri> <name>" unless it
-    it
-  end
-
-  config = Hash.new
-  config[:SSLVerifyMode] = OpenSSL::SSL::VERIFY_PEER
-  config[:SSLVerifyCallback] = lambda{|ok,x509_store|
-    true
-  }
-  config[:SSLCertName] =
-    [ ["C","JP"], ["O","Foo.DRuby.Org"], ["CN", "Sample"] ]
-
-  DRb.start_service('drbssl://:0', [1, 2, 'III', 4, "five", 6], config)
-  es = DRb::ExtServ.new(ARGV.shift, ARGV.shift)
-  DRb.thread.join
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_array_drbunix.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_array_drbunix.rb
deleted file mode 100644 (file)
index 76d2a61..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-require 'drb/drb'
-require 'drb/extserv'
-
-if __FILE__ == $0
-  def ARGV.shift
-    it = super()
-    raise "usage: #{$0} <uri> <name>" unless it
-    it
-  end
-
-  DRb.start_service('drbunix:', [1, 2, 'III', 4, "five", 6])
-  es = DRb::ExtServ.new(ARGV.shift, ARGV.shift)
-  DRb.thread.join
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_drb.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_drb.rb
deleted file mode 100644 (file)
index f5720cf..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-require 'drb/drb'
-require 'drb/extserv'
-require 'timeout'
-
-class XArray < Array
-  def initialize(ary)
-    ary.each do |x|
-      self.push(x)
-    end
-  end
-end
-
-class XArray2 < XArray
-  include DRbUndumped
-end
-
-class Unknown2
-  def initialize
-    @foo = 'unknown2'
-  end
-end
-
-class DRbEx
-  include DRbUndumped
-
-  class FooBar
-    def initialize
-      @foo = 'bar'
-    end
-  end
-
-  class UError < RuntimeError; end
-
-  def initialize
-    @hello = 'hello'
-  end
-  attr_reader :hello
-
-  def sample(a, b, c)
-    a.to_i + b.to_i + c.to_i
-  end
-
-  def sum(*a)
-    s = 0
-    a.each do |e|
-      s += e.to_i
-    end
-    s
-  end
-
-  def do_timeout(n)
-    timeout(0.1) do
-      n.sleep(2)
-    end
-  end
-
-  def unknown_module
-    FooBar.new
-  end
-
-  def unknown_class
-    Unknown2.new
-  end
-
-  def unknown_error
-    raise UError
-  end
-
-  def remote_no_method_error
-    invoke_no_method(self)
-  end
-
-  def test_yield
-    yield
-    yield([])
-    yield(*[])
-  end
-
-  def echo_yield(*arg)
-    yield(*arg)
-    nil
-  end
-
-  def echo_yield_0
-    yield
-    nil
-  end
-
-  def echo_yield_1(one)
-    yield(one)
-    nil
-  end
-
-  def echo_yield_2(one, two)
-    yield(one, two)
-    nil
-  end
-
-  def xarray_each
-    xary = [XArray.new([0])]
-    xary.each do |x|
-      yield(x)
-    end
-    nil
-  end
-
-  def xarray2_hash
-    unless @xary2_hash
-      @xary2_hash = { "a" => XArray2.new([0]), "b" => XArray2.new([1]) }
-    end
-    DRbObject.new(@xary2_hash)
-  end
-
-  def simple_hash
-    unless @hash
-      @hash = { 'a'=>:a, 'b'=>:b }
-    end
-    DRbObject.new(@hash)
-  end
-
-  def [](key)
-    key.to_s
-  end
-
-  def to_a
-    [self]
-  end
-
-  def method_missing(msg, *a, &b)
-    if msg == :missing
-      return true
-    else
-      super(msg, *a, &b)
-    end
-  end
-
-  private
-  def call_private_method
-    true
-  end
-
-  protected
-  def call_protected_method
-    true
-  end
-end
-
-if __FILE__ == $0
-  def ARGV.shift
-    it = super()
-    raise "usage: #{$0} <manager-uri> <name>" unless it
-    it
-  end
-
-  DRb::DRbServer.default_argc_limit(8)
-  DRb::DRbServer.default_load_limit(4096)
-  DRb.start_service('druby://localhost:0', DRbEx.new)
-  es = DRb::ExtServ.new(ARGV.shift, ARGV.shift)
-  DRb.thread.join
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_drb_drbssl.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_drb_drbssl.rb
deleted file mode 100644 (file)
index 0a2191e..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-require "#{File.dirname(File.expand_path(__FILE__))}/ut_drb"
-require 'drb/ssl'
-
-if __FILE__ == $0
-  def ARGV.shift
-    it = super()
-    raise "usage: #{$0} <manager-uri> <name>" unless it
-    it
-  end
-
-  config = Hash.new
-  config[:SSLVerifyMode] = OpenSSL::SSL::VERIFY_PEER
-  config[:SSLVerifyCallback] = lambda{|ok,x509_store|
-    true
-  }
-  config[:SSLCertName] =
-    [ ["C","JP"], ["O","Foo.DRuby.Org"], ["CN", "Sample"] ]
-
-  DRb::DRbServer.default_argc_limit(8)
-  DRb::DRbServer.default_load_limit(4096)
-  DRb.start_service('drbssl://localhost:0', DRbEx.new, config)
-  es = DRb::ExtServ.new(ARGV.shift, ARGV.shift)
-  DRb.thread.join
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_drb_drbunix.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_drb_drbunix.rb
deleted file mode 100644 (file)
index 8b9484c..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-require "#{File.dirname(File.expand_path(__FILE__))}/ut_drb"
-
-if __FILE__ == $0
-  def ARGV.shift
-    it = super()
-    raise "usage: #{$0} <manager-uri> <name>" unless it
-    it
-  end
-
-  DRb::DRbServer.default_argc_limit(8)
-  DRb::DRbServer.default_load_limit(4096)
-  DRb.start_service('drbunix:', DRbEx.new)
-  es = DRb::ExtServ.new(ARGV.shift, ARGV.shift)
-  DRb.thread.join
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_eval.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_eval.rb
deleted file mode 100644 (file)
index 4df963e..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-require 'drb/drb'
-require 'drb/extserv'
-
-class EvalAttack
-  def initialize
-    @four = DRb::DRbServer.new('druby://localhost:0', self, {:safe_level => 4})
-  end
-
-  def four
-    DRbObject.new_with_uri(@four.uri)
-  end
-
-  def remote_class
-    DRbObject.new(self.class)
-  end
-end
-
-
-if __FILE__ == $0
-  def ARGV.shift
-    it = super()
-    raise "usage: #{$0} <uri> <name>" unless it
-    it
-  end
-
-  $SAFE = 1
-
-  DRb.start_service('druby://localhost:0', EvalAttack.new, {:safe_level => 2})
-  es = DRb::ExtServ.new(ARGV.shift, ARGV.shift)
-  DRb.thread.join
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_large.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_large.rb
deleted file mode 100644 (file)
index d6717c5..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-require 'drb/drb'
-require 'drb/extserv'
-require 'timeout'
-
-class DRbLarge
-  include DRbUndumped
-
-  def size(ary)
-    ary.size 
-  end
-
-  def sum(ary)
-    sum = 0
-    ary.each do |e|
-      sum += e.to_i
-    end
-    sum
-  end
-
-  def arg_test(*arg)
-    # nop
-  end
-end
-
-if __FILE__ == $0
-  def ARGV.shift
-    it = super()
-    raise "usage: #{$0} <manager-uri> <name>" unless it
-    it
-  end
-
-  DRb::DRbServer.default_argc_limit(3)
-  DRb::DRbServer.default_load_limit(100000)
-  DRb.start_service('druby://localhost:0', DRbLarge.new)
-  es = DRb::ExtServ.new(ARGV.shift, ARGV.shift)
-  DRb.thread.join
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_port.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_port.rb
deleted file mode 100644 (file)
index 337e0ed..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-require 'drb/drb'
-require 'drb/extserv'
-
-if __FILE__ == $0
-  def ARGV.shift
-    it = super()
-    raise "usage: #{$0} <uri> <name>" unless it
-    it
-  end
-
-  DRb.start_service('druby://:8473', [1, 2, 'III', 4, "five", 6])
-  es = DRb::ExtServ.new(ARGV.shift, ARGV.shift)
-  DRb.thread.join
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_safe1.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_safe1.rb
deleted file mode 100644 (file)
index 4df8e1e..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-require 'drb/drb'
-require 'drb/extserv'
-
-if __FILE__ == $0
-  def ARGV.shift
-    it = super()
-    raise "usage: #{$0} <uri> <name>" unless it
-    it
-  end
-
-  DRb.start_service('druby://localhost:0', [1, 2, 'III', 4, "five", 6], 
-                    {:safe_level => 1})
-  es = DRb::ExtServ.new(ARGV.shift, ARGV.shift)
-  DRb.thread.join
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_timerholder.rb b/ruby/doc/ruby/ruby-1.8.7/test/drb/ut_timerholder.rb
deleted file mode 100644 (file)
index 141cb73..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-require 'runit/testcase'
-require 'runit/cui/testrunner'
-require 'timerholder'
-
-class TimerHolderTest < RUNIT::TestCase
-  def do_test(timeout, keeper_sleep = nil)
-    holder = TimerHolder.new(timeout)
-    holder.keeper_sleep = keeper_sleep if keeper_sleep
-    key = holder.add(self)
-    sleep(timeout * 0.5)
-    assert_equal(holder.peek(key), self)
-    holder.delete(key)
-    assert(!holder.include?(key))
-    key = holder.add(self)
-    sleep(timeout+0.5)
-    assert_equal(holder.fetch(key), nil)
-    key = holder.add(self)
-    assert_equal(holder.fetch(key), self)
-    holder.store(key, true)
-    assert_equal(holder.fetch(key), true)
-    assert_equal(holder.include?(key), true)
-    sleep(timeout+0.5)
-    assert_exception(TimerHolder::InvalidIndexError) do
-      holder.store(key, 1)
-    end
-    assert_equal(holder.include?(key), false)
-    key = holder.add(self)
-    sleep(timeout * 0.5)
-    assert(holder.include?(key))
-    holder.extend(key, timeout)
-    sleep(timeout * 0.5)
-    assert(holder.include?(key))
-    sleep(timeout * 0.6)
-    assert(!holder.include?(key))
-    holder.delete(key)
-  end
-  
-  def test_00
-    do_test(0.5)
-  end
-
-  def test_01
-    do_test(1, 0.5)
-  end
-end
-
-if __FILE__ == $0
-  RUNIT::CUI::TestRunner.run(TimerHolderTest.suite)
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/erb/hello.erb b/ruby/doc/ruby/ruby-1.8.7/test/erb/hello.erb
deleted file mode 100644 (file)
index d5ebcb7..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-= hello
-<% 3.times do |n| %>
-* <%= n %>
-<% end %>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/erb/test_erb.rb b/ruby/doc/ruby/ruby-1.8.7/test/erb/test_erb.rb
deleted file mode 100644 (file)
index 9359984..0000000
+++ /dev/null
@@ -1,426 +0,0 @@
-require 'test/unit'
-require 'erb'
-
-class TestERB < Test::Unit::TestCase
-  class MyError < RuntimeError ; end
-
-  def test_without_filename
-    erb = ERB.new("<% raise ::TestERB::MyError %>")
-    e = assert_raise(MyError) {
-      erb.result
-    }
-    assert_equal("(erb):1", e.backtrace[0])
-  end
-
-  def test_with_filename
-    erb = ERB.new("<% raise ::TestERB::MyError %>")
-    erb.filename = "test filename"
-    e = assert_raise(MyError) {
-      erb.result
-    }
-    assert_equal("test filename:1", e.backtrace[0])
-  end
-
-  def test_without_filename_with_safe_level
-    erb = ERB.new("<% raise ::TestERB::MyError %>", 1)
-    e = assert_raise(MyError) {
-      erb.result
-    }
-    assert_equal("(erb):1", e.backtrace[0])
-  end
-
-  def test_with_filename_and_safe_level
-    erb = ERB.new("<% raise ::TestERB::MyError %>", 1)
-    erb.filename = "test filename"
-    e = assert_raise(MyError) {
-      erb.result
-    }
-    assert_equal("test filename:1", e.backtrace[0])
-  end
-end
-
-class TestERBCore < Test::Unit::TestCase
-  def setup
-    @erb = ERB
-  end
-
-  def test_core
-    _test_core(nil)
-    _test_core(0)
-    _test_core(1)
-    _test_core(2)
-    _test_core(3)
-  end
-
-  def _test_core(safe)
-    erb = @erb.new("hello")
-    assert_equal("hello", erb.result)
-
-    erb = @erb.new("hello", safe, 0)
-    assert_equal("hello", erb.result)
-
-    erb = @erb.new("hello", safe, 1)
-    assert_equal("hello", erb.result)
-
-    erb = @erb.new("hello", safe, 2)
-    assert_equal("hello", erb.result)
-
-    src = <<EOS
-%% hi
-= hello
-<% 3.times do |n| %>
-% n=0
-* <%= n %>
-<% end %>
-EOS
-      
-    ans = <<EOS
-%% hi
-= hello
-
-% n=0
-* 0
-
-% n=0
-* 1
-
-% n=0
-* 2
-
-EOS
-    erb = @erb.new(src)
-    assert_equal(ans, erb.result)
-    erb = @erb.new(src, safe, 0)
-    assert_equal(ans, erb.result)
-    erb = @erb.new(src, safe, '')
-    assert_equal(ans, erb.result)
-
-    ans = <<EOS
-%% hi
-= hello
-% n=0
-* 0% n=0
-* 1% n=0
-* 2
-EOS
-    erb = @erb.new(src, safe, 1)
-    assert_equal(ans.chomp, erb.result)
-    erb = @erb.new(src, safe, '>')
-    assert_equal(ans.chomp, erb.result)
-
-    ans  = <<EOS
-%% hi
-= hello
-% n=0
-* 0
-% n=0
-* 1
-% n=0
-* 2
-EOS
-      
-    erb = @erb.new(src, safe, 2)
-    assert_equal(ans, erb.result)
-    erb = @erb.new(src, safe, '<>')
-    assert_equal(ans, erb.result)
-
-    ans = <<EOS
-% hi
-= hello
-
-* 0
-
-* 0
-
-* 0
-
-EOS
-    erb = @erb.new(src, safe, '%')
-    assert_equal(ans, erb.result)
-
-    ans = <<EOS
-% hi
-= hello
-* 0* 0* 0
-EOS
-    erb = @erb.new(src, safe, '%>')
-    assert_equal(ans.chomp, erb.result)
-
-    ans = <<EOS
-% hi
-= hello
-* 0
-* 0
-* 0
-EOS
-    erb = @erb.new(src, safe, '%<>')
-    assert_equal(ans, erb.result)
-  end
-
-  def test_safe_04
-    erb = @erb.new('<%=$SAFE%>', 4)
-    assert_equal('4', erb.result(TOPLEVEL_BINDING.taint))
-  end
-
-  class Foo; end
-
-  def test_def_class
-    erb = @erb.new('hello')
-    cls = erb.def_class
-    assert_equal(Object, cls.superclass)
-    assert(cls.new.respond_to?('result'))
-    cls = erb.def_class(Foo)
-    assert_equal(Foo, cls.superclass)
-    assert(cls.new.respond_to?('result'))
-    cls = erb.def_class(Object, 'erb')
-    assert_equal(Object, cls.superclass)
-    assert(cls.new.respond_to?('erb'))
-  end
-
-  def test_percent
-    src = <<EOS
-%n = 1
-<%= n%>
-EOS
-    assert_equal("1\n", ERB.new(src, nil, '%').result)
-
-    src = <<EOS
-<%
-%>
-EOS
-    ans = "\n"
-    assert_equal(ans, ERB.new(src, nil, '%').result)
-
-    src = "<%\n%>"
-    # ans = "\n"
-    ans = ""
-    assert_equal(ans, ERB.new(src, nil, '%').result)
-
-    src = <<EOS
-<%
-n = 1
-%><%= n%>
-EOS
-    assert_equal("1\n", ERB.new(src, nil, '%').result)
-
-    src = <<EOS
-%n = 1
-%% <% n = 2
-n.times do |i|%>
-%% %%><%%<%= i%><%
-end%>
-%%%
-EOS
-    ans = <<EOS
-% 
-% %%><%0
-% %%><%1
-%%
-EOS
-    assert_equal(ans, ERB.new(src, nil, '%').result)
-  end
-
-  def test_def_method
-    klass = Class.new
-    klass.module_eval do
-      extend ERB::DefMethod
-      fname = File.join(File.dirname(File.expand_path(__FILE__)), 'hello.erb')
-      def_erb_method('hello', fname)
-    end
-    assert(klass.new.respond_to?('hello'))
-
-    assert(! klass.new.respond_to?('hello_world'))
-    erb = @erb.new('hello, world')
-    klass.module_eval do
-      def_erb_method('hello_world', erb)
-    end
-    assert(klass.new.respond_to?('hello_world'))    
-  end
-
-  def test_escape
-    src = <<EOS
-1.<%% : <%="<%%"%>
-2.%%> : <%="%%>"%>
-3.
-% x = "foo"
-<%=x%>
-4.
-%% print "foo"
-5.
-%% <%="foo"%>
-6.<%="
-% print 'foo'
-"%>
-7.<%="
-%% print 'foo'
-"%>
-EOS
-    ans = <<EOS
-1.<% : <%%
-2.%%> : %>
-3.
-foo
-4.
-% print "foo"
-5.
-% foo
-6.
-% print 'foo'
-
-7.
-%% print 'foo'
-
-EOS
-    assert_equal(ans, ERB.new(src, nil, '%').result)
-  end
-
-  def test_keep_lineno
-    src = <<EOS
-Hello, 
-% x = "World"
-<%= x%>
-% raise("lineno")
-EOS
-
-    erb = ERB.new(src, nil, '%')
-    begin
-      erb.result
-      assert(false)
-    rescue
-      assert_equal("(erb):4", $@[0].to_s)
-    end
-
-    src = <<EOS
-%>
-Hello, 
-<% x = "World%%>
-"%>
-<%= x%>
-EOS
-
-    ans = <<EOS
-%>Hello, 
-World%>
-EOS
-    assert_equal(ans, ERB.new(src, nil, '>').result)
-
-    ans = <<EOS
-%>
-Hello, 
-
-World%>
-EOS
-    assert_equal(ans, ERB.new(src, nil, '<>').result)
-
-    ans = <<EOS
-%>
-Hello, 
-
-World%>
-
-EOS
-    assert_equal(ans, ERB.new(src).result)
-
-    src = <<EOS
-Hello, 
-<% x = "World%%>
-"%>
-<%= x%>
-<% raise("lineno") %>
-EOS
-
-    erb = ERB.new(src)
-    begin
-      erb.result
-      assert(false)
-    rescue
-      assert_equal("(erb):5", $@[0].to_s)
-    end
-
-    erb = ERB.new(src, nil, '>')
-    begin
-      erb.result
-      assert(false)
-    rescue
-      assert_equal("(erb):5", $@[0].to_s)
-    end
-
-    erb = ERB.new(src, nil, '<>')
-    begin
-      erb.result
-      assert(false)
-    rescue
-      assert_equal("(erb):5", $@[0].to_s)
-    end
-
-    src = <<EOS
-% y = 'Hello'
-<%- x = "World%%>
-"-%>
-<%= x %><%- x = nil -%> 
-<% raise("lineno") %>
-EOS
-
-    erb = ERB.new(src, nil, '-')
-    begin
-      erb.result
-      assert(false)
-    rescue
-      assert_equal("(erb):5", $@[0].to_s)
-    end
-
-    erb = ERB.new(src, nil, '%-')
-    begin
-      erb.result
-      assert(false)
-    rescue
-      assert_equal("(erb):5", $@[0].to_s)
-    end
-  end
-
-  def test_explicit
-    src = <<EOS
-<% x = %w(hello world) -%>
-NotSkip <%- y = x -%> NotSkip
-<% x.each do |w| -%>
-  <%- up = w.upcase -%>
-  * <%= up %>
-<% end -%>
- <%- z = nil -%> NotSkip <%- z = x %>
- <%- z.each do |w| -%>
-   <%- down = w.downcase -%>
-   * <%= down %>
-   <%- up = w.upcase -%>
-   * <%= up %>
- <%- end -%>
-KeepNewLine <%- z = nil -%> 
-EOS
-
-   ans = <<EOS
-NotSkip  NotSkip
-  * HELLO
-  * WORLD
- NotSkip 
-   * hello
-   * HELLO
-   * world
-   * WORLD
-KeepNewLine  
-EOS
-   assert_equal(ans, ERB.new(src, nil, '-').result)
-   assert_equal(ans, ERB.new(src, nil, '-%').result)
-  end
-end
-
-class TestERBCoreWOStrScan < TestERBCore
-  def setup
-    @save_map = ERB::Compiler::Scanner.instance_variable_get('@scanner_map')
-    map = {[nil, false]=>ERB::Compiler::SimpleScanner}
-    ERB::Compiler::Scanner.instance_variable_set('@scanner_map', map)
-    super
-  end
-
-  def teardown
-    ERB::Compiler::Scanner.instance_variable_set('@scanner_map', @save_map)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/fileutils/fileasserts.rb b/ruby/doc/ruby/ruby-1.8.7/test/fileutils/fileasserts.rb
deleted file mode 100644 (file)
index ef55541..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-# $Id: fileasserts.rb 11708 2007-02-12 23:01:19Z shyouhei $
-
-module Test
-  module Unit
-    module Assertions   # redefine
-
-      def assert_same_file(from, to)
-        _wrap_assertion {
-          assert_block("file #{from} != #{to}") {
-            File.read(from) == File.read(to)
-          }
-        }
-      end
-
-      def assert_same_entry(from, to)
-        a = File.stat(from)
-        b = File.stat(to)
-        assert_equal a.mode, b.mode, "mode #{a.mode} != #{b.mode}"
-        #assert_equal a.atime, b.atime
-        assert_equal a.mtime, b.mtime, "mtime #{a.mtime} != #{b.mtime}"
-        assert_equal a.uid, b.uid, "uid #{a.uid} != #{b.uid}"
-        assert_equal a.gid, b.gid, "gid #{a.gid} != #{b.gid}"
-      end
-
-      def assert_file_exist(path)
-        _wrap_assertion {
-          assert_block("file not exist: #{path}") {
-            File.exist?(path)
-          }
-        }
-      end
-
-      def assert_file_not_exist(path)
-        _wrap_assertion {
-          assert_block("file not exist: #{path}") {
-            not File.exist?(path)
-          }
-        }
-      end
-
-      def assert_directory(path)
-        _wrap_assertion {
-          assert_block("is not directory: #{path}") {
-            File.directory?(path)
-          }
-        }
-      end
-
-      def assert_symlink(path)
-        _wrap_assertion {
-          assert_block("is not a symlink: #{path}") {
-            File.symlink?(path)
-          }
-        }
-      end
-
-      def assert_not_symlink(path)
-        _wrap_assertion {
-          assert_block("is a symlink: #{path}") {
-            not File.symlink?(path)
-          }
-        }
-      end
-
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/fileutils/test_dryrun.rb b/ruby/doc/ruby/ruby-1.8.7/test/fileutils/test_dryrun.rb
deleted file mode 100644 (file)
index 081f55d..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-# $Id: test_dryrun.rb 11708 2007-02-12 23:01:19Z shyouhei $
-
-require 'test/unit'
-require 'fileutils'
-
-class TestFileUtilsDryRun < Test::Unit::TestCase
-
-  include FileUtils::DryRun
-
-  def test_visibility
-    FileUtils::METHODS.each do |m|
-      assert_equal true, FileUtils::DryRun.respond_to?(m, true),
-                   "FileUtils::DryRun.#{m} not defined"
-      assert_equal true, FileUtils::DryRun.respond_to?(m, false),
-                   "FileUtils::DryRun.#{m} not public"
-    end
-    FileUtils::METHODS.each do |m|
-      assert_equal true, respond_to?(m, true)
-                   "FileUtils::DryRun\##{m} is not defined"
-      assert_equal true, FileUtils::DryRun.private_method_defined?(m),
-                   "FileUtils::DryRun\##{m} is not private"
-    end
-  end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/fileutils/test_fileutils.rb b/ruby/doc/ruby/ruby-1.8.7/test/fileutils/test_fileutils.rb
deleted file mode 100644 (file)
index 8886307..0000000
+++ /dev/null
@@ -1,1085 +0,0 @@
-# $Id: test_fileutils.rb 11708 2007-02-12 23:01:19Z shyouhei $
-
-require 'fileutils'
-require 'fileasserts'
-require 'pathname'
-require 'tmpdir'
-require 'test/unit'
-
-class TestFileUtils < Test::Unit::TestCase
-  TMPROOT = "#{Dir.tmpdir}/fileutils.rb.#{$$}"
-end
-
-prevdir = Dir.pwd
-tmproot = TestFileUtils::TMPROOT
-Dir.mkdir tmproot unless File.directory?(tmproot)
-Dir.chdir tmproot
-
-def have_drive_letter?
-  /djgpp|mswin(?!ce)|mingw|bcc|emx/ =~ RUBY_PLATFORM
-end
-
-def have_file_perm?
-  /djgpp|mswin|mingw|bcc|wince|emx/ !~ RUBY_PLATFORM
-end
-
-$fileutils_rb_have_symlink = nil
-
-def have_symlink?
-  if $fileutils_rb_have_symlink == nil
-    $fileutils_rb_have_symlink = check_have_symlink?
-  end
-  $fileutils_rb_have_symlink
-end
-
-def check_have_symlink?
-  File.symlink nil, nil
-rescue NotImplementedError
-  return false
-rescue
-  return true
-end
-
-$fileutils_rb_have_hardlink = nil
-
-def have_hardlink?
-  if $fileutils_rb_have_hardlink == nil
-    $fileutils_rb_have_hardlink = check_have_hardlink?
-  end
-  $fileutils_rb_have_hardlink
-end
-
-def check_have_hardlink?
-  File.link nil, nil
-rescue NotImplementedError
-  return false
-rescue
-  return true
-end
-
-begin
-  Dir.mkdir("\n")
-  Dir.rmdir("\n")
-  def lf_in_path_allowed?
-    true
-  end
-rescue
-  def lf_in_path_allowed?
-    false
-  end
-end
-
-Dir.chdir prevdir
-Dir.rmdir tmproot
-
-class TestFileUtils
-
-  include FileUtils
-
-  def check_singleton(name)
-    assert_equal true, ::FileUtils.public_methods.include?(name.to_s)
-  end
-
-  def my_rm_rf(path)
-    if File.exist?('/bin/rm')
-      system %Q[/bin/rm -rf "#{path}"]
-    else
-      FileUtils.rm_rf path
-    end
-  end
-
-  def mymkdir(path)
-    Dir.mkdir path
-    File.chown nil, Process.gid, path if have_file_perm?
-  end
-
-  def setup
-    @prevdir = Dir.pwd
-    tmproot = TMPROOT
-    mymkdir tmproot unless File.directory?(tmproot)
-    Dir.chdir tmproot
-    my_rm_rf 'data'; mymkdir 'data'
-    my_rm_rf 'tmp';  mymkdir 'tmp'
-    prepare_data_file
-  end
-
-  def teardown
-    tmproot = Dir.pwd
-    Dir.chdir @prevdir
-    my_rm_rf tmproot
-  end
-
-
-  TARGETS = %w( data/a data/all data/random data/zero )
-
-  def prepare_data_file
-    File.open('data/a', 'w') {|f|
-      32.times do
-        f.puts 'a' * 50
-      end
-    }
-
-    all_chars = (0..255).map {|n| n.chr }.join('')
-    File.open('data/all', 'w') {|f|
-      32.times do
-        f.puts all_chars
-      end
-    }
-
-    random_chars = (0...50).map { rand(256).chr }.join('')
-    File.open('data/random', 'w') {|f|
-      32.times do
-        f.puts random_chars
-      end
-    }
-
-    File.open('data/zero', 'w') {|f|
-      ;
-    }
-  end
-
-  BIGFILE = 'data/big'
-
-  def prepare_big_file
-    File.open('data/big', 'w') {|f|
-      (4 * 1024 * 1024 / 256).times do   # 4MB
-        f.print "aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa\n"
-      end
-    }
-  end
-
-  def prepare_time_data
-    File.open('data/old',    'w') {|f| f.puts 'dummy' }
-    File.open('data/newer',  'w') {|f| f.puts 'dummy' }
-    File.open('data/newest', 'w') {|f| f.puts 'dummy' }
-    t = Time.now
-    File.utime t-8, t-8, 'data/old'
-    File.utime t-4, t-4, 'data/newer'
-  end
-
-  def each_srcdest
-    TARGETS.each do |path|
-      yield path, "tmp/#{File.basename(path)}"
-    end
-  end
-
-  #
-  # Test Cases
-  #
-
-  def test_pwd
-    check_singleton :pwd
-
-    assert_equal Dir.pwd, pwd()
-
-    cwd = Dir.pwd
-if have_drive_letter?
-    cd('C:/') {
-      assert_equal 'C:/', pwd()
-    }
-    assert_equal cwd, pwd()
-else
-    cd('/') {
-      assert_equal '/', pwd()
-    }
-    assert_equal cwd, pwd()
-end
-  end
-
-  def test_cmp
-    check_singleton :cmp
-
-    TARGETS.each do |fname|
-      assert cmp(fname, fname), 'not same?'
-    end
-    assert_raises(ArgumentError) {
-      cmp TARGETS[0], TARGETS[0], :undefinedoption => true
-    }
-
-    # pathname
-    touch 'tmp/cmptmp'
-    assert_nothing_raised {
-      cmp Pathname.new('tmp/cmptmp'), 'tmp/cmptmp'
-      cmp 'tmp/cmptmp', Pathname.new('tmp/cmptmp')
-      cmp Pathname.new('tmp/cmptmp'), Pathname.new('tmp/cmptmp')
-    }
-  end
-
-  def test_cp
-    check_singleton :cp
-
-    each_srcdest do |srcpath, destpath|
-      cp srcpath, destpath
-      assert_same_file srcpath, destpath
-
-      cp srcpath, File.dirname(destpath)
-      assert_same_file srcpath, destpath
-
-      cp srcpath, File.dirname(destpath) + '/'
-      assert_same_file srcpath, destpath
-
-      cp srcpath, destpath, :preserve => true
-      assert_same_file srcpath, destpath
-      assert_same_entry srcpath, destpath
-    end
-
-    # src==dest (1) same path
-    touch 'tmp/cptmp'
-    assert_raises(ArgumentError) {
-      cp 'tmp/cptmp', 'tmp/cptmp'
-    }
-if have_symlink?
-    # src==dest (2) symlink and its target
-    File.symlink 'cptmp', 'tmp/cptmp_symlink'
-    assert_raises(ArgumentError) {
-      cp 'tmp/cptmp', 'tmp/cptmp_symlink'
-    }
-    assert_raises(ArgumentError) {
-      cp 'tmp/cptmp_symlink', 'tmp/cptmp'
-    }
-    # src==dest (3) looped symlink
-    File.symlink 'symlink', 'tmp/symlink'
-    assert_raises(Errno::ELOOP) {
-      cp 'tmp/symlink', 'tmp/symlink'
-    }
-end
-
-    # pathname
-    assert_nothing_raised {
-      cp 'tmp/cptmp', Pathname.new('tmp/tmpdest')
-      cp Pathname.new('tmp/cptmp'), 'tmp/tmpdest'
-      cp Pathname.new('tmp/cptmp'), Pathname.new('tmp/tmpdest')
-      mkdir 'tmp/tmpdir'
-      cp ['tmp/cptmp', 'tmp/tmpdest'], Pathname.new('tmp/tmpdir')
-    }
-  end
-
-  def test_cp_r
-    check_singleton :cp_r
-
-    cp_r 'data', 'tmp'
-    TARGETS.each do |fname|
-      assert_same_file fname, "tmp/#{fname}"
-    end
-
-    cp_r 'data', 'tmp2', :preserve => true
-    TARGETS.each do |fname|
-      assert_same_entry fname, "tmp2/#{File.basename(fname)}"
-      assert_same_file fname, "tmp2/#{File.basename(fname)}"
-    end
-
-    # a/* -> b/*
-    mkdir 'tmp/cpr_src'
-    mkdir 'tmp/cpr_dest'
-    File.open('tmp/cpr_src/a', 'w') {|f| f.puts 'a' }
-    File.open('tmp/cpr_src/b', 'w') {|f| f.puts 'b' }
-    File.open('tmp/cpr_src/c', 'w') {|f| f.puts 'c' }
-    mkdir 'tmp/cpr_src/d'
-    cp_r 'tmp/cpr_src/.', 'tmp/cpr_dest'
-    assert_same_file 'tmp/cpr_src/a', 'tmp/cpr_dest/a'
-    assert_same_file 'tmp/cpr_src/b', 'tmp/cpr_dest/b'
-    assert_same_file 'tmp/cpr_src/c', 'tmp/cpr_dest/c'
-    assert_directory 'tmp/cpr_dest/d'
-    my_rm_rf 'tmp/cpr_src'
-    my_rm_rf 'tmp/cpr_dest'
-
-if have_symlink?
-    # symlink in a directory
-    mkdir 'tmp/cpr_src'
-    ln_s 'SLdest', 'tmp/cpr_src/symlink'
-    cp_r 'tmp/cpr_src', 'tmp/cpr_dest'
-    assert_symlink 'tmp/cpr_dest/symlink'
-    assert_equal 'SLdest', File.readlink('tmp/cpr_dest/symlink')
-
-    # root is a symlink
-    ln_s 'cpr_src', 'tmp/cpr_src2'
-    cp_r 'tmp/cpr_src2', 'tmp/cpr_dest2'
-    assert_directory 'tmp/cpr_dest2'
-    #assert_not_symlink 'tmp/cpr_dest2'
-    # * 2005-05-26: feature change on trunk
-    #assert_symlink 'tmp/cpr_dest2'
-    # * 2005-09-19: revert for 1.8 (:dereference_root => true by default)
-    assert_not_symlink 'tmp/cpr_dest2'
-    assert_symlink 'tmp/cpr_dest2/symlink'
-    assert_equal 'SLdest', File.readlink('tmp/cpr_dest2/symlink')
-end
-
-    # pathname
-    touch 'tmp/cprtmp'
-    assert_nothing_raised {
-      cp_r Pathname.new('tmp/cprtmp'), 'tmp/tmpdest'
-      cp_r 'tmp/cprtmp', Pathname.new('tmp/tmpdest')
-      cp_r Pathname.new('tmp/cprtmp'), Pathname.new('tmp/tmpdest')
-    }
-  end
-
-  def test_mv
-    check_singleton :mv
-
-    mkdir 'tmp/dest'
-    TARGETS.each do |fname|
-      cp fname, 'tmp/mvsrc'
-      mv 'tmp/mvsrc', 'tmp/mvdest'
-      assert_same_file fname, 'tmp/mvdest'
-
-      mv 'tmp/mvdest', 'tmp/dest/'
-      assert_same_file fname, 'tmp/dest/mvdest'
-
-      mv 'tmp/dest/mvdest', 'tmp'
-      assert_same_file fname, 'tmp/mvdest'
-    end
-
-    # [ruby-talk:124368]
-    mkdir 'tmp/tmpdir'
-    mkdir_p 'tmp/dest2/tmpdir'
-    assert_raises(Errno::EEXIST) {
-      mv 'tmp/tmpdir', 'tmp/dest2'
-    }
-    mkdir 'tmp/dest2/tmpdir/junk'
-    assert_raises(Errno::EEXIST) {
-      mv 'tmp/tmpdir', 'tmp/dest2'
-    }
-
-    # src==dest (1) same path
-    touch 'tmp/cptmp'
-    assert_raises(ArgumentError) {
-      mv 'tmp/cptmp', 'tmp/cptmp'
-    }
-if have_symlink?
-    # src==dest (2) symlink and its target
-    File.symlink 'cptmp', 'tmp/cptmp_symlink'
-    assert_raises(ArgumentError) {
-      mv 'tmp/cptmp', 'tmp/cptmp_symlink'
-    }
-    assert_raises(ArgumentError) {
-      mv 'tmp/cptmp_symlink', 'tmp/cptmp'
-    }
-    # src==dest (3) looped symlink
-    File.symlink 'symlink', 'tmp/symlink'
-    assert_raises(Errno::ELOOP) {
-      mv 'tmp/symlink', 'tmp/symlink'
-    }
-end
-
-    # pathname
-    assert_nothing_raised {
-      touch 'tmp/mvtmpsrc'
-      mv Pathname.new('tmp/mvtmpsrc'), 'tmp/mvtmpdest'
-      touch 'tmp/mvtmpsrc'
-      mv 'tmp/mvtmpsrc', Pathname.new('tmp/mvtmpdest')
-      touch 'tmp/mvtmpsrc'
-      mv Pathname.new('tmp/mvtmpsrc'), Pathname.new('tmp/mvtmpdest')
-    }
-  end
-
-  def test_rm
-    check_singleton :rm
-
-    TARGETS.each do |fname|
-      cp fname, 'tmp/rmsrc'
-      rm 'tmp/rmsrc'
-      assert_file_not_exist 'tmp/rmsrc'
-    end
-
-    # pathname
-    touch 'tmp/rmtmp1'
-    touch 'tmp/rmtmp2'
-    touch 'tmp/rmtmp3'
-    assert_nothing_raised {
-      rm Pathname.new('tmp/rmtmp1')
-      rm [Pathname.new('tmp/rmtmp2'), Pathname.new('tmp/rmtmp3')]
-    }
-    assert_file_not_exist 'tmp/rmtmp1'
-    assert_file_not_exist 'tmp/rmtmp2'
-    assert_file_not_exist 'tmp/rmtmp3'
-  end
-
-  def test_rm_f
-    check_singleton :rm_f
-
-    TARGETS.each do |fname|
-      cp fname, 'tmp/rmsrc'
-      rm_f 'tmp/rmsrc'
-      assert_file_not_exist 'tmp/rmsrc'
-    end
-
-if have_symlink?
-    File.open('tmp/lnf_symlink_src', 'w') {|f| f.puts 'dummy' }
-    File.symlink 'tmp/lnf_symlink_src', 'tmp/lnf_symlink_dest'
-    rm_f 'tmp/lnf_symlink_dest'
-    assert_file_not_exist 'tmp/lnf_symlink_dest'
-    assert_file_exist     'tmp/lnf_symlink_src'
-end
-
-    rm_f 'notexistdatafile'
-    rm_f 'tmp/notexistdatafile'
-    my_rm_rf 'tmpdatadir'
-    Dir.mkdir 'tmpdatadir'
-    # rm_f 'tmpdatadir'
-    Dir.rmdir 'tmpdatadir'
-
-    Dir.mkdir 'tmp/tmpdir'
-    File.open('tmp/tmpdir/a', 'w') {|f| f.puts 'dummy' }
-    File.open('tmp/tmpdir/c', 'w') {|f| f.puts 'dummy' }
-    rm_f ['tmp/tmpdir/a', 'tmp/tmpdir/b', 'tmp/tmpdir/c']
-    assert_file_not_exist 'tmp/tmpdir/a'
-    assert_file_not_exist 'tmp/tmpdir/c'
-    Dir.rmdir 'tmp/tmpdir'
-
-    # pathname
-    touch 'tmp/rmtmp1'
-    touch 'tmp/rmtmp2'
-    touch 'tmp/rmtmp3'
-    touch 'tmp/rmtmp4'
-    assert_nothing_raised {
-      rm_f Pathname.new('tmp/rmtmp1')
-      rm_f [Pathname.new('tmp/rmtmp2'), Pathname.new('tmp/rmtmp3')]
-    }
-    assert_file_not_exist 'tmp/rmtmp1'
-    assert_file_not_exist 'tmp/rmtmp2'
-    assert_file_not_exist 'tmp/rmtmp3'
-    assert_file_exist 'tmp/rmtmp4'
-  end
-
-  def test_rm_r
-    check_singleton :rm_r
-
-    my_rm_rf 'tmpdatadir'
-
-    Dir.mkdir 'tmpdatadir'
-    rm_r 'tmpdatadir'
-    assert_file_not_exist 'tmpdatadir'
-
-    Dir.mkdir 'tmpdatadir'
-    rm_r 'tmpdatadir/'
-    assert_file_not_exist 'tmpdatadir'
-
-    Dir.mkdir 'tmp/tmpdir'
-    rm_r 'tmp/tmpdir/'
-    assert_file_not_exist 'tmp/tmpdir'
-    assert_file_exist     'tmp'
-
-    Dir.mkdir 'tmp/tmpdir'
-    rm_r 'tmp/tmpdir'
-    assert_file_not_exist 'tmp/tmpdir'
-    assert_file_exist     'tmp'
-
-    Dir.mkdir 'tmp/tmpdir'
-    File.open('tmp/tmpdir/a', 'w') {|f| f.puts 'dummy' }
-    File.open('tmp/tmpdir/b', 'w') {|f| f.puts 'dummy' }
-    File.open('tmp/tmpdir/c', 'w') {|f| f.puts 'dummy' }
-    rm_r 'tmp/tmpdir'
-    assert_file_not_exist 'tmp/tmpdir'
-    assert_file_exist     'tmp'
-
-    Dir.mkdir 'tmp/tmpdir'
-    File.open('tmp/tmpdir/a', 'w') {|f| f.puts 'dummy' }
-    File.open('tmp/tmpdir/c', 'w') {|f| f.puts 'dummy' }
-    rm_r ['tmp/tmpdir/a', 'tmp/tmpdir/b', 'tmp/tmpdir/c'], :force => true
-    assert_file_not_exist 'tmp/tmpdir/a'
-    assert_file_not_exist 'tmp/tmpdir/c'
-    Dir.rmdir 'tmp/tmpdir'
-
-if have_symlink?
-    # [ruby-talk:94635] a symlink to the directory
-    Dir.mkdir 'tmp/tmpdir'
-    File.symlink '..', 'tmp/tmpdir/symlink_to_dir'
-    rm_r 'tmp/tmpdir'
-    assert_file_not_exist 'tmp/tmpdir'
-    assert_file_exist     'tmp'
-end
-
-    # pathname
-    Dir.mkdir 'tmp/tmpdir1'; touch 'tmp/tmpdir1/tmp'
-    Dir.mkdir 'tmp/tmpdir2'; touch 'tmp/tmpdir2/tmp'
-    Dir.mkdir 'tmp/tmpdir3'; touch 'tmp/tmpdir3/tmp'
-    assert_nothing_raised {
-      rm_r Pathname.new('tmp/tmpdir1')
-      rm_r [Pathname.new('tmp/tmpdir2'), Pathname.new('tmp/tmpdir3')]
-    }
-    assert_file_not_exist 'tmp/tmpdir1'
-    assert_file_not_exist 'tmp/tmpdir2'
-    assert_file_not_exist 'tmp/tmpdir3'
-  end
-
-  def test_remove_entry_secure
-    check_singleton :remove_entry_secure
-
-    my_rm_rf 'tmpdatadir'
-
-    Dir.mkdir 'tmpdatadir'
-    remove_entry_secure 'tmpdatadir'
-    assert_file_not_exist 'tmpdatadir'
-
-    Dir.mkdir 'tmpdatadir'
-    remove_entry_secure 'tmpdatadir/'
-    assert_file_not_exist 'tmpdatadir'
-
-    Dir.mkdir 'tmp/tmpdir'
-    remove_entry_secure 'tmp/tmpdir/'
-    assert_file_not_exist 'tmp/tmpdir'
-    assert_file_exist     'tmp'
-
-    Dir.mkdir 'tmp/tmpdir'
-    remove_entry_secure 'tmp/tmpdir'
-    assert_file_not_exist 'tmp/tmpdir'
-    assert_file_exist     'tmp'
-
-    Dir.mkdir 'tmp/tmpdir'
-    File.open('tmp/tmpdir/a', 'w') {|f| f.puts 'dummy' }
-    File.open('tmp/tmpdir/b', 'w') {|f| f.puts 'dummy' }
-    File.open('tmp/tmpdir/c', 'w') {|f| f.puts 'dummy' }
-    remove_entry_secure 'tmp/tmpdir'
-    assert_file_not_exist 'tmp/tmpdir'
-    assert_file_exist     'tmp'
-
-    Dir.mkdir 'tmp/tmpdir'
-    File.open('tmp/tmpdir/a', 'w') {|f| f.puts 'dummy' }
-    File.open('tmp/tmpdir/c', 'w') {|f| f.puts 'dummy' }
-    remove_entry_secure 'tmp/tmpdir/a', true
-    remove_entry_secure 'tmp/tmpdir/b', true
-    remove_entry_secure 'tmp/tmpdir/c', true
-    assert_file_not_exist 'tmp/tmpdir/a'
-    assert_file_not_exist 'tmp/tmpdir/c'
-    Dir.rmdir 'tmp/tmpdir'
-
-if have_symlink?
-    # [ruby-talk:94635] a symlink to the directory
-    Dir.mkdir 'tmp/tmpdir'
-    File.symlink '..', 'tmp/tmpdir/symlink_to_dir'
-    remove_entry_secure 'tmp/tmpdir'
-    assert_file_not_exist 'tmp/tmpdir'
-    assert_file_exist     'tmp'
-end
-
-    # pathname
-    Dir.mkdir 'tmp/tmpdir1'; touch 'tmp/tmpdir1/tmp'
-    assert_nothing_raised {
-      remove_entry_secure Pathname.new('tmp/tmpdir1')
-    }
-    assert_file_not_exist 'tmp/tmpdir1'
-  end
-
-  def test_with_big_file
-    prepare_big_file
-
-    cp BIGFILE, 'tmp/cpdest'
-    assert_same_file BIGFILE, 'tmp/cpdest'
-    assert cmp(BIGFILE, 'tmp/cpdest'), 'orig != copied'
-
-    mv 'tmp/cpdest', 'tmp/mvdest'
-    assert_same_file BIGFILE, 'tmp/mvdest'
-    assert_file_not_exist 'tmp/cpdest'
-
-    rm 'tmp/mvdest'
-    assert_file_not_exist 'tmp/mvdest'
-  end
-
-if have_hardlink?
-  def test_ln
-    TARGETS.each do |fname|
-      ln fname, 'tmp/lndest'
-      assert_same_file fname, 'tmp/lndest'
-      File.unlink 'tmp/lndest'
-    end
-
-    ln TARGETS, 'tmp'
-    TARGETS.each do |fname|
-      assert_same_file fname, 'tmp/' + File.basename(fname)
-    end
-    TARGETS.each do |fname|
-      File.unlink 'tmp/' + File.basename(fname)
-    end
-
-    # src==dest (1) same path
-    touch 'tmp/cptmp'
-    assert_raises(Errno::EEXIST) {
-      ln 'tmp/cptmp', 'tmp/cptmp'
-    }
-if have_symlink?
-    # src==dest (2) symlink and its target
-    File.symlink 'cptmp', 'tmp/symlink'
-    assert_raises(Errno::EEXIST) {
-      ln 'tmp/cptmp', 'tmp/symlink'   # normal file -> symlink
-    }
-    assert_raises(Errno::EEXIST) {
-      ln 'tmp/symlink', 'tmp/cptmp'   # symlink -> normal file
-    }
-    # src==dest (3) looped symlink
-    File.symlink 'cptmp_symlink', 'tmp/cptmp_symlink'
-    begin
-      ln 'tmp/cptmp_symlink', 'tmp/cptmp_symlink'
-    rescue => err
-      assert_kind_of SystemCallError, err
-    end
-end
-
-    # pathname
-    touch 'tmp/lntmp'
-    assert_nothing_raised {
-      ln Pathname.new('tmp/lntmp'), 'tmp/lndesttmp1'
-      ln 'tmp/lntmp', Pathname.new('tmp/lndesttmp2')
-      ln Pathname.new('tmp/lntmp'), Pathname.new('tmp/lndesttmp3')
-    }
-  end
-end
-
-if have_symlink?
-  def test_ln_s
-    check_singleton :ln_s
-
-    TARGETS.each do |fname|
-      ln_s fname, 'tmp/lnsdest'
-      assert FileTest.symlink?('tmp/lnsdest'), 'not symlink'
-      assert_equal fname, File.readlink('tmp/lnsdest')
-      rm_f 'tmp/lnsdest'
-    end
-    assert_nothing_raised {
-      ln_s 'symlink', 'tmp/symlink'
-    }
-    assert_symlink 'tmp/symlink'
-
-    # pathname
-    touch 'tmp/lnsdest'
-    assert_nothing_raised {
-      ln_s Pathname.new('lnsdest'), 'tmp/symlink_tmp1'
-      ln_s 'lnsdest', Pathname.new('tmp/symlink_tmp2')
-      ln_s Pathname.new('lnsdest'), Pathname.new('tmp/symlink_tmp3')
-    }
-  end
-end
-
-if have_symlink?
-  def test_ln_sf
-    check_singleton :ln_sf
-
-    TARGETS.each do |fname|
-      ln_sf fname, 'tmp/lnsdest'
-      assert FileTest.symlink?('tmp/lnsdest'), 'not symlink'
-      assert_equal fname, File.readlink('tmp/lnsdest')
-      ln_sf fname, 'tmp/lnsdest'
-      ln_sf fname, 'tmp/lnsdest'
-    end
-    assert_nothing_raised {
-      ln_sf 'symlink', 'tmp/symlink'
-    }
-
-    # pathname
-    touch 'tmp/lns_dest'
-    assert_nothing_raised {
-      ln_sf Pathname.new('lns_dest'), 'tmp/symlink_tmp1'
-      ln_sf 'lns_dest', Pathname.new('tmp/symlink_tmp2')
-      ln_sf Pathname.new('lns_dest'), Pathname.new('tmp/symlink_tmp3')
-    }
-  end
-end
-
-  def test_mkdir
-    check_singleton :mkdir
-
-    my_rm_rf 'tmpdatadir'
-    mkdir 'tmpdatadir'
-    assert_directory 'tmpdatadir'
-    Dir.rmdir 'tmpdatadir'
-
-    mkdir 'tmpdatadir/'
-    assert_directory 'tmpdatadir'
-    Dir.rmdir 'tmpdatadir'
-
-    mkdir 'tmp/mkdirdest'
-    assert_directory 'tmp/mkdirdest'
-    Dir.rmdir 'tmp/mkdirdest'
-
-    mkdir 'tmp/tmp', :mode => 0700
-    assert_directory 'tmp/tmp'
-    assert_equal 0700, (File.stat('tmp/tmp').mode & 0777) if have_file_perm?
-    Dir.rmdir 'tmp/tmp'
-
-if have_file_perm?
-    mkdir 'tmp/tmp', :mode => 07777
-    assert_directory 'tmp/tmp'
-    assert_equal 07777, (File.stat('tmp/tmp').mode & 07777)
-    Dir.rmdir 'tmp/tmp'
-end
-
-if lf_in_path_allowed?
-    mkdir "tmp-first-line\ntmp-second-line"
-    assert_directory "tmp-first-line\ntmp-second-line"
-    Dir.rmdir "tmp-first-line\ntmp-second-line"
-end
-
-    # pathname
-    assert_nothing_raised {
-      mkdir Pathname.new('tmp/tmpdirtmp')
-      mkdir [Pathname.new('tmp/tmpdirtmp2'), Pathname.new('tmp/tmpdirtmp3')]
-    }
-  end
-
-  def test_mkdir_p
-    check_singleton :mkdir_p
-
-    dirs = %w(
-      tmpdir/dir/
-      tmpdir/dir/./
-      tmpdir/dir/./.././dir/
-      tmpdir/a
-      tmpdir/a/
-      tmpdir/a/b
-      tmpdir/a/b/
-      tmpdir/a/b/c/
-      tmpdir/a/b/c
-      tmpdir/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a
-      tmpdir/a/a
-    )
-    my_rm_rf 'tmpdir'
-    dirs.each do |d|
-      mkdir_p d
-      assert_directory d
-      assert_file_not_exist "#{d}/a"
-      assert_file_not_exist "#{d}/b"
-      assert_file_not_exist "#{d}/c"
-      my_rm_rf 'tmpdir'
-    end
-    dirs.each do |d|
-      mkdir_p d
-      assert_directory d
-    end
-    rm_rf 'tmpdir'
-    dirs.each do |d|
-      mkdir_p "#{Dir.pwd}/#{d}"
-      assert_directory d
-    end
-    rm_rf 'tmpdir'
-
-    mkdir_p 'tmp/tmp/tmp', :mode => 0700
-    assert_directory 'tmp/tmp'
-    assert_directory 'tmp/tmp/tmp'
-    assert_equal 0700, (File.stat('tmp/tmp').mode & 0777) if have_file_perm?
-    assert_equal 0700, (File.stat('tmp/tmp/tmp').mode & 0777) if have_file_perm?
-    rm_rf 'tmp/tmp'
-
-    mkdir_p 'tmp/tmp', :mode => 0
-    assert_directory 'tmp/tmp'
-    assert_equal 0, (File.stat('tmp/tmp').mode & 0777) if have_file_perm?
-    # DO NOT USE rm_rf here.
-    # (rm(1) try to chdir to parent directory, it fails to remove directory.)
-    Dir.rmdir 'tmp/tmp'
-    Dir.rmdir 'tmp'
-
-if have_file_perm?
-    mkdir_p 'tmp/tmp/tmp', :mode => 07777
-    assert_directory 'tmp/tmp/tmp'
-    assert_equal 07777, (File.stat('tmp/tmp/tmp').mode & 07777)
-    Dir.rmdir 'tmp/tmp/tmp'
-    Dir.rmdir 'tmp/tmp'
-end
-
-    # pathname
-    assert_nothing_raised {
-      mkdir_p Pathname.new('tmp/tmp/tmp')
-    }
-  end
-
-  def test_install
-    check_singleton :install
-
-    File.open('tmp/aaa', 'w') {|f| f.puts 'aaa' }
-    File.open('tmp/bbb', 'w') {|f| f.puts 'bbb' }
-    install 'tmp/aaa', 'tmp/bbb', :mode => 0600
-    assert_equal "aaa\n", File.read('tmp/bbb')
-    assert_equal 0600, (File.stat('tmp/bbb').mode & 0777) if have_file_perm?
-
-    t = File.mtime('tmp/bbb')
-    install 'tmp/aaa', 'tmp/bbb'
-    assert_equal "aaa\n", File.read('tmp/bbb')
-    assert_equal 0600, (File.stat('tmp/bbb').mode & 0777) if have_file_perm?
-    assert_equal t, File.mtime('tmp/bbb')
-
-    File.unlink 'tmp/aaa'
-    File.unlink 'tmp/bbb'
-
-    # src==dest (1) same path
-    touch 'tmp/cptmp'
-    assert_raises(ArgumentError) {
-      install 'tmp/cptmp', 'tmp/cptmp'
-    }
-if have_symlink?
-    # src==dest (2) symlink and its target
-    File.symlink 'cptmp', 'tmp/cptmp_symlink'
-    assert_raises(ArgumentError) {
-      install 'tmp/cptmp', 'tmp/cptmp_symlink'
-    }
-    assert_raises(ArgumentError) {
-      install 'tmp/cptmp_symlink', 'tmp/cptmp'
-    }
-    # src==dest (3) looped symlink
-    File.symlink 'symlink', 'tmp/symlink'
-    assert_raises(Errno::ELOOP) {
-      # File#install invokes open(2), always ELOOP must be raised
-      install 'tmp/symlink', 'tmp/symlink'
-    }
-end
-
-    # pathname
-    assert_nothing_raised {
-      rm_f 'tmp/a'; touch 'tmp/a'
-      install 'tmp/a', Pathname.new('tmp/b')
-      rm_f 'tmp/a'; touch 'tmp/a'
-      install Pathname.new('tmp/a'), 'tmp/b'
-      rm_f 'tmp/a'; touch 'tmp/a'
-      install Pathname.new('tmp/a'), Pathname.new('tmp/b')
-      rm_f 'tmp/a'
-      touch 'tmp/a'
-      touch 'tmp/b'
-      mkdir 'tmp/dest'
-      install [Pathname.new('tmp/a'), Pathname.new('tmp/b')], 'tmp/dest'
-      my_rm_rf 'tmp/dest'
-      mkdir 'tmp/dest'
-      install [Pathname.new('tmp/a'), Pathname.new('tmp/b')], Pathname.new('tmp/dest')
-    }
-  end
-
-if have_file_perm?
-  def test_chmod
-    check_singleton :chmod
-
-    touch 'tmp/a'
-    chmod 0700, 'tmp/a'
-    assert_equal 0700, File.stat('tmp/a').mode & 0777
-    chmod 0500, 'tmp/a'
-    assert_equal 0500, File.stat('tmp/a').mode & 0777
-  end
-
-  def test_chmod_R
-    check_singleton :chmod_R
-
-    mkdir_p 'tmp/dir/dir'
-    touch %w( tmp/dir/file tmp/dir/dir/file )
-    chmod_R 0700, 'tmp/dir'
-    assert_equal 0700, File.stat('tmp/dir').mode & 0777
-    assert_equal 0700, File.stat('tmp/dir/file').mode & 0777
-    assert_equal 0700, File.stat('tmp/dir/dir').mode & 0777
-    assert_equal 0700, File.stat('tmp/dir/dir/file').mode & 0777
-    chmod_R 0500, 'tmp/dir'
-    assert_equal 0500, File.stat('tmp/dir').mode & 0777
-    assert_equal 0500, File.stat('tmp/dir/file').mode & 0777
-    assert_equal 0500, File.stat('tmp/dir/dir').mode & 0777
-    assert_equal 0500, File.stat('tmp/dir/dir/file').mode & 0777
-    chmod_R 0700, 'tmp/dir'   # to remove
-  end
-
-  # FIXME: How can I test this method?
-  def test_chown
-    check_singleton :chown
-  end
-
-  # FIXME: How can I test this method?
-  def test_chown_R
-    check_singleton :chown_R
-  end
-end
-
-  def test_copy_entry
-    check_singleton :copy_entry
-
-    each_srcdest do |srcpath, destpath|
-      copy_entry srcpath, destpath
-      assert_same_file srcpath, destpath
-      assert_equal File.stat(srcpath).ftype, File.stat(destpath).ftype
-    end
-if have_symlink?
-    # root is a symlink
-    File.symlink 'somewhere', 'tmp/symsrc'
-    copy_entry 'tmp/symsrc', 'tmp/symdest'
-    assert_symlink 'tmp/symdest'
-    assert_equal 'somewhere', File.readlink('tmp/symdest')
-
-    # content is a symlink
-    mkdir 'tmp/dir'
-    File.symlink 'somewhere', 'tmp/dir/sym'
-    copy_entry 'tmp/dir', 'tmp/dirdest'
-    assert_directory 'tmp/dirdest'
-    assert_not_symlink 'tmp/dirdest'
-    assert_symlink 'tmp/dirdest/sym'
-    assert_equal 'somewhere', File.readlink('tmp/dirdest/sym')
-end
-  end
-
-  def test_copy_file
-    check_singleton :copy_file
-
-    each_srcdest do |srcpath, destpath|
-      copy_file srcpath, destpath
-      assert_same_file srcpath, destpath
-    end
-  end
-
-  def test_copy_stream
-    check_singleton :copy_stream
-    # IO
-    each_srcdest do |srcpath, destpath|
-      File.open(srcpath) {|src|
-        File.open(destpath, 'w') {|dest|
-          copy_stream src, dest
-        }
-      }
-      assert_same_file srcpath, destpath
-    end
-
-    # duck typing test  [ruby-dev:25369]
-    my_rm_rf 'tmp'
-    Dir.mkdir 'tmp'
-    each_srcdest do |srcpath, destpath|
-      File.open(srcpath) {|src|
-        File.open(destpath, 'w') {|dest|
-          copy_stream Stream.new(src), Stream.new(dest)
-        }
-      }
-      assert_same_file srcpath, destpath
-    end
-  end
-
-  def test_remove_file
-    check_singleton :remove_file
-    File.open('data/tmp', 'w') {|f| f.puts 'dummy' }
-    remove_file 'data/tmp'
-    assert_file_not_exist 'data/tmp'
-if have_file_perm?
-    File.open('data/tmp', 'w') {|f| f.puts 'dummy' }
-    File.chmod 0, 'data/tmp'
-    remove_file 'data/tmp'
-    assert_file_not_exist 'data/tmp'
-end
-  end
-
-  def test_remove_dir
-    check_singleton :remove_dir
-    Dir.mkdir 'data/tmpdir'
-    File.open('data/tmpdir/a', 'w') {|f| f.puts 'dummy' }
-    remove_dir 'data/tmpdir'
-    assert_file_not_exist 'data/tmpdir'
-if have_file_perm?
-    Dir.mkdir 'data/tmpdir'
-    File.chmod 0555, 'data/tmpdir'
-    remove_dir 'data/tmpdir'
-    assert_file_not_exist 'data/tmpdir'
-end
-  end
-
-  def test_compare_file
-    check_singleton :compare_file
-    # FIXME
-  end
-
-  def test_compare_stream
-    check_singleton :compare_stream
-    # FIXME
-  end
-
-  class Stream
-    def initialize(f)
-      @f = f
-    end
-
-    def read(n)
-      @f.read(n)
-    end
-
-    def write(str)
-      @f.write str
-    end
-  end
-
-  def test_uptodate?
-    check_singleton :uptodate?
-    prepare_time_data
-    Dir.chdir('data') {
-      assert(   uptodate?('newest', %w(old newer notexist)) )
-      assert( ! uptodate?('newer', %w(old newest notexist)) )
-      assert( ! uptodate?('notexist', %w(old newest newer)) )
-    }
-
-    # pathname
-    touch 'tmp/a'
-    touch 'tmp/b'
-    touch 'tmp/c'
-    assert_nothing_raised {
-      uptodate? Pathname.new('tmp/a'), ['tmp/b', 'tmp/c']
-      uptodate? 'tmp/a', [Pathname.new('tmp/b'), 'tmp/c']
-      uptodate? 'tmp/a', ['tmp/b', Pathname.new('tmp/c')]
-      uptodate? Pathname.new('tmp/a'), [Pathname.new('tmp/b'), Pathname.new('tmp/c')]
-    }
-  end
-
-  def test_cd
-    check_singleton :cd
-  end
-
-  def test_chdir
-    check_singleton :chdir
-  end
-
-  def test_getwd
-    check_singleton :getwd
-  end
-
-  def test_identical?
-    check_singleton :identical?
-  end
-
-  def test_link
-    check_singleton :link
-  end
-
-  def test_makedirs
-    check_singleton :makedirs
-  end
-
-  def test_mkpath
-    check_singleton :mkpath
-  end
-
-  def test_move
-    check_singleton :move
-  end
-
-  def test_rm_rf
-    check_singleton :rm_rf
-  end
-
-  def test_rmdir
-    check_singleton :rmdir
-  end
-
-  def test_rmtree
-    check_singleton :rmtree
-  end
-
-  def test_safe_unlink
-    check_singleton :safe_unlink
-  end
-
-  def test_symlink
-    check_singleton :symlink
-  end
-
-  def test_touch
-    check_singleton :touch
-  end
-
-  def test_collect_methods
-  end
-
-  def test_commands
-  end
-
-  def test_have_option?
-  end
-
-  def test_options
-  end
-
-  def test_options_of
-  end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/fileutils/test_nowrite.rb b/ruby/doc/ruby/ruby-1.8.7/test/fileutils/test_nowrite.rb
deleted file mode 100644 (file)
index 091e211..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-# $Id: test_nowrite.rb 11708 2007-02-12 23:01:19Z shyouhei $
-
-require 'fileutils'
-require 'fileasserts'
-require 'tmpdir'
-require 'test/unit'
-
-class TestFileUtilsNoWrite < Test::Unit::TestCase
-
-  include FileUtils::NoWrite
-
-  def test_visibility
-    FileUtils::METHODS.each do |m|
-      assert_equal true, FileUtils::NoWrite.respond_to?(m, true),
-                   "FileUtils::NoWrite.#{m} is not defined"
-      assert_equal true, FileUtils::NoWrite.respond_to?(m, false),
-                   "FileUtils::NoWrite.#{m} is not public"
-    end
-    FileUtils::METHODS.each do |m|
-      assert_equal true, respond_to?(m, true),
-                   "FileUtils::NoWrite\##{m} is not defined"
-      assert_equal true, FileUtils::NoWrite.private_method_defined?(m),
-                   "FileUtils::NoWrite\##{m} is not private"
-    end
-  end
-
-  def my_rm_rf(path)
-    if File.exist?('/bin/rm')
-      system %Q[/bin/rm -rf "#{path}"]
-    else
-      FileUtils.rm_rf path
-    end
-  end
-
-  SRC  = 'data/src'
-  COPY = 'data/copy'
-
-  def setup
-    @prevdir = Dir.pwd
-    tmproot = "#{Dir.tmpdir}/fileutils.rb.#{$$}"
-    Dir.mkdir tmproot unless File.directory?(tmproot)
-    Dir.chdir tmproot
-    my_rm_rf 'data'; Dir.mkdir 'data'
-    my_rm_rf 'tmp'; Dir.mkdir 'tmp'
-    File.open(SRC,  'w') {|f| f.puts 'dummy' }
-    File.open(COPY, 'w') {|f| f.puts 'dummy' }
-  end
-
-  def teardown
-    tmproot = Dir.pwd
-    Dir.chdir @prevdir
-    my_rm_rf tmproot
-  end
-
-  def test_cp
-    cp SRC, 'tmp/cp'
-    check 'tmp/cp'
-  end
-
-  def test_mv
-    mv SRC, 'tmp/mv'
-    check 'tmp/mv'
-  end
-
-  def check(dest)
-    assert_file_not_exist dest
-    assert_file_exist SRC
-    assert_same_file SRC, COPY
-  end
-
-  def test_rm
-    rm SRC
-    assert_file_exist SRC
-    assert_same_file SRC, COPY
-  end
-
-  def test_rm_f
-    rm_f SRC
-    assert_file_exist SRC
-    assert_same_file SRC, COPY
-  end
-
-  def test_rm_rf
-    rm_rf SRC
-    assert_file_exist SRC
-    assert_same_file SRC, COPY
-  end
-
-  def test_mkdir
-    mkdir 'dir'
-    assert_file_not_exist 'dir'
-  end
-
-  def test_mkdir_p
-    mkdir 'dir/dir/dir'
-    assert_file_not_exist 'dir'
-  end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/fileutils/test_verbose.rb b/ruby/doc/ruby/ruby-1.8.7/test/fileutils/test_verbose.rb
deleted file mode 100644 (file)
index 86ccd83..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-# $Id: test_verbose.rb 11708 2007-02-12 23:01:19Z shyouhei $
-
-require 'test/unit'
-require 'fileutils'
-
-class TestFileUtilsVerbose < Test::Unit::TestCase
-
-  include FileUtils::Verbose
-
-  def test_visibility
-    FileUtils::METHODS.each do |m|
-      assert_equal true, FileUtils::Verbose.respond_to?(m, true),
-                   "FileUtils::Verbose.#{m} is not defined"
-      assert_equal true, FileUtils::Verbose.respond_to?(m, false),
-                   "FileUtils::Verbose.#{m} is not public"
-    end
-    FileUtils::METHODS.each do |m|
-      assert_equal true, respond_to?(m, true),
-                   "FileUtils::Verbose.#{m} is not defined"
-      assert_equal true, FileUtils::Verbose.private_method_defined?(m),
-                   "FileUtils::Verbose.#{m} is not private"
-    end
-  end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/gdbm/test_gdbm.rb b/ruby/doc/ruby/ruby-1.8.7/test/gdbm/test_gdbm.rb
deleted file mode 100644 (file)
index 5b25497..0000000
+++ /dev/null
@@ -1,692 +0,0 @@
-require 'test/unit'
-
-begin
-  require 'gdbm'
-rescue LoadError
-end
-
-if defined? GDBM
-  require 'tmpdir'
-  require 'fileutils'
-
-  class TestGDBM < Test::Unit::TestCase
-    def TestGDBM.uname_s
-      require 'rbconfig'
-      case Config::CONFIG['target_os']
-      when 'cygwin'
-        require 'Win32API'
-        uname = Win32API.new('cygwin1', 'uname', 'P', 'I')
-        utsname = ' ' * 100
-        raise 'cannot get system name' if uname.call(utsname) == -1
-
-        utsname.unpack('A20' * 5)[0]
-      else
-        Config::CONFIG['target_os']
-      end
-    end
-    SYSTEM = uname_s
-
-    def setup
-      @path = "tmptest_gdbm_"
-      assert_instance_of(GDBM, @gdbm = GDBM.new(@path))
-
-      # prepare to make readonly GDBM file
-      GDBM.open("tmptest_gdbm_rdonly", 0400) {|gdbm|
-        gdbm['foo'] = 'FOO'
-      }
-      assert_instance_of(GDBM, @gdbm_rdonly = GDBM.new("tmptest_gdbm_rdonly", nil))
-    end
-    def teardown
-      assert_nil(@gdbm.close)
-      assert_nil(@gdbm_rdonly.close)
-      ObjectSpace.each_object(GDBM) do |obj|
-        obj.close unless obj.closed?
-      end
-      File.delete *Dir.glob("*tmptest_gdbm*").to_a
-      p Dir.glob("*tmptest_gdbm*") if $DEBUG
-    end
-
-    def check_size(expect, gdbm=@gdbm)
-      assert_equal(expect, gdbm.size)
-      n = 0
-      gdbm.each { n+=1 }
-      assert_equal(expect, n)
-      if expect == 0
-        assert_equal(true, gdbm.empty?)
-      else
-        assert_equal(false, gdbm.empty?)
-      end
-    end
-
-    def have_fork?
-      begin
-        fork{}
-        true
-      rescue NotImplementedError
-        false
-      end
-    end
-
-    def test_s_new_has_no_block
-      # GDBM.new ignore the block
-      foo = true
-      assert_instance_of(GDBM, gdbm = GDBM.new("tmptest_gdbm") { foo = false })
-      assert_equal(foo, true)
-      assert_nil(gdbm.close)
-    end
-    def test_s_open_create_new
-      return if /^CYGWIN_9/ =~ SYSTEM
-
-      save_mask = File.umask(0)
-      begin
-        assert_instance_of(GDBM, gdbm = GDBM.open("tmptest_gdbm"))
-        gdbm.close
-        assert_equal(File.stat("tmptest_gdbm").mode & 0777, 0666)
-        assert_instance_of(GDBM, gdbm = GDBM.open("tmptest_gdbm2", 0644))
-        gdbm.close
-        assert_equal(File.stat("tmptest_gdbm2").mode & 0777, 0644)
-      ensure
-        File.umask save_mask
-      end
-    end
-    def test_s_open_no_create
-      assert_nil(gdbm = GDBM.open("tmptest_gdbm", nil),
-                 "this test is failed on libgdbm 1.8.0")
-    ensure
-      gdbm.close if gdbm
-    end
-    def test_s_open_3rd_arg
-      assert_instance_of(GDBM, gdbm = GDBM.open("tmptest_gdbm", 0644,
-                                                GDBM::FAST))
-      gdbm.close
-
-      # gdbm 1.8.0 specific
-      if defined? GDBM::SYNC
-        assert_instance_of(GDBM, gdbm = GDBM.open("tmptest_gdbm", 0644,
-                                                  GDBM::SYNC))
-        gdbm.close
-      end
-      # gdbm 1.8.0 specific
-      if defined? GDBM::NOLOCK
-        assert_instance_of(GDBM, gdbm = GDBM.open("tmptest_gdbm", 0644,
-                                                  GDBM::NOLOCK))
-        gdbm.close
-      end
-    end
-    def test_s_open_with_block
-      assert_equal(GDBM.open("tmptest_gdbm") { :foo }, :foo)
-    end
-    def test_s_open_lock
-      return unless have_fork? # snip this test
-      pid = fork() {
-        assert_instance_of(GDBM, gdbm  = GDBM.open("tmptest_gdbm", 0644))
-        sleep 2
-      }
-      begin
-        sleep 1
-        assert_raise(Errno::EWOULDBLOCK) {
-          begin
-            assert_instance_of(GDBM, gdbm2 = GDBM.open("tmptest_gdbm", 0644))
-          rescue Errno::EAGAIN, Errno::EACCES
-            raise Errno::EWOULDBLOCK
-          end
-        }
-      ensure
-        Process.wait pid
-      end
-    end
-
-=begin
-    # Is it guaranteed on many OS?
-    def test_s_open_lock_one_process
-      # locking on one process
-      assert_instance_of(GDBM, gdbm  = GDBM.open("tmptest_gdbm", 0644))
-      assert_raise(Errno::EWOULDBLOCK) {
-        begin
-          GDBM.open("tmptest_gdbm", 0644)
-        rescue Errno::EAGAIN
-          raise Errno::EWOULDBLOCK
-        end
-      }
-    end
-=end
-
-    def test_s_open_nolock
-      # gdbm 1.8.0 specific
-      if not defined? GDBM::NOLOCK
-        return
-      end
-      return unless have_fork? # snip this test
-
-      pid = fork() {
-        assert_instance_of(GDBM, gdbm  = GDBM.open("tmptest_gdbm", 0644,
-                                                  GDBM::NOLOCK))
-        sleep 2
-      }
-      sleep 1
-      begin
-        gdbm2 = nil
-        assert_nothing_raised(Errno::EWOULDBLOCK, Errno::EAGAIN, Errno::EACCES) {
-          assert_instance_of(GDBM, gdbm2 = GDBM.open("tmptest_gdbm", 0644))
-        }
-      ensure
-        Process.wait pid
-        gdbm2.close if gdbm2
-      end
-
-      p Dir.glob("tmptest_gdbm*") if $DEBUG
-
-      pid = Process.fork() {
-        assert_instance_of(GDBM, gdbm  = GDBM.open("tmptest_gdbm", 0644))
-        sleep 2
-      }
-      begin
-        sleep 1
-        gdbm2 = nil
-        assert_nothing_raised(Errno::EWOULDBLOCK, Errno::EAGAIN, Errno::EACCES) {
-          # this test is failed on Cygwin98 (???)
-          assert_instance_of(GDBM, gdbm2 = GDBM.open("tmptest_gdbm", 0644,
-                                                     GDBM::NOLOCK))
-        }
-      ensure
-        Process.wait pid
-        gdbm2.close if gdbm2
-      end
-    end
-
-    def test_s_open_error
-      return if /(ms|bcc)win|mingw|djgpp/ =~ RUBY_PLATFORM
-      assert_instance_of(GDBM, gdbm = GDBM.open("tmptest_gdbm", 0))
-      assert_raise(Errno::EACCES) {
-        GDBM.open("tmptest_gdbm", 0)
-      }
-      gdbm.close
-    end
-
-    def test_close
-      assert_instance_of(GDBM, gdbm = GDBM.open("tmptest_gdbm"))
-      assert_nil(gdbm.close)
-
-      # closed GDBM file
-      assert_raise(RuntimeError) { gdbm.close }
-    end
-
-    def test_aref
-      assert_equal('bar', @gdbm['foo'] = 'bar')
-      assert_equal('bar', @gdbm['foo'])
-
-      assert_nil(@gdbm['bar'])
-    end
-
-    def test_fetch
-      assert_equal('bar', @gdbm['foo']='bar')
-      assert_equal('bar', @gdbm.fetch('foo'))
-
-      # key not found
-      assert_raise(IndexError) {
-        @gdbm.fetch('bar')
-      }
-
-      # test for `ifnone' arg
-      assert_equal('baz', @gdbm.fetch('bar', 'baz'))
-
-      # test for `ifnone' block
-      assert_equal('foobar', @gdbm.fetch('bar') {|key| 'foo' + key })
-    end
-
-    def test_aset
-      num = 0
-      2.times {|i|
-        assert_equal('foo', @gdbm['foo'] = 'foo')
-        assert_equal('foo', @gdbm['foo'])
-        assert_equal('bar', @gdbm['foo'] = 'bar')
-        assert_equal('bar', @gdbm['foo'])
-
-        num += 1 if i == 0
-        assert_equal(num, @gdbm.size)
-
-        # assign nil
-        assert_equal('', @gdbm['bar'] = '')
-        assert_equal('', @gdbm['bar'])
-
-        num += 1 if i == 0
-        assert_equal(num, @gdbm.size)
-
-        # empty string
-        assert_equal('', @gdbm[''] = '')
-        assert_equal('', @gdbm[''])
-
-        num += 1 if i == 0
-        assert_equal(num, @gdbm.size)
-
-        # Fixnum
-        assert_equal('200', @gdbm['100'] = '200')
-        assert_equal('200', @gdbm['100'])
-
-        num += 1 if i == 0
-        assert_equal(num, @gdbm.size)
-
-        # Big key and value
-        assert_equal('y' * 100, @gdbm['x' * 100] = 'y' * 100)
-        assert_equal('y' * 100, @gdbm['x' * 100])
-
-        num += 1 if i == 0
-        assert_equal(num, @gdbm.size)
-      }
-    end
-
-    def test_index
-      assert_equal('bar', @gdbm['foo'] = 'bar')
-      assert_equal('foo', @gdbm.index('bar'))
-      assert_nil(@gdbm['bar'])
-    end
-
-    def test_values_at
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-      @gdbm[keys[0]], @gdbm[keys[1]], @gdbm[keys[2]] = values
-      assert_equal(values.reverse, @gdbm.values_at(*keys.reverse))
-    end
-
-    def test_select_with_block
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-      @gdbm[keys[0]], @gdbm[keys[1]], @gdbm[keys[2]] = values
-      ret = @gdbm.select {|k,v|
-        assert_equal(k.upcase, v)
-        k != "bar"
-      }
-      assert_equal([['baz', 'BAZ'], ['foo', 'FOO']],
-                    ret.sort)
-    end
-
-    def test_length
-      num = 10
-      assert_equal(0, @gdbm.size)
-      num.times {|i|
-        i = i.to_s
-        @gdbm[i] = i
-      }
-      assert_equal(num, @gdbm.size)
-
-      @gdbm.shift
-
-      assert_equal(num - 1, @gdbm.size)
-    end
-
-    def test_empty?
-      assert_equal(true, @gdbm.empty?)
-      @gdbm['foo'] = 'FOO'
-      assert_equal(false, @gdbm.empty?)
-    end
-
-    def test_each_pair
-      n = 0
-      @gdbm.each_pair { n += 1 }
-      assert_equal(0, n)
-
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-
-      @gdbm[keys[0]], @gdbm[keys[1]], @gdbm[keys[2]] = values
-
-      n = 0
-      ret = @gdbm.each_pair {|key, val|
-        assert_not_nil(i = keys.index(key))
-        assert_equal(val, values[i])
-
-        n += 1
-      }
-      assert_equal(keys.size, n)
-      assert_equal(@gdbm, ret)
-    end
-
-    def test_each_value
-      n = 0
-      @gdbm.each_value { n += 1 }
-      assert_equal(0, n)
-
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-
-      @gdbm[keys[0]], @gdbm[keys[1]], @gdbm[keys[2]] = values
-
-      n = 0
-      ret = @gdbm.each_value {|val|
-        assert_not_nil(key = @gdbm.index(val))
-        assert_not_nil(i = keys.index(key))
-        assert_equal(val, values[i])
-
-        n += 1
-      }
-      assert_equal(keys.size, n)
-      assert_equal(@gdbm, ret)
-    end
-
-    def test_each_key
-      n = 0
-      @gdbm.each_key { n += 1 }
-      assert_equal(0, n)
-
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-
-      @gdbm[keys[0]], @gdbm[keys[1]], @gdbm[keys[2]] = values
-
-      n = 0
-      ret = @gdbm.each_key {|key|
-        assert_not_nil(i = keys.index(key))
-        assert_equal(@gdbm[key], values[i])
-
-        n += 1
-      }
-      assert_equal(keys.size, n)
-      assert_equal(@gdbm, ret)
-    end
-
-    def test_keys
-      assert_equal([], @gdbm.keys)
-
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-
-      @gdbm[keys[0]], @gdbm[keys[1]], @gdbm[keys[2]] = values
-
-      assert_equal(keys.sort, @gdbm.keys.sort)
-      assert_equal(values.sort, @gdbm.values.sort)
-    end
-
-    def test_values
-      test_keys
-    end
-
-    def test_shift
-      assert_nil(@gdbm.shift)
-      assert_equal(0, @gdbm.size)
-
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-
-      @gdbm[keys[0]], @gdbm[keys[1]], @gdbm[keys[2]] = values
-
-      ret_keys = []
-      ret_values = []
-      while ret = @gdbm.shift
-        ret_keys.push ret[0]
-        ret_values.push ret[1]
-
-        assert_equal(keys.size - ret_keys.size, @gdbm.size)
-      end
-
-      assert_equal(keys.sort, ret_keys.sort)
-      assert_equal(values.sort, ret_values.sort)
-    end
-
-    def test_delete
-      keys = %w(foo bar baz)
-      values = %w(FOO BAR BAZ)
-      key = keys[1]
-
-      assert_nil(@gdbm.delete(key))
-      assert_equal(0, @gdbm.size)
-
-      @gdbm[keys[0]], @gdbm[keys[1]], @gdbm[keys[2]] = values
-
-      assert_equal('BAR', @gdbm.delete(key))
-      assert_nil(@gdbm[key])
-      assert_equal(2, @gdbm.size)
-
-      assert_nil(@gdbm.delete(key))
-
-      if /^CYGWIN_9/ !~ SYSTEM
-        assert_raise(GDBMError) {
-          @gdbm_rdonly.delete("foo")
-        }
-
-        assert_nil(@gdbm_rdonly.delete("bar"))
-      end
-    end
-    def test_delete_with_block
-      key = 'no called block'
-      @gdbm[key] = 'foo'
-      assert_equal('foo', @gdbm.delete(key) {|k| k.replace 'called block'})
-      assert_equal('no called block', key)
-      assert_equal(0, @gdbm.size)
-
-      key = 'no called block'
-      assert_equal(:blockval,
-                    @gdbm.delete(key) {|k| k.replace 'called block'; :blockval})
-      assert_equal('called block', key)
-      assert_equal(0, @gdbm.size)
-    end
-
-    def test_delete_if
-      v = "0"
-      100.times {@gdbm[v] = v; v = v.next}
-
-      ret = @gdbm.delete_if {|key, val| key.to_i < 50}
-      assert_equal(@gdbm, ret)
-      check_size(50, @gdbm)
-
-      ret = @gdbm.delete_if {|key, val| key.to_i >= 50}
-      assert_equal(@gdbm, ret)
-      check_size(0, @gdbm)
-
-      # break
-      v = "0"
-      100.times {@gdbm[v] = v; v = v.next}
-      check_size(100, @gdbm)
-      n = 0;
-      @gdbm.delete_if {|key, val|
-        break if n > 50
-        n+=1
-        true
-      }
-      assert_equal(51, n)
-      check_size(49, @gdbm)
-
-      @gdbm.clear
-
-      # raise
-      v = "0"
-      100.times {@gdbm[v] = v; v = v.next}
-      check_size(100, @gdbm)
-      n = 0;
-      begin
-        @gdbm.delete_if {|key, val|
-          raise "runtime error" if n > 50
-          n+=1
-          true
-        }
-      rescue
-      end
-      assert_equal(51, n)
-      check_size(49, @gdbm)
-    end
-
-    def test_reject
-      v = "0"
-      100.times {@gdbm[v] = v; v = v.next}
-
-      hash = @gdbm.reject {|key, val| key.to_i < 50}
-      assert_instance_of(Hash, hash)
-      assert_equal(100, @gdbm.size)
-
-      assert_equal(50, hash.size)
-      hash.each_pair {|key,val|
-        assert_equal(false, key.to_i < 50)
-        assert_equal(key, val)
-      }
-
-      hash = @gdbm.reject {|key, val| key.to_i < 100}
-      assert_instance_of(Hash, hash)
-      assert_equal(true, hash.empty?)
-    end
-
-    def test_clear
-      v = "1"
-      100.times {v = v.next; @gdbm[v] = v}
-
-      assert_equal(@gdbm, @gdbm.clear)
-
-      # validate GDBM#size
-      i = 0
-      @gdbm.each { i += 1 }
-      assert_equal(@gdbm.size, i)
-      assert_equal(0, i)
-    end
-
-    def test_invert
-      v = "0"
-      100.times {@gdbm[v] = v; v = v.next}
-
-      hash = @gdbm.invert
-      assert_instance_of(Hash, hash)
-      assert_equal(100, hash.size)
-      hash.each_pair {|key, val|
-        assert_equal(key.to_i, val.to_i)
-      }
-    end
-
-    def test_update
-      hash = {}
-      v = "0"
-      100.times {v = v.next; hash[v] = v}
-
-      @gdbm["101"] = "101"
-      @gdbm.update hash
-      assert_equal(101, @gdbm.size)
-      @gdbm.each_pair {|key, val|
-        assert_equal(key.to_i, val.to_i)
-      }
-    end
-
-    def test_replace
-      hash = {}
-      v = "0"
-      100.times {v = v.next; hash[v] = v}
-
-      @gdbm["101"] = "101"
-      @gdbm.replace hash
-      assert_equal(100, @gdbm.size)
-      @gdbm.each_pair {|key, val|
-        assert_equal(key.to_i, val.to_i)
-      }
-    end
-
-    def test_reorganize
-      size1 = File.size(@path)
-      i = "1"
-      1000.times {i = i.next; @gdbm[i] = i}
-      @gdbm.clear
-      @gdbm.sync
-
-      size2 = File.size(@path)
-      @gdbm.reorganize
-      size3 = File.size(@path)
-
-      # p [size1, size2, size3]
-      assert_equal(true, size1 < size2)
-      # this test is failed on Cygwin98. `GDBM version 1.8.0, as of May 19, 1999'
-      assert_equal(true, size3 < size2)
-      assert_equal(size1, size3)
-    end
-
-    def test_sync
-      assert_instance_of(GDBM, gdbm = GDBM.open('tmptest_gdbm', 0666, GDBM::FAST))
-      assert_equal(gdbm.sync, gdbm)
-      gdbm.close
-      assert_instance_of(GDBM, gdbm = GDBM.open('tmptest_gdbm', 0666))
-      assert_equal(gdbm.sync, gdbm)
-      gdbm.close
-    end
-
-    def test_cachesize=
-        assert_equal(@gdbm.cachesize = 1024, 1024)
-    end
-
-    def test_fastmode=
-        assert_equal(@gdbm.fastmode = true, true)
-    end
-
-    def test_syncmode=
-        assert_equal(@gdbm.syncmode = true, true)
-    end
-
-    def test_haskey?
-      assert_equal('bar', @gdbm['foo']='bar')
-      assert_equal(true,  @gdbm.has_key?('foo'))
-      assert_equal(false, @gdbm.has_key?('bar'))
-    end
-
-    def test_has_value?
-      assert_equal('bar', @gdbm['foo']='bar')
-      assert_equal(true,  @gdbm.has_value?('bar'))
-      assert_equal(false, @gdbm.has_value?('foo'))
-    end
-
-    def test_to_a
-      v = "0"
-      100.times {v = v.next; @gdbm[v] = v}
-
-      ary = @gdbm.to_a
-      assert_instance_of(Array, ary)
-      assert_equal(100, ary.size)
-      ary.each {|key,val|
-        assert_equal(key.to_i, val.to_i)
-      }
-    end
-
-    def test_to_hash
-      v = "0"
-      100.times {v = v.next; @gdbm[v] = v}
-
-      hash = @gdbm.to_hash
-      assert_instance_of(Hash, hash)
-      assert_equal(100, hash.size)
-      hash.each {|key,val|
-        assert_equal(key.to_i, val.to_i)
-      }
-    end
-  end
-
-  class TestGDBM2 < Test::Unit::TestCase
-    TMPROOT = "#{Dir.tmpdir}/ruby-gdbm.#{$$}"
-
-    def setup
-      Dir.mkdir TMPROOT
-    end
-
-    def teardown
-      FileUtils.rm_rf TMPROOT if File.directory?(TMPROOT)
-    end
-
-    def test_reader_open
-      GDBM.open("#{TMPROOT}/a.dbm") {}
-      v = GDBM.open("#{TMPROOT}/a.dbm", nil, GDBM::READER) {|d|
-        assert_raises(GDBMError) { d["k"] = "v" }
-        true
-      }
-      assert(v)
-    end
-
-    def test_newdb_open
-      GDBM.open("#{TMPROOT}/a.dbm") {|dbm|
-        dbm["k"] = "v"
-      } 
-      v = GDBM.open("#{TMPROOT}/a.dbm", nil, GDBM::NEWDB) {|d|
-        assert_equal(0, d.length)
-        assert_nil(d["k"])
-        true
-      }
-      assert(v)
-    end
-
-    def test_freeze
-      GDBM.open("#{TMPROOT}/a.dbm") {|d|
-        d.freeze
-        assert_raises(TypeError) { d["k"] = "v" }
-      }
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/iconv/test_basic.rb b/ruby/doc/ruby/ruby-1.8.7/test/iconv/test_basic.rb
deleted file mode 100644 (file)
index ea564e9..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-require File.join(File.dirname(__FILE__), "utils.rb")
-
-class TestIconv::Basic < TestIconv
-  def test_euc2sjis
-    iconv = Iconv.open('SHIFT_JIS', 'EUC-JP')
-    str = iconv.iconv(EUCJ_STR)
-    str << iconv.iconv(nil)
-    assert_equal(SJIS_STR, str)
-    iconv.close
-  end
-
-  def test_close
-    iconv = Iconv.new('Shift_JIS', 'EUC-JP')
-    output = ""
-    begin
-      output += iconv.iconv(EUCJ_STR)
-      output += iconv.iconv(nil)
-    ensure
-      assert_respond_to(iconv, :close)
-      assert_equal("", iconv.close)
-      assert_equal(SJIS_STR, output)
-    end
-  end
-
-  def test_open_without_block
-    assert_respond_to(Iconv, :open)
-    iconv = Iconv.open('SHIFT_JIS', 'EUC-JP')
-    str = iconv.iconv(EUCJ_STR)
-    str << iconv.iconv(nil)
-    assert_equal(SJIS_STR, str )
-    iconv.close
-  end
-
-  def test_open_with_block
-    input = "#{EUCJ_STR}\n"*2
-    output = ""
-    Iconv.open("Shift_JIS", "EUC-JP") do |cd|
-      input.each_line do |s|
-        output << cd.iconv(s)
-      end
-      output << cd.iconv(nil)
-    end
-    assert_equal("#{SJIS_STR}\n"*2, output)
-  end
-
-  def test_unknown_encoding
-    assert_raise(Iconv::InvalidEncoding) { Iconv.iconv("utf-8", "X-UKNOWN", "heh") }
-  end
-end if defined?(TestIconv)
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/iconv/test_option.rb b/ruby/doc/ruby/ruby-1.8.7/test/iconv/test_option.rb
deleted file mode 100644 (file)
index a1f3457..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-require File.join(File.dirname(__FILE__), "utils.rb")
-
-class TestIconv::Option < TestIconv
-  def test_ignore_option
-    iconv = Iconv.new('SHIFT_JIS', 'EUC-JP//ignore')
-    str = iconv.iconv(EUCJ_STR)
-    str << iconv.iconv(nil)
-    assert_equal(SJIS_STR, str)
-    iconv.close
-
-    iconv = Iconv.new('SHIFT_JIS//IGNORE', 'EUC-JP//ignore')
-    str = iconv.iconv(EUCJ_STR)
-    str << iconv.iconv(nil)
-    assert_equal(SJIS_STR, str)
-    iconv.close
-  end
-
-  def test_translit_option
-    iconv = Iconv.new('SHIFT_JIS', 'EUC-JP//ignore')
-    str = iconv.iconv(EUCJ_STR)
-    str << iconv.iconv(nil)
-    assert_equal(SJIS_STR, str)
-    iconv.close
-
-    iconv = Iconv.new('SHIFT_JIS//TRANSLIT', 'EUC-JP//translit//ignore')
-    str = iconv.iconv(EUCJ_STR)
-    str << iconv.iconv(nil)
-    assert_equal(SJIS_STR, str)
-    iconv.close
-  end
-end if defined?(TestIconv)
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/iconv/test_partial.rb b/ruby/doc/ruby/ruby-1.8.7/test/iconv/test_partial.rb
deleted file mode 100644 (file)
index aa4d0ba..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-require File.join(File.dirname(__FILE__), "utils.rb")
-
-class TestIconv::Partial < TestIconv
-  def test_partial_ascii
-    c = Iconv.open(ASCII, ASCII)
-    ref = '[ruby-core:17092]'
-  rescue
-    return
-  else
-    assert_equal("abc", c.iconv("abc"))
-    assert_equal("c",   c.iconv("abc", 2),     "#{ref}: with start")
-    assert_equal("c",   c.iconv("abc", 2, 1),  "#{ref}: with start, length")
-    assert_equal("c",   c.iconv("abc", 2, 5),  "#{ref}: with start, longer length")
-    assert_equal("bc",  c.iconv("abc", -2),    "#{ref}: with nagative start")
-    assert_equal("b",   c.iconv("abc", -2, 1), "#{ref}: with nagative start, length")
-    assert_equal("bc",  c.iconv("abc", -2, 5), "#{ref}: with nagative start, longer length")
-    assert_equal("",    c.iconv("abc", 5),     "#{ref}: with OOB")
-    assert_equal("",    c.iconv("abc", 5, 2),  "#{ref}: with OOB, length")
-  ensure
-    c.close if c
-  end
-
-  def test_partial_euc2sjis
-    c = Iconv.open('SHIFT_JIS', 'EUC-JP')
-  rescue
-    return
-  else
-    assert_equal(SJIS_STR[0, 2],   c.iconv(EUCJ_STR, 0, 2))
-    assert_equal(SJIS_STR,         c.iconv(EUCJ_STR, 0, 20))
-    assert_equal(SJIS_STR[2..-1],  c.iconv(EUCJ_STR, 2))
-    assert_equal(SJIS_STR[2, 2],   c.iconv(EUCJ_STR, 2, 2))
-    assert_equal(SJIS_STR[2..-1],  c.iconv(EUCJ_STR, 2, 20))
-    assert_equal(SJIS_STR[-4..-1], c.iconv(EUCJ_STR, -4))
-    assert_equal(SJIS_STR[-4, 2],  c.iconv(EUCJ_STR, -4, 2))
-    assert_equal(SJIS_STR[-4..-1], c.iconv(EUCJ_STR, -4, 20))
-    assert_equal("",               c.iconv(EUCJ_STR, 20))
-    assert_equal("",               c.iconv(EUCJ_STR, 20, 2))
-  ensure
-    c.close
-  end
-end if defined?(TestIconv)
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/iconv/utils.rb b/ruby/doc/ruby/ruby-1.8.7/test/iconv/utils.rb
deleted file mode 100644 (file)
index bc75deb..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-begin
-  require 'iconv'
-rescue LoadError
-else
-  require 'test/unit'
-end
-
-class TestIconv < ::Test::Unit::TestCase
-  if defined?(::Encoding) and String.method_defined?(:force_encoding)
-    def self.encode(str, enc)
-      str.force_encoding(enc)
-    end
-  else
-    def self.encode(str, enc)
-      str
-    end
-  end
-
-  def default_test
-    self.class == TestIconv or super
-  end
-
-  ASCII = "ascii"
-  EUCJ_STR = encode("\xa4\xa2\xa4\xa4\xa4\xa6\xa4\xa8\xa4\xaa", "EUC-JP").freeze
-  SJIS_STR = encode("\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8", "Shift_JIS").freeze
-end if defined?(::Iconv)
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/io/nonblock/test_flush.rb b/ruby/doc/ruby/ruby-1.8.7/test/io/nonblock/test_flush.rb
deleted file mode 100644 (file)
index 2afbba3..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-require 'test/unit'
-begin
-  require 'io/nonblock'
-rescue LoadError
-end
-
-class TestIONonblock < Test::Unit::TestCase
-  def test_flush                # [ruby-dev:24985]
-    r,w = IO.pipe
-    w.nonblock = true
-    w.sync = false
-    w << "b"
-    w.flush
-    w << "a" * 4096
-    Thread.new {
-      Thread.pass
-      w.close
-    }
-    result = ""
-    t = Thread.new {
-      while (Thread.pass; s = r.read(4096))
-        result << s
-      end
-    }
-    assert_raise(IOError) {w.flush}
-    assert_nothing_raised {t.join}
-  end
-end if IO.method_defined?(:nonblock)
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/logger/test_logger.rb b/ruby/doc/ruby/ruby-1.8.7/test/logger/test_logger.rb
deleted file mode 100644 (file)
index ab578a1..0000000
+++ /dev/null
@@ -1,376 +0,0 @@
-require 'test/unit'
-require 'logger'
-require 'tempfile'
-
-
-class TestLoggerSeverity < Test::Unit::TestCase
-  def test_enum
-    logger_levels = Logger.constants
-    levels = ["WARN", "UNKNOWN", "INFO", "FATAL", "DEBUG", "ERROR"]
-    Logger::Severity.constants.each do |level|
-      assert(levels.include?(level))
-      assert(logger_levels.include?(level))
-    end
-    assert_equal(levels.size, Logger::Severity.constants.size)
-  end
-end
-
-
-class TestLogger < Test::Unit::TestCase
-  include Logger::Severity
-
-  def setup
-    @logger = Logger.new(nil)
-  end
-
-  class Log
-    attr_reader :label, :datetime, :pid, :severity, :progname, :msg
-    def initialize(line)
-      /\A(\w+), \[([^#]*)#(\d+)\]\s+(\w+) -- (\w*): ([\x0-\xff]*)/ =~ line
-      @label, @datetime, @pid, @severity, @progname, @msg = $1, $2, $3, $4, $5, $6
-    end
-  end
-
-  def log_add(logger, severity, msg, progname = nil, &block)
-    log(logger, :add, severity, msg, progname, &block)
-  end
-
-  def log(logger, msg_id, *arg, &block)
-    Log.new(log_raw(logger, msg_id, *arg, &block))
-  end
-
-  def log_raw(logger, msg_id, *arg, &block)
-    logdev = Tempfile.new(File.basename(__FILE__) + '.log')
-    logger.instance_eval { @logdev = Logger::LogDevice.new(logdev) }
-    logger.__send__(msg_id, *arg, &block)
-    logdev.open
-    msg = logdev.read
-    logdev.close
-    msg
-  end
-
-  def test_level
-    @logger.level = UNKNOWN
-    assert_equal(UNKNOWN, @logger.level)
-    @logger.level = INFO
-    assert_equal(INFO, @logger.level)
-    @logger.sev_threshold = ERROR
-    assert_equal(ERROR, @logger.sev_threshold)
-    @logger.sev_threshold = WARN
-    assert_equal(WARN, @logger.sev_threshold)
-    assert_equal(WARN, @logger.level)
-
-    @logger.level = DEBUG
-    assert(@logger.debug?)
-    assert(@logger.info?)
-    @logger.level = INFO
-    assert(!@logger.debug?)
-    assert(@logger.info?)
-    assert(@logger.warn?)
-    @logger.level = WARN
-    assert(!@logger.info?)
-    assert(@logger.warn?)
-    assert(@logger.error?)
-    @logger.level = ERROR
-    assert(!@logger.warn?)
-    assert(@logger.error?)
-    assert(@logger.fatal?)
-    @logger.level = FATAL
-    assert(!@logger.error?)
-    assert(@logger.fatal?)
-    @logger.level = UNKNOWN
-    assert(!@logger.error?)
-    assert(!@logger.fatal?)
-  end
-
-  def test_progname
-    assert_nil(@logger.progname)
-    @logger.progname = "name"
-    assert_equal("name", @logger.progname)
-  end
-
-  def test_datetime_format
-    dummy = STDERR
-    logger = Logger.new(dummy)
-    log = log_add(logger, INFO, "foo")
-    assert_match(/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\s*\d+ $/, log.datetime)
-    logger.datetime_format = "%d%b%Y@%H:%M:%S"
-    log = log_add(logger, INFO, "foo")
-    assert_match(/^\d\d\w\w\w\d\d\d\d@\d\d:\d\d:\d\d$/, log.datetime)
-    logger.datetime_format = ""
-    log = log_add(logger, INFO, "foo")
-    assert_match(/^$/, log.datetime)
-  end
-
-  def test_formatter
-    dummy = STDERR
-    logger = Logger.new(dummy)
-    # default
-    log = log(logger, :info, "foo")
-    assert_equal("foo\n", log.msg)
-    # config
-    logger.formatter = proc { |severity, timestamp, progname, msg|
-      "#{severity}:#{msg}\n\n"
-    }
-    line = log_raw(logger, :info, "foo")
-    assert_equal("INFO:foo\n\n", line)
-    # recover
-    logger.formatter = nil
-    log = log(logger, :info, "foo")
-    assert_equal("foo\n", log.msg)
-    # again
-    o = Object.new
-    def o.call(severity, timestamp, progname, msg)
-      "<<#{severity}-#{msg}>>\n"
-    end
-    logger.formatter = o
-    line = log_raw(logger, :info, "foo")
-    assert_equal("<<INFO-foo>>\n", line)
-  end
-
-  def test_initialize
-    logger = Logger.new(STDERR)
-    assert_nil(logger.progname)
-    assert_equal(DEBUG, logger.level)
-    assert_nil(logger.datetime_format)
-  end
-
-  def test_add
-    logger = Logger.new(nil)
-    logger.progname = "my_progname"
-    assert(logger.add(INFO))
-    log = log_add(logger, nil, "msg")
-    assert_equal("ANY", log.severity)
-    assert_equal("my_progname", log.progname)
-    logger.level = WARN
-    assert(logger.log(INFO))
-    assert_nil(log_add(logger, INFO, "msg").msg)
-    log = log_add(logger, WARN, nil) { "msg" }
-    assert_equal("msg\n", log.msg)
-    log = log_add(logger, WARN, "") { "msg" }
-    assert_equal("\n", log.msg)
-    assert_equal("my_progname", log.progname)
-    log = log_add(logger, WARN, nil, "progname?")
-    assert_equal("progname?\n", log.msg)
-    assert_equal("my_progname", log.progname)
-  end
-
-  def test_level_log
-    logger = Logger.new(nil)
-    logger.progname = "my_progname"
-    log = log(logger, :debug, "custom_progname") { "msg" }
-    assert_equal("msg\n", log.msg)
-    assert_equal("custom_progname", log.progname)
-    assert_equal("DEBUG", log.severity)
-    assert_equal("D", log.label)
-    #
-    log = log(logger, :debug) { "msg_block" }
-    assert_equal("msg_block\n", log.msg)
-    assert_equal("my_progname", log.progname)
-    log = log(logger, :debug, "msg_inline")
-    assert_equal("msg_inline\n", log.msg)
-    assert_equal("my_progname", log.progname)
-    #
-    log = log(logger, :info, "custom_progname") { "msg" }
-    assert_equal("msg\n", log.msg)
-    assert_equal("custom_progname", log.progname)
-    assert_equal("INFO", log.severity)
-    assert_equal("I", log.label)
-    #
-    log = log(logger, :warn, "custom_progname") { "msg" }
-    assert_equal("msg\n", log.msg)
-    assert_equal("custom_progname", log.progname)
-    assert_equal("WARN", log.severity)
-    assert_equal("W", log.label)
-    #
-    log = log(logger, :error, "custom_progname") { "msg" }
-    assert_equal("msg\n", log.msg)
-    assert_equal("custom_progname", log.progname)
-    assert_equal("ERROR", log.severity)
-    assert_equal("E", log.label)
-    #
-    log = log(logger, :fatal, "custom_progname") { "msg" }
-    assert_equal("msg\n", log.msg)
-    assert_equal("custom_progname", log.progname)
-    assert_equal("FATAL", log.severity)
-    assert_equal("F", log.label)
-    #
-    log = log(logger, :unknown, "custom_progname") { "msg" }
-    assert_equal("msg\n", log.msg)
-    assert_equal("custom_progname", log.progname)
-    assert_equal("ANY", log.severity)
-    assert_equal("A", log.label)
-  end
-
-  def test_close
-    r, w = IO.pipe
-    assert(!w.closed?)
-    logger = Logger.new(w)
-    logger.close
-    assert(w.closed?)
-    r.close
-  end
-
-  class MyError < StandardError
-  end
-
-  class MyMsg
-    def inspect
-      "my_msg"
-    end
-  end
-
-  def test_format
-    logger = Logger.new(nil)
-    log = log_add(logger, INFO, "msg\n")
-    assert_equal("msg\n\n", log.msg)
-    begin
-      raise MyError.new("excn")
-    rescue MyError => e
-      log = log_add(logger, INFO, e)
-      assert_match(/^excn \(TestLogger::MyError\)/, log.msg)
-      # expects backtrace is dumped across multi lines.  10 might be changed.
-      assert(log.msg.split(/\n/).size >= 10)
-    end
-    log = log_add(logger, INFO, MyMsg.new)
-    assert_equal("my_msg\n", log.msg)
-  end
-
-  def test_lshift
-    r, w = IO.pipe
-    logger = Logger.new(w)
-    logger << "msg"
-    read_ready, = IO.select([r], nil, nil, 0.1)
-    w.close
-    msg = r.read
-    r.close
-    assert_equal("msg", msg)
-    #
-    r, w = IO.pipe
-    logger = Logger.new(w)
-    logger << "msg2\n\n"
-    read_ready, = IO.select([r], nil, nil, 0.1)
-    w.close
-    msg = r.read
-    r.close
-    assert_equal("msg2\n\n", msg)
-  end
-end
-
-class TestLogDevice < Test::Unit::TestCase
-  def d(log)
-    Logger::LogDevice.new(log)
-  end
-
-  def test_initialize
-    logdev = d(STDERR)
-    assert_equal(STDERR, logdev.dev)
-    assert_nil(logdev.filename)
-    assert_raises(TypeError) do
-      d(nil)
-    end
-    #
-    filename = __FILE__ + ".#{$$}"
-    begin
-      logdev = d(filename)
-      assert(File.exist?(filename))
-      assert(logdev.dev.sync)
-      assert_equal(filename, logdev.filename)
-    ensure
-      logdev.close
-      File.unlink(filename)
-    end
-  end
-
-  def test_write
-    r, w = IO.pipe
-    logdev = d(w)
-    logdev.write("msg2\n\n")
-    read_ready, = IO.select([r], nil, nil, 0.1)
-    w.close
-    msg = r.read
-    r.close
-    assert_equal("msg2\n\n", msg)
-  end
-
-  def test_close
-    r, w = IO.pipe
-    logdev = d(w)
-    logdev.write("msg2\n\n")
-    read_ready, = IO.select([r], nil, nil, 0.1)
-    assert(!w.closed?)
-    logdev.close
-    assert(w.closed?)
-    r.close
-  end
-
-  def test_shifting_size
-    logfile = File.basename(__FILE__) + '_1.log'
-    logfile0 = logfile + '.0'
-    logfile1 = logfile + '.1'
-    logfile2 = logfile + '.2'
-    logfile3 = logfile + '.3'
-    File.unlink(logfile) if File.exist?(logfile)
-    File.unlink(logfile0) if File.exist?(logfile0)
-    File.unlink(logfile1) if File.exist?(logfile1)
-    File.unlink(logfile2) if File.exist?(logfile2)
-    logger = Logger.new(logfile, 4, 100)
-    logger.error("0" * 15)
-    assert(File.exist?(logfile))
-    assert(!File.exist?(logfile0))
-    logger.error("0" * 15)
-    assert(File.exist?(logfile0))
-    assert(!File.exist?(logfile1))
-    logger.error("0" * 15)
-    assert(File.exist?(logfile1))
-    assert(!File.exist?(logfile2))
-    logger.error("0" * 15)
-    assert(File.exist?(logfile2))
-    assert(!File.exist?(logfile3))
-    logger.error("0" * 15)
-    assert(!File.exist?(logfile3))
-    logger.error("0" * 15)
-    assert(!File.exist?(logfile3))
-    logger.close
-    File.unlink(logfile)
-    File.unlink(logfile0)
-    File.unlink(logfile1)
-    File.unlink(logfile2)
-
-    logfile = File.basename(__FILE__) + '_2.log'
-    logfile0 = logfile + '.0'
-    logfile1 = logfile + '.1'
-    logfile2 = logfile + '.2'
-    logfile3 = logfile + '.3'
-    logger = Logger.new(logfile, 4, 150)
-    logger.error("0" * 15)
-    assert(File.exist?(logfile))
-    assert(!File.exist?(logfile0))
-    logger.error("0" * 15)
-    assert(!File.exist?(logfile0))
-    logger.error("0" * 15)
-    assert(File.exist?(logfile0))
-    assert(!File.exist?(logfile1))
-    logger.error("0" * 15)
-    assert(!File.exist?(logfile1))
-    logger.error("0" * 15)
-    assert(File.exist?(logfile1))
-    assert(!File.exist?(logfile2))
-    logger.error("0" * 15)
-    assert(!File.exist?(logfile2))
-    logger.error("0" * 15)
-    assert(File.exist?(logfile2))
-    assert(!File.exist?(logfile3))
-    logger.error("0" * 15)
-    assert(!File.exist?(logfile3))
-    logger.error("0" * 15)
-    assert(!File.exist?(logfile3))
-    logger.error("0" * 15)
-    assert(!File.exist?(logfile3))
-    logger.close
-    File.unlink(logfile)
-    File.unlink(logfile0)
-    File.unlink(logfile1)
-    File.unlink(logfile2)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/monitor/test_monitor.rb b/ruby/doc/ruby/ruby-1.8.7/test/monitor/test_monitor.rb
deleted file mode 100644 (file)
index b539cb3..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-require "monitor"
-require "thread"
-
-require "test/unit"
-
-class TestMonitor < Test::Unit::TestCase
-  def setup
-    @monitor = Monitor.new
-  end
-
-  def test_enter
-    ary = []
-    queue = Queue.new
-    th = Thread.start {
-      queue.pop
-      @monitor.enter
-      for i in 6 .. 10
-        ary.push(i)
-        Thread.pass
-      end
-      @monitor.exit
-    }
-    @monitor.enter
-    queue.enq(nil)
-    for i in 1 .. 5
-      ary.push(i)
-      Thread.pass
-    end
-    @monitor.exit
-    th.join
-    assert_equal((1..10).to_a, ary)
-  end
-
-  def test_synchronize
-    ary = []
-    queue = Queue.new
-    th = Thread.start {
-      queue.pop
-      @monitor.synchronize do
-        for i in 6 .. 10
-          ary.push(i)
-          Thread.pass
-        end
-      end
-    }
-    @monitor.synchronize do
-      queue.enq(nil)
-      for i in 1 .. 5
-        ary.push(i)
-        Thread.pass
-      end
-    end
-    th.join
-    assert_equal((1..10).to_a, ary)
-  end
-
-  def test_try_enter
-    queue1 = Queue.new
-    queue2 = Queue.new
-    th = Thread.start {
-      queue1.deq
-      @monitor.enter
-      queue2.enq(nil)
-      queue1.deq
-      @monitor.exit
-      queue2.enq(nil)
-    }
-    assert_equal(true, @monitor.try_enter)
-    @monitor.exit
-    queue1.enq(nil)
-    queue2.deq
-    assert_equal(false, @monitor.try_enter)
-    queue1.enq(nil)
-    queue2.deq
-    assert_equal(true, @monitor.try_enter)
-  end
-
-  def test_cond
-    cond = @monitor.new_cond
-
-    a = "foo"
-    queue1 = Queue.new
-    Thread.start do
-      queue1.deq
-      @monitor.synchronize do
-        a = "bar"
-        cond.signal
-      end
-    end
-    @monitor.synchronize do
-      queue1.enq(nil)
-      assert_equal("foo", a)
-      result1 = cond.wait
-      assert_equal(true, result1)
-      assert_equal("bar", a)
-    end
-
-    b = "foo"
-    queue2 = Queue.new
-    Thread.start do
-      queue2.deq
-      @monitor.synchronize do
-        b = "bar"
-        cond.signal
-      end
-    end
-    @monitor.synchronize do
-      queue2.enq(nil)
-      assert_equal("foo", b)
-      result2 = cond.wait(0.1)
-      assert_equal(true, result2)
-      assert_equal("bar", b)
-    end
-
-    c = "foo"
-    queue3 = Queue.new
-    Thread.start do
-      queue3.deq
-      @monitor.synchronize do
-        c = "bar"
-        cond.signal
-      end
-    end
-    @monitor.synchronize do
-      assert_equal("foo", c)
-      result3 = cond.wait(0.1)
-      assert_equal(false, result3)
-      assert_equal("foo", c)
-      queue3.enq(nil)
-      result4 = cond.wait
-      assert_equal(true, result4)
-      assert_equal("bar", c)
-    end
-
-#     d = "foo"
-#     cumber_thread = Thread.start {
-#       loop do
-#         @monitor.synchronize do
-#           d = "foo"
-#         end
-#       end
-#     }
-#     queue3 = Queue.new
-#     Thread.start do
-#       queue3.pop
-#       @monitor.synchronize do
-#         d = "bar"
-#         cond.signal
-#       end
-#     end
-#     @monitor.synchronize do
-#       queue3.enq(nil)
-#       assert_equal("foo", d)
-#       result5 = cond.wait
-#       assert_equal(true, result5)
-#       # this thread has priority over cumber_thread
-#       assert_equal("bar", d)
-#     end
-#     cumber_thread.kill
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/net/http/test_httpheader.rb b/ruby/doc/ruby/ruby-1.8.7/test/net/http/test_httpheader.rb
deleted file mode 100644 (file)
index 3ba1b21..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-require 'net/http'
-require 'test/unit'
-
-class HTTPHeaderTest < Test::Unit::TestCase
-
-  class C
-    include Net::HTTPHeader
-    def initialize
-      initialize_http_header({})
-    end
-    attr_accessor :body
-  end
-
-  def setup
-    @c = C.new
-  end
-
-  def test_size
-    assert_equal 0, @c.size
-    @c['a'] = 'a'
-    assert_equal 1, @c.size
-    @c['b'] = 'b'
-    assert_equal 2, @c.size
-    @c['b'] = 'b'
-    assert_equal 2, @c.size
-    @c['c'] = 'c'
-    assert_equal 3, @c.size
-  end
-
-  def test_ASET
-    @c['My-Header'] = 'test string'
-    @c['my-Header'] = 'test string'
-    @c['My-header'] = 'test string'
-    @c['my-header'] = 'test string'
-    @c['MY-HEADER'] = 'test string'
-    assert_equal 1, @c.size
-
-    @c['AaA'] = 'aaa'
-    @c['aaA'] = 'aaa'
-    @c['AAa'] = 'aaa'
-    assert_equal 2, @c.length
-  end
-
-  def test_AREF
-    @c['My-Header'] = 'test string'
-    assert_equal 'test string', @c['my-header']
-    assert_equal 'test string', @c['MY-header']
-    assert_equal 'test string', @c['my-HEADER']
-
-    @c['Next-Header'] = 'next string'
-    assert_equal 'next string', @c['next-header']
-  end
-
-  def test_add_field
-    @c.add_field 'My-Header', 'a'
-    assert_equal 'a', @c['My-Header']
-    assert_equal ['a'], @c.get_fields('My-Header')
-    @c.add_field 'My-Header', 'b'
-    assert_equal 'a, b', @c['My-Header']
-    assert_equal ['a', 'b'], @c.get_fields('My-Header')
-    @c.add_field 'My-Header', 'c'
-    assert_equal 'a, b, c', @c['My-Header']
-    assert_equal ['a', 'b', 'c'], @c.get_fields('My-Header')
-    @c.add_field 'My-Header', 'd, d'
-    assert_equal 'a, b, c, d, d', @c['My-Header']
-    assert_equal ['a', 'b', 'c', 'd, d'], @c.get_fields('My-Header')
-  end
-
-  def test_get_fields
-    @c['My-Header'] = 'test string'
-    assert_equal ['test string'], @c.get_fields('my-header')
-    assert_equal ['test string'], @c.get_fields('My-header')
-    assert_equal ['test string'], @c.get_fields('my-Header')
-
-    assert_nil @c.get_fields('not-found')
-    assert_nil @c.get_fields('Not-Found')
-
-    @c.get_fields('my-header').push 'junk'
-    assert_equal ['test string'], @c.get_fields('my-header')
-    @c.get_fields('my-header').clear
-    assert_equal ['test string'], @c.get_fields('my-header')
-  end
-
-  def test_delete
-    @c['My-Header'] = 'test'
-    assert_equal 'test', @c['My-Header']
-    assert_nil @c['not-found']
-    @c.delete 'My-Header'
-    assert_nil @c['My-Header']
-    assert_nil @c['not-found']
-    @c.delete 'My-Header'
-    @c.delete 'My-Header'
-    assert_nil @c['My-Header']
-    assert_nil @c['not-found']
-  end
-
-  def test_each
-    @c['My-Header'] = 'test'
-    @c.each do |k, v|
-      assert_equal 'my-header', k
-      assert_equal 'test', v
-    end
-    @c.each do |k, v|
-      assert_equal 'my-header', k
-      assert_equal 'test', v
-    end
-  end
-
-  def test_each_key
-    @c['My-Header'] = 'test'
-    @c.each_key do |k|
-      assert_equal 'my-header', k
-    end
-    @c.each_key do |k|
-      assert_equal 'my-header', k
-    end
-  end
-
-  def test_each_value
-    @c['My-Header'] = 'test'
-    @c.each_value do |v|
-      assert_equal 'test', v
-    end
-    @c.each_value do |v|
-      assert_equal 'test', v
-    end
-  end
-
-  def test_canonical_each
-    @c['my-header'] = ['a', 'b']
-    @c.canonical_each do |k,v|
-      assert_equal 'My-Header', k
-      assert_equal 'a, b', v
-    end
-  end
-
-  def test_each_capitalized
-    @c['my-header'] = ['a', 'b']
-    @c.each_capitalized do |k,v|
-      assert_equal 'My-Header', k
-      assert_equal 'a, b', v
-    end
-  end
-
-  def test_key?
-    @c['My-Header'] = 'test'
-    assert_equal true, @c.key?('My-Header')
-    assert_equal true, @c.key?('my-header')
-    assert_equal false, @c.key?('Not-Found')
-    assert_equal false, @c.key?('not-found')
-    assert_equal false, @c.key?('')
-    assert_equal false, @c.key?('x' * 1024)
-  end
-
-  def test_to_hash
-  end
-
-  def test_range
-    try_range(1..5,     '1-5')
-    try_range(234..567, '234-567')
-    try_range(-5..-1,   '-5')
-    try_range(1..-1,    '1-')
-  end
-
-  def try_range(r, s)
-    @c['range'] = "bytes=#{s}"
-    assert_equal r, Array(@c.range)[0]
-  end
-
-  def test_range=
-    @c.range = 0..499
-    assert_equal 'bytes=0-499', @c['range']
-    @c.range = 0...500
-    assert_equal 'bytes=0-499', @c['range']
-    @c.range = 300
-    assert_equal 'bytes=0-299', @c['range']
-    @c.range = -400
-    assert_equal 'bytes=-400', @c['range']
-    @c.set_range 0, 500
-    assert_equal 'bytes=0-499', @c['range']
-  end
-
-  def test_content_range
-  end
-
-  def test_range_length
-    @c['Content-Range'] = "bytes 0-499/1000"
-    assert_equal 500, @c.range_length
-    @c['Content-Range'] = "bytes 1-500/1000"
-    assert_equal 500, @c.range_length
-    @c['Content-Range'] = "bytes 1-1/1000"
-    assert_equal 1, @c.range_length
-  end
-
-  def test_chunked?
-    try_chunked true, 'chunked'
-    try_chunked true, '  chunked  '
-    try_chunked true, '(OK)chunked'
-
-    try_chunked false, 'not-chunked'
-    try_chunked false, 'chunked-but-not-chunked'
-  end
-
-  def try_chunked(bool, str)
-    @c['transfer-encoding'] = str
-    assert_equal bool, @c.chunked?
-  end
-
-  def test_content_length
-    @c.delete('content-length')
-    assert_nil @c['content-length']
-
-    try_content_length 500, '500'
-    try_content_length 10000_0000_0000, '1000000000000'
-    try_content_length 123, '  123'
-    try_content_length 1,   '1 23'
-    try_content_length 500, '(OK)500'
-    assert_raises(Net::HTTPHeaderSyntaxError, 'here is no digit, but') {
-      @c['content-length'] = 'no digit'
-      @c.content_length
-    }
-  end
-
-  def try_content_length(len, str)
-    @c['content-length'] = str
-    assert_equal len, @c.content_length
-  end
-
-  def test_content_length=
-    @c.content_length = 0
-    assert_equal 0, @c.content_length
-    @c.content_length = 1
-    assert_equal 1, @c.content_length
-    @c.content_length = 999
-    assert_equal 999, @c.content_length
-    @c.content_length = 10000000000000
-    assert_equal 10000000000000, @c.content_length
-  end
-
-  def test_content_type
-    assert_nil @c.content_type
-    @c.content_type = 'text/html'
-    assert_equal 'text/html', @c.content_type
-    @c.content_type = 'application/pdf'
-    assert_equal 'application/pdf', @c.content_type
-    @c.set_content_type 'text/html', {'charset' => 'iso-2022-jp'}
-    assert_equal 'text/html', @c.content_type
-    @c.content_type = 'text'
-    assert_equal 'text', @c.content_type
-  end
-
-  def test_main_type
-    assert_nil @c.main_type
-    @c.content_type = 'text/html'
-    assert_equal 'text', @c.main_type
-    @c.content_type = 'application/pdf'
-    assert_equal 'application', @c.main_type
-    @c.set_content_type 'text/html', {'charset' => 'iso-2022-jp'}
-    assert_equal 'text', @c.main_type
-    @c.content_type = 'text'
-    assert_equal 'text', @c.main_type
-  end
-
-  def test_sub_type
-    assert_nil @c.sub_type
-    @c.content_type = 'text/html'
-    assert_equal 'html', @c.sub_type
-    @c.content_type = 'application/pdf'
-    assert_equal 'pdf', @c.sub_type
-    @c.set_content_type 'text/html', {'charset' => 'iso-2022-jp'}
-    assert_equal 'html', @c.sub_type
-    @c.content_type = 'text'
-    assert_nil @c.sub_type
-  end
-
-  def test_type_params
-    assert_equal({}, @c.type_params)
-    @c.content_type = 'text/html'
-    assert_equal({}, @c.type_params)
-    @c.content_type = 'application/pdf'
-    assert_equal({}, @c.type_params)
-    @c.set_content_type 'text/html', {'charset' => 'iso-2022-jp'}
-    assert_equal({'charset' => 'iso-2022-jp'}, @c.type_params)
-    @c.content_type = 'text'
-    assert_equal({}, @c.type_params)
-  end
-
-  def test_set_content_type
-  end
-
-  def test_form_data=
-    @c.form_data = {"cmd"=>"search", "q"=>"ruby", "max"=>"50"}
-    assert_equal 'application/x-www-form-urlencoded', @c.content_type
-    assert_equal %w( cmd=search max=50 q=ruby ), @c.body.split('&').sort
-  end
-
-  def test_set_form_data
-    @c.set_form_data "cmd"=>"search", "q"=>"ruby", "max"=>"50"
-    assert_equal 'application/x-www-form-urlencoded', @c.content_type
-    assert_equal %w( cmd=search max=50 q=ruby ), @c.body.split('&').sort
-
-    @c.set_form_data "cmd"=>"search", "q"=>"ruby", "max"=>50
-    assert_equal 'application/x-www-form-urlencoded', @c.content_type
-    assert_equal %w( cmd=search max=50 q=ruby ), @c.body.split('&').sort
-
-    @c.set_form_data({"cmd"=>"search", "q"=>"ruby", "max"=>"50"}, ';')
-    assert_equal 'application/x-www-form-urlencoded', @c.content_type
-    assert_equal %w( cmd=search max=50 q=ruby ), @c.body.split(';').sort
-  end
-
-  def test_basic_auth
-  end
-
-  def test_proxy_basic_auth
-  end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/net/http/test_https_proxy.rb b/ruby/doc/ruby/ruby-1.8.7/test/net/http/test_https_proxy.rb
deleted file mode 100644 (file)
index 4f26342..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-begin
-  require 'net/https'
-rescue LoadError
-end
-require 'test/unit'
-
-class HTTPSProxyTest < Test::Unit::TestCase
-  def test_https_proxy_authentication
-    t = nil
-    TCPServer.open("127.0.0.1", 0) {|serv|
-      _, port, _, _ = serv.addr
-      t = Thread.new {
-        proxy = Net::HTTP.Proxy("127.0.0.1", port, 'user', 'password')
-        http = proxy.new("foo.example.org", 8000)
-        http.use_ssl = true
-        http.verify_mode = OpenSSL::SSL::VERIFY_NONE
-        begin
-          http.start
-        rescue EOFError
-        end
-      }
-      sock = serv.accept
-      proxy_request = sock.gets("\r\n\r\n")
-      assert_equal(
-        "CONNECT foo.example.org:8000 HTTP/1.1\r\n" +
-        "Host: foo.example.org:8000\r\n" +
-        "Proxy-Authorization: Basic dXNlcjpwYXNzd29yZA==\r\n" +
-        "\r\n",
-        proxy_request,
-        "[ruby-dev:25673]")
-      sock.close
-    }
-  ensure
-    t.join if t
-  end
-end if defined?(OpenSSL)
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/net/imap/test_imap.rb b/ruby/doc/ruby/ruby-1.8.7/test/net/imap/test_imap.rb
deleted file mode 100644 (file)
index 0ee2179..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-require "net/imap"
-require "test/unit"
-
-class IMAPTest < Test::Unit::TestCase
-  def test_parse_nomodesq
-    parser = Net::IMAP::ResponseParser.new
-    r = parser.parse(%Q'* OK [NOMODSEQ] Sorry, modsequences have not been enabled on this mailbox\r\n')
-    assert_equal("OK", r.name)
-    assert_equal("NOMODSEQ", r.data.code.name)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/nkf/test_kconv.rb b/ruby/doc/ruby/ruby-1.8.7/test/nkf/test_kconv.rb
deleted file mode 100644 (file)
index 2533424..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-require 'test/unit'
-require 'kconv'
-
-class TestKconv < Test::Unit::TestCase
-  EUC_STR = "\
-\xa5\xaa\xa5\xd6\xa5\xb8\xa5\xa7\xa5\xaf\xa5\xc8\xbb\xd8\xb8\xfe\
-\xa5\xd7\xa5\xed\xa5\xb0\xa5\xe9\xa5\xdf\xa5\xf3\xa5\xb0\xb8\xc0\xb8\xec
-\x52\x75\x62\x79"
-  UTF8_STR = "\
-\xe3\x82\xaa\xe3\x83\x96\xe3\x82\xb8\xe3\x82\xa7\
-\xe3\x82\xaf\xe3\x83\x88\xe6\x8c\x87\xe5\x90\x91\
-\xe3\x83\x97\xe3\x83\xad\xe3\x82\xb0\xe3\x83\xa9\xe3\x83\x9f\
-\xe3\x83\xb3\xe3\x82\xb0\xe8\xa8\x80\xe8\xaa\x9e
-\x52\x75\x62\x79"
-  SJIS_STR = "\
-\x83\x49\x83\x75\x83\x57\x83\x46\x83\x4e\x83\x67\x8e\x77\x8c\xfc\
-\x83\x76\x83\x8d\x83\x4f\x83\x89\x83\x7e\x83\x93\x83\x4f\x8c\xbe\x8c\xea
-\x52\x75\x62\x79"
-  JIS_STR = "\
-\x1b\x24\x42\x25\x2a\x25\x56\x25\x38\x25\x27\x25\x2f\x25\x48\x3b\x58\x38\x7e\
-\x25\x57\x25\x6d\x25\x30\x25\x69\x25\x5f\x25\x73\x25\x30\x38\x40\x38\x6c\x1b\x28\x42
-\x52\x75\x62\x79"
-
-  def test_eucjp
-    assert(EUC_STR.iseuc)
-    assert_equal(::Kconv::EUC, Kconv.guess(EUC_STR))
-    assert_equal(EUC_STR, EUC_STR.toeuc)
-    assert_equal(EUC_STR, SJIS_STR.toeuc)
-    assert_equal(EUC_STR, UTF8_STR.toeuc)
-    assert_equal(EUC_STR, JIS_STR.toeuc)
-    assert_equal(EUC_STR, EUC_STR.kconv(::NKF::EUC))
-    assert_equal(EUC_STR, SJIS_STR.kconv(::NKF::EUC))
-    assert_equal(EUC_STR, UTF8_STR.kconv(::NKF::EUC))
-    assert_equal(EUC_STR, JIS_STR.kconv(::NKF::EUC))
-  end
-  def test_shiftjis
-    assert(SJIS_STR.issjis)
-    assert_equal(::Kconv::SJIS, Kconv.guess(SJIS_STR))
-    assert_equal(SJIS_STR, EUC_STR.tosjis)
-    assert_equal(SJIS_STR, SJIS_STR.tosjis)
-    assert_equal(SJIS_STR, UTF8_STR.tosjis)
-    assert_equal(SJIS_STR, JIS_STR.tosjis)
-    assert_equal(SJIS_STR, EUC_STR.kconv(::NKF::SJIS))
-    assert_equal(SJIS_STR, SJIS_STR.kconv(::NKF::SJIS))
-    assert_equal(SJIS_STR, UTF8_STR.kconv(::NKF::SJIS))
-    assert_equal(SJIS_STR, JIS_STR.kconv(::NKF::SJIS))
-  end
-  def test_utf8
-    assert(UTF8_STR.isutf8)
-    assert_equal(::Kconv::UTF8, Kconv.guess(UTF8_STR))
-    assert_equal(UTF8_STR, EUC_STR.toutf8)
-    assert_equal(UTF8_STR, SJIS_STR.toutf8)
-    assert_equal(UTF8_STR, UTF8_STR.toutf8)
-    assert_equal(UTF8_STR, JIS_STR.toutf8)
-    assert_equal(UTF8_STR, EUC_STR.kconv(::NKF::UTF8))
-    assert_equal(UTF8_STR, SJIS_STR.kconv(::NKF::UTF8))
-    assert_equal(UTF8_STR, UTF8_STR.kconv(::NKF::UTF8))
-    assert_equal(UTF8_STR, JIS_STR.kconv(::NKF::UTF8))
-  end
-  def test_jis
-    assert_equal(::Kconv::JIS, Kconv.guess(JIS_STR))
-    assert_equal(JIS_STR, EUC_STR.tojis)
-    assert_equal(JIS_STR, SJIS_STR.tojis)
-    assert_equal(JIS_STR, UTF8_STR.tojis)
-    assert_equal(JIS_STR, JIS_STR.tojis)
-    assert_equal(JIS_STR, EUC_STR.kconv(::NKF::JIS))
-    assert_equal(JIS_STR, SJIS_STR.kconv(::NKF::JIS))
-    assert_equal(JIS_STR, UTF8_STR.kconv(::NKF::JIS))
-    assert_equal(JIS_STR, JIS_STR.kconv(::NKF::JIS))
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/nkf/test_nkf.rb b/ruby/doc/ruby/ruby-1.8.7/test/nkf/test_nkf.rb
deleted file mode 100644 (file)
index 279ad59..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'test/unit'
-require 'nkf'
-
-class TestNKF < Test::Unit::TestCase
-  EUC_STR = "\xa5\xaa\xa5\xd6\xa5\xb8\xa5\xa7\xa5\xaf\xa5\xc8\xbb\xd8\xb8\xfe\
-\xa5\xb9\xa5\xaf\xa5\xea\xa5\xd7\xa5\xc8\xb8\xc0\xb8\xec\
-Ruby"
-
-  def test_guess
-    str_euc = EUC_STR
-    str_jis = NKF.nkf('-j', str_euc)
-    assert_equal(::NKF::JIS, NKF.guess(str_jis))
-    assert_equal(::NKF::EUC, NKF.guess(str_euc))
-  end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/ssl_server.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/ssl_server.rb
deleted file mode 100644 (file)
index 6e62062..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-require "socket"
-require "thread"
-require "openssl"
-require File.join(File.dirname(__FILE__), "utils.rb")
-
-def get_pem(io=$stdin)
-  buf = ""
-  while line = io.gets
-    if /^-----BEGIN / =~ line
-      buf << line
-      break
-    end
-  end
-  while line = io.gets
-    buf << line
-    if /^-----END / =~ line
-      break
-    end
-  end
-  return buf
-end
-
-def make_key(pem)
-  begin
-    return OpenSSL::PKey::RSA.new(pem)
-  rescue
-    return OpenSSL::PKey::DSA.new(pem)
-  end
-end
-
-ca_cert  = OpenSSL::X509::Certificate.new(get_pem)
-ssl_cert = OpenSSL::X509::Certificate.new(get_pem)
-ssl_key  = make_key(get_pem)
-port = Integer(ARGV.shift)
-verify_mode = Integer(ARGV.shift)
-start_immediately = (/yes/ =~ ARGV.shift)
-
-store = OpenSSL::X509::Store.new
-store.add_cert(ca_cert)
-store.purpose = OpenSSL::X509::PURPOSE_SSL_CLIENT
-ctx = OpenSSL::SSL::SSLContext.new
-ctx.cert_store = store
-#ctx.extra_chain_cert = [ ca_cert ]
-ctx.cert = ssl_cert
-ctx.key = ssl_key
-ctx.verify_mode = verify_mode
-
-Socket.do_not_reverse_lookup = true
-tcps = nil
-100.times{|i|
-  begin
-    tcps = TCPServer.new("0.0.0.0", port+i)
-    port = port + i
-    break
-  rescue Errno::EADDRINUSE
-    next 
-  end
-}
-ssls = OpenSSL::SSL::SSLServer.new(tcps, ctx)
-ssls.start_immediately = start_immediately
-
-$stdout.sync = true
-$stdout.puts Process.pid
-$stdout.puts port
-
-loop do
-  ssl = ssls.accept rescue next
-  Thread.start{
-    q = Queue.new
-    th = Thread.start{ ssl.write(q.shift) while true }
-    while line = ssl.gets
-      if line =~ /^STARTTLS$/
-        ssl.accept
-        next
-      end
-      q.push(line)
-    end
-    th.kill if q.empty?
-    ssl.close
-  }
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_asn1.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_asn1.rb
deleted file mode 100644 (file)
index f196bc4..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-begin
-  require "openssl"
-  require File.join(File.dirname(__FILE__), "utils.rb")
-rescue LoadError
-end
-require 'test/unit'
-
-class  OpenSSL::TestASN1 < Test::Unit::TestCase
-  def test_decode
-    subj = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=TestCA")
-    key = OpenSSL::TestUtils::TEST_KEY_RSA1024
-    now = Time.at(Time.now.to_i) # suppress usec
-    s = 0xdeadbeafdeadbeafdeadbeafdeadbeaf
-    exts = [
-      ["basicConstraints","CA:TRUE,pathlen:1",true],
-      ["keyUsage","keyCertSign, cRLSign",true],
-      ["subjectKeyIdentifier","hash",false],
-    ]
-    dgst = OpenSSL::Digest::SHA1.new
-    cert = OpenSSL::TestUtils.issue_cert(
-      subj, key, s, now, now+3600, exts, nil, nil, dgst)
-
-
-    asn1 = OpenSSL::ASN1.decode(cert)
-    assert_equal(OpenSSL::ASN1::Sequence, asn1.class)
-    assert_equal(3, asn1.value.size)
-    tbs_cert, sig_alg, sig_val = *asn1.value
-
-    assert_equal(OpenSSL::ASN1::Sequence, tbs_cert.class)
-    assert_equal(8, tbs_cert.value.size)
-
-    version = tbs_cert.value[0]
-    assert_equal(:CONTEXT_SPECIFIC, version.tag_class)
-    assert_equal(0, version.tag)
-    assert_equal(1, version.value.size)
-    assert_equal(OpenSSL::ASN1::Integer, version.value[0].class)
-    assert_equal(2, version.value[0].value)
-
-    serial = tbs_cert.value[1]
-    assert_equal(OpenSSL::ASN1::Integer, serial.class)
-    assert_equal(0xdeadbeafdeadbeafdeadbeafdeadbeaf, serial.value)
-
-    sig = tbs_cert.value[2]
-    assert_equal(OpenSSL::ASN1::Sequence, sig.class)
-    assert_equal(2, sig.value.size)
-    assert_equal(OpenSSL::ASN1::ObjectId, sig.value[0].class)
-    assert_equal("1.2.840.113549.1.1.5", sig.value[0].oid)
-    assert_equal(OpenSSL::ASN1::Null, sig.value[1].class)
-
-    dn = tbs_cert.value[3] # issuer
-    assert_equal(subj.hash, OpenSSL::X509::Name.new(dn).hash)
-    assert_equal(OpenSSL::ASN1::Sequence, dn.class)
-    assert_equal(3, dn.value.size)
-    assert_equal(OpenSSL::ASN1::Set, dn.value[0].class)
-    assert_equal(OpenSSL::ASN1::Set, dn.value[1].class)
-    assert_equal(OpenSSL::ASN1::Set, dn.value[2].class)
-    assert_equal(1, dn.value[0].value.size)
-    assert_equal(1, dn.value[1].value.size)
-    assert_equal(1, dn.value[2].value.size)
-    assert_equal(OpenSSL::ASN1::Sequence, dn.value[0].value[0].class)
-    assert_equal(OpenSSL::ASN1::Sequence, dn.value[1].value[0].class)
-    assert_equal(OpenSSL::ASN1::Sequence, dn.value[2].value[0].class)
-    assert_equal(2, dn.value[0].value[0].value.size)
-    assert_equal(2, dn.value[1].value[0].value.size)
-    assert_equal(2, dn.value[2].value[0].value.size)
-    oid, value = *dn.value[0].value[0].value
-    assert_equal(OpenSSL::ASN1::ObjectId, oid.class)
-    assert_equal("0.9.2342.19200300.100.1.25", oid.oid)
-    assert_equal(OpenSSL::ASN1::IA5String, value.class)
-    assert_equal("org", value.value)
-    oid, value = *dn.value[1].value[0].value
-    assert_equal(OpenSSL::ASN1::ObjectId, oid.class)
-    assert_equal("0.9.2342.19200300.100.1.25", oid.oid)
-    assert_equal(OpenSSL::ASN1::IA5String, value.class)
-    assert_equal("ruby-lang", value.value)
-    oid, value = *dn.value[2].value[0].value
-    assert_equal(OpenSSL::ASN1::ObjectId, oid.class)
-    assert_equal("2.5.4.3", oid.oid)
-    assert_equal(OpenSSL::ASN1::UTF8String, value.class)
-    assert_equal("TestCA", value.value)
-
-    validity = tbs_cert.value[4]
-    assert_equal(OpenSSL::ASN1::Sequence, validity.class)
-    assert_equal(2, validity.value.size)
-    assert_equal(OpenSSL::ASN1::UTCTime, validity.value[0].class)
-    assert_equal(now, validity.value[0].value)
-    assert_equal(OpenSSL::ASN1::UTCTime, validity.value[1].class)
-    assert_equal(now+3600, validity.value[1].value)
-
-    dn = tbs_cert.value[5] # subject
-    assert_equal(subj.hash, OpenSSL::X509::Name.new(dn).hash)
-    assert_equal(OpenSSL::ASN1::Sequence, dn.class)
-    assert_equal(3, dn.value.size)
-    assert_equal(OpenSSL::ASN1::Set, dn.value[0].class)
-    assert_equal(OpenSSL::ASN1::Set, dn.value[1].class)
-    assert_equal(OpenSSL::ASN1::Set, dn.value[2].class)
-    assert_equal(1, dn.value[0].value.size)
-    assert_equal(1, dn.value[1].value.size)
-    assert_equal(1, dn.value[2].value.size)
-    assert_equal(OpenSSL::ASN1::Sequence, dn.value[0].value[0].class)
-    assert_equal(OpenSSL::ASN1::Sequence, dn.value[1].value[0].class)
-    assert_equal(OpenSSL::ASN1::Sequence, dn.value[2].value[0].class)
-    assert_equal(2, dn.value[0].value[0].value.size)
-    assert_equal(2, dn.value[1].value[0].value.size)
-    assert_equal(2, dn.value[2].value[0].value.size)
-    oid, value = *dn.value[0].value[0].value
-    assert_equal(OpenSSL::ASN1::ObjectId, oid.class)
-    assert_equal("0.9.2342.19200300.100.1.25", oid.oid)
-    assert_equal(OpenSSL::ASN1::IA5String, value.class)
-    assert_equal("org", value.value)
-    oid, value = *dn.value[1].value[0].value
-    assert_equal(OpenSSL::ASN1::ObjectId, oid.class)
-    assert_equal("0.9.2342.19200300.100.1.25", oid.oid)
-    assert_equal(OpenSSL::ASN1::IA5String, value.class)
-    assert_equal("ruby-lang", value.value)
-    oid, value = *dn.value[2].value[0].value
-    assert_equal(OpenSSL::ASN1::ObjectId, oid.class)
-    assert_equal("2.5.4.3", oid.oid)
-    assert_equal(OpenSSL::ASN1::UTF8String, value.class)
-    assert_equal("TestCA", value.value)
-
-    pkey = tbs_cert.value[6]
-    assert_equal(OpenSSL::ASN1::Sequence, pkey.class)
-    assert_equal(2, pkey.value.size)
-    assert_equal(OpenSSL::ASN1::Sequence, pkey.value[0].class)
-    assert_equal(2, pkey.value[0].value.size)
-    assert_equal(OpenSSL::ASN1::ObjectId, pkey.value[0].value[0].class)
-    assert_equal("1.2.840.113549.1.1.1", pkey.value[0].value[0].oid)
-    assert_equal(OpenSSL::ASN1::BitString, pkey.value[1].class)
-    assert_equal(0, pkey.value[1].unused_bits)
-    spkey = OpenSSL::ASN1.decode(pkey.value[1].value)
-    assert_equal(OpenSSL::ASN1::Sequence, spkey.class)
-    assert_equal(2, spkey.value.size)
-    assert_equal(OpenSSL::ASN1::Integer, spkey.value[0].class)
-    assert_equal(143085709396403084580358323862163416700436550432664688288860593156058579474547937626086626045206357324274536445865308750491138538454154232826011964045825759324933943290377903384882276841880081931690695505836279972214003660451338124170055999155993192881685495391496854691199517389593073052473319331505702779271, spkey.value[0].value)
-    assert_equal(OpenSSL::ASN1::Integer, spkey.value[1].class)
-    assert_equal(65537, spkey.value[1].value)
-
-    extensions = tbs_cert.value[7]
-    assert_equal(:CONTEXT_SPECIFIC, extensions.tag_class)
-    assert_equal(3, extensions.tag)
-    assert_equal(1, extensions.value.size)
-    assert_equal(OpenSSL::ASN1::Sequence, extensions.value[0].class)
-    assert_equal(3, extensions.value[0].value.size)
-
-    ext = extensions.value[0].value[0]  # basicConstraints
-    assert_equal(OpenSSL::ASN1::Sequence, ext.class)
-    assert_equal(3, ext.value.size)
-    assert_equal(OpenSSL::ASN1::ObjectId, ext.value[0].class)
-    assert_equal("2.5.29.19",  ext.value[0].oid)
-    assert_equal(OpenSSL::ASN1::Boolean, ext.value[1].class)
-    assert_equal(true, ext.value[1].value)
-    assert_equal(OpenSSL::ASN1::OctetString, ext.value[2].class)
-    extv = OpenSSL::ASN1.decode(ext.value[2].value)
-    assert_equal(OpenSSL::ASN1::Sequence, extv.class)
-    assert_equal(2, extv.value.size)
-    assert_equal(OpenSSL::ASN1::Boolean, extv.value[0].class)
-    assert_equal(true, extv.value[0].value)
-    assert_equal(OpenSSL::ASN1::Integer, extv.value[1].class)
-    assert_equal(1, extv.value[1].value)
-
-    ext = extensions.value[0].value[1]  # keyUsage
-    assert_equal(OpenSSL::ASN1::Sequence, ext.class)
-    assert_equal(3, ext.value.size)
-    assert_equal(OpenSSL::ASN1::ObjectId, ext.value[0].class)
-    assert_equal("2.5.29.15",  ext.value[0].oid)
-    assert_equal(OpenSSL::ASN1::Boolean, ext.value[1].class)
-    assert_equal(true, ext.value[1].value)
-    assert_equal(OpenSSL::ASN1::OctetString, ext.value[2].class)
-    extv = OpenSSL::ASN1.decode(ext.value[2].value)
-    assert_equal(OpenSSL::ASN1::BitString, extv.class)
-    str = "\000"; str[0] = 0b00000110
-    assert_equal(str, extv.value)
-
-    ext = extensions.value[0].value[2]  # subjetKeyIdentifier
-    assert_equal(OpenSSL::ASN1::Sequence, ext.class)
-    assert_equal(2, ext.value.size)
-    assert_equal(OpenSSL::ASN1::ObjectId, ext.value[0].class)
-    assert_equal("2.5.29.14",  ext.value[0].oid)
-    assert_equal(OpenSSL::ASN1::OctetString, ext.value[1].class)
-    extv = OpenSSL::ASN1.decode(ext.value[1].value)
-    assert_equal(OpenSSL::ASN1::OctetString, extv.class)
-    sha1 = OpenSSL::Digest::SHA1.new
-    sha1.update(pkey.value[1].value)
-    assert_equal(sha1.digest, extv.value)
-
-    assert_equal(OpenSSL::ASN1::Sequence, sig_alg.class)
-    assert_equal(2, sig_alg.value.size)
-    assert_equal(OpenSSL::ASN1::ObjectId, pkey.value[0].value[0].class)
-    assert_equal("1.2.840.113549.1.1.1", pkey.value[0].value[0].oid)
-    assert_equal(OpenSSL::ASN1::Null, pkey.value[0].value[1].class)
-
-    assert_equal(OpenSSL::ASN1::BitString, sig_val.class)
-    cululated_sig = key.sign(OpenSSL::Digest::SHA1.new, tbs_cert.to_der)
-    assert_equal(cululated_sig, sig_val.value)
-  end
-end if defined?(OpenSSL)
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_cipher.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_cipher.rb
deleted file mode 100644 (file)
index d671908..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-begin
-  require "openssl"
-rescue LoadError
-end
-require "test/unit"
-
-if defined?(OpenSSL)
-
-class OpenSSL::TestCipher < Test::Unit::TestCase
-  def setup
-    @c1 = OpenSSL::Cipher::Cipher.new("DES-EDE3-CBC")
-    @c2 = OpenSSL::Cipher::DES.new(:EDE3, "CBC")
-    @key = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-    @iv = "\0\0\0\0\0\0\0\0"
-    @hexkey = "0000000000000000000000000000000000000000000000"
-    @hexiv = "0000000000000000"
-    @data = "DATA"
-  end
-
-  def teardown
-    @c1 = @c2 = nil
-  end
-
-  def test_crypt
-    @c1.encrypt.pkcs5_keyivgen(@key, @iv)
-    @c2.encrypt.pkcs5_keyivgen(@key, @iv)
-    s1 = @c1.update(@data) + @c1.final
-    s2 = @c2.update(@data) + @c2.final
-    assert_equal(s1, s2, "encrypt")
-
-    @c1.decrypt.pkcs5_keyivgen(@key, @iv)
-    @c2.decrypt.pkcs5_keyivgen(@key, @iv)
-    assert_equal(@data, @c1.update(s1)+@c1.final, "decrypt")
-    assert_equal(@data, @c2.update(s2)+@c2.final, "decrypt")
-  end
-
-  def test_info
-    assert_equal("DES-EDE3-CBC", @c1.name, "name")
-    assert_equal("DES-EDE3-CBC", @c2.name, "name")
-    assert_kind_of(Fixnum, @c1.key_len, "key_len")
-    assert_kind_of(Fixnum, @c1.iv_len, "iv_len")
-  end
-
-  def test_dup
-    assert_equal(@c1.name, @c1.dup.name, "dup")
-    assert_equal(@c1.name, @c1.clone.name, "clone")
-    @c1.encrypt
-    @c1.key = @key
-    @c1.iv = @iv
-    tmpc = @c1.dup
-    s1 = @c1.update(@data) + @c1.final
-    s2 = tmpc.update(@data) + tmpc.final
-    assert_equal(s1, s2, "encrypt dup")
-  end
-
-  def test_reset
-    @c1.encrypt
-    @c1.key = @key
-    @c1.iv = @iv
-    s1 = @c1.update(@data) + @c1.final
-    @c1.reset
-    s2 = @c1.update(@data) + @c1.final
-    assert_equal(s1, s2, "encrypt reset")
-  end
-
-  def test_empty_data
-    @c1.encrypt
-    assert_raises(ArgumentError){ @c1.update("") }
-  end
-
-  if OpenSSL::OPENSSL_VERSION_NUMBER > 0x00907000
-    def test_ciphers
-      OpenSSL::Cipher.ciphers.each{|name|
-        assert(OpenSSL::Cipher::Cipher.new(name).is_a?(OpenSSL::Cipher::Cipher))
-      }
-    end
-
-    def test_AES
-      pt = File.read(__FILE__)
-      %w(ECB CBC CFB OFB).each{|mode|
-        c1 = OpenSSL::Cipher::AES256.new(mode)
-        c1.encrypt
-        c1.pkcs5_keyivgen("passwd")
-        ct = c1.update(pt) + c1.final
-
-        c2 = OpenSSL::Cipher::AES256.new(mode)
-        c2.decrypt
-        c2.pkcs5_keyivgen("passwd")
-        assert_equal(pt, c2.update(ct) + c2.final)
-      }
-    end
-  end
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_digest.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_digest.rb
deleted file mode 100644 (file)
index 8941588..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-begin
-  require "openssl"
-rescue LoadError
-end
-require "digest/md5"
-require "test/unit"
-
-if defined?(OpenSSL)
-
-class OpenSSL::TestDigest < Test::Unit::TestCase
-  def setup
-    @d1 = OpenSSL::Digest::Digest::new("MD5")
-    @d2 = OpenSSL::Digest::MD5.new
-    @md = Digest::MD5.new
-    @data = "DATA"
-  end
-
-  def teardown
-    @d1 = @d2 = @md = nil
-  end
-
-  def test_digest
-    assert_equal(@md.digest, @d1.digest)
-    assert_equal(@md.hexdigest, @d1.hexdigest)
-    @d1 << @data
-    @d2 << @data
-    @md << @data
-    assert_equal(@md.digest, @d1.digest)
-    assert_equal(@md.hexdigest, @d1.hexdigest)
-    assert_equal(@d1.digest, @d2.digest)
-    assert_equal(@d1.hexdigest, @d2.hexdigest)
-    assert_equal(@md.digest, OpenSSL::Digest::MD5.digest(@data))
-    assert_equal(@md.hexdigest, OpenSSL::Digest::MD5.hexdigest(@data))
-  end
-
-  def test_eql
-    assert(@d1 == @d2, "==")
-    d = @d1.clone
-    assert(d == @d1, "clone")
-  end
-
-  def test_info
-    assert_equal("MD5", @d1.name, "name")
-    assert_equal("MD5", @d2.name, "name")
-    assert_equal(16, @d1.size, "size")
-  end
-
-  def test_dup
-    @d1.update(@data)
-    assert_equal(@d1.name, @d1.dup.name, "dup")
-    assert_equal(@d1.name, @d1.clone.name, "clone")
-    assert_equal(@d1.digest, @d1.clone.digest, "clone .digest")
-  end
-
-  def test_reset
-    @d1.update(@data)
-    dig1 = @d1.digest
-    @d1.reset
-    @d1.update(@data)
-    dig2 = @d1.digest
-    assert_equal(dig1, dig2, "reset")
-  end
-
-  if OpenSSL::OPENSSL_VERSION_NUMBER > 0x00908000
-    def encode16(str)
-      str.unpack("H*").first
-    end
-
-    def test_098_features
-      sha224_a = "abd37534c7d9a2efb9465de931cd7055ffdb8879563ae98078d6d6d5"
-      sha256_a = "ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb"
-      sha384_a = "54a59b9f22b0b80880d8427e548b7c23abd873486e1f035dce9cd697e85175033caa88e6d57bc35efae0b5afd3145f31"
-      sha512_a = "1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75"
-
-      assert_equal(sha224_a, OpenSSL::Digest::SHA224.hexdigest("a"))
-      assert_equal(sha256_a, OpenSSL::Digest::SHA256.hexdigest("a"))
-      assert_equal(sha384_a, OpenSSL::Digest::SHA384.hexdigest("a"))
-      assert_equal(sha512_a, OpenSSL::Digest::SHA512.hexdigest("a"))
-
-      assert_equal(sha224_a, encode16(OpenSSL::Digest::SHA224.digest("a")))
-      assert_equal(sha256_a, encode16(OpenSSL::Digest::SHA256.digest("a")))
-      assert_equal(sha384_a, encode16(OpenSSL::Digest::SHA384.digest("a")))
-      assert_equal(sha512_a, encode16(OpenSSL::Digest::SHA512.digest("a")))
-    end
-  end
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_ec.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_ec.rb
deleted file mode 100644 (file)
index 671901c..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-begin
-  require "openssl"
-  require File.join(File.dirname(__FILE__), "utils.rb")
-rescue LoadError
-end
-require "test/unit"
-
-if defined?(OpenSSL::PKey::EC)
-
-class OpenSSL::TestEC < Test::Unit::TestCase
-  def setup
-    @data1 = 'foo'
-    @data2 = 'bar' * 1000 # data too long for DSA sig
-
-    @group1 = OpenSSL::PKey::EC::Group.new('secp112r1')
-    @group2 = OpenSSL::PKey::EC::Group.new('sect163k1')
-
-    @key1 = OpenSSL::PKey::EC.new
-    @key1.group = @group1
-    @key1.generate_key
-
-    @key2 = OpenSSL::PKey::EC.new(@group2.curve_name)
-    @key2.generate_key
-
-    @groups = [@group1, @group2]
-    @keys = [@key1, @key2]
-  end
-
-  def compare_keys(k1, k2)
-    assert_equal(k1.to_pem, k2.to_pem)
-  end
-
-  def test_curve_names
-    @groups.each_with_index do |group, idx|
-      key = @keys[idx]
-      assert_equal(group.curve_name, key.group.curve_name)
-    end
-  end
-
-  def test_check_key
-    for key in @keys
-      assert_equal(key.check_key, true)
-      assert_equal(key.private_key?, true)
-      assert_equal(key.public_key?, true)
-    end
-  end
-
-  def test_encoding
-    for group in @groups
-      for meth in [:to_der, :to_pem]
-        txt = group.send(meth)
-        gr = OpenSSL::PKey::EC::Group.new(txt)
-        assert_equal(txt, gr.send(meth))
-
-        assert_equal(group.generator.to_bn, gr.generator.to_bn)
-        assert_equal(group.cofactor, gr.cofactor)
-        assert_equal(group.order, gr.order)
-        assert_equal(group.seed, gr.seed)
-        assert_equal(group.degree, gr.degree)
-      end
-    end
-
-    for key in @keys
-      group = key.group
-
-      for meth in [:to_der, :to_pem]
-        txt = key.send(meth)
-        assert_equal(txt, OpenSSL::PKey::EC.new(txt).send(meth))
-      end
-
-      bn = key.public_key.to_bn
-      assert_equal(bn, OpenSSL::PKey::EC::Point.new(group, bn).to_bn)
-    end
-  end
-
-  def test_set_keys
-    for key in @keys
-      k = OpenSSL::PKey::EC.new
-      k.group = key.group
-      k.private_key = key.private_key
-      k.public_key = key.public_key
-
-      compare_keys(key, k)
-    end
-  end
-
-  def test_dsa_sign_verify
-    for key in @keys
-      sig = key.dsa_sign_asn1(@data1)
-      assert_equal(key.dsa_verify_asn1(@data1, sig), true)
-        
-      assert_raises(OpenSSL::PKey::ECError) { key.dsa_sign_asn1(@data2) }
-    end
-  end
-
-  def test_dh_compute_key
-    for key in @keys
-      k = OpenSSL::PKey::EC.new(key.group)
-      k.generate_key
-
-      puba = key.public_key
-      pubb = k.public_key
-      a = key.dh_compute_key(pubb)
-      b = k.dh_compute_key(puba)
-      assert_equal(a, b)
-    end
-  end
-
-# test Group: asn1_flag, point_conversion
-
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_hmac.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_hmac.rb
deleted file mode 100644 (file)
index 2f8d6bb..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-begin
-  require "openssl"
-rescue LoadError
-end
-require "test/unit"
-
-if defined?(OpenSSL)
-
-class OpenSSL::TestHMAC < Test::Unit::TestCase
-  def setup
-    @digest = OpenSSL::Digest::MD5.new
-    @key = "KEY"
-    @data = "DATA"
-    @h1 = OpenSSL::HMAC.new(@key, @digest)
-    @h2 = OpenSSL::HMAC.new(@key, @digest)
-  end
-
-  def teardown
-  end
-
-  def test_hmac
-    @h1.update(@data)
-    assert_equal(OpenSSL::HMAC.digest(@digest, @key, @data), @h1.digest, "digest")
-    assert_equal(OpenSSL::HMAC.hexdigest(@digest, @key, @data), @h1.hexdigest, "hexdigest")
-  end
-
-  def test_dup
-    @h1.update(@data)
-    h = @h1.dup
-    assert_equal(@h1.digest, h.digest, "dup digest")
-  end
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_ns_spki.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_ns_spki.rb
deleted file mode 100644 (file)
index 3937132..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-begin
-  require "openssl"
-  require File.join(File.dirname(__FILE__), "utils.rb")
-rescue LoadError
-end
-require "test/unit"
-
-if defined?(OpenSSL)
-
-
-class OpenSSL::TestNSSPI < Test::Unit::TestCase
-  def setup
-    # This request data is adopt from the specification of
-    # "Netscape Extensions for User Key Generation".
-    # -- http://wp.netscape.com/eng/security/comm4-keygen.html
-    @b64  = "MIHFMHEwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAnX0TILJrOMUue+PtwBRE6XfV"
-    @b64 << "WtKQbsshxk5ZhcUwcwyvcnIq9b82QhJdoACdD34rqfCAIND46fXKQUnb0mvKzQID"
-    @b64 << "AQABFhFNb3ppbGxhSXNNeUZyaWVuZDANBgkqhkiG9w0BAQQFAANBAAKv2Eex2n/S"
-    @b64 << "r/7iJNroWlSzSMtTiQTEB+ADWHGj9u1xrUrOilq/o2cuQxIfZcNZkYAkWP4DubqW"
-    @b64 << "i0//rgBvmco="
-  end
-
-  def teardown
-  end
-
-  def test_build_data
-    key1 = OpenSSL::TestUtils::TEST_KEY_RSA1024
-    key2 = OpenSSL::TestUtils::TEST_KEY_RSA2048
-    spki = OpenSSL::Netscape::SPKI.new
-    spki.challenge = "RandomString"
-    spki.public_key = key1.public_key
-    spki.sign(key1, OpenSSL::Digest::SHA1.new)
-    assert(spki.verify(spki.public_key))
-    assert(spki.verify(key1.public_key))
-    assert(!spki.verify(key2.public_key))
-
-    der = spki.to_der
-    spki = OpenSSL::Netscape::SPKI.new(der)
-    assert_equal("RandomString", spki.challenge)
-    assert_equal(key1.public_key.to_der, spki.public_key.to_der)
-    assert(spki.verify(spki.public_key))
-  end
-
-  def test_decode_data
-    spki = OpenSSL::Netscape::SPKI.new(@b64)
-    assert_equal(@b64, spki.to_pem)
-    assert_equal(@b64.unpack("m").first, spki.to_der)
-    assert_equal("MozillaIsMyFriend", spki.challenge)
-    assert_equal(OpenSSL::PKey::RSA, spki.public_key.class)
-
-    spki = OpenSSL::Netscape::SPKI.new(@b64.unpack("m").first)
-    assert_equal(@b64, spki.to_pem)
-    assert_equal(@b64.unpack("m").first, spki.to_der)
-    assert_equal("MozillaIsMyFriend", spki.challenge)
-    assert_equal(OpenSSL::PKey::RSA, spki.public_key.class)
-  end
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_pair.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_pair.rb
deleted file mode 100644 (file)
index 7273554..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-begin
-  require "openssl"
-rescue LoadError
-end
-require 'test/unit'
-
-if defined?(OpenSSL)
-
-require 'socket'
-dir = File.expand_path(__FILE__)
-2.times {dir = File.dirname(dir)}
-$:.replace([File.join(dir, "ruby")] | $:)
-require 'ut_eof'
-
-module SSLPair
-  def server
-    host = "127.0.0.1"
-    port = 0
-    ctx = OpenSSL::SSL::SSLContext.new()
-    ctx.ciphers = "ADH"
-    tcps = TCPServer.new(host, port)
-    ssls = OpenSSL::SSL::SSLServer.new(tcps, ctx)
-    return ssls
-  end
-
-  def client(port)
-    host = "127.0.0.1"
-    ctx = OpenSSL::SSL::SSLContext.new()
-    ctx.ciphers = "ADH"
-    s = TCPSocket.new(host, port)
-    ssl = OpenSSL::SSL::SSLSocket.new(s, ctx)
-    ssl.connect
-    ssl.sync_close = true
-    ssl
-  end
-
-  def ssl_pair
-    ssls = server
-    th = Thread.new {
-      ns = ssls.accept
-      ssls.close
-      ns
-    }
-    port = ssls.to_io.addr[1]
-    c = client(port)
-    s = th.value
-    if block_given?
-      begin
-        yield c, s
-      ensure
-        c.close unless c.closed?
-        s.close unless s.closed?
-      end
-    else
-      return c, s
-    end
-  end
-end
-
-class OpenSSL::TestEOF1 < Test::Unit::TestCase
-  include TestEOF
-  include SSLPair
-
-  def open_file(content)
-    s1, s2 = ssl_pair
-    Thread.new { s2 << content; s2.close }
-    yield s1
-  end
-end
-
-class OpenSSL::TestEOF2 < Test::Unit::TestCase
-  include TestEOF
-  include SSLPair
-
-  def open_file(content)
-    s1, s2 = ssl_pair
-    Thread.new { s1 << content; s1.close }
-    yield s2
-  end
-end
-
-class OpenSSL::TestPair < Test::Unit::TestCase
-  include SSLPair
-
-  def test_getc
-    ssl_pair {|s1, s2|
-      s1 << "a"
-      assert_equal(?a, s2.getc)
-    }
-  end
-
-  def test_readpartial
-    ssl_pair {|s1, s2|
-      s2.write "a\nbcd"
-      assert_equal("a\n", s1.gets)
-      assert_equal("bcd", s1.readpartial(10))
-      s2.write "efg"
-      assert_equal("efg", s1.readpartial(10))
-      s2.close
-      assert_raise(EOFError) { s1.readpartial(10) }
-      assert_raise(EOFError) { s1.readpartial(10) }
-      assert_equal("", s1.readpartial(0))
-    }
-  end
-
-  def test_readall
-    ssl_pair {|s1, s2|
-      s2.close
-      assert_equal("", s1.read)
-    }
-  end
-
-  def test_readline
-    ssl_pair {|s1, s2|
-      s2.close
-      assert_raise(EOFError) { s1.readline }
-    }
-  end
-
-  def test_puts_meta
-    ssl_pair {|s1, s2|
-      begin
-        old = $/
-        $/ = '*'
-        s1.puts 'a'
-      ensure
-        $/ = old
-      end
-      s1.close
-      assert_equal("a\n", s2.read)
-    }
-  end
-
-  def test_puts_empty
-    ssl_pair {|s1, s2|
-      s1.puts
-      s1.close
-      assert_equal("\n", s2.read)
-    }
-  end
-
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_pkcs7.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_pkcs7.rb
deleted file mode 100644 (file)
index 9b472c1..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-begin
-  require "openssl"
-  require File.join(File.dirname(__FILE__), "utils.rb")
-rescue LoadError
-end
-require "test/unit"
-
-if defined?(OpenSSL)
-
-class OpenSSL::TestPKCS7 < Test::Unit::TestCase
-  def setup
-    @rsa1024 = OpenSSL::TestUtils::TEST_KEY_RSA1024
-    @rsa2048 = OpenSSL::TestUtils::TEST_KEY_RSA2048
-    ca = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=CA")
-    ee1 = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=EE1")
-    ee2 = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=EE2")
-
-    now = Time.now
-    ca_exts = [
-      ["basicConstraints","CA:TRUE",true],
-      ["keyUsage","keyCertSign, cRLSign",true],
-      ["subjectKeyIdentifier","hash",false],
-      ["authorityKeyIdentifier","keyid:always",false],
-    ]
-    @ca_cert = issue_cert(ca, @rsa2048, 1, Time.now, Time.now+3600, ca_exts,
-                           nil, nil, OpenSSL::Digest::SHA1.new)
-    ee_exts = [
-      ["keyUsage","Non Repudiation, Digital Signature, Key Encipherment",true],
-      ["authorityKeyIdentifier","keyid:always",false],
-      ["extendedKeyUsage","clientAuth, emailProtection, codeSigning",false],
-    ]
-    @ee1_cert = issue_cert(ee1, @rsa1024, 2, Time.now, Time.now+1800, ee_exts,
-                           @ca_cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-    @ee2_cert = issue_cert(ee2, @rsa1024, 3, Time.now, Time.now+1800, ee_exts,
-                           @ca_cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-  end
-
-  def issue_cert(*args)             
-    OpenSSL::TestUtils.issue_cert(*args)
-  end
-
-  def test_signed
-    store = OpenSSL::X509::Store.new
-    store.add_cert(@ca_cert)
-    ca_certs = [@ca_cert]
-
-    data = "aaaaa\r\nbbbbb\r\nccccc\r\n"
-    tmp = OpenSSL::PKCS7.sign(@ee1_cert, @rsa1024, data, ca_certs)
-    p7 = OpenSSL::PKCS7::PKCS7.new(tmp.to_der)
-    certs = p7.certificates
-    signers = p7.signers
-    assert(p7.verify([], store))
-    assert_equal(data, p7.data)
-    assert_equal(2, certs.size)
-    assert_equal(@ee1_cert.subject.to_s, certs[0].subject.to_s)
-    assert_equal(@ca_cert.subject.to_s, certs[1].subject.to_s)
-    assert_equal(1, signers.size)
-    assert_equal(@ee1_cert.serial, signers[0].serial)
-    assert_equal(@ee1_cert.issuer.to_s, signers[0].issuer.to_s)
-
-    # Normaly OpenSSL tries to translate the supplied content into canonical
-    # MIME format (e.g. a newline character is converted into CR+LF).
-    # If the content is a binary, PKCS7::BINARY flag should be used.
-
-    data = "aaaaa\nbbbbb\nccccc\n"
-    flag = OpenSSL::PKCS7::BINARY
-    tmp = OpenSSL::PKCS7.sign(@ee1_cert, @rsa1024, data, ca_certs, flag)
-    p7 = OpenSSL::PKCS7::PKCS7.new(tmp.to_der)
-    certs = p7.certificates
-    signers = p7.signers
-    assert(p7.verify([], store))
-    assert_equal(data, p7.data)
-    assert_equal(2, certs.size)
-    assert_equal(@ee1_cert.subject.to_s, certs[0].subject.to_s)
-    assert_equal(@ca_cert.subject.to_s, certs[1].subject.to_s)
-    assert_equal(1, signers.size)
-    assert_equal(@ee1_cert.serial, signers[0].serial)
-    assert_equal(@ee1_cert.issuer.to_s, signers[0].issuer.to_s)
-
-    # A signed-data which have multiple signatures can be created 
-    # through the following steps.
-    #   1. create two signed-data
-    #   2. copy signerInfo and certificate from one to another
-
-    tmp1 = OpenSSL::PKCS7.sign(@ee1_cert, @rsa1024, data, [], flag)
-    tmp2 = OpenSSL::PKCS7.sign(@ee2_cert, @rsa1024, data, [], flag)
-    tmp1.add_signer(tmp2.signers[0])
-    tmp1.add_certificate(@ee2_cert)  
-
-    p7 = OpenSSL::PKCS7::PKCS7.new(tmp1.to_der)
-    certs = p7.certificates
-    signers = p7.signers
-    assert(p7.verify([], store))
-    assert_equal(data, p7.data)
-    assert_equal(2, certs.size)
-    assert_equal(2, signers.size)
-    assert_equal(@ee1_cert.serial, signers[0].serial)
-    assert_equal(@ee1_cert.issuer.to_s, signers[0].issuer.to_s)
-    assert_equal(@ee2_cert.serial, signers[1].serial)
-    assert_equal(@ee2_cert.issuer.to_s, signers[1].issuer.to_s)
-  end
-
-  def test_detached_sign
-    store = OpenSSL::X509::Store.new
-    store.add_cert(@ca_cert)
-    ca_certs = [@ca_cert]
-
-    data = "aaaaa\nbbbbb\nccccc\n"
-    flag = OpenSSL::PKCS7::BINARY|OpenSSL::PKCS7::DETACHED
-    tmp = OpenSSL::PKCS7.sign(@ee1_cert, @rsa1024, data, ca_certs, flag)
-    p7 = OpenSSL::PKCS7::PKCS7.new(tmp.to_der)
-    a1 = OpenSSL::ASN1.decode(p7)
-
-    certs = p7.certificates
-    signers = p7.signers
-    assert(!p7.verify([], store))
-    assert(p7.verify([], store, data))
-    assert_equal(data, p7.data)
-    assert_equal(2, certs.size)
-    assert_equal(@ee1_cert.subject.to_s, certs[0].subject.to_s)
-    assert_equal(@ca_cert.subject.to_s, certs[1].subject.to_s)
-    assert_equal(1, signers.size)
-    assert_equal(@ee1_cert.serial, signers[0].serial)
-    assert_equal(@ee1_cert.issuer.to_s, signers[0].issuer.to_s)
-  end
-
-  def test_enveloped
-    if OpenSSL::OPENSSL_VERSION_NUMBER <= 0x0090704f
-      # PKCS7_encrypt() of OpenSSL-0.9.7d goes to SEGV.
-      # http://www.mail-archive.com/openssl-dev@openssl.org/msg17376.html
-      return
-    end
-
-    certs = [@ee1_cert, @ee2_cert]
-    cipher = OpenSSL::Cipher::AES.new("128-CBC")
-    data = "aaaaa\nbbbbb\nccccc\n"
-
-    tmp = OpenSSL::PKCS7.encrypt(certs, data, cipher, OpenSSL::PKCS7::BINARY)
-    p7 = OpenSSL::PKCS7::PKCS7.new(tmp.to_der)
-    recip = p7.recipients
-    assert_equal(:enveloped, p7.type)
-    assert_equal(2, recip.size)
-
-    assert_equal(@ca_cert.subject.to_s, recip[0].issuer.to_s)
-    assert_equal(2, recip[0].serial)
-    assert_equal(data, p7.decrypt(@rsa1024, @ee1_cert))
-
-    assert_equal(@ca_cert.subject.to_s, recip[1].issuer.to_s)
-    assert_equal(3, recip[1].serial)
-    assert_equal(data, p7.decrypt(@rsa1024, @ee2_cert))
-  end
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_pkey_rsa.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_pkey_rsa.rb
deleted file mode 100644 (file)
index 401cb6c..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-begin
-  require "openssl"
-  require File.join(File.dirname(__FILE__), "utils.rb")
-rescue LoadError
-end
-require 'test/unit'
-
-if defined?(OpenSSL)
-
-class OpenSSL::TestPKeyRSA < Test::Unit::TestCase
-  def test_padding
-    key = OpenSSL::PKey::RSA.new(512, 3)
-
-    # Need right size for raw mode
-    plain0 = "x" * (512/8)
-    cipher = key.private_encrypt(plain0, OpenSSL::PKey::RSA::NO_PADDING)
-    plain1 = key.public_decrypt(cipher, OpenSSL::PKey::RSA::NO_PADDING)
-    assert_equal(plain0, plain1)
-
-    # Need smaller size for pkcs1 mode
-    plain0 = "x" * (512/8 - 11)
-    cipher1 = key.private_encrypt(plain0, OpenSSL::PKey::RSA::PKCS1_PADDING)
-    plain1 = key.public_decrypt(cipher1, OpenSSL::PKey::RSA::PKCS1_PADDING)
-    assert_equal(plain0, plain1)
-
-    cipherdef = key.private_encrypt(plain0) # PKCS1_PADDING is default
-    plain1 = key.public_decrypt(cipherdef)
-    assert_equal(plain0, plain1)
-    assert_equal(cipher1, cipherdef)
-
-    # Failure cases
-    assert_raise(ArgumentError){ key.private_encrypt() }
-    assert_raise(ArgumentError){ key.private_encrypt("hi", 1, nil) }
-    assert_raise(OpenSSL::PKey::RSAError){ key.private_encrypt(plain0, 666) }
-  end
-
-  def test_private
-    key = OpenSSL::PKey::RSA.new(512, 3)
-    assert(key.private?)
-    key2 = OpenSSL::PKey::RSA.new(key.to_der)
-    assert(key2.private?)
-    key3 = key.public_key
-    assert(!key3.private?)
-    key4 = OpenSSL::PKey::RSA.new(key3.to_der)
-    assert(!key4.private?)
-  end
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_ssl.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_ssl.rb
deleted file mode 100644 (file)
index 29d3d19..0000000
+++ /dev/null
@@ -1,534 +0,0 @@
-begin
-  require "openssl"
-  require File.join(File.dirname(__FILE__), "utils.rb")
-rescue LoadError
-end
-require "rbconfig"
-require "socket"
-require "test/unit"
-begin
-  loadpath = $:.dup
-  $:.replace($: | [File.expand_path("../ruby", File.dirname(__FILE__))])
-  require 'envutil'
-ensure
-  $:.replace(loadpath)
-end
-
-if defined?(OpenSSL)
-
-class OpenSSL::TestSSL < Test::Unit::TestCase
-  RUBY = EnvUtil.rubybin
-  SSL_SERVER = File.join(File.dirname(__FILE__), "ssl_server.rb")
-  PORT = 20443
-  ITERATIONS = ($0 == __FILE__) ? 100 : 10
-
-  def setup
-    @ca_key  = OpenSSL::TestUtils::TEST_KEY_RSA2048
-    @svr_key = OpenSSL::TestUtils::TEST_KEY_RSA1024
-    @cli_key = OpenSSL::TestUtils::TEST_KEY_DSA256
-    @ca  = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=CA")
-    @svr = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=localhost")
-    @cli = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=localhost")
-
-    now = Time.at(Time.now.to_i)
-    ca_exts = [
-      ["basicConstraints","CA:TRUE",true],
-      ["keyUsage","cRLSign,keyCertSign",true],
-    ]
-    ee_exts = [
-      ["keyUsage","keyEncipherment,digitalSignature",true],
-    ]
-    @ca_cert  = issue_cert(@ca, @ca_key, 1, now, now+3600, ca_exts,
-                           nil, nil, OpenSSL::Digest::SHA1.new)
-    @svr_cert = issue_cert(@svr, @svr_key, 2, now, now+1800, ee_exts,
-                           @ca_cert, @ca_key, OpenSSL::Digest::SHA1.new)
-    @cli_cert = issue_cert(@cli, @cli_key, 3, now, now+1800, ee_exts,
-                           @ca_cert, @ca_key, OpenSSL::Digest::SHA1.new)
-    @server = nil
-  end
-
-  def teardown
-  end
-
-  def issue_cert(*arg)
-    OpenSSL::TestUtils.issue_cert(*arg)
-  end
-
-  def issue_crl(*arg)
-    OpenSSL::TestUtils.issue_crl(*arg)
-  end
-
-  def readwrite_loop(ctx, ssl)
-    while line = ssl.gets
-      if line =~ /^STARTTLS$/
-        ssl.accept
-        next
-      end
-      ssl.write(line)
-    end
-  rescue OpenSSL::SSL::SSLError
-  rescue IOError
-  ensure
-    ssl.close rescue nil
-  end
-
-  def server_loop(ctx, ssls, server_proc)
-    loop do
-      ssl = nil
-      begin
-        ssl = ssls.accept
-      rescue OpenSSL::SSL::SSLError
-       retry
-      end
-
-      Thread.start do
-        Thread.current.abort_on_exception = true  
-        server_proc.call(ctx, ssl)
-      end
-    end
-  rescue Errno::EBADF, IOError
-  end
-
-  def start_server(port0, verify_mode, start_immediately, args = {}, &block)
-    ctx_proc = args[:ctx_proc]
-    server_proc = args[:server_proc]
-    server_proc ||= method(:readwrite_loop)
-  
-    store = OpenSSL::X509::Store.new
-    store.add_cert(@ca_cert)
-    store.purpose = OpenSSL::X509::PURPOSE_SSL_CLIENT
-    ctx = OpenSSL::SSL::SSLContext.new
-    ctx.cert_store = store
-    #ctx.extra_chain_cert = [ ca_cert ]
-    ctx.cert = @svr_cert
-    ctx.key = @svr_key
-    ctx.verify_mode = verify_mode
-    ctx_proc.call(ctx) if ctx_proc
-
-    Socket.do_not_reverse_lookup = true
-    tcps = nil
-    port = port0
-    begin
-      tcps = TCPServer.new("127.0.0.1", port)
-    rescue Errno::EADDRINUSE
-      port += 1
-      retry
-    end
-
-    ssls = OpenSSL::SSL::SSLServer.new(tcps, ctx)
-    ssls.start_immediately = start_immediately
-
-    begin
-      server = Thread.new do
-        Thread.current.abort_on_exception = true  
-        server_loop(ctx, ssls, server_proc)
-      end
-
-      $stderr.printf("%s started: pid=%d port=%d\n", SSL_SERVER, pid, port) if $DEBUG
-
-      block.call(server, port.to_i)
-    ensure
-      tcps.close if (tcps)
-      if (server)
-        server.join(5)
-        if server.alive?
-          server.kill
-          server.join
-          flunk("TCPServer was closed and SSLServer is still alive") unless $!
-        end
-      end
-    end
-  end
-
-  def starttls(ssl)
-    ssl.puts("STARTTLS")
-
-    sleep 1   # When this line is eliminated, process on Cygwin blocks
-              # forever at ssl.connect. But I don't know why it does.
-
-    ssl.connect
-  end
-
-  def test_ctx_setup
-    ctx = OpenSSL::SSL::SSLContext.new
-    assert_equal(ctx.setup, true)
-    assert_equal(ctx.setup, nil)
-  end
-
-  def test_connect_and_close
-    start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port|
-      sock = TCPSocket.new("127.0.0.1", port)
-      ssl = OpenSSL::SSL::SSLSocket.new(sock)
-      assert(ssl.connect)
-      ssl.close
-      assert(!sock.closed?)
-      sock.close
-
-      sock = TCPSocket.new("127.0.0.1", port)
-      ssl = OpenSSL::SSL::SSLSocket.new(sock)
-      ssl.sync_close = true  # !!
-      assert(ssl.connect)
-      ssl.close
-      assert(sock.closed?)
-    }
-  end
-
-  def test_read_and_write
-    start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port|
-      sock = TCPSocket.new("127.0.0.1", port)
-      ssl = OpenSSL::SSL::SSLSocket.new(sock)
-      ssl.sync_close = true
-      ssl.connect
-
-      # syswrite and sysread
-      ITERATIONS.times{|i|
-        str = "x" * 100 + "\n"
-        ssl.syswrite(str)
-        assert_equal(str, ssl.sysread(str.size))
-
-        str = "x" * i * 100 + "\n"
-        buf = ""
-        ssl.syswrite(str)
-        assert_equal(buf.object_id, ssl.sysread(str.size, buf).object_id)
-        assert_equal(str, buf)
-      }
-
-      # read and write
-      ITERATIONS.times{|i|
-        str = "x" * 100 + "\n"
-        ssl.write(str)
-        assert_equal(str, ssl.read(str.size))
-
-        str = "x" * i * 100 + "\n"
-        buf = ""
-        ssl.write(str)
-        assert_equal(buf.object_id, ssl.read(str.size, buf).object_id)
-        assert_equal(str, buf)
-      }
-
-      ssl.close
-    }
-  end
-
-  def test_client_auth
-    vflag = OpenSSL::SSL::VERIFY_PEER|OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT
-    start_server(PORT, vflag, true){|server, port|
-      assert_raises(OpenSSL::SSL::SSLError){
-        sock = TCPSocket.new("127.0.0.1", port)
-        ssl = OpenSSL::SSL::SSLSocket.new(sock)
-        ssl.connect
-      }
-
-      ctx = OpenSSL::SSL::SSLContext.new
-      ctx.key = @cli_key
-      ctx.cert = @cli_cert
-      sock = TCPSocket.new("127.0.0.1", port)
-      ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx)
-      ssl.sync_close = true
-      ssl.connect
-      ssl.puts("foo")
-      assert_equal("foo\n", ssl.gets)
-      ssl.close
-
-      called = nil
-      ctx = OpenSSL::SSL::SSLContext.new
-      ctx.client_cert_cb = Proc.new{ |sslconn|
-        called = true
-        [@cli_cert, @cli_key]
-      }
-      sock = TCPSocket.new("127.0.0.1", port)
-      ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx)
-      ssl.sync_close = true
-      ssl.connect
-      assert(called)
-      ssl.puts("foo")
-      assert_equal("foo\n", ssl.gets)
-      ssl.close
-    }
-  end
-
-  def test_starttls
-    start_server(PORT, OpenSSL::SSL::VERIFY_NONE, false){|server, port|
-      sock = TCPSocket.new("127.0.0.1", port)
-      ssl = OpenSSL::SSL::SSLSocket.new(sock)
-      ssl.sync_close = true
-      str = "x" * 1000 + "\n"
-
-      ITERATIONS.times{
-        ssl.puts(str)
-        assert_equal(str, ssl.gets)
-      }
-
-      starttls(ssl)
-
-      ITERATIONS.times{
-        ssl.puts(str)
-        assert_equal(str, ssl.gets)
-      }
-
-      ssl.close
-    }
-  end
-
-  def test_parallel
-    GC.start
-    start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port|
-      ssls = []
-      10.times{
-        sock = TCPSocket.new("127.0.0.1", port)
-        ssl = OpenSSL::SSL::SSLSocket.new(sock)
-        ssl.connect
-        ssl.sync_close = true
-        ssls << ssl
-      }
-      str = "x" * 1000 + "\n"
-      ITERATIONS.times{
-        ssls.each{|ssl|
-          ssl.puts(str)
-          assert_equal(str, ssl.gets)
-        }
-      }
-      ssls.each{|ssl| ssl.close }
-    }
-  end
-
-  def test_verify_result
-    start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port|
-      sock = TCPSocket.new("127.0.0.1", port)
-      ctx = OpenSSL::SSL::SSLContext.new
-      ctx.set_params
-      ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx)
-      assert_raise(OpenSSL::SSL::SSLError){ ssl.connect }
-      assert_equal(OpenSSL::X509::V_ERR_SELF_SIGNED_CERT_IN_CHAIN, ssl.verify_result)
-
-      sock = TCPSocket.new("127.0.0.1", port)
-      ctx = OpenSSL::SSL::SSLContext.new
-      ctx.set_params(
-        :verify_callback => Proc.new do |preverify_ok, store_ctx|
-          store_ctx.error = OpenSSL::X509::V_OK
-          true
-        end
-      )
-      ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx)
-      ssl.connect
-      assert_equal(OpenSSL::X509::V_OK, ssl.verify_result)
-
-      sock = TCPSocket.new("127.0.0.1", port)
-      ctx = OpenSSL::SSL::SSLContext.new
-      ctx.set_params(
-        :verify_callback => Proc.new do |preverify_ok, store_ctx|
-          store_ctx.error = OpenSSL::X509::V_ERR_APPLICATION_VERIFICATION
-          false
-        end
-      )
-      ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx)
-      assert_raise(OpenSSL::SSL::SSLError){ ssl.connect }
-      assert_equal(OpenSSL::X509::V_ERR_APPLICATION_VERIFICATION, ssl.verify_result)
-    }
-  end
-
-  def test_sslctx_set_params
-    start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port|
-      sock = TCPSocket.new("127.0.0.1", port)
-      ctx = OpenSSL::SSL::SSLContext.new
-      ctx.set_params
-      assert_equal(OpenSSL::SSL::VERIFY_PEER, ctx.verify_mode)
-      assert_equal(OpenSSL::SSL::OP_ALL, ctx.options)
-      ciphers = ctx.ciphers
-      ciphers_versions = ciphers.collect{|_, v, _, _| v }
-      ciphers_names = ciphers.collect{|v, _, _, _| v }
-      assert(ciphers_names.all?{|v| /ADH/ !~ v })
-      assert(ciphers_versions.all?{|v| /SSLv2/ !~ v })
-      ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx)
-      assert_raise(OpenSSL::SSL::SSLError){ ssl.connect }
-      assert_equal(OpenSSL::X509::V_ERR_SELF_SIGNED_CERT_IN_CHAIN, ssl.verify_result)
-    }
-  end
-
-  def test_post_connection_check
-    sslerr = OpenSSL::SSL::SSLError
-
-    start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port|
-      sock = TCPSocket.new("127.0.0.1", port)
-      ssl = OpenSSL::SSL::SSLSocket.new(sock)
-      ssl.connect
-      assert_raises(sslerr){ssl.post_connection_check("localhost.localdomain")}
-      assert_raises(sslerr){ssl.post_connection_check("127.0.0.1")}
-      assert(ssl.post_connection_check("localhost"))
-      assert_raises(sslerr){ssl.post_connection_check("foo.example.com")}
-
-      cert = ssl.peer_cert
-      assert(!OpenSSL::SSL.verify_certificate_identity(cert, "localhost.localdomain"))
-      assert(!OpenSSL::SSL.verify_certificate_identity(cert, "127.0.0.1"))
-      assert(OpenSSL::SSL.verify_certificate_identity(cert, "localhost"))
-      assert(!OpenSSL::SSL.verify_certificate_identity(cert, "foo.example.com"))
-    }
-
-    now = Time.now
-    exts = [
-      ["keyUsage","keyEncipherment,digitalSignature",true],
-      ["subjectAltName","DNS:localhost.localdomain",false],
-      ["subjectAltName","IP:127.0.0.1",false],
-    ]
-    @svr_cert = issue_cert(@svr, @svr_key, 4, now, now+1800, exts,
-                           @ca_cert, @ca_key, OpenSSL::Digest::SHA1.new)
-    start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port|
-      sock = TCPSocket.new("127.0.0.1", port)
-      ssl = OpenSSL::SSL::SSLSocket.new(sock)
-      ssl.connect
-      assert(ssl.post_connection_check("localhost.localdomain"))
-      assert(ssl.post_connection_check("127.0.0.1"))
-      assert_raises(sslerr){ssl.post_connection_check("localhost")}
-      assert_raises(sslerr){ssl.post_connection_check("foo.example.com")}
-
-      cert = ssl.peer_cert
-      assert(OpenSSL::SSL.verify_certificate_identity(cert, "localhost.localdomain"))
-      assert(OpenSSL::SSL.verify_certificate_identity(cert, "127.0.0.1"))
-      assert(!OpenSSL::SSL.verify_certificate_identity(cert, "localhost"))
-      assert(!OpenSSL::SSL.verify_certificate_identity(cert, "foo.example.com"))
-    }
-
-    now = Time.now
-    exts = [
-      ["keyUsage","keyEncipherment,digitalSignature",true],
-      ["subjectAltName","DNS:*.localdomain",false],
-    ]
-    @svr_cert = issue_cert(@svr, @svr_key, 5, now, now+1800, exts,
-                           @ca_cert, @ca_key, OpenSSL::Digest::SHA1.new)
-    start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true){|server, port|
-      sock = TCPSocket.new("127.0.0.1", port)
-      ssl = OpenSSL::SSL::SSLSocket.new(sock)
-      ssl.connect
-      assert(ssl.post_connection_check("localhost.localdomain"))
-      assert_raises(sslerr){ssl.post_connection_check("127.0.0.1")}
-      assert_raises(sslerr){ssl.post_connection_check("localhost")}
-      assert_raises(sslerr){ssl.post_connection_check("foo.example.com")}
-      cert = ssl.peer_cert
-      assert(OpenSSL::SSL.verify_certificate_identity(cert, "localhost.localdomain"))
-      assert(!OpenSSL::SSL.verify_certificate_identity(cert, "127.0.0.1"))
-      assert(!OpenSSL::SSL.verify_certificate_identity(cert, "localhost"))
-      assert(!OpenSSL::SSL.verify_certificate_identity(cert, "foo.example.com"))
-    }
-  end
-
-  def test_client_session
-    last_session = nil
-    start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true) do |server, port|
-      2.times do
-        sock = TCPSocket.new("127.0.0.1", port)
-        ssl = OpenSSL::SSL::SSLSocket.new(sock)
-        ssl.sync_close = true
-        ssl.session = last_session if last_session
-        ssl.connect
-
-        session = ssl.session
-        if last_session
-          assert(ssl.session_reused?)
-
-          if session.respond_to?(:id)
-            assert_equal(session.id, last_session.id)
-          end
-          assert_equal(session.to_pem, last_session.to_pem)
-          assert_equal(session.to_der, last_session.to_der)
-          # Older version of OpenSSL may not be consistent.  Look up which versions later.
-          assert_equal(session.to_text, last_session.to_text)
-        else
-          assert(!ssl.session_reused?)
-        end
-        last_session = session
-
-        str = "x" * 100 + "\n"
-        ssl.puts(str)
-        assert_equal(str, ssl.gets)
-
-        ssl.close
-      end
-    end
-  end
-
-  def test_server_session
-    connections = 0
-    saved_session = nil
-
-    ctx_proc = Proc.new do |ctx, ssl|
-# add test for session callbacks here
-    end
-
-    server_proc = Proc.new do |ctx, ssl|
-      session = ssl.session
-      stats = ctx.session_cache_stats
-
-      case connections
-      when 0
-        assert_equal(stats[:cache_num], 1)
-        assert_equal(stats[:cache_hits], 0)
-        assert_equal(stats[:cache_misses], 0)
-        assert(!ssl.session_reused?)
-      when 1
-        assert_equal(stats[:cache_num], 1)
-        assert_equal(stats[:cache_hits], 1)
-        assert_equal(stats[:cache_misses], 0)
-        assert(ssl.session_reused?)
-        ctx.session_remove(session)
-        saved_session = session
-      when 2
-        assert_equal(stats[:cache_num], 1)
-        assert_equal(stats[:cache_hits], 1)
-        assert_equal(stats[:cache_misses], 1)
-        assert(!ssl.session_reused?)
-        ctx.session_add(saved_session)
-      when 3
-        assert_equal(stats[:cache_num], 2)
-        assert_equal(stats[:cache_hits], 2)
-        assert_equal(stats[:cache_misses], 1)
-        assert(ssl.session_reused?)
-        ctx.flush_sessions(Time.now + 5000)
-      when 4
-        assert_equal(stats[:cache_num], 1)
-        assert_equal(stats[:cache_hits], 2)
-        assert_equal(stats[:cache_misses], 2)
-        assert(!ssl.session_reused?)
-        ctx.session_add(saved_session)
-      end
-      connections += 1
-      
-      readwrite_loop(ctx, ssl)
-    end
-
-    first_session = nil
-    start_server(PORT, OpenSSL::SSL::VERIFY_NONE, true, :ctx_proc => ctx_proc, :server_proc => server_proc) do |server, port|
-      10.times do |i|
-        sock = TCPSocket.new("127.0.0.1", port)
-        ctx = OpenSSL::SSL::SSLContext.new
-        if defined?(OpenSSL::SSL::OP_NO_TICKET)
-          # disable RFC4507 support
-          ctx.options = OpenSSL::SSL::OP_NO_TICKET
-        end
-        ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx)
-        ssl.sync_close = true
-        ssl.session = first_session if first_session
-        ssl.connect
-
-        session = ssl.session
-        if first_session
-          case i
-          when 1; assert(ssl.session_reused?)
-          when 2; assert(!ssl.session_reused?)
-          when 3; assert(ssl.session_reused?)
-          when 4; assert(!ssl.session_reused?)
-          when 5..10; assert(ssl.session_reused?)
-          end
-        end
-        first_session ||= session
-
-        str = "x" * 100 + "\n"
-        ssl.puts(str)
-        assert_equal(str, ssl.gets)
-
-        ssl.close
-      end
-    end
-  end
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509cert.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509cert.rb
deleted file mode 100644 (file)
index a5a75ff..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-begin
-  require "openssl"
-  require File.join(File.dirname(__FILE__), "utils.rb")
-rescue LoadError
-end
-require "test/unit"
-
-if defined?(OpenSSL)
-
-class OpenSSL::TestX509Certificate < Test::Unit::TestCase
-  def setup
-    @rsa1024 = OpenSSL::TestUtils::TEST_KEY_RSA1024
-    @rsa2048 = OpenSSL::TestUtils::TEST_KEY_RSA2048
-    @dsa256  = OpenSSL::TestUtils::TEST_KEY_DSA256
-    @dsa512  = OpenSSL::TestUtils::TEST_KEY_DSA512
-    @ca = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=CA")
-    @ee1 = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=EE1")
-    @ee2 = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=EE2")
-  end
-
-  def teardown
-  end
-
-  def issue_cert(*args)
-    OpenSSL::TestUtils.issue_cert(*args)
-  end
-
-  def test_serial
-    [1, 2**32, 2**100].each{|s|
-      cert = issue_cert(@ca, @rsa2048, s, Time.now, Time.now+3600, [],
-                        nil, nil, OpenSSL::Digest::SHA1.new) 
-      assert_equal(s, cert.serial)
-      cert = OpenSSL::X509::Certificate.new(cert.to_der)
-      assert_equal(s, cert.serial)
-    }
-  end
-
-  def test_public_key
-    exts = [
-      ["basicConstraints","CA:TRUE",true],
-      ["subjectKeyIdentifier","hash",false],
-      ["authorityKeyIdentifier","keyid:always",false],
-    ]
-
-    sha1 = OpenSSL::Digest::SHA1.new
-    dss1 = OpenSSL::Digest::DSS1.new
-    [
-      [@rsa1024, sha1], [@rsa2048, sha1], [@dsa256, dss1], [@dsa512, dss1],
-    ].each{|pk, digest|
-      cert = issue_cert(@ca, pk, 1, Time.now, Time.now+3600, exts,
-                        nil, nil, digest)
-      assert_equal(cert.extensions[1].value,
-                   OpenSSL::TestUtils.get_subject_key_id(cert))
-      cert = OpenSSL::X509::Certificate.new(cert.to_der)
-      assert_equal(cert.extensions[1].value,
-                   OpenSSL::TestUtils.get_subject_key_id(cert))
-    }
-  end
-
-  def test_validity
-    now = Time.now until now && now.usec != 0
-    cert = issue_cert(@ca, @rsa2048, 1, now, now+3600, [],
-                      nil, nil, OpenSSL::Digest::SHA1.new) 
-    assert_not_equal(now, cert.not_before)
-    assert_not_equal(now+3600, cert.not_after)
-
-    now = Time.at(now.to_i)
-    cert = issue_cert(@ca, @rsa2048, 1, now, now+3600, [],
-                      nil, nil, OpenSSL::Digest::SHA1.new) 
-    assert_equal(now.getutc, cert.not_before)
-    assert_equal((now+3600).getutc, cert.not_after)
-
-    now = Time.at(0)
-    cert = issue_cert(@ca, @rsa2048, 1, now, now, [],
-                      nil, nil, OpenSSL::Digest::SHA1.new) 
-    assert_equal(now.getutc, cert.not_before)
-    assert_equal(now.getutc, cert.not_after)
-
-    now = Time.at(0x7fffffff)
-    cert = issue_cert(@ca, @rsa2048, 1, now, now, [],
-                      nil, nil, OpenSSL::Digest::SHA1.new) 
-    assert_equal(now.getutc, cert.not_before)
-    assert_equal(now.getutc, cert.not_after)
-  end
-
-  def test_extension
-    ca_exts = [
-      ["basicConstraints","CA:TRUE",true],
-      ["keyUsage","keyCertSign, cRLSign",true],
-      ["subjectKeyIdentifier","hash",false],
-      ["authorityKeyIdentifier","keyid:always",false],
-    ]
-    ca_cert = issue_cert(@ca, @rsa2048, 1, Time.now, Time.now+3600, ca_exts,
-                         nil, nil, OpenSSL::Digest::SHA1.new) 
-    ca_cert.extensions.each_with_index{|ext, i|
-      assert_equal(ca_exts[i].first, ext.oid)
-      assert_equal(ca_exts[i].last, ext.critical?)
-    }
-
-    ee1_exts = [
-      ["keyUsage","Non Repudiation, Digital Signature, Key Encipherment",true],
-      ["subjectKeyIdentifier","hash",false],
-      ["authorityKeyIdentifier","keyid:always",false],
-      ["extendedKeyUsage","clientAuth, emailProtection, codeSigning",false],
-      ["subjectAltName","email:ee1@ruby-lang.org",false],
-    ]
-    ee1_cert = issue_cert(@ee1, @rsa1024, 2, Time.now, Time.now+1800, ee1_exts,
-                          ca_cert, @rsa2048, OpenSSL::Digest::SHA1.new) 
-    assert_equal(ca_cert.subject.to_der, ee1_cert.issuer.to_der)
-    ee1_cert.extensions.each_with_index{|ext, i|
-      assert_equal(ee1_exts[i].first, ext.oid)
-      assert_equal(ee1_exts[i].last, ext.critical?)
-    }
-
-    ee2_exts = [
-      ["keyUsage","Non Repudiation, Digital Signature, Key Encipherment",true],
-      ["subjectKeyIdentifier","hash",false],
-      ["authorityKeyIdentifier","issuer:always",false],
-      ["extendedKeyUsage","clientAuth, emailProtection, codeSigning",false],
-      ["subjectAltName","email:ee2@ruby-lang.org",false],
-    ]
-    ee2_cert = issue_cert(@ee2, @rsa1024, 3, Time.now, Time.now+1800, ee2_exts,
-                          ca_cert, @rsa2048, OpenSSL::Digest::MD5.new) 
-    assert_equal(ca_cert.subject.to_der, ee2_cert.issuer.to_der)
-    ee2_cert.extensions.each_with_index{|ext, i|
-      assert_equal(ee2_exts[i].first, ext.oid)
-      assert_equal(ee2_exts[i].last, ext.critical?)
-    }
-
-  end
-
-  def test_sign_and_verify
-    cert = issue_cert(@ca, @rsa2048, 1, Time.now, Time.now+3600, [],
-                      nil, nil, OpenSSL::Digest::SHA1.new) 
-    assert_equal(false, cert.verify(@rsa1024))
-    assert_equal(true,  cert.verify(@rsa2048))
-    assert_equal(false, cert.verify(@dsa256))
-    assert_equal(false, cert.verify(@dsa512))
-    cert.serial = 2
-    assert_equal(false, cert.verify(@rsa2048))
-
-    cert = issue_cert(@ca, @rsa2048, 1, Time.now, Time.now+3600, [],
-                      nil, nil, OpenSSL::Digest::MD5.new) 
-    assert_equal(false, cert.verify(@rsa1024))
-    assert_equal(true,  cert.verify(@rsa2048))
-    assert_equal(false, cert.verify(@dsa256))
-    assert_equal(false, cert.verify(@dsa512))
-    cert.subject = @ee1
-    assert_equal(false, cert.verify(@rsa2048))
-
-    cert = issue_cert(@ca, @dsa512, 1, Time.now, Time.now+3600, [],
-                      nil, nil, OpenSSL::Digest::DSS1.new) 
-    assert_equal(false, cert.verify(@rsa1024))
-    assert_equal(false, cert.verify(@rsa2048))
-    assert_equal(false, cert.verify(@dsa256))
-    assert_equal(true,  cert.verify(@dsa512))
-    cert.not_after = Time.now 
-    assert_equal(false, cert.verify(@dsa512))
-
-    assert_raises(OpenSSL::X509::CertificateError){
-      cert = issue_cert(@ca, @rsa2048, 1, Time.now, Time.now+3600, [],
-                        nil, nil, OpenSSL::Digest::DSS1.new) 
-    }
-    assert_raises(OpenSSL::X509::CertificateError){
-      cert = issue_cert(@ca, @dsa512, 1, Time.now, Time.now+3600, [],
-                        nil, nil, OpenSSL::Digest::MD5.new) 
-    }
-    assert_raises(OpenSSL::X509::CertificateError){
-      cert = issue_cert(@ca, @dsa512, 1, Time.now, Time.now+3600, [],
-                        nil, nil, OpenSSL::Digest::SHA1.new) 
-    }
-  end
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509crl.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509crl.rb
deleted file mode 100644 (file)
index 444a00a..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-begin
-  require "openssl"
-  require File.join(File.dirname(__FILE__), "utils.rb")
-rescue LoadError
-end
-require "test/unit"
-
-if defined?(OpenSSL)
-
-class OpenSSL::TestX509CRL < Test::Unit::TestCase
-  def setup
-    @rsa1024 = OpenSSL::TestUtils::TEST_KEY_RSA1024
-    @rsa2048 = OpenSSL::TestUtils::TEST_KEY_RSA2048
-    @dsa256  = OpenSSL::TestUtils::TEST_KEY_DSA256
-    @dsa512  = OpenSSL::TestUtils::TEST_KEY_DSA512
-    @ca = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=CA")
-    @ee1 = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=EE1")
-    @ee2 = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=EE2")
-  end
-
-  def teardown
-  end
-
-  def issue_crl(*args)
-    OpenSSL::TestUtils.issue_crl(*args)
-  end
-
-  def issue_cert(*args)
-    OpenSSL::TestUtils.issue_cert(*args)
-  end
-
-  def test_basic
-    now = Time.at(Time.now.to_i)
-
-    cert = issue_cert(@ca, @rsa2048, 1, now, now+3600, [],
-                      nil, nil, OpenSSL::Digest::SHA1.new)
-    crl = issue_crl([], 1, now, now+1600, [],
-                    cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-    assert_equal(1, crl.version)
-    assert_equal(cert.issuer.to_der, crl.issuer.to_der)
-    assert_equal(now, crl.last_update)
-    assert_equal(now+1600, crl.next_update)
-
-    crl = OpenSSL::X509::CRL.new(crl.to_der)
-    assert_equal(1, crl.version)
-    assert_equal(cert.issuer.to_der, crl.issuer.to_der)
-    assert_equal(now, crl.last_update)
-    assert_equal(now+1600, crl.next_update)
-  end
-
-  def test_revoked
-
-    # CRLReason ::= ENUMERATED {
-    #      unspecified             (0),
-    #      keyCompromise           (1),
-    #      cACompromise            (2),
-    #      affiliationChanged      (3),
-    #      superseded              (4),
-    #      cessationOfOperation    (5),
-    #      certificateHold         (6),
-    #      removeFromCRL           (8),
-    #      privilegeWithdrawn      (9),
-    #      aACompromise           (10) }
-
-    now = Time.at(Time.now.to_i)
-    revoke_info = [
-      [1, Time.at(0),          1],
-      [2, Time.at(0x7fffffff), 2],
-      [3, now,                 3],
-      [4, now,                 4],
-      [5, now,                 5],
-    ]
-    cert = issue_cert(@ca, @rsa2048, 1, Time.now, Time.now+3600, [],
-                      nil, nil, OpenSSL::Digest::SHA1.new)
-    crl = issue_crl(revoke_info, 1, Time.now, Time.now+1600, [],
-                    cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-    revoked = crl.revoked
-    assert_equal(5, revoked.size)
-    assert_equal(1, revoked[0].serial)
-    assert_equal(2, revoked[1].serial)
-    assert_equal(3, revoked[2].serial)
-    assert_equal(4, revoked[3].serial)
-    assert_equal(5, revoked[4].serial)
-
-    assert_equal(Time.at(0), revoked[0].time)
-    assert_equal(Time.at(0x7fffffff), revoked[1].time)
-    assert_equal(now, revoked[2].time)
-    assert_equal(now, revoked[3].time)
-    assert_equal(now, revoked[4].time)
-
-    assert_equal("CRLReason", revoked[0].extensions[0].oid)
-    assert_equal("CRLReason", revoked[1].extensions[0].oid)
-    assert_equal("CRLReason", revoked[2].extensions[0].oid)
-    assert_equal("CRLReason", revoked[3].extensions[0].oid)
-    assert_equal("CRLReason", revoked[4].extensions[0].oid)
-
-    assert_equal("Key Compromise", revoked[0].extensions[0].value)
-    assert_equal("CA Compromise", revoked[1].extensions[0].value)
-    assert_equal("Affiliation Changed", revoked[2].extensions[0].value)
-    assert_equal("Superseded", revoked[3].extensions[0].value)
-    assert_equal("Cessation Of Operation", revoked[4].extensions[0].value)
-
-    assert_equal(false, revoked[0].extensions[0].critical?)
-    assert_equal(false, revoked[1].extensions[0].critical?)
-    assert_equal(false, revoked[2].extensions[0].critical?)
-    assert_equal(false, revoked[3].extensions[0].critical?)
-    assert_equal(false, revoked[4].extensions[0].critical?)
-
-    crl = OpenSSL::X509::CRL.new(crl.to_der)
-    assert_equal("Key Compromise", revoked[0].extensions[0].value)
-    assert_equal("CA Compromise", revoked[1].extensions[0].value)
-    assert_equal("Affiliation Changed", revoked[2].extensions[0].value)
-    assert_equal("Superseded", revoked[3].extensions[0].value)
-    assert_equal("Cessation Of Operation", revoked[4].extensions[0].value)
-
-    revoke_info = (1..1000).collect{|i| [i, now, 0] }
-    crl = issue_crl(revoke_info, 1, Time.now, Time.now+1600, [],
-                    cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-    revoked = crl.revoked
-    assert_equal(1000, revoked.size)
-    assert_equal(1, revoked[0].serial)
-    assert_equal(1000, revoked[999].serial)
-  end
-
-  def test_extension
-    cert_exts = [
-      ["basicConstraints", "CA:TRUE", true],
-      ["subjectKeyIdentifier", "hash", false], 
-      ["authorityKeyIdentifier", "keyid:always", false], 
-      ["subjectAltName", "email:xyzzy@ruby-lang.org", false],
-      ["keyUsage", "cRLSign, keyCertSign", true],
-    ]
-    crl_exts = [
-      ["authorityKeyIdentifier", "keyid:always", false], 
-      ["issuerAltName", "issuer:copy", false],
-    ]
-
-    cert = issue_cert(@ca, @rsa2048, 1, Time.now, Time.now+3600, cert_exts,
-                      nil, nil, OpenSSL::Digest::SHA1.new)
-    crl = issue_crl([], 1, Time.now, Time.now+1600, crl_exts,
-                    cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-    exts = crl.extensions
-    assert_equal(3, exts.size)
-    assert_equal("1", exts[0].value)
-    assert_equal("crlNumber", exts[0].oid)
-    assert_equal(false, exts[0].critical?)
-
-    assert_equal("authorityKeyIdentifier", exts[1].oid)
-    keyid = OpenSSL::TestUtils.get_subject_key_id(cert)
-    assert_match(/^keyid:#{keyid}/, exts[1].value)
-    assert_equal(false, exts[1].critical?)
-
-    assert_equal("issuerAltName", exts[2].oid)
-    assert_equal("email:xyzzy@ruby-lang.org", exts[2].value)
-    assert_equal(false, exts[2].critical?)
-
-    crl = OpenSSL::X509::CRL.new(crl.to_der)
-    exts = crl.extensions
-    assert_equal(3, exts.size)
-    assert_equal("1", exts[0].value)
-    assert_equal("crlNumber", exts[0].oid)
-    assert_equal(false, exts[0].critical?)
-
-    assert_equal("authorityKeyIdentifier", exts[1].oid)
-    keyid = OpenSSL::TestUtils.get_subject_key_id(cert)
-    assert_match(/^keyid:#{keyid}/, exts[1].value)
-    assert_equal(false, exts[1].critical?)
-
-    assert_equal("issuerAltName", exts[2].oid)
-    assert_equal("email:xyzzy@ruby-lang.org", exts[2].value)
-    assert_equal(false, exts[2].critical?)
-  end
-
-  def test_crlnumber
-    cert = issue_cert(@ca, @rsa2048, 1, Time.now, Time.now+3600, [],
-                      nil, nil, OpenSSL::Digest::SHA1.new)
-    crl = issue_crl([], 1, Time.now, Time.now+1600, [],
-                    cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-    assert_match(1.to_s, crl.extensions[0].value)
-    assert_match(/X509v3 CRL Number:\s+#{1}/m, crl.to_text)
-
-    crl = issue_crl([], 2**32, Time.now, Time.now+1600, [],
-                    cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-    assert_match((2**32).to_s, crl.extensions[0].value)
-    assert_match(/X509v3 CRL Number:\s+#{2**32}/m, crl.to_text)
-
-    crl = issue_crl([], 2**100, Time.now, Time.now+1600, [],
-                    cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-    assert_match(/X509v3 CRL Number:\s+#{2**100}/m, crl.to_text)
-    assert_match((2**100).to_s, crl.extensions[0].value)
-  end
-
-  def test_sign_and_verify
-    cert = issue_cert(@ca, @rsa2048, 1, Time.now, Time.now+3600, [],
-                      nil, nil, OpenSSL::Digest::SHA1.new)
-    crl = issue_crl([], 1, Time.now, Time.now+1600, [],
-                    cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-    assert_equal(false, crl.verify(@rsa1024))
-    assert_equal(true,  crl.verify(@rsa2048))
-    assert_equal(false, crl.verify(@dsa256))
-    assert_equal(false, crl.verify(@dsa512))
-    crl.version = 0
-    assert_equal(false, crl.verify(@rsa2048))
-
-    cert = issue_cert(@ca, @dsa512, 1, Time.now, Time.now+3600, [],
-                      nil, nil, OpenSSL::Digest::DSS1.new)
-    crl = issue_crl([], 1, Time.now, Time.now+1600, [],
-                    cert, @dsa512, OpenSSL::Digest::DSS1.new)
-    assert_equal(false, crl.verify(@rsa1024))
-    assert_equal(false, crl.verify(@rsa2048))
-    assert_equal(false, crl.verify(@dsa256))
-    assert_equal(true,  crl.verify(@dsa512))
-    crl.version = 0
-    assert_equal(false, crl.verify(@dsa512))
-  end
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509ext.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509ext.rb
deleted file mode 100644 (file)
index d43bbd6..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-begin
-  require "openssl"
-  require File.join(File.dirname(__FILE__), "utils.rb")
-rescue LoadError
-end
-require "test/unit"
-
-if defined?(OpenSSL)
-
-class OpenSSL::TestX509Extension < Test::Unit::TestCase
-  def setup
-    @basic_constraints_value = OpenSSL::ASN1::Sequence([
-      OpenSSL::ASN1::Boolean(true),   # CA
-      OpenSSL::ASN1::Integer(2)       # pathlen
-    ])
-    @basic_constraints = OpenSSL::ASN1::Sequence([
-      OpenSSL::ASN1::ObjectId("basicConstraints"),
-      OpenSSL::ASN1::Boolean(true),
-      OpenSSL::ASN1::OctetString(@basic_constraints_value.to_der),
-    ])
-  end
-
-  def teardown
-  end
-
-  def test_new
-    ext = OpenSSL::X509::Extension.new(@basic_constraints.to_der)
-    assert_equal("basicConstraints", ext.oid)
-    assert_equal(true, ext.critical?)
-    assert_equal("CA:TRUE, pathlen:2", ext.value)
-
-    ext = OpenSSL::X509::Extension.new("2.5.29.19",
-                                       @basic_constraints_value.to_der, true)
-    assert_equal(@basic_constraints.to_der, ext.to_der)
-  end
-
-  def test_create_by_factory
-    ef = OpenSSL::X509::ExtensionFactory.new
-
-    bc = ef.create_extension("basicConstraints", "critical, CA:TRUE, pathlen:2")
-    assert_equal(@basic_constraints.to_der, bc.to_der)
-
-    bc = ef.create_extension("basicConstraints", "CA:TRUE, pathlen:2", true)
-    assert_equal(@basic_constraints.to_der, bc.to_der)
-
-    begin
-      ef.config = OpenSSL::Config.parse(<<-_end_of_cnf_)
-      [crlDistPts]
-      URI.1 = http://www.example.com/crl
-      URI.2 = ldap://ldap.example.com/cn=ca?certificateRevocationList;binary
-      _end_of_cnf_
-    rescue NotImplementedError
-      return
-    end
-
-    cdp = ef.create_extension("crlDistributionPoints", "@crlDistPts")
-    assert_equal(false, cdp.critical?)
-    assert_equal("crlDistributionPoints", cdp.oid)
-    assert_match(%{URI:http://www\.example\.com/crl}, cdp.value)
-    assert_match(
-      %r{URI:ldap://ldap\.example\.com/cn=ca\?certificateRevocationList;binary},
-      cdp.value)
-
-    cdp = ef.create_extension("crlDistributionPoints", "critical, @crlDistPts")
-    assert_equal(true, cdp.critical?)
-    assert_equal("crlDistributionPoints", cdp.oid)
-    assert_match(%{URI:http://www.example.com/crl}, cdp.value)
-    assert_match(
-      %r{URI:ldap://ldap.example.com/cn=ca\?certificateRevocationList;binary},
-      cdp.value)
-  end
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509name.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509name.rb
deleted file mode 100644 (file)
index fb5a1ae..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-begin
-  require "openssl"
-rescue LoadError
-end
-require "test/unit"
-
-if defined?(OpenSSL)
-
-class OpenSSL::TestX509Name < Test::Unit::TestCase
-  OpenSSL::ASN1::ObjectId.register(
-    "1.2.840.113549.1.9.1", "emailAddress", "emailAddress")
-  OpenSSL::ASN1::ObjectId.register(
-    "2.5.4.5", "serialNumber", "serialNumber")
-
-  def setup
-    @obj_type_tmpl = Hash.new(OpenSSL::ASN1::PRINTABLESTRING)
-    @obj_type_tmpl.update(OpenSSL::X509::Name::OBJECT_TYPE_TEMPLATE)
-  end
-
-  def teardown
-  end
-
-  def test_s_new
-    dn = [ ["C", "JP"], ["O", "example"], ["CN", "www.example.jp"] ]
-    name = OpenSSL::X509::Name.new(dn)
-    ary = name.to_a
-    assert_equal("/C=JP/O=example/CN=www.example.jp", name.to_s)
-    assert_equal("C", ary[0][0])
-    assert_equal("O", ary[1][0])
-    assert_equal("CN", ary[2][0])
-    assert_equal("JP", ary[0][1])
-    assert_equal("example", ary[1][1])
-    assert_equal("www.example.jp", ary[2][1])
-    assert_equal(OpenSSL::ASN1::PRINTABLESTRING, ary[0][2])
-    assert_equal(OpenSSL::ASN1::UTF8STRING, ary[1][2])
-    assert_equal(OpenSSL::ASN1::UTF8STRING, ary[2][2])
-
-    dn = [
-      ["countryName", "JP"],
-      ["organizationName", "example"],
-      ["commonName", "www.example.jp"]
-    ]
-    name = OpenSSL::X509::Name.new(dn)
-    ary = name.to_a
-    assert_equal("/C=JP/O=example/CN=www.example.jp", name.to_s)
-    assert_equal("C", ary[0][0])
-    assert_equal("O", ary[1][0])
-    assert_equal("CN", ary[2][0])
-    assert_equal("JP", ary[0][1])
-    assert_equal("example", ary[1][1])
-    assert_equal("www.example.jp", ary[2][1])
-    assert_equal(OpenSSL::ASN1::PRINTABLESTRING, ary[0][2])
-    assert_equal(OpenSSL::ASN1::UTF8STRING, ary[1][2])
-    assert_equal(OpenSSL::ASN1::UTF8STRING, ary[2][2])
-
-    name = OpenSSL::X509::Name.new(dn, @obj_type_tmpl)
-    ary = name.to_a
-    assert_equal("/C=JP/O=example/CN=www.example.jp", name.to_s)
-    assert_equal(OpenSSL::ASN1::PRINTABLESTRING, ary[0][2])
-    assert_equal(OpenSSL::ASN1::PRINTABLESTRING, ary[1][2])
-    assert_equal(OpenSSL::ASN1::PRINTABLESTRING, ary[2][2])
-
-    dn = [
-      ["countryName", "JP", OpenSSL::ASN1::PRINTABLESTRING],
-      ["organizationName", "example", OpenSSL::ASN1::PRINTABLESTRING],
-      ["commonName", "www.example.jp", OpenSSL::ASN1::PRINTABLESTRING]
-    ]
-    name = OpenSSL::X509::Name.new(dn)
-    ary = name.to_a
-    assert_equal("/C=JP/O=example/CN=www.example.jp", name.to_s)
-    assert_equal(OpenSSL::ASN1::PRINTABLESTRING, ary[0][2])
-    assert_equal(OpenSSL::ASN1::PRINTABLESTRING, ary[1][2])
-    assert_equal(OpenSSL::ASN1::PRINTABLESTRING, ary[2][2])
-
-    dn = [
-      ["DC", "org"],
-      ["DC", "ruby-lang"],
-      ["CN", "GOTOU Yuuzou"],
-      ["emailAddress", "gotoyuzo@ruby-lang.org"],
-      ["serialNumber", "123"],
-    ]
-    name = OpenSSL::X509::Name.new(dn)
-    ary = name.to_a
-    assert_equal("/DC=org/DC=ruby-lang/CN=GOTOU Yuuzou/emailAddress=gotoyuzo@ruby-lang.org/serialNumber=123", name.to_s)
-    assert_equal("DC", ary[0][0])
-    assert_equal("DC", ary[1][0])
-    assert_equal("CN", ary[2][0])
-    assert_equal("emailAddress", ary[3][0])
-    assert_equal("serialNumber", ary[4][0])
-    assert_equal("org", ary[0][1])
-    assert_equal("ruby-lang", ary[1][1])
-    assert_equal("GOTOU Yuuzou", ary[2][1])
-    assert_equal("gotoyuzo@ruby-lang.org", ary[3][1])
-    assert_equal("123", ary[4][1])
-    assert_equal(OpenSSL::ASN1::IA5STRING, ary[0][2])
-    assert_equal(OpenSSL::ASN1::IA5STRING, ary[1][2])
-    assert_equal(OpenSSL::ASN1::UTF8STRING, ary[2][2])
-    assert_equal(OpenSSL::ASN1::IA5STRING, ary[3][2])
-    assert_equal(OpenSSL::ASN1::PRINTABLESTRING, ary[4][2])
-
-    name_from_der = OpenSSL::X509::Name.new(name.to_der)
-    assert_equal(name_from_der.to_s, name.to_s)
-    assert_equal(name_from_der.to_a, name.to_a)
-    assert_equal(name_from_der.to_der, name.to_der)
-  end
-
-  def test_s_parse
-    dn = "/DC=org/DC=ruby-lang/CN=www.ruby-lang.org"
-    name = OpenSSL::X509::Name.parse(dn)
-    assert_equal(dn, name.to_s)
-    ary = name.to_a
-    assert_equal("DC", ary[0][0])
-    assert_equal("DC", ary[1][0])
-    assert_equal("CN", ary[2][0])
-    assert_equal("org", ary[0][1])
-    assert_equal("ruby-lang", ary[1][1])
-    assert_equal("www.ruby-lang.org", ary[2][1])
-    assert_equal(OpenSSL::ASN1::IA5STRING, ary[0][2])
-    assert_equal(OpenSSL::ASN1::IA5STRING, ary[1][2])
-    assert_equal(OpenSSL::ASN1::UTF8STRING, ary[2][2])
-
-    dn2 = "DC=org, DC=ruby-lang, CN=www.ruby-lang.org"
-    name = OpenSSL::X509::Name.parse(dn)
-    ary = name.to_a
-    assert_equal(dn, name.to_s)
-    assert_equal("org", ary[0][1])
-    assert_equal("ruby-lang", ary[1][1])
-    assert_equal("www.ruby-lang.org", ary[2][1])
-
-    name = OpenSSL::X509::Name.parse(dn, @obj_type_tmpl)
-    ary = name.to_a
-    assert_equal(OpenSSL::ASN1::IA5STRING, ary[0][2])
-    assert_equal(OpenSSL::ASN1::IA5STRING, ary[1][2])
-    assert_equal(OpenSSL::ASN1::PRINTABLESTRING, ary[2][2])
-  end
-
-  def test_s_parse_rfc2253
-    scanner = OpenSSL::X509::Name::RFC2253DN.method(:scan)
-
-    assert_equal([["C", "JP"]], scanner.call("C=JP"))
-    assert_equal([
-        ["DC", "org"],
-        ["DC", "ruby-lang"],
-        ["CN", "GOTOU Yuuzou"],
-        ["emailAddress", "gotoyuzo@ruby-lang.org"],
-      ],
-      scanner.call(
-        "emailAddress=gotoyuzo@ruby-lang.org,CN=GOTOU Yuuzou,"+
-        "DC=ruby-lang,DC=org")
-    )
-
-    u8 = OpenSSL::ASN1::UTF8STRING
-    assert_equal([
-        ["DC", "org"],
-        ["DC", "ruby-lang"],
-        ["O", ",=+<>#;"],
-        ["O", ",=+<>#;"],
-        ["OU", ""],
-        ["OU", ""],
-        ["L", "aaa=\"bbb, ccc\""],
-        ["L", "aaa=\"bbb, ccc\""],
-        ["CN", "\345\276\214\350\227\244\350\243\225\350\224\265"],
-        ["CN", "\345\276\214\350\227\244\350\243\225\350\224\265"],
-        ["CN", "\345\276\214\350\227\244\350\243\225\350\224\265"],
-        ["CN", "\345\276\214\350\227\244\350\243\225\350\224\265", u8],
-        ["2.5.4.3", "GOTOU, Yuuzou"],
-        ["2.5.4.3", "GOTOU, Yuuzou"],
-        ["2.5.4.3", "GOTOU, Yuuzou"],
-        ["2.5.4.3", "GOTOU, Yuuzou"],
-        ["CN", "GOTOU \"gotoyuzo\" Yuuzou"],
-        ["CN", "GOTOU \"gotoyuzo\" Yuuzou"],
-        ["1.2.840.113549.1.9.1", "gotoyuzo@ruby-lang.org"],
-        ["emailAddress", "gotoyuzo@ruby-lang.org"],
-      ],
-      scanner.call(
-        "emailAddress=gotoyuzo@ruby-lang.org," +
-        "1.2.840.113549.1.9.1=gotoyuzo@ruby-lang.org," +
-        'CN=GOTOU \"gotoyuzo\" Yuuzou,' +
-        'CN="GOTOU \"gotoyuzo\" Yuuzou",' +
-        '2.5.4.3=GOTOU\,\20Yuuzou,' +
-        '2.5.4.3=GOTOU\, Yuuzou,' +
-        '2.5.4.3="GOTOU, Yuuzou",' +
-        '2.5.4.3="GOTOU\, Yuuzou",' +
-        "CN=#0C0CE5BE8CE897A4E8A395E894B5," +
-        'CN=\E5\BE\8C\E8\97\A4\E8\A3\95\E8\94\B5,' +
-        "CN=\"\xE5\xBE\x8C\xE8\x97\xA4\xE8\xA3\x95\xE8\x94\xB5\"," +
-        "CN=\xE5\xBE\x8C\xE8\x97\xA4\xE8\xA3\x95\xE8\x94\xB5," +
-        'L=aaa\=\"bbb\, ccc\",' +
-        'L="aaa=\"bbb, ccc\"",' +
-        'OU=,' +
-        'OU="",' +
-        'O=\,\=\+\<\>\#\;,' +
-        'O=",=+<>#;",' +
-        "DC=ruby-lang," +
-        "DC=org")
-    )
-
-    [
-      "DC=org+DC=jp",
-      "DC=org,DC=ruby-lang+DC=rubyist,DC=www"
-    ].each{|dn|
-      ex = scanner.call(dn) rescue $!
-      dn_r = Regexp.escape(dn)
-      assert_match(/^multi-valued RDN is not supported: #{dn_r}/, ex.message)
-    }
-
-    [
-      ["DC=org,DC=exapmle,CN", "CN"],
-      ["DC=org,DC=example,", ""],
-      ["DC=org,DC=exapmle,CN=www.example.org;", "CN=www.example.org;"],
-      ["DC=org,DC=exapmle,CN=#www.example.org", "CN=#www.example.org"],
-      ["DC=org,DC=exapmle,CN=#777777.example.org", "CN=#777777.example.org"],
-      ["DC=org,DC=exapmle,CN=\"www.example\".org", "CN=\"www.example\".org"],
-      ["DC=org,DC=exapmle,CN=www.\"example.org\"", "CN=www.\"example.org\""],
-      ["DC=org,DC=exapmle,CN=www.\"example\".org", "CN=www.\"example\".org"],
-    ].each{|dn, msg|
-      ex = scanner.call(dn) rescue $!
-      assert_match(/^malformed RDN: .*=>#{Regexp.escape(msg)}/, ex.message)
-    }
-
-    dn = "CN=www.ruby-lang.org,DC=ruby-lang,DC=org"
-    name = OpenSSL::X509::Name.parse_rfc2253(dn)
-    assert_equal(dn, name.to_s(OpenSSL::X509::Name::RFC2253))
-    ary = name.to_a
-    assert_equal("DC", ary[0][0])
-    assert_equal("DC", ary[1][0])
-    assert_equal("CN", ary[2][0])
-    assert_equal("org", ary[0][1])
-    assert_equal("ruby-lang", ary[1][1])
-    assert_equal("www.ruby-lang.org", ary[2][1])
-    assert_equal(OpenSSL::ASN1::IA5STRING, ary[0][2])
-    assert_equal(OpenSSL::ASN1::IA5STRING, ary[1][2])
-    assert_equal(OpenSSL::ASN1::UTF8STRING, ary[2][2])
-  end
-
-  def test_add_entry
-    dn = [
-      ["DC", "org"],
-      ["DC", "ruby-lang"],
-      ["CN", "GOTOU Yuuzou"],
-      ["emailAddress", "gotoyuzo@ruby-lang.org"],
-      ["serialNumber", "123"],
-    ]
-    name = OpenSSL::X509::Name.new
-    dn.each{|attr| name.add_entry(*attr) }
-    ary = name.to_a
-    assert_equal("/DC=org/DC=ruby-lang/CN=GOTOU Yuuzou/emailAddress=gotoyuzo@ruby-lang.org/serialNumber=123", name.to_s)
-    assert_equal("DC", ary[0][0])
-    assert_equal("DC", ary[1][0])
-    assert_equal("CN", ary[2][0])
-    assert_equal("emailAddress", ary[3][0])
-    assert_equal("serialNumber", ary[4][0])
-    assert_equal("org", ary[0][1])
-    assert_equal("ruby-lang", ary[1][1])
-    assert_equal("GOTOU Yuuzou", ary[2][1])
-    assert_equal("gotoyuzo@ruby-lang.org", ary[3][1])
-    assert_equal("123", ary[4][1])
-    assert_equal(OpenSSL::ASN1::IA5STRING, ary[0][2])
-    assert_equal(OpenSSL::ASN1::IA5STRING, ary[1][2])
-    assert_equal(OpenSSL::ASN1::UTF8STRING, ary[2][2])
-    assert_equal(OpenSSL::ASN1::IA5STRING, ary[3][2])
-    assert_equal(OpenSSL::ASN1::PRINTABLESTRING, ary[4][2])
-  end
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509req.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509req.rb
deleted file mode 100644 (file)
index a37ed5c..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-begin
-  require "openssl"
-  require File.join(File.dirname(__FILE__), "utils.rb")
-rescue LoadError
-end
-require "test/unit"
-
-if defined?(OpenSSL)
-
-class OpenSSL::TestX509Request < Test::Unit::TestCase
-  def setup
-    @rsa1024 = OpenSSL::TestUtils::TEST_KEY_RSA1024
-    @rsa2048 = OpenSSL::TestUtils::TEST_KEY_RSA2048
-    @dsa256  = OpenSSL::TestUtils::TEST_KEY_DSA256
-    @dsa512  = OpenSSL::TestUtils::TEST_KEY_DSA512
-    @dn = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=GOTOU Yuuzou")
-  end
-
-  def issue_csr(ver, dn, key, digest)
-    req = OpenSSL::X509::Request.new
-    req.version = ver
-    req.subject = dn
-    req.public_key = key.public_key
-    req.sign(key, digest)
-    req
-  end
-
-  def test_public_key
-    req = issue_csr(0, @dn, @rsa1024, OpenSSL::Digest::SHA1.new)
-    assert_equal(@rsa1024.public_key.to_der, req.public_key.to_der)
-    req = OpenSSL::X509::Request.new(req.to_der)
-    assert_equal(@rsa1024.public_key.to_der, req.public_key.to_der)
-
-    req = issue_csr(0, @dn, @dsa512, OpenSSL::Digest::DSS1.new)
-    assert_equal(@dsa512.public_key.to_der, req.public_key.to_der)
-    req = OpenSSL::X509::Request.new(req.to_der)
-    assert_equal(@dsa512.public_key.to_der, req.public_key.to_der)
-  end
-
-  def test_version
-    req = issue_csr(0, @dn, @rsa1024, OpenSSL::Digest::SHA1.new)
-    assert_equal(0, req.version)
-    req = OpenSSL::X509::Request.new(req.to_der)
-    assert_equal(0, req.version)
-
-    req = issue_csr(1, @dn, @rsa1024, OpenSSL::Digest::SHA1.new)
-    assert_equal(1, req.version)
-    req = OpenSSL::X509::Request.new(req.to_der)
-    assert_equal(1, req.version)
-  end
-
-  def test_subject
-    req = issue_csr(0, @dn, @rsa1024, OpenSSL::Digest::SHA1.new)
-    assert_equal(@dn.to_der, req.subject.to_der)
-    req = OpenSSL::X509::Request.new(req.to_der)
-    assert_equal(@dn.to_der, req.subject.to_der)
-  end
-
-  def create_ext_req(exts)
-    ef = OpenSSL::X509::ExtensionFactory.new
-    exts = exts.collect{|e| ef.create_extension(*e) }
-    return OpenSSL::ASN1::Set([OpenSSL::ASN1::Sequence(exts)])
-  end
-
-  def get_ext_req(ext_req_value)
-    set = OpenSSL::ASN1.decode(ext_req_value)
-    seq = set.value[0]
-    seq.value.collect{|asn1ext|
-      OpenSSL::X509::Extension.new(asn1ext).to_a
-    }
-  end
-
-  def test_attr
-    exts = [
-      ["keyUsage", "Digital Signature, Key Encipherment", true],
-      ["subjectAltName", "email:gotoyuzo@ruby-lang.org", false],
-    ]
-    attrval = create_ext_req(exts)
-    attrs = [
-      OpenSSL::X509::Attribute.new("extReq", attrval),
-      OpenSSL::X509::Attribute.new("msExtReq", attrval),
-    ]
-
-    req0 = issue_csr(0, @dn, @rsa1024, OpenSSL::Digest::SHA1.new)
-    attrs.each{|attr| req0.add_attribute(attr) }
-    req1 = issue_csr(0, @dn, @rsa1024, OpenSSL::Digest::SHA1.new)
-    req1.attributes = attrs
-    assert_equal(req0.to_der, req1.to_der)
-
-    attrs = req0.attributes
-    assert_equal(2, attrs.size)
-    assert_equal("extReq", attrs[0].oid)
-    assert_equal("msExtReq", attrs[1].oid)
-    assert_equal(exts, get_ext_req(attrs[0].value))
-    assert_equal(exts, get_ext_req(attrs[1].value))
-
-    req = OpenSSL::X509::Request.new(req0.to_der)
-    attrs = req.attributes
-    assert_equal(2, attrs.size)
-    assert_equal("extReq", attrs[0].oid)
-    assert_equal("msExtReq", attrs[1].oid)
-    assert_equal(exts, get_ext_req(attrs[0].value))
-    assert_equal(exts, get_ext_req(attrs[1].value))
-  end
-
-  def test_sign_and_verify
-    req = issue_csr(0, @dn, @rsa1024, OpenSSL::Digest::SHA1.new)
-    assert_equal(true,  req.verify(@rsa1024))
-    assert_equal(false, req.verify(@rsa2048))
-    assert_equal(false, req.verify(@dsa256))
-    assert_equal(false, req.verify(@dsa512))
-    req.version = 1
-    assert_equal(false, req.verify(@rsa1024))
-
-    req = issue_csr(0, @dn, @rsa2048, OpenSSL::Digest::MD5.new)
-    assert_equal(false, req.verify(@rsa1024))
-    assert_equal(true,  req.verify(@rsa2048))
-    assert_equal(false, req.verify(@dsa256))
-    assert_equal(false, req.verify(@dsa512))
-    req.subject = OpenSSL::X509::Name.parse("/C=JP/CN=FooBar")
-    assert_equal(false, req.verify(@rsa2048))
-
-    req = issue_csr(0, @dn, @dsa512, OpenSSL::Digest::DSS1.new)
-    assert_equal(false, req.verify(@rsa1024))
-    assert_equal(false, req.verify(@rsa2048))
-    assert_equal(false, req.verify(@dsa256))
-    assert_equal(true,  req.verify(@dsa512))
-    req.public_key = @rsa1024.public_key
-    assert_equal(false, req.verify(@dsa512))
-
-    assert_raise(OpenSSL::X509::RequestError){
-      issue_csr(0, @dn, @rsa1024, OpenSSL::Digest::DSS1.new) }
-    assert_raise(OpenSSL::X509::RequestError){
-      issue_csr(0, @dn, @dsa512, OpenSSL::Digest::SHA1.new) }
-    assert_raise(OpenSSL::X509::RequestError){
-      issue_csr(0, @dn, @dsa512, OpenSSL::Digest::MD5.new) }
-  end
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509store.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/test_x509store.rb
deleted file mode 100644 (file)
index b0fe597..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-begin
-  require "openssl"
-  require File.join(File.dirname(__FILE__), "utils.rb")
-rescue LoadError
-end
-require "test/unit"
-
-if defined?(OpenSSL)
-
-class OpenSSL::TestX509Store < Test::Unit::TestCase
-  def setup
-    @rsa1024 = OpenSSL::TestUtils::TEST_KEY_RSA1024
-    @rsa2048 = OpenSSL::TestUtils::TEST_KEY_RSA2048
-    @dsa256  = OpenSSL::TestUtils::TEST_KEY_DSA256
-    @dsa512  = OpenSSL::TestUtils::TEST_KEY_DSA512
-    @ca1 = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=CA1")
-    @ca2 = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=CA2")
-    @ee1 = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=EE1")
-    @ee2 = OpenSSL::X509::Name.parse("/DC=org/DC=ruby-lang/CN=EE2")
-  end
-
-  def teardown
-  end
-
-  def issue_cert(*args)
-    OpenSSL::TestUtils.issue_cert(*args)
-  end
-
-  def issue_crl(*args)
-    OpenSSL::TestUtils.issue_crl(*args)
-  end
-
-  def test_verify
-    now = Time.at(Time.now.to_i)
-    ca_exts = [
-      ["basicConstraints","CA:TRUE",true],
-      ["keyUsage","cRLSign,keyCertSign",true],
-    ]
-    ee_exts = [
-      ["keyUsage","keyEncipherment,digitalSignature",true],
-    ]
-    ca1_cert = issue_cert(@ca1, @rsa2048, 1, now, now+3600, ca_exts,
-                          nil, nil, OpenSSL::Digest::SHA1.new)
-    ca2_cert = issue_cert(@ca2, @rsa1024, 2, now, now+1800, ca_exts,
-                          ca1_cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-    ee1_cert = issue_cert(@ee1, @dsa256, 10, now, now+1800, ee_exts,
-                          ca2_cert, @rsa1024, OpenSSL::Digest::SHA1.new)
-    ee2_cert = issue_cert(@ee2, @dsa512, 20, now, now+1800, ee_exts,
-                          ca2_cert, @rsa1024, OpenSSL::Digest::SHA1.new)
-    ee3_cert = issue_cert(@ee2, @dsa512, 30, now-100, now-1, ee_exts,
-                          ca2_cert, @rsa1024, OpenSSL::Digest::SHA1.new)
-    ee4_cert = issue_cert(@ee2, @dsa512, 40, now+1000, now+2000, ee_exts,
-                          ca2_cert, @rsa1024, OpenSSL::Digest::SHA1.new)
-
-    revoke_info = []
-    crl1   = issue_crl(revoke_info, 1, now, now+1800, [],
-                       ca1_cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-    revoke_info = [ [2, now, 1], ]
-    crl1_2 = issue_crl(revoke_info, 2, now, now+1800, [],
-                       ca1_cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-    revoke_info = [ [20, now, 1], ]
-    crl2   = issue_crl(revoke_info, 1, now, now+1800, [],
-                       ca2_cert, @rsa1024, OpenSSL::Digest::SHA1.new)
-    revoke_info = []
-    crl2_2 = issue_crl(revoke_info, 2, now-100, now-1, [],
-                       ca2_cert, @rsa1024, OpenSSL::Digest::SHA1.new)
-
-    assert(true, ca1_cert.verify(ca1_cert.public_key))   # self signed
-    assert(true, ca2_cert.verify(ca1_cert.public_key))   # issued by ca1
-    assert(true, ee1_cert.verify(ca2_cert.public_key))   # issued by ca2
-    assert(true, ee2_cert.verify(ca2_cert.public_key))   # issued by ca2
-    assert(true, ee3_cert.verify(ca2_cert.public_key))   # issued by ca2
-    assert(true, crl1.verify(ca1_cert.public_key))       # issued by ca1
-    assert(true, crl1_2.verify(ca1_cert.public_key))     # issued by ca1
-    assert(true, crl2.verify(ca2_cert.public_key))       # issued by ca2
-    assert(true, crl2_2.verify(ca2_cert.public_key))     # issued by ca2
-
-    store = OpenSSL::X509::Store.new
-    assert_equal(false, store.verify(ca1_cert))
-    assert_not_equal(OpenSSL::X509::V_OK, store.error)
-
-    assert_equal(false, store.verify(ca2_cert))
-    assert_not_equal(OpenSSL::X509::V_OK, store.error)
-
-    store.add_cert(ca1_cert)
-    assert_equal(true, store.verify(ca2_cert))
-    assert_equal(OpenSSL::X509::V_OK, store.error)
-    assert_equal("ok", store.error_string)
-    chain = store.chain
-    assert_equal(2, chain.size)
-    assert_equal(@ca2.to_der, chain[0].subject.to_der)
-    assert_equal(@ca1.to_der, chain[1].subject.to_der)
-
-    store.purpose = OpenSSL::X509::PURPOSE_SSL_CLIENT
-    assert_equal(false, store.verify(ca2_cert))
-    assert_not_equal(OpenSSL::X509::V_OK, store.error)
-
-    store.purpose = OpenSSL::X509::PURPOSE_CRL_SIGN
-    assert_equal(true, store.verify(ca2_cert))
-    assert_equal(OpenSSL::X509::V_OK, store.error)
-
-    store.add_cert(ca2_cert)
-    store.purpose = OpenSSL::X509::PURPOSE_SSL_CLIENT
-    assert_equal(true, store.verify(ee1_cert))
-    assert_equal(true, store.verify(ee2_cert))
-    assert_equal(OpenSSL::X509::V_OK, store.error)
-    assert_equal("ok", store.error_string)
-    chain = store.chain
-    assert_equal(3, chain.size)
-    assert_equal(@ee2.to_der, chain[0].subject.to_der)
-    assert_equal(@ca2.to_der, chain[1].subject.to_der)
-    assert_equal(@ca1.to_der, chain[2].subject.to_der)
-    assert_equal(false, store.verify(ee3_cert))
-    assert_equal(OpenSSL::X509::V_ERR_CERT_HAS_EXPIRED, store.error)
-    assert_match(/expire/i, store.error_string)
-    assert_equal(false, store.verify(ee4_cert))
-    assert_equal(OpenSSL::X509::V_ERR_CERT_NOT_YET_VALID, store.error)
-    assert_match(/not yet valid/i, store.error_string)
-
-    store = OpenSSL::X509::Store.new
-    store.add_cert(ca1_cert)
-    store.add_cert(ca2_cert)
-    store.time = now + 1500
-    assert_equal(true, store.verify(ca1_cert))
-    assert_equal(true, store.verify(ca2_cert))
-    assert_equal(true, store.verify(ee4_cert))
-    store.time = now + 1900
-    assert_equal(true, store.verify(ca1_cert))
-    assert_equal(false, store.verify(ca2_cert))
-    assert_equal(OpenSSL::X509::V_ERR_CERT_HAS_EXPIRED, store.error)
-    assert_equal(false, store.verify(ee4_cert))
-    assert_equal(OpenSSL::X509::V_ERR_CERT_HAS_EXPIRED, store.error)
-    store.time = now + 4000
-    assert_equal(false, store.verify(ee1_cert))
-    assert_equal(OpenSSL::X509::V_ERR_CERT_HAS_EXPIRED, store.error)
-    assert_equal(false, store.verify(ee4_cert))
-    assert_equal(OpenSSL::X509::V_ERR_CERT_HAS_EXPIRED, store.error)
-
-    # the underlying X509 struct caches the result of the last
-    # verification for signature and not-before. so the following code
-    # rebuilds new objects to avoid site effect.
-    store.time = Time.now - 4000
-    assert_equal(false, store.verify(OpenSSL::X509::Certificate.new(ca2_cert)))
-    assert_equal(OpenSSL::X509::V_ERR_CERT_NOT_YET_VALID, store.error)
-    assert_equal(false, store.verify(OpenSSL::X509::Certificate.new(ee1_cert)))
-    assert_equal(OpenSSL::X509::V_ERR_CERT_NOT_YET_VALID, store.error)
-
-    return unless defined?(OpenSSL::X509::V_FLAG_CRL_CHECK)
-
-    store = OpenSSL::X509::Store.new
-    store.purpose = OpenSSL::X509::PURPOSE_ANY
-    store.flags = OpenSSL::X509::V_FLAG_CRL_CHECK
-    store.add_cert(ca1_cert)
-    store.add_crl(crl1)   # revoke no cert
-    store.add_crl(crl2)   # revoke ee2_cert
-    assert_equal(true,  store.verify(ca1_cert))
-    assert_equal(true,  store.verify(ca2_cert))
-    assert_equal(true,  store.verify(ee1_cert, [ca2_cert]))
-    assert_equal(false, store.verify(ee2_cert, [ca2_cert]))
-
-    store = OpenSSL::X509::Store.new
-    store.purpose = OpenSSL::X509::PURPOSE_ANY
-    store.flags = OpenSSL::X509::V_FLAG_CRL_CHECK
-    store.add_cert(ca1_cert)
-    store.add_crl(crl1_2) # revoke ca2_cert
-    store.add_crl(crl2)   # revoke ee2_cert
-    assert_equal(true,  store.verify(ca1_cert))
-    assert_equal(false, store.verify(ca2_cert))
-    assert_equal(true,  store.verify(ee1_cert, [ca2_cert]),
-      "This test is expected to be success with OpenSSL 0.9.7c or later.")
-    assert_equal(false, store.verify(ee2_cert, [ca2_cert]))
-
-    store.flags =
-      OpenSSL::X509::V_FLAG_CRL_CHECK|OpenSSL::X509::V_FLAG_CRL_CHECK_ALL
-    assert_equal(true,  store.verify(ca1_cert))
-    assert_equal(false, store.verify(ca2_cert))
-    assert_equal(false, store.verify(ee1_cert, [ca2_cert]))
-    assert_equal(false, store.verify(ee2_cert, [ca2_cert]))
-
-    store = OpenSSL::X509::Store.new
-    store.purpose = OpenSSL::X509::PURPOSE_ANY
-    store.flags =
-      OpenSSL::X509::V_FLAG_CRL_CHECK|OpenSSL::X509::V_FLAG_CRL_CHECK_ALL
-    store.add_cert(ca1_cert)
-    store.add_cert(ca2_cert)
-    store.add_crl(crl1)
-    store.add_crl(crl2_2) # issued by ca2 but expired.
-    assert_equal(true, store.verify(ca1_cert))
-    assert_equal(true, store.verify(ca2_cert))
-    assert_equal(false, store.verify(ee1_cert))
-    assert_equal(OpenSSL::X509::V_ERR_CRL_HAS_EXPIRED, store.error)
-    assert_equal(false, store.verify(ee2_cert))
-  end
-
-  def test_set_errors
-    now = Time.now
-    ca1_cert = issue_cert(@ca1, @rsa2048, 1, now, now+3600, [],
-                          nil, nil, OpenSSL::Digest::SHA1.new)
-    store = OpenSSL::X509::Store.new
-    store.add_cert(ca1_cert)
-    assert_raises(OpenSSL::X509::StoreError){
-      store.add_cert(ca1_cert)  # add same certificate twice
-    }
-
-    revoke_info = []
-    crl1 = issue_crl(revoke_info, 1, now, now+1800, [],
-                     ca1_cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-    revoke_info = [ [2, now, 1], ]
-    crl2 = issue_crl(revoke_info, 2, now+1800, now+3600, [],
-                     ca1_cert, @rsa2048, OpenSSL::Digest::SHA1.new)
-    store.add_crl(crl1)
-    assert_raises(OpenSSL::X509::StoreError){
-      store.add_crl(crl2) # add CRL issued by same CA twice.
-    }
-  end
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/openssl/utils.rb b/ruby/doc/ruby/ruby-1.8.7/test/openssl/utils.rb
deleted file mode 100644 (file)
index c923705..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-require "openssl"
-require "test/unit"
-
-module OpenSSL::TestUtils
-  TEST_KEY_RSA1024 = OpenSSL::PKey::RSA.new <<-_end_of_pem_
------BEGIN RSA PRIVATE KEY-----
-MIICXgIBAAKBgQDLwsSw1ECnPtT+PkOgHhcGA71nwC2/nL85VBGnRqDxOqjVh7Cx
-aKPERYHsk4BPCkE3brtThPWc9kjHEQQ7uf9Y1rbCz0layNqHyywQEVLFmp1cpIt/
-Q3geLv8ZD9pihowKJDyMDiN6ArYUmZczvW4976MU3+l54E6lF/JfFEU5hwIDAQAB
-AoGBAKSl/MQarye1yOysqX6P8fDFQt68VvtXkNmlSiKOGuzyho0M+UVSFcs6k1L0
-maDE25AMZUiGzuWHyaU55d7RXDgeskDMakD1v6ZejYtxJkSXbETOTLDwUWTn618T
-gnb17tU1jktUtU67xK/08i/XodlgnQhs6VoHTuCh3Hu77O6RAkEA7+gxqBuZR572
-74/akiW/SuXm0SXPEviyO1MuSRwtI87B02D0qgV8D1UHRm4AhMnJ8MCs1809kMQE
-JiQUCrp9mQJBANlt2ngBO14us6NnhuAseFDTBzCHXwUUu1YKHpMMmxpnGqaldGgX
-sOZB3lgJsT9VlGf3YGYdkLTNVbogQKlKpB8CQQDiSwkb4vyQfDe8/NpU5Not0fII
-8jsDUCb+opWUTMmfbxWRR3FBNu8wnym/m19N4fFj8LqYzHX4KY0oVPu6qvJxAkEA
-wa5snNekFcqONLIE4G5cosrIrb74sqL8GbGb+KuTAprzj5z1K8Bm0UW9lTjVDjDi
-qRYgZfZSL+x1P/54+xTFSwJAY1FxA/N3QPCXCjPh5YqFxAMQs2VVYTfg+t0MEcJD
-dPMQD5JX6g5HKnHFg2mZtoXQrWmJSn7p8GJK8yNTopEErA==
------END RSA PRIVATE KEY-----
-  _end_of_pem_
-
-  TEST_KEY_RSA2048 = OpenSSL::PKey::RSA.new <<-_end_of_pem_
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEAuV9ht9J7k4NBs38jOXvvTKY9gW8nLICSno5EETR1cuF7i4pN
-s9I1QJGAFAX0BEO4KbzXmuOvfCpD3CU+Slp1enenfzq/t/e/1IRW0wkJUJUFQign
-4CtrkJL+P07yx18UjyPlBXb81ApEmAB5mrJVSrWmqbjs07JbuS4QQGGXLc+Su96D
-kYKmSNVjBiLxVVSpyZfAY3hD37d60uG+X8xdW5v68JkRFIhdGlb6JL8fllf/A/bl
-NwdJOhVr9mESHhwGjwfSeTDPfd8ZLE027E5lyAVX9KZYcU00mOX+fdxOSnGqS/8J
-DRh0EPHDL15RcJjV2J6vZjPb0rOYGDoMcH+94wIDAQABAoIBAAzsamqfYQAqwXTb
-I0CJtGg6msUgU7HVkOM+9d3hM2L791oGHV6xBAdpXW2H8LgvZHJ8eOeSghR8+dgq
-PIqAffo4x1Oma+FOg3A0fb0evyiACyrOk+EcBdbBeLo/LcvahBtqnDfiUMQTpy6V
-seSoFCwuN91TSCeGIsDpRjbG1vxZgtx+uI+oH5+ytqJOmfCksRDCkMglGkzyfcl0
-Xc5CUhIJ0my53xijEUQl19rtWdMnNnnkdbG8PT3LZlOta5Do86BElzUYka0C6dUc
-VsBDQ0Nup0P6rEQgy7tephHoRlUGTYamsajGJaAo1F3IQVIrRSuagi7+YpSpCqsW
-wORqorkCgYEA7RdX6MDVrbw7LePnhyuaqTiMK+055/R1TqhB1JvvxJ1CXk2rDL6G
-0TLHQ7oGofd5LYiemg4ZVtWdJe43BPZlVgT6lvL/iGo8JnrncB9Da6L7nrq/+Rvj
-XGjf1qODCK+LmreZWEsaLPURIoR/Ewwxb9J2zd0CaMjeTwafJo1CZvcCgYEAyCgb
-aqoWvUecX8VvARfuA593Lsi50t4MEArnOXXcd1RnXoZWhbx5rgO8/ATKfXr0BK/n
-h2GF9PfKzHFm/4V6e82OL7gu/kLy2u9bXN74vOvWFL5NOrOKPM7Kg+9I131kNYOw
-Ivnr/VtHE5s0dY7JChYWE1F3vArrOw3T00a4CXUCgYEA0SqY+dS2LvIzW4cHCe9k
-IQqsT0yYm5TFsUEr4sA3xcPfe4cV8sZb9k/QEGYb1+SWWZ+AHPV3UW5fl8kTbSNb
-v4ng8i8rVVQ0ANbJO9e5CUrepein2MPL0AkOATR8M7t7dGGpvYV0cFk8ZrFx0oId
-U0PgYDotF/iueBWlbsOM430CgYEAqYI95dFyPI5/AiSkY5queeb8+mQH62sdcCCr
-vd/w/CZA/K5sbAo4SoTj8dLk4evU6HtIa0DOP63y071eaxvRpTNqLUOgmLh+D6gS
-Cc7TfLuFrD+WDBatBd5jZ+SoHccVrLR/4L8jeodo5FPW05A+9gnKXEXsTxY4LOUC
-9bS4e1kCgYAqVXZh63JsMwoaxCYmQ66eJojKa47VNrOeIZDZvd2BPVf30glBOT41
-gBoDG3WMPZoQj9pb7uMcrnvs4APj2FIhMU8U15LcPAj59cD6S6rWnAxO8NFK7HQG
-4Jxg3JNNf8ErQoCHb1B3oVdXJkmbJkARoDpBKmTCgKtP8ADYLmVPQw==
------END RSA PRIVATE KEY-----
-  _end_of_pem_
-
-  TEST_KEY_DSA256 = OpenSSL::PKey::DSA.new <<-_end_of_pem_
------BEGIN DSA PRIVATE KEY-----
-MIH3AgEAAkEAhk2libbY2a8y2Pt21+YPYGZeW6wzaW2yfj5oiClXro9XMR7XWLkE
-9B7XxLNFCS2gmCCdMsMW1HulaHtLFQmB2wIVAM43JZrcgpu6ajZ01VkLc93gu/Ed
-AkAOhujZrrKV5CzBKutKLb0GVyVWmdC7InoNSMZEeGU72rT96IjM59YzoqmD0pGM
-3I1o4cGqg1D1DfM1rQlnN1eSAkBq6xXfEDwJ1mLNxF6q8Zm/ugFYWR5xcX/3wFiT
-b4+EjHP/DbNh9Vm5wcfnDBJ1zKvrMEf2xqngYdrV/3CiGJeKAhRvL57QvJZcQGvn
-ISNX5cMzFHRW3Q==
------END DSA PRIVATE KEY-----
-  _end_of_pem_
-
-  TEST_KEY_DSA512 = OpenSSL::PKey::DSA.new <<-_end_of_pem_
------BEGIN DSA PRIVATE KEY-----
-MIH4AgEAAkEA5lB4GvEwjrsMlGDqGsxrbqeFRh6o9OWt6FgTYiEEHaOYhkIxv0Ok
-RZPDNwOG997mDjBnvDJ1i56OmS3MbTnovwIVAJgub/aDrSDB4DZGH7UyarcaGy6D
-AkB9HdFw/3td8K4l1FZHv7TCZeJ3ZLb7dF3TWoGUP003RCqoji3/lHdKoVdTQNuR
-S/m6DlCwhjRjiQ/lBRgCLCcaAkEAjN891JBjzpMj4bWgsACmMggFf57DS0Ti+5++
-Q1VB8qkJN7rA7/2HrCR3gTsWNb1YhAsnFsoeRscC+LxXoXi9OAIUBG98h4tilg6S
-55jreJD3Se3slps=
------END DSA PRIVATE KEY-----
-  _end_of_pem_
-
-  module_function
-
-  def issue_cert(dn, key, serial, not_before, not_after, extensions,
-                 issuer, issuer_key, digest)
-    cert = OpenSSL::X509::Certificate.new
-    issuer = cert unless issuer
-    issuer_key = key unless issuer_key
-    cert.version = 2
-    cert.serial = serial
-    cert.subject = dn
-    cert.issuer = issuer.subject
-    cert.public_key = key.public_key
-    cert.not_before = not_before
-    cert.not_after = not_after
-    ef = OpenSSL::X509::ExtensionFactory.new
-    ef.subject_certificate = cert
-    ef.issuer_certificate = issuer
-    extensions.each{|oid, value, critical|
-      cert.add_extension(ef.create_extension(oid, value, critical))
-    }
-    cert.sign(issuer_key, digest)
-    cert
-  end
-
-  def issue_crl(revoke_info, serial, lastup, nextup, extensions, 
-                issuer, issuer_key, digest)
-    crl = OpenSSL::X509::CRL.new
-    crl.issuer = issuer.subject
-    crl.version = 1
-    crl.last_update = lastup
-    crl.next_update = nextup
-    revoke_info.each{|serial, time, reason_code|
-      revoked = OpenSSL::X509::Revoked.new
-      revoked.serial = serial
-      revoked.time = time
-      enum = OpenSSL::ASN1::Enumerated(reason_code)
-      ext = OpenSSL::X509::Extension.new("CRLReason", enum)
-      revoked.add_extension(ext)
-      crl.add_revoked(revoked)
-    }
-    ef = OpenSSL::X509::ExtensionFactory.new
-    ef.issuer_certificate = issuer
-    ef.crl = crl
-    crlnum = OpenSSL::ASN1::Integer(serial)
-    crl.add_extension(OpenSSL::X509::Extension.new("crlNumber", crlnum))
-    extensions.each{|oid, value, critical|
-      crl.add_extension(ef.create_extension(oid, value, critical))
-    }
-    crl.sign(issuer_key, digest)
-    crl
-  end
-
-  def get_subject_key_id(cert)
-    asn1_cert = OpenSSL::ASN1.decode(cert)
-    tbscert   = asn1_cert.value[0]
-    pkinfo    = tbscert.value[6]
-    publickey = pkinfo.value[1]
-    pkvalue   = publickey.value
-    OpenSSL::Digest::SHA1.hexdigest(pkvalue).scan(/../).join(":").upcase
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/optparse/test_getopts.rb b/ruby/doc/ruby/ruby-1.8.7/test/optparse/test_getopts.rb
deleted file mode 100644 (file)
index fdefe5f..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-require 'test/unit'
-
-class TestOptionParserGetopts < Test::Unit::TestCase
-  def setup
-    @opt = OptionParser.new
-  end
-
-  def test_short_noarg
-    o = @opt.getopts(%w[-a], "ab")
-    assert_equal(true, o['a'])
-    assert_equal(false, o['b'])
-  end
-
-  def test_short_arg
-    o = @opt.getopts(%w[-a1], "a:b:")
-    assert_equal("1", o['a'])
-    assert_equal(nil, o['b'])
-  end
-
-  def test_long_noarg
-    o = @opt.getopts(%w[--foo], "", "foo", "bar")
-    assert_equal(true, o['foo'])
-    assert_equal(false, o['bar'])
-  end
-
-  def test_long_arg
-    o = @opt.getopts(%w[--bar ZOT], "", "foo:FOO", "bar:BAR")
-    assert_equal("FOO", o['foo'])
-    assert_equal("ZOT", o['bar'])
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/optparse/test_noarg.rb b/ruby/doc/ruby/ruby-1.8.7/test/optparse/test_noarg.rb
deleted file mode 100644 (file)
index 28c4690..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-require 'test_optparse'
-
-module TestOptionParser::NoArg
-  class Def1 < TestOptionParser
-    include NoArg
-    def setup
-      super
-      @opt.def_option("-x") {|x| @flag = x}
-      @opt.def_option("--option") {|x| @flag = x}
-    end
-  end
-  class Def2 < TestOptionParser
-    include NoArg
-    def setup
-      super
-      @opt.def_option("-x", "--option") {|x| @flag = x}
-    end
-  end
-
-  def test_short
-    assert_raises(OptionParser::InvalidOption) {@opt.parse!(%w"-xq")}
-    assert_equal(%w"", no_error {@opt.parse!(%w"-x")})
-    assert_equal(true, @flag)
-    @flag = nil
-    assert_equal(%w"foo", no_error {@opt.parse!(%w"-x foo")})
-    assert_equal(true, @flag)
-  end
-
-  def test_abbrev
-    assert_raises(OptionParser::InvalidOption) {@opt.parse!(%w"-oq")}
-    assert_equal(%w"", no_error {@opt.parse!(%w"-o")})
-    assert_equal(true, @flag)
-    @flag = nil
-    assert_raises(OptionParser::InvalidOption) {@opt.parse!(%w"-O")}
-    assert_nil(@flag)
-    @flag = nil
-    assert_equal(%w"foo", no_error {@opt.parse!(%w"-o foo")})
-    assert_equal(true, @flag)
-  end
-
-  def test_long
-    assert_raises(OptionParser::NeedlessArgument) {@opt.parse!(%w"--option=x")}
-    assert_equal(%w"", no_error {@opt.parse!(%w"--opt")})
-    assert_equal(true, @flag)
-    @flag = nil
-    assert_equal(%w"foo", no_error {@opt.parse!(%w"--opt foo")})
-    assert_equal(true, @flag)
-  end
-
-  def test_ambiguous
-    @opt.def_option("--open") {|x|}
-    assert_raises(OptionParser::AmbiguousOption) {@opt.parse!(%w"--op")}
-    assert_raises(OptionParser::AmbiguousOption) {@opt.parse!(%w"-o")}
-    assert_equal(%w"", no_error {@opt.parse!(%w"--opt")})
-    assert_equal(true, @flag)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/optparse/test_optarg.rb b/ruby/doc/ruby/ruby-1.8.7/test/optparse/test_optarg.rb
deleted file mode 100644 (file)
index 49cb1b9..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-require 'test_optparse'
-
-class TestOptionParser::OptArg < TestOptionParser
-  def setup
-    super
-    @opt.def_option("-x[VAL]") {|x| @flag = x}
-    @opt.def_option("--option[=VAL]") {|x| @flag = x}
-  end
-
-  def test_short
-    assert_equal(%w"", no_error {@opt.parse!(%w"-x")})
-    assert_equal(nil, @flag)
-    @flag = false
-    assert_equal(%w"foo", no_error {@opt.parse!(%w"-x foo")})
-    assert_equal(nil, @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"-xfoo")})
-    assert_equal("foo", @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"-x=")})
-    assert_equal("=", @flag)
-  end
-
-  def test_abbrev
-    assert_equal(%w"", no_error {@opt.parse!(%w"-o")})
-    assert_equal(nil, @flag)
-    @flag = false
-    assert_equal(%w"foo", no_error {@opt.parse!(%w"-o foo")})
-    assert_equal(nil, @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"-ofoo")})
-    assert_equal("foo", @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"-o=")})
-    assert_equal("=", @flag)
-  end
-
-  def test_long
-    assert_equal(%w"", no_error {@opt.parse!(%w"--opt")})
-    assert_equal(nil, @flag)
-    assert_equal(%w"foo", no_error {@opt.parse!(%w"--opt= foo")})
-    assert_equal("", @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"--opt=foo")})
-    assert_equal("foo", @flag)
-    assert_equal(%w"foo", no_error {@opt.parse!(%w"--opt foo")})
-    assert_equal(nil, @flag)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/optparse/test_optparse.rb b/ruby/doc/ruby/ruby-1.8.7/test/optparse/test_optparse.rb
deleted file mode 100644 (file)
index 9c73399..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-require 'test/unit'
-require 'optparse'
-
-class TestOptionParser < Test::Unit::TestCase
-  def setup
-    @opt = OptionParser.new
-    @flag = self.class         # cannot set by option
-  end
-  def no_error(*args)
-    assert_nothing_raised(*args) {return yield}
-  end
-
-  def test_permute
-    assert_equal(%w"", no_error {@opt.permute!(%w"")})
-    assert_equal(self.class, @flag)
-    assert_equal(%w"foo bar", no_error {@opt.permute!(%w"foo bar")})
-    assert_equal(self.class, @flag)
-    assert_equal(%w"- foo bar", no_error {@opt.permute!(%w"- foo bar")})
-    assert_equal(self.class, @flag)
-    assert_equal(%w"foo bar", no_error {@opt.permute!(%w"-- foo bar")})
-    assert_equal(self.class, @flag)
-    assert_equal(%w"foo - bar", no_error {@opt.permute!(%w"foo - bar")})
-    assert_equal(self.class, @flag)
-    assert_equal(%w"foo bar", no_error {@opt.permute!(%w"foo -- bar")})
-    assert_equal(self.class, @flag)
-    assert_equal(%w"foo --help bar", no_error {@opt.permute!(%w"foo -- --help bar")})
-    assert_equal(self.class, @flag)
-  end
-
-  def test_order
-    assert_equal(%w"", no_error {@opt.order!(%w"")})
-    assert_equal(self.class, @flag)
-    assert_equal(%w"foo bar", no_error {@opt.order!(%w"foo bar")})
-    assert_equal(self.class, @flag)
-    assert_equal(%w"- foo bar", no_error {@opt.order!(%w"- foo bar")})
-    assert_equal(self.class, @flag)
-    assert_equal(%w"foo bar", no_error {@opt.permute!(%w"-- foo bar")})
-    assert_equal(self.class, @flag)
-    assert_equal(%w"foo - bar", no_error {@opt.order!(%w"foo - bar")})
-    assert_equal(self.class, @flag)
-    assert_equal(%w"foo -- bar", no_error {@opt.order!(%w"foo -- bar")})
-    assert_equal(self.class, @flag)
-    assert_equal(%w"foo -- --help bar", no_error {@opt.order!(%w"foo -- --help bar")})
-    assert_equal(self.class, @flag)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/optparse/test_placearg.rb b/ruby/doc/ruby/ruby-1.8.7/test/optparse/test_placearg.rb
deleted file mode 100644 (file)
index f4fd249..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-require 'test_optparse'
-
-class TestOptionParser::PlaceArg < TestOptionParser
-  def setup
-    super
-    @opt.def_option("-x [VAL]") {|x| @flag = x}
-    @opt.def_option("--option [VAL]") {|x| @flag = x}
-    @opt.def_option("-n") {}
-  end
-
-  def test_short
-    assert_equal(%w"", no_error {@opt.parse!(%w"-x -n")})
-    assert_equal(nil, @flag)
-    @flag = false
-    assert_equal(%w"", no_error {@opt.parse!(%w"-x foo")})
-    assert_equal("foo", @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"-xbar")})
-    assert_equal("bar", @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"-x=")})
-    assert_equal("=", @flag)
-  end
-
-  def test_abbrev
-    assert_equal(%w"", no_error {@opt.parse!(%w"-o -n")})
-    assert_equal(nil, @flag)
-    @flag = false
-    assert_equal(%w"", no_error {@opt.parse!(%w"-o foo")})
-    assert_equal("foo", @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"-obar")})
-    assert_equal("bar", @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"-o=")})
-    assert_equal("=", @flag)
-  end
-
-  def test_long
-    assert_equal(%w"", no_error {@opt.parse!(%w"--opt -n")})
-    assert_equal(nil, @flag)
-    assert_equal(%w"foo", no_error {@opt.parse!(%w"--opt= foo")})
-    assert_equal("", @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"--opt=foo")})
-    assert_equal("foo", @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"--opt bar")})
-    assert_equal("bar", @flag)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/optparse/test_reqarg.rb b/ruby/doc/ruby/ruby-1.8.7/test/optparse/test_reqarg.rb
deleted file mode 100644 (file)
index 0999e5e..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-require 'test_optparse'
-
-module TestOptionParser::ReqArg
-  class Def1 < TestOptionParser
-    include ReqArg
-    def setup
-      super
-      @opt.def_option("-xVAL") {|x| @flag = x}
-      @opt.def_option("--option=VAL") {|x| @flag = x}
-    end
-  end
-  class Def2 < TestOptionParser
-    include ReqArg
-    def setup
-      super
-      @opt.def_option("-x", "--option=VAL") {|x| @flag = x}
-    end
-  end
-  class Def3 < TestOptionParser
-    include ReqArg
-    def setup
-      super
-      @opt.def_option("--option=VAL", "-x") {|x| @flag = x}
-    end
-  end
-  class Def4 < TestOptionParser
-    include ReqArg
-    def setup
-      super
-      @opt.def_option("-xVAL", "--option=VAL") {|x| @flag = x}
-    end
-  end
-
-  def test_short
-    assert_raises(OptionParser::MissingArgument) {@opt.parse!(%w"-x")}
-    assert_equal(%w"", no_error {@opt.parse!(%w"-x foo")})
-    assert_equal("foo", @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"-xbar")})
-    assert_equal("bar", @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"-x=")})
-    assert_equal("=", @flag)
-  end
-
-  def test_abbrev
-    assert_raises(OptionParser::MissingArgument) {@opt.parse!(%w"-o")}
-    assert_equal(%w"", no_error {@opt.parse!(%w"-o foo")})
-    assert_equal("foo", @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"-obar")})
-    assert_equal("bar", @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"-o=")})
-    assert_equal("=", @flag)
-  end
-
-  def test_long
-    assert_raises(OptionParser::MissingArgument) {@opt.parse!(%w"--opt")}
-    assert_equal(%w"", no_error {@opt.parse!(%w"--opt foo")})
-    assert_equal("foo", @flag)
-    assert_equal(%w"foo", no_error {@opt.parse!(%w"--opt= foo")})
-    assert_equal("", @flag)
-    assert_equal(%w"", no_error {@opt.parse!(%w"--opt=foo")})
-    assert_equal("foo", @flag)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ostruct/test_ostruct.rb b/ruby/doc/ruby/ruby-1.8.7/test/ostruct/test_ostruct.rb
deleted file mode 100644 (file)
index 24ed17f..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-require 'test/unit'
-require 'ostruct'
-
-class TC_OpenStruct < Test::Unit::TestCase
-  def test_equality
-    o1 = OpenStruct.new
-    o2 = OpenStruct.new
-    assert_equal(o1, o2)
-
-    o1.a = 'a'
-    assert_not_equal(o1, o2)
-
-    o2.a = 'a'
-    assert_equal(o1, o2)
-
-    o1.a = 'b'
-    assert_not_equal(o1, o2)
-
-    o2 = Object.new
-    o2.instance_eval{@table = {:a => 'b'}}
-    assert_not_equal(o1, o2)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/pathname/test_pathname.rb b/ruby/doc/ruby/ruby-1.8.7/test/pathname/test_pathname.rb
deleted file mode 100644 (file)
index 9b0b9c0..0000000
+++ /dev/null
@@ -1,478 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'test/unit'
-require 'pathname'
-
-require 'fileutils'
-require 'tmpdir'
-require 'enumerator'
-
-class TestPathname < Test::Unit::TestCase
-  def self.define_assertion(name, &block)
-    @defassert_num ||= {}
-    @defassert_num[name] ||= 0
-    @defassert_num[name] += 1
-    define_method("test_#{name}_#{@defassert_num[name]}", &block)
-  end
-
-  def self.defassert(name, result, *args)
-    define_assertion(name) {
-      assert_equal(result, self.send(name, *args), "#{name}(#{args.map {|a| a.inspect }.join(', ')})")
-    }
-  end
-
-  DOSISH = File::ALT_SEPARATOR != nil
-  DOSISH_DRIVE_LETTER = File.dirname("A:") == "A:."
-  DOSISH_UNC = File.dirname("//") == "//"
-
-  def cleanpath_aggressive(path)
-    Pathname.new(path).cleanpath.to_s
-  end
-
-  defassert(:cleanpath_aggressive, '/',       '/')
-  defassert(:cleanpath_aggressive, '.',       '')
-  defassert(:cleanpath_aggressive, '.',       '.')
-  defassert(:cleanpath_aggressive, '..',      '..')
-  defassert(:cleanpath_aggressive, 'a',       'a')
-  defassert(:cleanpath_aggressive, '/',       '/.')
-  defassert(:cleanpath_aggressive, '/',       '/..')
-  defassert(:cleanpath_aggressive, '/a',      '/a')
-  defassert(:cleanpath_aggressive, '.',       './')
-  defassert(:cleanpath_aggressive, '..',      '../')
-  defassert(:cleanpath_aggressive, 'a',       'a/')
-  defassert(:cleanpath_aggressive, 'a/b',     'a//b')
-  defassert(:cleanpath_aggressive, 'a',       'a/.')
-  defassert(:cleanpath_aggressive, 'a',       'a/./')
-  defassert(:cleanpath_aggressive, '.',       'a/..')
-  defassert(:cleanpath_aggressive, '.',       'a/../')
-  defassert(:cleanpath_aggressive, '/a',      '/a/.')
-  defassert(:cleanpath_aggressive, '..',      './..')
-  defassert(:cleanpath_aggressive, '..',      '../.')
-  defassert(:cleanpath_aggressive, '..',      './../')
-  defassert(:cleanpath_aggressive, '..',      '.././')
-  defassert(:cleanpath_aggressive, '/',       '/./..')
-  defassert(:cleanpath_aggressive, '/',       '/../.')
-  defassert(:cleanpath_aggressive, '/',       '/./../')
-  defassert(:cleanpath_aggressive, '/',       '/.././')
-  defassert(:cleanpath_aggressive, 'a/b/c',   'a/b/c')
-  defassert(:cleanpath_aggressive, 'b/c',     './b/c')
-  defassert(:cleanpath_aggressive, 'a/c',     'a/./c')
-  defassert(:cleanpath_aggressive, 'a/b',     'a/b/.')
-  defassert(:cleanpath_aggressive, '.',       'a/../.')
-  defassert(:cleanpath_aggressive, '/a',      '/../.././../a')
-  defassert(:cleanpath_aggressive, '../../d', 'a/b/../../../../c/../d')
-
-  if DOSISH_UNC
-    defassert(:cleanpath_aggressive, '//a/b/c', '//a/b/c/')
-  else
-    defassert(:cleanpath_aggressive, '/',       '///')
-    defassert(:cleanpath_aggressive, '/a',      '///a')
-    defassert(:cleanpath_aggressive, '/',       '///..')
-    defassert(:cleanpath_aggressive, '/',       '///.')
-    defassert(:cleanpath_aggressive, '/',       '///a/../..')
-  end
-
-  def cleanpath_conservative(path)
-    Pathname.new(path).cleanpath(true).to_s
-  end
-
-  defassert(:cleanpath_conservative, '/',      '/')
-  defassert(:cleanpath_conservative, '.',      '')
-  defassert(:cleanpath_conservative, '.',      '.')
-  defassert(:cleanpath_conservative, '..',     '..')
-  defassert(:cleanpath_conservative, 'a',      'a')
-  defassert(:cleanpath_conservative, '/',      '/.')
-  defassert(:cleanpath_conservative, '/',      '/..')
-  defassert(:cleanpath_conservative, '/a',     '/a')
-  defassert(:cleanpath_conservative, '.',      './')
-  defassert(:cleanpath_conservative, '..',     '../')
-  defassert(:cleanpath_conservative, 'a/',     'a/')
-  defassert(:cleanpath_conservative, 'a/b',    'a//b')
-  defassert(:cleanpath_conservative, 'a/.',    'a/.')
-  defassert(:cleanpath_conservative, 'a/.',    'a/./')
-  defassert(:cleanpath_conservative, 'a/..',   'a/../')
-  defassert(:cleanpath_conservative, '/a/.',   '/a/.')
-  defassert(:cleanpath_conservative, '..',     './..')
-  defassert(:cleanpath_conservative, '..',     '../.')
-  defassert(:cleanpath_conservative, '..',     './../')
-  defassert(:cleanpath_conservative, '..',     '.././')
-  defassert(:cleanpath_conservative, '/',      '/./..')
-  defassert(:cleanpath_conservative, '/',      '/../.')
-  defassert(:cleanpath_conservative, '/',      '/./../')
-  defassert(:cleanpath_conservative, '/',      '/.././')
-  defassert(:cleanpath_conservative, 'a/b/c',  'a/b/c')
-  defassert(:cleanpath_conservative, 'b/c',    './b/c')
-  defassert(:cleanpath_conservative, 'a/c',    'a/./c')
-  defassert(:cleanpath_conservative, 'a/b/.',  'a/b/.')
-  defassert(:cleanpath_conservative, 'a/..',   'a/../.')
-  defassert(:cleanpath_conservative, '/a',     '/../.././../a')
-  defassert(:cleanpath_conservative, 'a/b/../../../../c/../d', 'a/b/../../../../c/../d')
-
-  if DOSISH_UNC
-    defassert(:cleanpath_conservative, '//',     '//')
-  else
-    defassert(:cleanpath_conservative, '/',      '//')
-  end
-
-  # has_trailing_separator?(path) -> bool
-  def has_trailing_separator?(path)
-    Pathname.allocate.__send__(:has_trailing_separator?, path)
-  end
-
-  defassert(:has_trailing_separator?, false, "/")
-  defassert(:has_trailing_separator?, false, "///")
-  defassert(:has_trailing_separator?, false, "a")
-  defassert(:has_trailing_separator?, true, "a/")
-
-  def add_trailing_separator(path)
-    Pathname.allocate.__send__(:add_trailing_separator, path)
-  end
-
-  def del_trailing_separator(path)
-    Pathname.allocate.__send__(:del_trailing_separator, path)
-  end
-
-  defassert(:del_trailing_separator, "/", "/")
-  defassert(:del_trailing_separator, "/a", "/a")
-  defassert(:del_trailing_separator, "/a", "/a/")
-  defassert(:del_trailing_separator, "/a", "/a//")
-  defassert(:del_trailing_separator, ".", ".")
-  defassert(:del_trailing_separator, ".", "./")
-  defassert(:del_trailing_separator, ".", ".//")
-
-  if DOSISH_DRIVE_LETTER
-    defassert(:del_trailing_separator, "A:", "A:")
-    defassert(:del_trailing_separator, "A:/", "A:/")
-    defassert(:del_trailing_separator, "A:/", "A://")
-    defassert(:del_trailing_separator, "A:.", "A:.")
-    defassert(:del_trailing_separator, "A:.", "A:./")
-    defassert(:del_trailing_separator, "A:.", "A:.//")
-  end
-
-  if DOSISH_UNC
-    defassert(:del_trailing_separator, "//", "//")
-    defassert(:del_trailing_separator, "//a", "//a")
-    defassert(:del_trailing_separator, "//a", "//a/")
-    defassert(:del_trailing_separator, "//a", "//a//")
-    defassert(:del_trailing_separator, "//a/b", "//a/b")
-    defassert(:del_trailing_separator, "//a/b", "//a/b/")
-    defassert(:del_trailing_separator, "//a/b", "//a/b//")
-    defassert(:del_trailing_separator, "//a/b/c", "//a/b/c")
-    defassert(:del_trailing_separator, "//a/b/c", "//a/b/c/")
-    defassert(:del_trailing_separator, "//a/b/c", "//a/b/c//")
-  else
-    defassert(:del_trailing_separator, "/", "///")
-    defassert(:del_trailing_separator, "///a", "///a/")
-  end
-
-  if DOSISH
-    defassert(:del_trailing_separator, "a", "a\\")
-    require 'Win32API'
-    if Win32API.new('kernel32', 'GetACP', nil, 'L').call == 932
-      defassert(:del_trailing_separator, "\225\\", "\225\\\\") # SJIS
-    end
-  end
-
-  def plus(path1, path2) # -> path
-    (Pathname.new(path1) + Pathname.new(path2)).to_s
-  end
-
-  defassert(:plus, '/', '/', '/')
-  defassert(:plus, 'a/b', 'a', 'b')
-  defassert(:plus, 'a', 'a', '.')
-  defassert(:plus, 'b', '.', 'b')
-  defassert(:plus, '.', '.', '.')
-  defassert(:plus, '/b', 'a', '/b')
-
-  defassert(:plus, '/', '/', '..')
-  defassert(:plus, '.', 'a', '..')
-  defassert(:plus, 'a', 'a/b', '..')
-  defassert(:plus, '../..', '..', '..')
-  defassert(:plus, '/c', '/', '../c')
-  defassert(:plus, 'c', 'a', '../c')
-  defassert(:plus, 'a/c', 'a/b', '../c')
-  defassert(:plus, '../../c', '..', '../c')
-
-  defassert(:plus, 'a//b/d//e', 'a//b/c', '../d//e')
-
-  def relative?(path)
-    Pathname.new(path).relative?
-  end
-
-  defassert(:relative?, false, '/')
-  defassert(:relative?, false, '/a')
-  defassert(:relative?, false, '/..')
-  defassert(:relative?, true, 'a')
-  defassert(:relative?, true, 'a/b')
-
-  if DOSISH_DRIVE_LETTER
-    defassert(:relative?, false, 'A:')
-    defassert(:relative?, false, 'A:/')
-    defassert(:relative?, false, 'A:/a')
-  end
-
-  if File.dirname('//') == '//'
-    defassert(:relative?, false, '//')
-    defassert(:relative?, false, '//a')
-    defassert(:relative?, false, '//a/')
-    defassert(:relative?, false, '//a/b')
-    defassert(:relative?, false, '//a/b/')
-    defassert(:relative?, false, '//a/b/c')
-  end
-
-  def relative_path_from(dest_directory, base_directory)
-    Pathname.new(dest_directory).relative_path_from(Pathname.new(base_directory)).to_s
-  end
-
-  defassert(:relative_path_from, "../a", "a", "b")
-  defassert(:relative_path_from, "../a", "a", "b/")
-  defassert(:relative_path_from, "../a", "a/", "b")
-  defassert(:relative_path_from, "../a", "a/", "b/")
-  defassert(:relative_path_from, "../a", "/a", "/b")
-  defassert(:relative_path_from, "../a", "/a", "/b/")
-  defassert(:relative_path_from, "../a", "/a/", "/b")
-  defassert(:relative_path_from, "../a", "/a/", "/b/")
-
-  defassert(:relative_path_from, "../b", "a/b", "a/c")
-  defassert(:relative_path_from, "../a", "../a", "../b")
-
-  defassert(:relative_path_from, "a", "a", ".")
-  defassert(:relative_path_from, "..", ".", "a")
-
-  defassert(:relative_path_from, ".", ".", ".")
-  defassert(:relative_path_from, ".", "..", "..")
-  defassert(:relative_path_from, "..", "..", ".")
-
-  defassert(:relative_path_from, "c/d", "/a/b/c/d", "/a/b")
-  defassert(:relative_path_from, "../..", "/a/b", "/a/b/c/d")
-  defassert(:relative_path_from, "../../../../e", "/e", "/a/b/c/d")
-  defassert(:relative_path_from, "../b/c", "a/b/c", "a/d")
-
-  defassert(:relative_path_from, "../a", "/../a", "/b")
-  defassert(:relative_path_from, "../../a", "../a", "b")
-  defassert(:relative_path_from, ".", "/a/../../b", "/b")
-  defassert(:relative_path_from, "..", "a/..", "a")
-  defassert(:relative_path_from, ".", "a/../b", "b")
-
-  defassert(:relative_path_from, "a", "a", "b/..")
-  defassert(:relative_path_from, "b/c", "b/c", "b/..")
-
-  def self.defassert_raise(name, exc, *args)
-    define_assertion(name) {
-      message = "#{name}(#{args.map {|a| a.inspect }.join(', ')})"
-      assert_raise(exc, message) { self.send(name, *args) }
-    }
-  end
-
-  defassert_raise(:relative_path_from, ArgumentError, "/", ".")
-  defassert_raise(:relative_path_from, ArgumentError, ".", "/")
-  defassert_raise(:relative_path_from, ArgumentError, "a", "..")
-  defassert_raise(:relative_path_from, ArgumentError, ".", "..")
-
-  def realpath(path)
-    Pathname.new(path).realpath.to_s
-  end
-
-  def test_realpath
-    begin
-      File.symlink(nil, nil)
-    rescue NotImplementedError
-      return
-    rescue TypeError
-    end
-    Dir.mktmpdir('rubytest-pathname') {|dir|
-      File.symlink("not-exist-target", "#{dir}/not-exist")
-      assert_raise(Errno::ENOENT) { realpath("#{dir}/not-exist") }
-      File.symlink("loop", "#{dir}/loop")
-      assert_raise(Errno::ELOOP) { realpath("#{dir}/loop") }
-    }
-  end
-
-  def descend(path)
-    Pathname.new(path).enum_for(:descend).map {|v| v.to_s }
-  end
-
-  defassert(:descend, %w[/ /a /a/b /a/b/c], "/a/b/c")
-  defassert(:descend, %w[a a/b a/b/c], "a/b/c")
-  defassert(:descend, %w[. ./a ./a/b ./a/b/c], "./a/b/c")
-  defassert(:descend, %w[a/], "a/")
-
-  def ascend(path)
-    Pathname.new(path).enum_for(:ascend).map {|v| v.to_s }
-  end
-
-  defassert(:ascend, %w[/a/b/c /a/b /a /], "/a/b/c")
-  defassert(:ascend, %w[a/b/c a/b a], "a/b/c")
-  defassert(:ascend, %w[./a/b/c ./a/b ./a .], "./a/b/c")
-  defassert(:ascend, %w[a/], "a/")
-
-  def test_initialize
-    p1 = Pathname.new('a')
-    assert_equal('a', p1.to_s)
-    p2 = Pathname.new(p1)
-    assert_equal(p1, p2)
-  end
-
-  def test_initialize_nul
-    assert_raise(ArgumentError) { Pathname.new("a\0") }
-  end
-
-  class AnotherStringLike # :nodoc:
-    def initialize(s) @s = s end
-    def to_str() @s end
-    def ==(other) @s == other end
-  end
-
-  def test_equality
-    obj = Pathname.new("a")
-    str = "a"
-    sym = :a
-    ano = AnotherStringLike.new("a")
-    assert_equal(false, obj == str)
-    assert_equal(false, str == obj)
-    assert_equal(false, obj == ano)
-    assert_equal(false, ano == obj)
-    assert_equal(false, obj == sym)
-    assert_equal(false, sym == obj)
-
-    obj2 = Pathname.new("a")
-    assert_equal(true, obj == obj2)
-    assert_equal(true, obj === obj2)
-    assert_equal(true, obj.eql?(obj2))
-  end
-
-  def test_hashkey
-    h = {}
-    h[Pathname.new("a")] = 1
-    h[Pathname.new("a")] = 2
-    assert_equal(1, h.size)
-  end
-
-  def assert_pathname_cmp(e, s1, s2)
-    p1 = Pathname.new(s1)
-    p2 = Pathname.new(s2)
-    r = p1 <=> p2
-    assert(e == r,
-      "#{p1.inspect} <=> #{p2.inspect}: <#{e}> expected but was <#{r}>")
-  end
-  def test_comparison
-    assert_pathname_cmp( 0, "a", "a")
-    assert_pathname_cmp( 1, "b", "a")
-    assert_pathname_cmp(-1, "a", "b")
-    ss = %w(
-      a
-      a/
-      a/b
-      a.
-      a0
-    )
-    s1 = ss.shift
-    ss.each {|s2|
-      assert_pathname_cmp(-1, s1, s2)
-      s1 = s2
-    }
-  end
-
-  def test_comparison_string
-    assert_equal(nil, Pathname.new("a") <=> "a")
-    assert_equal(nil, "a" <=> Pathname.new("a"))
-  end
-
-  def pathsub(path, pat, repl) Pathname.new(path).sub(pat, repl).to_s end
-  defassert(:pathsub, "a.o", "a.c", /\.c\z/, ".o")
-
-  def root?(path)
-    Pathname.new(path).root?
-  end
-
-  defassert(:root?, true, "/")
-  defassert(:root?, true, "//")
-  defassert(:root?, true, "///")
-  defassert(:root?, false, "")
-  defassert(:root?, false, "a")
-
-  def test_destructive_update
-    path = Pathname.new("a")
-    path.to_s.replace "b"
-    assert_equal(Pathname.new("a"), path)
-  end
-
-  def test_null_character
-    assert_raise(ArgumentError) { Pathname.new("\0") }
-  end
-
-  def test_taint
-    obj = Pathname.new("a"); assert_same(obj, obj.taint)
-    obj = Pathname.new("a"); assert_same(obj, obj.untaint)
-
-    assert_equal(false, Pathname.new("a"      )           .tainted?)
-    assert_equal(false, Pathname.new("a"      )      .to_s.tainted?)
-    assert_equal(true,  Pathname.new("a"      ).taint     .tainted?)
-    assert_equal(true,  Pathname.new("a"      ).taint.to_s.tainted?)
-    assert_equal(true,  Pathname.new("a".taint)           .tainted?)
-    assert_equal(true,  Pathname.new("a".taint)      .to_s.tainted?)
-    assert_equal(true,  Pathname.new("a".taint).taint     .tainted?)
-    assert_equal(true,  Pathname.new("a".taint).taint.to_s.tainted?)
-
-    str = "a"
-    path = Pathname.new(str)
-    str.taint
-    assert_equal(false, path     .tainted?)
-    assert_equal(false, path.to_s.tainted?)
-  end
-
-  def test_untaint
-    obj = Pathname.new("a"); assert_same(obj, obj.untaint)
-
-    assert_equal(false, Pathname.new("a").taint.untaint     .tainted?)
-    assert_equal(false, Pathname.new("a").taint.untaint.to_s.tainted?)
-
-    str = "a".taint
-    path = Pathname.new(str)
-    str.untaint
-    assert_equal(true, path     .tainted?)
-    assert_equal(true, path.to_s.tainted?)
-  end
-
-  def test_freeze
-    obj = Pathname.new("a"); assert_same(obj, obj.freeze)
-
-    assert_equal(false, Pathname.new("a"       )            .frozen?)
-    assert_equal(false, Pathname.new("a".freeze)            .frozen?)
-    assert_equal(true,  Pathname.new("a"       ).freeze     .frozen?)
-    assert_equal(true,  Pathname.new("a".freeze).freeze     .frozen?)
-    assert_equal(false, Pathname.new("a"       )       .to_s.frozen?)
-    assert_equal(false, Pathname.new("a".freeze)       .to_s.frozen?)
-    assert_equal(false, Pathname.new("a"       ).freeze.to_s.frozen?)
-    assert_equal(false, Pathname.new("a".freeze).freeze.to_s.frozen?)
-  end
-
-  def test_to_s
-    str = "a"
-    obj = Pathname.new(str)
-    assert_equal(str, obj.to_s)
-    assert_not_same(str, obj.to_s)
-    assert_not_same(obj.to_s, obj.to_s)
-  end
-
-  def test_kernel_open
-    count = 0
-    result = Kernel.open(Pathname.new(__FILE__)) {|f|
-      assert(File.identical?(__FILE__, f))
-      count += 1
-      2
-    }
-    assert_equal(1, count)
-    assert_equal(2, result)
-  end
-
-  def test_each_filename
-    result = []
-    Pathname.new("/usr/bin/ruby").each_filename {|f| result << f }
-    assert_equal(%w[usr bin ruby], result)
-  end
-
-  def test_kernel_pathname
-    assert_equal(Pathname.new("a"), Pathname("a"))
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rdoc/parsers/test_parse_c.rb b/ruby/doc/ruby/ruby-1.8.7/test/rdoc/parsers/test_parse_c.rb
deleted file mode 100644 (file)
index 6157a9e..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-require 'stringio'
-require 'tempfile'
-require 'test/unit'
-require 'rdoc/parsers/parse_c'
-
-class RDoc::C_Parser
-  attr_accessor :classes
-
-  public :do_classes, :do_constants
-end
-
-class TestRdocC_Parser < Test::Unit::TestCase
-
-  def setup
-    @tempfile = Tempfile.new self.class.name
-    filename = @tempfile.path
-
-    @top_level = RDoc::TopLevel.new filename
-    @fn = filename
-    @options = Options.instance
-    @stats = RDoc::Stats.new
-
-    @progress = StringIO.new
-  end
-
-  def teardown
-    @tempfile.unlink
-  end
-
-  def test_do_classes_boot_class
-    content = <<-EOF
-/* Document-class: Foo
- * this is the Foo boot class
- */
-VALUE cFoo = boot_defclass("Foo", 0);
-    EOF
-
-    klass = util_get_class content, 'cFoo'
-    assert_equal "   this is the Foo boot class\n   ", klass.comment
-  end
-
-  def test_do_classes_class
-    content = <<-EOF
-/* Document-class: Foo
- * this is the Foo class
- */
-VALUE cFoo = rb_define_class("Foo", rb_cObject);
-    EOF
-
-    klass = util_get_class content, 'cFoo'
-    assert_equal "   this is the Foo class\n   ", klass.comment
-  end
-
-  def test_do_classes_class_under
-    content = <<-EOF
-/* Document-class: Kernel::Foo
- * this is the Foo class under Kernel
- */
-VALUE cFoo = rb_define_class_under(rb_mKernel, "Foo", rb_cObject);
-    EOF
-
-    klass = util_get_class content, 'cFoo'
-    assert_equal "   this is the Foo class under Kernel\n   ", klass.comment
-  end
-
-  def test_do_classes_module
-    content = <<-EOF
-/* Document-module: Foo
- * this is the Foo module
- */
-VALUE mFoo = rb_define_module("Foo");
-    EOF
-
-    klass = util_get_class content, 'mFoo'
-    assert_equal "   this is the Foo module\n   ", klass.comment
-  end
-
-  def test_do_classes_module_under
-    content = <<-EOF
-/* Document-module: Kernel::Foo
- * this is the Foo module under Kernel
- */
-VALUE mFoo = rb_define_module_under(rb_mKernel, "Foo");
-    EOF
-
-    klass = util_get_class content, 'mFoo'
-    assert_equal "   this is the Foo module under Kernel\n   ", klass.comment
-  end
-
-  def test_do_constants
-    content = <<-EOF
-#include <ruby.h>
-
-void Init_foo(){
-   VALUE cFoo = rb_define_class("Foo", rb_cObject);
-
-   /* 300: The highest possible score in bowling */
-   rb_define_const(cFoo, "PERFECT", INT2FIX(300));
-
-   /* Huzzah!: What you cheer when you roll a perfect game */
-   rb_define_const(cFoo, "CHEER", rb_str_new2("Huzzah!"));
-
-   /* TEST\:TEST: Checking to see if escaped semicolon works */
-   rb_define_const(cFoo, "TEST", rb_str_new2("TEST:TEST"));
-
-   /* \\: The file separator on MS Windows */
-   rb_define_const(cFoo, "MSEPARATOR", rb_str_new2("\\"));
-
-   /* /: The file separator on Unix */
-   rb_define_const(cFoo, "SEPARATOR", rb_str_new2("/"));
-
-   /* C:\\Program Files\\Stuff: A directory on MS Windows */
-   rb_define_const(cFoo, "STUFF", rb_str_new2("C:\\Program Files\\Stuff"));
-
-   /* Default definition */
-   rb_define_const(cFoo, "NOSEMI", INT2FIX(99));
-
-   rb_define_const(cFoo, "NOCOMMENT", rb_str_new2("No comment"));
-
-   /*
-    * Multiline comment goes here because this comment spans multiple lines.
-    * Multiline comment goes here because this comment spans multiple lines.
-    */
-   rb_define_const(cFoo, "MULTILINE", INT2FIX(1));
-
-   /*
-    * 1: Multiline comment goes here because this comment spans multiple lines.
-    * Multiline comment goes here because this comment spans multiple lines.
-    */
-   rb_define_const(cFoo, "MULTILINE_VALUE", INT2FIX(1));
-
-   /* Multiline comment goes here because this comment spans multiple lines.
-    * Multiline comment goes here because this comment spans multiple lines.
-    */
-   rb_define_const(cFoo, "MULTILINE_NOT_EMPTY", INT2FIX(1));
-
-}
-    EOF
-
-    parser = util_parser content
-
-    parser.do_classes
-    parser.do_constants
-
-    klass = parser.classes['cFoo']
-    assert klass
-
-    constants = klass.constants
-    assert !klass.constants.empty?
-
-    constants = constants.map { |c| [c.name, c.value, c.comment] }
-
-    assert_equal ['PERFECT', '300',
-                  "\n      The highest possible score in bowling   \n   "],
-                 constants.shift
-    assert_equal ['CHEER', 'Huzzah!',
-                  "\n      What you cheer when you roll a perfect game   \n   "],
-                 constants.shift
-    assert_equal ['TEST', 'TEST:TEST',
-                  "\n      Checking to see if escaped semicolon works   \n   "],
-                 constants.shift
-    assert_equal ['MSEPARATOR', '\\',
-                  "\n      The file separator on MS Windows   \n   "],
-                 constants.shift
-    assert_equal ['SEPARATOR', '/',
-                  "\n      The file separator on Unix   \n   "],
-                 constants.shift
-    assert_equal ['STUFF', 'C:\\Program Files\\Stuff',
-                  "\n      A directory on MS Windows   \n   "],
-                 constants.shift
-    assert_equal ['NOSEMI', 'INT2FIX(99)',
-                  "\n      Default definition   \n   "],
-                 constants.shift
-    assert_equal ['NOCOMMENT', 'rb_str_new2("No comment")', nil],
-                 constants.shift
-
-    comment = <<-EOF.chomp
-
-     
-      Multiline comment goes here because this comment spans multiple lines.
-      Multiline comment goes here because this comment spans multiple lines.
-      
-   
-    EOF
-    assert_equal ['MULTILINE', 'INT2FIX(1)', comment], constants.shift
-    assert_equal ['MULTILINE_VALUE', '1', comment], constants.shift
-
-    comment = <<-EOF.chomp
-
-      Multiline comment goes here because this comment spans multiple lines.
-      Multiline comment goes here because this comment spans multiple lines.
-      
-   
-    EOF
-    assert_equal ['MULTILINE_NOT_EMPTY', 'INT2FIX(1)', comment], constants.shift
-
-    assert constants.empty?, constants.inspect
-  end
-
-  def test_find_class_comment_init
-    content = <<-EOF
-/*
- * a comment for class Foo
- */
-void
-Init_Foo(void) {
-  VALUE foo = rb_define_class("Foo", rb_cObject);
-}
-    EOF
-
-    klass = util_get_class content, 'foo'
-
-    assert_equal "  \n   a comment for class Foo\n   \n", klass.comment
-  end
-
-  def test_find_class_comment_define_class
-    content = <<-EOF
-/*
- * a comment for class Foo
- */
-VALUE foo = rb_define_class("Foo", rb_cObject);
-    EOF
-
-    klass = util_get_class content, 'foo'
-
-    assert_equal "  \n   a comment for class Foo\n   ", klass.comment
-  end
-
-  def test_find_class_comment_define_class
-    content = <<-EOF
-/*
- * a comment for class Foo on Init
- */
-void
-Init_Foo(void) {
-    /*
-     * a comment for class Foo on rb_define_class
-     */
-    VALUE foo = rb_define_class("Foo", rb_cObject);
-}
-    EOF
-
-    klass = util_get_class content, 'foo'
-
-    assert_equal "  \n   a comment for class Foo on Init\n   \n", klass.comment
-  end
-
-  def util_get_class(content, name)
-    parser = util_parser content
-    parser.do_classes
-    parser.classes[name]
-  end
-
-  def util_parser(content)
-    parser = RDoc::C_Parser.new @top_level, @fn, content, @options, @stats
-    parser.progress = @progress
-    parser
-  end
-
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/readline/test_readline.rb b/ruby/doc/ruby/ruby-1.8.7/test/readline/test_readline.rb
deleted file mode 100644 (file)
index edc3aa0..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-begin
-  require "readline"
-rescue LoadError
-end
-
-if defined?(Readline) && !/EditLine/n.match(Readline::VERSION)
-
-require "test/unit"
-require "tempfile"
-
-class TestReadline < Test::Unit::TestCase
-  def test_readline
-    stdin = Tempfile.new("test_readline_stdin")
-    stdout = Tempfile.new("test_readline_stdout")
-    begin
-      stdin.write("hello\n")
-      stdin.close
-      stdout.close
-      line = replace_stdio(stdin.path, stdout.path) {
-        Readline.readline("> ", true)
-      }
-      assert_equal("hello", line)
-      assert_equal(true, line.tainted?)
-      stdout.open
-      assert_equal("> ", stdout.read(2))
-      assert_equal(1, Readline::HISTORY.length)
-      assert_equal("hello", Readline::HISTORY[0])
-      assert_raises(SecurityError) do
-        Thread.start {
-          $SAFE = 1
-          replace_stdio(stdin.path, stdout.path) do
-            Readline.readline("> ".taint)
-          end
-        }.join
-      end
-      assert_raises(SecurityError) do
-        Thread.start {
-          $SAFE = 4
-          replace_stdio(stdin.path, stdout.path) { Readline.readline("> ") }
-        }.join
-      end
-    ensure
-      stdin.close(true)
-      stdout.close(true)
-    end
-  end
-
-  def test_completion_append_character
-    begin
-      Readline.completion_append_character = "x"
-      assert_equal("x", Readline.completion_append_character)
-      Readline.completion_append_character = "xyz"
-      assert_equal("x", Readline.completion_append_character)
-      Readline.completion_append_character = nil
-      assert_equal(nil, Readline.completion_append_character)
-      Readline.completion_append_character = ""
-      assert_equal(nil, Readline.completion_append_character)
-    rescue NotImplementedError
-    end
-  end
-
-  private
-
-  def replace_stdio(stdin_path, stdout_path)
-    open(stdin_path, "r"){|stdin|
-      open(stdout_path, "w"){|stdout|
-        orig_stdin = STDIN.dup
-        orig_stdout = STDOUT.dup
-        STDIN.reopen(stdin)
-        STDOUT.reopen(stdout)
-        begin
-          yield
-        ensure
-          STDIN.reopen(orig_stdin)
-          STDOUT.reopen(orig_stdout)
-          orig_stdin.close
-          orig_stdout.close
-        end
-      }
-    }
-  end
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rinda/test_rinda.rb b/ruby/doc/ruby/ruby-1.8.7/test/rinda/test_rinda.rb
deleted file mode 100644 (file)
index c0f9373..0000000
+++ /dev/null
@@ -1,542 +0,0 @@
-require 'test/unit'
-
-require 'drb/drb'
-require 'drb/eq'
-require 'rinda/tuplespace'
-
-require 'singleton'
-
-module Rinda
-
-class MockClock
-  include Singleton
-
-  class MyTS < Rinda::TupleSpace
-    def keeper_thread
-      nil
-    end
-  end
-  
-  def initialize
-    @now = 2
-    @reso = 1
-    @ts = MyTS.new
-    @ts.write([2, :now])
-    @inf = 2**31 - 1
-  end
-
-  def now
-    @now.to_f
-  end
-
-  def at(n)
-    n
-  end
-    
-  def _forward(n=nil)
-    now ,= @ts.take([nil, :now])
-    @now = now + n
-    n = @reso if n.nil?
-    @ts.write([@now, :now])
-  end
-
-  def forward(n)
-    while n > 0
-      _forward(@reso)
-      n -= @reso
-      Thread.pass
-    end
-  end
-
-  def rewind
-    now ,= @ts.take([nil, :now])
-    @ts.write([@inf, :now])
-    @ts.take([nil, :now])
-    @now = 2
-    @ts.write([2, :now])
-  end
-
-  def sleep(n=nil)
-    now ,= @ts.read([nil, :now])
-    @ts.read([(now + n)..@inf, :now])
-    0
-  end
-end
-
-module Time
-  def sleep(n)
-    @m.sleep(n)
-  end
-  module_function :sleep
-
-  def at(n)
-    n
-  end
-  module_function :at
-
-  def now
-    @m ? @m.now : 2
-  end
-  module_function :now
-
-  def rewind
-    @m.rewind
-  end
-  module_function :rewind
-
-  def forward(n)
-    @m.forward(n)
-  end
-  module_function :forward
-
-  @m = MockClock.instance
-end
-
-class TupleSpace
-  def sleep(n)
-    Time.sleep(n)
-  end
-end
-
-module TupleSpaceTestModule
-  def sleep(n)
-    if Thread.current == Thread.main
-      Time.forward(n)
-    else
-      Time.sleep(n)
-    end
-  end
-
-  def thread_join(th)
-    while th.alive?
-      Kernel.sleep(0.1)
-      sleep(1)
-    end
-    th.value
-  end
-  
-  def test_00_tuple
-    tuple = Rinda::TupleEntry.new([1,2,3])
-    assert(!tuple.canceled?)
-    assert(!tuple.expired?)
-    assert(tuple.alive?)
-  end
-
-  def test_00_template
-    tmpl = Rinda::Template.new([1,2,3])
-    assert_equal(3, tmpl.size)
-    assert_equal(3, tmpl[2])
-    assert(tmpl.match([1,2,3]))
-    assert(!tmpl.match([1,nil,3]))
-
-    tmpl = Rinda::Template.new([/^rinda/i, nil, :hello])
-    assert_equal(3, tmpl.size)
-    assert(tmpl.match(['Rinda', 2, :hello]))
-    assert(!tmpl.match(['Rinda', 2, Symbol]))
-    assert(!tmpl.match([1, 2, :hello]))
-    assert(tmpl.match([/^rinda/i, 2, :hello]))
-
-    tmpl = Rinda::Template.new([Symbol])
-    assert_equal(1, tmpl.size)
-    assert(tmpl.match([:hello]))
-    assert(tmpl.match([Symbol]))
-    assert(!tmpl.match(['Symbol']))
-
-    tmpl = Rinda::Template.new({"message"=>String, "name"=>String})
-    assert_equal(2, tmpl.size)
-    assert(tmpl.match({"message"=>"Hello", "name"=>"Foo"}))
-    assert(!tmpl.match({"message"=>"Hello", "name"=>"Foo", "1"=>2}))
-    assert(!tmpl.match({"message"=>"Hi", "name"=>"Foo", "age"=>1}))
-    assert(!tmpl.match({"message"=>"Hello", "no_name"=>"Foo"}))
-
-    assert_raises(Rinda::InvalidHashTupleKey) do
-      tmpl = Rinda::Template.new({:message=>String, "name"=>String})
-    end
-    tmpl = Rinda::Template.new({"name"=>String})
-    assert_equal(1, tmpl.size)
-    assert(tmpl.match({"name"=>"Foo"}))
-    assert(!tmpl.match({"message"=>"Hello", "name"=>"Foo"}))
-    assert(!tmpl.match({"message"=>:symbol, "name"=>"Foo", "1"=>2}))
-    assert(!tmpl.match({"message"=>"Hi", "name"=>"Foo", "age"=>1}))
-    assert(!tmpl.match({"message"=>"Hello", "no_name"=>"Foo"}))
-
-    tmpl = Rinda::Template.new({"message"=>String, "name"=>String})
-    assert_equal(2, tmpl.size)
-    assert(tmpl.match({"message"=>"Hello", "name"=>"Foo"}))
-    assert(!tmpl.match({"message"=>"Hello", "name"=>"Foo", "1"=>2}))
-    assert(!tmpl.match({"message"=>"Hi", "name"=>"Foo", "age"=>1}))
-    assert(!tmpl.match({"message"=>"Hello", "no_name"=>"Foo"}))
-
-    tmpl = Rinda::Template.new({"message"=>String})
-    assert_equal(1, tmpl.size)
-    assert(tmpl.match({"message"=>"Hello"}))
-    assert(!tmpl.match({"message"=>"Hello", "name"=>"Foo"}))
-    assert(!tmpl.match({"message"=>"Hello", "name"=>"Foo", "1"=>2}))
-    assert(!tmpl.match({"message"=>"Hi", "name"=>"Foo", "age"=>1}))
-    assert(!tmpl.match({"message"=>"Hello", "no_name"=>"Foo"}))
-
-    tmpl = Rinda::Template.new({"message"=>String, "name"=>nil})
-    assert_equal(2, tmpl.size)
-    assert(tmpl.match({"message"=>"Hello", "name"=>"Foo"}))
-    assert(!tmpl.match({"message"=>"Hello", "name"=>"Foo", "1"=>2}))
-    assert(!tmpl.match({"message"=>"Hi", "name"=>"Foo", "age"=>1}))
-    assert(!tmpl.match({"message"=>"Hello", "no_name"=>"Foo"}))
-
-    assert_raises(Rinda::InvalidHashTupleKey) do
-      @ts.write({:message=>String, "name"=>String})
-    end
-
-    @ts.write([1, 2, 3])
-    assert_equal([1, 2, 3], @ts.take([1, 2, 3]))
-
-    @ts.write({'1'=>1, '2'=>2, '3'=>3})
-    assert_equal({'1'=>1, '2'=>2, '3'=>3}, @ts.take({'1'=>1, '2'=>2, '3'=>3}))
-
-    entry = @ts.write(['1'=>1, '2'=>2, '3'=>3])
-    assert_raises(Rinda::RequestExpiredError) do
-      assert_equal({'1'=>1, '2'=>2, '3'=>3}, @ts.read({'1'=>1}, 0))
-    end
-    entry.cancel
-  end
-
-  def test_00_DRbObject
-    ro = DRbObject.new(nil, "druby://host:1234")
-    tmpl = Rinda::DRbObjectTemplate.new
-    assert(tmpl === ro)
-
-    tmpl = Rinda::DRbObjectTemplate.new("druby://host:1234")
-    assert(tmpl === ro)
-
-    tmpl = Rinda::DRbObjectTemplate.new("druby://host:12345")
-    assert(!(tmpl === ro))
-
-    tmpl = Rinda::DRbObjectTemplate.new(/^druby:\/\/host:/)
-    assert(tmpl === ro)
-
-    ro = DRbObject.new_with(12345, 1234)
-    assert(!(tmpl === ro))
-
-    ro = DRbObject.new_with("druby://foo:12345", 1234)
-    assert(!(tmpl === ro))
-
-    tmpl = Rinda::DRbObjectTemplate.new(/^druby:\/\/(foo|bar):/)
-    assert(tmpl === ro)
-
-    ro = DRbObject.new_with("druby://bar:12345", 1234)
-    assert(tmpl === ro)
-
-    ro = DRbObject.new_with("druby://baz:12345", 1234)
-    assert(!(tmpl === ro))
-  end
-
-  def test_inp_rdp
-    assert_raises(Rinda::RequestExpiredError) do
-      @ts.take([:empty], 0)
-    end
-
-    assert_raises(Rinda::RequestExpiredError) do
-      @ts.read([:empty], 0)
-    end
-  end
-
-  def test_ruby_talk_264062
-    th = Thread.new { @ts.take([:empty], 1) }
-    sleep(10)
-    assert_raises(Rinda::RequestExpiredError) do
-      thread_join(th)
-    end
-
-    th = Thread.new { @ts.read([:empty], 1) }
-    sleep(10)
-    assert_raises(Rinda::RequestExpiredError) do
-      thread_join(th)
-    end
-  end
-
-  def test_symbol_tuple
-    @ts.write([:symbol, :symbol])
-    @ts.write(['string', :string])
-    assert_equal([[:symbol, :symbol]], @ts.read_all([:symbol, nil]))
-    assert_equal([[:symbol, :symbol]], @ts.read_all([Symbol, nil]))
-    assert_equal([], @ts.read_all([:nil, nil]))
-  end
-
-  def test_core_01
-    5.times do |n|
-      @ts.write([:req, 2])
-    end
-
-    assert_equal([[:req, 2], [:req, 2], [:req, 2], [:req, 2], [:req, 2]],
-                @ts.read_all([nil, nil]))
-
-    taker = Thread.new do
-      s = 0
-      while true
-       begin
-         tuple = @ts.take([:req, Integer], 1)
-         assert_equal(2, tuple[1])
-         s += tuple[1]
-       rescue Rinda::RequestExpiredError
-         break
-       end
-      end
-      @ts.write([:ans, s])
-      s
-    end
-    
-    assert_equal(10, thread_join(taker))
-    tuple = @ts.take([:ans, nil])
-    assert_equal(10, tuple[1])
-  end
-
-  def test_core_02
-    taker = Thread.new do
-      s = 0
-      while true
-       begin
-         tuple = @ts.take([:req, Integer], 1)
-         assert_equal(2, tuple[1])
-         s += tuple[1]
-       rescue Rinda::RequestExpiredError
-         break
-       end
-      end
-      @ts.write([:ans, s])
-      s
-    end
-
-    5.times do |n|
-      @ts.write([:req, 2])
-    end
-
-    assert_equal(10, thread_join(taker))
-    tuple = @ts.take([:ans, nil])
-    assert_equal(10, tuple[1])
-    assert_equal([], @ts.read_all([nil, nil]))
-  end
-  
-  def test_core_03_notify
-    notify1 = @ts.notify(nil, [:req, Integer])
-    notify2 = @ts.notify(nil, [:ans, Integer], 5)
-    notify3 = @ts.notify(nil, {"message"=>String, "name"=>String}, 5)
-
-    @ts.write({"message"=>"first", "name"=>"3"}, 3)
-    @ts.write({"message"=>"second", "name"=>"1"}, 1)
-    @ts.write({"message"=>"third", "name"=>"0"})
-    @ts.take({"message"=>"third", "name"=>"0"})
-
-    listener1 = Thread.new do
-      lv = 0
-      n = 0
-      notify1.each  do |ev, tuple|
-       n += 1
-       if ev == 'write'
-         lv = lv + 1
-       elsif ev == 'take'
-         lv = lv - 1
-       else
-         break
-       end
-       assert(lv >= 0)
-       assert_equal([:req, 2], tuple)
-      end
-      [lv, n]
-    end
-
-    listener2 = Thread.new do
-      result = nil
-      lv = 0
-      n = 0
-      notify2.each  do |ev|
-       n += 1
-       if ev[0] == 'write'
-         lv = lv + 1
-       elsif ev[0] == 'take'
-         lv = lv - 1
-       elsif ev[0] == 'close'
-         result = [lv, n]
-       else
-         break
-       end
-       assert(lv >= 0)
-       assert_equal([:ans, 10], ev[1])
-      end
-      result
-    end
-
-    taker = Thread.new do
-      s = 0
-      while true
-       begin
-         tuple = @ts.take([:req, Integer], 1)
-         s += tuple[1]
-       rescue Rinda::RequestExpiredError
-         break
-       end
-      end
-      @ts.write([:ans, s])
-      s
-    end
-
-    5.times do |n|
-      @ts.write([:req, 2])
-    end
-
-    @ts.take({"message"=>"first", "name"=>"3"})
-
-    sleep(4)
-    assert_equal(10, thread_join(taker))
-    tuple = @ts.take([:ans, nil])
-    assert_equal(10, tuple[1])
-    assert_equal([], @ts.read_all([nil, nil]))
-    
-    notify1.cancel
-    sleep(3) # notify2 expired
-    
-    assert_equal([0, 11], thread_join(listener1))
-    assert_equal([0, 3], thread_join(listener2))
-
-    ary = []
-    ary.push(["write", {"message"=>"first", "name"=>"3"}])
-    ary.push(["write", {"message"=>"second", "name"=>"1"}])
-    ary.push(["write", {"message"=>"third", "name"=>"0"}])
-    ary.push(["take", {"message"=>"third", "name"=>"0"}])
-    ary.push(["take", {"message"=>"first", "name"=>"3"}])
-    ary.push(["delete", {"message"=>"second", "name"=>"1"}])
-    ary.push(["close"])
-
-    notify3.each do |ev|
-      assert_equal(ary.shift, ev)
-    end
-    assert_equal([], ary)
-  end
-
-  def test_cancel_01
-    entry = @ts.write([:removeme, 1])
-    assert_equal([[:removeme, 1]], @ts.read_all([nil, nil]))
-    entry.cancel
-    assert_equal([], @ts.read_all([nil, nil]))
-    
-    template = nil
-    taker = Thread.new do
-      @ts.take([:take, nil], 10) do |template|
-       Thread.new do
-         template.cancel
-       end
-      end
-    end
-    
-    sleep(2)
-
-    assert_raises(Rinda::RequestCanceledError) do
-      assert_nil(thread_join(taker))
-    end
-
-    assert(template.canceled?)
-    
-    @ts.write([:take, 1])
-
-    assert_equal([[:take, 1]], @ts.read_all([nil, nil]))
-  end
-
-  def test_cancel_02
-    entry = @ts.write([:removeme, 1])
-    assert_equal([[:removeme, 1]], @ts.read_all([nil, nil]))
-    entry.cancel
-    assert_equal([], @ts.read_all([nil, nil]))
-
-    template = nil
-    reader = Thread.new do
-      @ts.read([:take, nil], 10) do |template|
-       Thread.new do
-         template.cancel
-       end
-      end
-    end
-
-    sleep(2)
-
-    assert_raises(Rinda::RequestCanceledError) do
-      assert_nil(thread_join(reader))
-    end
-
-    assert(template.canceled?)
-    
-    @ts.write([:take, 1])
-
-    assert_equal([[:take, 1]], @ts.read_all([nil, nil]))
-  end
-
-  class SimpleRenewer
-    def initialize(sec, n = 1)
-      @sec = sec
-      @n = n
-    end
-    
-    def renew
-      return -1 if @n <= 0
-      @n -= 1
-      return @sec
-    end
-  end
-
-  def test_00_renewer
-    tuple = Rinda::TupleEntry.new([1,2,3], true)
-    assert(!tuple.canceled?)
-    assert(tuple.expired?)
-    assert(!tuple.alive?)
-    
-    tuple = Rinda::TupleEntry.new([1,2,3], 1)
-    assert(!tuple.canceled?)
-    assert(!tuple.expired?)
-    assert(tuple.alive?)
-    sleep(2)
-    assert(tuple.expired?)
-    assert(!tuple.alive?)
-
-    @renewer = SimpleRenewer.new(1,2)
-    tuple = Rinda::TupleEntry.new([1,2,3], @renewer)
-    assert(!tuple.canceled?)
-    assert(!tuple.expired?)
-    assert(tuple.alive?)
-    sleep(1)
-    assert(!tuple.canceled?)
-    assert(!tuple.expired?)
-    assert(tuple.alive?)
-    sleep(2)
-    assert(tuple.expired?)
-    assert(!tuple.alive?)
-  end
-end
-
-class TupleSpaceTest < Test::Unit::TestCase
-  include TupleSpaceTestModule
-
-  def setup
-    ThreadGroup.new.add(Thread.current)
-    @ts = Rinda::TupleSpace.new(1)
-  end
-end
-
-class TupleSpaceProxyTest < Test::Unit::TestCase
-  include TupleSpaceTestModule
-
-  def setup
-    ThreadGroup.new.add(Thread.current)
-    @ts_base = Rinda::TupleSpace.new(1)
-    @ts = Rinda::TupleSpaceProxy.new(@ts_base)
-  end
-
-  def test_remote_array_and_hash
-    @ts.write(DRbObject.new([1, 2, 3]))
-    assert_equal([1, 2, 3], @ts.take([1, 2, 3], 0))
-    @ts.write(DRbObject.new({'head' => 1, 'tail' => 2}))
-    assert_equal({'head' => 1, 'tail' => 2},
-                 @ts.take({'head' => 1, 'tail' => 2}, 0))
-  end
-
-  @server = DRb.primary_server || DRb.start_service
-end
-
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/rss-assertions.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/rss-assertions.rb
deleted file mode 100644 (file)
index 41e6cd6..0000000
+++ /dev/null
@@ -1,2074 +0,0 @@
-require 'erb'
-
-module RSS
-  module Assertions
-    def assert_parse(rss, assert_method, *args)
-      __send__("assert_#{assert_method}", *args) do
-        ::RSS::Parser.parse(rss)
-      end
-      __send__("assert_#{assert_method}", *args) do
-        ::RSS::Parser.parse(rss, false).validate
-      end
-    end
-    
-    def assert_ns(prefix, uri)
-      _wrap_assertion do
-        begin
-          yield
-          flunk("Not raise NSError")
-        rescue ::RSS::NSError => e
-          assert_equal(prefix, e.prefix)
-          assert_equal(uri, e.uri)
-        end
-      end
-    end
-    
-    def assert_missing_tag(tag, parent)
-      _wrap_assertion do
-        begin
-          yield
-          flunk("Not raise MissingTagError")
-        rescue ::RSS::MissingTagError => e
-          assert_equal(tag, e.tag)
-          assert_equal(parent, e.parent)
-        end
-      end
-    end
-    
-    def assert_too_much_tag(tag, parent)
-      _wrap_assertion do
-        begin
-          yield
-          flunk("Not raise TooMuchTagError")
-        rescue ::RSS::TooMuchTagError => e
-          assert_equal(tag, e.tag)
-          assert_equal(parent, e.parent)
-        end
-      end
-    end
-    
-    def assert_missing_attribute(tag, attrname)
-      _wrap_assertion do
-        begin
-          yield
-          flunk("Not raise MissingAttributeError")
-        rescue ::RSS::MissingAttributeError => e
-          assert_equal(tag, e.tag)
-          assert_equal(attrname, e.attribute)
-        end
-      end
-    end
-    
-    def assert_not_expected_tag(tag, uri, parent)
-      _wrap_assertion do
-        begin
-          yield
-          flunk("Not raise NotExpectedTagError")
-        rescue ::RSS::NotExpectedTagError => e
-          assert_equal(tag, e.tag)
-          assert_equal(uri, e.uri)
-          assert_equal(parent, e.parent)
-        end
-      end
-    end
-    
-    def assert_not_available_value(tag, value, attribute=nil)
-      _wrap_assertion do
-        begin
-          yield
-          flunk("Not raise NotAvailableValueError")
-        rescue ::RSS::NotAvailableValueError => e
-          assert_equal(tag, e.tag)
-          assert_equal(value, e.value)
-          assert_equal(attribute, e.attribute)
-        end
-      end
-    end
-
-    def assert_not_set_error(name, variables)
-      _wrap_assertion do
-        begin
-          yield
-          flunk("Not raise NotSetError")
-        rescue ::RSS::NotSetError => e
-          assert_equal(name, e.name)
-          assert_kind_of(Array, variables)
-          assert_equal(variables.sort, e.variables.sort)
-        end
-      end
-    end
-    
-    def assert_xml_declaration(version, encoding, standalone, rss)
-      _wrap_assertion do
-        assert_equal(version, rss.version)
-        assert_equal(encoding, rss.encoding)
-        assert_equal(standalone, rss.standalone)
-      end
-    end
-    
-    def assert_xml_stylesheet_attrs(attrs, xsl)
-      _wrap_assertion do
-        n_attrs = normalized_attrs(attrs)
-        ::RSS::XMLStyleSheet::ATTRIBUTES.each do |name|
-          assert_equal(n_attrs[name], xsl.__send__(name))
-        end
-      end
-    end
-    
-    def assert_xml_stylesheet(target, attrs, xsl)
-      _wrap_assertion do
-        if attrs.has_key?(:href)
-          if !attrs.has_key?(:type) and attrs.has_key?(:guess_type)
-            attrs[:type] = attrs[:guess_type]
-          end
-          assert_equal("xml-stylesheet", target)
-          assert_xml_stylesheet_attrs(attrs, xsl)
-        else
-          assert_nil(target)
-          assert_equal("", xsl.to_s)
-        end
-      end
-    end
-    
-    def assert_xml_stylesheet_pis(attrs_ary, rss=nil)
-      _wrap_assertion do
-        if rss.nil?
-          rss = ::RSS::RDF.new
-          setup_rss10(rss)
-        end
-        xss_strs = []
-        attrs_ary.each do |attrs|
-          xss = ::RSS::XMLStyleSheet.new(attrs)
-          xss_strs.push(xss.to_s)
-          rss.xml_stylesheets.push(xss)
-        end
-        pi_str = rss.to_s.gsub(/<\?xml .*\n/, "").gsub(/\s*<[^\?].*\z/m, "")
-        assert_equal(xss_strs.join("\n"), pi_str)
-      end
-    end
-
-    def assert_xml_stylesheets(attrs, xss)
-      _wrap_assertion do
-        xss.each_with_index do |xs, i|
-          assert_xml_stylesheet_attrs(attrs[i], xs)
-        end
-      end
-    end
-
-
-    def assert_atom_person(tag_name, generator)
-      _wrap_assertion do
-        name = "Mark Pilgrim"
-        uri = "http://example.org/"
-        email = "f8dy@example.com"
-
-        assert_parse(generator.call(<<-EOA), :missing_tag, "name", tag_name)
-  <#{tag_name}/>
-EOA
-
-        assert_parse(generator.call(<<-EOA), :missing_tag, "name", tag_name)
-  <#{tag_name}>
-    <uri>#{uri}</uri>
-    <email>#{email}</email>
-  </#{tag_name}>
-EOA
-
-        assert_parse(generator.call(<<-EOA), :nothing_raised)
-  <#{tag_name}>
-    <name>#{name}</name>
-  </#{tag_name}>
-EOA
-
-        feed = RSS::Parser.parse(generator.call(<<-EOA))
-  <#{tag_name}>
-    <name>#{name}</name>
-    <uri>#{uri}</uri>
-    <email>#{email}</email>
-  </#{tag_name}>
-EOA
-
-        person = yield(feed)
-        assert_not_nil(person)
-        assert_equal(name, person.name.content)
-        assert_equal(uri, person.uri.content)
-        assert_equal(email, person.email.content)
-      end
-    end
-
-    def assert_atom_category(generator)
-      _wrap_assertion do
-        term = "Music"
-        scheme = "http://xmlns.com/wordnet/1.6/"
-        label = "music"
-
-        missing_args = [:missing_attribute, "category", "term"]
-        assert_parse(generator.call(<<-EOA), *missing_args)
-  <category/>
-EOA
-
-        assert_parse(generator.call(<<-EOA), *missing_args)
-  <category scheme="#{scheme}" label="#{label}"/>
-EOA
-
-        assert_parse(generator.call(<<-EOA), :nothing_raised)
-  <category term="#{term}"/>
-EOA
-
-      feed = RSS::Parser.parse(generator.call(<<-EOA))
-  <category term="#{term}" scheme="#{scheme}" label="#{label}"/>
-EOA
-
-        category = yield(feed)
-        assert_not_nil(category)
-        assert_equal(term, category.term)
-        assert_equal(scheme, category.scheme)
-        assert_equal(label, category.label)
-      end
-    end
-
-    def assert_atom_link(generator)
-      _wrap_assertion do
-        href = "http://example.org/feed.atom"
-        rel = "self"
-        type = "application/atom+xml"
-        hreflang = "en"
-        title = "Atom"
-        length = "1024"
-
-        assert_parse(generator.call(<<-EOA), :missing_attribute, "link", "href")
-  <link/>
-EOA
-
-        assert_parse(generator.call(<<-EOA), :missing_attribute, "link", "href")
-  <link rel="#{rel}" type="#{type}" hreflang="#{hreflang}"
-        title="#{title}" length="#{length}"/>
-EOA
-
-        assert_parse(generator.call(<<-EOA), :nothing_raised)
-  <link href="#{href}"/>
-EOA
-
-        feed = RSS::Parser.parse(generator.call(<<-EOA))
-  <link href="#{href}" rel="#{rel}" type="#{type}" hreflang="#{hreflang}"
-        title="#{title}" length="#{length}"/>
-EOA
-
-        link = yield(feed)
-        assert_not_nil(link)
-        assert_equal(href, link.href)
-        assert_equal(rel, link.rel)
-        assert_equal(type, link.type)
-        assert_equal(hreflang, link.hreflang)
-        assert_equal(title, link.title)
-        assert_equal(length, link.length)
-
-
-        href = "http://example.org/index.html.ja"
-        parent = link.parent.tag_name
-        return if parent == "source"
-
-        optional_attributes = %w(hreflang="ja" type="text/html")
-        0.upto(optional_attributes.size) do |i|
-          combination(optional_attributes, i).each do |attributes|
-            attrs = attributes.join(" ")
-            assert_parse(generator.call(<<-EOA), :too_much_tag, "link", parent)
-  <link rel="alternate" #{attrs} href="#{href}"/>
-  <link rel="alternate" #{attrs} href="#{href}"/>
-EOA
-          end
-        end
-      end
-    end
-
-    def assert_atom_generator(generator)
-      _wrap_assertion do
-        uri = "http://www.example.com/"
-        version = "1.0"
-        content = "Example Toolkit"
-
-        assert_parse(generator.call(<<-EOA), :nothing_raised)
-  <generator/>
-EOA
-
-        assert_parse(generator.call(<<-EOA), :nothing_raised)
-  <generator uri="#{uri}" version="#{version}"/>
-EOA
-
-        feed = RSS::Parser.parse(generator.call(<<-EOA))
-  <generator uri="#{uri}" version="#{version}">#{content}</generator>
-EOA
-
-        gen = yield(feed)
-        assert_not_nil(gen)
-        assert_equal(uri, gen.uri)
-        assert_equal(version, gen.version)
-        assert_equal(content, gen.content)
-      end
-    end
-
-    def assert_atom_icon(generator)
-      _wrap_assertion do
-        content = "http://www.example.com/example.png"
-
-        assert_parse(generator.call(<<-EOA), :nothing_raised)
-  <icon/>
-EOA
-
-        feed = RSS::Parser.parse(generator.call(<<-EOA))
-  <icon>#{content}</icon>
-EOA
-
-        icon = yield(feed)
-        assert_not_nil(icon)
-        assert_equal(content, icon.content)
-      end
-    end
-
-    def assert_atom_text_construct(tag_name, generator)
-      _wrap_assertion do
-        [nil, "text", "html"].each do |type|
-          attr = ""
-          attr = " type=\"#{type}\""if type
-          assert_parse(generator.call(<<-EOA), :nothing_raised)
-  <#{tag_name}#{attr}/>
-EOA
-        end
-
-        assert_parse(generator.call(<<-EOA), :missing_tag, "div", tag_name)
-  <#{tag_name} type="xhtml"/>
-EOA
-
-        args = ["x", Atom::URI, tag_name]
-        assert_parse(generator.call(<<-EOA), :not_expected_tag, *args)
-  <#{tag_name} type="xhtml"><x/></#{tag_name}>
-EOA
-
-        invalid_value = "invalid"
-        args = ["type", invalid_value]
-        assert_parse(generator.call(<<-EOA), :not_available_value, *args)
-  <#{tag_name} type="#{invalid_value}"/>
-EOA
-
-        [
-         [nil, "A lot of effort went into making this effortless"],
-         ["text", "A lot of effort went into making this effortless"],
-         ["html", "A <em>lot</em> of effort went into making this effortless"],
-        ].each do |type, content|
-          attr = ""
-          attr = " type=\"#{type}\"" if type
-          feed = RSS::Parser.parse(generator.call(<<-EOA))
-  <#{tag_name}#{attr}>#{h content}</#{tag_name}>
-EOA
-
-          element = yield(feed)
-          assert_not_nil(element)
-          assert_equal(type, element.type)
-          assert_equal(content, element.content)
-        end
-
-        [false, true].each do |with_space|
-          xhtml_uri = "http://www.w3.org/1999/xhtml"
-          xhtml_content = "<div xmlns=\"#{xhtml_uri}\">abc</div>"
-          xhtml_element = RSS::XML::Element.new("div", nil, xhtml_uri,
-                                                {"xmlns" => xhtml_uri},
-                                                ["abc"])
-          content = xhtml_content
-          content = "  #{content}  " if with_space
-          feed = RSS::Parser.parse(generator.call(<<-EOA))
-  <#{tag_name} type="xhtml">#{content}</#{tag_name}>
-EOA
-
-          element = yield(feed)
-          assert_not_nil(element)
-          assert_equal("xhtml", element.type)
-          assert_equal(xhtml_content, element.content)
-          assert_equal(xhtml_element, element.xhtml)
-        end
-      end
-    end
-
-    def assert_atom_date_construct(tag_name, generator)
-      _wrap_assertion do
-        args = [tag_name, ""]
-        assert_parse(generator.call(<<-EOR), :not_available_value, *args)
-  <#{tag_name}/>
-EOR
-
-        [
-         ["xxx", false],
-         ["2007", false],
-         ["2007/02/09", true],
-        ].each do |invalid_value, can_parse|
-          assert_not_available_value(tag_name, invalid_value) do
-            RSS::Parser.parse(generator.call(<<-EOR))
-  <#{tag_name}>#{invalid_value}</#{tag_name}>
-EOR
-          end
-
-          feed = RSS::Parser.parse(generator.call(<<-EOR), false)
-  <#{tag_name}>#{invalid_value}</#{tag_name}>
-EOR
-          value = yield(feed).content
-          if can_parse
-            assert_equal(Time.parse(invalid_value), value)
-          else
-            assert_nil(value)
-          end
-        end
-
-        [
-         "2003-12-13T18:30:02Z",
-         "2003-12-13T18:30:02.25Z",
-         "2003-12-13T18:30:02+01:00",
-         "2003-12-13T18:30:02.25+01:00",
-        ].each do |valid_value|
-          assert_parse(generator.call(<<-EOR), :nothing_raised)
-  <#{tag_name}>#{valid_value}</#{tag_name}>
-EOR
-
-          feed = RSS::Parser.parse(generator.call(<<-EOR))
-  <#{tag_name}>#{valid_value}</#{tag_name}>
-EOR
-          assert_equal(Time.parse(valid_value), yield(feed).content)
-        end
-      end
-    end
-
-    def assert_atom_logo(generator)
-      _wrap_assertion do
-        content = "http://www.example.com/example.png"
-
-        assert_parse(generator.call(<<-EOA), :nothing_raised)
-  <logo/>
-EOA
-
-        feed = RSS::Parser.parse(generator.call(<<-EOA))
-  <logo>#{content}</logo>
-EOA
-
-        logo = yield(feed)
-        assert_not_nil(logo)
-        assert_equal(content, logo.content)
-      end
-    end
-
-    def assert_atom_content(generator, &getter)
-      _wrap_assertion do
-        assert_atom_content_inline_text(generator, &getter)
-        assert_atom_content_inline_xhtml(generator, &getter)
-        assert_atom_content_inline_other(generator, &getter)
-        assert_atom_content_out_of_line(generator, &getter)
-      end
-    end
-
-    def assert_atom_content_inline_text(generator)
-      _wrap_assertion do
-        [nil, "text", "html"].each do |type|
-          content = "<content"
-          content << " type='#{type}'" if type
-
-          suffix = "/>"
-          assert_parse(generator.call(content + suffix), :nothing_raised)
-          suffix = ">xxx</content>"
-          assert_parse(generator.call(content + suffix), :nothing_raised)
-        end
-
-        [
-         ["text", "sample content"],
-         ["text/plain", "sample content"],
-         ["html", "<em>sample</em> content"]
-        ].each do |type, content_content|
-          feed = RSS::Parser.parse(generator.call(<<-EOA))
-  <content type="#{type}">#{h content_content}</content>
-EOA
-          content = yield(feed)
-          assert_equal(type, content.type)
-          if %w(text html).include?(type)
-            assert(content.inline_text?)
-          else
-            assert(!content.inline_text?)
-          end
-          if type == "html"
-            assert(content.inline_html?)
-          else
-            assert(!content.inline_html?)
-          end
-          assert(!content.inline_xhtml?)
-          if type == "text/plain"
-            assert(content.inline_other?)
-            assert(content.inline_other_text?)
-          else
-            assert(!content.inline_other?)
-            assert(!content.inline_other_text?)
-          end
-          assert(!content.inline_other_xml?)
-          assert(!content.inline_other_base64?)
-          assert(!content.out_of_line?)
-          assert(!content.have_xml_content?)
-          assert_equal(content_content, content.content)
-        end
-      end
-    end
-
-    def assert_atom_content_inline_xhtml(generator)
-      _wrap_assertion do
-        args = ["div", "content"]
-        assert_parse(generator.call(<<-EOA), :missing_tag, *args)
-  <content type="xhtml"/>
-EOA
-
-        args = ["x", Atom::URI, "content"]
-        assert_parse(generator.call(<<-EOA), :not_expected_tag, *args)
-  <content type="xhtml"><x/></content>
-EOA
-
-        xhtml_uri = "http://www.w3.org/1999/xhtml"
-        xhtml_content = "<div xmlns=\"#{xhtml_uri}\">abc</div>"
-        xhtml_element = RSS::XML::Element.new("div", nil, xhtml_uri,
-                                              {"xmlns" => xhtml_uri},
-                                              ["abc"])
-        feed = RSS::Parser.parse(generator.call(<<-EOA))
-  <content type="xhtml">#{xhtml_content}</content>
-EOA
-
-        content = yield(feed)
-        assert_not_nil(content)
-        assert_equal("xhtml", content.type)
-        assert(!content.inline_text?)
-        assert(!content.inline_html?)
-        assert(content.inline_xhtml?)
-        assert(!content.inline_other?)
-        assert(!content.inline_other_text?)
-        assert(!content.inline_other_xml?)
-        assert(!content.inline_other_base64?)
-        assert(!content.out_of_line?)
-        assert(content.have_xml_content?)
-        assert_equal(xhtml_content, content.content)
-        assert_equal(xhtml_element, content.xhtml)
-      end
-    end
-
-    def assert_atom_content_inline_other(generator, &getter)
-      _wrap_assertion do
-        assert_atom_content_inline_other_text(generator, &getter)
-        assert_atom_content_inline_other_xml(generator, &getter)
-      end
-    end
-
-    def assert_atom_content_inline_other_text(generator)
-      _wrap_assertion do
-        require "zlib"
-
-        type = "application/zip"
-        assert_parse(generator.call(<<-EOA), :nothing_raised)
-  <content type="#{type}"/>
-EOA
-
-        text = ""
-        char = "a"
-        100.times do |i|
-          text << char
-          char.succ!
-        end
-        base64_content = Base64.encode64(Zlib::Deflate.deflate(text))
-
-        [false, true].each do |with_space|
-          xml_content = base64_content
-          xml_content = "  #{base64_content}" if with_space
-          feed = RSS::Parser.parse(generator.call(<<-EOA))
-  <content type="#{type}">#{xml_content}</content>
-EOA
-
-          content = yield(feed)
-          assert_not_nil(content)
-          assert_equal(type, content.type)
-          assert(!content.inline_text?)
-          assert(!content.inline_html?)
-          assert(!content.inline_xhtml?)
-          assert(content.inline_other?)
-          assert(!content.inline_other_text?)
-          assert(!content.inline_other_xml?)
-          assert(content.inline_other_base64?)
-          assert(!content.out_of_line?)
-          assert(!content.have_xml_content?)
-          assert_equal(text, Zlib::Inflate.inflate(content.content))
-
-          xml = REXML::Document.new(content.to_s).root
-          assert_rexml_element([], {"type" => type}, base64_content, xml)
-        end
-      end
-    end
-
-    def assert_atom_content_inline_other_xml(generator)
-      _wrap_assertion do
-        type = "image/svg+xml"
-
-        assert_parse(generator.call(<<-EOA), :nothing_raised)
-  <content type="#{type}"/>
-EOA
-
-        svg_uri = "http://www.w3.org/2000/svg"
-        svg_width = "50pt"
-        svg_height = "20pt"
-        svg_version = "1.0"
-        text_x = "15"
-        text_y = "15"
-        text = "text"
-        svg_content = <<-EOS
-<svg
-   xmlns="#{svg_uri}"
-   width="#{svg_width}"
-   height="#{svg_height}"
-   version="#{svg_version}"
-><text x="#{text_x}" y="#{text_y}">#{text}</text
-></svg>
-EOS
-
-        text_element = RSS::XML::Element.new("text", nil, svg_uri,
-                                             {
-                                               "x" => text_x,
-                                               "y" => text_y,
-                                             },
-                                             [text])
-        svg_element = RSS::XML::Element.new("svg", nil, svg_uri,
-                                            {
-                                              "xmlns" => svg_uri,
-                                              "width" => svg_width,
-                                              "height" => svg_height,
-                                              "version" => svg_version,
-                                            },
-                                            [text_element])
-        feed = RSS::Parser.parse(generator.call(<<-EOA))
-  <content type="#{type}">#{svg_content}</content>
-EOA
-
-        content = yield(feed)
-        assert_not_nil(content)
-        assert_equal(type, content.type)
-        assert(!content.inline_text?)
-        assert(!content.inline_html?)
-        assert(!content.inline_xhtml?)
-        assert(content.inline_other?)
-        assert(!content.inline_other_text?)
-        assert(content.inline_other_xml?)
-        assert(!content.inline_other_base64?)
-        assert(!content.out_of_line?)
-        assert(content.have_xml_content?)
-        assert_equal(REXML::Document.new(svg_content).to_s.chomp,
-                     REXML::Document.new(content.content).to_s.chomp)
-        assert_equal(svg_element, content.xml)
-        assert_nil(content.xhtml)
-      end
-    end
-
-    def assert_atom_content_out_of_line(generator)
-      _wrap_assertion do
-        text_type = "text/plain"
-        text_src = "http://example.com/README.txt"
-
-        missing_args = [:missing_attribute, "content", "type"]
-        # RSS Parser raises error even if this is "should" not "must".
-        assert_parse(generator.call(<<-EOA), *missing_args)
-  <content src="#{text_src}"/>
-EOA
-
-        content_content = "xxx"
-        not_available_value_args = [:not_available_value,
-                                    "content", content_content]
-        assert_parse(generator.call(<<-EOA), *not_available_value_args)
-  <content type="#{text_type}" src="#{text_src}">#{content_content}</content>
-EOA
-
-        feed = RSS::Parser.parse(generator.call(<<-EOA))
-  <content type="#{text_type}" src="#{text_src}"/>
-EOA
-        content = yield(feed)
-        assert_not_nil(content)
-        assert_equal(text_type, content.type)
-        assert_equal(text_src, content.src)
-        assert(!content.inline_text?)
-        assert(!content.inline_html?)
-        assert(!content.inline_xhtml?)
-        assert(!content.inline_other?)
-        assert(!content.inline_other_text?)
-        assert(!content.inline_other_xml?)
-        assert(!content.inline_other_base64?)
-        assert(content.out_of_line?)
-        assert(!content.have_xml_content?)
-        assert_nil(content.xml)
-        assert_nil(content.xhtml)
-        assert_equal("", content.content)
-      end
-    end
-
-    def assert_atom_source(generator, &getter)
-      _wrap_assertion do
-        assert_atom_source_author(generator, &getter)
-        assert_atom_source_category(generator, &getter)
-        assert_atom_source_contributor(generator, &getter)
-        assert_atom_source_generator(generator, &getter)
-        assert_atom_source_icon(generator, &getter)
-        assert_atom_source_id(generator, &getter)
-        assert_atom_source_link(generator, &getter)
-        assert_atom_source_logo(generator, &getter)
-        assert_atom_source_rights(generator, &getter)
-        assert_atom_source_subtitle(generator, &getter)
-        assert_atom_source_title(generator, &getter)
-        assert_atom_source_updated(generator, &getter)
-      end
-    end
-
-    def assert_atom_source_author(generator)
-      assert_atom_person("author", generator) do |feed|
-        source = yield(feed)
-        assert_equal(1, source.authors.size)
-        source.author
-      end
-    end
-
-    def assert_atom_source_category(generator)
-      assert_atom_category(generator) do |feed|
-        source = yield(feed)
-        assert_equal(1, source.categories.size)
-        source.category
-      end
-    end
-
-    def assert_atom_source_contributor(generator)
-      assert_atom_person("contributor", generator) do |feed|
-        source = yield(feed)
-        assert_equal(1, source.contributors.size)
-        source.contributor
-      end
-    end
-
-    def assert_atom_source_generator(generator)
-      assert_atom_generator(generator) do |feed|
-        yield(feed).generator
-      end
-    end
-
-    def assert_atom_source_icon(generator)
-      assert_atom_icon(generator) do |feed|
-        yield(feed).icon
-      end
-    end
-
-    def assert_atom_source_id(generator)
-      id_content = "urn:uuid:a2fb588b-5674-4898-b420-265a734fea69"
-      id = "<id>#{id_content}</id>"
-      feed = RSS::Parser.parse(generator.call(id))
-      assert_equal(id_content, yield(feed).id.content)
-    end
-
-    def assert_atom_source_link(generator)
-      assert_atom_link(generator) do |feed|
-        source = yield(feed)
-        assert_equal(1, source.links.size)
-        source.link
-      end
-    end
-
-    def assert_atom_source_logo(generator)
-      assert_atom_logo(generator) do |feed|
-        yield(feed).logo
-      end
-    end
-
-    def assert_atom_source_rights(generator)
-      assert_atom_text_construct("rights", generator) do |feed|
-        yield(feed).rights
-      end
-    end
-
-    def assert_atom_source_subtitle(generator)
-      assert_atom_text_construct("subtitle", generator) do |feed|
-        yield(feed).subtitle
-      end
-    end
-
-    def assert_atom_source_title(generator)
-      assert_atom_text_construct("title", generator) do |feed|
-        yield(feed).title
-      end
-    end
-
-    def assert_atom_source_updated(generator)
-      assert_atom_date_construct("updated", generator) do |feed|
-        yield(feed).updated
-      end
-    end
-
-    def assert_dublin_core(elems, target)
-      _wrap_assertion do
-        elems.each do |name, value|
-          assert_equal(value, target.__send__("dc_#{name}"))
-        end
-      end
-    end
-    
-    def assert_multiple_dublin_core(elems, target)
-      _wrap_assertion do
-        elems.each do |name, values, plural|
-          plural ||= "#{name}s"
-          actual = target.__send__("dc_#{plural}").collect{|x| x.value}
-          assert_equal(values, actual)
-        end
-      end
-    end
-    
-    def assert_syndication(elems, target)
-      _wrap_assertion do
-        elems.each do |name, value|
-          meth = "sy_#{name}"
-          value = value.to_i if meth == "sy_updateFrequency"
-          assert_equal(value, target.__send__(meth ))
-        end
-      end
-    end
-    
-    def assert_content(elems, target)
-      _wrap_assertion do
-        elems.each do |name, value|
-          assert_equal(value, target.__send__("content_#{name}"))
-        end
-      end
-    end
-    
-    def assert_trackback(attrs, target)
-      _wrap_assertion do
-        n_attrs = normalized_attrs(attrs)
-        if n_attrs["ping"]
-          assert_equal(n_attrs["ping"], target.trackback_ping)
-        end
-        if n_attrs["abouts"]
-          n_attrs["abouts"].each_with_index do |about, i|
-            assert_equal(about, target.trackback_abouts[i].value)
-          end
-        end
-      end
-    end
-
-    def assert_taxo_topic(topics, target)
-      _wrap_assertion do
-        topics.each_with_index do |topic, i|
-          taxo_topic = target.taxo_topics[i]
-          topic.each do |name, value|
-            case name
-            when :link
-              assert_equal(value, taxo_topic.about)
-              assert_equal(value, taxo_topic.taxo_link)
-            when :topics
-              assert_equal(value, taxo_topic.taxo_topics.resources)
-            else
-              assert_equal(value, taxo_topic.__send__("dc_#{name}"))
-            end
-          end
-        end
-      end
-    end
-
-
-    def assert_attributes(attrs, names, target)
-      _wrap_assertion do
-        n_attrs = normalized_attrs(attrs)
-        names.each do |info|
-          if info.is_a?(String)
-            name = info
-            type = nil
-          else
-            name, type = info
-          end
-          value = n_attrs[name]
-          if value.is_a?(Time)
-            actual = target.__send__(name)
-            assert_instance_of(Time, actual)
-            assert_equal(value.to_i, actual.to_i)
-          elsif value
-            case type
-            when :integer
-              value = value.to_i
-            when :boolean
-              value = value == "true" if value.is_a?(String)
-            end
-            assert_equal(value, target.__send__(name))
-          end
-        end
-      end
-    end
-
-    def assert_rexml_element(children, attrs, text, element, text_type=nil)
-      _wrap_assertion do
-        if children
-          children_info = element.elements.collect {|e| [e.namespace, e.name]}
-          assert_equal(children.collect {|uri, name| [uri, name]}.sort,
-                       children_info.sort)
-        end
-        if attrs
-          assert_equal(attrs.collect {|k, v| [k, v]}.sort,
-                       element.attributes.collect {|k, v| [k, v]}.sort)
-        end
-        case text_type
-        when :time
-          assert_not_nil(element.text)
-          assert_equal(Time.parse(text).to_s, Time.parse(element.text).to_s)
-        else
-          assert_equal(text, element.text)
-        end
-      end
-    end
-
-    def _assert_maker_atom_persons(feed_type, maker_readers, feed_readers)
-      _wrap_assertion do
-        persons = []
-        feed = RSS::Maker.make("atom:#{feed_type}") do |maker|
-          yield maker
-          targets = chain_reader(maker, maker_readers)
-          targets.each do |target|
-            person = {
-              :name => target.name,
-              :uri => target.uri,
-              :email => target.email,
-            }
-            persons << person if person[:name]
-          end
-        end
-
-        actual_persons = chain_reader(feed, feed_readers) || []
-        actual_persons = actual_persons.collect do |person|
-          {
-            :name => person.name ? person.name.content : nil,
-            :uri => person.uri ? person.uri.content : nil,
-            :email => person.email ? person.email.content : nil,
-          }
-        end
-        assert_equal(persons, actual_persons)
-      end
-    end
-
-    def assert_maker_atom_persons(feed_type, maker_readers, feed_readers,
-                                  not_set_error_name=nil,
-                                  parent_not_set_error_name=nil,
-                                  parent_not_set_variable=nil)
-      _wrap_assertion do
-        not_set_error_name ||= "maker.#{maker_readers.join('.')}"
-
-        args = [feed_type, maker_readers, feed_readers]
-        if parent_not_set_error_name or parent_not_set_variable
-          assert_not_set_error(parent_not_set_error_name,
-                               parent_not_set_variable) do
-            _assert_maker_atom_persons(*args) do |maker|
-              yield maker
-            end
-          end
-        else
-          _assert_maker_atom_persons(*args) do |maker|
-            yield maker
-          end
-        end
-
-        assert_not_set_error(not_set_error_name, %w(name)) do
-          _assert_maker_atom_persons(feed_type, maker_readers,
-                                     feed_readers) do |maker|
-            yield maker
-            targets = chain_reader(maker, maker_readers)
-            target = targets.new_child
-          end
-        end
-
-        assert_not_set_error(not_set_error_name, %w(name)) do
-          _assert_maker_atom_persons(feed_type, maker_readers,
-                                     feed_readers) do |maker|
-            yield maker
-            targets = chain_reader(maker, maker_readers)
-            target = targets.new_child
-            target.uri = "http://example.com/~me/"
-          end
-        end
-
-        assert_not_set_error(not_set_error_name, %w(name)) do
-          _assert_maker_atom_persons(feed_type, maker_readers,
-                                     feed_readers) do |maker|
-            yield maker
-            targets = chain_reader(maker, maker_readers)
-            target = targets.new_child
-            target.email = "me@example.com"
-          end
-        end
-
-        assert_not_set_error(not_set_error_name, %w(name)) do
-          _assert_maker_atom_persons(feed_type, maker_readers,
-                                     feed_readers) do |maker|
-            yield maker
-            targets = chain_reader(maker, maker_readers)
-            target = targets.new_child
-            target.uri = "http://example.com/~me/"
-            target.email = "me@example.com"
-          end
-        end
-
-        _assert_maker_atom_persons(feed_type, maker_readers,
-                                   feed_readers) do |maker|
-          yield maker
-          targets = chain_reader(maker, maker_readers)
-          target = targets.new_child
-          target.name = "me"
-        end
-
-        _assert_maker_atom_persons(feed_type, maker_readers,
-                                   feed_readers) do |maker|
-          yield maker
-          targets = chain_reader(maker, maker_readers)
-          target = targets.new_child
-          target.name = "me"
-          target.uri = "http://example.com/~me/"
-        end
-
-        _assert_maker_atom_persons(feed_type, maker_readers,
-                                   feed_readers) do |maker|
-          yield maker
-          targets = chain_reader(maker, maker_readers)
-          target = targets.new_child
-          target.name = "me"
-          target.email = "me@example.com"
-        end
-
-        _assert_maker_atom_persons(feed_type, maker_readers,
-                                   feed_readers) do |maker|
-          yield maker
-          targets = chain_reader(maker, maker_readers)
-          target = targets.new_child
-          target.name = "me"
-          target.uri = "http://example.com/~me/"
-          target.email = "me@example.com"
-        end
-
-        _assert_maker_atom_persons(feed_type, maker_readers,
-                                   feed_readers) do |maker|
-          yield maker
-          targets = chain_reader(maker, maker_readers)
-
-          target = targets.new_child
-          target.name = "me"
-          target.uri = "http://example.com/~me/"
-          target.email = "me@example.com"
-
-          target = targets.new_child
-          target.name = "you"
-          target.uri = "http://example.com/~you/"
-          target.email = "you@example.com"
-        end
-
-        assert_not_set_error(not_set_error_name, %w(name)) do
-          _assert_maker_atom_persons(feed_type, maker_readers,
-                                     feed_readers) do |maker|
-            yield maker
-            targets = chain_reader(maker, maker_readers)
-
-            target = targets.new_child
-            target.name = "me"
-            target.uri = "http://example.com/~me/"
-            target.email = "me@example.com"
-
-            target = targets.new_child
-          end
-        end
-      end
-    end
-
-    def _assert_maker_atom_text_construct(feed_type, maker_readers,
-                                          feed_readers, &block)
-      maker_extractor = Proc.new do |target|
-        text = {
-          :type => target.type,
-          :content => target.content,
-          :xml_content => target.xml_content,
-        }
-        if text[:type] == "xhtml"
-          if text[:xml_content]
-            xml_content = text[:xml_content]
-            xhtml_uri = "http://www.w3.org/1999/xhtml"
-            unless xml_content.is_a?(RSS::XML::Element) and
-                ["div", xhtml_uri] == [xml_content.name, xml_content.uri]
-              children = xml_content
-              children = [children] unless children.is_a?(Array)
-              xml_content = RSS::XML::Element.new("div", nil, xhtml_uri,
-                                                  {"xmlns" => xhtml_uri},
-                                                  children)
-              text[:xml_content] = xml_content
-            end
-            text
-          else
-            nil
-          end
-        else
-          text[:content] ? text : nil
-        end
-      end
-      feed_extractor = Proc.new do |target|
-        {
-          :type => target.type,
-          :content => target.content,
-          :xml_content => target.xhtml,
-        }
-      end
-      _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
-                                 maker_extractor, feed_extractor,
-                                 &block)
-    end
-
-    def assert_maker_atom_text_construct(feed_type, maker_readers, feed_readers,
-                                         parent_not_set_error_name=nil,
-                                         parent_not_set_variable=nil,
-                                         not_set_error_name=nil)
-      _wrap_assertion do
-        not_set_error_name ||= "maker.#{maker_readers.join('.')}"
-
-        args = [feed_type, maker_readers, feed_readers]
-        if parent_not_set_error_name or parent_not_set_variable
-          assert_not_set_error(parent_not_set_error_name,
-                               parent_not_set_variable) do
-            _assert_maker_atom_text_construct(*args) do |maker|
-              yield maker
-            end
-          end
-        else
-          _assert_maker_atom_text_construct(*args) do |maker|
-            yield maker
-          end
-        end
-
-        assert_not_set_error(not_set_error_name, %w(content)) do
-          _assert_maker_atom_text_construct(*args) do |maker|
-            yield maker
-            target = chain_reader(maker, maker_readers) {|x| x}
-            target.type = "text"
-          end
-        end
-
-        assert_not_set_error(not_set_error_name, %w(content)) do
-          _assert_maker_atom_text_construct(*args) do |maker|
-            yield maker
-            target = chain_reader(maker, maker_readers) {|x| x}
-            target.type = "html"
-          end
-        end
-
-        assert_not_set_error(not_set_error_name, %w(xml_content)) do
-          _assert_maker_atom_text_construct(*args) do |maker|
-            yield maker
-            target = chain_reader(maker, maker_readers) {|x| x}
-            target.type = "xhtml"
-          end
-        end
-
-        assert_not_set_error(not_set_error_name, %w(xml_content)) do
-          _assert_maker_atom_text_construct(*args) do |maker|
-            yield maker
-            target = chain_reader(maker, maker_readers) {|x| x}
-            target.type = "xhtml"
-            target.content = "Content"
-          end
-        end
-
-        _assert_maker_atom_text_construct(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers) {|x| x}
-          target.type = "text"
-          target.content = "Content"
-        end
-
-        _assert_maker_atom_text_construct(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers) {|x| x}
-          target.type = "html"
-          target.content = "<em>Content</em>"
-        end
-
-        _assert_maker_atom_text_construct(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers) {|x| x}
-          target.type = "xhtml"
-          target.xml_content = "text only"
-        end
-
-        _assert_maker_atom_text_construct(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers) {|x| x}
-          target.type = "xhtml"
-          target.xml_content = RSS::XML::Element.new("unknown")
-        end
-      end
-    end
-
-    def _assert_maker_atom_date_construct(feed_type, maker_readers,
-                                          feed_readers, &block)
-      maker_extractor = Proc.new do |target|
-        date = {
-          :content => target,
-        }
-        date[:content] ? date : nil
-      end
-      feed_extractor = Proc.new do |target|
-        {
-          :content => target.content,
-        }
-      end
-      _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
-                                 maker_extractor, feed_extractor,
-                                 &block)
-    end
-
-    def assert_maker_atom_date_construct(feed_type, maker_readers, feed_readers,
-                                         parent_not_set_error_name=nil,
-                                         parent_not_set_variable=nil)
-      _wrap_assertion do
-        args = [feed_type, maker_readers, feed_readers]
-        if parent_not_set_error_name or parent_not_set_variable
-          assert_not_set_error(parent_not_set_error_name,
-                               parent_not_set_variable) do
-            _assert_maker_atom_date_construct(*args) do |maker|
-              yield maker
-            end
-          end
-        else
-          _assert_maker_atom_date_construct(*args) do |maker|
-            yield maker
-          end
-        end
-
-        maker_readers = maker_readers.dup
-        writer = "#{maker_readers.pop}="
-        _assert_maker_atom_date_construct(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.__send__(writer, Time.now)
-        end
-      end
-    end
-
-    def _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
-                                   maker_extractor, feed_extractor)
-      _wrap_assertion do
-        element = nil
-        feed = RSS::Maker.make("atom:#{feed_type}") do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers) {|x| x}
-          element = maker_extractor.call(target)
-        end
-
-        target = chain_reader(feed, feed_readers)
-        if target
-          actual_element = feed_extractor.call(target)
-        else
-          actual_element = nil
-        end
-        assert_equal(element, actual_element)
-      end
-    end
-
-    def _assert_maker_atom_elements(feed_type, maker_readers, feed_readers,
-                                    maker_extractor, feed_extractor,
-                                    invalid_feed_checker=nil)
-      _wrap_assertion do
-        elements = []
-        invalid_feed = false
-        feed = RSS::Maker.make("atom:#{feed_type}") do |maker|
-          yield maker
-          targets = chain_reader(maker, maker_readers)
-          targets.each do |target|
-            element = maker_extractor.call(target)
-            elements << element if element
-          end
-          if invalid_feed_checker
-            invalid_feed = invalid_feed_checker.call(targets)
-          end
-        end
-
-        if invalid_feed
-          assert_nil(feed)
-        else
-          actual_elements = chain_reader(feed, feed_readers) || []
-          actual_elements = actual_elements.collect do |target|
-            feed_extractor.call(target)
-          end
-          assert_equal(elements, actual_elements)
-        end
-      end
-    end
-
-    def assert_maker_atom_element(feed_type, maker_readers, feed_readers,
-                                  setup_target, optional_variables,
-                                  required_variable, assert_method_name,
-                                  not_set_error_name=nil,
-                                  *additional_args)
-      _wrap_assertion do
-        not_set_error_name ||= "maker.#{maker_readers.join('.')}"
-
-        0.upto(optional_variables.size) do |i|
-          combination(optional_variables, i).each do |names|
-            have = {}
-            names.each do |name|
-              have[name.intern] = true
-            end
-            have_required_variable_too =
-              have.merge({required_variable.intern => true})
-
-            assert_not_set_error(not_set_error_name, [required_variable]) do
-              __send__(assert_method_name, feed_type, maker_readers,
-                       feed_readers, *additional_args) do |maker|
-                yield maker
-                target = chain_reader(maker, maker_readers) {|x| x}
-                setup_target.call(target, have)
-              end
-            end
-
-            __send__(assert_method_name, feed_type, maker_readers, feed_readers,
-                     *additional_args) do |maker|
-              yield maker
-              target = chain_reader(maker, maker_readers) {|x| x}
-              setup_target.call(target, have_required_variable_too)
-            end
-          end
-        end
-      end
-    end
-
-    def assert_maker_atom_elements(feed_type, maker_readers, feed_readers,
-                                   setup_target, optional_variables,
-                                   required_variable, assert_method_name,
-                                   not_set_error_name=nil,
-                                   *additional_args)
-      _wrap_assertion do
-        not_set_error_name ||= "maker.#{maker_readers.join('.')}"
-
-        0.upto(optional_variables.size) do |i|
-          combination(optional_variables, i).each do |names|
-            have = {}
-            names.each do |name|
-              have[name.intern] = true
-            end
-            have_required_variable_too =
-              have.merge({required_variable.intern => true})
-
-            assert_not_set_error(not_set_error_name, [required_variable]) do
-              __send__(assert_method_name, feed_type, maker_readers,
-                       feed_readers, *additional_args) do |maker|
-                yield maker
-                targets = chain_reader(maker, maker_readers)
-                setup_target.call(targets, have)
-              end
-            end
-
-            __send__(assert_method_name, feed_type, maker_readers, feed_readers,
-                     *additional_args) do |maker|
-              yield maker
-              targets = chain_reader(maker, maker_readers)
-              setup_target.call(targets, have_required_variable_too)
-            end
-
-            __send__(assert_method_name, feed_type, maker_readers, feed_readers,
-                     *additional_args) do |maker|
-              yield maker
-              targets = chain_reader(maker, maker_readers)
-              setup_target.call(targets, have_required_variable_too)
-              setup_target.call(targets, have_required_variable_too)
-            end
-
-            assert_not_set_error(not_set_error_name, [required_variable]) do
-            __send__(assert_method_name, feed_type, maker_readers, feed_readers,
-                     *additional_args) do |maker|
-                yield maker
-                targets = chain_reader(maker, maker_readers)
-                setup_target.call(targets, have_required_variable_too)
-                setup_target.call(targets, have)
-              end
-            end
-          end
-        end
-      end
-    end
-
-    def _assert_maker_atom_categories(feed_type, maker_readers,
-                                      feed_readers, &block)
-      maker_extractor = Proc.new do |target|
-        category = {
-          :term => target.term,
-          :scheme => target.scheme,
-          :label => target.label,
-        }
-        category[:term] ? category : nil
-      end
-      feed_extractor = Proc.new do |target|
-        {
-          :term => target.term,
-          :scheme => target.scheme,
-          :label => target.label,
-        }
-      end
-      _assert_maker_atom_elements(feed_type, maker_readers, feed_readers,
-                                  maker_extractor, feed_extractor, &block)
-    end
-
-    def assert_maker_atom_categories(feed_type, maker_readers, feed_readers,
-                                     not_set_error_name=nil, &block)
-      _wrap_assertion do
-        _assert_maker_atom_categories(feed_type, maker_readers,
-                                      feed_readers) do |maker|
-          yield maker
-        end
-
-        setup_target = Proc.new do |targets, have|
-          target = targets.new_child
-          target.term = "music" if have[:term]
-          target.scheme = "http://example.com/category/music" if have[:scheme]
-          target.label = "Music" if have[:label]
-        end
-
-        optional_variables = %w(scheme label)
-
-        assert_maker_atom_elements(feed_type, maker_readers, feed_readers,
-                                   setup_target, optional_variables,
-                                   "term", :_assert_maker_atom_categories,
-                                   not_set_error_name, &block)
-      end
-    end
-
-    def _assert_maker_atom_generator(feed_type, maker_readers,
-                                     feed_readers, &block)
-      maker_extractor = Proc.new do |target|
-        generator = {
-          :uri => target.uri,
-          :version => target.version,
-          :content => target.content,
-        }
-        generator[:content] ? generator : nil
-      end
-      feed_extractor = Proc.new do |target|
-        {
-          :uri => target.uri,
-          :version => target.version,
-          :content => target.content,
-        }
-      end
-      _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
-                                 maker_extractor, feed_extractor,
-                                 &block)
-     end
-
-    def assert_maker_atom_generator(feed_type, maker_readers, feed_readers,
-                                    not_set_error_name=nil, &block)
-      _wrap_assertion do
-        not_set_error_name ||= "maker.#{maker_readers.join('.')}"
-
-        _assert_maker_atom_generator(feed_type, maker_readers,
-                                     feed_readers) do |maker|
-          yield maker
-        end
-
-        setup_target = Proc.new do |target, have|
-          target.content = "RSS Maker" if have[:content]
-          target.uri = "http://example.com/rss/maker" if have[:uri]
-          target.version = "0.0.1" if have[:version]
-        end
-
-        optional_variables = %w(uri version)
-
-        assert_maker_atom_element(feed_type, maker_readers, feed_readers,
-                                  setup_target, optional_variables,
-                                  "content", :_assert_maker_atom_generator,
-                                  not_set_error_name, &block)
-      end
-    end
-
-    def _assert_maker_atom_icon(feed_type, maker_readers, feed_readers,
-                                accessor_base, &block)
-      maker_extractor = Proc.new do |target|
-        icon = {
-          :content => target.__send__(accessor_base),
-        }
-        icon[:content] ? icon : nil
-      end
-      feed_extractor = Proc.new do |target|
-        {
-          :content => target.content,
-        }
-      end
-      _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
-                                 maker_extractor, feed_extractor,
-                                 &block)
-    end
-
-    def assert_maker_atom_icon(feed_type, maker_readers, feed_readers,
-                               accessor_base=nil, not_set_error_name=nil)
-      _wrap_assertion do
-        accessor_base ||= "url"
-        not_set_error_name ||= "maker.#{maker_readers.join('.')}"
-
-        _assert_maker_atom_icon(feed_type, maker_readers, feed_readers,
-                                accessor_base) do |maker|
-          yield maker
-        end
-
-        _assert_maker_atom_icon(feed_type, maker_readers, feed_readers,
-                                accessor_base) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.__send__("#{accessor_base}=", "http://example.com/icon.png")
-        end
-      end
-    end
-
-    def _assert_maker_atom_links(feed_type, maker_readers, feed_readers,
-                                 allow_duplication=false, &block)
-      maker_extractor = Proc.new do |target|
-        link = {
-          :href => target.href,
-          :rel => target.rel,
-          :type => target.type,
-          :hreflang => target.hreflang,
-          :title => target.title,
-          :length => target.length,
-        }
-        link[:href] ? link : nil
-      end
-      feed_extractor = Proc.new do |target|
-        {
-          :href => target.href,
-          :rel => target.rel,
-          :type => target.type,
-          :hreflang => target.hreflang,
-          :title => target.title,
-          :length => target.length,
-        }
-      end
-      invalid_feed_checker = Proc.new do |targets|
-        infos = {}
-        invalid = false
-        targets.each do |target|
-          key = [target.hreflang, target.type]
-          if infos.has_key?(key)
-            invalid = true
-            break
-          end
-          infos[key] = true if target.rel.nil? or target.rel == "alternate"
-        end
-        invalid
-      end
-      invalid_feed_checker = nil if allow_duplication
-      _assert_maker_atom_elements(feed_type, maker_readers, feed_readers,
-                                  maker_extractor, feed_extractor,
-                                  invalid_feed_checker,
-                                  &block)
-    end
-
-    def assert_maker_atom_links(feed_type, maker_readers, feed_readers,
-                                not_set_error_name=nil, allow_duplication=false,
-                                &block)
-      _wrap_assertion do
-        _assert_maker_atom_links(feed_type, maker_readers,
-                                 feed_readers) do |maker|
-          yield maker
-        end
-
-        langs = %(ja en fr zh po)
-        setup_target = Proc.new do |targets, have|
-          target = targets.new_child
-          lang = langs[targets.size % langs.size]
-          target.href = "http://example.com/index.html.#{lang}" if have[:href]
-          target.rel = "alternate" if have[:rel]
-          target.type = "text/xhtml" if have[:type]
-          target.hreflang = lang if have[:hreflang]
-          target.title = "FrontPage(#{lang})" if have[:title]
-          target.length = 1024 if have[:length]
-        end
-
-        optional_variables = %w(rel type hreflang title length)
-
-        assert_maker_atom_elements(feed_type, maker_readers, feed_readers,
-                                   setup_target, optional_variables,
-                                   "href", :_assert_maker_atom_links,
-                                   not_set_error_name, allow_duplication,
-                                   &block)
-      end
-    end
-
-    def _assert_maker_atom_logo(feed_type, maker_readers, feed_readers,
-                                accessor_base, &block)
-      maker_extractor = Proc.new do |target|
-        logo = {
-          :uri => target.__send__(accessor_base),
-        }
-        logo[:uri] ? logo : nil
-      end
-      feed_extractor = Proc.new do |target|
-        {
-          :uri => target.content,
-        }
-      end
-      _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
-                                 maker_extractor, feed_extractor,
-                                 &block)
-    end
-
-    def assert_maker_atom_logo(feed_type, maker_readers, feed_readers,
-                               accessor_base=nil, not_set_error_name=nil)
-      _wrap_assertion do
-        accessor_base ||= "uri"
-        not_set_error_name ||= "maker.#{maker_readers.join('.')}"
-
-        _assert_maker_atom_logo(feed_type, maker_readers, feed_readers,
-                                accessor_base) do |maker|
-          yield maker
-        end
-
-        _assert_maker_atom_logo(feed_type, maker_readers, feed_readers,
-                                accessor_base) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.__send__("#{accessor_base}=", "http://example.com/logo.png")
-        end
-      end
-    end
-
-    def _assert_maker_atom_id(feed_type, maker_readers, feed_readers, &block)
-      maker_extractor = Proc.new do |target|
-        id = {
-          :uri => target.id,
-        }
-        id[:uri] ? id : nil
-      end
-      feed_extractor = Proc.new do |target|
-        if target.id
-          {
-            :uri => target.id.content,
-          }
-        else
-          nil
-        end
-      end
-      _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
-                                 maker_extractor, feed_extractor,
-                                 &block)
-    end
-
-    def assert_maker_atom_id(feed_type, maker_readers, feed_readers,
-                             not_set_error_name=nil)
-      _wrap_assertion do
-        not_set_error_name ||= "maker.#{maker_readers.join('.')}"
-
-        args = [feed_type, maker_readers, feed_readers]
-        _assert_maker_atom_id(*args) do |maker|
-          yield maker
-        end
-
-        _assert_maker_atom_id(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.id = "http://example.com/id/1"
-        end
-      end
-    end
-
-    def _assert_maker_atom_content(feed_type, maker_readers,
-                                   feed_readers, &block)
-      maker_extractor = Proc.new do |target|
-        content = {
-          :type => target.type,
-          :src => target.src,
-          :content => target.content,
-          :xml => target.xml,
-          :inline_text => target.inline_text?,
-          :inline_html => target.inline_html?,
-          :inline_xhtml => target.inline_xhtml?,
-          :inline_other => target.inline_other?,
-          :inline_other_text => target.inline_other_text?,
-          :inline_other_xml => target.inline_other_xml?,
-          :inline_other_base64 => target.inline_other_base64?,
-          :out_of_line => target.out_of_line?,
-        }
-        content[:src] = nil if content[:src] and content[:content]
-        if content[:type] or content[:content]
-          content
-        else
-          nil
-        end
-      end
-      feed_extractor = Proc.new do |target|
-        {
-          :type => target.type,
-          :src => target.src,
-          :content => target.content,
-          :xml => target.xml,
-          :inline_text => target.inline_text?,
-          :inline_html => target.inline_html?,
-          :inline_xhtml => target.inline_xhtml?,
-          :inline_other => target.inline_other?,
-          :inline_other_text => target.inline_other_text?,
-          :inline_other_xml => target.inline_other_xml?,
-          :inline_other_base64 => target.inline_other_base64?,
-          :out_of_line => target.out_of_line?,
-        }
-      end
-      _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
-                                 maker_extractor, feed_extractor,
-                                 &block)
-    end
-
-    def assert_maker_atom_content(feed_type, maker_readers, feed_readers,
-                                  not_set_error_name=nil, &block)
-      _wrap_assertion do
-        not_set_error_name ||= "maker.#{maker_readers.join('.')}"
-        args = [feed_type, maker_readers, feed_readers, not_set_error_name]
-        assert_maker_atom_content_inline_text(*args, &block)
-        assert_maker_atom_content_inline_xhtml(*args, &block)
-        assert_maker_atom_content_inline_other(*args, &block)
-        assert_maker_atom_content_out_of_line(*args, &block)
-      end
-    end
-
-    def assert_maker_atom_content_inline_text(feed_type, maker_readers,
-                                              feed_readers, not_set_error_name)
-      _wrap_assertion do
-        args = [feed_type, maker_readers, feed_readers]
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-        end
-
-        assert_not_set_error(not_set_error_name, %w(content)) do
-          RSS::Maker.make("atom:#{feed_type}") do |maker|
-            yield maker
-            target = chain_reader(maker, maker_readers)
-            target.type = "text"
-          end
-        end
-
-        assert_not_set_error(not_set_error_name, %w(content)) do
-          RSS::Maker.make("atom:#{feed_type}") do |maker|
-            yield maker
-            target = chain_reader(maker, maker_readers)
-            target.type = "html"
-          end
-        end
-
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.content = ""
-        end
-
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "text"
-          target.content = "example content"
-        end
-
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "html"
-          target.content = "<em>text</em>"
-        end
-      end
-    end
-
-    def assert_maker_atom_content_inline_xhtml(feed_type, maker_readers,
-                                               feed_readers, not_set_error_name)
-      _wrap_assertion do
-        args = [feed_type, maker_readers, feed_readers]
-        assert_not_set_error(not_set_error_name, %w(xml_content)) do
-          RSS::Maker.make("atom:#{feed_type}") do |maker|
-            yield maker
-            target = chain_reader(maker, maker_readers)
-            target.type = "xhtml"
-          end
-        end
-
-        assert_not_set_error(not_set_error_name, %w(xml_content)) do
-          RSS::Maker.make("atom:#{feed_type}") do |maker|
-            yield maker
-            target = chain_reader(maker, maker_readers)
-            target.type = "xhtml"
-            target.content = "dummy"
-          end
-        end
-
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "xhtml"
-          target.xml_content = "text"
-        end
-
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "xhtml"
-          target.xml = "text"
-        end
-
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "xhtml"
-          target.xml_content =
-            RSS::XML::Element.new("em", nil, nil, {}, ["text"])
-        end
-
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "xhtml"
-          target.xml = RSS::XML::Element.new("em", nil, nil, {}, ["text"])
-        end
-
-
-        xhtml_uri = "http://www.w3.org/1999/xhtml"
-        em = RSS::XML::Element.new("em", nil, nil, {}, ["text"])
-        em_with_xhtml_uri =
-          RSS::XML::Element.new("em", nil, xhtml_uri, {}, ["text"])
-        feed = RSS::Maker.make("atom:#{feed_type}") do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "xhtml"
-          target.xml = em
-        end
-        assert_equal(RSS::XML::Element.new("div", nil, xhtml_uri,
-                                           {"xmlns" => xhtml_uri},
-                                           [em_with_xhtml_uri]),
-                     chain_reader(feed, feed_readers).xml)
-
-        div = RSS::XML::Element.new("div", nil, xhtml_uri,
-                                    {"xmlns" => xhtml_uri,
-                                     "class" => "sample"},
-                                    ["text"])
-        feed = RSS::Maker.make("atom:#{feed_type}") do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "xhtml"
-          target.xml = div
-        end
-        assert_equal(div, chain_reader(feed, feed_readers).xml)
-      end
-    end
-
-    def assert_maker_atom_content_inline_other(*args, &block)
-      _wrap_assertion do
-        assert_maker_atom_content_inline_other_xml(*args, &block)
-        assert_maker_atom_content_inline_other_text(*args, &block)
-        assert_maker_atom_content_inline_other_base64(*args, &block)
-      end
-    end
-
-    def assert_maker_atom_content_inline_other_xml(feed_type, maker_readers,
-                                                   feed_readers,
-                                                   not_set_error_name)
-      _wrap_assertion do
-        args = [feed_type, maker_readers, feed_readers]
-        assert_not_set_error(not_set_error_name, %w(xml_content)) do
-          RSS::Maker.make("atom:#{feed_type}") do |maker|
-            yield maker
-            target = chain_reader(maker, maker_readers)
-            target.type = "application/xml"
-          end
-        end
-
-        assert_not_set_error(not_set_error_name, %w(xml_content)) do
-          RSS::Maker.make("atom:#{feed_type}") do |maker|
-            yield maker
-            target = chain_reader(maker, maker_readers)
-            target.type = "svg/image+xml"
-          end
-        end
-
-        svg_uri = "http://www.w3.org/2000/svg"
-        rect = RSS::XML::Element.new("rect", nil, svg_uri,
-                                     {"x" => "0.5cm",
-                                      "y" => "0.5cm",
-                                      "width" => "2cm",
-                                      "height" => "1cm"})
-        svg = RSS::XML::Element.new("svg", nil, svg_uri,
-                                    {"xmlns" => svg_uri,
-                                     "version" => "1.1",
-                                     "width" => "5cm",
-                                     "height" => "4cm"},
-                                    [rect])
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "image/svg+xml"
-          target.xml = svg
-        end
-
-        feed = RSS::Maker.make("atom:#{feed_type}") do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "image/svg+xml"
-          target.xml = svg
-        end
-        assert_equal(svg, chain_reader(feed, feed_readers).xml)
-      end
-    end
-
-    def assert_maker_atom_content_inline_other_text(feed_type, maker_readers,
-                                                    feed_readers,
-                                                    not_set_error_name)
-      _wrap_assertion do
-        args = [feed_type, maker_readers, feed_readers]
-        assert_not_set_error(not_set_error_name, %w(content)) do
-          RSS::Maker.make("atom:#{feed_type}") do |maker|
-            yield maker
-            target = chain_reader(maker, maker_readers)
-            target.type = "text/plain"
-          end
-        end
-
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "text/plain"
-          target.content = "text"
-        end
-      end
-    end
-
-    def assert_maker_atom_content_inline_other_base64(feed_type, maker_readers,
-                                                      feed_readers,
-                                                      not_set_error_name)
-      _wrap_assertion do
-        args = [feed_type, maker_readers, feed_readers]
-        content = "\211PNG\r\n\032\n"
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "image/png"
-          target.content = content
-        end
-
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "image/png"
-          target.src = "http://example.com/logo.png"
-          target.content = content
-        end
-
-        feed = RSS::Maker.make("atom:#{feed_type}") do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "image/png"
-          target.src = "http://example.com/logo.png"
-          target.content = content
-        end
-        target = chain_reader(feed, feed_readers)
-        assert_nil(target.src)
-        assert_equal(content, target.content)
-      end
-    end
-
-    def assert_maker_atom_content_out_of_line(feed_type, maker_readers,
-                                              feed_readers, not_set_error_name)
-      _wrap_assertion do
-        args = [feed_type, maker_readers, feed_readers]
-        assert_not_set_error(not_set_error_name, %w(content)) do
-          RSS::Maker.make("atom:#{feed_type}") do |maker|
-            yield maker
-            target = chain_reader(maker, maker_readers)
-            target.type = "image/png"
-          end
-        end
-
-        assert_not_set_error(not_set_error_name, %w(type)) do
-          RSS::Maker.make("atom:#{feed_type}") do |maker|
-            yield maker
-            target = chain_reader(maker, maker_readers)
-            target.src = "http://example.com/logo.png"
-          end
-        end
-
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "image/png"
-          target.src = "http://example.com/logo.png"
-        end
-
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "image/png"
-          target.content = "\211PNG\r\n\032\n"
-        end
-
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "application/xml"
-          target.src = "http://example.com/sample.xml"
-        end
-
-
-        _assert_maker_atom_content(*args) do |maker|
-          yield maker
-          target = chain_reader(maker, maker_readers)
-          target.type = "text/plain"
-          target.src = "http://example.com/README.txt"
-        end
-      end
-    end
-
-    def assert_slash_elements(expected, target)
-      assert_equal(expected,
-                   {
-                     "section" => target.slash_section,
-                     "department" => target.slash_department,
-                     "comments" => target.slash_comments,
-                     "hit_parades" => target.slash_hit_parades,
-                   })
-      assert_equal(expected["hit_parades"].join(","),
-                   target.slash_hit_parade)
-    end
-
-    def chain_reader(target, readers, &block)
-      readers.inject(target) do |result, reader|
-        return nil if result.nil?
-        result.__send__(reader, &block)
-      end
-    end
-
-    def normalized_attrs(attrs)
-      n_attrs = {}
-      attrs.each do |name, value|
-        n_attrs[name.to_s] = value
-      end
-      n_attrs
-    end
-
-    def combination(elements, n)
-      if n <= 0 or elements.size < n
-        []
-      elsif n == 1
-        elements.collect {|element| [element]}
-      else
-        first, *rest = elements
-        combination(rest, n - 1).collect do |sub_elements|
-          [first, *sub_elements]
-        end + combination(rest, n)
-      end
-    end
-
-    def tag(name, content=nil, attributes={})
-      attributes = attributes.collect do |key, value|
-        "#{ERB::Util.h(key)}=\"#{ERB::Util.h(value)}\""
-      end.join(" ")
-      begin_tag = "<#{name}"
-      begin_tag << " #{attributes}" unless attributes.empty?
-      if content
-        "#{begin_tag}>#{content}</#{name}>\n"
-      else
-        "#{begin_tag}/>\n"
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/rss-testcase.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/rss-testcase.rb
deleted file mode 100644 (file)
index 79f8cb8..0000000
+++ /dev/null
@@ -1,478 +0,0 @@
-require "erb"
-
-require "test/unit"
-require 'rss-assertions'
-
-require "rss"
-
-module RSS
-  class TestCase < Test::Unit::TestCase
-    include ERB::Util
-
-    include RSS
-    include Assertions
-
-    XMLDECL_VERSION = "1.0"
-    XMLDECL_ENCODING = "UTF-8"
-    XMLDECL_STANDALONE = "no"
-
-    RDF_ABOUT = "http://www.xml.com/xml/news.rss"
-    RDF_RESOURCE = "http://xml.com/universal/images/xml_tiny.gif"
-    TITLE_VALUE = "XML.com"
-    LINK_VALUE = "http://xml.com/pub"
-    URL_VALUE = "http://xml.com/universal/images/xml_tiny.gif"
-    NAME_VALUE = "hogehoge"
-    LANGUAGE_VALUE = "ja"
-    DESCRIPTION_VALUE = "
-    XML.com features a rich mix of information and services
-    for the XML community.
-    "
-    RESOURCES = [
-      "http://xml.com/pub/2000/08/09/xslt/xslt.html",
-      "http://xml.com/pub/2000/08/09/rdfdb/index.html",
-    ]
-
-    CLOUD_DOMAIN = "data.ourfavoritesongs.com"
-    CLOUD_PORT = "80"
-    CLOUD_PATH = "/RPC2"
-    CLOUD_REGISTER_PROCEDURE = "ourFavoriteSongs.rssPleaseNotify"
-    CLOUD_PROTOCOL = "xml-rpc"
-    
-    ENCLOSURE_URL = "http://www.scripting.com/mp3s/weatherReportSuite.mp3"
-    ENCLOSURE_LENGTH = "12216320"
-    ENCLOSURE_TYPE = "audio/mpeg"
-    
-    CATEGORY_DOMAIN = "http://www.superopendirectory.com/"
-
-    FEED_TITLE = "dive into mark"
-    FEED_UPDATED = "2003-12-13T18:30:02Z"
-    FEED_AUTHOR_NAME = "John Doe"
-    FEED_ID = "urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6"
-
-    ENTRY_TITLE = "Atom-Powered Robots Run Amok"
-    ENTRY_LINK = "http://example.org/2003/12/13/atom03"
-    ENTRY_ID = "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a"
-    ENTRY_UPDATED = "2003-12-13T18:30:02Z"
-    ENTRY_SUMMARY = "Some text."
-
-    t = Time.iso8601("2000-01-01T12:00:05+00:00")
-    class << t
-      alias_method(:to_s, :iso8601)
-    end
-
-    DC_ELEMENTS = {
-      :title => "hoge",
-      :description =>
-        " XML is placing increasingly heavy loads on
-          the existing technical infrastructure of the Internet.",
-      :creator => "Rael Dornfest (mailto:rael@oreilly.com)",
-      :subject => "XML",
-      :publisher => "The O'Reilly Network",
-      :contributor => "hogehoge",
-      :type => "fugafuga",
-      :format => "hohoho",
-      :identifier => "fufufu",
-      :source => "barbar",
-      :language => "ja",
-      :relation => "cococo",
-      :rights => "Copyright (c) 2000 O'Reilly &amp; Associates, Inc.",
-      :date => t,
-    }
-
-    DC_NODES = DC_ELEMENTS.collect do |name, value|
-      "<#{DC_PREFIX}:#{name}>#{value}</#{DC_PREFIX}:#{name}>"
-    end.join("\n")
-
-    def default_test
-      # This class isn't tested
-    end
-
-    private
-    def make_xmldecl(v=XMLDECL_VERSION, e=XMLDECL_ENCODING, s=XMLDECL_STANDALONE)
-      rv = "<?xml version='#{v}'"
-      rv << " encoding='#{e}'" if e
-      rv << " standalone='#{s}'" if s
-      rv << "?>"
-      rv
-    end
-
-    def make_RDF(content=nil, xmlns=[])
-      <<-EORSS
-#{make_xmldecl}
-<rdf:RDF xmlns="#{URI}" xmlns:rdf="#{RDF::URI}"
-#{xmlns.collect {|pre, uri| "xmlns:#{pre}='#{uri}'"}.join(' ')}>
-#{block_given? ? yield : content}
-</rdf:RDF>
-EORSS
-    end
-
-    def make_channel(content=nil)
-      <<-EOC
-<channel rdf:about="#{RDF_ABOUT}">
-  <title>#{TITLE_VALUE}</title>
-  <link>#{LINK_VALUE}</link>
-  <description>#{DESCRIPTION_VALUE}</description>
-
-  <image rdf:resource="#{RDF_RESOURCE}" />
-
-  <items>
-    <rdf:Seq>
-#{RESOURCES.collect do |res| '<rdf:li resource="' + res + '" />' end.join("\n")}
-    </rdf:Seq>
-  </items>
-
-  <textinput rdf:resource="#{RDF_RESOURCE}" />
-
-#{block_given? ? yield : content}
-</channel>
-EOC
-    end
-
-    def make_image(content=nil)
-      <<-EOI
-<image rdf:about="#{RDF_ABOUT}">
-  <title>#{TITLE_VALUE}</title>
-  <url>#{URL_VALUE}</url>
-  <link>#{LINK_VALUE}</link>
-#{block_given? ? yield : content}
-</image>
-EOI
-    end
-
-    def make_item(content=nil)
-      <<-EOI
-<item rdf:about="#{RDF_ABOUT}">
-  <title>#{TITLE_VALUE}</title>
-  <link>#{LINK_VALUE}</link>
-  <description>#{DESCRIPTION_VALUE}</description>
-#{block_given? ? yield : content}
-</item>
-EOI
-    end
-
-    def make_textinput(content=nil)
-      <<-EOT
-<textinput rdf:about="#{RDF_ABOUT}">
-  <title>#{TITLE_VALUE}</title>
-  <description>#{DESCRIPTION_VALUE}</description>
-  <name>#{NAME_VALUE}</name>
-  <link>#{LINK_VALUE}</link>
-#{block_given? ? yield : content}
-</textinput>
-EOT
-    end
-
-    def make_sample_RDF
-      make_RDF(<<-EOR)
-#{make_channel}
-#{make_image}
-#{make_item}
-#{make_textinput}
-EOR
-    end
-
-    def make_rss20(content=nil, xmlns=[])
-      <<-EORSS
-#{make_xmldecl}
-<rss version="2.0"
-#{xmlns.collect {|pre, uri| "xmlns:#{pre}='#{uri}'"}.join(' ')}>
-#{block_given? ? yield : content}
-</rss>
-EORSS
-    end
-
-    def make_sample_items20
-      RESOURCES.collect do |res|
-        elems = ["<link>#{res}</link>"]
-        elems << "<title>title of #{res}</title>"
-        elems = elems.join("\n")
-        item = "<item>\n#{elems}\n</item>"
-      end.join("\n")
-    end
-
-    def make_channel20(content=nil)
-      <<-EOC
-<channel>
-  <title>#{TITLE_VALUE}</title>
-  <link>#{LINK_VALUE}</link>
-  <description>#{DESCRIPTION_VALUE}</description>
-  <language>#{LANGUAGE_VALUE}</language>
-
-  <image>
-    <url>#{RDF_RESOURCE}</url>
-    <title>#{TITLE_VALUE}</title>
-    <link>#{LINK_VALUE}</link>
-  </image>
-
-#{make_sample_items20}
-
-  <textInput>
-    <title>#{TITLE_VALUE}</title>
-    <description>#{DESCRIPTION_VALUE}</description>
-    <name>#{NAME_VALUE}</name>
-    <link>#{RDF_RESOURCE}</link>
-  </textInput>
-
-#{block_given? ? yield : content}
-</channel>
-EOC
-    end
-
-    def make_item20(content=nil)
-      <<-EOI
-<item>
-  <title>#{TITLE_VALUE}</title>
-  <link>#{LINK_VALUE}</link>
-  <description>#{DESCRIPTION_VALUE}</description>
-#{block_given? ? yield : content}
-</item>
-EOI
-    end
-
-    def make_cloud20
-      <<-EOC
-<cloud
-  domain="#{CLOUD_DOMAIN}"
-  port="#{CLOUD_PORT}"
-  path="#{CLOUD_PATH}"
-  registerProcedure="#{CLOUD_REGISTER_PROCEDURE}"
-  protocol="#{CLOUD_PROTOCOL}" />
-EOC
-    end
-
-    def make_sample_rss20
-      make_rss20(<<-EOR)
-#{make_channel20}
-EOR
-    end
-
-    def make_feed_without_entry(content=nil, xmlns=[])
-      <<-EOA
-<feed xmlns="#{Atom::URI}"
-#{xmlns.collect {|pre, uri| "xmlns:#{pre}='#{uri}'"}.join(' ')}>
-  <id>#{FEED_ID}</id>
-  <title>#{FEED_TITLE}</title>
-  <updated>#{FEED_UPDATED}</updated>
-  <author>
-    <name>#{FEED_AUTHOR_NAME}</name>
-  </author>
-#{block_given? ? yield : content}
-</feed>
-EOA
-    end
-
-    def make_entry(content=nil)
-      <<-EOA
-  <entry>
-    <title>#{ENTRY_TITLE}</title>
-    <id>#{ENTRY_ID}</id>
-    <updated>#{ENTRY_UPDATED}</updated>
-#{block_given? ? yield : content}
-  </entry>
-EOA
-    end
-
-    def make_feed_with_open_entry(content=nil, xmlns=[], &block)
-      make_feed_without_entry(<<-EOA, xmlns)
-#{make_entry(content, &block)}
-EOA
-    end
-
-    def make_feed_with_open_entry_source(content=nil, xmlns=[])
-      make_feed_with_open_entry(<<-EOA, xmlns)
-  <source>
-#{block_given? ? yield : content}
-  </source>
-EOA
-    end
-
-    def make_feed(content=nil, xmlns=[])
-      make_feed_without_entry(<<-EOA, xmlns)
-  <entry>
-    <title>#{ENTRY_TITLE}</title>
-    <link href="#{ENTRY_LINK}"/>
-    <id>#{ENTRY_ID}</id>
-    <updated>#{ENTRY_UPDATED}</updated>
-    <summary>#{ENTRY_SUMMARY}</summary>
-  </entry>
-#{block_given? ? yield : content}
-EOA
-    end
-
-    def make_entry_document(content=nil, xmlns=[])
-      <<-EOA
-<entry xmlns="#{Atom::URI}"
-#{xmlns.collect {|pre, uri| "xmlns:#{pre}='#{uri}'"}.join(' ')}>
-  <id>#{ENTRY_ID}</id>
-  <title>#{ENTRY_TITLE}</title>
-  <updated>#{ENTRY_UPDATED}</updated>
-  <author>
-    <name>#{FEED_AUTHOR_NAME}</name>
-  </author>
-#{block_given? ? yield : content}
-</entry>
-EOA
-    end
-
-    def make_entry_document_with_open_source(content=nil, xmlns=[])
-      make_entry_document(<<-EOA, xmlns)
-  <source>
-#{block_given? ? yield : content}
-  </source>
-EOA
-    end
-
-    def make_element(elem_name, attrs, contents)
-      attrs_str = attrs.collect do |name, value|
-        "#{h name}='#{h value}'"
-      end.join(" ")
-      attrs_str = " #{attrs_str}" unless attrs_str.empty?
-
-      if contents.is_a?(String)
-        contents_str = h(contents)
-      else
-        contents_str = contents.collect do |name, value|
-          "#{Element::INDENT}<#{h name}>#{h value}</#{h name}>"
-        end.join("\n")
-        contents_str = "\n#{contents_str}\n"
-      end
-
-      "<#{h elem_name}#{attrs_str}>#{contents_str}</#{h elem_name}>"
-    end
-
-    def xmlns_container(xmlns_decls, content)
-      attributes = xmlns_decls.collect do |prefix, uri|
-        "xmlns:#{h prefix}=\"#{h uri}\""
-      end.join(" ")
-      "<dummy #{attributes}>#{content}</dummy>"
-    end
-
-    private
-    def setup_rss10(rdf)
-      assert_equal("", rdf.to_s)
-
-      channel = RDF::Channel.new
-      assert_equal("", channel.to_s)
-      channel.about = "http://example.com/index.rdf"
-      channel.title = "title"
-      channel.link = "http://example.com/"
-      channel.description = "description"
-      assert_equal("", channel.to_s)
-
-      item_title = "item title"
-      item_link = "http://example.com/item"
-      channel.items = RDF::Channel::Items.new
-      channel.items.Seq.lis << RDF::Channel::Items::Seq::Li.new(item_link)
-      assert_not_equal("", channel.to_s)
-
-      rdf.channel = channel
-      assert_equal("", rdf.to_s)
-
-      item = RDF::Item.new
-      item.title = item_title
-      item.link = item_link
-      item.about = item_link
-      rdf.items << item
-      assert_not_equal("", rdf.to_s)
-    end
-    
-    def setup_rss20(rss)
-      assert_equal("", rss.to_s)
-
-      channel = Rss::Channel.new
-      assert_equal("", channel.to_s)
-      channel.title = "title"
-      channel.link = "http://example.com/"
-      channel.description = "description"
-      assert_not_equal("", channel.to_s)
-
-      rss.channel = channel
-      assert_not_equal("", rss.to_s)
-    end
-    
-    def setup_dummy_channel(maker)
-      about = "http://hoge.com"
-      title = "fugafuga"
-      link = "http://hoge.com/feed.xml"
-      description = "fugafugafugafuga"
-      language = "ja"
-
-      maker.channel.about = about
-      maker.channel.title = title
-      maker.channel.link = link
-      maker.channel.description = description
-      maker.channel.language = language
-    end
-
-    def setup_dummy_channel_atom(maker)
-      updated = Time.now
-      author = "Foo"
-
-      setup_dummy_channel(maker)
-      maker.channel.links.first.rel = "self"
-      maker.channel.links.first.type = "application/atom+xml"
-      maker.channel.updated = updated
-      maker.channel.author = author
-    end
-
-    def setup_dummy_image(maker)
-      title = "fugafuga"
-      link = "http://hoge.com"
-      url = "http://hoge.com/hoge.png"
-
-      maker.channel.link = link if maker.channel.link.nil?
-      
-      maker.image.title = title
-      maker.image.url = url
-    end
-
-    def setup_dummy_textinput(maker)
-      title = "fugafuga"
-      description = "text hoge fuga"
-      name = "hoge"
-      link = "http://hoge.com/search.cgi"
-
-      maker.textinput.title = title
-      maker.textinput.description = description
-      maker.textinput.name = name
-      maker.textinput.link = link
-    end
-
-    def setup_dummy_item(maker)
-      title = "TITLE"
-      link = "http://hoge.com/"
-
-      item = maker.items.new_item
-      item.title = title
-      item.link = link
-    end
-
-    def setup_dummy_item_atom(maker)
-      setup_dummy_item(maker)
-
-      item = maker.items.first
-      item.id = "http://example.net/xxx"
-      item.updated = Time.now
-    end
-
-    def setup_taxo_topic(target, topics)
-      topics.each do |topic|
-        taxo_topic = target.taxo_topics.new_taxo_topic
-        topic.each do |name, value|
-          case name
-          when :link
-            taxo_topic.taxo_link = value
-          when :topics
-            value.each do |t|
-              taxo_topic.taxo_topics << t
-            end
-          else
-            dc_elems = taxo_topic.__send__("dc_#{name}s")
-            dc_elem = dc_elems.__send__("new_#{name}")
-            dc_elem.value = value
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_1.0.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_1.0.rb
deleted file mode 100644 (file)
index 9cb7607..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-require "rexml/document"
-
-require "rss-testcase"
-
-require "rss/1.0"
-
-module RSS
-  class TestRSS10Core < TestCase
-    
-    def setup
-      @rdf_prefix = "rdf"
-      @rdf_uri = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-      @uri = "http://purl.org/rss/1.0/"
-    end
-    
-    def test_RDF
-      version = "1.0"
-      encoding = "UTF-8"
-      standalone = false
-      
-      rdf = RDF.new(version, encoding, standalone)
-      setup_rss10(rdf)
-      doc = REXML::Document.new(rdf.to_s)
-      
-      xmldecl = doc.xml_decl
-      
-      %w(version encoding).each do |x|
-        assert_equal(instance_eval(x), xmldecl.__send__(x))
-      end
-      assert_equal(standalone, !xmldecl.standalone.nil?)
-      
-      assert_equal(@rdf_uri, doc.root.namespace)
-    end
-    
-    def test_not_displayed_xml_stylesheets
-      rdf = RDF.new()
-      plain_rdf = rdf.to_s
-      3.times do
-        rdf.xml_stylesheets.push(XMLStyleSheet.new)
-        assert_equal(plain_rdf, rdf.to_s)
-      end
-    end
-    
-    def test_xml_stylesheets
-      [
-        [{:href => "a.xsl", :type => "text/xsl"}],
-        [
-          {:href => "a.xsl", :type => "text/xsl"},
-          {:href => "a.css", :type => "text/css"},
-        ],
-      ].each do |attrs_ary|
-        assert_xml_stylesheet_pis(attrs_ary)
-      end
-    end
-    
-    def test_channel
-      about = "http://hoge.com"
-      title = "fugafuga"
-      link = "http://hoge.com"
-      description = "fugafugafugafuga"
-      resource = "http://hoge.com/hoge.png"
-
-      item_title = "item title"
-      item_link = "http://hoge.com/item"
-
-      image = RDF::Channel::Image.new(resource)
-      items = RDF::Channel::Items.new
-      items.Seq.lis << items.class::Seq::Li.new(item_link)
-      textinput = RDF::Channel::Textinput.new(resource)
-
-      rss_item = RDF::Item.new
-      rss_item.title = item_title
-      rss_item.link = item_link
-      rss_item.about = item_link
-
-      channel = RDF::Channel.new(about)
-      %w(title link description image items textinput).each do |x|
-        channel.__send__("#{x}=", instance_eval(x))
-      end
-      
-      doc = REXML::Document.new(make_RDF(<<-EOR))
-#{channel}
-<items>
-#{rss_item}
-</items>
-EOR
-      c = doc.root.elements[1]
-      
-      assert_equal(about, c.attributes["about"])
-      %w(title link description image textinput).each do |x|
-        elem = c.elements[x]
-        assert_equal(x, elem.name)
-        assert_equal(@uri, elem.namespace)
-        if x == "image" or x == "textinput"
-          excepted = resource
-          res = elem.attributes.get_attribute("resource")
-          assert_equal(@rdf_uri, res.namespace)
-          value = res.value
-        else
-          excepted = instance_eval(x)
-          value = elem.text
-        end
-        assert_equal(excepted, value)
-      end
-      assert_equal(@uri, c.elements["items"].namespace)
-      assert_equal("items", c.elements["items"].name)
-    end
-    
-    def test_channel_image
-      resource = "http://hoge.com/hoge.png"
-      image = RDF::Channel::Image.new(resource)
-      
-      doc = REXML::Document.new(make_RDF(image.to_s))
-      i = doc.root.elements[1]
-      
-      assert_equal("image", i.name)
-      assert_equal(@uri, i.namespace)
-      
-      res = i.attributes.get_attribute("resource")
-      
-      assert_equal(@rdf_uri, res.namespace)
-      assert_equal(resource, res.value)
-    end
-    
-    def test_channel_textinput
-      resource = "http://hoge.com/hoge.png"
-      textinput = RDF::Channel::Textinput.new(resource)
-      
-      doc = REXML::Document.new(make_RDF(textinput.to_s))
-      t = doc.root.elements[1]
-      
-      assert_equal("textinput", t.name)
-      assert_equal(@uri, t.namespace)
-      
-      res = t.attributes.get_attribute("resource")
-      
-      assert_equal(@rdf_uri, res.namespace)
-      assert_equal(resource, res.value)
-    end
-    
-    def test_channel_items
-      item_link = "http://example.com/item"
-
-      items = RDF::Channel::Items.new
-      li = items.Seq.class::Li.new(item_link)
-      items.Seq.lis << li
-      
-      doc = REXML::Document.new(make_RDF(items.to_s))
-      i = doc.root.elements[1]
-      
-      assert_equal("items", i.name)
-      assert_equal(@uri, i.namespace)
-      
-      assert_equal(1, i.elements.size)
-      seq = i.elements[1]
-      assert_equal("Seq", seq.name)
-      assert_equal(@rdf_uri, seq.namespace)
-
-      assert_equal(1, seq.elements.size)
-      l = seq.elements[1]
-      assert_equal("li", l.name)
-      assert_equal(@rdf_uri, l.namespace)
-      assert_equal(item_link, l.attributes["resource"])
-    end
-    
-    def test_seq
-      item_link = "http://example.com/item"
-      seq = RDF::Seq.new
-      li = seq.class::Li.new(item_link)
-      seq.lis << li
-      
-      doc = REXML::Document.new(make_RDF(seq.to_s))
-      s = doc.root.elements[1]
-      
-      assert_equal("Seq", s.name)
-      assert_equal(@rdf_uri, s.namespace)
-
-      assert_equal(1, s.elements.size)
-      l = s.elements[1]
-      assert_equal("li", l.name)
-      assert_equal(@rdf_uri, l.namespace)
-      assert_equal(item_link, l.attributes["resource"])
-    end
-    
-    def test_li
-      resource = "http://hoge.com/"
-      li = RDF::Li.new(resource)
-      
-      doc = REXML::Document.new(make_RDF(li.to_s))
-      l = doc.root.elements[1]
-      
-      assert_equal("li", l.name)
-      assert_equal(@rdf_uri, l.namespace(l.prefix))
-      
-      res = l.attributes.get_attribute("resource")
-      
-      assert_equal('', res.instance_eval("@prefix"))
-      assert_equal(resource, res.value)
-    end
-    
-    def test_image
-      about = "http://hoge.com"
-      title = "fugafuga"
-      url = "http://hoge.com/hoge"
-      link = "http://hoge.com/fuga"
-      
-      image = RDF::Image.new(about)
-      %w(title url link).each do |x|
-        image.__send__("#{x}=", instance_eval(x))
-      end
-      
-      doc = REXML::Document.new(make_RDF(image.to_s))
-      i = doc.root.elements[1]
-      
-      assert_equal(about, i.attributes["about"])
-      %w(title url link).each do |x|
-        elem = i.elements[x]
-        assert_equal(x, elem.name)
-        assert_equal(@uri, elem.namespace)
-        assert_equal(instance_eval(x), elem.text)
-      end
-    end
-    
-    def test_item
-      about = "http://hoge.com"
-      title = "fugafuga"
-      link = "http://hoge.com/fuga"
-      description = "hogehogehoge"
-      
-      item = RDF::Item.new(about)
-      %w(title link description).each do |x|
-        item.__send__("#{x}=", instance_eval(x))
-      end
-      
-      doc = REXML::Document.new(make_RDF(item.to_s))
-      i = doc.root.elements[1]
-      
-      assert_equal(about, i.attributes["about"])
-      %w(title link description).each do |x|
-        elem = i.elements[x]
-        assert_equal(x, elem.name)
-        assert_equal(@uri, elem.namespace)
-        assert_equal(instance_eval(x), elem.text)
-      end
-    end
-    
-    def test_textinput
-      about = "http://hoge.com"
-      title = "fugafuga"
-      link = "http://hoge.com/fuga"
-      name = "foo"
-      description = "hogehogehoge"
-      
-      textinput = RDF::Textinput.new(about)
-      %w(title link name description).each do |x|
-        textinput.__send__("#{x}=", instance_eval(x))
-      end
-      
-      doc = REXML::Document.new(make_RDF(textinput.to_s))
-      t = doc.root.elements[1]
-      
-      assert_equal(about, t.attributes["about"])
-      %w(title link name description).each do |x|
-        elem = t.elements[x]
-        assert_equal(x, elem.name)
-        assert_equal(@uri, elem.namespace)
-        assert_equal(instance_eval(x), elem.text)
-      end
-    end
-
-    def test_to_xml
-      rss = RSS::Parser.parse(make_sample_RDF)
-      assert_equal(rss.to_s, rss.to_xml)
-      assert_equal(rss.to_s, rss.to_xml("1.0"))
-      rss09 = rss.to_xml("0.91") do |maker|
-        maker.channel.language = "en-us"
-      end
-      rss09 = RSS::Parser.parse(rss09)
-      assert_equal("0.91", rss09.rss_version)
-      assert_equal(["rss", "0.91", nil], rss09.feed_info)
-      rss20 = RSS::Parser.parse(rss.to_xml("2.0"))
-      assert_equal("2.0", rss20.rss_version)
-      assert_equal(["rss", "2.0", nil], rss20.feed_info)
-
-      atom_xml = rss.to_xml("atom") do |maker|
-        maker.channel.author = "Alice"
-        maker.channel.updated ||= Time.now
-        maker.items.each do |item|
-          item.updated ||= Time.now
-        end
-      end
-      atom = RSS::Parser.parse(atom_xml)
-      assert_equal(["atom", "1.0", "feed"], atom.feed_info)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_2.0.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_2.0.rb
deleted file mode 100644 (file)
index 5a63efb..0000000
+++ /dev/null
@@ -1,410 +0,0 @@
-require "rexml/document"
-
-require "rss-testcase"
-
-module RSS
-  class TestRSS20Core < TestCase
-
-    def setup
-      @rss_version = "2.0"
-    end
-    
-    def test_Rss
-      version = "1.0"
-      encoding = "UTF-8"
-      standalone = false
-      
-      rss = Rss.new(@rss_version, version, encoding, standalone)
-      setup_rss20(rss)
-      
-      doc = REXML::Document.new(rss.to_s(false))
-      
-      xmldecl = doc.xml_decl
-      
-      %w(version encoding).each do |x|
-        assert_equal(instance_eval(x), xmldecl.__send__(x))
-      end
-      assert_equal(standalone, !xmldecl.standalone.nil?)
-      
-      assert_equal("", doc.root.namespace)
-      assert_equal(@rss_version, doc.root.attributes["version"])
-    end
-    
-    def test_not_displayed_xml_stylesheets
-      rss = Rss.new(@rss_version)
-      plain_rss = rss.to_s
-      3.times do
-        rss.xml_stylesheets.push(XMLStyleSheet.new)
-        assert_equal(plain_rss, rss.to_s)
-      end
-    end
-    
-    def test_xml_stylesheets
-      [
-        [{:href => "a.xsl", :type => "text/xsl"}],
-        [
-          {:href => "a.xsl", :type => "text/xsl"},
-          {:href => "a.css", :type => "text/css"},
-        ],
-      ].each do |attrs_ary|
-        rss = Rss.new(@rss_version)
-        setup_rss20(rss)
-        assert_xml_stylesheet_pis(attrs_ary, rss)
-      end
-    end
-
-    def test_channel
-      title = "fugafuga"
-      link = "http://hoge.com"
-      description = "fugafugafugafuga"
-      
-      language = "en-us"
-      copyright = "Copyright 2002, Spartanburg Herald-Journal"
-      managingEditor = "geo@herald.com (George Matesky)"
-      webMaster = "betty@herald.com (Betty Guernsey)"
-      pubDate = Time.parse("Sat, 07 Sep 2002 00:00:01 GMT")
-      lastBuildDate = Time.parse("Sat, 07 Sep 2002 09:42:31 GMT")
-      categories = [
-        {
-          :content => "Newspapers",
-        },
-        {
-          :domain => "Syndic8",
-          :content => "1765",
-        }
-      ]
-      generator = "MightyInHouse Content System v2.3"
-      docs = "http://blogs.law.harvard.edu/tech/rss"
-
-      ttl = "60"
-
-      rating = '(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l gen true comment "RSACi North America Server" for "http://www.rsac.org" on "1996.04.16T08:15-0500" r (n 0 s 0 v 0 l 0))'
-
-      channel = Rss::Channel.new
-      
-      elems = %w(title link description language copyright
-                 managingEditor webMaster pubDate lastBuildDate
-                 generator docs ttl rating)
-      elems.each do |x|
-        value = instance_eval(x)
-        value = value.rfc822 if %w(pubDate lastBuildDate).include?(x)
-        channel.__send__("#{x}=", value)
-      end
-      categories.each do |cat|
-        channel.categories << Rss::Channel::Category.new(cat[:domain],
-                                                         cat[:content])
-      end
-      
-      doc = REXML::Document.new(make_rss20(channel.to_s))
-      c = doc.root.elements[1]
-      
-      elems.each do |x|
-        elem = c.elements[x]
-        assert_equal(x, elem.name)
-        assert_equal("", elem.namespace)
-        expected = instance_eval(x)
-        case x
-        when "pubDate", "lastBuildDate"
-          assert_equal(expected, Time.parse(elem.text))
-        when "ttl"
-          expected = channel.__send__(x)
-          assert_equal(expected, elem.text.to_i)
-        else
-          assert_equal(expected, elem.text)
-        end
-      end
-      categories.each_with_index do |cat, i|
-        cat = cat.dup
-        cat[:domain] ||= nil
-        category = c.elements["category[#{i+1}]"]
-        actual = {
-          :domain => category.attributes["domain"],
-          :content => category.text,
-        }
-        assert_equal(cat, actual)
-      end
-    end
-
-    def test_channel_cloud
-      cloud_params = {
-        :domain => "rpc.sys.com",
-        :port => "80",
-        :path => "/RPC2",
-        :registerProcedure => "myCloud.rssPleaseNotify",
-        :protocol => "xml-rpc",
-      }
-      cloud = Rss::Channel::Cloud.new(cloud_params[:domain],
-                                      cloud_params[:port],
-                                      cloud_params[:path],
-                                      cloud_params[:registerProcedure],
-                                      cloud_params[:protocol])
-      cloud_params[:port] = cloud.port
-      
-      doc = REXML::Document.new(cloud.to_s)
-      cloud_elem = doc.root
-      
-      actual = {}
-      cloud_elem.attributes.each do |name, value|
-        value = value.to_i if name == "port"
-        actual[name.intern] = value
-      end
-      assert_equal(cloud_params, actual)
-    end
-
-    def test_channel_image
-      image_params = {
-        :url => "http://hoge.com/hoge.png",
-        :title => "fugafuga",
-        :link => "http://hoge.com",
-        :width => "144",
-        :height => "400",
-        :description => "an image",
-      }
-      image = Rss::Channel::Image.new(image_params[:url],
-                                      image_params[:title],
-                                      image_params[:link],
-                                      image_params[:width],
-                                      image_params[:height],
-                                      image_params[:description])
-
-      doc = REXML::Document.new(image.to_s)
-      image_elem = doc.root
-      
-      image_params.each do |name, value|
-        value = image.__send__(name)
-        actual = image_elem.elements[name.to_s].text
-        actual = actual.to_i if [:width, :height].include?(name)
-        assert_equal(value, actual)
-      end
-    end
-    
-    def test_channel_textInput
-      textInput_params = {
-        :title => "fugafuga",
-        :description => "text hoge fuga",
-        :name => "hoge",
-        :link => "http://hoge.com",
-      }
-      textInput = Rss::Channel::TextInput.new(textInput_params[:title],
-                                              textInput_params[:description],
-                                              textInput_params[:name],
-                                              textInput_params[:link])
-
-      doc = REXML::Document.new(textInput.to_s)
-      input_elem = doc.root
-      
-      textInput_params.each do |name, value|
-        actual = input_elem.elements[name.to_s].text
-        assert_equal(value, actual)
-      end
-    end
-    
-    def test_channel_skip_days
-      skipDays_values = [
-        "Sunday",
-        "Monday",
-      ]
-      skipDays = Rss::Channel::SkipDays.new
-      skipDays_values.each do |value|
-        skipDays.days << Rss::Channel::SkipDays::Day.new(value)
-      end
-      
-      doc = REXML::Document.new(skipDays.to_s)
-      days_elem = doc.root
-      
-      skipDays_values.each_with_index do |value, i|
-        assert_equal(value, days_elem.elements[i + 1].text)
-      end
-    end
-    
-    def test_channel_skip_hours
-      skipHours_values = [
-        "0",
-        "13",
-      ]
-      skipHours = Rss::Channel::SkipHours.new
-      skipHours_values.each do |value|
-        skipHours.hours << Rss::Channel::SkipHours::Hour.new(value)
-      end
-
-      doc = REXML::Document.new(skipHours.to_s)
-      hours_elem = doc.root
-      
-      skipHours_values.each_with_index do |value, i|
-        expected = skipHours.hours[i].content
-        assert_equal(expected, hours_elem.elements[i + 1].text.to_i)
-      end
-    end
-
-    def test_item
-      title = "fugafuga"
-      link = "http://hoge.com/"
-      description = "text hoge fuga"
-      author = "oprah@oxygen.net"
-      categories = [
-        {
-          :content => "Newspapers",
-        },
-        {
-          :domain => "Syndic8",
-          :content => "1765",
-        }
-      ]
-      comments = "http://www.myblog.org/cgi-local/mt/mt-comments.cgi?entry_id=290"
-      pubDate = Time.parse("Sat, 07 Sep 2002 00:00:01 GMT")
-
-      channel = Rss::Channel.new
-      channel.title = "title"
-      channel.link = "http://example.com/"
-      channel.description = "description"
-
-      item = Rss::Channel::Item.new
-      channel.items << item
-      
-      elems = %w(title link description author comments pubDate)
-      elems.each do |x|
-        value = instance_eval(x)
-        value = value.rfc822 if x == "pubDate"
-        item.__send__("#{x}=", value)
-      end
-      categories.each do |cat|
-        item.categories << Rss::Channel::Category.new(cat[:domain],
-                                                      cat[:content])
-      end
-      
-      doc = REXML::Document.new(channel.to_s)
-      channel_elem = doc.root
-
-      item_elem = channel_elem.elements["item[1]"]
-      elems.each do |x|
-        elem = item_elem.elements[x]
-        assert_equal(x, elem.name)
-        assert_equal("", elem.namespace)
-        expected = instance_eval(x)
-        case x
-        when "pubDate"
-          assert_equal(expected, Time.parse(elem.text))
-        else
-          assert_equal(expected, elem.text)
-        end
-      end
-      categories.each_with_index do |cat, i|
-        cat = cat.dup
-        cat[:domain] ||= nil
-        category = item_elem.elements["category[#{i+1}]"]
-        actual = {
-          :domain => category.attributes["domain"],
-          :content => category.text,
-        }
-        assert_equal(cat, actual)
-      end
-    end
-
-    def test_item_enclosure
-      enclosure_params = {
-        :url => "http://www.scripting.com/mp3s/weatherReportSuite.mp3",
-        :length => "12216320",
-        :type => "audio/mpeg",
-      }
-
-      enclosure = Rss::Channel::Item::Enclosure.new(enclosure_params[:url],
-                                                    enclosure_params[:length],
-                                                    enclosure_params[:type])
-      enclosure_params[:length] = enclosure.length
-      
-      doc = REXML::Document.new(enclosure.to_s)
-      enclosure_elem = doc.root
-
-      actual = {}
-      enclosure_elem.attributes.each do |name, value|
-        value = value.to_i if name == "length"
-        actual[name.intern] = value
-      end
-      assert_equal(enclosure_params, actual)
-    end
-    
-    def test_item_guid
-      test_params = [
-        {
-          :content => "http://some.server.com/weblogItem3207",
-        },
-        {
-          :isPermaLink => "true",
-          :content => "http://inessential.com/2002/09/01.php#a2",
-        },
-      ]
-
-      test_params.each do |guid_params|
-        guid = Rss::Channel::Item::Guid.new(guid_params[:isPermaLink],
-                                            guid_params[:content])
-        if guid_params.has_key?(:isPermaLink)
-          guid_params[:isPermaLink] = guid.isPermaLink
-        end
-        if guid.isPermaLink.nil?
-          assert_equal(true, guid.PermaLink?)
-        else
-          assert_equal(guid.isPermaLink, guid.PermaLink?)
-        end
-        
-        doc = REXML::Document.new(guid.to_s)
-        guid_elem = doc.root
-      
-        actual = {}
-        actual[:content] = guid_elem.text if guid_elem.text
-        guid_elem.attributes.each do |name, value|
-          value = value == "true" if name == "isPermaLink"
-          actual[name.intern] = value
-        end
-        assert_equal(guid_params, actual)
-      end
-    end
-    
-    def test_item_source
-      source_params = {
-        :url => "http://www.tomalak.org/links2.xml",
-        :content => "Tomalak's Realm",
-      }
-
-      source = Rss::Channel::Item::Source.new(source_params[:url],
-                                              source_params[:content])
-
-      doc = REXML::Document.new(source.to_s)
-      source_elem = doc.root
-      
-      actual = {}
-      actual[:content] = source_elem.text
-      source_elem.attributes.each do |name, value|
-        actual[name.intern] = value
-      end
-      assert_equal(source_params, actual)
-    end
-
-    def test_to_xml
-      rss = RSS::Parser.parse(make_sample_rss20)
-      assert_equal(rss.to_s, rss.to_xml)
-      assert_equal(rss.to_s, rss.to_xml("2.0"))
-      rss09_xml = rss.to_xml("0.91") do |maker|
-        setup_dummy_image(maker)
-      end
-      rss09 = RSS::Parser.parse(rss09_xml)
-      assert_equal("0.91", rss09.rss_version)
-      rss10 = rss.to_xml("1.0") do |maker|
-        maker.channel.about = "http://www.example.com/index.rdf"
-      end
-      rss10 = RSS::Parser.parse(rss10)
-      assert_equal("1.0", rss10.rss_version)
-
-      atom_xml = rss.to_xml("atom1.0") do |maker|
-        maker.channel.id = "http://www.example.com/atom.xml"
-        maker.channel.author = "Alice"
-        maker.channel.updated = Time.now
-        maker.items.each do |item|
-          item.author = "Bob"
-          item.updated = Time.now
-        end
-      end
-      atom = RSS::Parser.parse(atom_xml)
-      assert_equal(["atom", "1.0", "feed"], atom.feed_info)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_accessor.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_accessor.rb
deleted file mode 100644 (file)
index ceb31fc..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-require "rss-testcase"
-
-require "rss/1.0"
-require "rss/2.0"
-require "rss/syndication"
-require "rss/image"
-
-module RSS
-  class TestAccessor < TestCase
-    def test_date
-      channel = Rss::Channel.new
-      channel.pubDate = nil
-      assert_nil(channel.pubDate)
-      
-      time = Time.now
-      channel.pubDate = time
-      assert_equal(time, channel.pubDate)
-      
-      time = Time.parse(Time.now.rfc822)
-      channel.pubDate = time.rfc822
-      assert_equal(time, channel.pubDate)
-
-      time = Time.parse(Time.now.iso8601)
-      value = time.iso8601
-      assert_not_available_value("pubDate", value) do
-        channel.pubDate = value
-      end
-      
-      channel.do_validate = false
-      time = Time.parse(Time.now.iso8601)
-      value = time.iso8601
-      channel.pubDate = value
-      assert_equal(time, channel.pubDate)
-      
-      channel.pubDate = nil
-      assert_nil(channel.pubDate)
-    end
-    
-    def test_integer
-      image_item = RDF::Item::ImageItem.new
-
-      image_item.width = nil
-      assert_nil(image_item.width)
-      
-      width = 10
-      image_item.width = width
-      assert_equal(width, image_item.width)
-      
-      width = 10.0
-      image_item.width = width
-      assert_equal(width, image_item.width)
-      
-      width = "10"
-      image_item.width = width
-      assert_equal(width.to_i, image_item.width)
-      
-      width = "10.0"
-      assert_not_available_value("image:width", width) do
-        image_item.width = width
-      end
-
-      image_item.do_validate = false
-      width = "10.0"
-      image_item.width = width
-      assert_equal(width.to_i, image_item.width)
-      
-      image_item.width = nil
-      assert_nil(image_item.width)
-    end
-    
-    def test_positive_integer
-      channel = RDF::Channel.new
-
-      channel.sy_updateFrequency = nil
-      assert_nil(channel.sy_updateFrequency)
-      
-      freq = 10
-      channel.sy_updateFrequency = freq
-      assert_equal(freq, channel.sy_updateFrequency)
-      
-      freq = 10.0
-      channel.sy_updateFrequency = freq
-      assert_equal(freq, channel.sy_updateFrequency)
-      
-      freq = "10"
-      channel.sy_updateFrequency = freq
-      assert_equal(freq.to_i, channel.sy_updateFrequency)
-      
-      freq = "10.0"
-      assert_not_available_value("sy:updateFrequency", freq) do
-        channel.sy_updateFrequency = freq
-      end
-
-      channel.do_validate = false
-      freq = "10.0"
-      channel.sy_updateFrequency = freq
-      assert_equal(freq.to_i, channel.sy_updateFrequency)
-      
-      channel.sy_updateFrequency = nil
-      assert_nil(channel.sy_updateFrequency)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_atom.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_atom.rb
deleted file mode 100644 (file)
index c442c75..0000000
+++ /dev/null
@@ -1,688 +0,0 @@
-require "rexml/document"
-
-require "rss-testcase"
-
-require "rss/atom"
-
-module RSS
-  class TestAtomCore < TestCase
-    def setup
-      @uri = "http://www.w3.org/2005/Atom"
-      @xhtml_uri = "http://www.w3.org/1999/xhtml"
-    end
-
-    def test_feed
-      version = "1.0"
-      encoding = "UTF-8"
-      standalone = false
-
-      feed = Atom::Feed.new(version, encoding, standalone)
-      assert_equal("", feed.to_s)
-
-      author = feed.class::Author.new
-      name = feed.class::Author::Name.new
-      name.content = "an author"
-      author.name = name
-      assert_not_equal("", author.to_s)
-      feed.authors << author
-      assert_equal("", feed.to_s)
-
-      id = feed.class::Id.new
-      id.content = "http://example.com/atom.xml"
-      assert_not_equal("", id.to_s)
-      feed.id = id
-      assert_equal("", feed.to_s)
-
-      title = feed.class::Title.new
-      title.content = "a title"
-      assert_not_equal("", title.to_s)
-      feed.title = title
-      assert_equal("", feed.to_s)
-
-      updated = feed.class::Updated.new
-      updated.content = Time.now
-      assert_not_equal("", updated.to_s)
-      feed.updated = updated
-      assert_not_equal("", feed.to_s)
-
-
-      feed.authors.clear
-      assert_equal("", feed.to_s)
-      entry = Atom::Feed::Entry.new
-      setup_entry(entry)
-      assert_not_equal("", entry.to_s)
-
-      author = entry.authors.first
-      entry.authors.clear
-      assert_equal("", entry.to_s)
-      entry.parent = feed
-      assert_equal("", entry.to_s)
-      feed.authors << author
-      assert_not_equal("", entry.to_s)
-      feed.authors.clear
-      feed.entries << entry
-      assert_equal("", feed.to_s)
-      entry.authors << author
-      assert_not_equal("", entry.to_s)
-      assert_not_equal("", feed.to_s)
-
-      doc = REXML::Document.new(feed.to_s)
-      xmldecl = doc.xml_decl
-
-      %w(version encoding).each do |x|
-        assert_equal(instance_eval(x), xmldecl.__send__(x))
-      end
-      assert_equal(standalone, !xmldecl.standalone.nil?)
-
-      assert_equal(@uri, doc.root.namespace)
-    end
-
-    def test_entry
-      version = "1.0"
-      encoding = "UTF-8"
-      standalone = false
-
-      entry = Atom::Entry.new(version, encoding, standalone)
-      setup_entry(entry)
-
-      author = entry.authors.first
-      entry.authors.clear
-      assert_equal("", entry.to_s)
-      source = Atom::Entry::Source.new
-      source.authors << author
-      entry.source = source
-      assert_not_equal("", entry.to_s)
-
-      doc = REXML::Document.new(entry.to_s)
-      xmldecl = doc.xml_decl
-
-      %w(version encoding).each do |x|
-        assert_equal(instance_eval(x), xmldecl.__send__(x))
-      end
-      assert_equal(standalone, !xmldecl.standalone.nil?)
-
-      assert_equal(@uri, doc.root.namespace)
-    end
-
-    def test_not_displayed_xml_stylesheets
-      feed = Atom::Feed.new
-      plain_feed = feed.to_s
-      3.times do
-        feed.xml_stylesheets.push(XMLStyleSheet.new)
-        assert_equal(plain_feed, feed.to_s)
-      end
-    end
-
-    def test_atom_author
-      assert_atom_person_to_s(Atom::Feed::Author)
-      assert_atom_person_to_s(Atom::Feed::Entry::Author)
-      assert_atom_person_to_s(Atom::Entry::Author)
-      assert_atom_person_to_s(Atom::Feed::Entry::Source::Author)
-      assert_atom_person_to_s(Atom::Entry::Source::Author)
-    end
-
-    def test_atom_category
-      assert_atom_category_to_s(Atom::Feed::Category)
-      assert_atom_category_to_s(Atom::Feed::Entry::Category)
-      assert_atom_category_to_s(Atom::Entry::Category)
-      assert_atom_category_to_s(Atom::Feed::Entry::Source::Category)
-      assert_atom_category_to_s(Atom::Entry::Source::Category)
-    end
-
-    def test_atom_contributor
-      assert_atom_person_to_s(Atom::Feed::Contributor)
-      assert_atom_person_to_s(Atom::Feed::Entry::Contributor)
-      assert_atom_person_to_s(Atom::Entry::Contributor)
-      assert_atom_person_to_s(Atom::Feed::Entry::Source::Contributor)
-      assert_atom_person_to_s(Atom::Entry::Source::Contributor)
-    end
-
-    def test_atom_generator
-      assert_atom_generator_to_s(Atom::Feed::Generator)
-      assert_atom_generator_to_s(Atom::Feed::Entry::Source::Generator)
-      assert_atom_generator_to_s(Atom::Entry::Source::Generator)
-    end
-
-    def test_atom_icon
-      assert_atom_icon_to_s(Atom::Feed::Icon)
-      assert_atom_icon_to_s(Atom::Feed::Entry::Source::Icon)
-      assert_atom_icon_to_s(Atom::Entry::Source::Icon)
-    end
-
-    def test_atom_id
-      assert_atom_id_to_s(Atom::Feed::Id)
-      assert_atom_id_to_s(Atom::Feed::Entry::Id)
-      assert_atom_id_to_s(Atom::Entry::Id)
-      assert_atom_id_to_s(Atom::Feed::Entry::Source::Id)
-      assert_atom_id_to_s(Atom::Entry::Source::Id)
-    end
-
-    def test_atom_link
-      assert_atom_link_to_s(Atom::Feed::Link)
-      assert_atom_link_to_s(Atom::Feed::Entry::Link)
-      assert_atom_link_to_s(Atom::Entry::Link)
-      assert_atom_link_to_s(Atom::Feed::Entry::Source::Link)
-      assert_atom_link_to_s(Atom::Entry::Source::Link)
-    end
-
-    def test_atom_logo
-      assert_atom_logo_to_s(Atom::Feed::Logo)
-      assert_atom_logo_to_s(Atom::Feed::Entry::Source::Logo)
-      assert_atom_logo_to_s(Atom::Entry::Source::Logo)
-    end
-
-    def test_atom_rights
-      assert_atom_text_construct_to_s(Atom::Feed::Rights)
-      assert_atom_text_construct_to_s(Atom::Feed::Entry::Rights)
-      assert_atom_text_construct_to_s(Atom::Entry::Rights)
-      assert_atom_text_construct_to_s(Atom::Feed::Entry::Source::Rights)
-      assert_atom_text_construct_to_s(Atom::Entry::Source::Rights)
-    end
-
-    def test_atom_subtitle
-      assert_atom_text_construct_to_s(Atom::Feed::Subtitle)
-      assert_atom_text_construct_to_s(Atom::Feed::Entry::Source::Subtitle)
-      assert_atom_text_construct_to_s(Atom::Entry::Source::Subtitle)
-    end
-
-    def test_atom_title
-      assert_atom_text_construct_to_s(Atom::Feed::Title)
-      assert_atom_text_construct_to_s(Atom::Feed::Entry::Title)
-      assert_atom_text_construct_to_s(Atom::Entry::Title)
-      assert_atom_text_construct_to_s(Atom::Feed::Entry::Source::Title)
-      assert_atom_text_construct_to_s(Atom::Entry::Source::Title)
-    end
-
-    def test_atom_updated
-      assert_atom_date_construct_to_s(Atom::Feed::Updated)
-      assert_atom_date_construct_to_s(Atom::Feed::Entry::Updated)
-      assert_atom_date_construct_to_s(Atom::Entry::Updated)
-      assert_atom_date_construct_to_s(Atom::Feed::Entry::Source::Updated)
-      assert_atom_date_construct_to_s(Atom::Entry::Source::Updated)
-    end
-
-    def test_atom_content
-      assert_atom_content_to_s(Atom::Feed::Entry::Content)
-      assert_atom_content_to_s(Atom::Entry::Content)
-    end
-
-    def test_atom_published
-      assert_atom_date_construct_to_s(Atom::Feed::Entry::Published)
-      assert_atom_date_construct_to_s(Atom::Entry::Published)
-    end
-
-    def test_atom_summary
-      assert_atom_text_construct_to_s(Atom::Feed::Entry::Summary)
-      assert_atom_text_construct_to_s(Atom::Entry::Summary)
-    end
-
-
-    def test_to_xml(with_convenience_way=true)
-      atom = RSS::Parser.parse(make_feed)
-      assert_equal(atom.to_s, atom.to_xml)
-      assert_equal(atom.to_s, atom.to_xml("atom"))
-      assert_equal(atom.to_s, atom.to_xml("atom1.0"))
-      assert_equal(atom.to_s, atom.to_xml("atom1.0:feed"))
-      assert_equal(atom.to_s, atom.to_xml("atom:feed"))
-
-      rss09_xml = atom.to_xml("0.91") do |maker|
-        maker.channel.language = "en-us"
-        maker.channel.link = "http://example.com/"
-        if with_convenience_way
-          maker.channel.description = atom.title.content
-        else
-          maker.channel.description {|d| d.content = atom.title.content}
-        end
-
-        maker.image.url = "http://example.com/logo.png"
-        maker.image.title = "Logo"
-      end
-      rss09 = RSS::Parser.parse(rss09_xml)
-      assert_equal(["rss", "0.91", nil], rss09.feed_info)
-
-      rss20_xml = atom.to_xml("2.0") do |maker|
-        maker.channel.link = "http://example.com/"
-        if with_convenience_way
-          maker.channel.description = atom.title.content
-        else
-          maker.channel.description {|d| d.content = atom.title.content}
-        end
-      end
-      rss20 = RSS::Parser.parse(rss20_xml)
-      assert_equal("2.0", rss20.rss_version)
-      assert_equal(["rss", "2.0", nil], rss20.feed_info)
-    end
-
-    def test_to_xml_with_new_api_since_018
-      test_to_xml(false)
-    end
-
-    private
-    def setup_entry(entry)
-      _wrap_assertion do
-        assert_equal("", entry.to_s)
-
-        author = entry.class::Author.new
-        name = entry.class::Author::Name.new
-        name.content = "an author"
-        author.name = name
-        assert_not_equal("", author.to_s)
-        entry.authors << author
-        assert_equal("", entry.to_s)
-
-        id = entry.class::Id.new
-        id.content = "http://example.com/atom.xml"
-        assert_not_equal("", id.to_s)
-        entry.id = id
-        assert_equal("", entry.to_s)
-
-        title = entry.class::Title.new
-        title.content = "a title"
-        assert_not_equal("", title.to_s)
-        entry.title = title
-        assert_equal("", entry.to_s)
-
-        updated = entry.class::Updated.new
-        updated.content = Time.now
-        assert_not_equal("", updated.to_s)
-        entry.updated = updated
-        assert_not_equal("", entry.to_s)
-      end
-    end
-
-
-    def assert_atom_person_to_s(target_class)
-      _wrap_assertion do
-        name = "A person"
-        uri = "http://example.com/person/"
-        email = "person@example.com"
-
-        target = target_class.new
-        assert_equal("", target.to_s)
-
-        target = target_class.new
-        person_name = target_class::Name.new
-        person_name.content = name
-        target.name = person_name
-        xml_target = REXML::Document.new(target.to_s).root
-        assert_equal(["name"], xml_target.elements.collect {|e| e.name})
-        assert_equal([name], xml_target.elements.collect {|e| e.text})
-
-        person_uri = target_class::Uri.new
-        person_uri.content = uri
-        target.uri = person_uri
-        xml_target = REXML::Document.new(target.to_s).root
-        assert_equal(["name", "uri"], xml_target.elements.collect {|e| e.name})
-        assert_equal([name, uri], xml_target.elements.collect {|e| e.text})
-
-        person_email = target_class::Email.new
-        person_email.content = email
-        target.email = person_email
-        xml_target = REXML::Document.new(target.to_s).root
-        assert_equal(["name", "uri", "email"],
-                     xml_target.elements.collect {|e| e.name})
-        assert_equal([name, uri, email],
-                     xml_target.elements.collect {|e| e.text})
-      end
-    end
-
-    def assert_atom_category_to_s(target_class)
-      _wrap_assertion do
-        term = "music"
-        scheme = "http://example.com/music"
-        label = "Music"
-
-        category = target_class.new
-        assert_equal("", category.to_s)
-
-        category = target_class.new
-        category.scheme = scheme
-        assert_equal("", category.to_s)
-
-        category = target_class.new
-        category.label = label
-        assert_equal("", category.to_s)
-
-        category = target_class.new
-        category.scheme = scheme
-        category.label = label
-        assert_equal("", category.to_s)
-
-        category = target_class.new
-        category.term = term
-        xml = REXML::Document.new(category.to_s).root
-        assert_rexml_element([], {"term" => term}, nil, xml)
-
-        category = target_class.new
-        category.term = term
-        category.scheme = scheme
-        xml = REXML::Document.new(category.to_s).root
-        assert_rexml_element([], {"term" => term, "scheme" => scheme}, nil, xml)
-
-        category = target_class.new
-        category.term = term
-        category.label = label
-        xml = REXML::Document.new(category.to_s).root
-        assert_rexml_element([], {"term" => term, "label" => label}, nil, xml)
-
-        category = target_class.new
-        category.term = term
-        category.scheme = scheme
-        category.label = label
-        xml = REXML::Document.new(category.to_s).root
-        attrs = {"term" => term, "scheme" => scheme, "label" => label}
-        assert_rexml_element([], attrs, nil, xml)
-      end
-    end
-
-    def assert_atom_generator_to_s(target_class)
-      _wrap_assertion do
-        content = "Feed generator"
-        uri = "http://example.com/generator"
-        version = "0.0.1"
-
-        generator = target_class.new
-        assert_equal("", generator.to_s)
-
-        generator = target_class.new
-        generator.uri = uri
-        assert_equal("", generator.to_s)
-
-        generator = target_class.new
-        generator.version = version
-        assert_equal("", generator.to_s)
-
-        generator = target_class.new
-        generator.uri = uri
-        generator.version = version
-        assert_equal("", generator.to_s)
-
-        generator = target_class.new
-        generator.content = content
-        xml = REXML::Document.new(generator.to_s).root
-        assert_rexml_element([], {}, content, xml)
-
-        generator = target_class.new
-        generator.content = content
-        generator.uri = uri
-        xml = REXML::Document.new(generator.to_s).root
-        assert_rexml_element([], {"uri" => uri}, content, xml)
-
-        generator = target_class.new
-        generator.content = content
-        generator.version = version
-        xml = REXML::Document.new(generator.to_s).root
-        assert_rexml_element([], {"version" => version}, content, xml)
-
-        generator = target_class.new
-        generator.content = content
-        generator.uri = uri
-        generator.version = version
-        xml = REXML::Document.new(generator.to_s).root
-        assert_rexml_element([], {"uri" => uri, "version" => version},
-                             content, xml)
-      end
-    end
-
-    def assert_atom_icon_to_s(target_class)
-      _wrap_assertion do
-        content = "http://example.com/icon.png"
-
-        icon = target_class.new
-        assert_equal("", icon.to_s)
-
-        icon = target_class.new
-        icon.content = content
-        xml = REXML::Document.new(icon.to_s).root
-        assert_rexml_element([], {}, content, xml)
-      end
-    end
-
-    def assert_atom_id_to_s(target_class)
-      _wrap_assertion do
-        content = "http://example.com/1"
-
-        id = target_class.new
-        assert_equal("", id.to_s)
-
-        id = target_class.new
-        id.content = content
-        xml = REXML::Document.new(id.to_s).root
-        assert_rexml_element([], {}, content, xml)
-      end
-    end
-
-    def assert_atom_link_to_s(target_class)
-      _wrap_assertion do
-        href = "http://example.com/atom.xml"
-        rel = "self"
-        type = "application/atom+xml"
-        hreflang = "ja"
-        title = "Atom Feed"
-        length = "801"
-
-        link = target_class.new
-        assert_equal("", link.to_s)
-
-        link = target_class.new
-        link.href = href
-        xml = REXML::Document.new(link.to_s).root
-        assert_rexml_element([], {"href" => href}, nil, xml)
-
-        optional_arguments = %w(rel type hreflang title length)
-        optional_arguments.each do |name|
-          rest = optional_arguments.reject {|x| x == name}
-
-          link = target_class.new
-          link.__send__("#{name}=", eval(name))
-          assert_equal("", link.to_s)
-
-          rest.each do |n|
-            link.__send__("#{n}=", eval(n))
-            assert_equal("", link.to_s)
-          end
-
-          link = target_class.new
-          link.href = href
-          link.__send__("#{name}=", eval(name))
-          attrs = [["href", href], [name, eval(name)]]
-          xml = REXML::Document.new(link.to_s).root
-          assert_rexml_element([], attrs, nil, xml)
-
-          rest.each do |n|
-            link.__send__("#{n}=", eval(n))
-            attrs << [n, eval(n)]
-            xml = REXML::Document.new(link.to_s).root
-            assert_rexml_element([], attrs, nil, xml)
-          end
-        end
-      end
-    end
-
-    def assert_atom_logo_to_s(target_class)
-      _wrap_assertion do
-        content = "http://example.com/logo.png"
-
-        logo = target_class.new
-        assert_equal("", logo.to_s)
-
-        logo = target_class.new
-        logo.content = content
-        xml = REXML::Document.new(logo.to_s).root
-        assert_rexml_element([], {}, content, xml)
-      end
-    end
-
-    def assert_atom_text_construct_to_s(target_class)
-      _wrap_assertion do
-        text_content = "plain text"
-        html_content = "<em>#{text_content}</em>"
-        xhtml_uri = "http://www.w3.org/1999/xhtml"
-        xhtml_em = RSS::XML::Element.new("em", nil, xhtml_uri, {}, text_content)
-        xhtml_content = RSS::XML::Element.new("div", nil, xhtml_uri,
-                                              {"xmlns" => xhtml_uri},
-                                              [xhtml_em])
-
-        text = target_class.new
-        assert_equal("", text.to_s)
-
-        text = target_class.new
-        text.type = "text"
-        assert_equal("", text.to_s)
-
-        text = target_class.new
-        text.content = text_content
-        xml = REXML::Document.new(text.to_s).root
-        assert_rexml_element([], {}, text_content, xml)
-
-        text = target_class.new
-        text.type = "text"
-        text.content = text_content
-        xml = REXML::Document.new(text.to_s).root
-        assert_rexml_element([], {"type" => "text"}, text_content, xml)
-
-        text = target_class.new
-        text.type = "html"
-        text.content = html_content
-        xml = REXML::Document.new(text.to_s).root
-        assert_rexml_element([], {"type" => "html"}, html_content, xml)
-
-        text = target_class.new
-        text.type = "xhtml"
-        text.content = xhtml_content
-        assert_equal("", text.to_s)
-
-        text = target_class.new
-        text.type = "xhtml"
-        text.__send__(target_class.xml_setter, xhtml_content)
-        xml = REXML::Document.new(text.to_s).root
-        assert_rexml_element([[xhtml_uri, "div"]], {"type" => "xhtml"},
-                             nil, xml)
-        assert_rexml_element([[xhtml_uri, "em"]], nil, nil, xml.elements[1])
-        assert_rexml_element([], {}, text_content, xml.elements[1].elements[1])
-
-        text = target_class.new
-        text.type = "xhtml"
-        text.__send__(target_class.xml_setter, xhtml_em)
-        xml = REXML::Document.new(text.to_s).root
-        assert_rexml_element([[xhtml_uri, "div"]], {"type" => "xhtml"},
-                             nil, xml)
-        assert_rexml_element([[xhtml_uri, "em"]], nil, nil, xml.elements[1])
-        assert_rexml_element([], {}, text_content, xml.elements[1].elements[1])
-      end
-    end
-
-    def assert_atom_date_construct_to_s(target_class)
-      _wrap_assertion do
-        date = target_class.new
-        assert_equal("", date.to_s)
-
-        [
-         "2003-12-13T18:30:02Z",
-         "2003-12-13T18:30:02.25Z",
-         "2003-12-13T18:30:02+01:00",
-         "2003-12-13T18:30:02.25+01:00",
-        ].each do |content|
-          date = target_class.new
-          date.content = content
-          xml = REXML::Document.new(date.to_s).root
-          assert_rexml_element([], {}, content, xml, :time)
-
-          date = target_class.new
-          date.content = Time.parse(content)
-          xml = REXML::Document.new(date.to_s).root
-          assert_rexml_element([], {}, content, xml, :time)
-        end
-      end
-    end
-
-    def assert_atom_content_to_s(target_class)
-      _wrap_assertion do
-        assert_atom_text_construct_to_s(target_class)
-        assert_atom_content_inline_other_xml_to_s(target_class)
-        assert_atom_content_inline_other_text_to_s(target_class)
-        assert_atom_content_inline_other_base64_to_s(target_class)
-        assert_atom_content_out_of_line_to_s(target_class)
-      end
-    end
-
-    def assert_atom_content_inline_other_xml_to_s(target_class)
-      _wrap_assertion do
-        content = target_class.new
-        content.type = "text/xml"
-        assert_equal("", content.to_s)
-
-        content = target_class.new
-        content.type = "text/xml"
-        content.xml = RSS::XML::Element.new("em")
-        xml = REXML::Document.new(content.to_s).root
-        assert_rexml_element([["", "em"]], {"type" => "text/xml"}, nil, xml)
-      end
-    end
-
-    def assert_atom_content_inline_other_text_to_s(target_class)
-      _wrap_assertion do
-        content = target_class.new
-        content.type = "text/plain"
-        assert_equal("", content.to_s)
-
-        content = target_class.new
-        content.type = "text/plain"
-        content.xml = RSS::XML::Element.new("em")
-        assert_equal("", content.to_s)
-
-        content = target_class.new
-        content.type = "text/plain"
-        content.content = "content"
-        xml = REXML::Document.new(content.to_s).root
-        assert_rexml_element([], {"type" => "text/plain"}, "content", xml)
-      end
-    end
-
-    def assert_atom_content_inline_other_base64_to_s(target_class)
-      _wrap_assertion do
-        require "zlib"
-
-        text = ""
-        char = "a"
-        100.times do |i|
-          text << char
-          char.succ!
-        end
-
-        type = "application/zip"
-        original_content = Zlib::Deflate.deflate(text)
-
-        content = target_class.new
-        content.type = type
-        content.content = original_content
-        xml = REXML::Document.new(content.to_s).root
-        assert_rexml_element([], {"type" => type},
-                             Base64.encode64(original_content), xml)
-      end
-    end
-
-    def assert_atom_content_out_of_line_to_s(target_class)
-      _wrap_assertion do
-        type = "application/zip"
-        src = "http://example.com/xxx.zip"
-
-        content = target_class.new
-        assert(!content.out_of_line?)
-        content.src = src
-        assert(content.out_of_line?)
-        xml = REXML::Document.new(content.to_s).root
-        assert_rexml_element([], {"src" => src}, nil, xml)
-
-        content = target_class.new
-        assert(!content.out_of_line?)
-        content.type = type
-        assert(!content.out_of_line?)
-        content.src = src
-        assert(content.out_of_line?)
-        xml = REXML::Document.new(content.to_s).root
-        assert_rexml_element([], {"type" => type, "src" => src}, nil, xml)
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_content.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_content.rb
deleted file mode 100644 (file)
index 02db591..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-require "cgi"
-require "rexml/document"
-
-require "rss-testcase"
-
-require "rss/content"
-
-module RSS
-  class TestContent < TestCase
-    def setup
-      @prefix = "content"
-      @uri = "http://purl.org/rss/1.0/modules/content/"
-      
-      @elems = {
-        :encoded => "<em>ATTENTION</em>",
-      }
-      
-      @content_nodes = @elems.collect do |name, value|
-        "<#{@prefix}:#{name}>#{CGI.escapeHTML(value.to_s)}</#{@prefix}:#{name}>"
-      end.join("\n")
-      
-      @rss10_source = make_RDF(<<-EOR, {@prefix => @uri})
-#{make_channel()}
-#{make_image()}
-#{make_item(@content_nodes)}
-#{make_textinput()}
-EOR
-
-      @rss10 = Parser.parse(@rss10_source)
-
-
-      @rss20_source = make_rss20(<<-EOR, {@prefix =>  @uri})
-#{make_channel20(make_item20(@content_nodes))}
-EOR
-
-      @rss20 = Parser.parse(@rss20_source)
-    end
-
-    def test_parser
-      assert_nothing_raised do
-        Parser.parse(@rss10_source)
-      end
-
-      assert_nothing_raised do
-        Parser.parse(@rss20_source)
-      end
-
-      @elems.each do |tag, value|
-        tag_name = "#{@prefix}:#{tag}"
-        content_encodes = make_element(tag_name, {}, value) * 2
-
-        assert_too_much_tag(tag.to_s, "item") do
-          Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
-#{make_channel}
-#{make_item(content_encodes)}
-EOR
-        end
-
-        assert_too_much_tag(tag.to_s, "item") do
-          Parser.parse(make_rss20(<<-EOR, {@prefix => @uri}))
-#{make_channel20(make_item20(content_encodes))}
-EOR
-        end
-      end
-    end
-
-    def test_accessor
-      new_value = {
-        :encoded => "<![CDATA[<it>hoge</it>]]>",
-      }
-
-      @elems.each do |name, value|
-        [@rss10, @rss20].each do |rss|
-          meth = "#{RSS::CONTENT_PREFIX}_#{name}"
-          parent = rss.items.last
-          assert_equal(value, parent.__send__(meth))
-          parent.__send__("#{meth}=", new_value[name].to_s)
-          assert_equal(new_value[name], parent.__send__(meth))
-        end
-      end
-    end
-    
-    def test_to_s
-      @elems.each do |name, value|
-        excepted = make_element("#{@prefix}:#{name}", {}, value)
-        meth = "#{RSS::CONTENT_PREFIX}_#{name}_element"
-        [@rss10, @rss20].each do |rss|
-          assert_equal(excepted, rss.items.last.__send__(meth))
-        end
-      end
-
-      [@rss10_source, @rss20_source].each do |source|
-        REXML::Document.new(source).root.each_element do |parent|
-          next unless parent.name != "item"
-          parent.each_element do |elem|
-            if elem.namespace == @uri
-              assert_equal(elem.text, @elems[elem.name.intern].to_s)
-            end
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_dublincore.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_dublincore.rb
deleted file mode 100644 (file)
index 22b8148..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-require "cgi"
-require "rexml/document"
-
-require "rss-testcase"
-
-require "rss/1.0"
-require "rss/dublincore"
-
-module RSS
-  class TestDublinCore < TestCase
-    def setup
-      @rss10_parents = [%w(channel), %w(image), %w(item), %w(textinput)]
-
-      @rss10_source = make_RDF(<<-EOR, {DC_PREFIX =>  DC_URI})
-#{make_channel(DC_NODES)}
-#{make_image(DC_NODES)}
-#{make_item(DC_NODES)}
-#{make_textinput(DC_NODES)}
-EOR
-
-      @rss20_parents = [%w(channel), %w(items last)]
-
-      @rss20_source = make_rss20(<<-EOR, {DC_PREFIX =>  DC_URI})
-#{make_channel20(DC_NODES + make_item20(DC_NODES))}
-EOR
-
-      @atom_feed_parents = [[], %w(entries last)]
-
-      @atom_feed_source = make_feed(<<-EOR, {DC_PREFIX =>  DC_URI})
-#{DC_NODES}
-#{make_entry(DC_NODES)}
-EOR
-
-      @atom_entry_parents = [[]]
-
-      @atom_entry_source = make_entry_document(<<-EOR, {DC_PREFIX =>  DC_URI})
-#{DC_NODES}
-EOR
-    end
-
-    def test_parser
-      rss10_maker = Proc.new do |content, xmlns|
-        make_RDF(<<-EOR, xmlns)
-#{make_channel(content)}
-#{make_image(content)}
-#{make_item(content)}
-#{make_textinput(content)}
-EOR
-      end
-      assert_dc_parse(@rss10_source, @rss10_parents, false, &rss10_maker)
-      assert_dc_parse(@rss10_source, @rss10_parents, true, &rss10_maker)
-
-      rss20_maker = Proc.new do |content, xmlns|
-        make_rss20(<<-EOR, xmlns)
-#{make_channel20(content + make_item20(content))}
-EOR
-      end
-      assert_dc_parse(@rss20_source, @rss20_parents, false, &rss20_maker)
-      assert_dc_parse(@rss20_source, @rss20_parents, true, &rss20_maker)
-
-      atom_feed_maker = Proc.new do |content, xmlns|
-        make_feed(<<-EOR, xmlns)
-#{content}
-#{make_entry(content)}
-EOR
-      end
-      assert_dc_parse(@atom_feed_source, @atom_feed_parents, false,
-                      &atom_feed_maker)
-      assert_dc_parse(@atom_feed_source, @atom_feed_parents, true,
-                      &atom_feed_maker)
-
-      atom_entry_maker = Proc.new do |content, xmlns|
-        make_entry_document(<<-EOR, xmlns)
-#{content}
-EOR
-      end
-      assert_dc_parse(@atom_entry_source, @atom_entry_parents, false,
-                      &atom_entry_maker)
-      assert_dc_parse(@atom_entry_source, @atom_entry_parents, true,
-                      &atom_entry_maker)
-    end
-
-    def test_singular_accessor
-      assert_dc_singular_accessor(@rss10_source, @rss10_parents)
-      assert_dc_singular_accessor(@rss20_source, @rss20_parents)
-      assert_dc_singular_accessor(@atom_feed_source, @atom_feed_parents)
-      assert_dc_singular_accessor(@atom_entry_source, @atom_entry_parents)
-    end
-
-    def test_plural_accessor
-      assert_dc_plural_accessor(@rss10_source, @rss10_parents, false)
-      assert_dc_plural_accessor(@rss10_source, @rss10_parents, true)
-
-      assert_dc_plural_accessor(@rss20_source, @rss20_parents, false)
-      assert_dc_plural_accessor(@rss20_source, @rss20_parents, true)
-
-      assert_dc_plural_accessor(@atom_feed_source, @atom_feed_parents, false)
-      assert_dc_plural_accessor(@atom_feed_source, @atom_feed_parents, true)
-
-      assert_dc_plural_accessor(@atom_entry_source, @atom_entry_parents, false)
-      assert_dc_plural_accessor(@atom_entry_source, @atom_entry_parents, true)
-    end
-
-    def test_to_s
-      assert_dc_to_s(@rss10_source, @rss10_parents, false)
-      assert_dc_to_s(@rss10_source, @rss10_parents, true)
-
-      targets = ["channel", "channel/item[3]"]
-      assert_dc_to_s(@rss20_source, @rss20_parents, false, targets)
-      assert_dc_to_s(@rss20_source, @rss20_parents, true, targets)
-
-      targets = [".", "entry"]
-      assert_dc_to_s(@atom_feed_source, @atom_feed_parents, false, targets)
-      assert_dc_to_s(@atom_feed_source, @atom_feed_parents, true, targets)
-
-      targets = ["."]
-      assert_dc_to_s(@atom_entry_source, @atom_entry_parents, false, targets)
-      assert_dc_to_s(@atom_entry_source, @atom_entry_parents, true, targets)
-    end
-
-    private
-    def dc_plural_suffix(name, check_backward_compatibility)
-      if name == :rights
-        if check_backward_compatibility
-          "es"
-        else
-          "_list"
-        end
-      else
-        "s"
-      end
-    end
-
-    def assert_dc_parse(source, parents, check_backward_compatibility, &maker)
-      assert_nothing_raised do
-        Parser.parse(source)
-      end
-
-      DC_ELEMENTS.each do |name, value|
-        parents.each do |parent_readers|
-          feed = nil
-          assert_nothing_raised do
-            tag = "#{DC_PREFIX}:#{name}"
-            dc_content = "<#{tag}>#{value}</#{tag}>\n"
-            dc_content *= 2
-            feed = Parser.parse(maker.call(dc_content, {DC_PREFIX => DC_URI}))
-          end
-          parent = chain_reader(feed, parent_readers)
-
-          plural_suffix = dc_plural_suffix(name, check_backward_compatibility)
-          plural_reader = "dc_#{name}#{plural_suffix}"
-          values = parent.__send__(plural_reader).collect do |x|
-            val = x.value
-            if val.kind_of?(String)
-              CGI.escapeHTML(val)
-            else
-              val
-            end
-          end
-          assert_equal([value, value], values)
-        end
-      end
-    end
-
-    def assert_dc_singular_accessor(source, parents)
-      feed = Parser.parse(source)
-      new_value = "hoge"
-
-      parents.each do |parent_readers|
-        parent = chain_reader(feed, parent_readers)
-        DC_ELEMENTS.each do |name, value|
-          parsed_value = parent.__send__("dc_#{name}")
-          if parsed_value.kind_of?(String)
-            parsed_value = CGI.escapeHTML(parsed_value)
-          end
-          assert_equal(value, parsed_value)
-          if name == :date
-            t = Time.iso8601("2003-01-01T02:30:23+09:00")
-            class << t
-              alias_method(:to_s, :iso8601)
-            end
-            parent.__send__("dc_#{name}=", t.iso8601)
-            assert_equal(t, parent.__send__("dc_#{name}"))
-            if parent.class.method_defined?(:date_without_dc_date=)
-              assert_nil(parent.date)
-            else
-              assert_equal(t, parent.date)
-            end
-
-            parent.date = value
-            assert_equal(value, parent.date)
-            assert_equal(value, parent.__send__("dc_#{name}"))
-          else
-            parent.__send__("dc_#{name}=", new_value)
-            assert_equal(new_value, parent.__send__("dc_#{name}"))
-          end
-        end
-      end
-    end
-
-    def assert_dc_plural_accessor(source, parents, check_backward_compatibility)
-      feed = Parser.parse(source)
-      new_value = "hoge"
-
-      DC_ELEMENTS.each do |name, value|
-        parents.each do |parent_readers|
-          parent = chain_reader(feed, parent_readers)
-          parsed_value = parent.__send__("dc_#{name}")
-          if parsed_value.kind_of?(String)
-            parsed_value = CGI.escapeHTML(parsed_value)
-          end
-          assert_equal(value, parsed_value)
-
-          plural_suffix = dc_plural_suffix(name, check_backward_compatibility)
-          plural_reader = "dc_#{name}#{plural_suffix}"
-          klass_name = "DublinCore#{Utils.to_class_name(name.to_s)}"
-          klass = DublinCoreModel.const_get(klass_name)
-          if name == :date
-            t = Time.iso8601("2003-01-01T02:30:23+09:00")
-            class << t
-              alias_method(:to_s, :iso8601)
-            end
-            elems = parent.__send__(plural_reader)
-            elems << klass.new(t.iso8601)
-            new_elems = parent.__send__(plural_reader)
-            values = new_elems.collect{|x| x.value}
-            assert_equal([parent.__send__("dc_#{name}"), t], values)
-          else
-            elems = parent.__send__(plural_reader)
-            elems << klass.new(new_value)
-            new_elems = parent.__send__(plural_reader)
-            values = new_elems.collect{|x| x.value}
-            assert_equal([parent.__send__("dc_#{name}"), new_value],
-                         values)
-          end
-        end
-      end
-    end
-
-    def assert_dc_to_s(source, parents, check_backward_compatibility,
-                       targets=nil)
-      feed = Parser.parse(source)
-
-      DC_ELEMENTS.each do |name, value|
-        excepted = "<#{DC_PREFIX}:#{name}>#{value}</#{DC_PREFIX}:#{name}>"
-        parents.each do |parent_readers|
-          parent = chain_reader(feed, parent_readers)
-          assert_equal(excepted, parent.__send__("dc_#{name}_elements"))
-        end
-
-        plural_suffix = dc_plural_suffix(name, check_backward_compatibility)
-        reader = "dc_#{name}#{plural_suffix}"
-        excepted = Array.new(2, excepted).join("\n")
-        parents.each do |parent_readers|
-          parent = chain_reader(feed, parent_readers)
-          elems = parent.__send__(reader)
-          klass_name = "DublinCore#{Utils.to_class_name(name.to_s)}"
-          klass = DublinCoreModel.const_get(klass_name)
-          elems << klass.new(parent.__send__("dc_#{name}"))
-          assert_equal(excepted, parent.__send__("dc_#{name}_elements"))
-        end
-      end
-
-      targets ||= parents.collect do |parent_readers|
-        parent_readers.first
-      end
-      feed_root = REXML::Document.new(source).root
-      targets.each do |target_xpath|
-        parent = feed_root.elements[target_xpath]
-        parent.each_element do |elem|
-          if elem.namespace == DC_URI
-            assert_equal(CGI.escapeHTML(elem.text),
-                         DC_ELEMENTS[elem.name.intern].to_s)
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_image.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_image.rb
deleted file mode 100644 (file)
index 101b7ff..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-require "cgi"
-require "rexml/document"
-
-require "rss-testcase"
-
-require "rss/1.0"
-require "rss/image"
-
-module RSS
-  class TestImage < TestCase
-
-    def setup
-      @prefix = "image"
-      @uri = "http://purl.org/rss/1.0/modules/image/"
-
-      @favicon_attrs = {
-        "rdf:about" => "http://www.kuro5hin.org/favicon.ico",
-        "#{@prefix}:size" => "small",
-      }
-      @favicon_contents = {"dc:title" => "Kuro5hin",}
-      @items = [
-        [
-          {
-            "rdf:about" => "http://www.example.org/item.png",
-            "rdf:resource" => "http://www.example.org/item",
-          },
-          {
-            "dc:title" => "Example Image",
-            "#{@prefix}:width" => "100",
-            "#{@prefix}:height" => "65",
-          },
-        ],
-        [
-          {
-            "rdf:about" => "http://www.kuro5hin.org/images/topics/culture.jpg",
-          },
-          {
-            "dc:title" => "Culture",
-            "#{@prefix}:width" => "80",
-            "#{@prefix}:height" => "50",
-          },
-        ]
-      ]
-
-
-      @channel_nodes = make_element("#{@prefix}:favicon",
-                                    @favicon_attrs,
-                                    @favicon_contents)
-      items = ""
-      @items.each do |attrs, contents|
-        image_item = make_element("#{@prefix}:item", attrs, contents)
-        items << make_item(image_item)
-      end
-
-      @ns = {
-        @prefix => @uri,
-        DC_PREFIX => DC_URI,
-      }
-      @rss_source = make_RDF(<<-EOR, @ns)
-#{make_channel(@channel_nodes)}
-#{make_image}
-#{items}
-#{make_textinput}
-EOR
-
-      @rss = Parser.parse(@rss_source)
-    end
-
-    def test_parser
-      assert_nothing_raised do
-        Parser.parse(@rss_source)
-      end
-
-      assert_too_much_tag("favicon", "channel") do
-        Parser.parse(make_RDF(<<-EOR, @ns))
-#{make_channel(@channel_nodes * 2)}
-#{make_item}
-EOR
-      end
-
-      attrs = {"rdf:about" => "http://www.example.org/item.png"}
-      contents = [["#{@prefix}:width", "80"]] * 5
-      image_item = make_element("#{@prefix}:item", attrs, contents)
-      assert_too_much_tag("width", "item") do
-        Parser.parse(make_RDF(<<-EOR, @ns))
-#{make_channel}
-#{make_item(image_item)}
-EOR
-      end
-    end
-
-    def test_favicon_accessor
-      favicon = @rss.channel.image_favicon
-      [
-        %w(about rdf:about http://example.com/favicon.ico),
-        %w(size image:size large),
-        %w(image_size image:size medium),
-      ].each do |name, full_name, new_value|
-        assert_equal(@favicon_attrs[full_name], favicon.__send__(name))
-        favicon.__send__("#{name}=", new_value)
-        assert_equal(new_value, favicon.__send__(name))
-        favicon.__send__("#{name}=", @favicon_attrs[full_name])
-        assert_equal(@favicon_attrs[full_name], favicon.__send__(name))
-      end
-
-      %w(small medium large).each do |value|
-        assert_nothing_raised do
-          favicon.size = value
-          favicon.image_size = value
-        end
-      end
-
-      %w(aaa AAA SMALL MEDIUM LARGE).each do |value|
-        args = ["#{@prefix}:favicon", value, "#{@prefix}:size"]
-        assert_not_available_value(*args) do
-          favicon.size = value
-        end
-        assert_not_available_value(*args) do
-          favicon.image_size = value
-        end
-      end
-
-      [
-        %w(dc_title dc:title sample-favicon),
-      ].each do |name, full_name, new_value|
-        assert_equal(@favicon_contents[full_name], favicon.__send__(name))
-        favicon.__send__("#{name}=", new_value)
-        assert_equal(new_value, favicon.__send__(name))
-        favicon.__send__("#{name}=", @favicon_contents[full_name])
-        assert_equal(@favicon_contents[full_name], favicon.__send__(name))
-      end
-    end
-
-    def test_item_accessor
-      @rss.items.each_with_index do |item, i|
-        image_item = item.image_item
-        attrs, contents = @items[i]
-        [
-          %w(about rdf:about http://example.com/image.png),
-          %w(resource rdf:resource http://example.com/),
-        ].each do |name, full_name, new_value|
-          assert_equal(attrs[full_name], image_item.__send__(name))
-          image_item.__send__("#{name}=", new_value)
-          assert_equal(new_value, image_item.__send__(name))
-          image_item.__send__("#{name}=", attrs[full_name])
-          assert_equal(attrs[full_name], image_item.__send__(name))
-        end
-
-        [
-          ["width", "image:width", "111"],
-          ["image_width", "image:width", "44"],
-          ["height", "image:height", "222"],
-          ["image_height", "image:height", "88"],
-        ].each do |name, full_name, new_value|
-          assert_equal(contents[full_name].to_i, image_item.__send__(name))
-          image_item.__send__("#{name}=", new_value)
-          assert_equal(new_value.to_i, image_item.__send__(name))
-          image_item.__send__("#{name}=", contents[full_name])
-          assert_equal(contents[full_name].to_i, image_item.__send__(name))
-        end
-
-        [
-          ["dc_title", "dc:title", "sample-image"],
-        ].each do |name, full_name, new_value|
-          assert_equal(contents[full_name], image_item.__send__(name))
-          image_item.__send__("#{name}=", new_value)
-          assert_equal(new_value, image_item.__send__(name))
-          image_item.__send__("#{name}=", contents[full_name])
-          assert_equal(contents[full_name], image_item.__send__(name))
-        end
-      end
-    end
-
-    def test_favicon_to_s
-      favicon = @rss.channel.image_favicon
-      expected_xml = image_xmlns_container(make_element("#{@prefix}:favicon",
-                                                        @favicon_attrs,
-                                                        @favicon_contents))
-      expected = REXML::Document.new(expected_xml)
-      actual_xml = image_xmlns_container(favicon.to_s(false, ""))
-      actual = REXML::Document.new(actual_xml)
-      assert_equal(expected.to_s, actual.to_s)
-    end
-
-    def test_item_to_s
-      @rss.items.each_with_index do |item, i|
-        attrs, contents = @items[i]
-        expected_xml = make_element("#{@prefix}:item", attrs, contents)
-        expected_xml = image_xmlns_container(expected_xml)
-        expected = REXML::Document.new(expected_xml)
-        actual_xml = image_xmlns_container(item.image_item.to_s(false, ""))
-        actual = REXML::Document.new(actual_xml)
-
-        assert_equal(expected[0].attributes, actual[0].attributes)
-
-        %w(image:height image:width dc:title).each do |name|
-          actual_target = actual.elements["//#{name}"]
-          expected_target = expected.elements["//#{name}"]
-          assert_equal(expected_target.to_s, actual_target.to_s)
-        end
-      end
-    end
-
-    private
-    def image_xmlns_container(content)
-      xmlns_container({
-                        @prefix => @uri,
-                        "dc" => "http://purl.org/dc/elements/1.1/",
-                        "rdf" => "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
-                      },
-                      content)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_inherit.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_inherit.rb
deleted file mode 100644 (file)
index f73096f..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-require "rss-testcase"
-
-require "rss/1.0"
-
-module RSS
-  class TestInherit < TestCase
-
-    class InheritedImage < RSS::RDF::Image
-      def self.indent_size; 1; end
-      def self.tag_name; 'image'; end
-    end
-
-    def setup
-      @rss = make_RDF(<<-EOR)
-#{make_channel}
-#{make_image}
-#{make_item}
-#{make_textinput}
-EOR
-    end
-
-    def test_inherit
-      rss = RSS::Parser.parse(@rss)
-      orig_image = rss.image
-      prefix = "[INHERIT]"
-      image = InheritedImage.new("#{prefix} #{orig_image.about}")
-      image.title = "#{prefix} #{orig_image.title}"
-      image.url = "#{prefix} #{orig_image.url}"
-      image.link = "#{prefix} #{orig_image.link}"
-      rss.image = image
-
-      new_rss = RSS::Parser.parse(rss.to_s)
-      new_image = new_rss.image
-      assert_equal("#{prefix} #{orig_image.about}", new_image.about)
-      assert_equal("#{prefix} #{orig_image.title}", new_image.title)
-      assert_equal("#{prefix} #{orig_image.url}", new_image.url)
-      assert_equal("#{prefix} #{orig_image.link}", new_image.link)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_itunes.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_itunes.rb
deleted file mode 100644 (file)
index 283459d..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-require "cgi"
-require "rexml/document"
-
-require "rss-testcase"
-
-require "rss/2.0"
-require "rss/itunes"
-
-module RSS
-  class TestITunes < TestCase
-    def test_author
-      assert_itunes_author(%w(channel)) do |content, xmlns|
-        make_rss20(make_channel20(content), xmlns)
-      end
-
-      assert_itunes_author(%w(items last)) do |content, xmlns|
-        make_rss20(make_channel20(make_item20(content)), xmlns)
-      end
-    end
-
-    def test_block
-      assert_itunes_block(%w(items last)) do |content, xmlns|
-        make_rss20(make_channel20(make_item20(content)), xmlns)
-      end
-    end
-
-    def test_category
-      assert_itunes_category(%w(channel)) do |content, xmlns|
-        make_rss20(make_channel20(content), xmlns)
-      end
-    end
-
-    def test_image
-      assert_itunes_image(%w(channel)) do |content, xmlns|
-        make_rss20(make_channel20(content), xmlns)
-      end
-    end
-
-    def test_duration
-      assert_itunes_duration(%w(items last)) do |content, xmlns|
-        make_rss20(make_channel20(make_item20(content)), xmlns)
-      end
-    end
-
-    def test_explicit
-      assert_itunes_explicit(%w(channel)) do |content, xmlns|
-        make_rss20(make_channel20(content), xmlns)
-      end
-
-      assert_itunes_explicit(%w(items last)) do |content, xmlns|
-        make_rss20(make_channel20(make_item20(content)), xmlns)
-      end
-    end
-
-    def test_keywords
-      assert_itunes_keywords(%w(channel)) do |content, xmlns|
-        make_rss20(make_channel20(content), xmlns)
-      end
-
-      assert_itunes_keywords(%w(items last)) do |content, xmlns|
-        make_rss20(make_channel20(make_item20(content)), xmlns)
-      end
-    end
-
-    def test_new_feed_url
-      assert_itunes_new_feed_url(%w(channel)) do |content, xmlns|
-        make_rss20(make_channel20(content), xmlns)
-      end
-    end
-
-    def test_owner
-      assert_itunes_owner(%w(channel)) do |content, xmlns|
-        make_rss20(make_channel20(content), xmlns)
-      end
-    end
-
-    def test_subtitle
-      assert_itunes_subtitle(%w(channel)) do |content, xmlns|
-        make_rss20(make_channel20(content), xmlns)
-      end
-
-      assert_itunes_subtitle(%w(items last)) do |content, xmlns|
-        make_rss20(make_channel20(make_item20(content)), xmlns)
-      end
-    end
-
-    def test_summary
-      assert_itunes_summary(%w(channel)) do |content, xmlns|
-        make_rss20(make_channel20(content), xmlns)
-      end
-
-      assert_itunes_summary(%w(items last)) do |content, xmlns|
-        make_rss20(make_channel20(make_item20(content)), xmlns)
-      end
-    end
-
-    private
-    def itunes_rss20_parse(content, &maker)
-      xmlns = {"itunes" => "http://www.itunes.com/dtds/podcast-1.0.dtd"}
-      rss20_xml = maker.call(content, xmlns)
-      ::RSS::Parser.parse(rss20_xml)
-    end
-
-    def assert_itunes_author(readers, &rss20_maker)
-      _wrap_assertion do
-        author = "John Lennon"
-        rss20 = itunes_rss20_parse(tag("itunes:author", author), &rss20_maker)
-        target = chain_reader(rss20, readers)
-        assert_equal(author, target.itunes_author)
-      end
-    end
-
-    def _assert_itunes_block(value, boolean_value, readers, &rss20_maker)
-      rss20 = itunes_rss20_parse(tag("itunes:block", value), &rss20_maker)
-      target = chain_reader(rss20, readers)
-      assert_equal(value, target.itunes_block)
-      assert_equal(boolean_value, target.itunes_block?)
-    end
-
-    def assert_itunes_block(readers, &rss20_maker)
-      _wrap_assertion do
-        _assert_itunes_block("yes", true, readers, &rss20_maker)
-        _assert_itunes_block("Yes", true, readers, &rss20_maker)
-        _assert_itunes_block("no", false, readers, &rss20_maker)
-        _assert_itunes_block("", false, readers, &rss20_maker)
-      end
-    end
-
-    def _assert_itunes_category(categories, readers, &rss20_maker)
-      cats = categories.collect do |category|
-        if category.is_a?(Array)
-          category, sub_category = category
-          tag("itunes:category",
-              tag("itunes:category", nil, {"text" => sub_category}),
-              {"text" => category})
-        else
-          tag("itunes:category", nil, {"text" => category})
-        end
-      end.join
-      rss20 = itunes_rss20_parse(cats, &rss20_maker)
-      target = chain_reader(rss20, readers)
-      actual_categories = target.itunes_categories.collect do |category|
-        cat = category.text
-        if category.itunes_categories.empty?
-          cat
-        else
-          [cat, *category.itunes_categories.collect {|c| c.text}]
-        end
-      end
-      assert_equal(categories, actual_categories)
-    end
-
-    def assert_itunes_category(readers, &rss20_maker)
-      _wrap_assertion do
-        _assert_itunes_category(["Audio Blogs"], readers, &rss20_maker)
-        _assert_itunes_category([["Arts & Entertainment", "Games"]],
-                                readers, &rss20_maker)
-        _assert_itunes_category([["Arts & Entertainment", "Games"],
-                                 ["Technology", "Computers"],
-                                 "Audio Blogs"],
-                                readers, &rss20_maker)
-      end
-    end
-
-    def assert_itunes_image(readers, &rss20_maker)
-      _wrap_assertion do
-        url = "http://example.com/podcasts/everything/AllAboutEverything.jpg"
-        content = tag("itunes:image", nil, {"href" => url})
-        rss20 = itunes_rss20_parse(content, &rss20_maker)
-        target = chain_reader(rss20, readers)
-        assert_not_nil(target.itunes_image)
-        assert_equal(url, target.itunes_image.href)
-
-        assert_missing_attribute("image", "href") do
-          content = tag("itunes:image")
-          itunes_rss20_parse(content, &rss20_maker)
-        end
-      end
-    end
-
-    def _assert_itunes_duration(hour, minute, second, value,
-                                readers, &rss20_maker)
-      content = tag("itunes:duration", value)
-      rss20 = itunes_rss20_parse(content, &rss20_maker)
-      duration = chain_reader(rss20, readers).itunes_duration
-      assert_equal(value, duration.content)
-      assert_equal(hour, duration.hour)
-      assert_equal(minute, duration.minute)
-      assert_equal(second, duration.second)
-    end
-
-    def _assert_itunes_duration_not_available_value(value, &rss20_maker)
-      assert_not_available_value("duration", value) do
-        content = tag("itunes:duration", value)
-        itunes_rss20_parse(content, &rss20_maker)
-      end
-    end
-
-    def assert_itunes_duration(readers, &rss20_maker)
-      _wrap_assertion do
-        _assert_itunes_duration(7, 14, 5, "07:14:05", readers, &rss20_maker)
-        _assert_itunes_duration(7, 14, 5, "7:14:05", readers, &rss20_maker)
-        _assert_itunes_duration(0, 4, 55, "04:55", readers, &rss20_maker)
-        _assert_itunes_duration(0, 4, 5, "4:05", readers, &rss20_maker)
-
-        _assert_itunes_duration_not_available_value("5", &rss20_maker)
-        _assert_itunes_duration_not_available_value("09:07:14:05", &rss20_maker)
-        _assert_itunes_duration_not_available_value("10:5", &rss20_maker)
-        _assert_itunes_duration_not_available_value("10:03:5", &rss20_maker)
-        _assert_itunes_duration_not_available_value("10:3:05", &rss20_maker)
-
-        _assert_itunes_duration_not_available_value("xx:xx:xx", &rss20_maker)
-      end
-    end
-
-    def _assert_itunes_explicit(explicit, value, readers, &rss20_maker)
-      content = tag("itunes:explicit", value)
-      rss20 = itunes_rss20_parse(content, &rss20_maker)
-      target = chain_reader(rss20, readers)
-      assert_equal(value, target.itunes_explicit)
-      assert_equal(explicit, target.itunes_explicit?)
-    end
-
-    def assert_itunes_explicit(readers, &rss20_maker)
-      _wrap_assertion do
-        _assert_itunes_explicit(true, "yes", readers, &rss20_maker)
-        _assert_itunes_explicit(false, "clean", readers, &rss20_maker)
-        _assert_itunes_explicit(nil, "no", readers, &rss20_maker)
-      end
-    end
-
-    def _assert_itunes_keywords(keywords, value, readers, &rss20_maker)
-      content = tag("itunes:keywords", value)
-      rss20 = itunes_rss20_parse(content, &rss20_maker)
-      target = chain_reader(rss20, readers)
-      assert_equal(keywords, target.itunes_keywords)
-    end
-
-    def assert_itunes_keywords(readers, &rss20_maker)
-      _wrap_assertion do
-        _assert_itunes_keywords(["salt"], "salt", readers, &rss20_maker)
-        _assert_itunes_keywords(["salt"], " salt ", readers, &rss20_maker)
-        _assert_itunes_keywords(["salt", "pepper", "shaker", "exciting"],
-                                "salt, pepper, shaker, exciting",
-                                readers, &rss20_maker)
-        _assert_itunes_keywords(["metric", "socket", "wrenches", "toolsalt"],
-                                "metric, socket, wrenches, toolsalt",
-                                readers, &rss20_maker)
-        _assert_itunes_keywords(["olitics", "red", "blue", "state"],
-                                "olitics, red, blue, state",
-                                readers, &rss20_maker)
-      end
-    end
-
-    def assert_itunes_new_feed_url(readers, &rss20_maker)
-      _wrap_assertion do
-        url = "http://newlocation.com/example.rss"
-        content = tag("itunes:new-feed-url", url)
-        rss20 = itunes_rss20_parse(content, &rss20_maker)
-        target = chain_reader(rss20, readers)
-        assert_equal(url, target.itunes_new_feed_url)
-      end
-    end
-
-    def _assert_itunes_owner(name, email, readers, &rss20_maker)
-      content = tag("itunes:owner",
-                    tag("itunes:name", name) + tag("itunes:email", email))
-      rss20 = itunes_rss20_parse(content, &rss20_maker)
-      owner = chain_reader(rss20, readers).itunes_owner
-      assert_equal(name, owner.itunes_name)
-      assert_equal(email, owner.itunes_email)
-    end
-
-    def assert_itunes_owner(readers, &rss20_maker)
-      _wrap_assertion do
-        _assert_itunes_owner("John Doe", "john.doe@example.com",
-                             readers, &rss20_maker)
-
-        assert_missing_tag("name", "owner")  do
-          content = tag("itunes:owner")
-          itunes_rss20_parse(content, &rss20_maker)
-        end
-
-        assert_missing_tag("name", "owner")  do
-          content = tag("itunes:owner",
-                        tag("itunes:email", "john.doe@example.com"))
-          itunes_rss20_parse(content, &rss20_maker)
-        end
-
-        assert_missing_tag("email", "owner")  do
-          content = tag("itunes:owner", tag("itunes:name", "John Doe"))
-          itunes_rss20_parse(content, &rss20_maker)
-        end
-      end
-    end
-
-    def _assert_itunes_subtitle(value, readers, &rss20_maker)
-      content = tag("itunes:subtitle", value)
-      rss20 = itunes_rss20_parse(content, &rss20_maker)
-      target = chain_reader(rss20, readers)
-      assert_equal(value, target.itunes_subtitle)
-    end
-
-    def assert_itunes_subtitle(readers, &rss20_maker)
-      _wrap_assertion do
-        _assert_itunes_subtitle("A show about everything", readers, &rss20_maker)
-        _assert_itunes_subtitle("A short primer on table spices",
-                                readers, &rss20_maker)
-        _assert_itunes_subtitle("Comparing socket wrenches is fun!",
-                                readers, &rss20_maker)
-        _assert_itunes_subtitle("Red + Blue != Purple", readers, &rss20_maker)
-      end
-    end
-
-    def _assert_itunes_summary(value, readers, &rss20_maker)
-      content = tag("itunes:summary", value)
-      rss20 = itunes_rss20_parse(content, &rss20_maker)
-      target = chain_reader(rss20, readers)
-      assert_equal(value, target.itunes_summary)
-    end
-
-    def assert_itunes_summary(readers, &rss20_maker)
-      _wrap_assertion do
-        _assert_itunes_summary("All About Everything is a show about " +
-                               "everything. Each week we dive into any " +
-                               "subject known to man and talk about it as " +
-                               "much as we can. Look for our Podcast in " +
-                               "the iTunes Music Store",
-                               readers, &rss20_maker)
-        _assert_itunes_summary("This week we talk about salt and pepper " +
-                               "shakers, comparing and contrasting pour " +
-                               "rates, construction materials, and overall " +
-                               "aesthetics. Come and join the party!",
-                               readers, &rss20_maker)
-        _assert_itunes_summary("This week we talk about metric vs. old " +
-                               "english socket wrenches. Which one is " +
-                               "better? Do you really need both? Get all " +
-                               "of your answers here.",
-                               readers, &rss20_maker)
-        _assert_itunes_summary("This week we talk about surviving in a " +
-                               "Red state if you're a Blue person. Or " +
-                               "vice versa.",
-                               readers, &rss20_maker)
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_0.9.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_0.9.rb
deleted file mode 100644 (file)
index c211bf6..0000000
+++ /dev/null
@@ -1,438 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestMaker09 < TestCase
-
-    def test_rss
-      rss = RSS::Maker.make("0.91")
-      assert_nil(rss)
-      
-      rss = RSS::Maker.make("0.9") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_image(maker)
-      end
-      assert_equal("0.92", rss.rss_version)
-      
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_image(maker)
-      end
-      assert_equal("0.91", rss.rss_version)
-
-      
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_image(maker)
-
-        maker.encoding = "EUC-JP"
-      end
-      assert_equal("0.91", rss.rss_version)
-      assert_equal("EUC-JP", rss.encoding)
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_image(maker)
-
-        maker.standalone = "yes"
-      end
-      assert_equal("0.91", rss.rss_version)
-      assert_equal("yes", rss.standalone)
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_image(maker)
-
-        maker.encoding = "EUC-JP"
-        maker.standalone = "yes"
-      end
-      assert_equal("0.91", rss.rss_version)
-      assert_equal("EUC-JP", rss.encoding)
-      assert_equal("yes", rss.standalone)
-    end
-
-    def test_channel
-      title = "fugafuga"
-      link = "http://hoge.com"
-      description = "fugafugafugafuga"
-      language = "ja"
-      copyright = "foo"
-      managingEditor = "bar"
-      webMaster = "web master"
-      rating = '(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l gen true comment "RSACi North America Server" for "http://www.rsac.org" on "1996.04.16T08:15-0500" r (n 0 s 0 v 0 l 0))'
-      docs = "http://foo.com/doc"
-      skipDays = [
-        "Sunday",
-        "Monday",
-      ]
-      skipHours = [
-        "0",
-        "13",
-      ]
-      pubDate = Time.now
-      lastBuildDate = Time.now
-
-      image_url = "http://example.com/logo.png"
-      image_title = "Logo"
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        maker.channel.title = title
-        maker.channel.link = link
-        maker.channel.description = description
-        maker.channel.language = language
-        maker.channel.copyright = copyright
-        maker.channel.managingEditor = managingEditor
-        maker.channel.webMaster = webMaster
-        maker.channel.rating = rating
-        maker.channel.docs = docs
-        maker.channel.pubDate = pubDate
-        maker.channel.lastBuildDate = lastBuildDate
-
-        skipDays.each do |day|
-          maker.channel.skipDays.new_day do |new_day|
-            new_day.content = day
-          end
-        end
-        skipHours.each do |hour|
-          maker.channel.skipHours.new_hour do |new_hour|
-            new_hour.content = hour
-          end
-        end
-
-        maker.image.url = image_url
-        maker.image.title = image_title
-      end
-      channel = rss.channel
-      
-      assert_equal(title, channel.title)
-      assert_equal(link, channel.link)
-      assert_equal(description, channel.description)
-      assert_equal(language, channel.language)
-      assert_equal(copyright, channel.copyright)
-      assert_equal(managingEditor, channel.managingEditor)
-      assert_equal(webMaster, channel.webMaster)
-      assert_equal(rating, channel.rating)
-      assert_equal(docs, channel.docs)
-      assert_equal(pubDate, channel.pubDate)
-      assert_equal(pubDate, channel.date)
-      assert_equal(lastBuildDate, channel.lastBuildDate)
-
-      skipDays.each_with_index do |day, i|
-        assert_equal(day, channel.skipDays.days[i].content)
-      end
-      skipHours.each_with_index do |hour, i|
-        assert_equal(hour.to_i, channel.skipHours.hours[i].content)
-      end
-      
-      assert(channel.items.empty?)
-
-      assert_equal(image_url, channel.image.url)
-      assert_equal(image_title, channel.image.title)
-      assert_equal(link, channel.image.link)
-
-      assert_nil(channel.textInput)
-    end
-
-    def test_not_valid_channel
-      title = "fugafuga"
-      link = "http://hoge.com"
-      description = "fugafugafugafuga"
-      language = "ja"
-
-      assert_not_set_error("maker.channel", %w(title)) do
-        RSS::Maker.make("0.91") do |maker|
-          # maker.channel.title = title
-          maker.channel.link = link
-          maker.channel.description = description
-          maker.channel.language = language
-        end
-      end
-
-      assert_not_set_error("maker.channel", %w(link)) do
-        RSS::Maker.make("0.91") do |maker|
-          maker.channel.title = title
-          # maker.channel.link = link
-          maker.channel.link = nil
-          maker.channel.description = description
-          maker.channel.language = language
-        end
-      end
-
-      assert_not_set_error("maker.channel", %w(description)) do
-        RSS::Maker.make("0.91") do |maker|
-          maker.channel.title = title
-          maker.channel.link = link
-          # maker.channel.description = description
-          maker.channel.language = language
-        end
-      end
-
-      assert_not_set_error("maker.channel", %w(language)) do
-        RSS::Maker.make("0.91") do |maker|
-          maker.channel.title = title
-          maker.channel.link = link
-          maker.channel.description = description
-          # maker.channel.language = language
-        end
-      end
-    end
-    
-    def test_image
-      title = "fugafuga"
-      link = "http://hoge.com"
-      url = "http://hoge.com/hoge.png"
-      width = "144"
-      height = "400"
-      description = "an image"
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        maker.channel.link = link
-        
-        maker.image.title = title
-        maker.image.url = url
-        maker.image.width = width
-        maker.image.height = height
-        maker.image.description = description
-      end
-      image = rss.image
-      assert_equal(title, image.title)
-      assert_equal(link, image.link)
-      assert_equal(url, image.url)
-      assert_equal(width.to_i, image.width)
-      assert_equal(height.to_i, image.height)
-      assert_equal(description, image.description)
-
-      assert_not_set_error("maker.channel", %w(description title language)) do
-        RSS::Maker.make("0.91") do |maker|
-          # setup_dummy_channel(maker)
-          maker.channel.link = link
-        
-          maker.image.title = title
-          maker.image.url = url
-          maker.image.width = width
-          maker.image.height = height
-          maker.image.description = description
-        end
-      end
-    end
-
-    def test_not_valid_image
-      title = "fugafuga"
-      link = "http://hoge.com"
-      url = "http://hoge.com/hoge.png"
-      width = "144"
-      height = "400"
-      description = "an image"
-
-      assert_not_set_error("maker.image", %w(title)) do
-        RSS::Maker.make("0.91") do |maker|
-          setup_dummy_channel(maker)
-          maker.channel.link = link
-
-          # maker.image.title = title
-          maker.image.url = url
-          maker.image.width = width
-          maker.image.height = height
-          maker.image.description = description
-        end
-      end
-
-      assert_not_set_error("maker.channel", %w(link)) do
-        RSS::Maker.make("0.91") do |maker|
-          setup_dummy_channel(maker)
-          # maker.channel.link = link
-          maker.channel.link = nil
-        
-          maker.image.title = title
-          maker.image.url = url
-          maker.image.width = width
-          maker.image.height = height
-          maker.image.description = description
-        end
-      end
-
-      assert_not_set_error("maker.image", %w(url)) do
-        RSS::Maker.make("0.91") do |maker|
-          setup_dummy_channel(maker)
-          maker.channel.link = link
-
-          maker.image.title = title
-          # maker.image.url = url
-          maker.image.width = width
-          maker.image.height = height
-          maker.image.description = description
-        end
-      end
-    end
-    
-    def test_items(with_convenience_way=true)
-      title = "TITLE"
-      link = "http://hoge.com/"
-      description = "text hoge fuga"
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_image(maker)
-      end
-      assert(rss.channel.items.empty?)
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        
-        maker.items.new_item do |item|
-          item.title = title
-          item.link = link
-          # item.description = description
-        end
-
-        setup_dummy_image(maker)
-      end
-      assert_equal(1, rss.channel.items.size)
-      item = rss.channel.items.first
-      assert_equal(title, item.title)
-      assert_equal(link, item.link)
-      assert_nil(item.description)
-
-
-      item_size = 5
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        
-        item_size.times do |i|
-          maker.items.new_item do |_item|
-            _item.title = "#{title}#{i}"
-            _item.link = "#{link}#{i}"
-            _item.description = "#{description}#{i}"
-          end
-        end
-        maker.items.do_sort = true
-
-        setup_dummy_image(maker)
-      end
-      assert_equal(item_size, rss.items.size)
-      rss.channel.items.each_with_index do |_item, i|
-        assert_equal("#{title}#{i}", _item.title)
-        assert_equal("#{link}#{i}", _item.link)
-        assert_equal("#{description}#{i}", _item.description)
-      end
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        
-        item_size.times do |i|
-          maker.items.new_item do |_item|
-            _item.title = "#{title}#{i}"
-            _item.link = "#{link}#{i}"
-            _item.description = "#{description}#{i}"
-          end
-        end
-        maker.items.do_sort = Proc.new do |x, y|
-          if with_convenience_way
-            y.title[-1] <=> x.title[-1]
-          else
-            y.title {|t| t.content[-1]} <=> x.title {|t| t.content[-1]}
-          end
-        end
-
-        setup_dummy_image(maker)
-      end
-      assert_equal(item_size, rss.items.size)
-      rss.channel.items.reverse.each_with_index do |_item, i|
-        assert_equal("#{title}#{i}", _item.title)
-        assert_equal("#{link}#{i}", _item.link)
-        assert_equal("#{description}#{i}", _item.description)
-      end
-    end
-
-    def test_items_with_new_api_since_018
-      test_items(false)
-    end
-
-    def test_textInput
-      title = "fugafuga"
-      description = "text hoge fuga"
-      name = "hoge"
-      link = "http://hoge.com"
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_image(maker)
-
-        maker.textinput.title = title
-        maker.textinput.description = description
-        maker.textinput.name = name
-        maker.textinput.link = link
-      end
-      textInput = rss.channel.textInput
-      assert_equal(title, textInput.title)
-      assert_equal(description, textInput.description)
-      assert_equal(name, textInput.name)
-      assert_equal(link, textInput.link)
-
-      assert_not_set_error("maker.channel",
-                           %w(link language description title)) do
-        RSS::Maker.make("0.91") do |maker|
-          # setup_dummy_channel(maker)
-
-          maker.textinput.title = title
-          maker.textinput.description = description
-          maker.textinput.name = name
-          maker.textinput.link = link
-        end
-      end
-    end
-    
-    def test_not_valid_textInput
-      title = "fugafuga"
-      description = "text hoge fuga"
-      name = "hoge"
-      link = "http://hoge.com"
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_image(maker)
-
-        # maker.textinput.title = title
-        maker.textinput.description = description
-        maker.textinput.name = name
-        maker.textinput.link = link
-      end
-      assert_nil(rss.channel.textInput)
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_image(maker)
-
-        maker.textinput.title = title
-        # maker.textinput.description = description
-        maker.textinput.name = name
-        maker.textinput.link = link
-      end
-      assert_nil(rss.channel.textInput)
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_image(maker)
-
-        maker.textinput.title = title
-        maker.textinput.description = description
-        # maker.textinput.name = name
-        maker.textinput.link = link
-      end
-      assert_nil(rss.channel.textInput)
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_image(maker)
-
-        maker.textinput.title = title
-        maker.textinput.description = description
-        maker.textinput.name = name
-        # maker.textinput.link = link
-      end
-      assert_nil(rss.channel.textInput)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_1.0.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_1.0.rb
deleted file mode 100644 (file)
index 60cc370..0000000
+++ /dev/null
@@ -1,484 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestMaker10 < TestCase
-
-    def test_rdf
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-      end
-      assert_equal("1.0", rss.rss_version)
-      
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        maker.encoding = "EUC-JP"
-
-        setup_dummy_item(maker)
-      end
-      assert_equal("1.0", rss.rss_version)
-      assert_equal("EUC-JP", rss.encoding)
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        maker.standalone = "yes"
-
-        setup_dummy_item(maker)
-      end
-      assert_equal("1.0", rss.rss_version)
-      assert_equal("yes", rss.standalone)
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        maker.encoding = "EUC-JP"
-        maker.standalone = "yes"
-
-        setup_dummy_item(maker)
-      end
-      assert_equal("1.0", rss.rss_version)
-      assert_equal("EUC-JP", rss.encoding)
-      assert_equal("yes", rss.standalone)
-    end
-
-    def test_channel
-      about = "http://hoge.com"
-      title = "fugafuga"
-      link = "http://hoge.com"
-      description = "fugafugafugafuga"
-
-      rss = RSS::Maker.make("1.0")
-      assert_nil(rss)
-      
-      rss = RSS::Maker.make("1.0") do |maker|
-        maker.channel.about = about
-        maker.channel.title = title
-        maker.channel.link = link
-        maker.channel.description = description
-
-        setup_dummy_item(maker)
-      end
-      channel = rss.channel
-      assert_equal(about, channel.about)
-      assert_equal(title, channel.title)
-      assert_equal(link, channel.link)
-      assert_equal(description, channel.description)
-      assert_equal(1, channel.items.Seq.lis.size)
-      assert_nil(channel.image)
-      assert_nil(channel.textinput)
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        maker.channel.about = about
-        maker.channel.title = title
-        maker.channel.link = link
-        maker.channel.description = description
-
-        setup_dummy_image(maker)
-
-        setup_dummy_textinput(maker)
-
-        setup_dummy_item(maker)
-      end
-      channel = rss.channel
-      assert_equal(about, channel.about)
-      assert_equal(title, channel.title)
-      assert_equal(link, channel.link)
-      assert_equal(description, channel.description)
-      assert_equal(1, channel.items.Seq.lis.size)
-      assert_equal(rss.image.about, channel.image.resource)
-      assert_equal(rss.textinput.about, channel.textinput.resource)
-    end
-
-    def test_not_valid_channel
-      about = "http://hoge.com"
-      title = "fugafuga"
-      link = "http://hoge.com"
-      description = "fugafugafugafuga"
-
-      assert_not_set_error("maker.channel", %w(about)) do
-        RSS::Maker.make("1.0") do |maker|
-          # maker.channel.about = about
-          maker.channel.title = title
-          maker.channel.link = link
-          maker.channel.description = description
-        end
-      end
-
-      assert_not_set_error("maker.channel", %w(title)) do
-        RSS::Maker.make("1.0") do |maker|
-          maker.channel.about = about
-          # maker.channel.title = title
-          maker.channel.link = link
-          maker.channel.description = description
-        end
-      end
-
-      assert_not_set_error("maker.channel", %w(link)) do
-        RSS::Maker.make("1.0") do |maker|
-          maker.channel.about = about
-          maker.channel.title = title
-          # maker.channel.link = link
-          maker.channel.description = description
-        end
-      end
-
-      assert_not_set_error("maker.channel", %w(description)) do
-        RSS::Maker.make("1.0") do |maker|
-          maker.channel.about = about
-          maker.channel.title = title
-          maker.channel.link = link
-          # maker.channel.description = description
-        end
-      end
-    end
-    
-    
-    def test_image
-      title = "fugafuga"
-      link = "http://hoge.com"
-      url = "http://hoge.com/hoge.png"
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        maker.channel.link = link
-        
-        maker.image.title = title
-        maker.image.url = url
-
-        setup_dummy_item(maker)
-      end
-      image = rss.image
-      assert_equal(url, image.about)
-      assert_equal(url, rss.channel.image.resource)
-      assert_equal(title, image.title)
-      assert_equal(link, image.link)
-      assert_equal(url, image.url)
-
-      assert_not_set_error("maker.channel", %w(about title description)) do
-        RSS::Maker.make("1.0") do |maker|
-          # setup_dummy_channel(maker)
-          maker.channel.link = link
-          
-          maker.image.title = title
-          maker.image.url = url
-        end
-      end
-    end
-
-    def test_not_valid_image
-      title = "fugafuga"
-      link = "http://hoge.com"
-      url = "http://hoge.com/hoge.png"
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        maker.channel.link = link
-        
-        # maker.image.url = url
-        maker.image.title = title
-
-        setup_dummy_item(maker)
-      end
-      assert_nil(rss.channel.image)
-      assert_nil(rss.image)
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        maker.channel.link = link
-        
-        maker.image.url = url
-        # maker.image.title = title
-
-        setup_dummy_item(maker)
-      end
-      assert_nil(rss.channel.image)
-      assert_nil(rss.image)
-
-      assert_not_set_error("maker.channel", %w(link)) do
-        RSS::Maker.make("1.0") do |maker|
-          setup_dummy_channel(maker)
-          # maker.channel.link = link
-          maker.channel.link = nil
-          
-          maker.image.url = url
-          maker.image.title = title
-
-          setup_dummy_item(maker)
-        end
-      end
-    end
-
-    def test_items(with_convenience_way=true)
-      title = "TITLE"
-      link = "http://hoge.com/"
-      description = "text hoge fuga"
-
-      assert_not_set_error("maker", %w(items)) do
-        RSS::Maker.make("1.0") do |maker|
-          setup_dummy_channel(maker)
-        end
-      end
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        maker.items.new_item do |item|
-          item.title = title
-          item.link = link
-          # item.description = description
-        end
-      end
-      assert_equal(1, rss.items.size)
-      item = rss.items.first
-      assert_equal(link, item.about)
-      assert_equal(title, item.title)
-      assert_equal(link, item.link)
-      assert_nil(item.description)
-
-      
-      item_size = 5
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        item_size.times do |i|
-          maker.items.new_item do |_item|
-            _item.title = "#{title}#{i}"
-            _item.link = "#{link}#{i}"
-            _item.description = "#{description}#{i}"
-          end
-        end
-        maker.items.do_sort = true
-      end
-      assert_equal(item_size, rss.items.size)
-      rss.items.each_with_index do |_item, i|
-        assert_equal("#{link}#{i}", _item.about)
-        assert_equal("#{title}#{i}", _item.title)
-        assert_equal("#{link}#{i}", _item.link)
-        assert_equal("#{description}#{i}", _item.description)
-      end
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        item_size.times do |i|
-          maker.items.new_item do |_item|
-            _item.title = "#{title}#{i}"
-            _item.link = "#{link}#{i}"
-            _item.description = "#{description}#{i}"
-          end
-        end
-        maker.items.do_sort = Proc.new do |x, y|
-          if with_convenience_way
-            y.title[-1] <=> x.title[-1]
-          else
-            y.title {|t| t.content[-1]} <=> x.title {|t| t.content[-1]}
-          end
-        end
-      end
-      assert_equal(item_size, rss.items.size)
-      rss.items.reverse.each_with_index do |_item, i|
-        assert_equal("#{link}#{i}", _item.about)
-        assert_equal("#{title}#{i}", _item.title)
-        assert_equal("#{link}#{i}", _item.link)
-        assert_equal("#{description}#{i}", _item.description)
-      end
-
-      max_size = item_size / 2
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        item_size.times do |i|
-          maker.items.new_item do |_item|
-            _item.title = "#{title}#{i}"
-            _item.link = "#{link}#{i}"
-            _item.description = "#{description}#{i}"
-          end
-        end
-        maker.items.max_size = max_size
-      end
-      assert_equal(max_size, rss.items.size)
-      rss.items.each_with_index do |_item, i|
-        assert_equal("#{link}#{i}", _item.about)
-        assert_equal("#{title}#{i}", _item.title)
-        assert_equal("#{link}#{i}", _item.link)
-        assert_equal("#{description}#{i}", _item.description)
-      end
-
-      max_size = 0
-      assert_not_set_error("maker", %w(items)) do
-        RSS::Maker.make("1.0") do |maker|
-          setup_dummy_channel(maker)
-
-          item_size.times do |i|
-            maker.items.new_item do |_item|
-              _item.title = "#{title}#{i}"
-              _item.link = "#{link}#{i}"
-              _item.description = "#{description}#{i}"
-            end
-          end
-          maker.items.max_size = max_size
-        end
-      end
-
-      max_size = -2
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        item_size.times do |i|
-          maker.items.new_item do |_item|
-            _item.title = "#{title}#{i}"
-            _item.link = "#{link}#{i}"
-            _item.description = "#{description}#{i}"
-          end
-        end
-        maker.items.max_size = max_size
-      end
-      assert_equal(item_size + max_size + 1, rss.items.size)
-      rss.items.each_with_index do |_item, i|
-        assert_equal("#{link}#{i}", _item.about)
-        assert_equal("#{title}#{i}", _item.title)
-        assert_equal("#{link}#{i}", _item.link)
-        assert_equal("#{description}#{i}", _item.description)
-      end
-    end
-
-    def test_items_with_new_api_since_018
-      test_items(false)
-    end
-
-    def test_not_valid_items
-      title = "TITLE"
-      link = "http://hoge.com/"
-
-      assert_not_set_error("maker.item", %w(title)) do
-        RSS::Maker.make("1.0") do |maker|
-          setup_dummy_channel(maker)
-
-          maker.items.new_item do |item|
-            # item.title = title
-            item.link = link
-          end
-        end
-      end
-
-      assert_not_set_error("maker.item", %w(link)) do
-        RSS::Maker.make("1.0") do |maker|
-          setup_dummy_channel(maker)
-
-          maker.items.new_item do |item|
-            item.title = title
-            # item.link = link
-          end
-        end
-      end
-
-      assert_not_set_error("maker.item", %w(title link)) do
-        RSS::Maker.make("1.0") do |maker|
-          setup_dummy_channel(maker)
-
-          maker.items.new_item do |item|
-            # item.title = title
-            # item.link = link
-          end
-        end
-      end
-    end
-
-    def test_textinput
-      title = "fugafuga"
-      description = "text hoge fuga"
-      name = "hoge"
-      link = "http://hoge.com"
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        maker.textinput.link = link
-        maker.textinput.title = title
-        maker.textinput.description = description
-        maker.textinput.name = name
-
-        setup_dummy_item(maker)
-      end
-      textinput = rss.textinput
-      assert_equal(link, textinput.about)
-      assert_equal(link, rss.channel.textinput.resource)
-      assert_equal(title, textinput.title)
-      assert_equal(name, textinput.name)
-      assert_equal(description, textinput.description)
-      assert_equal(link, textinput.link)
-
-      assert_not_set_error("maker.channel", %w(about link description title)) do
-        RSS::Maker.make("1.0") do |maker|
-          # setup_dummy_channel(maker)
-
-          maker.textinput.link = link
-          maker.textinput.title = title
-          maker.textinput.description = description
-          maker.textinput.name = name
-        end
-      end
-    end
-    
-    def test_not_valid_textinput
-      title = "fugafuga"
-      description = "text hoge fuga"
-      name = "hoge"
-      link = "http://hoge.com"
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-
-        # maker.textinput.link = link
-        maker.textinput.title = title
-        maker.textinput.description = description
-        maker.textinput.name = name
-
-        setup_dummy_item(maker)
-      end
-      assert_nil(rss.channel.textinput)
-      assert_nil(rss.textinput)
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        maker.textinput.link = link
-        # maker.textinput.title = title
-        maker.textinput.description = description
-        maker.textinput.name = name
-
-        setup_dummy_item(maker)
-      end
-      assert_nil(rss.channel.textinput)
-      assert_nil(rss.textinput)
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        maker.textinput.link = link
-        maker.textinput.title = title
-        # maker.textinput.description = description
-        maker.textinput.name = name
-
-        setup_dummy_item(maker)
-      end
-      assert_nil(rss.channel.textinput)
-      assert_nil(rss.textinput)
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        maker.textinput.link = link
-        maker.textinput.title = title
-        maker.textinput.description = description
-        # maker.textinput.name = name
-
-        setup_dummy_item(maker)
-      end
-      assert_nil(rss.channel.textinput)
-      assert_nil(rss.textinput)
-    end
-
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_2.0.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_2.0.rb
deleted file mode 100644 (file)
index c338e34..0000000
+++ /dev/null
@@ -1,705 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestMaker20 < TestCase
-
-    def test_rss
-      rss = RSS::Maker.make("2.0")
-      assert_nil(rss)
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-      end
-      assert_equal("2.0", rss.rss_version)
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        maker.encoding = "EUC-JP"
-      end
-      assert_equal("2.0", rss.rss_version)
-      assert_equal("EUC-JP", rss.encoding)
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        maker.standalone = "yes"
-      end
-      assert_equal("2.0", rss.rss_version)
-      assert_equal("yes", rss.standalone)
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        maker.encoding = "EUC-JP"
-        maker.standalone = "yes"
-      end
-      assert_equal("2.0", rss.rss_version)
-      assert_equal("EUC-JP", rss.encoding)
-      assert_equal("yes", rss.standalone)
-    end
-
-    def test_channel
-      title = "fugafuga"
-      link = "http://hoge.com"
-      description = "fugafugafugafuga"
-      language = "ja"
-      copyright = "foo"
-      managingEditor = "bar"
-      webMaster = "web master"
-      rating = '(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l gen true comment "RSACi North America Server" for "http://www.rsac.org" on "1996.04.16T08:15-0500" r (n 0 s 0 v 0 l 0))'
-      docs = "http://foo.com/doc"
-      skipDays = [
-        "Sunday",
-        "Monday",
-      ]
-      skipHours = [
-        "0",
-        "13",
-      ]
-      pubDate = Time.now
-      lastBuildDate = Time.now
-      categories = [
-        "Nespapers",
-        "misc",
-      ]
-      generator = "RSS Maker"
-      ttl = "60"
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        maker.channel.title = title
-        maker.channel.link = link
-        maker.channel.description = description
-        maker.channel.language = language
-        maker.channel.copyright = copyright
-        maker.channel.managingEditor = managingEditor
-        maker.channel.webMaster = webMaster
-        maker.channel.rating = rating
-        maker.channel.docs = docs
-        maker.channel.pubDate = pubDate
-        maker.channel.lastBuildDate = lastBuildDate
-
-        skipDays.each do |day|
-          maker.channel.skipDays.new_day do |new_day|
-            new_day.content = day
-          end
-        end
-        skipHours.each do |hour|
-          maker.channel.skipHours.new_hour do |new_hour|
-            new_hour.content = hour
-          end
-        end
-        
-        categories.each do |category|
-          maker.channel.categories.new_category do |new_category|
-            new_category.content = category
-          end
-        end
-        
-        maker.channel.generator = generator
-        maker.channel.ttl = ttl
-      end
-      channel = rss.channel
-      
-      assert_equal(title, channel.title)
-      assert_equal(link, channel.link)
-      assert_equal(description, channel.description)
-      assert_equal(language, channel.language)
-      assert_equal(copyright, channel.copyright)
-      assert_equal(managingEditor, channel.managingEditor)
-      assert_equal(webMaster, channel.webMaster)
-      assert_equal(rating, channel.rating)
-      assert_equal(docs, channel.docs)
-      assert_equal(pubDate, channel.pubDate)
-      assert_equal(pubDate, channel.date)
-      assert_equal(lastBuildDate, channel.lastBuildDate)
-
-      skipDays.each_with_index do |day, i|
-        assert_equal(day, channel.skipDays.days[i].content)
-      end
-      skipHours.each_with_index do |hour, i|
-        assert_equal(hour.to_i, channel.skipHours.hours[i].content)
-      end
-      
-      channel.categories.each_with_index do |category, i|
-        assert_equal(categories[i], category.content)
-      end
-      
-      assert_equal(generator, channel.generator)
-      assert_equal(ttl.to_i, channel.ttl)
-
-      assert(channel.items.empty?)
-      assert_nil(channel.image)
-      assert_nil(channel.textInput)
-    end
-
-    def test_not_valid_channel
-      title = "fugafuga"
-      link = "http://hoge.com"
-      description = "fugafugafugafuga"
-      language = "ja"
-      
-      assert_not_set_error("maker.channel", %w(title)) do
-        RSS::Maker.make("2.0") do |maker|
-          # maker.channel.title = title
-          maker.channel.link = link
-          maker.channel.description = description
-          maker.channel.language = language
-        end
-      end
-
-      assert_not_set_error("maker.channel", %w(link)) do
-        RSS::Maker.make("2.0") do |maker|
-          maker.channel.title = title
-          # maker.channel.link = link
-          maker.channel.description = description
-          maker.channel.language = language
-        end
-      end
-
-      assert_not_set_error("maker.channel", %w(description)) do
-        RSS::Maker.make("2.0") do |maker|
-          maker.channel.title = title
-          maker.channel.link = link
-          # maker.channel.description = description
-          maker.channel.language = language
-        end
-      end
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        maker.channel.title = title
-        maker.channel.link = link
-        maker.channel.description = description
-        # maker.channel.language = language
-      end
-      assert_not_nil(rss)
-    end
-
-    
-    def test_cloud
-      domain = "rpc.sys.com"
-      port = "80"
-      path = "/RPC2"
-      registerProcedure = "myCloud.rssPleaseNotify"
-      protocol = "xml-rpc"
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-
-        maker.channel.cloud.domain = domain
-        maker.channel.cloud.port = port
-        maker.channel.cloud.path = path
-        maker.channel.cloud.registerProcedure = registerProcedure
-        maker.channel.cloud.protocol = protocol
-      end
-      cloud = rss.channel.cloud
-      assert_equal(domain, cloud.domain)
-      assert_equal(port.to_i, cloud.port)
-      assert_equal(path, cloud.path)
-      assert_equal(registerProcedure, cloud.registerProcedure)
-      assert_equal(protocol, cloud.protocol)
-    end
-    
-    def test_not_valid_cloud
-      domain = "rpc.sys.com"
-      port = "80"
-      path = "/RPC2"
-      registerProcedure = "myCloud.rssPleaseNotify"
-      protocol = "xml-rpc"
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-
-        # maker.channel.cloud.domain = domain
-        maker.channel.cloud.port = port
-        maker.channel.cloud.path = path
-        maker.channel.cloud.registerProcedure = registerProcedure
-        maker.channel.cloud.protocol = protocol
-      end
-      assert_nil(rss.channel.cloud)
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-
-        maker.channel.cloud.domain = domain
-        # maker.channel.cloud.port = port
-        maker.channel.cloud.path = path
-        maker.channel.cloud.registerProcedure = registerProcedure
-        maker.channel.cloud.protocol = protocol
-      end
-      assert_nil(rss.channel.cloud)
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-
-        maker.channel.cloud.domain = domain
-        maker.channel.cloud.port = port
-        # maker.channel.cloud.path = path
-        maker.channel.cloud.registerProcedure = registerProcedure
-        maker.channel.cloud.protocol = protocol
-      end
-      assert_nil(rss.channel.cloud)
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-
-        maker.channel.cloud.domain = domain
-        maker.channel.cloud.port = port
-        maker.channel.cloud.path = path
-        # maker.channel.cloud.registerProcedure = registerProcedure
-        maker.channel.cloud.protocol = protocol
-      end
-      assert_nil(rss.channel.cloud)
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-
-        maker.channel.cloud.domain = domain
-        maker.channel.cloud.port = port
-        maker.channel.cloud.path = path
-        maker.channel.cloud.registerProcedure = registerProcedure
-        # maker.channel.cloud.protocol = protocol
-      end
-      assert_nil(rss.channel.cloud)
-    end
-    
-
-    def test_image
-      title = "fugafuga"
-      link = "http://hoge.com"
-      url = "http://hoge.com/hoge.png"
-      width = "144"
-      height = "400"
-      description = "an image"
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        maker.channel.link = link
-        
-        maker.image.title = title
-        maker.image.url = url
-        maker.image.width = width
-        maker.image.height = height
-        maker.image.description = description
-      end
-      image = rss.image
-      assert_equal(title, image.title)
-      assert_equal(link, image.link)
-      assert_equal(url, image.url)
-      assert_equal(width.to_i, image.width)
-      assert_equal(height.to_i, image.height)
-      assert_equal(description, image.description)
-
-      assert_not_set_error("maker.channel", %w(title description)) do
-        RSS::Maker.make("2.0") do |maker|
-          # setup_dummy_channel(maker)
-          maker.channel.link = link
-        
-          maker.image.title = title
-          maker.image.url = url
-          maker.image.width = width
-          maker.image.height = height
-          maker.image.description = description
-        end
-      end
-    end
-
-    def test_not_valid_image
-      title = "fugafuga"
-      link = "http://hoge.com"
-      url = "http://hoge.com/hoge.png"
-      width = "144"
-      height = "400"
-      description = "an image"
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        maker.channel.link = link
-        
-        # maker.image.title = title
-        maker.image.url = url
-        maker.image.width = width
-        maker.image.height = height
-        maker.image.description = description
-      end
-      assert_nil(rss.image)
-
-      assert_not_set_error("maker.channel", %w(link)) do
-        RSS::Maker.make("2.0") do |maker|
-          setup_dummy_channel(maker)
-          # maker.channel.link = link
-          maker.channel.link = nil
-        
-          maker.image.title = title
-          maker.image.url = url
-          maker.image.width = width
-          maker.image.height = height
-          maker.image.description = description
-        end
-      end
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        maker.channel.link = link
-        
-        maker.image.title = title
-        # maker.image.url = url
-        maker.image.width = width
-        maker.image.height = height
-        maker.image.description = description
-      end
-      assert_nil(rss.image)
-    end
-    
-    def test_items(with_convenience_way=true)
-      title = "TITLE"
-      link = "http://hoge.com/"
-      description = "text hoge fuga"
-      author = "oprah@oxygen.net"
-      comments = "http://www.myblog.org/cgi-local/mt/mt-comments.cgi?entry_id=290"
-      pubDate = Time.now
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-      end
-      assert(rss.channel.items.empty?)
-
-      item_size = 5
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        item_size.times do |i|
-          maker.items.new_item do |item|
-            item.title = "#{title}#{i}"
-            item.link = "#{link}#{i}"
-            item.description = "#{description}#{i}"
-            item.author = "#{author}#{i}"
-            item.comments = "#{comments}#{i}"
-            item.date = pubDate
-          end
-        end
-        maker.items.do_sort = true
-      end
-      assert_equal(item_size, rss.items.size)
-      rss.channel.items.each_with_index do |item, i|
-        assert_equal("#{title}#{i}", item.title)
-        assert_equal("#{link}#{i}", item.link)
-        assert_equal("#{description}#{i}", item.description)
-        assert_equal("#{author}#{i}", item.author)
-        assert_equal("#{comments}#{i}", item.comments)
-        assert_equal(pubDate, item.pubDate)
-        assert_equal(pubDate, item.date)
-      end
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        item_size.times do |i|
-          maker.items.new_item do |item|
-            item.title = "#{title}#{i}"
-            item.link = "#{link}#{i}"
-            item.description = "#{description}#{i}"
-            item.author = "#{author}#{i}"
-            item.comments = "#{comments}#{i}"
-            item.date = pubDate
-          end
-        end
-        maker.items.do_sort = Proc.new do |x, y|
-          if with_convenience_way
-            y.title[-1] <=> x.title[-1]
-          else
-            y.title {|t| t.content[-1]} <=> x.title {|t| t.content[-1]}
-          end
-        end
-      end
-      assert_equal(item_size, rss.items.size)
-      rss.channel.items.reverse.each_with_index do |item, i|
-        assert_equal("#{title}#{i}", item.title)
-        assert_equal("#{link}#{i}", item.link)
-        assert_equal("#{description}#{i}", item.description)
-        assert_equal("#{author}#{i}", item.author)
-        assert_equal("#{comments}#{i}", item.comments)
-        assert_equal(pubDate, item.pubDate)
-        assert_equal(pubDate, item.date)
-      end
-    end
-
-    def test_items_with_new_api_since_018
-      test_items(false)
-    end
-
-    def test_pubDate_without_description
-      title = "TITLE"
-      link = "http://hoge.com/"
-      description = "text hoge fuga"
-      author = "oprah@oxygen.net"
-      pubDate = Time.now
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-
-        maker.items.new_item do |item|
-          item.title = title
-          item.link = link
-          # item.description = description
-          item.author = author
-          item.pubDate = pubDate
-        end
-      end
-      assert_equal(1, rss.items.size)
-      rss.channel.items.each_with_index do |item, i|
-        assert_equal(title, item.title)
-        assert_equal(link, item.link)
-        # assert_equal(description, item.description)
-        assert_equal(author, item.author)
-        assert_equal(pubDate, item.pubDate)
-        assert_equal(pubDate, item.date)
-      end
-    end
-
-    def test_guid
-      isPermaLink = "true"
-      content = "http://inessential.com/2002/09/01.php#a2"
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        guid = maker.items.last.guid
-        guid.isPermaLink = isPermaLink
-        guid.content = content
-      end
-      guid = rss.channel.items.last.guid
-      assert_equal(isPermaLink == "true", guid.isPermaLink)
-      assert_equal(content, guid.content)
-    end
-
-    def test_not_valid_guid
-      content = "http://inessential.com/2002/09/01.php#a2"
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        guid = maker.items.last.guid
-        # guid.content = content
-      end
-      assert_nil(rss.channel.items.last.guid)
-    end
-    
-    def test_enclosure
-      url = "http://www.scripting.com/mp3s/weatherReportSuite.mp3"
-      length = "12216320"
-      type = "audio/mpeg"
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        enclosure = maker.items.last.enclosure
-        enclosure.url = url
-        enclosure.length = length
-        enclosure.type = type
-      end
-      enclosure = rss.channel.items.last.enclosure
-      assert_equal(url, enclosure.url)
-      assert_equal(length.to_i, enclosure.length)
-      assert_equal(type, enclosure.type)
-    end
-
-    def test_not_valid_enclosure
-      url = "http://www.scripting.com/mp3s/weatherReportSuite.mp3"
-      length = "12216320"
-      type = "audio/mpeg"
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        enclosure = maker.items.last.enclosure
-        # enclosure.url = url
-        enclosure.length = length
-        enclosure.type = type
-      end
-      assert_nil(rss.channel.items.last.enclosure)
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        enclosure = maker.items.last.enclosure
-        enclosure.url = url
-        # enclosure.length = length
-        enclosure.type = type
-      end
-      assert_nil(rss.channel.items.last.enclosure)
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        enclosure = maker.items.last.enclosure
-        enclosure.url = url
-        enclosure.length = length
-        # enclosure.type = type
-      end
-      assert_nil(rss.channel.items.last.enclosure)
-    end
-
-
-    def test_source
-      url = "http://static.userland.com/tomalak/links2.xml"
-      content = "Tomalak's Realm"
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        source = maker.items.last.source
-        source.url = url
-        source.content = content
-      end
-      source = rss.channel.items.last.source
-      assert_equal(url, source.url)
-      assert_equal(content, source.content)
-    end
-
-    def test_not_valid_source
-      url = "http://static.userland.com/tomalak/links2.xml"
-      content = "Tomalak's Realm"
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        source = maker.items.last.source
-        # source.url = url
-        source.content = content
-      end
-      assert_nil(rss.channel.items.last.source)
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        source = maker.items.last.source
-        source.url = url
-        # source.content = content
-      end
-      assert_nil(rss.channel.items.last.source)
-    end
-    
-    def test_category
-      domain = "http://www.fool.com/cusips"
-      content = "MSFT"
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        maker.items.last.categories.new_category do |category|
-          category.domain = domain
-          category.content = content
-        end
-      end
-      category = rss.channel.items.last.categories.last
-      assert_equal(domain, category.domain)
-      assert_equal(content, category.content)
-    end
-
-    def test_not_valid_category
-      content = "Grateful Dead"
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        maker.items.last.categories.new_category do |category|
-          # category.content = content
-        end
-      end
-      assert(rss.channel.items.last.categories.empty?)
-    end
-    
-    def test_textInput
-      title = "fugafuga"
-      description = "text hoge fuga"
-      name = "hoge"
-      link = "http://hoge.com"
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-
-        maker.textinput.title = title
-        maker.textinput.description = description
-        maker.textinput.name = name
-        maker.textinput.link = link
-      end
-      textInput = rss.channel.textInput
-      assert_equal(title, textInput.title)
-      assert_equal(description, textInput.description)
-      assert_equal(name, textInput.name)
-      assert_equal(link, textInput.link)
-
-      assert_not_set_error("maker.channel", %w(link description title)) do
-        RSS::Maker.make("2.0") do |maker|
-          # setup_dummy_channel(maker)
-
-          maker.textinput.title = title
-          maker.textinput.description = description
-          maker.textinput.name = name
-          maker.textinput.link = link
-        end
-      end
-    end
-    
-    def test_not_valid_textInput
-      title = "fugafuga"
-      description = "text hoge fuga"
-      name = "hoge"
-      link = "http://hoge.com"
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-
-        # maker.textinput.title = title
-        maker.textinput.description = description
-        maker.textinput.name = name
-        maker.textinput.link = link
-      end
-      assert_nil(rss.channel.textInput)
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        maker.textinput.title = title
-        # maker.textinput.description = description
-        maker.textinput.name = name
-        maker.textinput.link = link
-      end
-      assert_nil(rss.channel.textInput)
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        maker.textinput.title = title
-        maker.textinput.description = description
-        # maker.textinput.name = name
-        maker.textinput.link = link
-      end
-      assert_nil(rss.channel.textInput)
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        maker.textinput.title = title
-        maker.textinput.description = description
-        maker.textinput.name = name
-        # maker.textinput.link = link
-      end
-      assert_nil(rss.channel.textInput)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_atom_entry.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_atom_entry.rb
deleted file mode 100644 (file)
index ae0ab2d..0000000
+++ /dev/null
@@ -1,367 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestMakerAtomEntry < TestCase
-    def test_root_element
-      entry = Maker.make("atom:entry") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-      assert_equal(["atom", "1.0", "entry"], entry.feed_info)
-
-      entry = Maker.make("atom:entry") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-        maker.encoding = "EUC-JP"
-      end
-      assert_equal(["atom", "1.0", "entry"], entry.feed_info)
-      assert_equal("EUC-JP", entry.encoding)
-
-      entry = Maker.make("atom:entry") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-        maker.standalone = "yes"
-      end
-      assert_equal(["atom", "1.0", "entry"], entry.feed_info)
-      assert_equal("yes", entry.standalone)
-
-      entry = Maker.make("atom:entry") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-        maker.encoding = "EUC-JP"
-        maker.standalone = "yes"
-      end
-      assert_equal(["atom", "1.0", "entry"], entry.feed_info)
-      assert_equal("EUC-JP", entry.encoding)
-      assert_equal("yes", entry.standalone)
-    end
-
-    def test_invalid_feed
-      assert_not_set_error("maker.item", %w(id title author updated)) do
-        Maker.make("atom:entry") do |maker|
-        end
-      end
-
-      assert_not_set_error("maker.item", %w(id title updated)) do
-        Maker.make("atom:entry") do |maker|
-          maker.channel.author = "foo"
-        end
-      end
-
-      assert_not_set_error("maker.item", %w(title updated)) do
-        Maker.make("atom:entry") do |maker|
-          maker.channel.author = "foo"
-          maker.channel.id = "http://example.com"
-        end
-      end
-
-      assert_not_set_error("maker.item", %w(updated)) do
-        Maker.make("atom:entry") do |maker|
-          maker.channel.author = "foo"
-          maker.channel.id = "http://example.com"
-          maker.channel.title = "Atom Feed"
-        end
-      end
-
-      assert_not_set_error("maker.item", %w(author)) do
-        Maker.make("atom:entry") do |maker|
-          maker.channel.id = "http://example.com"
-          maker.channel.title = "Atom Feed"
-          maker.channel.updated = Time.now
-        end
-      end
-
-      entry = Maker.make("atom:entry") do |maker|
-        maker.channel.author = "Foo"
-        maker.channel.id = "http://example.com"
-        maker.channel.title = "Atom Feed"
-        maker.channel.updated = Time.now
-      end
-      assert_not_nil(entry)
-    end
-
-    def test_author
-      assert_maker_atom_persons("entry",
-                                ["channel", "authors"],
-                                ["authors"],
-                                "maker.channel.author") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-
-      assert_maker_atom_persons("entry",
-                                ["items", "first", "authors"],
-                                ["authors"],
-                                "maker.item.author",
-                                "maker.item", ["author"]) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-        maker.channel.authors.clear
-        maker.items.first.authors.clear
-      end
-
-      assert_maker_atom_persons("entry",
-                                ["items", "first", "source", "authors"],
-                                ["source", "authors"],
-                                "maker.item.source.author") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_category
-      assert_maker_atom_categories("entry",
-                                   ["channel", "categories"],
-                                   ["categories"],
-                                   "maker.channel.category") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-
-      assert_maker_atom_categories("entry",
-                                   ["items", "first", "categories"],
-                                   ["categories"],
-                                   "maker.item.category") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-
-      assert_maker_atom_categories("entry",
-                                   ["items", "first", "source", "categories"],
-                                   ["source", "categories"],
-                                   "maker.item.source.category") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_content
-      assert_maker_atom_content("entry",
-                                ["items", "first", "content"],
-                                ["content"],
-                                "maker.item.content") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_contributor
-      assert_maker_atom_persons("entry",
-                                ["channel", "contributors"],
-                                ["contributors"],
-                                "maker.channel.contributor") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-
-      assert_maker_atom_persons("entry",
-                                ["items", "first", "contributors"],
-                                ["contributors"],
-                                "maker.item.contributor") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-
-      assert_maker_atom_persons("entry",
-                                ["items", "first", "source", "contributors"],
-                                ["source", "contributors"],
-                                "maker.item.source.contributor") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_link
-      assert_maker_atom_links("entry",
-                              ["channel", "links"],
-                              ["links"],
-                              "maker.channel.link") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-        maker.channel.links.clear
-        maker.items.first.links.clear
-      end
-
-      assert_maker_atom_links("entry",
-                              ["items", "first", "links"],
-                              ["links"],
-                              "maker.item.link") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-        maker.channel.links.clear
-        maker.items.first.links.clear
-      end
-
-      assert_maker_atom_links("entry",
-                              ["items", "first", "source", "links"],
-                              ["source", "links"],
-                              "maker.item.source.link", true) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_published
-      assert_maker_atom_date_construct("entry",
-                                       ["items", "first", "published"],
-                                       ["published"]
-                                       ) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_rights
-      assert_maker_atom_text_construct("entry",
-                                       ["channel", "copyright"],
-                                       ["rights"]) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-
-      assert_maker_atom_text_construct("entry",
-                                       ["items", "first", "rights"],
-                                       ["rights"],
-                                       nil, nil, "maker.item.rights"
-                                       ) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-
-      assert_maker_atom_text_construct("entry",
-                                       ["items", "first", "source", "rights"],
-                                       ["source", "rights"],
-                                       nil, nil, "maker.item.source.rights"
-                                       ) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-
-    def test_source_generator
-      assert_maker_atom_generator("entry",
-                                  ["items", "first", "source", "generator"],
-                                  ["source", "generator"],
-                                  "maker.item.source.generator") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_source_icon
-      assert_maker_atom_icon("entry",
-                             ["items", "first", "source", "icon"],
-                             ["source", "icon"],
-                             nil, "maker.item.source.icon") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_source_id
-      assert_maker_atom_id("entry",
-                           ["items", "first", "source"],
-                           ["source"],
-                           "maker.item.source") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_source_logo
-      assert_maker_atom_logo("entry",
-                             ["items", "first", "source", "logo"],
-                             ["source", "logo"],
-                             nil,
-                             "maker.item.source.logo") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_source_subtitle
-      assert_maker_atom_text_construct("entry",
-                                       ["items", "first", "source", "subtitle"],
-                                       ["source", "subtitle"],
-                                       nil, nil,
-                                       "maker.item.source.subtitle") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_summary
-      assert_maker_atom_text_construct("entry",
-                                       ["items", "first", "description"],
-                                       ["summary"],
-                                       nil, nil, "maker.item.description"
-                                       ) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_title
-      assert_maker_atom_text_construct("entry",
-                                       ["channel", "title"], ["title"],
-                                       "maker.item", ["title"],
-                                       "maker.channel.title") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-        maker.channel.title = nil
-        maker.items.first.title = nil
-      end
-
-      assert_maker_atom_text_construct("entry",
-                                       ["items", "first", "title"],
-                                       ["title"],
-                                       "maker.item", ["title"],
-                                       "maker.item.title") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-        maker.channel.title = nil
-        maker.items.first.title = nil
-      end
-
-      assert_maker_atom_text_construct("entry",
-                                       ["items", "first", "source", "title"],
-                                       ["source", "title"],
-                                       nil, nil, "maker.item.source.title"
-                                       ) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_updated
-      assert_maker_atom_date_construct("entry",
-                                       ["channel", "updated"], ["updated"],
-                                       "maker.item", ["updated"]) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-        maker.channel.updated = nil
-        maker.items.first.updated = nil
-      end
-
-      assert_maker_atom_date_construct("entry",
-                                       ["items", "first", "updated"],
-                                       ["updated"],
-                                       "maker.item", ["updated"]) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-        maker.channel.updated = nil
-        maker.items.first.updated = nil
-      end
-
-      assert_maker_atom_date_construct("entry",
-                                       ["items", "first", "source", "updated"],
-                                       ["source", "updated"]) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_atom_feed.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_atom_feed.rb
deleted file mode 100644 (file)
index e5bf0e2..0000000
+++ /dev/null
@@ -1,389 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestMakerAtomFeed < TestCase
-    def test_root_element
-      feed = Maker.make("atom") do |maker|
-        setup_dummy_channel_atom(maker)
-      end
-      assert_equal(["atom", "1.0", "feed"], feed.feed_info)
-
-      feed = Maker.make("atom") do |maker|
-        setup_dummy_channel_atom(maker)
-        maker.encoding = "EUC-JP"
-      end
-      assert_equal(["atom", "1.0", "feed"], feed.feed_info)
-      assert_equal("EUC-JP", feed.encoding)
-
-      feed = Maker.make("atom") do |maker|
-        setup_dummy_channel_atom(maker)
-        maker.standalone = "yes"
-      end
-      assert_equal(["atom", "1.0", "feed"], feed.feed_info)
-      assert_equal("yes", feed.standalone)
-
-      feed = Maker.make("atom") do |maker|
-        setup_dummy_channel_atom(maker)
-        maker.encoding = "EUC-JP"
-        maker.standalone = "yes"
-      end
-      assert_equal(["atom", "1.0", "feed"], feed.feed_info)
-      assert_equal("EUC-JP", feed.encoding)
-      assert_equal("yes", feed.standalone)
-    end
-
-    def test_invalid_feed
-      assert_not_set_error("maker.channel", %w(id title author updated)) do
-        Maker.make("atom") do |maker|
-        end
-      end
-
-      assert_not_set_error("maker.channel", %w(id title updated)) do
-        Maker.make("atom") do |maker|
-          maker.channel.author = "foo"
-        end
-      end
-
-      assert_not_set_error("maker.channel", %w(title updated)) do
-        Maker.make("atom") do |maker|
-          maker.channel.author = "foo"
-          maker.channel.id = "http://example.com"
-        end
-      end
-
-      assert_not_set_error("maker.channel", %w(updated)) do
-        Maker.make("atom") do |maker|
-          maker.channel.author = "foo"
-          maker.channel.id = "http://example.com"
-          maker.channel.title = "Atom Feed"
-        end
-      end
-
-      assert_not_set_error("maker.channel", %w(author)) do
-        Maker.make("atom") do |maker|
-          maker.channel.id = "http://example.com"
-          maker.channel.title = "Atom Feed"
-          maker.channel.updated = Time.now
-        end
-      end
-
-      feed = Maker.make("atom") do |maker|
-        maker.channel.author = "Foo"
-        maker.channel.id = "http://example.com"
-        maker.channel.title = "Atom Feed"
-        maker.channel.updated = Time.now
-      end
-      assert_not_nil(feed)
-    end
-
-    def test_author
-      assert_maker_atom_persons("feed",
-                                ["channel", "authors"],
-                                ["authors"],
-                                "maker.channel.author") do |maker|
-        setup_dummy_channel_atom(maker)
-      end
-
-      assert_not_set_error("maker.channel", %w(author)) do
-        RSS::Maker.make("atom") do |maker|
-          setup_dummy_channel_atom(maker)
-          setup_dummy_item_atom(maker)
-          maker.channel.authors.clear
-        end
-      end
-
-      assert_maker_atom_persons("feed",
-                                ["items", "first", "authors"],
-                                ["entries", "first", "authors"],
-                                "maker.item.author") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-
-      assert_maker_atom_persons("feed",
-                                ["items", "first", "source", "authors"],
-                                ["entries", "first", "source", "authors"],
-                                "maker.item.source.author") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_category
-      assert_maker_atom_categories("feed",
-                                   ["channel", "categories"],
-                                   ["categories"],
-                                   "maker.channel.category") do |maker|
-        setup_dummy_channel_atom(maker)
-      end
-
-      assert_maker_atom_categories("feed",
-                                   ["items", "first", "categories"],
-                                   ["entries", "first", "categories"],
-                                   "maker.item.category") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-
-      assert_maker_atom_categories("feed",
-                                   ["items", "first", "source", "categories"],
-                                   ["entries", "first", "source", "categories"],
-                                   "maker.item.source.category") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_contributor
-      assert_maker_atom_persons("feed",
-                                ["channel", "contributors"],
-                                ["contributors"],
-                                "maker.channel.contributor") do |maker|
-        setup_dummy_channel_atom(maker)
-      end
-
-      assert_maker_atom_persons("feed",
-                                ["items", "first", "contributors"],
-                                ["entries", "first", "contributors"],
-                                "maker.item.contributor") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-
-      assert_maker_atom_persons("feed",
-                                ["items", "first", "source", "contributors"],
-                                ["entries", "first", "source", "contributors"],
-                                "maker.item.source.contributor") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_generator
-      assert_maker_atom_generator("feed",
-                                  ["channel", "generator"],
-                                  ["generator"]) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-
-      assert_maker_atom_generator("feed",
-                                  ["items", "first", "source", "generator"],
-                                  ["entries", "first", "source", "generator"],
-                                  "maker.item.source.generator") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_icon
-      assert_maker_atom_icon("feed", ["channel"], ["icon"], "icon") do |maker|
-        setup_dummy_channel_atom(maker)
-      end
-
-      assert_maker_atom_icon("feed",
-                             ["items", "first", "source", "icon"],
-                             ["entries", "first", "source", "icon"],
-                             nil, "maker.item.source.icon") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_link
-      assert_maker_atom_links("feed",
-                              ["channel", "links"],
-                              ["links"],
-                              "maker.channel.link") do |maker|
-        setup_dummy_channel_atom(maker)
-      end
-
-      assert_maker_atom_links("feed",
-                              ["items", "first", "links"],
-                              ["entries", "first", "links"],
-                              "maker.item.link") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-
-      assert_maker_atom_links("feed",
-                              ["items", "first", "source", "links"],
-                              ["entries", "first", "source", "links"],
-                              "maker.item.source.link", true) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_logo
-      assert_maker_atom_logo("feed", ["channel"], ["logo"], "logo") do |maker|
-        setup_dummy_channel_atom(maker)
-      end
-
-      assert_maker_atom_logo("feed", ["image"], ["logo"], "url") do |maker|
-        setup_dummy_channel_atom(maker)
-      end
-
-      assert_maker_atom_logo("feed",
-                             ["items", "first", "source", "logo"],
-                             ["entries", "first", "source", "logo"],
-                             nil, "maker.item.source.logo") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_rights
-      assert_maker_atom_text_construct("feed",
-                                       ["channel", "copyright"],
-                                       ["rights"]) do |maker|
-        setup_dummy_channel_atom(maker)
-      end
-
-      assert_maker_atom_text_construct("feed",
-                                       ["items", "first", "rights"],
-                                       ["entries", "first", "rights"],
-                                       nil, nil, "maker.item.rights"
-                                       ) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-
-      assert_maker_atom_text_construct("feed",
-                                       ["items", "first", "source", "rights"],
-                                       ["entries", "first", "source", "rights"],
-                                       nil, nil, "maker.item.source.rights"
-                                       ) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_subtitle
-      assert_maker_atom_text_construct("feed",
-                                       ["channel", "subtitle"],
-                                       ["subtitle"],
-                                       nil, nil,
-                                       "maker.channel.description") do |maker|
-        setup_dummy_channel_atom(maker)
-        maker.channel.description = nil
-      end
-
-      assert_maker_atom_text_construct("feed",
-                                       ["channel", "subtitle"],
-                                       ["subtitle"],
-                                       nil, nil,
-                                       "maker.channel.description") do |maker|
-        setup_dummy_channel_atom(maker)
-        maker.channel.description {|d| d.content = nil}
-      end
-
-      assert_maker_atom_text_construct("feed",
-                                       ["items", "first", "source", "subtitle"],
-                                       ["entries", "first",
-                                        "source", "subtitle"],
-                                       nil, nil,
-                                       "maker.item.source.subtitle") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_title
-      assert_maker_atom_text_construct("feed",
-                                       ["channel", "title"], ["title"],
-                                       "maker.channel", ["title"]) do |maker|
-        setup_dummy_channel_atom(maker)
-        maker.channel.title = nil
-      end
-
-      assert_maker_atom_text_construct("feed",
-                                       ["items", "first", "title"],
-                                       ["entries", "first", "title"],
-                                       "maker.item", ["title"],
-                                       "maker.item.title") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-        maker.items.first.title = nil
-      end
-
-      assert_maker_atom_text_construct("feed",
-                                       ["items", "first", "source", "title"],
-                                       ["entries", "first", "source", "title"],
-                                       nil, nil, "maker.item.source.title"
-                                       ) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_updated
-      assert_maker_atom_date_construct("feed",
-                                       ["channel", "updated"], ["updated"],
-                                       "maker.channel", ["updated"]) do |maker|
-        setup_dummy_channel_atom(maker)
-        maker.channel.updated = nil
-      end
-
-      assert_maker_atom_date_construct("feed",
-                                       ["items", "first", "updated"],
-                                       ["entries", "first", "updated"],
-                                       "maker.item", ["updated"]) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-        maker.items.first.updated = nil
-      end
-
-      assert_maker_atom_date_construct("feed",
-                                       ["items", "first", "source", "updated"],
-                                       ["entries", "first", "source", "updated"]
-                                       ) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_published
-      assert_maker_atom_date_construct("feed",
-                                       ["items", "first", "published"],
-                                       ["entries", "first", "published"]
-                                       ) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_summary
-      assert_maker_atom_text_construct("feed",
-                                       ["items", "first", "description"],
-                                       ["entries", "first", "summary"],
-                                       nil, nil, "maker.item.description"
-                                       ) do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_content
-      assert_maker_atom_content("feed",
-                                ["items", "first", "content"],
-                                ["entries", "first", "content"],
-                                "maker.item.content") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-
-    def test_id
-      assert_maker_atom_id("feed",
-                           ["items", "first", "source"],
-                           ["entries", "first", "source"],
-                           "maker.item.source") do |maker|
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_content.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_content.rb
deleted file mode 100644 (file)
index 53750bb..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestMakerContent < TestCase
-
-    def setup
-      @uri = "http://purl.org/rss/1.0/modules/content/"
-      
-      @elements = {
-        :encoded => "<em>ATTENTION</em>",
-      }
-    end
-
-    def test_rss10
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-
-        setup_dummy_item(maker)
-        item = maker.items.last
-        @elements.each do |name, value|
-          item.__send__("#{accessor_name(name)}=", value)
-        end
-      end
-      assert_content(@elements, rss.items.last)
-    end
-
-    def test_rss20
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-
-        setup_dummy_item(maker)
-        item = maker.items.last
-        @elements.each do |name, value|
-          item.__send__("#{accessor_name(name)}=", value)
-        end
-      end
-      assert_content(@elements, rss.items.last)
-    end
-
-    private
-    def accessor_name(name)
-      "content_#{name}"
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_dc.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_dc.rb
deleted file mode 100644 (file)
index c9df36a..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestMakerDublinCore < TestCase
-
-    def setup
-      @uri = "http://purl.org/dc/elements/1.1/"
-      
-      t = Time.iso8601("2000-01-01T12:00:05+00:00")
-      class << t
-        alias_method(:to_s, :iso8601)
-      end
-      
-      @elements = {
-        :title => "hoge",
-        :description =>
-          " XML is placing increasingly heavy loads on
-          the existing technical infrastructure of the Internet.",
-        :creator => "Rael Dornfest (mailto:rael@oreilly.com)",
-        :subject => "XML",
-        :publisher => "The O'Reilly Network",
-        :contributor => "hogehoge",
-        :type => "fugafuga",
-        :format => "hohoho",
-        :identifier => "fufufu",
-        :source => "barbar",
-        :language => "ja",
-        :relation => "cococo",
-        :rights => "Copyright (c) 2000 O'Reilly &amp; Associates, Inc.",
-        :date => t,
-      }
-    end
-
-    def test_rss10
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        set_elements(maker.channel)
-
-        setup_dummy_image(maker)
-        set_elements(maker.image)
-
-        setup_dummy_item(maker)
-        item = maker.items.last
-        @elements.each do |name, value|
-          item.__send__("#{accessor_name(name)}=", value)
-        end
-
-        setup_dummy_textinput(maker)
-        set_elements(maker.textinput)
-      end
-      assert_dublin_core(@elements, rss.channel)
-      assert_dublin_core(@elements, rss.image)
-      assert_dublin_core(@elements, rss.items.last)
-      assert_dublin_core(@elements, rss.textinput)
-    end
-
-    def test_rss10_multiple
-      assert_multiple_dublin_core_rss10("_list")
-      assert_multiple_dublin_core_rss10("es")
-    end
-
-    def assert_multiple_dublin_core_rss10(multiple_rights_suffix)
-      elems = []
-      @elements.each do |name, value|
-        plural = name.to_s + (name == :rights ? multiple_rights_suffix : "s")
-        values = [value]
-        if name == :date
-          values << value + 60
-        else
-          values << value * 2
-        end
-        elems << [name, values, plural]
-      end
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        set_multiple_elements(maker.channel, elems)
-
-        setup_dummy_image(maker)
-        set_multiple_elements(maker.image, elems)
-
-        setup_dummy_item(maker)
-        item = maker.items.last
-        elems.each do |name, values, plural|
-          dc_elems = item.__send__("dc_#{plural}")
-          values.each do |value|
-            dc_elems.__send__("new_#{name}") do |elem|
-              elem.value = value
-            end
-          end
-        end
-
-        setup_dummy_textinput(maker)
-        set_multiple_elements(maker.textinput, elems)
-      end
-      assert_multiple_dublin_core(elems, rss.channel)
-      assert_multiple_dublin_core(elems, rss.image)
-      assert_multiple_dublin_core(elems, rss.items.last)
-      assert_multiple_dublin_core(elems, rss.textinput)
-    end
-
-    def test_date
-      t1 = Time.iso8601("2000-01-01T12:00:05+00:00")
-      t2 = Time.iso8601("2005-01-01T12:00:05+00:00")
-      
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        maker.channel.date = t1
-        maker.channel.dc_dates.new_date do |date|
-          date.value = t2
-        end
-
-        setup_dummy_item(maker)
-        item = maker.items.last
-        item.date = t2
-        item.dc_dates.new_date do |date|
-          date.value = t1
-        end
-      end
-      assert_equal([t1, t2], rss.channel.dc_dates.collect{|x| x.value})
-      assert_equal([t2, t1], rss.items.last.dc_dates.collect{|x| x.value})
-    end
-    
-    private
-    def accessor_name(name)
-      "dc_#{name}"
-    end
-
-    def set_elements(target, elems=@elements)
-      elems.each do |name, value|
-        target.__send__("#{accessor_name(name)}=", value)
-      end
-    end
-
-    def set_multiple_elements(target, elems)
-      elems.each do |name, values, plural|
-        plural ||= "#{name}s"
-        dc_elems = target.__send__("dc_#{plural}")
-        values.each do |value|
-          dc_elems.__send__("new_#{name}") do |new_dc_elem|
-            new_dc_elem.value = value
-          end
-        end
-      end
-    end
-
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_image.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_image.rb
deleted file mode 100644 (file)
index 1fc8076..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestMakerImage < TestCase
-
-    def setup
-      @uri = "http://web.resource.org/rss/1.0/modules/image/"
-
-      @favicon_infos = {
-        "about" => "http://www.kuro5hin.org/favicon.ico",
-        "image_size" => "small",
-        "dc_title" => "example",
-      }
-      @item_infos = {
-        "about" => "http://www.example.org/item.png",
-        "resource" => "http://www.example.org/item",
-        "dc_title" => "Example Image",
-        "image_width" => "100",
-        "image_height" => "65",
-      }
-    end
-
-    def test_rss10
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        @favicon_infos.each do |name, value|
-          maker.channel.image_favicon.__send__("#{name}=", value)
-        end
-
-        setup_dummy_image(maker)
-
-        setup_dummy_item(maker)
-        item = maker.items.last
-        @item_infos.each do |name, value|
-          item.image_item.__send__("#{name}=", value)
-        end
-
-        setup_dummy_textinput(maker)
-      end
-      
-      setup_rss = RSS::Maker.make("1.0") do |maker|
-        rss.setup_maker(maker)
-      end
-
-      [rss, setup_rss].each_with_index do |target, i|
-        favicon = target.channel.image_favicon
-        assert_equal(@favicon_infos["about"], favicon.about)
-        assert_equal(@favicon_infos["image_size"], favicon.image_size)
-        assert_equal(@favicon_infos["dc_title"], favicon.dc_title)
-        
-        item = target.items.last.image_item
-        assert_equal(@item_infos["about"], item.about)
-        assert_equal(@item_infos["resource"], item.resource)
-        assert_equal(@item_infos["image_width"].to_i, item.image_width)
-        assert_equal(@item_infos["image_height"].to_i, item.image_height)
-        assert_equal(@item_infos["dc_title"], item.dc_title)
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_itunes.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_itunes.rb
deleted file mode 100644 (file)
index 1d4e323..0000000
+++ /dev/null
@@ -1,471 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestMakerITunes < TestCase
-    def test_author
-      assert_maker_itunes_author(%w(channel))
-      assert_maker_itunes_author(%w(items last))
-    end
-
-    def test_block
-      assert_maker_itunes_block(%w(channel))
-      assert_maker_itunes_block(%w(items last))
-    end
-
-    def test_category
-      assert_maker_itunes_category(%w(channel))
-    end
-
-    def test_image
-      assert_maker_itunes_image(%w(channel))
-    end
-
-    def test_duration
-      assert_maker_itunes_duration(%w(items last))
-    end
-
-    def test_explicit
-      assert_maker_itunes_explicit(%w(channel))
-      assert_maker_itunes_explicit(%w(items last))
-    end
-
-    def test_keywords
-      assert_maker_itunes_keywords(%w(channel))
-      assert_maker_itunes_keywords(%w(items last))
-    end
-
-    def test_new_feed_url
-      assert_maker_itunes_new_feed_url(%w(channel))
-    end
-
-    def test_owner
-      assert_maker_itunes_owner(%w(channel))
-    end
-
-    def test_subtitle
-      assert_maker_itunes_subtitle(%w(channel))
-      assert_maker_itunes_subtitle(%w(items last))
-    end
-
-    def test_summary
-      assert_maker_itunes_summary(%w(channel))
-      assert_maker_itunes_summary(%w(items last))
-    end
-
-    private
-
-    def assert_maker_itunes_author(maker_readers, feed_readers=nil)
-      _wrap_assertion do
-        feed_readers ||= maker_readers
-        author = "John Doe"
-        rss20 = ::RSS::Maker.make("rss2.0") do |maker|
-          setup_dummy_channel(maker)
-          setup_dummy_item(maker)
-
-          target = chain_reader(maker, maker_readers)
-          target.itunes_author = author
-        end
-        target = chain_reader(rss20, feed_readers)
-        assert_equal(author, target.itunes_author)
-      end
-    end
-
-    def _assert_maker_itunes_block(value, boolean_value, maker_readers,
-                                   feed_readers)
-      rss20 = ::RSS::Maker.make("rss2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        target = chain_reader(maker, maker_readers)
-        target.itunes_block = value
-        assert_equal(value, target.itunes_block)
-        assert_equal(boolean_value, target.itunes_block?)
-      end
-      target = chain_reader(rss20, feed_readers)
-      if [true, false].include?(value)
-        feed_expected_value = value = value ? "yes" : "no"
-      else
-        feed_expected_value = value
-      end
-      assert_equal(value, target.itunes_block)
-      assert_equal(boolean_value, target.itunes_block?)
-    end
-
-    def assert_maker_itunes_block(maker_readers, feed_readers=nil)
-      _wrap_assertion do
-        feed_readers ||= maker_readers
-        _assert_maker_itunes_block("yes", true, maker_readers, feed_readers)
-        _assert_maker_itunes_block("Yes", true, maker_readers, feed_readers)
-        _assert_maker_itunes_block("no", false, maker_readers, feed_readers)
-        _assert_maker_itunes_block("", false, maker_readers, feed_readers)
-        _assert_maker_itunes_block(true, true, maker_readers, feed_readers)
-        _assert_maker_itunes_block(false, false, maker_readers, feed_readers)
-        _assert_maker_itunes_block(nil, false, maker_readers, feed_readers)
-      end
-    end
-
-    def _assert_maker_itunes_category(categories, maker_readers, feed_readers)
-      rss20 = ::RSS::Maker.make("rss2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        target = chain_reader(maker, maker_readers)
-        categories.each do |category|
-          sub_target = target.itunes_categories
-          if category.is_a?(Array)
-            category.each do |sub_category|
-              sub_target = sub_target.new_category
-              sub_target.text = sub_category
-            end
-          else
-            sub_target.new_category.text = category
-          end
-        end
-      end
-
-      target = chain_reader(rss20, feed_readers)
-      actual_categories = target.itunes_categories.collect do |category|
-        cat = category.text
-        if category.itunes_categories.empty?
-          cat
-        else
-          [cat, *category.itunes_categories.collect {|c| c.text}]
-        end
-      end
-      assert_equal(categories, actual_categories)
-    end
-
-    def assert_maker_itunes_category(maker_readers, feed_readers=nil)
-      _wrap_assertion do
-        feed_readers ||= maker_readers
-        _assert_maker_itunes_category(["Audio Blogs"],
-                                      maker_readers, feed_readers)
-        _assert_maker_itunes_category([["Arts & Entertainment", "Games"]],
-                                      maker_readers, feed_readers)
-        _assert_maker_itunes_category([["Arts & Entertainment", "Games"],
-                                       ["Technology", "Computers"],
-                                       "Audio Blogs"],
-                                      maker_readers, feed_readers)
-      end
-    end
-
-    def assert_maker_itunes_image(maker_readers, feed_readers=nil)
-      _wrap_assertion do
-        feed_readers ||= maker_readers
-        url = "http://example.com/podcasts/everything/AllAboutEverything.jpg"
-
-        rss20 = ::RSS::Maker.make("rss2.0") do |maker|
-          setup_dummy_channel(maker)
-          setup_dummy_item(maker)
-
-          target = chain_reader(maker, maker_readers)
-          target.itunes_image = url
-        end
-
-        target = chain_reader(rss20, feed_readers)
-        assert_not_nil(target.itunes_image)
-        assert_equal(url, target.itunes_image.href)
-      end
-    end
-
-    def _assert_maker_itunes_duration(hour, minute, second, value,
-                                      maker_readers, feed_readers)
-      _assert_maker_itunes_duration_by_value(hour, minute, second, value,
-                                             maker_readers, feed_readers)
-      _assert_maker_itunes_duration_by_hour_minute_second(hour, minute, second,
-                                                          value,
-                                                          maker_readers,
-                                                          feed_readers)
-    end
-
-    def _assert_maker_itunes_duration_by(hour, minute, second, value,
-                                         maker_readers, feed_readers)
-      expected_value = nil
-      rss20 = ::RSS::Maker.make("rss2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        target = chain_reader(maker, maker_readers)
-        expected_value = yield(target)
-        assert_equal(expected_value, target.itunes_duration)
-        target.itunes_duration do |duration|
-          assert_equal([hour, minute, second, expected_value],
-                       [duration.hour, duration.minute,
-                        duration.second, duration.content])
-        end
-      end
-      target = chain_reader(rss20, feed_readers)
-      duration = target.itunes_duration
-      assert_not_nil(duration)
-      assert_equal([hour, minute, second, expected_value],
-                   [duration.hour, duration.minute,
-                    duration.second, duration.content])
-    end
-
-    def _assert_maker_itunes_duration_by_value(hour, minute, second, value,
-                                               maker_readers, feed_readers)
-      _assert_maker_itunes_duration_by(hour, minute, second, value,
-                                       maker_readers, feed_readers) do |target|
-        target.itunes_duration = value
-        value
-      end
-    end
-
-    def _assert_maker_itunes_duration_by_hour_minute_second(hour, minute, second,
-                                                            value,
-                                                            maker_readers,
-                                                            feed_readers)
-      _assert_maker_itunes_duration_by(hour, minute, second, value,
-                                       maker_readers, feed_readers) do |target|
-        target.itunes_duration do |duration|
-          duration.hour = hour
-          duration.minute = minute
-          duration.second = second
-        end
-        value.split(":").collect {|v| "%02d" % v.to_i}.join(":")
-      end
-    end
-
-    def _assert_maker_itunes_duration_invalid_value(value, maker_readers)
-      assert_raise(ArgumentError) do
-        ::RSS::Maker.make("rss2.0") do |maker|
-          setup_dummy_channel(maker)
-          setup_dummy_item(maker)
-
-          target = chain_reader(maker, maker_readers)
-          target.itunes_duration = value
-        end
-      end
-    end
-
-    def assert_maker_itunes_duration(maker_readers, feed_readers=nil)
-      _wrap_assertion do
-        feed_readers ||= maker_readers
-        _assert_maker_itunes_duration(7, 14, 5, "07:14:05", maker_readers,
-                                      feed_readers)
-        _assert_maker_itunes_duration(7, 14, 5, "7:14:05", maker_readers,
-                                      feed_readers)
-        _assert_maker_itunes_duration(0, 4, 55, "04:55", maker_readers,
-                                      feed_readers)
-        _assert_maker_itunes_duration(0, 4, 5, "4:05", maker_readers,
-                                      feed_readers)
-
-        _assert_maker_itunes_duration_invalid_value("5", maker_readers)
-        _assert_maker_itunes_duration_invalid_value("09:07:14:05", maker_readers)
-        _assert_maker_itunes_duration_invalid_value("10:5", maker_readers)
-        _assert_maker_itunes_duration_invalid_value("10:03:5", maker_readers)
-        _assert_maker_itunes_duration_invalid_value("10:3:05", maker_readers)
-
-        _assert_maker_itunes_duration_invalid_value("xx:xx:xx", maker_readers)
-      end
-    end
-
-    def _assert_maker_itunes_explicit(explicit, value,
-                                      maker_readers, feed_readers)
-      rss20 = ::RSS::Maker.make("rss2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        target = chain_reader(maker, maker_readers)
-        target.itunes_explicit = value
-        assert_equal(explicit, target.itunes_explicit?)
-      end
-      target = chain_reader(rss20, feed_readers)
-      assert_equal(value, target.itunes_explicit)
-      assert_equal(explicit, target.itunes_explicit?)
-    end
-
-    def assert_maker_itunes_explicit(maker_readers, feed_readers=nil)
-      _wrap_assertion do
-        feed_readers ||= maker_readers
-        _assert_maker_itunes_explicit(true, "yes", maker_readers, feed_readers)
-        _assert_maker_itunes_explicit(false, "clean",
-                                      maker_readers, feed_readers)
-        _assert_maker_itunes_explicit(nil, "no", maker_readers, feed_readers)
-      end
-    end
-
-    def _assert_maker_itunes_keywords(keywords, value,
-                                      maker_readers, feed_readers)
-      _assert_maker_itunes_keywords_by_value(keywords, value,
-                                             maker_readers, feed_readers)
-      _assert_maker_itunes_keywords_by_keywords(keywords, maker_readers,
-                                                feed_readers)
-    end
-
-    def _assert_maker_itunes_keywords_by(keywords, maker_readers, feed_readers)
-      rss20 = ::RSS::Maker.make("rss2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        target = chain_reader(maker, maker_readers)
-        yield(target)
-      end
-      assert_nothing_raised do
-        rss20 = ::RSS::Parser.parse(rss20.to_s)
-      end
-      target = chain_reader(rss20, feed_readers)
-      assert_equal(keywords, target.itunes_keywords)
-    end
-
-    def _assert_maker_itunes_keywords_by_value(keywords, value,
-                                               maker_readers, feed_readers)
-      _assert_maker_itunes_keywords_by(keywords, maker_readers,
-                                       feed_readers) do |target|
-        target.itunes_keywords = value
-      end
-    end
-
-    def _assert_maker_itunes_keywords_by_keywords(keywords,
-                                                  maker_readers, feed_readers)
-      _assert_maker_itunes_keywords_by(keywords, maker_readers,
-                                       feed_readers) do |target|
-        target.itunes_keywords = keywords
-      end
-    end
-
-    def assert_maker_itunes_keywords(maker_readers, feed_readers=nil)
-      _wrap_assertion do
-        feed_readers ||= maker_readers
-        _assert_maker_itunes_keywords(["salt"], "salt",
-                                      maker_readers, feed_readers)
-        _assert_maker_itunes_keywords(["salt"], " salt ",
-                                      maker_readers, feed_readers)
-        _assert_maker_itunes_keywords(["salt", "pepper", "shaker", "exciting"],
-                                      "salt, pepper, shaker, exciting",
-                                      maker_readers, feed_readers)
-        _assert_maker_itunes_keywords(["metric", "socket", "wrenches",
-                                       "toolsalt"],
-                                      "metric, socket, wrenches, toolsalt",
-                                      maker_readers, feed_readers)
-        _assert_maker_itunes_keywords(["olitics", "red", "blue", "state"],
-                                      "olitics, red, blue, state",
-                                      maker_readers, feed_readers)
-      end
-    end
-
-    def assert_maker_itunes_new_feed_url(maker_readers, feed_readers=nil)
-      feed_readers ||= maker_readers
-      url = "http://newlocation.com/example.rss"
-
-      rss20 = ::RSS::Maker.make("rss2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        target = chain_reader(maker, maker_readers)
-        target.itunes_new_feed_url = url
-      end
-      target = chain_reader(rss20, feed_readers)
-      assert_equal(url, target.itunes_new_feed_url)
-    end
-
-    def _assert_maker_itunes_owner(name, email, maker_readers, feed_readers)
-      rss20 = ::RSS::Maker.make("rss2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        target = chain_reader(maker, maker_readers)
-        owner = target.itunes_owner
-        owner.itunes_name = name
-        owner.itunes_email = email
-      end
-      owner = chain_reader(rss20, feed_readers).itunes_owner
-      if name.nil? and email.nil?
-        assert_nil(owner)
-      else
-        assert_not_nil(owner)
-        assert_equal(name, owner.itunes_name)
-        assert_equal(email, owner.itunes_email)
-      end
-    end
-
-    def assert_maker_itunes_owner(maker_readers, feed_readers=nil)
-      _wrap_assertion do
-        feed_readers ||= maker_readers
-        _assert_maker_itunes_owner("John Doe", "john.doe@example.com",
-                                   maker_readers, feed_readers)
-
-        not_set_name = (["maker"] + maker_readers + ["itunes_owner"]).join(".")
-        assert_not_set_error(not_set_name, ["itunes_name"]) do
-          _assert_maker_itunes_owner(nil, "john.doe@example.com",
-                                     maker_readers, feed_readers)
-        end
-        assert_not_set_error(not_set_name, ["itunes_email"]) do
-          _assert_maker_itunes_owner("John Doe", nil,
-                                     maker_readers, feed_readers)
-        end
-
-        _assert_maker_itunes_owner(nil, nil, maker_readers, feed_readers)
-      end
-    end
-
-    def _assert_maker_itunes_subtitle(subtitle, maker_readers, feed_readers)
-      rss20 = ::RSS::Maker.make("rss2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        target = chain_reader(maker, maker_readers)
-        target.itunes_subtitle = subtitle
-      end
-
-      target = chain_reader(rss20, feed_readers)
-      assert_equal(subtitle, target.itunes_subtitle)
-    end
-
-    def assert_maker_itunes_subtitle(maker_readers, feed_readers=nil)
-      _wrap_assertion do
-        feed_readers ||= maker_readers
-        _assert_maker_itunes_subtitle("A show about everything",
-                                      maker_readers, feed_readers)
-        _assert_maker_itunes_subtitle("A short primer on table spices",
-                                      maker_readers, feed_readers)
-        _assert_maker_itunes_subtitle("Comparing socket wrenches is fun!",
-                                      maker_readers, feed_readers)
-        _assert_maker_itunes_subtitle("Red + Blue != Purple",
-                                      maker_readers, feed_readers)
-      end
-    end
-
-    def _assert_maker_itunes_summary(summary, maker_readers, feed_readers)
-      rss20 = ::RSS::Maker.make("rss2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        target = chain_reader(maker, maker_readers)
-        target.itunes_summary = summary
-      end
-
-      target = chain_reader(rss20, feed_readers)
-      assert_equal(summary, target.itunes_summary)
-    end
-
-    def assert_maker_itunes_summary(maker_readers, feed_readers=nil)
-      _wrap_assertion do
-        feed_readers ||= maker_readers
-        _assert_maker_itunes_summary("All About Everything is a show about " +
-                                     "everything. Each week we dive into any " +
-                                     "subject known to man and talk about it " +
-                                     "as much as we can. Look for our Podcast " +
-                                     "in the iTunes Music Store",
-                                     maker_readers, feed_readers)
-        _assert_maker_itunes_summary("This week we talk about salt and pepper " +
-                                     "shakers, comparing and contrasting pour " +
-                                     "rates, construction materials, and " +
-                                     "overall aesthetics. Come and join the " +
-                                     "party!",
-                                     maker_readers, feed_readers)
-        _assert_maker_itunes_summary("This week we talk about metric vs. old " +
-                                     "english socket wrenches. Which one is " +
-                                     "better? Do you really need both? Get " +
-                                     "all of your answers here.",
-                                     maker_readers, feed_readers)
-        _assert_maker_itunes_summary("This week we talk about surviving in a " +
-                                     "Red state if you’re a Blue person. Or " +
-                                     "vice versa.",
-                                     maker_readers, feed_readers)
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_slash.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_slash.rb
deleted file mode 100644 (file)
index f2fbf9a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestMakerSlash < TestCase
-    def setup
-      @elements = {
-        "section" => "articles",
-        "department" => "not-an-ocean-unless-there-are-lobsters",
-        "comments" => 177,
-        "hit_parades" => [177, 155, 105, 33, 6, 3, 0],
-      }
-    end
-
-    def test_rss10
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-
-        setup_dummy_item(maker)
-        item = maker.items.last
-        @elements.each do |name, value|
-          item.send("slash_#{name}=", value)
-        end
-      end
-
-      item = rss.items.last
-      assert_not_nil(item)
-      assert_slash_elements(item)
-    end
-
-    private
-    def assert_slash_elements(target)
-      super(@elements, target)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_sy.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_sy.rb
deleted file mode 100644 (file)
index 309a3b7..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestMakerSyndication < TestCase
-
-    def setup
-      @uri = "http://purl.org/rss/1.0/modules/syndication/"
-      
-      t = Time.iso8601("2000-01-01T12:00:05+00:00")
-      class << t
-        alias_method(:to_s, :iso8601)
-      end
-      
-      @elements = {
-        :updatePeriod => "hourly",
-        :updateFrequency => "2",
-        :updateBase => t,
-      }
-    end
-
-    def test_rss10
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        set_elements(maker.channel)
-        setup_dummy_item(maker)
-      end
-      assert_syndication(@elements, rss.channel)
-    end
-
-    private
-    def accessor_name(name)
-      "sy_#{name}"
-    end
-
-    def set_elements(target)
-      @elements.each do |name, value|
-        target.__send__("#{accessor_name(name)}=", value)
-      end
-    end
-
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_taxo.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_taxo.rb
deleted file mode 100644 (file)
index 8feb4e1..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestMakerTaxonomy < TestCase
-
-    def setup
-      @uri = "http://purl.org/rss/1.0/modules/taxonomy/"
-      
-      @resources = [
-        "http://meerkat.oreillynet.com/?c=cat23",
-        "http://meerkat.oreillynet.com/?c=47",
-        "http://dmoz.org/Computers/Data_Formats/Markup_Languages/XML/",
-      ]
-
-      @topics = [
-        {
-          :link => "http://meerkat.oreillynet.com/?c=cat23",
-          :title => "Data: XML",
-          :description => "A Meerkat channel",
-         },
-        {
-          :link => "http://dmoz.org/Computers/Data_Formats/Markup_Languages/XML/",
-          :title => "XML",
-          :subject => "XML",
-          :description => "DMOZ category",
-          :topics => [
-            "http://meerkat.oreillynet.com/?c=cat23",
-            "http://dmoz.org/Computers/Data_Formats/Markup_Languages/SGML/",
-            "http://dmoz.org/Computers/Programming/Internet/",
-          ]
-         },
-       ]
-    end
-
-    def test_rss10
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        set_topics(maker.channel)
-
-        setup_dummy_item(maker)
-        set_topics(maker.items.last)
-
-        setup_taxo_topic(maker, @topics)
-      end
-      assert_equal(@resources, rss.channel.taxo_topics.resources)
-      assert_equal(@resources, rss.items.last.taxo_topics.resources)
-      assert_taxo_topic(@topics, rss)
-    end
-
-    def _test_date
-      t1 = Time.iso8601("2000-01-01T12:00:05+00:00")
-      t2 = Time.iso8601("2005-01-01T12:00:05+00:00")
-      
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        maker.channel.date = t1
-        maker.channel.dc_dates.new_date do |date|
-          date.value = t2
-        end
-
-        setup_dummy_item(maker)
-        item = maker.items.last
-        item.date = t2
-        item.dc_dates.new_date do |date|
-          date.value = t1
-        end
-      end
-      assert_equal([t1, t2], rss.channel.dc_dates.collect{|x| x.value})
-      assert_equal([t2, t1], rss.items.last.dc_dates.collect{|x| x.value})
-    end
-    
-    private
-    def set_topics(target, resources=@resources)
-      resources.each do |value|
-        target.taxo_topics << value
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_trackback.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_trackback.rb
deleted file mode 100644 (file)
index 58705c6..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestMakerTrackBack < TestCase
-
-    def setup
-      @uri = "http://madskills.com/public/xml/rss/module/trackback/"
-      
-      @elements = {
-        :ping => "http://bar.com/tb.cgi?tb_id=rssplustrackback",
-        :abouts => [
-          "http://foo.com/trackback/tb.cgi?tb_id=20020923",
-          "http://bar.com/trackback/tb.cgi?tb_id=20041114",
-        ],
-      }
-    end
-
-    def test_rss10
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-
-        setup_dummy_item(maker)
-        item = maker.items.last
-        item.trackback_ping = @elements[:ping]
-        @elements[:abouts].each do |about|
-          item.trackback_abouts.new_about do |new_about|
-            new_about.value = about
-          end
-        end
-      end
-      assert_trackback(@elements, rss.items.last)
-    end
-
-    private
-    def accessor_name(name)
-      "trackback_#{name}"
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_xml-stylesheet.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_maker_xml-stylesheet.rb
deleted file mode 100644 (file)
index 81d97dd..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestMakerXMLStyleSheet < TestCase
-
-    def test_xml_stylesheet
-      href = 'a.xsl'
-      type = 'text/xsl'
-      title = 'sample'
-      media = 'printer'
-      charset = 'UTF-8'
-      alternate = 'yes'
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        maker.xml_stylesheets.new_xml_stylesheet do |xss|
-          xss.href = href
-          xss.type = type
-          xss.title = title
-          xss.media = media
-          xss.charset = charset
-          xss.alternate = alternate
-        end
-
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-      end
-
-      xss = rss.xml_stylesheets.first
-      assert_equal(href, xss.href)
-      assert_equal(type, xss.type)
-      assert_equal(title, xss.title)
-      assert_equal(media, xss.media)
-      assert_equal(charset, xss.charset)
-      assert_equal(alternate, xss.alternate)
-
-      
-      href = 'http://example.com/index.xsl'
-      type = 'text/xsl'
-      rss = RSS::Maker.make("1.0") do |maker|
-        maker.xml_stylesheets.new_xml_stylesheet do |_xss|
-          _xss.href = href
-        end
-
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-      end
-
-      xss = rss.xml_stylesheets.first
-      assert_equal(href, xss.href)
-      assert_equal(type, xss.type)
-    end
-
-    def test_not_valid_xml_stylesheet
-      href = 'xss.XXX'
-      type = "text/xsl"
-      
-      rss = RSS::Maker.make("1.0") do |maker|
-        maker.xml_stylesheets.new_xml_stylesheet do |xss|
-          # xss.href = href
-          xss.type = type
-        end
-
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-      end
-      assert(rss.xml_stylesheets.empty?)
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        maker.xml_stylesheets.new_xml_stylesheet do |xss|
-          xss.href = href
-          # xss.type = type
-        end
-
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-      end
-      assert(rss.xml_stylesheets.empty?)
-    end
-    
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser.rb
deleted file mode 100644 (file)
index 2e8c9be..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-require "fileutils"
-
-require "rss-testcase"
-
-require "rss/1.0"
-require "rss/dublincore"
-
-module RSS
-  class TestParser < TestCase
-    def setup
-      @_default_parser = Parser.default_parser
-      @rss10 = make_RDF(<<-EOR)
-#{make_channel}
-#{make_item}
-#{make_textinput}
-#{make_image}
-EOR
-      @rss_file = "rss10.rdf"
-      File.open(@rss_file, "w") {|f| f.print(@rss10)}
-    end
-
-    def teardown
-      Parser.default_parser = @_default_parser
-      FileUtils.rm_f(@rss_file)
-    end
-
-    def test_default_parser
-      assert_nothing_raised do
-        Parser.default_parser = RSS::AVAILABLE_PARSERS.first
-      end
-
-      assert_raise(RSS::NotValidXMLParser) do
-        Parser.default_parser = RSS::Parser
-      end
-    end
-
-    def test_parse
-      assert_not_nil(RSS::Parser.parse(@rss_file))
-
-      garbage_rss_file = @rss_file + "-garbage"
-      if RSS::Parser.default_parser.name == "RSS::XMLParserParser"
-        assert_raise(RSS::NotWellFormedError) do
-          RSS::Parser.parse(garbage_rss_file)
-        end
-      else
-        assert_nil(RSS::Parser.parse(garbage_rss_file))
-      end
-    end
-
-    def test_parse_tag_includes_hyphen
-      assert_nothing_raised do
-        RSS::Parser.parse(make_RDF(<<-EOR))
-<xCal:x-calconnect-venue xmlns:xCal="urn:ietf:params:xml:ns:xcal" />
-#{make_channel}
-#{make_item}
-#{make_textinput}
-#{make_image}
-EOR
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser_1.0.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser_1.0.rb
deleted file mode 100644 (file)
index 819ce28..0000000
+++ /dev/null
@@ -1,511 +0,0 @@
-require "rss-testcase"
-
-require "rss/1.0"
-require "rss/dublincore"
-
-module RSS
-  class TestParser10 < TestCase
-    def test_RDF
-      assert_ns("", RDF::URI) do
-        Parser.parse(<<-EOR)
-#{make_xmldecl}
-<RDF/>
-EOR
-      end
-
-      assert_ns("", RDF::URI) do
-        Parser.parse(<<-EOR)
-#{make_xmldecl}
-<RDF xmlns="hoge"/>
-EOR
-      end
-
-      assert_ns("rdf", RDF::URI) do
-        Parser.parse(<<-EOR)
-#{make_xmldecl}
-<rdf:RDF xmlns:rdf="hoge"/>
-EOR
-      end
-
-      assert_parse(<<-EOR, :missing_tag, "channel", "RDF")
-#{make_xmldecl}
-<rdf:RDF xmlns:rdf="#{RSS::RDF::URI}"/>
-EOR
-
-      assert_parse(<<-EOR, :missing_tag, "channel", "RDF")
-#{make_xmldecl}
-<RDF xmlns="#{RSS::RDF::URI}"/>
-EOR
-
-      assert_parse(<<-EOR, :missing_tag, "channel", "RDF")
-#{make_xmldecl}
-<RDF xmlns="#{RSS::RDF::URI}"/>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
-#{make_channel}
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
-#{make_channel}
-#{make_image}
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
-#{make_channel}
-#{make_textinput}
-EOR
-
-      assert_too_much_tag("image", "RDF") do
-        Parser.parse(make_RDF(<<-EOR))
-#{make_channel}
-#{make_image}
-#{make_image}
-#{make_item}
-#{make_textinput}
-EOR
-      end
-
-      assert_parse(make_RDF(<<-EOR), :nothing_raised)
-#{make_channel}
-#{make_item}
-#{make_image}
-#{make_textinput}
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :nothing_raised)
-#{make_channel}
-#{make_item}
-#{make_textinput}
-#{make_image}
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :nothing_raised)
-#{make_channel}
-#{make_image}
-#{make_item}
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :nothing_raised)
-#{make_channel}
-#{make_image}
-#{make_item}
-#{make_textinput}
-EOR
-
-      1.step(15, 3) do |i|
-        rss = make_RDF() do
-          res = make_channel
-          i.times { res << make_item }
-          res
-        end
-        assert_parse(rss, :nothing_raised)
-      end
-    end
-
-    def test_undefined_entity
-      return unless RSS::Parser.default_parser.raise_for_undefined_entity?
-      assert_parse(make_RDF(<<-EOR), :raises, RSS::NotWellFormedError)
-#{make_channel}
-#{make_image}
-<item rdf:about="#{RDF_ABOUT}">
-  <title>#{TITLE_VALUE} &UNKNOWN_ENTITY;</title>
-  <link>#{LINK_VALUE}</link>
-  <description>#{DESCRIPTION_VALUE}</description>
-</item>
-#{make_textinput}
-EOR
-    end
-
-    def test_channel
-      assert_parse(make_RDF(<<-EOR), :missing_attribute, "channel", "rdf:about")
-<channel />
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "channel")
-<channel rdf:about="http://example.com/"/>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "channel")
-<channel rdf:about="http://example.com/">
-  <title>hoge</title>
-</channel>
-EOR
-
-      assert_parse(make_RDF(<<EOR), :missing_tag, "description", "channel")
-<channel rdf:about="http://example.com/">
-  <title>hoge</title>
-  <link>http://example.com/</link>
-</channel>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "items", "channel")
-<channel rdf:about="http://example.com/">
-  <title>hoge</title>
-  <link>http://example.com/</link>
-  <description>hogehoge</description>
-</channel>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_attribute, "image", "rdf:resource")
-<channel rdf:about="http://example.com/">
-  <title>hoge</title>
-  <link>http://example.com/</link>
-  <description>hogehoge</description>
-  <image/>
-</channel>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "items", "channel")
-<channel rdf:about="http://example.com/">
-  <title>hoge</title>
-  <link>http://example.com/</link>
-  <description>hogehoge</description>
-  <image rdf:resource="http://example.com/hoge.png" />
-</channel>
-EOR
-
-      rss = make_RDF(<<-EOR)
-<channel rdf:about="http://example.com/">
-  <title>hoge</title>
-  <link>http://example.com/</link>
-  <description>hogehoge</description>
-  <image rdf:resource="http://example.com/hoge.png" />
-  <items/>
-</channel>
-EOR
-
-      assert_missing_tag("Seq", "items") do
-        Parser.parse(rss)
-      end
-
-      assert_missing_tag("item", "RDF") do
-        Parser.parse(rss, false).validate
-      end
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
-<channel rdf:about="http://example.com/">
-  <title>hoge</title>
-  <link>http://example.com/</link>
-  <description>hogehoge</description>
-  <image rdf:resource="http://example.com/hoge.png" />
-  <items>
-    <rdf:Seq>
-    </rdf:Seq>
-  </items>
-</channel>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_attribute, "textinput", "rdf:resource")
-<channel rdf:about="http://example.com/">
-  <title>hoge</title>
-  <link>http://example.com/</link>
-  <description>hogehoge</description>
-  <image rdf:resource="http://example.com/hoge.png" />
-  <items>
-    <rdf:Seq>
-    </rdf:Seq>
-  </items>
-  <textinput/>
-</channel>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
-<channel rdf:about="http://example.com/">
-  <title>hoge</title>
-  <link>http://example.com/</link>
-  <description>hogehoge</description>
-  <image rdf:resource="http://example.com/hoge.png" />
-  <items>
-    <rdf:Seq>
-    </rdf:Seq>
-  </items>
-  <textinput rdf:resource="http://example.com/search" />
-</channel>
-EOR
-    end
-
-    def test_rdf_li
-      rss = make_RDF(<<-EOR)
-<channel rdf:about="http://example.com/">
-  <title>hoge</title>
-  <link>http://example.com/</link>
-  <description>hogehoge</description>
-  <image rdf:resource="http://example.com/hoge.png" />
-  <items>
-    <rdf:Seq>
-      <rdf:li \#{rdf_li_attr}/>
-    </rdf:Seq>
-  </items>
-  <textinput rdf:resource="http://example.com/search" />
-</channel>
-#{make_item}
-EOR
-
-      source = Proc.new do |rdf_li_attr|
-        eval(%Q[%Q[#{rss}]], binding)
-      end
-
-      attr = %q[resource="http://example.com/hoge"]
-      assert_parse(source.call(attr), :nothing_raised)
-
-      attr = %q[rdf:resource="http://example.com/hoge"]
-      assert_parse(source.call(attr), :nothing_raised)
-
-      assert_parse(source.call(""), :missing_attribute, "li", "resource")
-    end
-
-    def test_image
-      assert_parse(make_RDF(<<-EOR), :missing_attribute, "image", "rdf:about")
-#{make_channel}
-<image>
-</image>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "image")
-#{make_channel}
-<image rdf:about="http://example.com/hoge.png">
-</image>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "url", "image")
-#{make_channel}
-<image rdf:about="http://example.com/hoge.png">
-  <title>hoge</title>
-</image>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "image")
-#{make_channel}
-<image rdf:about="http://example.com/hoge.png">
-  <title>hoge</title>
-  <url>http://example.com/hoge.png</url>
-</image>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "item", "RDF")
-#{make_channel}
-<image rdf:about="http://example.com/hoge.png">
-  <title>hoge</title>
-  <url>http://example.com/hoge.png</url>
-  <link>http://example.com/</link>
-</image>
-EOR
-
-      rss = make_RDF(<<-EOR)
-#{make_channel}
-<image rdf:about="http://example.com/hoge.png">
-  <link>http://example.com/</link>
-  <url>http://example.com/hoge.png</url>
-  <title>hoge</title>
-</image>
-EOR
-
-      assert_missing_tag("item", "RDF") do
-        Parser.parse(rss)
-      end
-
-      assert_missing_tag("item", "RDF") do
-        Parser.parse(rss, false).validate
-      end
-    end
-
-    def test_item
-      assert_parse(make_RDF(<<-EOR), :missing_attribute, "item", "rdf:about")
-#{make_channel}
-#{make_image}
-<item>
-</item>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "item")
-#{make_channel}
-#{make_image}
-<item rdf:about="http://example.com/hoge.html">
-</item>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "item")
-#{make_channel}
-#{make_image}
-<item rdf:about="http://example.com/hoge.html">
-  <title>hoge</title>
-</item>
-EOR
-
-      assert_too_much_tag("title", "item") do
-        Parser.parse(make_RDF(<<-EOR))
-#{make_channel}
-#{make_image}
-<item rdf:about="http://example.com/hoge.html">
-  <title>hoge</title>
-  <title>hoge</title>
-  <link>http://example.com/hoge.html</link>
-</item>
-EOR
-      end
-
-      assert_parse(make_RDF(<<-EOR), :nothing_raised)
-#{make_channel}
-#{make_image}
-<item rdf:about="http://example.com/hoge.html">
-  <title>hoge</title>
-  <link>http://example.com/hoge.html</link>
-</item>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :nothing_raised)
-#{make_channel}
-#{make_image}
-<item rdf:about="http://example.com/hoge.html">
-  <title>hoge</title>
-  <link>http://example.com/hoge.html</link>
-  <description>hogehoge</description>
-</item>
-EOR
-    end
-
-    def test_textinput
-      assert_parse(make_RDF(<<-EOR), :missing_attribute, "textinput", "rdf:about")
-#{make_channel}
-#{make_image}
-#{make_item}
-<textinput>
-</textinput>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "title", "textinput")
-#{make_channel}
-#{make_image}
-#{make_item}
-<textinput rdf:about="http://example.com/search.html">
-</textinput>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "description", "textinput")
-#{make_channel}
-#{make_image}
-#{make_item}
-<textinput rdf:about="http://example.com/search.html">
-  <title>hoge</title>
-</textinput>
-EOR
-
-      assert_too_much_tag("title", "textinput") do
-        Parser.parse(make_RDF(<<-EOR))
-#{make_channel}
-#{make_image}
-#{make_item}
-<textinput rdf:about="http://example.com/search.html">
-  <title>hoge</title>
-  <title>hoge</title>
-  <description>hogehoge</description>
-</textinput>
-EOR
-      end
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "name", "textinput")
-#{make_channel}
-#{make_image}
-#{make_item}
-<textinput rdf:about="http://example.com/search.html">
-  <title>hoge</title>
-  <description>hogehoge</description>
-</textinput>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :missing_tag, "link", "textinput")
-#{make_channel}
-#{make_image}
-#{make_item}
-<textinput rdf:about="http://example.com/search.html">
-  <title>hoge</title>
-  <description>hogehoge</description>
-  <name>key</name>
-</textinput>
-EOR
-
-      assert_parse(make_RDF(<<-EOR), :nothing_raised)
-#{make_channel}
-#{make_image}
-#{make_item}
-<textinput rdf:about="http://example.com/search.html">
-  <title>hoge</title>
-  <description>hogehoge</description>
-  <name>key</name>
-  <link>http://example.com/search.html</link>
-</textinput>
-EOR
-    end
-
-    def test_ignore
-      name = "a"
-      rss = make_RDF(<<-EOR)
-#{make_channel}
-#{make_item}
-<#{name}/>
-EOR
-      assert_not_expected_tag(name, ::RSS::URI, "RDF") do
-        Parser.parse(rss, true, false)
-      end
-
-      uri = ""
-      name = "a"
-      rss = make_RDF(<<-EOR)
-#{make_channel}
-#{make_item}
-<#{name} xmlns=""/>
-EOR
-      assert_parse(rss, :nothing_raised)
-      assert_not_expected_tag(name, uri, "RDF") do
-        Parser.parse(rss, true, false)
-      end
-
-      uri = "http://example.com/"
-      name = "a"
-      rss = make_RDF(<<-EOR)
-#{make_channel}
-#{make_item}
-<x:#{name} xmlns:x="#{uri}"/>
-EOR
-      assert_parse(rss, :nothing_raised)
-      assert_not_expected_tag(name, uri, "RDF") do
-        Parser.parse(rss, true, false)
-      end
-
-      uri = ::RSS::URI
-      name = "a"
-      rss = make_RDF(<<-EOR)
-#{make_channel}
-#{make_item}
-#{make_image("<#{name}/>")}
-EOR
-      assert_parse(rss, :nothing_raised)
-      assert_not_expected_tag(name, uri, "image") do
-        Parser.parse(rss, true, false)
-      end
-      
-      uri = CONTENT_URI
-      name = "encoded"
-      elem = "<#{name} xmlns='#{uri}'/>"
-      rss = make_RDF(<<-EOR)
-#{make_channel}
-#{make_item}
-#{make_image(elem)}
-EOR
-      assert_parse(rss, :nothing_raised)
-      assert_not_expected_tag(name, uri, "image") do
-        Parser.parse(rss, true, false)
-      end
-    end
-
-    def test_unknown_duplicated_element
-      xmlns = {"test" => "http://localhost/test"}
-      assert_parse(make_RDF(<<-EOR, xmlns), :nothing_raised)
-        #{make_channel("<test:string/>")}
-        #{make_item}
-        #{make_image}
-      EOR
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser_2.0.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser_2.0.rb
deleted file mode 100644 (file)
index 249347d..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-require "rss-testcase"
-
-require "rss/2.0"
-
-module RSS
-  class TestParser20 < TestCase
-    def test_rss20
-      assert_parse(make_rss20(<<-EOR), :missing_tag, "channel", "rss")
-EOR
-
-      assert_parse(make_rss20(<<-EOR), :nothing_raised)
-#{make_channel20("")}
-EOR
-    end
-
-    def test_cloud20
-      attrs = [
-        ["domain", CLOUD_DOMAIN],
-        ["port", CLOUD_PORT],
-        ["path", CLOUD_PATH],
-        ["registerProcedure", CLOUD_REGISTER_PROCEDURE],
-        ["protocol", CLOUD_PROTOCOL],
-      ]
-
-      (attrs.size + 1).times do |i|
-        missing_attr = attrs[i]
-        if missing_attr
-          meth = :missing_attribute
-          args = ["cloud", missing_attr[0]]
-        else
-          meth = :nothing_raised
-          args = []
-        end
-
-        cloud_attrs = []
-        attrs.each_with_index do |attr, j|
-          unless i == j
-            cloud_attrs << %Q[#{attr[0]}="#{attr[1]}"]
-          end
-        end
-
-        assert_parse(make_rss20(<<-EOR), meth, *args)
-#{make_channel20(%Q[<cloud #{cloud_attrs.join("\n")}/>])}
-EOR
-      end
-    end
-
-    def test_source20
-        assert_parse(make_rss20(<<-EOR), :missing_attribute, "source", "url")
-#{make_channel20(make_item20(%Q[<source>Example</source>]))}
-EOR
-
-        assert_parse(make_rss20(<<-EOR), :nothing_raised)
-#{make_channel20(make_item20(%Q[<source url="http://example.com/" />]))}
-EOR
-
-        assert_parse(make_rss20(<<-EOR), :nothing_raised)
-#{make_channel20(make_item20(%Q[<source url="http://example.com/">Example</source>]))}
-EOR
-    end
-
-    def test_enclosure20
-      attrs = [
-        ["url", ENCLOSURE_URL],
-        ["length", ENCLOSURE_LENGTH],
-        ["type", ENCLOSURE_TYPE],
-      ]
-
-      (attrs.size + 1).times do |i|
-        missing_attr = attrs[i]
-        if missing_attr
-          meth = :missing_attribute
-          args = ["enclosure", missing_attr[0]]
-        else
-          meth = :nothing_raised
-          args = []
-        end
-
-        enclosure_attrs = []
-        attrs.each_with_index do |attr, j|
-          unless i == j
-            enclosure_attrs << %Q[#{attr[0]}="#{attr[1]}"]
-          end
-        end
-
-        assert_parse(make_rss20(<<-EOR), meth, *args)
-#{make_channel20(%Q[
-#{make_item20(%Q[
-<enclosure
-  #{enclosure_attrs.join("\n")} />
-    ])}
-  ])}
-EOR
-      end
-    end
-
-    def test_category20
-      values = [nil, CATEGORY_DOMAIN]
-      values.each do |value|
-        domain = ""
-        domain << %Q[domain="#{value}"] if value
-
-        ["", "Example Text"].each do |text|
-          rss_src = make_rss20(<<-EOR)
-#{make_channel20(%Q[
-#{make_item20(%Q[
-<category #{domain}>#{text}</category>
-    ])}
-  ])}
-EOR
-          assert_parse(rss_src, :nothing_raised)
-
-          rss = RSS::Parser.parse(rss_src)
-          category = rss.items.last.categories.first
-          assert_equal(value, category.domain)
-          assert_equal(text, category.content)
-        end
-      end
-    end
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser_atom_entry.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser_atom_entry.rb
deleted file mode 100644 (file)
index c2572d7..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-require "rss-testcase"
-
-require "rss/atom"
-
-module RSS
-  class TestParserAtom < TestCase
-    def test_entry_validation
-      assert_ns("", Atom::URI) do
-        Parser.parse(<<-EOA)
-<entry/>
-EOA
-      end
-
-      assert_ns("", Atom::URI) do
-        Parser.parse(<<-EOA)
-<entry xmlns="hoge"/>
-EOA
-      end
-
-      assert_parse(<<-EOA, :missing_tag, "id", "entry") do
-<entry xmlns="#{Atom::URI}"/>
-EOA
-      end
-
-      assert_parse(<<-EOA, :missing_tag, "title", "entry") do
-<entry xmlns="#{Atom::URI}">
-  <id>urn:uuid:506e336c-a26e-4457-917b-b89dca7ae746</id>
-</entry>
-EOA
-      end
-
-      assert_parse(<<-EOA, :missing_tag, "updated", "entry") do
-<entry xmlns="#{Atom::URI}">
-  <id>urn:uuid:506e336c-a26e-4457-917b-b89dca7ae746</id>
-  <title>Example Entry</title>
-</entry>
-EOA
-      end
-
-      assert_parse(<<-EOA, :missing_tag, "author", "entry") do
-<entry xmlns="#{Atom::URI}">
-  <id>urn:uuid:506e336c-a26e-4457-917b-b89dca7ae746</id>
-  <title>Example Entry</title>
-  <updated>2003-10-10T18:30:02Z</updated>
-</entry>
-EOA
-      end
-
-      assert_parse(<<-EOA, :nothing_raised) do
-<entry xmlns="#{Atom::URI}">
-  <id>urn:uuid:506e336c-a26e-4457-917b-b89dca7ae746</id>
-  <title>Example Entry</title>
-  <updated>2003-10-10T18:30:02Z</updated>
-  <author>
-    <name>A person</name>
-  </author>
-</entry>
-EOA
-      end
-    end
-
-    def test_entry
-      entry = RSS::Parser.parse(<<-EOA)
-<?xml version="1.0" encoding="utf-8"?>
-<entry xmlns="http://www.w3.org/2005/Atom">
-  <author>
-    <name>A person</name>
-  </author>
-  <title>Atom-Powered Robots Run Amok</title>
-  <link href="http://example.org/2003/12/13/atom03"/>
-  <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
-  <updated>2003-12-13T18:30:02Z</updated>
-  <summary>Some text.</summary>
-</entry>
-EOA
-      assert_not_nil(entry)
-      assert_equal("Atom-Powered Robots Run Amok", entry.title.content)
-      assert_equal("http://example.org/2003/12/13/atom03", entry.link.href)
-      assert_equal("urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a",
-                   entry.id.content)
-      assert_equal(Time.parse("2003-12-13T18:30:02Z"), entry.updated.content)
-      assert_equal("Some text.", entry.summary.content)
-    end
-
-    def test_entry_author
-      assert_atom_person("author", method(:make_entry_document)) do |entry|
-        assert_equal(2, entry.authors.size)
-        entry.authors.last
-      end
-    end
-
-    def test_entry_category
-      assert_atom_category(method(:make_entry_document)) do |entry|
-        assert_equal(1, entry.categories.size)
-        entry.category
-      end
-    end
-
-    def test_entry_content_text
-      assert_atom_content(method(:make_entry_document)) do |entry|
-        entry.content
-      end
-    end
-
-    def test_entry_contributor
-      assert_atom_person("contributor", method(:make_entry_document)) do |entry|
-        assert_equal(1, entry.contributors.size)
-        entry.contributor
-      end
-    end
-
-    def test_entry_id
-      entry = RSS::Parser.parse(make_entry_document)
-      assert_equal(ENTRY_ID, entry.id.content)
-    end
-
-    def test_entry_link
-      assert_atom_link(method(:make_entry_document)) do |entry|
-        assert_equal(1, entry.links.size)
-        entry.link
-      end
-    end
-
-    def test_published
-      generator = method(:make_entry_document)
-      assert_atom_date_construct("published", generator) do |entry|
-        entry.published
-      end
-    end
-
-    def test_entry_rights
-      generator = method(:make_entry_document)
-      assert_atom_text_construct("rights", generator) do |entry|
-        entry.rights
-      end
-    end
-
-    def test_entry_source
-      generator = method(:make_entry_document_with_open_source)
-      assert_atom_source(generator) do |entry|
-        assert_not_nil(entry.source)
-        entry.source
-      end
-    end
-
-    def test_entry_summary
-      generator = method(:make_entry_document)
-      assert_atom_text_construct("summary", generator) do |entry|
-        entry.summary
-      end
-    end
-
-    def test_entry_title
-      entry = RSS::Parser.parse(make_entry_document)
-      assert_equal(ENTRY_TITLE, entry.title.content)
-    end
-
-    def test_entry_updated
-      entry = RSS::Parser.parse(make_entry_document)
-      assert_equal(Time.parse(ENTRY_UPDATED), entry.updated.content)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser_atom_feed.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_parser_atom_feed.rb
deleted file mode 100644 (file)
index 4358cc8..0000000
+++ /dev/null
@@ -1,276 +0,0 @@
-require "rss-testcase"
-
-require "rss/atom"
-
-module RSS
-  class TestParserAtomFeed < TestCase
-    def test_feed_validation
-      assert_ns("", Atom::URI) do
-        Parser.parse(<<-EOA)
-<feed/>
-EOA
-      end
-
-      assert_ns("", Atom::URI) do
-        Parser.parse(<<-EOA)
-<feed xmlns="hoge"/>
-EOA
-      end
-
-      assert_parse(<<-EOA, :missing_tag, "id", "feed") do
-<feed xmlns="#{Atom::URI}"/>
-EOA
-      end
-
-      assert_parse(<<-EOA, :missing_tag, "title", "feed") do
-<feed xmlns="#{Atom::URI}">
-  <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
-</feed>
-EOA
-      end
-
-      assert_parse(<<-EOA, :missing_tag, "updated", "feed") do
-<feed xmlns="#{Atom::URI}">
-  <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
-  <title>Example Feed</title>
-</feed>
-EOA
-      end
-
-      assert_parse(<<-EOA, :missing_tag, "author", "feed") do
-<feed xmlns="#{Atom::URI}">
-  <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
-  <title>Example Feed</title>
-  <updated>2003-12-13T18:30:02Z</updated>
-</feed>
-EOA
-      end
-
-      assert_parse(<<-EOA, :nothing_raised) do
-<feed xmlns="#{Atom::URI}">
-  <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
-  <title>Example Feed</title>
-  <updated>2003-12-13T18:30:02Z</updated>
-  <author>
-    <name>A person</name>
-  </author>
-</feed>
-EOA
-      end
-    end
-
-    def test_lang
-      feed = RSS::Parser.parse(<<-EOA)
-<feed xmlns="#{Atom::URI}" xml:lang="ja">
-  <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
-  <title xml:lang="en">Example Feed</title>
-  <updated>2003-12-13T18:30:02Z</updated>
-  <author xml:lang="en">
-    <name>A person</name>
-  </author>
-</feed>
-EOA
-
-      assert_equal("ja", feed.lang)
-      assert_equal("ja", feed.id.lang)
-      assert_equal("en", feed.title.lang)
-      assert_equal("ja", feed.updated.lang)
-      assert_equal("en", feed.author.lang)
-      assert_equal("en", feed.author.name.lang)
-    end
-
-    def test_base
-      feed = RSS::Parser.parse(<<-EOA)
-<feed xmlns="#{Atom::URI}" xml:base="http://example.com/">
-  <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
-  <title xml:lang="en">Example Feed</title>
-  <updated>2003-12-13T18:30:02Z</updated>
-  <generator uri="generator">Generator</generator>
-  <link hreflang="ja" href="http://example.org/link1"/>
-  <link hreflang="en" href="link2"/>
-  <link hreflang="fr" xml:base="http://example.net/" href="link3"/>
-  <author>
-    <name>A person</name>
-    <uri>person</uri>
-  </author>
-</feed>
-EOA
-
-      assert_equal("http://example.com/", feed.base)
-      assert_equal("http://example.com/", feed.id.base)
-      assert_equal("http://example.com/", feed.title.base)
-      assert_equal("http://example.com/", feed.updated.base)
-      assert_equal("http://example.com/", feed.generator.base)
-      assert_equal("http://example.com/generator", feed.generator.uri)
-
-      assert_equal("http://example.com/", feed.links[0].base)
-      assert_equal("http://example.org/link1", feed.links[0].href)
-      assert_equal("http://example.com/", feed.links[1].base)
-      assert_equal("http://example.com/link2", feed.links[1].href)
-      assert_equal("http://example.net/", feed.links[2].base)
-      assert_equal("http://example.net/link3", feed.links[2].href)
-      assert_equal("http://example.com/person", feed.author.uri.content)
-    end
-
-    def test_feed_author
-      assert_atom_person("author", method(:make_feed)) do |feed|
-        assert_equal(2, feed.authors.size)
-        feed.authors[1]
-      end
-    end
-
-    def test_entry_author
-      generator = method(:make_feed_with_open_entry)
-      assert_atom_person("author", generator) do |feed|
-        assert_equal(1, feed.entries.size)
-        assert_equal(1, feed.entry.authors.size)
-        feed.entry.author
-      end
-    end
-
-    def test_feed_category
-      assert_atom_category(method(:make_feed)) do |feed|
-        assert_equal(1, feed.categories.size)
-        feed.category
-      end
-    end
-
-    def test_entry_category
-      assert_atom_category(method(:make_feed_with_open_entry)) do |feed|
-        assert_equal(1, feed.entries.size)
-        assert_equal(1, feed.entry.categories.size)
-        feed.entry.category
-      end
-    end
-
-    def test_entry_content
-      assert_atom_content(method(:make_feed_with_open_entry)) do |feed|
-        assert_equal(1, feed.entries.size)
-        feed.entry.content
-      end
-    end
-
-    def test_feed_contributor
-      assert_atom_person("contributor", method(:make_feed)) do |feed|
-        assert_equal(1, feed.contributors.size)
-        feed.contributor
-      end
-    end
-
-    def test_entry_contributor
-      generator = method(:make_feed_with_open_entry)
-      assert_atom_person("contributor", generator) do |feed|
-        assert_equal(1, feed.entries.size)
-        assert_equal(1, feed.entry.contributors.size)
-        feed.entry.contributor
-      end
-    end
-
-    def test_feed_generator
-      assert_atom_generator(method(:make_feed)) do |feed|
-        feed.generator
-      end
-    end
-
-    def test_feed_icon
-      assert_atom_icon(method(:make_feed)) do |feed|
-        feed.icon
-      end
-    end
-
-    def test_feed_id
-      feed = RSS::Parser.parse(make_feed(''))
-      assert_equal(FEED_ID, feed.id.content)
-    end
-
-    def test_entry_id
-      feed = RSS::Parser.parse(make_feed(''))
-      assert_equal(ENTRY_ID, feed.entry.id.content)
-    end
-
-    def test_feed_link
-      assert_atom_link(method(:make_feed)) do |feed|
-        assert_equal(1, feed.links.size)
-        feed.link
-      end
-    end
-
-    def test_entry_link
-      assert_atom_link(method(:make_feed_with_open_entry)) do |feed|
-        assert_equal(1, feed.entries.size)
-        assert_equal(1, feed.entry.links.size)
-        feed.entry.link
-      end
-    end
-
-    def test_feed_logo
-      assert_atom_logo(method(:make_feed)) do |feed|
-        feed.logo
-      end
-    end
-
-    def test_feed_rights
-      assert_atom_text_construct("rights", method(:make_feed)) do |feed|
-        feed.rights
-      end
-    end
-
-    def test_entry_rights
-      generator = method(:make_feed_with_open_entry)
-      assert_atom_text_construct("rights", generator) do |feed|
-        assert_equal(1, feed.entries.size)
-        feed.entry.rights
-      end
-    end
-
-    def test_entry_source
-      assert_atom_source(method(:make_feed_with_open_entry_source)) do |feed|
-        assert_equal(1, feed.entries.size)
-        assert_not_nil(feed.entry.source)
-        feed.entry.source
-      end
-    end
-
-    def test_feed_subtitle
-      assert_atom_text_construct("subtitle", method(:make_feed)) do |feed|
-        feed.subtitle
-      end
-    end
-
-    def test_feed_title
-      feed = RSS::Parser.parse(make_feed(''))
-      assert_equal(FEED_TITLE, feed.title.content)
-    end
-
-    def test_entry_title
-      feed = RSS::Parser.parse(make_feed(''))
-      assert_equal(ENTRY_TITLE, feed.entry.title.content)
-    end
-
-    def test_feed_updated
-      feed = RSS::Parser.parse(make_feed(''))
-      assert_equal(Time.parse(FEED_UPDATED), feed.updated.content)
-    end
-
-    def test_entry_updated
-      feed = RSS::Parser.parse(make_feed(''))
-      assert_equal(Time.parse(ENTRY_UPDATED), feed.entry.updated.content)
-    end
-
-    def test_entry_published
-      generator = method(:make_feed_with_open_entry)
-      assert_atom_date_construct("published", generator) do |feed|
-        assert_equal(1, feed.entries.size)
-        feed.entry.published
-      end
-    end
-
-    def test_entry_summary
-      generator = method(:make_feed_with_open_entry)
-      assert_atom_text_construct("summary", generator) do |feed|
-        assert_equal(1, feed.entries.size)
-        feed.entry.summary
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_0.9.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_0.9.rb
deleted file mode 100644 (file)
index c20186c..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestSetupMaker09 < TestCase
-
-    def test_setup_maker_channel
-      title = "fugafuga"
-      link = "http://hoge.com"
-      description = "fugafugafugafuga"
-      language = "ja"
-      copyright = "foo"
-      managingEditor = "bar"
-      webMaster = "web master"
-      rating = '(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l gen true comment "RSACi North America Server" for "http://www.rsac.org" on "1996.04.16T08:15-0500" r (n 0 s 0 v 0 l 0))'
-      docs = "http://foo.com/doc"
-      skipDays = [
-        "Sunday",
-        "Monday",
-      ]
-      skipHours = [
-        "0",
-        "13",
-      ]
-      pubDate = Time.now
-      lastBuildDate = Time.now
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        maker.channel.title = title
-        maker.channel.link = link
-        maker.channel.description = description
-        maker.channel.language = language
-        maker.channel.copyright = copyright
-        maker.channel.managingEditor = managingEditor
-        maker.channel.webMaster = webMaster
-        maker.channel.rating = rating
-        maker.channel.docs = docs
-        maker.channel.pubDate = pubDate
-        maker.channel.lastBuildDate = lastBuildDate
-
-        skipDays.each do |day|
-          maker.channel.skipDays.new_day do |new_day|
-            new_day.content = day
-          end
-        end
-        skipHours.each do |hour|
-          maker.channel.skipHours.new_hour do |new_hour|
-            new_hour.content = hour
-          end
-        end
-
-        setup_dummy_image(maker)
-      end
-
-      assert_not_set_error("maker.image", %w(title url)) do
-        RSS::Maker.make("0.91") do |maker|
-          rss.channel.setup_maker(maker)
-        end
-      end
-
-      new_rss = RSS::Maker.make("0.91") do |maker|
-        rss.channel.setup_maker(maker)
-        setup_dummy_image(maker)
-      end
-      channel = new_rss.channel
-      
-      assert_equal(title, channel.title)
-      assert_equal(link, channel.link)
-      assert_equal(description, channel.description)
-      assert_equal(language, channel.language)
-      assert_equal(copyright, channel.copyright)
-      assert_equal(managingEditor, channel.managingEditor)
-      assert_equal(webMaster, channel.webMaster)
-      assert_equal(rating, channel.rating)
-      assert_equal(docs, channel.docs)
-      assert_equal(pubDate, channel.pubDate)
-      assert_equal(lastBuildDate, channel.lastBuildDate)
-
-      skipDays.each_with_index do |day, i|
-        assert_equal(day, channel.skipDays.days[i].content)
-      end
-      skipHours.each_with_index do |hour, i|
-        assert_equal(hour.to_i, channel.skipHours.hours[i].content)
-      end
-
-      assert(channel.items.empty?)
-      assert_nil(channel.textInput)
-    end
-
-    def test_setup_maker_image
-      title = "fugafuga"
-      link = "http://hoge.com"
-      url = "http://hoge.com/hoge.png"
-      width = "144"
-      height = "400"
-      description = "an image"
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        maker.channel.link = link
-        
-        maker.image.title = title
-        maker.image.url = url
-        maker.image.width = width
-        maker.image.height = height
-        maker.image.description = description
-      end
-      
-      new_rss = RSS::Maker.make("0.91") do |maker|
-        rss.channel.setup_maker(maker)
-        rss.image.setup_maker(maker)
-      end
-      
-      image = new_rss.image
-      assert_equal(title, image.title)
-      assert_equal(link, image.link)
-      assert_equal(url, image.url)
-      assert_equal(width.to_i, image.width)
-      assert_equal(height.to_i, image.height)
-      assert_equal(description, image.description)
-    end
-    
-    def test_setup_maker_textinput
-      title = "fugafuga"
-      description = "text hoge fuga"
-      name = "hoge"
-      link = "http://hoge.com"
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_image(maker)
-
-        maker.textinput.title = title
-        maker.textinput.description = description
-        maker.textinput.name = name
-        maker.textinput.link = link
-      end
-
-      new_rss = RSS::Maker.make("0.91") do |maker|
-        rss.channel.setup_maker(maker)
-        rss.image.setup_maker(maker)
-        rss.textinput.setup_maker(maker)
-      end
-      
-      textInput = new_rss.channel.textInput
-      assert_equal(title, textInput.title)
-      assert_equal(description, textInput.description)
-      assert_equal(name, textInput.name)
-      assert_equal(link, textInput.link)
-    end
-
-    def test_setup_maker_items(for_backward_compatibility=false)
-      title = "TITLE"
-      link = "http://hoge.com/"
-      description = "text hoge fuga"
-
-      item_size = 5
-      
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_dummy_channel(maker)
-        
-        item_size.times do |i|
-          maker.items.new_item do |item|
-            item.title = "#{title}#{i}"
-            item.link = "#{link}#{i}"
-            item.description = "#{description}#{i}"
-          end
-        end
-
-        setup_dummy_image(maker)
-      end
-      
-      new_rss = RSS::Maker.make("0.91") do |maker|
-        rss.channel.setup_maker(maker)
-
-        rss.items.each do |item|
-          if for_backward_compatibility
-            item.setup_maker(maker)
-          else
-            item.setup_maker(maker.items)
-          end
-        end
-
-        rss.image.setup_maker(maker)
-      end
-
-      assert_equal(item_size, new_rss.items.size)
-      new_rss.items.each_with_index do |item, i|
-        assert_equal("#{title}#{i}", item.title)
-        assert_equal("#{link}#{i}", item.link)
-        assert_equal("#{description}#{i}", item.description)
-      end
-    end
-
-    def test_setup_maker_items_backward_compatibility
-      test_setup_maker_items(true)
-    end
-    
-    def test_setup_maker
-      encoding = "EUC-JP"
-      standalone = true
-      
-      href = 'a.xsl'
-      type = 'text/xsl'
-      title = 'sample'
-      media = 'printer'
-      charset = 'UTF-8'
-      alternate = 'yes'
-
-      rss = RSS::Maker.make("0.91") do |maker|
-        maker.encoding = encoding
-        maker.standalone = standalone
-
-        maker.xml_stylesheets.new_xml_stylesheet do |xss|
-          xss.href = href
-          xss.type = type
-          xss.title = title
-          xss.media = media
-          xss.charset = charset
-          xss.alternate = alternate
-        end
-
-        setup_dummy_channel(maker)
-        setup_dummy_image(maker)
-      end
-
-      new_rss = RSS::Maker.make("0.91") do |maker|
-        rss.setup_maker(maker)
-      end
-      
-      assert_equal("0.91", new_rss.rss_version)
-      assert_equal(encoding, new_rss.encoding)
-      assert_equal(standalone, new_rss.standalone)
-
-      xss = rss.xml_stylesheets.first
-      assert_equal(1, rss.xml_stylesheets.size)
-      assert_equal(href, xss.href)
-      assert_equal(type, xss.type)
-      assert_equal(title, xss.title)
-      assert_equal(media, xss.media)
-      assert_equal(charset, xss.charset)
-      assert_equal(alternate, xss.alternate)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_1.0.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_1.0.rb
deleted file mode 100644 (file)
index 0b960d9..0000000
+++ /dev/null
@@ -1,550 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestSetupMaker10 < TestCase
-
-    def setup
-      t = Time.iso8601("2000-01-01T12:00:05+00:00")
-      class << t
-        alias_method(:to_s, :iso8601)
-      end
-      
-      @dc_elems = {
-        :title => "hoge",
-        :description =>
-          " XML is placing increasingly heavy loads on
-          the existing technical infrastructure of the Internet.",
-        :creator => "Rael Dornfest (mailto:rael@oreilly.com)",
-        :subject => "XML",
-        :publisher => "The O'Reilly Network",
-        :contributor => "hogehoge",
-        :type => "fugafuga",
-        :format => "hohoho",
-        :identifier => "fufufu",
-        :source => "barbar",
-        :language => "ja",
-        :relation => "cococo",
-        :rights => "Copyright (c) 2000 O'Reilly &amp; Associates, Inc.",
-        :date => t,
-      }
-
-      @sy_elems = {
-        :updatePeriod => "hourly",
-        :updateFrequency => "2",
-        :updateBase => t,
-      }
-
-      @content_elems = {
-        :encoded => "<em>ATTENTION</em>",
-      }
-      
-      @trackback_elems = {
-        :ping => "http://bar.com/tb.cgi?tb_id=rssplustrackback",
-        :about => [
-          "http://foo.com/trackback/tb.cgi?tb_id=20020923",
-          "http://foo.com/trackback/tb.cgi?tb_id=20021010",
-        ],
-      }
-
-      @taxo_topic_elems = [
-        {
-          :link => "http://meerkat.oreillynet.com/?c=cat23",
-          :title => "Data: XML",
-          :description => "A Meerkat channel",
-        },
-        {
-          :link => "http://dmoz.org/Computers/Data_Formats/Markup_Languages/XML/",
-          :title => "XML",
-          :subject => "XML",
-          :description => "DMOZ category",
-          :topics => [
-            "http://meerkat.oreillynet.com/?c=cat23",
-            "http://dmoz.org/Computers/Data_Formats/Markup_Languages/SGML/",
-            "http://dmoz.org/Computers/Programming/Internet/",
-          ]
-        },
-      ]
-    end
-    
-    def test_setup_maker_channel
-      about = "http://hoge.com"
-      title = "fugafuga"
-      link = "http://hoge.com"
-      description = "fugafugafugafuga"
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        maker.channel.about = about
-        maker.channel.title = title
-        maker.channel.link = link
-        maker.channel.description = description
-        
-        @dc_elems.each do |var, value|
-          maker.channel.__send__("dc_#{var}=", value)
-        end
-
-        @sy_elems.each do |var, value|
-          maker.channel.__send__("sy_#{var}=", value)
-        end
-
-        setup_dummy_item(maker)
-      end
-
-      new_rss = RSS::Maker.make("1.0") do |maker|
-        rss.channel.setup_maker(maker)
-        rss.items.each do |item|
-          item.setup_maker(maker)
-        end
-      end
-      channel = new_rss.channel
-      
-      assert_equal(about, channel.about)
-      assert_equal(title, channel.title)
-      assert_equal(link, channel.link)
-      assert_equal(description, channel.description)
-      assert_equal(1, channel.items.Seq.lis.size)
-      assert_nil(channel.image)
-      assert_nil(channel.textinput)
-
-      @dc_elems.each do |var, value|
-        assert_equal(value, channel.__send__("dc_#{var}"))
-      end
-      
-      @sy_elems.each do |var, value|
-        value = value.to_i if var == :updateFrequency
-        assert_equal(value, channel.__send__("sy_#{var}"))
-      end
-      
-    end
-
-    def test_setup_maker_image
-      title = "fugafuga"
-      link = "http://hoge.com"
-      url = "http://hoge.com/hoge.png"
-      
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        maker.channel.link = link
-        
-        maker.image.title = title
-        maker.image.url = url
-
-        @dc_elems.each do |var, value|
-          maker.image.__send__("dc_#{var}=", value)
-        end
-
-        setup_dummy_item(maker)
-      end
-      
-      new_rss = RSS::Maker.make("1.0") do |maker|
-        rss.channel.setup_maker(maker)
-        rss.image.setup_maker(maker)
-        rss.items.each do |item|
-          item.setup_maker(maker)
-        end
-      end
-      
-      image = new_rss.image
-      assert_equal(url, image.about)
-      assert_equal(url, new_rss.channel.image.resource)
-      assert_equal(title, image.title)
-      assert_equal(link, image.link)
-      assert_equal(url, image.url)
-
-      @dc_elems.each do |var, value|
-        assert_equal(image.__send__("dc_#{var}"), value)
-      end
-    end
-    
-    def test_setup_maker_textinput
-      title = "fugafuga"
-      description = "text hoge fuga"
-      name = "hoge"
-      link = "http://hoge.com"
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        maker.textinput.link = link
-        maker.textinput.title = title
-        maker.textinput.description = description
-        maker.textinput.name = name
-
-        @dc_elems.each do |var, value|
-          maker.textinput.__send__("dc_#{var}=", value)
-        end
-
-        setup_dummy_item(maker)
-      end
-      
-      new_rss = RSS::Maker.make("1.0") do |maker|
-        rss.channel.setup_maker(maker)
-        rss.textinput.setup_maker(maker)
-        rss.items.each do |item|
-          item.setup_maker(maker)
-        end
-      end
-      
-      textinput = new_rss.textinput
-      assert_equal(link, textinput.about)
-      assert_equal(link, new_rss.channel.textinput.resource)
-      assert_equal(title, textinput.title)
-      assert_equal(name, textinput.name)
-      assert_equal(description, textinput.description)
-      assert_equal(link, textinput.link)
-
-      @dc_elems.each do |var, value|
-        assert_equal(textinput.__send__("dc_#{var}"), value)
-      end
-    end
-
-    def test_setup_maker_items(for_backward_compatibility=false)
-      title = "TITLE"
-      link = "http://hoge.com/"
-      description = "text hoge fuga"
-
-      item_size = 5
-      
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        item_size.times do |i|
-          maker.items.new_item do |item|
-            item.title = "#{title}#{i}"
-            item.link = "#{link}#{i}"
-            item.description = "#{description}#{i}"
-
-            @dc_elems.each do |var, value|
-              item.__send__("dc_#{var}=", value)
-            end
-
-            @content_elems.each do |var, value|
-              item.__send__("content_#{var}=", value)
-            end
-
-            item.trackback_ping = @trackback_elems[:ping]
-            @trackback_elems[:about].each do |value|
-              item.trackback_abouts.new_about do |new_about|
-                new_about.value = value
-              end
-            end
-          end
-        end
-      end
-      
-      new_rss = RSS::Maker.make("1.0") do |maker|
-        rss.channel.setup_maker(maker)
-
-        rss.items.each do |item|
-          if for_backward_compatibility
-            item.setup_maker(maker)
-          else
-            item.setup_maker(maker.items)
-          end
-        end
-      end
-      
-      assert_equal(item_size, new_rss.items.size)
-      new_rss.items.each_with_index do |item, i|
-        assert_equal("#{link}#{i}", item.about)
-        assert_equal("#{title}#{i}", item.title)
-        assert_equal("#{link}#{i}", item.link)
-        assert_equal("#{description}#{i}", item.description)
-
-        @dc_elems.each do |var, value|
-          assert_equal(item.__send__("dc_#{var}"), value)
-        end
-      
-        @content_elems.each do |var, value|
-          assert_equal(item.__send__("content_#{var}"), value)
-        end
-      
-        assert_equal(@trackback_elems[:ping], item.trackback_ping)
-        assert_equal(@trackback_elems[:about].size, item.trackback_abouts.size)
-        item.trackback_abouts.each_with_index do |about, j|
-          assert_equal(@trackback_elems[:about][j], about.value)
-        end
-      end
-    end
-
-    def test_setup_maker_items_sort
-      title = "TITLE"
-      link = "http://hoge.com/"
-      description = "text hoge fuga"
-
-      item_size = 5
-      
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        item_size.times do |i|
-          item = RSS::RDF::Item.new("#{link}#{i}")
-          item.title = "#{title}#{i}"
-          item.link = "#{link}#{i}"
-          item.description = "#{description}#{i}"
-          item.dc_date = Time.now + i * 60
-          item.setup_maker(maker.items)
-        end
-        maker.items.do_sort = false
-      end
-      assert_equal(item_size, rss.items.size)
-      rss.items.each_with_index do |item, i|
-        assert_equal("#{link}#{i}", item.about)
-        assert_equal("#{title}#{i}", item.title)
-        assert_equal("#{link}#{i}", item.link)
-        assert_equal("#{description}#{i}", item.description)
-      end
-
-      
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        item_size.times do |i|
-          item = RSS::RDF::Item.new("#{link}#{i}")
-          item.title = "#{title}#{i}"
-          item.link = "#{link}#{i}"
-          item.description = "#{description}#{i}"
-          item.dc_date = Time.now + i * 60
-          item.setup_maker(maker.items)
-        end
-        maker.items.do_sort = true
-      end
-      assert_equal(item_size, rss.items.size)
-      rss.items.reverse.each_with_index do |item, i|
-        assert_equal("#{link}#{i}", item.about)
-        assert_equal("#{title}#{i}", item.title)
-        assert_equal("#{link}#{i}", item.link)
-        assert_equal("#{description}#{i}", item.description)
-      end
-    end
-
-    def test_setup_maker_items_backward_compatibility
-      test_setup_maker_items(true)
-    end
-    
-    def test_setup_maker
-      encoding = "EUC-JP"
-      standalone = true
-      
-      href = 'a.xsl'
-      type = 'text/xsl'
-      title = 'sample'
-      media = 'printer'
-      charset = 'UTF-8'
-      alternate = 'yes'
-
-      rss = RSS::Maker.make("1.0") do |maker|
-        maker.encoding = encoding
-        maker.standalone = standalone
-
-        maker.xml_stylesheets.new_xml_stylesheet do |xss|
-          xss.href = href
-          xss.type = type
-          xss.title = title
-          xss.media = media
-          xss.charset = charset
-          xss.alternate = alternate
-        end
-
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-      end
-      
-      new_rss = RSS::Maker.make("1.0") do |maker|
-        rss.setup_maker(maker)
-      end
-      
-      assert_equal("1.0", new_rss.rss_version)
-      assert_equal(encoding, new_rss.encoding)
-      assert_equal(standalone, new_rss.standalone)
-
-      xss = new_rss.xml_stylesheets.first
-      assert_equal(1, new_rss.xml_stylesheets.size)
-      assert_equal(href, xss.href)
-      assert_equal(type, xss.type)
-      assert_equal(title, xss.title)
-      assert_equal(media, xss.media)
-      assert_equal(charset, xss.charset)
-      assert_equal(alternate, xss.alternate)
-    end
-
-    def test_setup_maker_full
-      encoding = "EUC-JP"
-      standalone = true
-      
-      href = 'a.xsl'
-      type = 'text/xsl'
-      title = 'sample'
-      media = 'printer'
-      charset = 'UTF-8'
-      alternate = 'yes'
-
-      channel_about = "http://hoge.com"
-      channel_title = "fugafuga"
-      channel_link = "http://hoge.com"
-      channel_description = "fugafugafugafuga"
-
-      image_title = "fugafuga"
-      image_url = "http://hoge.com/hoge.png"
-      
-      textinput_title = "fugafuga"
-      textinput_description = "text hoge fuga"
-      textinput_name = "hoge"
-      textinput_link = "http://hoge.com"
-      
-      item_title = "TITLE"
-      item_link = "http://hoge.com/"
-      item_description = "text hoge fuga"
-
-      item_size = 5
-      
-      rss = RSS::Maker.make("1.0") do |maker|
-        maker.encoding = encoding
-        maker.standalone = standalone
-
-        maker.xml_stylesheets.new_xml_stylesheet do |xss|
-          xss.href = href
-          xss.type = type
-          xss.title = title
-          xss.media = media
-          xss.charset = charset
-          xss.alternate = alternate
-        end
-
-        maker.channel.about = channel_about
-        maker.channel.title = channel_title
-        maker.channel.link = channel_link
-        maker.channel.description = channel_description
-        @dc_elems.each do |var, value|
-          maker.channel.__send__("dc_#{var}=", value)
-        end
-        @sy_elems.each do |var, value|
-          maker.channel.__send__("sy_#{var}=", value)
-        end
-        
-        maker.image.title = image_title
-        maker.image.url = image_url
-        @dc_elems.each do |var, value|
-          maker.image.__send__("dc_#{var}=", value)
-        end
-        
-        maker.textinput.link = textinput_link
-        maker.textinput.title = textinput_title
-        maker.textinput.description = textinput_description
-        maker.textinput.name = textinput_name
-        @dc_elems.each do |var, value|
-          maker.textinput.__send__("dc_#{var}=", value)
-        end
-        
-        item_size.times do |i|
-          maker.items.new_item do |item|
-            item.title = "#{item_title}#{i}"
-            item.link = "#{item_link}#{i}"
-            item.description = "#{item_description}#{i}"
-
-            @dc_elems.each do |var, value|
-              item.__send__("dc_#{var}=", value)
-            end
-
-            @content_elems.each do |var, value|
-              item.__send__("content_#{var}=", value)
-            end
-
-            item.trackback_ping = @trackback_elems[:ping]
-            @trackback_elems[:about].each do |value|
-              item.trackback_abouts.new_about do |new_about|
-                new_about.value = value
-              end
-            end
-          end
-        end
-
-        setup_taxo_topic(maker, @taxo_topic_elems)
-      end
-      
-      new_rss = RSS::Maker.make("1.0") do |maker|
-        rss.setup_maker(maker)
-      end
-      
-      assert_equal("1.0", new_rss.rss_version)
-      assert_equal(encoding, new_rss.encoding)
-      assert_equal(standalone, new_rss.standalone)
-
-      xss = new_rss.xml_stylesheets.first
-      assert_equal(1, new_rss.xml_stylesheets.size)
-      assert_equal(href, xss.href)
-      assert_equal(type, xss.type)
-      assert_equal(title, xss.title)
-      assert_equal(media, xss.media)
-      assert_equal(charset, xss.charset)
-      assert_equal(alternate, xss.alternate)
-
-      channel = new_rss.channel
-      assert_equal(channel_about, channel.about)
-      assert_equal(channel_title, channel.title)
-      assert_equal(channel_link, channel.link)
-      assert_equal(channel_description, channel.description)
-      item_resources = []
-      item_size.times do |i|
-        item_resources << "#{item_link}#{i}"
-      end
-      assert_equal(item_resources, channel.items.resources)
-      assert_equal(image_url, channel.image.resource)
-      assert_equal(textinput_link, channel.textinput.resource)
-      @dc_elems.each do |var, value|
-        assert_equal(value, channel.__send__("dc_#{var}"))
-      end
-      @sy_elems.each do |var, value|
-        value = value.to_i if var == :updateFrequency
-        assert_equal(value, channel.__send__("sy_#{var}"))
-      end
-
-      image = new_rss.image
-      assert_equal(image_url, image.about)
-      assert_equal(image_url, new_rss.channel.image.resource)
-      assert_equal(image_title, image.title)
-      assert_equal(channel_link, image.link)
-      assert_equal(image_url, image.url)
-      @dc_elems.each do |var, value|
-        assert_equal(image.__send__("dc_#{var}"), value)
-      end
-      
-      textinput = new_rss.textinput
-      assert_equal(textinput_link, textinput.about)
-      assert_equal(textinput_link, new_rss.channel.textinput.resource)
-      assert_equal(textinput_title, textinput.title)
-      assert_equal(textinput_name, textinput.name)
-      assert_equal(textinput_description, textinput.description)
-      assert_equal(textinput_link, textinput.link)
-      @dc_elems.each do |var, value|
-        assert_equal(textinput.__send__("dc_#{var}"), value)
-      end
-
-      assert_equal(item_size, new_rss.items.size)
-      new_rss.items.each_with_index do |item, i|
-        assert_equal("#{item_link}#{i}", item.about)
-        assert_equal("#{item_title}#{i}", item.title)
-        assert_equal("#{item_link}#{i}", item.link)
-        assert_equal("#{item_description}#{i}", item.description)
-
-        @dc_elems.each do |var, value|
-          assert_equal(item.__send__("dc_#{var}"), value)
-        end
-      
-        @content_elems.each do |var, value|
-          assert_equal(item.__send__("content_#{var}"), value)
-        end
-      
-        assert_equal(@trackback_elems[:ping], item.trackback_ping)
-        assert_equal(@trackback_elems[:about].size, item.trackback_abouts.size)
-        item.trackback_abouts.each_with_index do |about, j|
-          assert_equal(@trackback_elems[:about][j], about.value)
-        end
-      end
-
-      assert_taxo_topic(@taxo_topic_elems, new_rss)
-    end
-    
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_2.0.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_2.0.rb
deleted file mode 100644 (file)
index 8fb727d..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestSetupMaker20 < TestCase
-
-    def test_setup_maker_channel
-      title = "fugafuga"
-      link = "http://hoge.com"
-      description = "fugafugafugafuga"
-      language = "ja"
-      copyright = "foo"
-      managingEditor = "bar"
-      webMaster = "web master"
-      rating = '(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l gen true comment "RSACi North America Server" for "http://www.rsac.org" on "1996.04.16T08:15-0500" r (n 0 s 0 v 0 l 0))'
-      docs = "http://foo.com/doc"
-      skipDays = [
-        "Sunday",
-        "Monday",
-      ]
-      skipHours = [
-        "0",
-        "13",
-      ]
-      pubDate = Time.now
-      lastBuildDate = Time.now
-      categories = [
-        "Nespapers",
-        "misc",
-      ]
-      generator = "RSS Maker"
-      ttl = "60"
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        maker.channel.title = title
-        maker.channel.link = link
-        maker.channel.description = description
-        maker.channel.language = language
-        maker.channel.copyright = copyright
-        maker.channel.managingEditor = managingEditor
-        maker.channel.webMaster = webMaster
-        maker.channel.rating = rating
-        maker.channel.docs = docs
-        maker.channel.pubDate = pubDate
-        maker.channel.lastBuildDate = lastBuildDate
-
-        skipDays.each do |day|
-          maker.channel.skipDays.new_day do |new_day|
-            new_day.content = day
-          end
-        end
-        skipHours.each do |hour|
-          maker.channel.skipHours.new_hour do |new_hour|
-            new_hour.content = hour
-          end
-        end
-
-
-        categories.each do |category|
-          maker.channel.categories.new_category do |new_category|
-            new_category.content = category
-          end
-        end
-        
-        maker.channel.generator = generator
-        maker.channel.ttl = ttl
-      end
-
-      new_rss = RSS::Maker.make("2.0") do |maker|
-        rss.channel.setup_maker(maker)
-      end
-      channel = new_rss.channel
-      
-      assert_equal(title, channel.title)
-      assert_equal(link, channel.link)
-      assert_equal(description, channel.description)
-      assert_equal(language, channel.language)
-      assert_equal(copyright, channel.copyright)
-      assert_equal(managingEditor, channel.managingEditor)
-      assert_equal(webMaster, channel.webMaster)
-      assert_equal(rating, channel.rating)
-      assert_equal(docs, channel.docs)
-      assert_equal(pubDate, channel.pubDate)
-      assert_equal(lastBuildDate, channel.lastBuildDate)
-
-      skipDays.each_with_index do |day, i|
-        assert_equal(day, channel.skipDays.days[i].content)
-      end
-      skipHours.each_with_index do |hour, i|
-        assert_equal(hour.to_i, channel.skipHours.hours[i].content)
-      end
-      
-
-      channel.categories.each_with_index do |category, i|
-        assert_equal(categories[i], category.content)
-      end
-      
-      assert_equal(generator, channel.generator)
-      assert_equal(ttl.to_i, channel.ttl)
-
-
-      assert(channel.items.empty?)
-      assert_nil(channel.image)
-      assert_nil(channel.textInput)
-    end
-
-    def test_setup_maker_image
-      title = "fugafuga"
-      link = "http://hoge.com"
-      url = "http://hoge.com/hoge.png"
-      width = "144"
-      height = "400"
-      description = "an image"
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        maker.channel.link = link
-        
-        maker.image.title = title
-        maker.image.url = url
-        maker.image.width = width
-        maker.image.height = height
-        maker.image.description = description
-      end
-      
-      new_rss = RSS::Maker.make("2.0") do |maker|
-        rss.channel.setup_maker(maker)
-        rss.image.setup_maker(maker)
-      end
-      
-      image = new_rss.image
-      assert_equal(title, image.title)
-      assert_equal(link, image.link)
-      assert_equal(url, image.url)
-      assert_equal(width.to_i, image.width)
-      assert_equal(height.to_i, image.height)
-      assert_equal(description, image.description)
-    end
-    
-    def test_setup_maker_textinput
-      title = "fugafuga"
-      description = "text hoge fuga"
-      name = "hoge"
-      link = "http://hoge.com"
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-
-        maker.textinput.title = title
-        maker.textinput.description = description
-        maker.textinput.name = name
-        maker.textinput.link = link
-      end
-
-      new_rss = RSS::Maker.make("2.0") do |maker|
-        rss.channel.setup_maker(maker)
-        rss.textinput.setup_maker(maker)
-      end
-      
-      textInput = new_rss.channel.textInput
-      assert_equal(title, textInput.title)
-      assert_equal(description, textInput.description)
-      assert_equal(name, textInput.name)
-      assert_equal(link, textInput.link)
-    end
-
-    def test_setup_maker_items(for_backward_compatibility=false)
-      title = "TITLE"
-      link = "http://hoge.com/"
-      description = "text hoge fuga"
-      author = "oprah@oxygen.net"
-      comments = "http://www.myblog.org/cgi-local/mt/mt-comments.cgi?entry_id=290"
-      pubDate = Time.now
-
-      guid_isPermaLink = "true"
-      guid_content = "http://inessential.com/2002/09/01.php#a2"
-      
-      enclosure_url = "http://www.scripting.com/mp3s/weatherReportSuite.mp3"
-      enclosure_length = "12216320"
-      enclosure_type = "audio/mpeg"
-
-      source_url = "http://static.userland.com/tomalak/links2.xml"
-      source_content = "Tomalak's Realm"
-      
-      category_domain = "http://www.fool.com/cusips"
-      category_content = "MSFT"
-      
-      item_size = 5
-      
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_dummy_channel(maker)
-        
-        item_size.times do |i|
-          maker.items.new_item do |item|
-            item.title = "#{title}#{i}"
-            item.link = "#{link}#{i}"
-            item.description = "#{description}#{i}"
-            item.author = "#{author}#{i}"
-            item.comments = "#{comments}#{i}"
-            item.date = pubDate
-
-            item.guid.isPermaLink = guid_isPermaLink
-            item.guid.content = guid_content
-
-            item.enclosure.url = enclosure_url
-            item.enclosure.length = enclosure_length
-            item.enclosure.type = enclosure_type
-
-            item.source.url = source_url
-            item.source.content = source_content
-
-            category = item.categories.new_category
-            category.domain = category_domain
-            category.content = category_content
-          end
-        end
-      end
-      
-      new_rss = RSS::Maker.make("2.0") do |maker|
-        rss.channel.setup_maker(maker)
-
-        rss.items.each do |item|
-          if for_backward_compatibility
-            item.setup_maker(maker)
-          else
-            item.setup_maker(maker.items)
-          end
-        end
-      end
-      
-      assert_equal(item_size, new_rss.items.size)
-      new_rss.items.each_with_index do |item, i|
-        assert_equal("#{title}#{i}", item.title)
-        assert_equal("#{link}#{i}", item.link)
-        assert_equal("#{description}#{i}", item.description)
-        assert_equal("#{author}#{i}", item.author)
-        assert_equal("#{comments}#{i}", item.comments)
-        assert_equal(pubDate, item.pubDate)
-
-        assert_equal(guid_isPermaLink == "true", item.guid.isPermaLink)
-        assert_equal(guid_content, item.guid.content)
-
-        assert_equal(enclosure_url, item.enclosure.url)
-        assert_equal(enclosure_length.to_i, item.enclosure.length)
-        assert_equal(enclosure_type, item.enclosure.type)
-
-        assert_equal(source_url, item.source.url)
-        assert_equal(source_content, item.source.content)
-
-        assert_equal(1, item.categories.size)
-        assert_equal(category_domain, item.category.domain)
-        assert_equal(category_content, item.category.content)
-      end
-
-    end
-
-    def test_setup_maker_items_backward_compatibility
-      test_setup_maker_items(true)
-    end
-    
-    def test_setup_maker
-      encoding = "EUC-JP"
-      standalone = true
-      
-      href = 'a.xsl'
-      type = 'text/xsl'
-      title = 'sample'
-      media = 'printer'
-      charset = 'UTF-8'
-      alternate = 'yes'
-
-      rss = RSS::Maker.make("2.0") do |maker|
-        maker.encoding = encoding
-        maker.standalone = standalone
-
-        maker.xml_stylesheets.new_xml_stylesheet do |xss|
-          xss.href = href
-          xss.type = type
-          xss.title = title
-          xss.media = media
-          xss.charset = charset
-          xss.alternate = alternate
-        end
-
-        setup_dummy_channel(maker)
-      end
-      
-      new_rss = RSS::Maker.make("2.0") do |maker|
-        rss.setup_maker(maker)
-      end
-      
-      assert_equal("2.0", new_rss.rss_version)
-      assert_equal(encoding, new_rss.encoding)
-      assert_equal(standalone, new_rss.standalone)
-
-      xss = rss.xml_stylesheets.first
-      assert_equal(1, rss.xml_stylesheets.size)
-      assert_equal(href, xss.href)
-      assert_equal(type, xss.type)
-      assert_equal(title, xss.title)
-      assert_equal(media, xss.media)
-      assert_equal(charset, xss.charset)
-      assert_equal(alternate, xss.alternate)
-    end
-    
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_atom_entry.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_atom_entry.rb
deleted file mode 100644 (file)
index 6f3df65..0000000
+++ /dev/null
@@ -1,409 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestSetupMakerAtomEntry < TestCase
-    def setup
-      t = Time.iso8601("2000-01-01T12:00:05+00:00")
-      class << t
-        alias_method(:to_s, :iso8601)
-      end
-
-      @dc_elems = {
-        :title => "hoge",
-        :description =>
-          " XML is placing increasingly heavy loads on
-          the existing technical infrastructure of the Internet.",
-        :creator => "Rael Dornfest (mailto:rael@oreilly.com)",
-        :subject => "XML",
-        :publisher => "The O'Reilly Network",
-        :contributor => "hogehoge",
-        :type => "fugafuga",
-        :format => "hohoho",
-        :identifier => "fufufu",
-        :source => "barbar",
-        :language => "ja",
-        :relation => "cococo",
-        :rights => "Copyright (c) 2000 O'Reilly &amp; Associates, Inc.",
-        :date => t,
-      }
-    end
-
-    def test_setup_maker_entry(with_dc=true)
-      authors = [
-                 {
-                   :name => "Bob",
-                   :uri => "http://example.com/~bob/",
-                   :email => "bob@example.com",
-                 },
-                 {
-                   :name => "Alice",
-                   :uri => "http://example.com/~alice/",
-                   :email => "alice@example.com",
-                 },
-                ]
-      categories = [
-                    {
-                      :term => "music",
-                      :label => "Music",
-                    },
-                    {
-                      :term => "book",
-                      :scheme => "http://example.com/category/book/",
-                      :label => "Book",
-                    },
-                   ]
-      contributors = [
-                      {
-                        :name => "Chris",
-                        :email => "chris@example.com",
-                      },
-                      {
-                        :name => "Eva",
-                        :uri => "http://example.com/~eva/",
-                      },
-                     ]
-      id = "urn:uuid:8b105336-7e20-45fc-bb78-37fb3e1db25a"
-      link = "http://hoge.com"
-      published = Time.now - 60 * 3600
-      rights = "Copyrights (c) 2007 Alice and Bob"
-      description = "fugafugafugafuga"
-      title = "fugafuga"
-      updated = Time.now
-
-      feed = RSS::Maker.make("atom:entry") do |maker|
-        maker.items.new_item do |item|
-          authors.each do |author_info|
-            item.authors.new_author do |author|
-              author_info.each do |key, value|
-                author.__send__("#{key}=", value)
-              end
-            end
-          end
-
-          categories.each do |category_info|
-            item.categories.new_category do |category|
-              category_info.each do |key, value|
-                category.__send__("#{key}=", value)
-              end
-            end
-          end
-
-          contributors.each do |contributor_info|
-            item.contributors.new_contributor do |contributor|
-              contributor_info.each do |key, value|
-                contributor.__send__("#{key}=", value)
-              end
-            end
-          end
-
-          item.id = id
-          item.link = link
-          item.published = published
-          item.rights = rights
-          item.description = description
-          item.title = title
-          item.updated = updated
-
-          if with_dc
-            @dc_elems.each do |var, value|
-              if var == :date
-                item.new_dc_date(value)
-              else
-                item.__send__("dc_#{var}=", value)
-              end
-            end
-          end
-        end
-      end
-      assert_not_nil(feed)
-
-      new_feed = RSS::Maker.make("atom:entry") do |maker|
-        feed.setup_maker(maker)
-      end
-      assert_not_nil(new_feed)
-
-      new_authors = new_feed.authors.collect do |author|
-        {
-          :name => author.name.content,
-          :uri => author.uri.content,
-          :email => author.email.content,
-        }
-      end
-      assert_equal(authors, new_authors)
-
-      new_categories = new_feed.categories.collect do |category|
-        {
-          :term => category.term,
-          :scheme => category.scheme,
-          :label => category.label,
-        }.reject {|key, value| value.nil?}
-      end
-      assert_equal(categories, new_categories)
-
-      new_contributors = new_feed.contributors.collect do |contributor|
-        info = {}
-        info[:name] = contributor.name.content
-        info[:uri] = contributor.uri.content if contributor.uri
-        info[:email] = contributor.email.content if contributor.email
-        info
-      end
-      assert_equal(contributors, new_contributors)
-
-      assert_equal(id, new_feed.id.content)
-      assert_equal(link, new_feed.link.href)
-      assert_equal(published, new_feed.published.content)
-      assert_equal(rights, new_feed.rights.content)
-      assert_equal(description, new_feed.summary.content)
-      assert_equal(title, new_feed.title.content)
-      assert_equal(updated, new_feed.updated.content)
-
-      if with_dc
-        @dc_elems.each do |var, value|
-          if var == :date
-            assert_equal([updated, value],
-                         new_feed.dc_dates.collect {|date| date.value})
-          else
-            assert_equal(value, new_feed.__send__("dc_#{var}"))
-          end
-        end
-      end
-
-      assert_equal(1, new_feed.items.size)
-    end
-
-    def test_setup_maker_entry_without_dc
-      test_setup_maker_entry(false)
-    end
-
-    def test_setup_maker_items(for_backward_compatibility=false)
-      title = "TITLE"
-      link = "http://hoge.com/"
-      description = "text hoge fuga"
-      updated = Time.now
-
-      item_size = 5
-      feed = RSS::Maker.make("atom:entry") do |maker|
-        setup_dummy_channel_atom(maker)
-
-        item_size.times do |i|
-          maker.items.new_item do |item|
-            item.title = "#{title}#{i}"
-            item.link = "#{link}#{i}"
-            item.description = "#{description}#{i}"
-            item.updated = updated + i * 60
-          end
-        end
-      end
-
-      new_feed = RSS::Maker.make("atom:entry") do |maker|
-        feed.items.each do |item|
-          if for_backward_compatibility
-            item.setup_maker(maker)
-          else
-            item.setup_maker(maker.items)
-          end
-        end
-
-        feed.items.clear
-        feed.setup_maker(maker)
-      end
-
-      assert_equal(1, new_feed.items.size)
-      new_feed.items[0..1].each_with_index do |item, i|
-        assert_equal("#{title}#{i}", item.title.content)
-        assert_equal("#{link}#{i}", item.link.href)
-        assert_equal("#{description}#{i}", item.summary.content)
-        assert_equal(updated + i * 60, item.updated.content)
-      end
-    end
-
-    def test_setup_maker_items_sort
-      title = "TITLE"
-      link = "http://hoge.com/"
-      summary = "text hoge fuga"
-      updated = Time.now
-
-      feed_size = 5
-      feed = RSS::Maker.make("atom:entry") do |maker|
-        setup_dummy_channel_atom(maker)
-
-        feed_size.times do |i|
-          entry_class = RSS::Atom::Entry
-          entry = entry_class.new
-          entry.title = entry_class::Title.new(:content => "#{title}#{i}")
-          entry.links << entry_class::Link.new(:href => "#{link}#{i}")
-          entry.summary = entry_class::Summary.new(:content => "#{summary}#{i}")
-          entry.updated = entry_class::Updated.new(:content => updated + i * 60)
-          entry.setup_maker(maker.items)
-        end
-        maker.items.do_sort = false
-      end
-      assert_equal(1, feed.items.size)
-
-      assert_equal("#{title}0", feed.title.content)
-      assert_equal("#{link}0", feed.link.href)
-      assert_equal("#{summary}0", feed.summary.content)
-
-
-      feed = RSS::Maker.make("atom:entry") do |maker|
-        setup_dummy_channel_atom(maker)
-
-        feed_size.times do |i|
-          entry_class = RSS::Atom::Entry
-          entry = entry_class.new
-          entry.title = entry_class::Title.new(:content => "#{title}#{i}")
-          entry.links << entry_class::Link.new(:href => "#{link}#{i}")
-          entry.summary = entry_class::Summary.new(:content => "#{summary}#{i}")
-          entry.updated = entry_class::Updated.new(:content => updated + i * 60)
-          entry.setup_maker(maker.items)
-        end
-        maker.items.do_sort = true
-      end
-      assert_equal(1, feed.items.size)
-
-      assert_equal("#{title}#{feed_size - 1}", feed.title.content)
-      assert_equal("#{link}#{feed_size - 1}", feed.link.href)
-      assert_equal("#{summary}#{feed_size - 1}", feed.summary.content)
-    end
-
-    def test_setup_maker_items_backward_compatibility
-      test_setup_maker_items(true)
-    end
-
-    def test_setup_maker
-      encoding = "EUC-JP"
-      standalone = true
-
-      href = 'a.xsl'
-      type = 'text/xsl'
-      title = 'sample'
-      media = 'printer'
-      charset = 'UTF-8'
-      alternate = 'yes'
-
-      feed = RSS::Maker.make("atom:entry") do |maker|
-        maker.encoding = encoding
-        maker.standalone = standalone
-
-        maker.xml_stylesheets.new_xml_stylesheet do |xss|
-          xss.href = href
-          xss.type = type
-          xss.title = title
-          xss.media = media
-          xss.charset = charset
-          xss.alternate = alternate
-        end
-
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-      assert_not_nil(feed)
-
-      new_feed = RSS::Maker.make("atom:entry") do |maker|
-        feed.setup_maker(maker)
-      end
-
-      assert_equal(["atom", "1.0", "entry"], new_feed.feed_info)
-      assert_equal(encoding, new_feed.encoding)
-      assert_equal(standalone, new_feed.standalone)
-
-      xss = new_feed.xml_stylesheets.first
-      assert_equal(1, new_feed.xml_stylesheets.size)
-      assert_equal(href, xss.href)
-      assert_equal(type, xss.type)
-      assert_equal(title, xss.title)
-      assert_equal(media, xss.media)
-      assert_equal(charset, xss.charset)
-      assert_equal(alternate, xss.alternate)
-    end
-
-    def test_setup_maker_full
-      encoding = "EUC-JP"
-      standalone = true
-
-      href = 'a.xsl'
-      type = 'text/xsl'
-      title = 'sample'
-      media = 'printer'
-      charset = 'UTF-8'
-      alternate = 'yes'
-
-      channel_about = "http://hoge.com"
-      channel_title = "fugafuga"
-      channel_link = "http://hoge.com"
-      channel_description = "fugafugafugafuga"
-      channel_author = "Bob"
-
-      image_url = "http://hoge.com/hoge.png"
-
-      item_title = "TITLE"
-      item_link = "http://hoge.com/"
-      item_description = "text hoge fuga"
-
-      entry_size = 5
-      feed = RSS::Maker.make("atom:entry") do |maker|
-        maker.encoding = encoding
-        maker.standalone = standalone
-
-        maker.xml_stylesheets.new_xml_stylesheet do |xss|
-          xss.href = href
-          xss.type = type
-          xss.title = title
-          xss.media = media
-          xss.charset = charset
-          xss.alternate = alternate
-        end
-
-        maker.channel.about = channel_about
-        maker.channel.title = channel_title
-        maker.channel.link = channel_link
-        maker.channel.description = channel_description
-        maker.channel.author = channel_author
-        @dc_elems.each do |var, value|
-          maker.channel.__send__("dc_#{var}=", value)
-        end
-
-        maker.image.url = image_url
-
-        entry_size.times do |i|
-          maker.items.new_item do |item|
-            item.title = "#{item_title}#{i}"
-            item.link = "#{item_link}#{i}"
-            item.description = "#{item_description}#{i}"
-
-            @dc_elems.each do |var, value|
-              item.__send__("dc_#{var}=", value)
-            end
-          end
-        end
-      end
-
-      new_feed = RSS::Maker.make("atom:entry") do |maker|
-        feed.setup_maker(maker)
-      end
-
-      assert_equal(["atom", "1.0", "entry"], new_feed.feed_info)
-      assert_equal(encoding, new_feed.encoding)
-      assert_equal(standalone, new_feed.standalone)
-
-      xss = new_feed.xml_stylesheets.first
-      assert_equal(1, new_feed.xml_stylesheets.size)
-      assert_equal(href, xss.href)
-      assert_equal(type, xss.type)
-      assert_equal(title, xss.title)
-      assert_equal(media, xss.media)
-      assert_equal(charset, xss.charset)
-      assert_equal(alternate, xss.alternate)
-
-      assert_equal("#{item_title}0", new_feed.title.content)
-      assert_equal("#{item_link}0", new_feed.link.href)
-      assert_equal("#{item_description}0", new_feed.summary.content)
-      @dc_elems.each do |var, value|
-        assert_equal(value, new_feed.__send__("dc_#{var}"))
-      end
-      assert_equal(1, new_feed.items.size)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_atom_feed.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_atom_feed.rb
deleted file mode 100644 (file)
index 03d33db..0000000
+++ /dev/null
@@ -1,445 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestSetupMakerAtomFeed < TestCase
-    def setup
-      t = Time.iso8601("2000-01-01T12:00:05+00:00")
-      class << t
-        alias_method(:to_s, :iso8601)
-      end
-
-      @dc_elems = {
-        :title => "hoge",
-        :description =>
-          " XML is placing increasingly heavy loads on
-          the existing technical infrastructure of the Internet.",
-        :creator => "Rael Dornfest (mailto:rael@oreilly.com)",
-        :subject => "XML",
-        :publisher => "The O'Reilly Network",
-        :contributor => "hogehoge",
-        :type => "fugafuga",
-        :format => "hohoho",
-        :identifier => "fufufu",
-        :source => "barbar",
-        :language => "ja",
-        :relation => "cococo",
-        :rights => "Copyright (c) 2000 O'Reilly &amp; Associates, Inc.",
-        :date => t,
-      }
-    end
-
-    def test_setup_maker_feed(with_dc=true)
-      authors = [
-                 {
-                   :name => "Bob",
-                   :uri => "http://example.com/~bob/",
-                   :email => "bob@example.com",
-                 },
-                 {
-                   :name => "Alice",
-                   :uri => "http://example.com/~alice/",
-                   :email => "alice@example.com",
-                 },
-                ]
-      categories = [
-                    {
-                      :term => "music",
-                      :label => "Music",
-                    },
-                    {
-                      :term => "book",
-                      :scheme => "http://example.com/category/book/",
-                      :label => "Book",
-                    },
-                   ]
-      contributors = [
-                      {
-                        :name => "Chris",
-                        :email => "chris@example.com",
-                      },
-                      {
-                        :name => "Eva",
-                        :uri => "http://example.com/~eva/",
-                      },
-                     ]
-      generator = {
-        :uri => "http://example.com/generator/",
-        :version => "0.0.1",
-        :content => "Feed Generator",
-      }
-      icon = "http://example.com/icon.png"
-      about = "http://hoge.com"
-      title = "fugafuga"
-      link = "http://hoge.com"
-      logo = "http://example.com/logo.png"
-      rights = "Copyrights (c) 2007 Alice and Bob"
-      description = "fugafugafugafuga"
-      updated = Time.now
-
-      feed = RSS::Maker.make("atom") do |maker|
-        authors.each do |author_info|
-          maker.channel.authors.new_author do |author|
-            author_info.each do |key, value|
-              author.__send__("#{key}=", value)
-            end
-          end
-        end
-
-        categories.each do |category_info|
-          maker.channel.categories.new_category do |category|
-            category_info.each do |key, value|
-              category.__send__("#{key}=", value)
-            end
-          end
-        end
-
-        contributors.each do |contributor_info|
-          maker.channel.contributors.new_contributor do |contributor|
-            contributor_info.each do |key, value|
-              contributor.__send__("#{key}=", value)
-            end
-          end
-        end
-
-        generator.each do |key, value|
-          maker.channel.generator do |g|
-            g.__send__("#{key}=", value)
-          end
-        end
-
-        maker.channel.icon = icon
-
-        maker.channel.about = about
-        maker.channel.link = link
-        maker.channel.logo = logo
-        maker.channel.rights = rights
-        maker.channel.title = title
-        maker.channel.description = description
-        maker.channel.updated = updated
-
-        if with_dc
-          @dc_elems.each do |var, value|
-            if var == :date
-              maker.channel.new_dc_date(value)
-            else
-              maker.channel.__send__("dc_#{var}=", value)
-            end
-          end
-        end
-
-        setup_dummy_item_atom(maker)
-      end
-      assert_not_nil(feed)
-
-      new_feed = RSS::Maker.make("atom") do |maker|
-        feed.setup_maker(maker)
-      end
-      assert_not_nil(new_feed)
-
-      new_authors = new_feed.authors.collect do |author|
-        {
-          :name => author.name.content,
-          :uri => author.uri.content,
-          :email => author.email.content,
-        }
-      end
-      assert_equal(authors, new_authors)
-
-      new_categories = new_feed.categories.collect do |category|
-        {
-          :term => category.term,
-          :scheme => category.scheme,
-          :label => category.label,
-        }.reject {|key, value| value.nil?}
-      end
-      assert_equal(categories, new_categories)
-
-      new_contributors = new_feed.contributors.collect do |contributor|
-        info = {}
-        info[:name] = contributor.name.content
-        info[:uri] = contributor.uri.content if contributor.uri
-        info[:email] = contributor.email.content if contributor.email
-        info
-      end
-      assert_equal(contributors, new_contributors)
-
-      new_generator = {
-        :uri => new_feed.generator.uri,
-        :version => new_feed.generator.version,
-        :content => new_feed.generator.content,
-      }
-      assert_equal(generator, new_generator)
-
-      assert_equal(icon, new_feed.icon.content)
-      assert_equal(about, new_feed.id.content)
-      assert_equal(link, new_feed.link.href)
-      assert_equal(logo, new_feed.logo.content)
-      assert_equal(rights, new_feed.rights.content)
-      assert_equal(description, new_feed.subtitle.content)
-      assert_equal(title, new_feed.title.content)
-      assert_equal(updated, new_feed.updated.content)
-
-      if with_dc
-        @dc_elems.each do |var, value|
-          if var == :date
-            assert_equal([updated, value],
-                         new_feed.dc_dates.collect {|date| date.value})
-          else
-            assert_equal(value, new_feed.__send__("dc_#{var}"))
-          end
-        end
-      end
-
-      assert_equal(1, new_feed.items.size)
-    end
-
-    def test_setup_maker_feed_without_dc
-      test_setup_maker_feed(false)
-    end
-
-    def test_setup_maker_items(for_backward_compatibility=false)
-      title = "TITLE"
-      link = "http://hoge.com/"
-      description = "text hoge fuga"
-      updated = Time.now
-
-      item_size = 5
-      feed = RSS::Maker.make("atom") do |maker|
-        setup_dummy_channel_atom(maker)
-
-        item_size.times do |i|
-          maker.items.new_item do |item|
-            item.title = "#{title}#{i}"
-            item.link = "#{link}#{i}"
-            item.description = "#{description}#{i}"
-            item.updated = updated + i * 60
-          end
-        end
-      end
-
-      new_feed = RSS::Maker.make("atom") do |maker|
-        feed.items.each do |item|
-          if for_backward_compatibility
-            item.setup_maker(maker)
-          else
-            item.setup_maker(maker.items)
-          end
-        end
-
-        feed.items.clear
-        feed.setup_maker(maker)
-      end
-
-      assert_equal(item_size, new_feed.items.size)
-      new_feed.items.each_with_index do |item, i|
-        assert_equal("#{title}#{i}", item.title.content)
-        assert_equal("#{link}#{i}", item.link.href)
-        assert_equal("#{description}#{i}", item.summary.content)
-        assert_equal(updated + i * 60, item.updated.content)
-      end
-    end
-
-    def test_setup_maker_items_sort
-      title = "TITLE"
-      link = "http://hoge.com/"
-      summary = "text hoge fuga"
-      updated = Time.now
-
-      feed_size = 5
-      feed = RSS::Maker.make("atom") do |maker|
-        setup_dummy_channel_atom(maker)
-
-        feed_size.times do |i|
-          entry_class = RSS::Atom::Feed::Entry
-          entry = entry_class.new
-          entry.title = entry_class::Title.new(:content => "#{title}#{i}")
-          entry.links << entry_class::Link.new(:href => "#{link}#{i}")
-          entry.summary = entry_class::Summary.new(:content => "#{summary}#{i}")
-          entry.updated = entry_class::Updated.new(:content => updated + i * 60)
-          entry.setup_maker(maker.items)
-        end
-        maker.items.do_sort = false
-      end
-      assert_equal(feed_size, feed.entries.size)
-      feed.entries.each_with_index do |entry, i|
-        assert_equal("#{title}#{i}", entry.title.content)
-        assert_equal("#{link}#{i}", entry.link.href)
-        assert_equal("#{summary}#{i}", entry.summary.content)
-      end
-
-
-      feed = RSS::Maker.make("atom") do |maker|
-        setup_dummy_channel_atom(maker)
-
-        feed_size.times do |i|
-          entry_class = RSS::Atom::Feed::Entry
-          entry = entry_class.new
-          entry.title = entry_class::Title.new(:content => "#{title}#{i}")
-          entry.links << entry_class::Link.new(:href => "#{link}#{i}")
-          entry.summary = entry_class::Summary.new(:content => "#{summary}#{i}")
-          entry.updated = entry_class::Updated.new(:content => updated + i * 60)
-          entry.setup_maker(maker.items)
-        end
-        maker.items.do_sort = true
-       end
-      assert_equal(feed_size, feed.entries.size)
-      feed.entries.reverse.each_with_index do |entry, i|
-        assert_equal("#{title}#{i}", entry.title.content)
-        assert_equal("#{link}#{i}", entry.link.href)
-        assert_equal("#{summary}#{i}", entry.summary.content)
-      end
-    end
-
-    def test_setup_maker_items_backward_compatibility
-      test_setup_maker_items(true)
-    end
-
-    def test_setup_maker
-      encoding = "EUC-JP"
-      standalone = true
-      
-      href = 'a.xsl'
-      type = 'text/xsl'
-      title = 'sample'
-      media = 'printer'
-      charset = 'UTF-8'
-      alternate = 'yes'
-
-      feed = RSS::Maker.make("atom") do |maker|
-        maker.encoding = encoding
-        maker.standalone = standalone
-
-        maker.xml_stylesheets.new_xml_stylesheet do |xss|
-          xss.href = href
-          xss.type = type
-          xss.title = title
-          xss.media = media
-          xss.charset = charset
-          xss.alternate = alternate
-        end
-
-        setup_dummy_channel_atom(maker)
-        setup_dummy_item_atom(maker)
-      end
-      assert_not_nil(feed)
-
-      new_feed = RSS::Maker.make("atom") do |maker|
-        feed.setup_maker(maker)
-      end
-
-      assert_equal(["atom", "1.0", "feed"], new_feed.feed_info)
-      assert_equal(encoding, new_feed.encoding)
-      assert_equal(standalone, new_feed.standalone)
-
-      xss = new_feed.xml_stylesheets.first
-      assert_equal(1, new_feed.xml_stylesheets.size)
-      assert_equal(href, xss.href)
-      assert_equal(type, xss.type)
-      assert_equal(title, xss.title)
-      assert_equal(media, xss.media)
-      assert_equal(charset, xss.charset)
-      assert_equal(alternate, xss.alternate)
-    end
-
-    def test_setup_maker_full
-      encoding = "EUC-JP"
-      standalone = true
-
-      href = 'a.xsl'
-      type = 'text/xsl'
-      title = 'sample'
-      media = 'printer'
-      charset = 'UTF-8'
-      alternate = 'yes'
-
-      channel_about = "http://hoge.com"
-      channel_title = "fugafuga"
-      channel_link = "http://hoge.com"
-      channel_description = "fugafugafugafuga"
-      channel_author = "Bob"
-
-      image_url = "http://hoge.com/hoge.png"
-
-      item_title = "TITLE"
-      item_link = "http://hoge.com/"
-      item_description = "text hoge fuga"
-
-      entry_size = 5
-      feed = RSS::Maker.make("atom") do |maker|
-        maker.encoding = encoding
-        maker.standalone = standalone
-
-        maker.xml_stylesheets.new_xml_stylesheet do |xss|
-          xss.href = href
-          xss.type = type
-          xss.title = title
-          xss.media = media
-          xss.charset = charset
-          xss.alternate = alternate
-        end
-
-        maker.channel.about = channel_about
-        maker.channel.title = channel_title
-        maker.channel.link = channel_link
-        maker.channel.description = channel_description
-        maker.channel.author = channel_author
-        @dc_elems.each do |var, value|
-          maker.channel.__send__("dc_#{var}=", value)
-        end
-
-        maker.image.url = image_url
-
-        entry_size.times do |i|
-          maker.items.new_item do |item|
-            item.title = "#{item_title}#{i}"
-            item.link = "#{item_link}#{i}"
-            item.description = "#{item_description}#{i}"
-
-            @dc_elems.each do |var, value|
-              item.__send__("dc_#{var}=", value)
-            end
-          end
-        end
-      end
-
-      new_feed = RSS::Maker.make("atom") do |maker|
-        feed.setup_maker(maker)
-      end
-
-      assert_equal(["atom", "1.0", "feed"], new_feed.feed_info)
-      assert_equal(encoding, new_feed.encoding)
-      assert_equal(standalone, new_feed.standalone)
-
-      xss = new_feed.xml_stylesheets.first
-      assert_equal(1, new_feed.xml_stylesheets.size)
-      assert_equal(href, xss.href)
-      assert_equal(type, xss.type)
-      assert_equal(title, xss.title)
-      assert_equal(media, xss.media)
-      assert_equal(charset, xss.charset)
-      assert_equal(alternate, xss.alternate)
-
-      assert_equal(channel_title, new_feed.title.content)
-      assert_equal(channel_link, new_feed.link.href)
-      assert_equal(channel_description, new_feed.subtitle.content)
-      assert_equal(channel_author, new_feed.author.name.content)
-      assert_equal(image_url, new_feed.logo.content)
-      @dc_elems.each do |var, value|
-        assert_equal(value, new_feed.__send__("dc_#{var}"))
-      end
-
-      assert_equal(entry_size, new_feed.entries.size)
-      new_feed.entries.each_with_index do |entry, i|
-        assert_equal("#{item_title}#{i}", entry.title.content)
-        assert_equal("#{item_link}#{i}", entry.link.href)
-        assert_equal("#{item_description}#{i}", entry.summary.content)
-
-        @dc_elems.each do |var, value|
-          assert_equal(value, entry.__send__("dc_#{var}"))
-        end
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_itunes.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_itunes.rb
deleted file mode 100644 (file)
index 1f0372d..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestSetupMakerITunes < TestCase
-    def test_setup_maker_simple
-      author = "John Doe"
-      block = true
-      categories = ["Audio Blogs"]
-      image = "http://example.com/podcasts/everything/AllAboutEverything.jpg"
-      duration = "4:05"
-      duration_components = [0, 4, 5]
-      explicit = true
-      keywords = ["salt", "pepper", "shaker", "exciting"]
-      new_feed_url = "http://newlocation.com/example.rss"
-      owner = {:name => "John Doe", :email => "john.doe@example.com"}
-      subtitle = "A show about everything"
-      summary = "All About Everything is a show about " +
-        "everything. Each week we dive into any " +
-        "subject known to man and talk about it " +
-        "as much as we can. Look for our Podcast " +
-        "in the iTunes Music Store"
-
-      feed = RSS::Maker.make("rss2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        channel = maker.channel
-        channel.itunes_author = author
-        channel.itunes_block = block
-        categories.each do |category|
-          channel.itunes_categories.new_category.text = category
-        end
-        channel.itunes_image = image
-        channel.itunes_explicit = explicit
-        channel.itunes_keywords = keywords
-        channel.itunes_owner.itunes_name = owner[:name]
-        channel.itunes_owner.itunes_email = owner[:email]
-        channel.itunes_subtitle = subtitle
-        channel.itunes_summary = summary
-
-        item = maker.items.last
-        item.itunes_author = author
-        item.itunes_block = block
-        item.itunes_duration = duration
-        item.itunes_explicit = explicit
-        item.itunes_keywords = keywords
-        item.itunes_subtitle = subtitle
-        item.itunes_summary = summary
-      end
-      assert_not_nil(feed)
-
-      new_feed = RSS::Maker.make("rss2.0") do |maker|
-        feed.setup_maker(maker)
-      end
-      assert_not_nil(new_feed)
-
-      channel = new_feed.channel
-      item = new_feed.items.last
-
-      assert_equal(author, channel.itunes_author)
-      assert_equal(author, item.itunes_author)
-
-      assert_equal(block, channel.itunes_block?)
-      assert_equal(block, item.itunes_block?)
-
-      assert_equal(categories,
-                   collect_itunes_categories(channel.itunes_categories))
-
-      assert_equal(image, channel.itunes_image.href)
-
-      assert_equal(duration_components,
-                   [item.itunes_duration.hour,
-                    item.itunes_duration.minute,
-                    item.itunes_duration.second])
-
-      assert_equal(explicit, channel.itunes_explicit?)
-      assert_equal(explicit, item.itunes_explicit?)
-
-      assert_equal(keywords, channel.itunes_keywords)
-      assert_equal(keywords, item.itunes_keywords)
-
-      assert_equal(owner,
-                   {
-                     :name => channel.itunes_owner.itunes_name,
-                     :email => channel.itunes_owner.itunes_email
-                   })
-
-      assert_equal(subtitle, channel.itunes_subtitle)
-      assert_equal(subtitle, item.itunes_subtitle)
-
-      assert_equal(summary, channel.itunes_summary)
-      assert_equal(summary, item.itunes_summary)
-    end
-
-    def test_setup_maker_with_nested_categories
-      categories = [["Arts & Entertainment", "Games"],
-                    ["Technology", "Computers"],
-                    "Audio Blogs"]
-
-      feed = RSS::Maker.make("rss2.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        channel = maker.channel
-        categories.each do |category|
-          target = channel.itunes_categories
-          if category.is_a?(Array)
-            category.each do |sub_category|
-              target = target.new_category
-              target.text = sub_category
-            end
-          else
-            target.new_category.text = category
-          end
-        end
-      end
-      assert_not_nil(feed)
-
-      new_feed = RSS::Maker.make("rss2.0") do |maker|
-        feed.setup_maker(maker)
-      end
-      assert_not_nil(new_feed)
-
-      channel = new_feed.channel
-
-      assert_equal(categories,
-                   collect_itunes_categories(channel.itunes_categories))
-    end
-
-    private
-    def collect_itunes_categories(categories)
-      categories.collect do |c|
-        rest = collect_itunes_categories(c.itunes_categories)
-        if rest.empty?
-          c.text
-        else
-          [c.text, *rest]
-        end
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_slash.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_setup_maker_slash.rb
deleted file mode 100644 (file)
index 07fa5bb..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-require "rss-testcase"
-
-require "rss/maker"
-
-module RSS
-  class TestSetupMakerSlash < TestCase
-    def test_setup_maker
-      elements = {
-        "section" => "articles",
-        "department" => "not-an-ocean-unless-there-are-lobsters",
-        "comments" => 177,
-        "hit_parades" => [177, 155, 105, 33, 6, 3, 0],
-      }
-
-      rss = RSS::Maker.make("rss1.0") do |maker|
-        setup_dummy_channel(maker)
-        setup_dummy_item(maker)
-
-        item = maker.items.last
-        item.slash_section = elements["section"]
-        item.slash_department = elements["department"]
-        item.slash_comments = elements["comments"]
-        item.slash_hit_parade = elements["hit_parades"].join(",")
-      end
-      assert_not_nil(rss)
-
-      new_rss = RSS::Maker.make("rss1.0") do |maker|
-        rss.setup_maker(maker)
-      end
-      assert_not_nil(new_rss)
-
-      item = new_rss.items.last
-      assert_not_nil(item)
-
-      assert_slash_elements(elements, item)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_slash.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_slash.rb
deleted file mode 100644 (file)
index aec0a86..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-require "cgi"
-require "rexml/document"
-
-require "rss-testcase"
-
-require "rss/1.0"
-require "rss/slash"
-
-module RSS
-  class TestSlash < TestCase
-    def setup
-      @elements = {
-        "section" => "articles",
-        "department" => "not-an-ocean-unless-there-are-lobsters",
-        "comments" => 177,
-        "hit_parades" => [177, 155, 105, 33, 6, 3, 0],
-      }
-
-      slash_nodes = @elements.collect do |name, value|
-        if name == "hit_parades"
-          name = "hit_parade"
-          value = value.join(",")
-        end
-        "<slash:#{name}>#{value}</slash:#{name}>"
-      end.join("\n")
-
-      slash_ns = {"slash" => "http://purl.org/rss/1.0/modules/slash/"}
-      @source = make_RDF(<<-EOR, slash_ns)
-#{make_channel}
-#{make_image}
-#{make_item(slash_nodes)}
-#{make_textinput}
-EOR
-    end
-
-    def test_parser
-      rss = RSS::Parser.parse(@source)
-
-      assert_not_nil(rss)
-
-      item = rss.items[0]
-      assert_not_nil(item)
-
-      assert_slash_elements(item)
-    end
-
-    def test_to_s
-      rss = RSS::Parser.parse(@source)
-      rss = RSS::Parser.parse(rss.to_s)
-
-      assert_not_nil(rss)
-
-      item = rss.items[0]
-      assert_not_nil(item)
-
-      assert_slash_elements(item)
-    end
-
-    private
-    def assert_slash_elements(target)
-      super(@elements, target)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_syndication.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_syndication.rb
deleted file mode 100644 (file)
index abd75e9..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-require "cgi"
-require "rexml/document"
-
-require "rss-testcase"
-
-require "rss/1.0"
-require "rss/syndication"
-
-module RSS
-  class TestSyndication < TestCase
-    
-    def setup
-      @prefix = "sy"
-      @uri = "http://purl.org/rss/1.0/modules/syndication/"
-      
-      @parents = %w(channel)
-      
-      t = Time.iso8601("2000-01-01T12:00:05+00:00")
-      class << t
-        alias_method(:to_s, :iso8601)
-      end
-      
-      @elems = {
-        :updatePeriod => "hourly",
-        :updateFrequency => "2",
-        :updateBase => t,
-      }
-      
-      @sy_nodes = @elems.collect do |name, value|
-        "<#{@prefix}:#{name}>#{CGI.escapeHTML(value.to_s)}</#{@prefix}:#{name}>"
-      end.join("\n")
-      
-      @rss_source = make_RDF(<<-EOR, {@prefix =>  @uri})
-#{make_channel(@sy_nodes)}
-#{make_image()}
-#{make_item()}
-#{make_textinput()}
-EOR
-
-      @rss = Parser.parse(@rss_source)
-    end
-  
-    def test_parser
-      
-      assert_nothing_raised do
-        Parser.parse(@rss_source)
-      end
-      
-      @elems.each do |tag, value|
-        assert_too_much_tag(tag.to_s, "channel") do
-          Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
-#{make_channel(("<" + @prefix + ":" + tag.to_s + ">" +
-  CGI.escapeHTML(value.to_s) +
-  "</" + @prefix + ":" + tag.to_s + ">") * 2)}
-#{make_item}
-EOR
-        end
-      end
-
-    end
-  
-    def test_accessor
-      
-      t = Time.iso8601("2003-01-01T12:00:23+09:00")
-      class << t
-        alias_method(:to_s, :iso8601)
-      end
-      
-      new_value = {
-        :updatePeriod => "daily",
-        :updateFrequency => "11",
-        :updateBase => t,
-      }
-      
-      @elems.each do |name, value|
-        value = value.to_i if name == :updateFrequency
-        @parents.each do |parent|
-          assert_equal(value, @rss.__send__(parent).__send__("sy_#{name}"))
-          @rss.__send__(parent).__send__("sy_#{name}=", new_value[name])
-          new_val = new_value[name]
-          new_val = new_val.to_i if name == :updateFrequency
-          assert_equal(new_val, @rss.__send__(parent).__send__("sy_#{name}"))
-        end
-      end
-      
-      %w(hourly daily weekly monthly yearly).each do |x|
-        @parents.each do |parent|
-          assert_nothing_raised do
-            @rss.__send__(parent).sy_updatePeriod = x
-          end
-        end
-      end
-      
-      %w(-2 0.3 -0.4).each do |x|
-        @parents.each do |parent|
-          assert_not_available_value("sy:updateBase", x) do
-            @rss.__send__(parent).sy_updateBase = x
-          end
-        end
-      end
-      
-    end
-
-    def test_to_s
-      
-      @elems.each do |name, value|
-        excepted = "<#{@prefix}:#{name}>#{value}</#{@prefix}:#{name}>"
-        @parents.each do |parent|
-          assert_equal(excepted,
-                       @rss.__send__(parent).__send__("sy_#{name}_element"))
-        end
-      end
-      
-      REXML::Document.new(@rss_source).root.each_element do |parent|
-        if @parents.include?(parent.name)
-          parent.each_element do |elem|
-            if elem.namespace == @uri
-              assert_equal(elem.text, @elems[elem.name.intern].to_s)
-            end
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_taxonomy.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_taxonomy.rb
deleted file mode 100644 (file)
index 5109f3d..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-require "cgi"
-
-require "rss-testcase"
-
-require "rss/1.0"
-require "rss/2.0"
-require "rss/taxonomy"
-
-module RSS
-  class TestTaxonomy < TestCase
-    
-    def setup
-      @prefix = "taxo"
-      @uri = "http://purl.org/rss/1.0/modules/taxonomy/"
-      @dc_prefix = "dc"
-      @dc_uri = "http://purl.org/dc/elements/1.1/"
-
-      @ns = {
-        @prefix => @uri,
-        @dc_prefix => @dc_uri,
-      }
-      
-      @topics_parents = %w(channel item)
-      
-      @topics_lis = [
-        "http://meerkat.oreillynet.com/?c=cat23",
-        "http://meerkat.oreillynet.com/?c=47",
-        "http://dmoz.org/Computers/Data_Formats/Markup_Languages/XML/",
-      ]
-
-      @topics_node = "<#{@prefix}:topics>\n"
-      @topics_node << "  <rdf:Bag>\n"
-      @topics_lis.each do |value|
-        resource = CGI.escapeHTML(value)
-        @topics_node << "    <rdf:li resource=\"#{resource}\"/>\n"
-      end
-      @topics_node << "  </rdf:Bag>\n"
-      @topics_node << "</#{@prefix}:topics>"
-
-      @topic_topics_lis = \
-      [
-       "http://meerkat.oreillynet.com/?c=cat23",
-       "http://dmoz.org/Computers/Data_Formats/Markup_Languages/SGML/",
-       "http://dmoz.org/Computers/Programming/Internet/",
-      ]
-
-      @topic_contents = \
-      [
-       {
-         :link => "http://meerkat.oreillynet.com/?c=cat23",
-         :title => "Data: XML",
-         :description => "A Meerkat channel",
-       },
-       {
-         :link => "http://dmoz.org/Computers/Data_Formats/Markup_Languages/XML/",
-         :title => "XML",
-         :subject => "XML",
-         :description => "DMOZ category",
-         :topics => @topic_topics_lis,
-       }
-      ]
-
-      @topic_nodes = @topic_contents.collect do |info|
-        link = info[:link]
-        rv = "<#{@prefix}:topic rdf:about=\"#{link}\">\n"
-        info.each do |name, value|
-          case name
-          when :topics
-            rv << "  <#{@prefix}:topics>\n"
-            rv << "    <rdf:Bag>\n"
-            value.each do |li|
-              resource = CGI.escapeHTML(li)
-              rv << "      <rdf:li resource=\"#{resource}\"/>\n"
-            end
-            rv << "    </rdf:Bag>\n"
-            rv << "  </#{@prefix}:topics>\n"
-          else
-            prefix = (name == :link ? @prefix : @dc_prefix)
-            rv << "  <#{prefix}:#{name}>#{value}</#{prefix}:#{name}>\n"
-          end
-        end
-        rv << "</#{@prefix}:topic>"
-      end
-      
-      @rss_source = make_RDF(<<-EOR, @ns)
-#{make_channel(@topics_node)}
-#{make_image()}
-#{make_item(@topics_node)}
-#{make_textinput()}
-#{@topic_nodes.join("\n")}
-EOR
-
-      @rss = Parser.parse(@rss_source)
-    end
-
-    def test_parser
-      assert_nothing_raised do
-        Parser.parse(@rss_source)
-      end
-      
-      assert_too_much_tag("topics", "channel") do
-        Parser.parse(make_RDF(<<-EOR, @ns))
-#{make_channel(@topics_node * 2)}
-#{make_item()}
-EOR
-      end
-
-      assert_too_much_tag("topics", "item") do
-        Parser.parse(make_RDF(<<-EOR, @ns))
-#{make_channel()}
-#{make_item(@topics_node * 2)}
-EOR
-      end
-    end
-  
-    def test_accessor
-      topics = @rss.channel.taxo_topics
-      assert_equal(@topics_lis.sort,
-                   topics.Bag.lis.collect {|li| li.resource}.sort)
-      assert_equal(@topics_lis.sort, topics.resources.sort)
-
-      assert_equal(@rss.taxo_topics.first, @rss.taxo_topic)
-
-      @topic_contents.each_with_index do |info, i|
-        topic = @rss.taxo_topics[i]
-        info.each do |name, value|
-          case name
-          when :link
-            assert_equal(value, topic.about)
-            assert_equal(value, topic.taxo_link)
-          when :topics
-            assert_equal(value.sort, topic.taxo_topics.resources.sort)
-          else
-            assert_equal(value, topic.__send__("dc_#{name}"))
-          end
-        end
-      end
-    end
-    
-    def test_to_s
-      @topics_parents.each do |parent|
-        meth = "taxo_topics_element"
-        assert_equal(@topics_node, @rss.__send__(parent).__send__(meth))
-      end
-
-      @topic_nodes.each_with_index do |node, i|
-        expected_xml = taxo_xmlns_container(node)
-        expected = REXML::Document.new(expected_xml).root.elements[1]
-        actual_xml = taxo_xmlns_container(@rss.taxo_topics[i].to_s(true, ""))
-        actual = REXML::Document.new(actual_xml).root.elements[1]
-        expected_elems = expected.reject {|x| x.is_a?(REXML::Text)}
-        actual_elems = actual.reject {|x| x.is_a?(REXML::Text)}
-        expected_elems.sort! {|x, y| x.name <=> y.name}
-        actual_elems.sort! {|x, y| x.name <=> y.name}
-        assert_equal(expected_elems.collect {|x| x.to_s},
-                     actual_elems.collect {|x| x.to_s})
-        assert_equal(expected.attributes.sort, actual.attributes.sort)
-      end
-    end
-
-    private
-    def taxo_xmlns_container(content)
-      xmlns_container({
-                        @prefix => @uri,
-                        "dc" => "http://purl.org/dc/elements/1.1/",
-                        "rdf" => "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
-                      },
-                      content)
-    end
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_to_s.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_to_s.rb
deleted file mode 100644 (file)
index 6673959..0000000
+++ /dev/null
@@ -1,670 +0,0 @@
-require "rexml/document"
-
-require "rss-testcase"
-
-require "rss/maker"
-require "rss/1.0"
-require "rss/2.0"
-require "rss/content"
-require "rss/dublincore"
-require "rss/syndication"
-require "rss/trackback"
-
-module RSS
-  class TestToS < TestCase
-    def setup
-      @image_url = "http://example.com/foo.png"
-      @textinput_link = "http://example.com/search.cgi"
-      @item_links = [
-        "http://example.com/1",
-        "http://example.com/2",
-      ]
-      
-      setup_xml_declaration_info
-      setup_xml_stylesheet_infos
-      setup_channel_info
-      setup_item_infos
-      setup_image_info
-      setup_textinput_info
-
-      setup_dublin_core_info
-      setup_syndication_info
-      setup_content_info
-      setup_trackback_info
-    end
-
-    def test_to_s_10
-      rss = RSS::Maker.make("1.0") do |maker|
-        setup_full(maker)
-      end
-
-      assert_xml_declaration(@version, @encoding, @standalone, rss)
-      assert_xml_stylesheets(@xs_infos, rss.xml_stylesheets)
-      assert_channel10(@channel_info, rss.channel)
-      assert_items10(@item_infos, rss.items)
-      rss.items.each do |item|
-        assert_trackback(@trackback_info, item)
-      end
-      assert_image10(@image_info, rss.image)
-      assert_textinput10(@textinput_info, rss.textinput)
-
-      rss = RSS::Parser.parse(rss.to_s)
-
-      assert_xml_declaration(@version, @encoding, @standalone, rss)
-      assert_xml_stylesheets(@xs_infos, rss.xml_stylesheets)
-      assert_channel10(@channel_info, rss.channel)
-      assert_items10(@item_infos, rss.items)
-      assert_image10(@image_info, rss.image)
-      assert_textinput10(@textinput_info, rss.textinput)
-    end
-    
-    def test_to_s_09
-      rss = RSS::Maker.make("0.91") do |maker|
-        setup_full(maker)
-      end
-
-      assert_xml_declaration(@version, @encoding, @standalone, rss)
-      assert_xml_stylesheets(@xs_infos, rss.xml_stylesheets)
-      assert_channel09(@channel_info, rss.channel)
-      assert_items09(@item_infos, rss.items)
-      assert_image09(@image_info, rss.image)
-      assert_textinput09(@textinput_info, rss.textinput)
-
-      rss = RSS::Parser.parse(rss.to_s)
-
-      assert_xml_declaration(@version, @encoding, @standalone, rss)
-      assert_xml_stylesheets(@xs_infos, rss.xml_stylesheets)
-      assert_channel09(@channel_info, rss.channel)
-      assert_items09(@item_infos, rss.items)
-      assert_image09(@image_info, rss.image)
-      assert_textinput09(@textinput_info, rss.textinput)
-    end
-    
-    def test_to_s_20
-      rss = RSS::Maker.make("2.0") do |maker|
-        setup_full(maker)
-      end
-
-      assert_xml_declaration(@version, @encoding, @standalone, rss)
-      assert_xml_stylesheets(@xs_infos, rss.xml_stylesheets)
-      assert_channel20(@channel_info, rss.channel)
-      assert_items20(@item_infos, rss.items)
-      assert_image20(@image_info, rss.image)
-      assert_textinput20(@textinput_info, rss.textinput)
-
-      rss = RSS::Parser.parse(rss.to_s)
-
-      assert_xml_declaration(@version, @encoding, @standalone, rss)
-      assert_xml_stylesheets(@xs_infos, rss.xml_stylesheets)
-      assert_channel20(@channel_info, rss.channel)
-      assert_items20(@item_infos, rss.items)
-      assert_image20(@image_info, rss.image)
-      assert_textinput20(@textinput_info, rss.textinput)
-    end
-    
-    private
-    def setup_xml_declaration_info
-      @version = "1.0"
-      @encoding = "UTF-8"
-      @standalone = false
-    end
-
-    def setup_xml_stylesheet_infos
-      @xs_infos = [
-        {
-          "href" => "XXX.xsl",
-          "type" => "text/xsl",
-          "title" => "XXX",
-          "media" => "print",
-          "alternate" => "no",
-        },
-        {
-          "href" => "YYY.css",
-          "type" => "text/css",
-          "title" => "YYY",
-          "media" => "all",
-          "alternate" => "no",
-        },
-      ]
-    end
-
-    def setup_channel_info
-      @channel_info = {
-        "about" => "http://example.com/index.rdf",
-        "title" => "Sample RSS",
-        "link" => "http://example.com/",
-        "description" => "Sample\n\n\n\n\nSite",
-        "language" => "en",
-        "copyright" => "FDL",
-        "managingEditor" => "foo@example.com",
-        "webMaster" => "webmaster@example.com",
-        "rating" => '(PICS-1.1 "http://www.rsac.org/ratingsv01.html" l gen true comment "RSACi North America Server" for "http://www.rsac.org" on "1996.04.16T08:15-0500" r (n 0 s 0 v 0 l 0))',
-        "docs" => "http://backend.userland.com/rss091",
-        "skipDays" => [
-          "Monday",
-          "Friday",
-        ],
-        "skipHours" => [
-          "12",
-          "23",
-        ],
-        "date" => Time.now,
-        "lastBuildDate" => Time.now - 3600,
-        "generator" => "RSS Maker",
-        "ttl" => "60",
-        "cloud" => {
-          "domain" => "rpc.sys.com",
-          "port" => "80",
-          "path" => "/RPC2",
-          "registerProcedure" => "myCloud.rssPleaseNotify",
-          "protocol" => "xml-rpc",
-        },
-        "category" => {
-          "domain" => "http://example.com/misc/",
-          "content" => "misc",
-        },
-
-        "image" => {
-          "resource" => @image_url,
-        },
-
-        "textinput" => {
-          "resource" => @textinput_link,
-        },
-
-        "items" => @item_links.collect{|link| {"resource" => link}},
-      }
-    end
-
-    def setup_item_infos
-      @item_infos = [
-        {
-          "title" => "Sample item1",
-          "link" => @item_links[0],
-          "description" => "Sample description1",
-          "date" => Time.now - 3600,
-          "author" => "foo@example.com",
-          "comments" => "http://example.com/1/comments",
-          "guid" => {
-            "isPermaLink" => "true",
-            "content" => "http://example.com/1",
-          },
-          "enclosure" => {
-            "url" => "http://example.com/1.mp3",
-            "length" => "100",
-            "type" => "audio/mpeg",
-          },
-          "source" => {
-            "url" => "http:/example.com/",
-            "content" => "Sample site",
-          },
-          "category" => {
-            "domain" => "http://example.com/misc/",
-            "content" => "misc",
-          },
-        },
-
-        {
-          "title" => "Sample item2",
-          "link" => @item_links[1],
-          "description" => "Sample description2",
-          "date" => Time.now - 7200,
-          "author" => "foo@example.com",
-          "comments" => "http://example.com/2/comments",
-          "guid" => {
-            "isPermaLink" => "false",
-            "content" => "http://example.com/2",
-          },
-          "enclosure" => {
-            "url" => "http://example.com/2.mp3",
-            "length" => "200",
-            "type" => "audio/mpeg",
-          },
-          "source" => {
-            "url" => "http:/example.com/",
-            "content" => "Sample site",
-          },
-          "category" => {
-            "domain" => "http://example.com/misc/",
-            "content" => "misc",
-          },
-        },
-      ]
-    end
-
-    def setup_image_info
-      @image_info = {
-        "title" => "Sample image",
-        "url" => @image_url,
-        "width" => "88",
-        "height" => "31",
-        "description" => "Sample",
-      }
-    end
-
-    def setup_textinput_info
-      @textinput_info = {
-        "title" => "Sample textinput",
-        "description" => "Search",
-        "name" => "key",
-        "link" => @textinput_link,
-      }
-    end
-
-    def setup_dublin_core_info
-      @dc_info = {
-        "title" => "DC title",
-        "description" => "DC desc",
-        "creator" => "DC creator",
-        "subject" => "DC subject",
-        "publisher" => "DC publisher",
-        "contributor" => "DC contributor",
-        "type" => "DC type",
-        "format" => "DC format",
-        "identifier" => "DC identifier",
-        "source" => "DC source",
-        "language" => "ja",
-        "relation" => "DC relation",
-        "coverage" => "DC coverage",
-        "rights" => "DC rights",
-        "date" => Time.now - 60,
-      }
-    end
-
-    def setup_syndication_info
-      @sy_info = {
-        "updatePeriod" => "hourly",
-        "updateFrequency" => "2",
-        "updateBase" => Time.now - 3600,
-      }
-    end
-    
-    def setup_content_info
-      @content_info = {
-        "encoded" => "<p>p</p>",
-      }
-    end
-    
-    def setup_trackback_info
-      @trackback_info = {
-        "ping" => "http://example.com/tb.cgi?tb_id=XXX",
-        "abouts" => [
-          "http://example.net/tb.cgi?tb_id=YYY",
-          "http://example.org/tb.cgi?tb_id=ZZZ",
-        ]
-      }
-    end
-
-
-    def setup_full(maker)
-      setup_xml_declaration(maker)
-      setup_xml_stylesheets(maker)
-      setup_channel(maker)
-      setup_image(maker)
-      setup_items(maker)
-      setup_textinput(maker)
-    end
-
-    def setup_xml_declaration(maker)
-      %w(version encoding standalone).each do |name|
-        maker.__send__("#{name}=", instance_eval("@#{name}"))
-      end
-    end
-
-    def setup_xml_stylesheets(maker)
-      @xs_infos.each do |info|
-        xs = maker.xml_stylesheets.new_xml_stylesheet
-        info.each do |name, value|
-          xs.__send__("#{name}=", value)
-        end
-      end
-    end
-
-    def setup_channel(maker)
-      channel = maker.channel
-      info = @channel_info
-      
-      %w(about title link description language copyright
-         managingEditor webMaster rating docs date
-         lastBuildDate generator ttl).each do |name|
-        channel.__send__("#{name}=", info[name])
-      end
-
-      skipDays = channel.skipDays
-      info["skipDays"].each do |day|
-        new_day = skipDays.new_day
-        new_day.content = day
-      end
-
-      skipHours = channel.skipHours
-      info["skipHours"].each do |hour|
-        new_hour = skipHours.new_hour
-        new_hour.content = hour
-      end
-      
-      cloud = channel.cloud
-      %w(domain port path registerProcedure protocol).each do |name|
-        cloud.__send__("#{name}=", info["cloud"][name])
-      end
-
-      category = channel.categories.new_category
-      %w(domain content).each do |name|
-        category.__send__("#{name}=", info["category"][name])
-      end
-    end
-    
-    def setup_image(maker)
-      image = maker.image
-      info = @image_info
-
-      %w(title url width height description).each do |name|
-        image.__send__("#{name}=", info[name])
-      end
-    end
-    
-    def setup_items(maker)
-      items = maker.items
-
-      @item_infos.each do |info|
-        item = items.new_item
-        %w(title link description date author comments).each do |name|
-          item.__send__("#{name}=", info[name])
-        end
-        
-        guid = item.guid
-        %w(isPermaLink content).each do |name|
-          guid.__send__("#{name}=", info["guid"][name])
-        end
-
-        enclosure = item.enclosure
-        %w(url length type).each do |name|
-          enclosure.__send__("#{name}=", info["enclosure"][name])
-        end
-
-        source = item.source
-        %w(url content).each do |name|
-          source.__send__("#{name}=", info["source"][name])
-        end
-
-        category = item.categories.new_category
-        %w(domain content).each do |name|
-          category.__send__("#{name}=", info["category"][name])
-        end
-
-        setup_trackback(item)
-      end
-    end
-
-    def setup_textinput(maker)
-      textinput = maker.textinput
-      info = @textinput_info
-
-      %w(title description name link).each do |name|
-        textinput.__send__("#{name}=", info[name])
-      end
-    end
-
-    def setup_content(target)
-      prefix = "content"
-      %w(encoded).each do |name|
-        target.__send__("#{prefix}_#{name}=", @content_info[name])
-      end
-    end
-    
-    def setup_dublin_core(target)
-      prefix = "dc"
-      %w(title description creator subject publisher
-        contributor type format identifier source language
-        relation coverage rights).each do |name|
-        target.__send__("#{prefix}_#{name}=", @dc_info[name])
-      end
-    end
-    
-    def setup_syndicate(target)
-      prefix = "sy"
-      %w(updatePeriod updateFrequency updateBase).each do |name|
-        target.__send__("#{prefix}_#{name}=", @sy_info[name])
-      end
-    end
-    
-    def setup_trackback(target)
-      target.trackback_ping = @trackback_info["ping"]
-      @trackback_info["abouts"].each do |about|
-        new_about = target.trackback_abouts.new_about
-        new_about.value = about
-      end
-    end
-
-
-    def assert_channel10(attrs, channel)
-      _wrap_assertion do
-        n_attrs = normalized_attrs(attrs)
-        
-        names = %w(about title link description)
-        assert_attributes(attrs, names, channel)
-
-        %w(image items textinput).each do |name|
-          value = n_attrs[name]
-          if value
-            target = channel.__send__(name)
-            __send__("assert_channel10_#{name}", value, target)
-          end
-        end
-      end
-    end
-
-    def assert_channel10_image(attrs, image)
-      _wrap_assertion do
-        assert_attributes(attrs, %w(resource), image)
-      end
-    end
-    
-    def assert_channel10_textinput(attrs, textinput)
-      _wrap_assertion do
-        assert_attributes(attrs, %w(resource), textinput)
-      end
-    end
-
-    def assert_channel10_items(attrs, items)
-      _wrap_assertion do
-        assert_equal(items.resources, items.Seq.lis.collect {|x| x.resource})
-        items.Seq.lis.each_with_index do |li, i|
-          assert_attributes(attrs[i], %w(resource), li)
-        end
-      end
-    end
-
-    def assert_image10(attrs, image)
-      _wrap_assertion do
-        names = %w(about title url link)
-        assert_attributes(attrs, names, image)
-      end
-    end
-
-    def assert_items10(attrs, items)
-      _wrap_assertion do
-        names = %w(about title link description)
-        items.each_with_index do |item, i|
-          assert_attributes(attrs[i], names, item)
-        end
-      end
-    end
-
-    def assert_textinput10(attrs, textinput)
-      _wrap_assertion do
-        names = %w(about title description name link)
-        assert_attributes(attrs, names, textinput)
-      end
-    end
-
-
-    def assert_channel09(attrs, channel)
-      _wrap_assertion do
-        n_attrs = normalized_attrs(attrs)
-
-        names = %w(title description link language rating
-                   copyright pubDate lastBuildDate docs
-                   managingEditor webMaster)
-        assert_attributes(attrs, names, channel)
-        
-        %w(skipHours skipDays).each do |name|
-          value = n_attrs[name]
-          if value
-            target = channel.__send__(name)
-            __send__("assert_channel09_#{name}", value, target)
-          end
-        end
-      end
-    end
-
-    def assert_channel09_skipDays(contents, skipDays)
-      _wrap_assertion do
-        days = skipDays.days
-        contents.each_with_index do |content, i|
-          assert_equal(content, days[i].content)
-        end
-      end
-    end
-    
-    def assert_channel09_skipHours(contents, skipHours)
-      _wrap_assertion do
-        hours = skipHours.hours
-        contents.each_with_index do |content, i|
-          assert_equal(content.to_i, hours[i].content)
-        end
-      end
-    end
-    
-    def assert_image09(attrs, image)
-      _wrap_assertion do
-        names = %w(url link title description)
-        names << ["width", :integer]
-        names << ["height", :integer]
-        assert_attributes(attrs, names, image)
-      end
-    end
-
-    def assert_items09(attrs, items)
-      _wrap_assertion do
-        names = %w(title link description)
-        items.each_with_index do |item, i|
-          assert_attributes(attrs[i], names, item)
-        end
-      end
-    end
-    
-    def assert_textinput09(attrs, textinput)
-      _wrap_assertion do
-        names = %w(title description name link)
-        assert_attributes(attrs, names, textinput)
-      end
-    end
-
-
-    def assert_channel20(attrs, channel)
-      _wrap_assertion do
-        n_attrs = normalized_attrs(attrs)
-        
-        names = %w(title link description language copyright
-                   managingEditor webMaster pubDate
-                   lastBuildDate generator docs rating)
-        names << ["ttl", :integer]
-        assert_attributes(attrs, names, channel)
-
-        %w(cloud categories skipHours skipDays).each do |name|
-          value = n_attrs[name]
-          if value
-            target = channel.__send__(name)
-            __send__("assert_channel20_#{name}", value, target)
-          end
-        end
-      end
-    end
-
-    def assert_channel20_skipDays(contents, skipDays)
-      assert_channel09_skipDays(contents, skipDays)
-    end
-    
-    def assert_channel20_skipHours(contents, skipHours)
-      assert_channel09_skipHours(contents, skipHours)
-    end
-    
-    def assert_channel20_cloud(attrs, cloud)
-      _wrap_assertion do
-        names = %w(domain path registerProcedure protocol)
-        names << ["port", :integer]
-        assert_attributes(attrs, names, cloud)
-      end
-    end
-    
-    def assert_channel20_categories(attrs, categories)
-      _wrap_assertion do
-        names = %w(domain content)
-        categories.each_with_index do |category, i|
-          assert_attributes(attrs[i], names, category)
-        end
-      end
-    end
-    
-    def assert_image20(attrs, image)
-      _wrap_assertion do
-        names = %w(url link title description)
-        names << ["width", :integer]
-        names << ["height", :integer]
-        assert_attributes(attrs, names, image)
-      end
-    end
-
-    def assert_items20(attrs, items)
-      _wrap_assertion do
-        names = %w(about title link description)
-        items.each_with_index do |item, i|
-          assert_attributes(attrs[i], names, item)
-
-          n_attrs = normalized_attrs(attrs[i])
-
-          %w(source enclosure categories guid).each do |name|
-            value = n_attrs[name]
-            if value
-              target = item.__send__(name)
-              __send__("assert_items20_#{name}", value, target)
-            end
-          end
-        end
-      end
-    end
-
-    def assert_items20_source(attrs, source)
-      _wrap_assertion do
-        assert_attributes(attrs, %w(url content), source)
-      end
-    end
-    
-    def assert_items20_enclosure(attrs, enclosure)
-      _wrap_assertion do
-        names = ["url", ["length", :integer], "type"]
-        assert_attributes(attrs, names, enclosure)
-      end
-    end
-    
-    def assert_items20_categories(attrs, categories)
-      _wrap_assertion do
-        assert_channel20_categories(attrs, categories)
-      end
-    end
-    
-    def assert_items20_guid(attrs, guid)
-      _wrap_assertion do
-        names = [["isPermaLink", :boolean], ["content"]]
-        assert_attributes(attrs, names, guid)
-      end
-    end
-
-    def assert_textinput20(attrs, textinput)
-      _wrap_assertion do
-        names = %w(title description name link)
-        assert_attributes(attrs, names, textinput)
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_trackback.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_trackback.rb
deleted file mode 100644 (file)
index 26812d9..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-require "cgi"
-require "rexml/document"
-
-require "rss-testcase"
-
-require "rss/1.0"
-require "rss/2.0"
-require "rss/trackback"
-
-module RSS
-  class TestTrackBack < TestCase
-    
-    def setup
-      @prefix = "trackback"
-      @uri = "http://madskills.com/public/xml/rss/module/trackback/"
-      
-      @parents = %w(item)
-      
-      @elems = {
-        :ping => "http://bar.com/tb.cgi?tb_id=rssplustrackback",
-        :about => "http://foo.com/trackback/tb.cgi?tb_id=20020923",
-      }
-      
-      @content_nodes = @elems.collect do |name, value|
-        "<#{@prefix}:#{name} rdf:resource=\"#{CGI.escapeHTML(value.to_s)}\"/>"
-      end.join("\n")
-      
-      @content_nodes2 = @elems.collect do |name, value|
-        "<#{@prefix}:#{name}>#{CGI.escapeHTML(value.to_s)}</#{@prefix}:#{name}>"
-      end.join("\n")
-      
-      @rss_source = make_RDF(<<-EOR, {@prefix =>  @uri})
-#{make_channel()}
-#{make_image()}
-#{make_item(@content_nodes)}
-#{make_textinput()}
-EOR
-
-      @rss = Parser.parse(@rss_source)
-
-      @rss20_source = make_rss20(nil, {@prefix =>  @uri}) do
-        make_channel20(nil) do
-          make_item20(@content_nodes2)
-        end
-      end
-
-      @rss20 = Parser.parse(@rss20_source, false)
-    end
-
-    def test_parser
-
-      assert_nothing_raised do
-        Parser.parse(@rss_source)
-      end
-
-      @elems.find_all{|k, v| k == :ping}.each do |tag, value|
-        assert_too_much_tag(tag.to_s, "item") do
-          Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
-#{make_channel()}
-#{make_item(("<" + @prefix + ":" + tag.to_s + " rdf:resource=\"" +
-  CGI.escapeHTML(value.to_s) +
-  "\"/>") * 2)}
-EOR
-        end
-      end
-
-      @elems.find_all{|k, v| k == :about}.each do |tag, value|
-        assert_missing_tag("trackback:ping", "item") do
-          Parser.parse(make_RDF(<<-EOR, {@prefix => @uri}))
-#{make_channel()}
-#{make_item(("<" + @prefix + ":" + tag.to_s + " rdf:resource=\"" +
-  CGI.escapeHTML(value.to_s) +
-  "\"/>") * 2)}
-EOR
-        end
-
-      end
-
-    end
-  
-    def test_accessor
-      
-      new_value = {
-        :ping => "http://baz.com/trackback/tb.cgi?tb_id=20030808",
-        :about => "http://hoge.com/trackback/tb.cgi?tb_id=90030808",
-      }
-      
-      @elems.each do |name, value|
-        @parents.each do |parent|
-          accessor = "#{RSS::TRACKBACK_PREFIX}_#{name}"
-          target = @rss.__send__(parent)
-          target20 = @rss20.channel.__send__(parent, -1)
-          assert_equal(value, target.__send__(accessor))
-          assert_equal(value, target20.__send__(accessor))
-          if name == :about
-            # abount is zero or more
-            target.__send__("#{accessor}=", 0, new_value[name].to_s)
-            target20.__send__("#{accessor}=", 0, new_value[name].to_s)
-          else
-            target.__send__("#{accessor}=", new_value[name].to_s)
-            target20.__send__("#{accessor}=", new_value[name].to_s)
-          end
-          assert_equal(new_value[name], target.__send__(accessor))
-          assert_equal(new_value[name], target20.__send__(accessor))
-        end
-      end
-      
-    end
-
-    def test_to_s
-      
-      @elems.each do |name, value|
-        excepted = %Q!<#{@prefix}:#{name} rdf:resource="#{CGI.escapeHTML(value)}"/>!
-        @parents.each do |parent|
-          meth = "#{RSS::TRACKBACK_PREFIX}_#{name}_element"
-          meth << "s" if name == :about
-          assert_equal(excepted, @rss.__send__(parent).__send__(meth))
-        end
-      end
-      
-      REXML::Document.new(@rss_source).root.each_element do |parent|
-        if @parents.include?(parent.name)
-          parent.each_element do |elem|
-            if elem.namespace == @uri
-              assert_equal(elem.attributes["resource"], @elems[elem.name.intern])
-            end
-          end
-        end
-      end
-      
-    end
-    
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_version.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_version.rb
deleted file mode 100644 (file)
index 64f6f04..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-require "rss-testcase"
-
-module RSS
-  class TestVersion < TestCase
-    def test_version
-      assert_equal("0.2.4", ::RSS::VERSION)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/rss/test_xml-stylesheet.rb b/ruby/doc/ruby/ruby-1.8.7/test/rss/test_xml-stylesheet.rb
deleted file mode 100644 (file)
index b946af1..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-require "rexml/document"
-
-require "rss-testcase"
-
-require "rss/1.0"
-require "rss/xml-stylesheet"
-
-module RSS
-  class TestXMLStyleSheet < TestCase
-    
-    def test_accessor
-      [
-        {:href => "a.xsl", :type => "text/xsl"},
-        {:media => "print", :title => "FOO"},
-        {:charset => "UTF-8", :alternate => "yes"},
-      ].each do |attrs|
-        assert_xml_stylesheet_attrs(attrs, XMLStyleSheet.new(attrs))
-      end
-    end
-    
-    def test_to_s
-      [
-        {:href => "a.xsl", :type => "text/xsl"},
-        {:type => "text/xsl"},
-        {:href => "a.xsl", :guess_type => "text/xsl"},
-        {:href => "a.css", :type => "text/css"},
-        {:href => "a.css", :type => "text/xsl",
-         :guess_type => "text/css"},
-        {:href => "a.xsl", :type => "text/xsl",
-         :title => "sample", :media => "printer",
-         :charset => "UTF-8", :alternate => "yes"},
-        {:href => "a.css", :guess_type => "text/css",
-         :alternate => "no"},
-        {:type => "text/xsl", :title => "sample",
-         :media => "printer", :charset => "UTF-8",
-         :alternate => "yes"},
-      ].each do |attrs|
-        target, contents = parse_pi(XMLStyleSheet.new(attrs).to_s)
-        assert_xml_stylesheet(target, attrs, XMLStyleSheet.new(contents))
-      end
-    end
-    
-    def test_bad_alternate
-      %w(a ___ ??? BAD_ALTERNATE).each do |value|
-        xss = XMLStyleSheet.new
-        assert_raise(NotAvailableValueError) do
-          xss.alternate = value
-        end
-        xss.do_validate = false
-        assert_nothing_raised do
-          xss.alternate = value
-        end
-        assert_nil(xss.alternate)
-      end
-    end
-    
-    def test_parse
-      [
-        [{:href => "a.xsl", :type => "text/xsl"},],
-        [{:media => "print", :title => "FOO"},],
-        [{:charset => "UTF-8", :alternate => "yes"},],
-        [{:href => "a.xsl", :type => "text/xsl"},
-         {:type => "text/xsl"},
-         {:href => "a.xsl", :guess_type => "text/xsl"},
-         {:href => "a.css", :type => "text/css"},
-         {:href => "a.css", :type => "text/xsl",
-          :guess_type => "text/css"},
-         {:href => "a.xsl", :type => "text/xsl",
-          :title => "sample", :media => "printer",
-          :charset => "UTF-8", :alternate => "yes"},
-         {:href => "a.css", :guess_type => "text/css",
-          :alternate => "no"},
-         {:type => "text/xsl", :title => "sample",
-          :media => "printer", :charset => "UTF-8",
-          :alternate => "yes"},],
-      ].each do |xsss|
-        doc = REXML::Document.new(make_sample_RDF)
-        root = doc.root
-        xsss.each do |xss|
-          content = xss.collect do |key, name|
-            %Q[#{key}="#{name}"]
-          end.join(" ")
-          pi = REXML::Instruction.new("xml-stylesheet", content)
-          root.previous_sibling = pi
-        end
-        rss = Parser.parse(doc.to_s)
-        have_href_xsss = xsss.find_all {|xss| xss.has_key?(:href)}
-        assert_equal(have_href_xsss.size, rss.xml_stylesheets.size)
-        rss.xml_stylesheets.each_with_index do |stylesheet, i|
-          target, = parse_pi(stylesheet.to_s)
-          assert_xml_stylesheet(target, have_href_xsss[i], stylesheet)
-        end
-      end
-    end
-    
-    def parse_pi(pi)
-      /\A\s*<\?(\S+)([^(?:\?>)]+)\?>\s*\z/ =~ pi
-      target = $1
-      dummy = REXML::Document.new("<dummy #{$2}/>").root
-      contents = {}
-      dummy.attributes.each do |name, value|
-        contents[name] = value
-      end
-      [target, contents]
-    end
-    
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/beginmainend.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/beginmainend.rb
deleted file mode 100644 (file)
index 646140d..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-errout = ARGV.shift
-
-BEGIN {
-  puts "b1"
-  local_begin1 = "local_begin1"
-  $global_begin1 = "global_begin1"
-  ConstBegin1 = "ConstBegin1"
-}
-
-BEGIN {
-  puts "b2"
-
-  BEGIN {
-    puts "b2-1"
-  }
-}
-
-# for scope check
-raise if defined?(local_begin1)
-raise unless defined?($global_begin1)
-raise unless defined?(::ConstBegin1)
-local_for_end2 = "e2"
-$global_for_end1 = "e1"
-
-puts "main"
-
-END {
-  puts local_for_end2  # e2
-}
-
-eval <<EOE
-  BEGIN {
-    puts "b3"
-
-    BEGIN {
-      puts "b3-1"
-    }
-  }
-
-  BEGIN {
-    puts "b4"
-  }
-
-  END {
-    puts "e3"
-  }
-
-  END {
-    puts "e4"
-
-    END {
-      puts "e4-1"
-
-      END {
-       puts "e4-1-1"
-      }
-    }
-
-    END {
-      puts "e4-2"
-    }
-  }
-EOE
-
-END {
-  exit
-  puts "should not be dumped"
-
-  END {
-    puts "not reached"
-  }
-}
-
-END {
-  puts $global_for_end1        # e1
-
-  END {
-    puts "e1-1"
-  }
-}
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/endblockwarn.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/endblockwarn.rb
deleted file mode 100644 (file)
index 7b7f97f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-def end1
-  END {}
-end
-
-end1
-
-eval <<EOE
-  def end2
-    END {}
-  end
-EOE
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/envutil.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/envutil.rb
deleted file mode 100644 (file)
index c481326..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-module EnvUtil
-  def rubybin
-    if ruby = ENV["RUBY"]
-      return ruby
-    end
-    ruby = "ruby"
-    rubyexe = ruby+".exe"
-    3.times do
-      if File.exist? ruby and File.executable? ruby and !File.directory? ruby
-        return File.expand_path(ruby)
-      end
-      if File.exist? rubyexe and File.executable? rubyexe
-        return File.expand_path(ruby)
-      end
-      ruby = File.join("..", ruby)
-    end
-    begin
-      require "rbconfig"
-      File.join(
-        Config::CONFIG["bindir"],
-       Config::CONFIG["ruby_install_name"] + Config::CONFIG["EXEEXT"]
-      )
-    rescue LoadError
-      "ruby"
-    end
-  end
-  module_function :rubybin
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/marshaltestlib.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/marshaltestlib.rb
deleted file mode 100644 (file)
index 891f43b..0000000
+++ /dev/null
@@ -1,494 +0,0 @@
-module MarshalTestLib
-  # include this module to a Test::Unit::TestCase and definde encode(o) and
-  # decode(s) methods.  e.g.
-  #
-  # def encode(o)
-  #   SOAPMarshal.dump(o)
-  # end
-  #
-  # def decode(s)
-  #   SOAPMarshal.load(s)
-  # end
-
-  NegativeZero = (-1.0 / (1.0 / 0.0))
-
-  module Mod1; end
-  module Mod2; end
-
-  def marshaltest(o1)
-    str = encode(o1)
-    print str, "\n" if $DEBUG
-    o2 = decode(str)
-    o2
-  end
-
-  def marshal_equal(o1, msg = nil)
-    msg = msg ? msg + "(#{ caller[0] })" : caller[0]
-    o2 = marshaltest(o1)
-    assert_equal(o1.class, o2.class, msg)
-    iv1 = o1.instance_variables.sort
-    iv2 = o2.instance_variables.sort
-    assert_equal(iv1, iv2)
-    val1 = iv1.map {|var| o1.instance_eval {eval var}}
-    val2 = iv1.map {|var| o2.instance_eval {eval var}}
-    assert_equal(val1, val2, msg)
-    if block_given?
-      assert_equal(yield(o1), yield(o2), msg)
-    else
-      assert_equal(o1, o2, msg)
-    end
-  end
-
-  class MyObject; def initialize(v) @v = v end; attr_reader :v; end
-  def test_object
-    o1 = Object.new
-    o1.instance_eval { @iv = 1 }
-    marshal_equal(o1) {|o| o.instance_eval { @iv }}
-  end
-
-  def test_object_subclass
-    marshal_equal(MyObject.new(2)) {|o| o.v}
-  end
-
-  def test_object_extend
-    o1 = Object.new
-    o1.extend(Mod1)
-    marshal_equal(o1) { |o|
-      (class << self; self; end).ancestors
-    }
-    o1.extend(Mod2)
-    marshal_equal(o1) { |o|
-      (class << self; self; end).ancestors
-    }
-  end
-
-  def test_object_subclass_extend
-    o1 = MyObject.new(2)
-    o1.extend(Mod1)
-    marshal_equal(o1) { |o|
-      (class << self; self; end).ancestors
-    }
-    o1.extend(Mod2)
-    marshal_equal(o1) { |o|
-      (class << self; self; end).ancestors
-    }
-  end
-
-  class MyArray < Array
-    def initialize(v, *args)
-      super(args)
-      @v = v
-    end
-  end
-  def test_array
-    marshal_equal(5)
-    marshal_equal([1,2,3])
-  end
-
-  def test_array_subclass
-    marshal_equal(MyArray.new(0, 1, 2, 3))
-  end
-
-  def test_array_ivar
-    o1 = Array.new
-    o1.instance_eval { @iv = 1 }
-    marshal_equal(o1) {|o| o.instance_eval { @iv }}
-  end
-
-  class MyException < Exception; def initialize(v, *args) super(*args); @v = v; end; attr_reader :v; end
-  def test_exception
-    marshal_equal(Exception.new('foo')) {|o| o.message}
-    marshal_equal(assert_raise(NoMethodError) {no_such_method()}) {|o| o.message}
-  end
-
-  def test_exception_subclass
-    marshal_equal(MyException.new(20, "bar")) {|o| [o.message, o.v]}
-  end
-
-  def test_false
-    marshal_equal(false)
-  end
-
-  class MyHash < Hash; def initialize(v, *args) super(*args); @v = v; end end
-  def test_hash
-    marshal_equal({1=>2, 3=>4})
-  end
-
-  def test_hash_default
-    h = Hash.new(:default)
-    h[5] = 6
-    marshal_equal(h)
-  end
-
-  def test_hash_subclass
-    h = MyHash.new(7, 8)
-    h[4] = 5
-    marshal_equal(h)
-  end
-
-  def test_hash_default_proc
-    h = Hash.new {}
-    assert_raises(TypeError) { marshaltest(h) }
-  end
-
-  def test_hash_ivar
-    o1 = Hash.new
-    o1.instance_eval { @iv = 1 }
-    marshal_equal(o1) {|o| o.instance_eval { @iv }}
-  end
-
-  def test_hash_extend
-    o1 = Hash.new
-    o1.extend(Mod1)
-    marshal_equal(o1) { |o|
-      (class << self; self; end).ancestors
-    }
-    o1.extend(Mod2)
-    marshal_equal(o1) { |o|
-      (class << self; self; end).ancestors
-    }
-  end
-
-  def test_hash_subclass_extend
-    o1 = MyHash.new(2)
-    o1.extend(Mod1)
-    marshal_equal(o1) { |o|
-      (class << self; self; end).ancestors
-    }
-    o1.extend(Mod2)
-    marshal_equal(o1) { |o|
-      (class << self; self; end).ancestors
-    }
-  end
-
-  def test_bignum
-    marshal_equal(-0x4000_0000_0000_0001)
-    marshal_equal(-0x4000_0001)
-    marshal_equal(0x4000_0000)
-    marshal_equal(0x4000_0000_0000_0000)
-  end
-
-  def test_fixnum
-    marshal_equal(-0x4000_0000)
-    marshal_equal(-0x3fff_ffff)
-    marshal_equal(-1)
-    marshal_equal(0)
-    marshal_equal(1)
-    marshal_equal(0x3fff_ffff)
-  end
-
-  def test_fixnum_ivar
-    o1 = 1
-    o1.instance_eval { @iv = 2 }
-    marshal_equal(o1) {|o| o.instance_eval { @iv }}
-  ensure
-    1.instance_eval { remove_instance_variable("@iv") }
-  end
-
-  def test_fixnum_ivar_self
-    o1 = 1
-    o1.instance_eval { @iv = 1 }
-    marshal_equal(o1) {|o| o.instance_eval { @iv }}
-  ensure
-    1.instance_eval { remove_instance_variable("@iv") }
-  end
-
-  def test_float
-    marshal_equal(-1.0)
-    marshal_equal(0.0)
-    marshal_equal(1.0)
-  end
-
-  def test_float_inf_nan
-    marshal_equal(1.0/0.0)
-    marshal_equal(-1.0/0.0)
-    marshal_equal(0.0/0.0) {|o| o.nan?}
-    marshal_equal(NegativeZero) {|o| 1.0/o}
-  end
-
-  def test_float_ivar
-    o1 = 1.23
-    o1.instance_eval { @iv = 1 }
-    marshal_equal(o1) {|o| o.instance_eval { @iv }}
-  end
-
-  def test_float_ivar_self
-    o1 = 5.5
-    o1.instance_eval { @iv = o1 }
-    marshal_equal(o1) {|o| o.instance_eval { @iv }}
-  end
-
-  def test_float_extend
-    o1 = 0.0/0.0
-    o1.extend(Mod1)
-    marshal_equal(o1) { |o|
-      (class << self; self; end).ancestors
-    }
-    o1.extend(Mod2)
-    marshal_equal(o1) { |o|
-      (class << self; self; end).ancestors
-    }
-  end
-
-  class MyRange < Range; def initialize(v, *args) super(*args); @v = v; end end
-  def test_range
-    marshal_equal(1..2)
-    marshal_equal(1...3)
-  end
-
-  def test_range_subclass
-    marshal_equal(MyRange.new(4,5,8, false))
-  end
-
-  class MyRegexp < Regexp; def initialize(v, *args) super(*args); @v = v; end end
-  def test_regexp
-    marshal_equal(/a/)
-    marshal_equal(/A/i)
-    marshal_equal(/A/mx)
-  end
-
-  def test_regexp_subclass
-    marshal_equal(MyRegexp.new(10, "a"))
-  end
-
-  class MyString < String; def initialize(v, *args) super(*args); @v = v; end end
-  def test_string
-    marshal_equal("abc")
-  end
-
-  def test_string_ivar
-    o1 = ""
-    o1.instance_eval { @iv = 1 }
-    marshal_equal(o1) {|o| o.instance_eval { @iv }}
-  end
-
-  def test_string_subclass
-    marshal_equal(MyString.new(10, "a"))
-  end
-
-  def test_string_subclass_cycle
-    str = MyString.new(10, "b")
-    str.instance_eval { @v = str }
-    marshal_equal(str) { |o|
-      assert_equal(o.__id__, o.instance_eval { @v }.__id__)
-      o.instance_eval { @v }
-    }
-  end
-
-  def test_string_subclass_extend
-    o = "abc"
-    o.extend(Mod1)
-    str = MyString.new(o, "c")
-    marshal_equal(str) { |o|
-      assert(o.instance_eval { @v }).kind_of?(Mod1)
-    }
-  end
-
-  MyStruct = Struct.new("MyStruct", :a, :b)
-  if RUBY_VERSION < "1.8.0"
-    # Struct#== is not defined in ruby/1.6
-    class MyStruct
-      def ==(rhs)
-       return true if __id__ == rhs.__id__
-       return false unless rhs.is_a?(::Struct) 
-       return false if self.class != rhs.class
-       members.each do |member|
-         return false if self.__send__(member) != rhs.__send__(member)
-       end
-       return true
-      end
-    end
-  end
-  class MySubStruct < MyStruct; def initialize(v, *args) super(*args); @v = v; end end
-  def test_struct
-    marshal_equal(MyStruct.new(1,2))
-  end
-
-  def test_struct_subclass
-    if RUBY_VERSION < "1.8.0"
-      # Substruct instance cannot be dumped in ruby/1.6
-      # ::Marshal.dump(MySubStruct.new(10, 1, 2)) #=> uninitialized struct
-      return false
-    end
-    marshal_equal(MySubStruct.new(10,1,2))
-  end
-
-  def test_struct_ivar
-    o1 = MyStruct.new
-    o1.instance_eval { @iv = 1 }
-    marshal_equal(o1) {|o| o.instance_eval { @iv }}
-  end
-
-  def test_struct_subclass_extend
-    o1 = MyStruct.new
-    o1.extend(Mod1)
-    marshal_equal(o1) { |o|
-      (class << self; self; end).ancestors
-    }
-    o1.extend(Mod2)
-    marshal_equal(o1) { |o|
-      (class << self; self; end).ancestors
-    }
-  end
-
-  def test_symbol
-    marshal_equal(:a)
-    marshal_equal(:a?)
-    marshal_equal(:a!)
-    marshal_equal(:a=)
-    marshal_equal(:|)
-    marshal_equal(:^)
-    marshal_equal(:&)
-    marshal_equal(:<=>)
-    marshal_equal(:==)
-    marshal_equal(:===)
-    marshal_equal(:=~)
-    marshal_equal(:>)
-    marshal_equal(:>=)
-    marshal_equal(:<)
-    marshal_equal(:<=)
-    marshal_equal(:<<)
-    marshal_equal(:>>)
-    marshal_equal(:+)
-    marshal_equal(:-)
-    marshal_equal(:*)
-    marshal_equal(:/)
-    marshal_equal(:%)
-    marshal_equal(:**)
-    marshal_equal(:~)
-    marshal_equal(:+@)
-    marshal_equal(:-@)
-    marshal_equal(:[])
-    marshal_equal(:[]=)
-    marshal_equal(:`)   #`
-    marshal_equal("a b".intern)
-  end
-
-  class MyTime < Time; def initialize(v, *args) super(*args); @v = v; end end
-  def test_time
-    # once there was a bug caused by usec overflow.  try a little harder.
-    10.times do
-      t = Time.now
-      marshal_equal(t, t.usec.to_s)
-    end
-  end
-
-  def test_time_subclass
-    marshal_equal(MyTime.new(10))
-  end
-
-  def test_time_ivar
-    o1 = Time.now
-    o1.instance_eval { @iv = 1 }
-    marshal_equal(o1) {|o| o.instance_eval { @iv }}
-  end
-
-  def test_true
-    marshal_equal(true)
-  end
-
-  def test_nil
-    marshal_equal(nil)
-  end
-
-  def test_share
-    o = [:share]
-    o1 = [o, o]
-    o2 = marshaltest(o1)
-    assert_same(o2.first, o2.last)
-  end
-
-  class CyclicRange < Range
-    def <=>(other); true; end
-  end
-  def test_range_cyclic
-    return unless CyclicRange.respond_to?(:allocate) # test for 1.8
-    o1 = CyclicRange.allocate
-    o1.instance_eval { initialize(o1, o1) }
-    o2 = marshaltest(o1)
-    assert_same(o2, o2.begin)
-    assert_same(o2, o2.end)
-  end
-
-  def test_singleton
-    o = Object.new
-    def o.m() end
-    assert_raises(TypeError) { marshaltest(o) }
-    o = Object.new
-    c = class << o
-      @v = 1
-      class C; self; end
-    end
-    assert_raises(TypeError) { marshaltest(o) }
-    assert_raises(TypeError) { marshaltest(c) }
-    assert_raises(TypeError) { marshaltest(ARGF) }
-    assert_raises(TypeError) { marshaltest(ENV) }
-  end
-
-  def test_extend
-    o = Object.new
-    o.extend Mod1
-    marshal_equal(o) { |obj| obj.kind_of? Mod1 }
-    o = Object.new
-    o.extend Mod1
-    o.extend Mod2
-    marshal_equal(o) {|obj| class << obj; ancestors end}
-    o = Object.new
-    o.extend Module.new
-    assert_raises(TypeError) { marshaltest(o) }
-  end
-
-  def test_extend_string
-    o = ""
-    o.extend Mod1
-    marshal_equal(o) { |obj| obj.kind_of? Mod1 }
-    o = ""
-    o.extend Mod1
-    o.extend Mod2
-    marshal_equal(o) {|obj| class << obj; ancestors end}
-    o = ""
-    o.extend Module.new
-    assert_raises(TypeError) { marshaltest(o) }
-  end
-
-  def test_anonymous
-    c = Class.new
-    assert_raises(TypeError) { marshaltest(c) }
-    o = c.new
-    assert_raises(TypeError) { marshaltest(o) }
-    m = Module.new
-    assert_raises(TypeError) { marshaltest(m) }
-  end
-
-  def test_string_empty
-    marshal_equal("")
-  end
-
-  def test_string_crlf
-    marshal_equal("\r\n")
-  end
-
-  def test_string_escape
-    marshal_equal("\0<;;>\1;;")
-  end
-
-  MyStruct2 = Struct.new(:a, :b)
-  if RUBY_VERSION < "1.8.0"
-    # Struct#== is not defined in ruby/1.6
-    class MyStruct2
-      def ==(rhs)
-       return true if __id__ == rhs.__id__
-       return false unless rhs.is_a?(::Struct) 
-       return false if self.class != rhs.class
-       members.each do |member|
-         return false if self.__send__(member) != rhs.__send__(member)
-       end
-       return true
-      end
-    end
-  end
-  def test_struct_toplevel
-    o = MyStruct2.new(1,2)
-    marshal_equal(o)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/suicide.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/suicide.rb
deleted file mode 100644 (file)
index 2687ed0..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-STDERR.reopen(STDOUT)
-at_exit{Process.kill(:INT, $$)}
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_alias.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_alias.rb
deleted file mode 100644 (file)
index 83f897f..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'test/unit'
-
-class TestAlias < Test::Unit::TestCase
-  class Alias0
-    def foo; "foo" end
-  end
-  class Alias1<Alias0
-    alias bar foo
-    def foo; "foo+" + super end
-  end
-  class Alias2<Alias1
-    alias baz foo
-    undef foo
-  end
-  class Alias3<Alias2
-    def foo
-      defined? super
-    end
-    def bar
-      defined? super
-    end
-    def quux
-      defined? super
-    end
-  end
-
-  def test_alias
-    x = Alias2.new
-    assert_equal("foo", x.bar)
-    assert_equal("foo+foo", x.baz)
-
-    # test_check for cache
-    assert_equal("foo+foo", x.baz)
-
-    x = Alias3.new
-    assert(!x.foo)
-    assert(x.bar)
-    assert(!x.quux)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_array.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_array.rb
deleted file mode 100644 (file)
index 4c7c3df..0000000
+++ /dev/null
@@ -1,1272 +0,0 @@
-require 'test/unit'
-
-class TestArray < Test::Unit::TestCase
-  def test_0_literal
-    assert_equal([1, 2, 3, 4], [1, 2] + [3, 4])
-    assert_equal([1, 2, 1, 2], [1, 2] * 2)
-    assert_equal("1:2", [1, 2] * ":")
-
-    assert_equal([1, 2].hash, [1, 2].hash)
-
-    assert_equal([2,3], [1,2,3] & [2,3,4])
-    assert_equal([1,2,3,4], [1,2,3] | [2,3,4])
-    assert_equal([1,2,3] - [2,3], [1])
-
-    x = [0, 1, 2, 3, 4, 5]
-    assert_equal(2, x[2])
-    assert_equal([1, 2, 3], x[1..3])
-    assert_equal([1, 2, 3], x[1,3])
-
-    x[0, 2] = 10
-    assert(x[0] == 10 && x[1] == 2)
-
-    x[0, 0] = -1
-    assert(x[0] == -1 && x[1] == 10)
-
-    x[-1, 1] = 20
-    assert(x[-1] == 20 && x.pop == 20)
-  end
-
-  def test_array_andor_0
-    assert_equal([2], ([1,2,3]&[2,4,6]))
-    assert_equal([1,2,3,4,6], ([1,2,3]|[2,4,6]))
-  end
-
-  def test_compact_0
-    a = [nil, 1, nil, nil, 5, nil, nil]
-    assert_equal [1, 5], a.compact
-    assert_equal [nil, 1, nil, nil, 5, nil, nil], a
-    a.compact!
-    assert_equal [1, 5], a
-  end
-
-  def test_uniq_0
-    x = [1, 1, 4, 2, 5, 4, 5, 1, 2]
-    x.uniq!
-    assert_equal([1, 4, 2, 5], x)
-  end
-
-  def test_empty_0
-    assert_equal true, [].empty?
-    assert_equal false, [1].empty?
-    assert_equal false, [1, 1, 4, 2, 5, 4, 5, 1, 2].empty?
-  end
-
-  def test_sort_0
-    x = ["it", "came", "to", "pass", "that", "..."]
-    x = x.sort.join(" ")
-    assert_equal("... came it pass that to", x)
-    x = [2,5,3,1,7]
-    x.sort!{|a,b| a<=>b}               # sort with condition
-    assert_equal([1,2,3,5,7], x)
-    x.sort!{|a,b| b-a}         # reverse sort
-    assert_equal([7,5,3,2,1], x)
-  end
-
-  def test_split_0
-    x = "The Boassert of Mormon"
-    assert_equal(x.reverse, x.split(//).reverse!.join)
-    assert_equal(x.reverse, x.reverse!)
-    assert_equal("g:n:i:r:t:s: :e:t:y:b: :1", "1 byte string".split(//).reverse.join(":"))
-    x = "a b c  d"
-    assert_equal(['a', 'b', 'c', 'd'], x.split)
-    assert_equal(['a', 'b', 'c', 'd'], x.split(' '))
-  end
-
-  def test_misc_0
-    assert(defined? "a".chomp)
-    assert_equal(["a", "b", "c"], "abc".scan(/./))
-    assert_equal([["1a"], ["2b"], ["3c"]], "1a2b3c".scan(/(\d.)/))
-    # non-greedy match
-    assert_equal([["a", "12"], ["b", "22"]], "a=12;b=22".scan(/(.*?)=(\d*);?/))
-
-    x = [1]
-    assert_equal('1:1:1:1:1', (x * 5).join(":"))
-    assert_equal('1', (x * 1).join(":"))
-    assert_equal('', (x * 0).join(":"))
-
-    *x = *(1..7).to_a
-    assert_equal(7, x.size)
-    assert_equal([1, 2, 3, 4, 5, 6, 7], x)
-
-    x = [1,2,3]
-    x[1,0] = x
-    assert_equal([1,1,2,3,2,3], x)
-
-    x = [1,2,3]
-    x[-1,0] = x
-    assert_equal([1,2,1,2,3,3], x)
-
-    x = [1,2,3]
-    x.concat(x)
-    assert_equal([1,2,3,1,2,3], x)
-
-    x = [1,2,3]
-    x.clear
-    assert_equal([], x)
-
-    x = [1,2,3]
-    y = x.dup
-    x << 4
-    y << 5
-    assert_equal([1,2,3,4], x)
-    assert_equal([1,2,3,5], y)
-  end
-
-  def test_beg_end_0
-    x = [1, 2, 3, 4, 5]
-    
-    assert_equal(1, x.first)
-    assert_equal([1], x.first(1))
-    assert_equal([1, 2, 3], x.first(3))
-    
-    assert_equal(5, x.last)
-    assert_equal([5], x.last(1))
-    assert_equal([3, 4, 5], x.last(3))
-    
-    assert_equal(1, x.shift)
-    assert_equal([2, 3, 4], x.shift(3))
-    assert_equal([5], x)
-    
-    assert_equal([2, 3, 4, 5], x.unshift(2, 3, 4))
-    assert_equal([1, 2, 3, 4, 5], x.unshift(1))
-    assert_equal([1, 2, 3, 4, 5], x)
-    
-    assert_equal(5, x.pop)
-    assert_equal([3, 4], x.pop(2))
-    assert_equal([1, 2], x)
-    
-    assert_equal([1, 2, 3, 4], x.push(3, 4))
-    assert_equal([1, 2, 3, 4, 5], x.push(5))
-    assert_equal([1, 2, 3, 4, 5], x)
-  end
-
-  def test_find_all_0
-    assert_respond_to([], :find_all)
-    assert_respond_to([], :select)       # Alias
-    assert_equal([], [].find_all{ |obj| obj == "foo"})
-
-    x = ["foo", "bar", "baz", "baz", 1, 2, 3, 3, 4]
-    assert_equal(["baz","baz"], x.find_all{ |obj| obj == "baz" })
-    assert_equal([3,3], x.find_all{ |obj| obj == 3 })
-  end
-
-  def test_fill_0
-    assert_equal([-1, -1, -1, -1, -1, -1], [0, 1, 2, 3, 4, 5].fill(-1))
-    assert_equal([0, 1, 2, -1, -1, -1], [0, 1, 2, 3, 4, 5].fill(-1, 3))
-    assert_equal([0, 1, 2, -1, -1, 5], [0, 1, 2, 3, 4, 5].fill(-1, 3, 2))
-    assert_equal([0, 1, 2, -1, -1, -1, -1, -1], [0, 1, 2, 3, 4, 5].fill(-1, 3, 5))
-    assert_equal([0, 1, -1, -1, 4, 5], [0, 1, 2, 3, 4, 5].fill(-1, 2, 2))
-    assert_equal([0, 1, -1, -1, -1, -1, -1], [0, 1, 2, 3, 4, 5].fill(-1, 2, 5))
-    assert_equal([0, 1, 2, 3, -1, 5], [0, 1, 2, 3, 4, 5].fill(-1, -2, 1))
-    assert_equal([0, 1, 2, 3, -1, -1, -1], [0, 1, 2, 3, 4, 5].fill(-1, -2, 3))
-    assert_equal([0, 1, 2, -1, -1, 5], [0, 1, 2, 3, 4, 5].fill(-1, 3..4))
-    assert_equal([0, 1, 2, -1, 4, 5], [0, 1, 2, 3, 4, 5].fill(-1, 3...4))
-    assert_equal([0, 1, -1, -1, -1, 5], [0, 1, 2, 3, 4, 5].fill(-1, 2..-2))
-    assert_equal([0, 1, -1, -1, 4, 5], [0, 1, 2, 3, 4, 5].fill(-1, 2...-2))
-    assert_equal([10, 11, 12, 13, 14, 15], [0, 1, 2, 3, 4, 5].fill{|i| i+10})
-    assert_equal([0, 1, 2, 13, 14, 15], [0, 1, 2, 3, 4, 5].fill(3){|i| i+10})
-    assert_equal([0, 1, 2, 13, 14, 5], [0, 1, 2, 3, 4, 5].fill(3, 2){|i| i+10})
-    assert_equal([0, 1, 2, 13, 14, 15, 16, 17], [0, 1, 2, 3, 4, 5].fill(3, 5){|i| i+10})
-    assert_equal([0, 1, 2, 13, 14, 5], [0, 1, 2, 3, 4, 5].fill(3..4){|i| i+10})
-    assert_equal([0, 1, 2, 13, 4, 5], [0, 1, 2, 3, 4, 5].fill(3...4){|i| i+10})
-    assert_equal([0, 1, 12, 13, 14, 5], [0, 1, 2, 3, 4, 5].fill(2..-2){|i| i+10})
-    assert_equal([0, 1, 12, 13, 4, 5], [0, 1, 2, 3, 4, 5].fill(2...-2){|i| i+10})
-  end
-
-  # From rubicon
-
-  def setup
-    @cls = Array
-  end
-
-  def test_00_new
-    a = @cls.new()
-    assert_instance_of(@cls, a)
-    assert_equal(0, a.length)
-    assert_nil(a[0])
-  end
-
-  def test_01_square_brackets
-    a = @cls[ 5, 4, 3, 2, 1 ]
-    assert_instance_of(@cls, a)
-    assert_equal(5, a.length)
-    5.times { |i| assert_equal(5-i, a[i]) }
-    assert_nil(a[6])
-  end
-
-  def test_AND # '&'
-    assert_equal(@cls[1, 3], @cls[ 1, 1, 3, 5 ] & @cls[ 1, 2, 3 ])
-    assert_equal(@cls[],     @cls[ 1, 1, 3, 5 ] & @cls[ ])
-    assert_equal(@cls[],     @cls[  ]           & @cls[ 1, 2, 3 ])
-    assert_equal(@cls[],     @cls[ 1, 2, 3 ]    & @cls[ 4, 5, 6 ])
-  end
-
-  def test_MUL # '*'
-    assert_equal(@cls[], @cls[]*3)
-    assert_equal(@cls[1, 1, 1], @cls[1]*3)
-    assert_equal(@cls[1, 2, 1, 2, 1, 2], @cls[1, 2]*3)
-    assert_equal(@cls[], @cls[1, 2, 3] * 0)
-    assert_raise(ArgumentError) { @cls[1, 2]*(-3) }
-
-    assert_equal('1-2-3-4-5', @cls[1, 2, 3, 4, 5] * '-')
-    assert_equal('12345',     @cls[1, 2, 3, 4, 5] * '')
-
-  end
-
-  def test_PLUS # '+'
-    assert_equal(@cls[],     @cls[]  + @cls[])
-    assert_equal(@cls[1],    @cls[1] + @cls[])
-    assert_equal(@cls[1],    @cls[]  + @cls[1])
-    assert_equal(@cls[1, 1], @cls[1] + @cls[1])
-    assert_equal(@cls['cat', 'dog', 1, 2, 3], %w(cat dog) + (1..3).to_a)
-  end
-
-  def test_MINUS # '-'
-    assert_equal(@cls[],  @cls[1] - @cls[1])
-    assert_equal(@cls[1], @cls[1, 2, 3, 4, 5] - @cls[2, 3, 4, 5])
-    # Ruby 1.8 feature change
-    #assert_equal(@cls[1], @cls[1, 2, 1, 3, 1, 4, 1, 5] - @cls[2, 3, 4, 5])
-    assert_equal(@cls[1, 1, 1, 1], @cls[1, 2, 1, 3, 1, 4, 1, 5] - @cls[2, 3, 4, 5])
-    a = @cls[]
-    1000.times { a << 1 }
-    assert_equal(1000, a.length)
-    #assert_equal(@cls[1], a - @cls[2])
-    assert_equal(@cls[1] * 1000, a - @cls[2])
-    #assert_equal(@cls[1],  @cls[1, 2, 1] - @cls[2])
-    assert_equal(@cls[1, 1],  @cls[1, 2, 1] - @cls[2])
-    assert_equal(@cls[1, 2, 3], @cls[1, 2, 3] - @cls[4, 5, 6])
-  end
-
-  def test_LSHIFT # '<<'
-    a = @cls[]
-    a << 1
-    assert_equal(@cls[1], a)
-    a << 2 << 3
-    assert_equal(@cls[1, 2, 3], a)
-    a << nil << 'cat'
-    assert_equal(@cls[1, 2, 3, nil, 'cat'], a)
-    a << a
-    assert_equal(@cls[1, 2, 3, nil, 'cat', a], a)
-  end
-
-  def test_CMP # '<=>'
-    assert_equal(0,  @cls[] <=> @cls[])
-    assert_equal(0,  @cls[1] <=> @cls[1])
-    assert_equal(0,  @cls[1, 2, 3, 'cat'] <=> @cls[1, 2, 3, 'cat'])
-    assert_equal(-1, @cls[] <=> @cls[1])
-    assert_equal(1,  @cls[1] <=> @cls[])
-    assert_equal(-1, @cls[1, 2, 3] <=> @cls[1, 2, 3, 'cat'])
-    assert_equal(1,  @cls[1, 2, 3, 'cat'] <=> @cls[1, 2, 3])
-    assert_equal(-1, @cls[1, 2, 3, 'cat'] <=> @cls[1, 2, 3, 'dog'])
-    assert_equal(1,  @cls[1, 2, 3, 'dog'] <=> @cls[1, 2, 3, 'cat'])
-  end
-
-  def test_EQUAL # '=='
-    assert(@cls[] == @cls[])
-    assert(@cls[1] == @cls[1])
-    assert(@cls[1, 1, 2, 2] == @cls[1, 1, 2, 2])
-    assert(@cls[1.0, 1.0, 2.0, 2.0] == @cls[1, 1, 2, 2])
-  end
-
-  def test_VERY_EQUAL # '==='
-    assert(@cls[] === @cls[])
-    assert(@cls[1] === @cls[1])
-    assert(@cls[1, 1, 2, 2] === @cls[1, 1, 2, 2])
-    assert(@cls[1.0, 1.0, 2.0, 2.0] === @cls[1, 1, 2, 2])
-  end
-
-  def test_AREF # '[]'
-    a = @cls[*(1..100).to_a]
-
-    assert_equal(1, a[0])
-    assert_equal(100, a[99])
-    assert_nil(a[100])
-    assert_equal(100, a[-1])
-    assert_equal(99,  a[-2])
-    assert_equal(1,   a[-100])
-    assert_nil(a[-101])
-    assert_nil(a[-101,0])
-    assert_nil(a[-101,1])
-    assert_nil(a[-101,-1])
-    assert_nil(a[10,-1])
-
-    assert_equal(@cls[1],   a[0,1])
-    assert_equal(@cls[100], a[99,1])
-    assert_equal(@cls[],    a[100,1])
-    assert_equal(@cls[100], a[99,100])
-    assert_equal(@cls[100], a[-1,1])
-    assert_equal(@cls[99],  a[-2,1])
-    assert_equal(@cls[],    a[-100,0])
-    assert_equal(@cls[1],   a[-100,1])
-
-    assert_equal(@cls[10, 11, 12], a[9, 3])
-    assert_equal(@cls[10, 11, 12], a[-91, 3])
-
-    assert_equal(@cls[1],   a[0..0])
-    assert_equal(@cls[100], a[99..99])
-    assert_equal(@cls[],    a[100..100])
-    assert_equal(@cls[100], a[99..200])
-    assert_equal(@cls[100], a[-1..-1])
-    assert_equal(@cls[99],  a[-2..-2])
-
-    assert_equal(@cls[10, 11, 12], a[9..11])
-    assert_equal(@cls[10, 11, 12], a[-91..-89])
-    
-    assert_nil(a[10, -3])
-    # Ruby 1.8 feature change:
-    # Array#[size..x] returns [] instead of nil.
-    #assert_nil(a[10..7])
-    assert_equal [], a[10..7]
-
-    assert_raise(TypeError) {a['cat']}
-  end
-
-  def test_ASET # '[]='
-    a = @cls[*(0..99).to_a]
-    assert_equal(0, a[0] = 0)
-    assert_equal(@cls[0] + @cls[*(1..99).to_a], a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(0, a[10,10] = 0)
-    assert_equal(@cls[*(0..9).to_a] + @cls[0] + @cls[*(20..99).to_a], a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(0, a[-1] = 0)
-    assert_equal(@cls[*(0..98).to_a] + @cls[0], a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(0, a[-10, 10] = 0)
-    assert_equal(@cls[*(0..89).to_a] + @cls[0], a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(0, a[0,1000] = 0)
-    assert_equal(@cls[0] , a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(0, a[10..19] = 0)
-    assert_equal(@cls[*(0..9).to_a] + @cls[0] + @cls[*(20..99).to_a], a)
-
-    b = @cls[*%w( a b c )]
-    a = @cls[*(0..99).to_a]
-    assert_equal(b, a[0,1] = b)
-    assert_equal(b + @cls[*(1..99).to_a], a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(b, a[10,10] = b)
-    assert_equal(@cls[*(0..9).to_a] + b + @cls[*(20..99).to_a], a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(b, a[-1, 1] = b)
-    assert_equal(@cls[*(0..98).to_a] + b, a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(b, a[-10, 10] = b)
-    assert_equal(@cls[*(0..89).to_a] + b, a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(b, a[0,1000] = b)
-    assert_equal(b , a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(b, a[10..19] = b)
-    assert_equal(@cls[*(0..9).to_a] + b + @cls[*(20..99).to_a], a)
-
-    # Ruby 1.8 feature change:
-    # assigning nil does not remove elements.
-=begin
-    a = @cls[*(0..99).to_a]
-    assert_equal(nil, a[0,1] = nil)
-    assert_equal(@cls[*(1..99).to_a], a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(nil, a[10,10] = nil)
-    assert_equal(@cls[*(0..9).to_a] + @cls[*(20..99).to_a], a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(nil, a[-1, 1] = nil)
-    assert_equal(@cls[*(0..98).to_a], a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(nil, a[-10, 10] = nil)
-    assert_equal(@cls[*(0..89).to_a], a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(nil, a[0,1000] = nil)
-    assert_equal(@cls[] , a)
-
-    a = @cls[*(0..99).to_a]
-    assert_equal(nil, a[10..19] = nil)
-    assert_equal(@cls[*(0..9).to_a] + @cls[*(20..99).to_a], a)
-=end
-
-    a = @cls[1, 2, 3]
-    a[1, 0] = a
-    assert_equal([1, 1, 2, 3, 2, 3], a)
-
-    a = @cls[1, 2, 3]
-    a[-1, 0] = a
-    assert_equal([1, 2, 1, 2, 3, 3], a)
-  end
-
-  def test_assoc
-    a1 = @cls[*%w( cat feline )]
-    a2 = @cls[*%w( dog canine )]
-    a3 = @cls[*%w( mule asinine )]
-
-    a = @cls[ a1, a2, a3 ]
-
-    assert_equal(a1, a.assoc('cat'))
-    assert_equal(a3, a.assoc('mule'))
-    assert_equal(nil, a.assoc('asinine'))
-    assert_equal(nil, a.assoc('wombat'))
-    assert_equal(nil, a.assoc(1..2))
-  end
-
-  def test_at
-    a = @cls[*(0..99).to_a]
-    assert_equal(0,   a.at(0))
-    assert_equal(10,  a.at(10))
-    assert_equal(99,  a.at(99))
-    assert_equal(nil, a.at(100))
-    assert_equal(99,  a.at(-1))
-    assert_equal(0,  a.at(-100))
-    assert_equal(nil, a.at(-101))
-    assert_raise(TypeError) { a.at('cat') }
-  end
-
-  def test_clear
-    a = @cls[1, 2, 3]
-    b = a.clear
-    assert_equal(@cls[], a)
-    assert_equal(@cls[], b)
-    assert_equal(a.__id__, b.__id__)
-  end
-
-  def test_clone
-    for taint in [ false, true ]
-      for frozen in [ false, true ]
-        a = @cls[*(0..99).to_a]
-        a.taint  if taint
-        a.freeze if frozen
-        b = a.clone
-
-        assert_equal(a, b)
-        assert(a.__id__ != b.__id__)
-        assert_equal(a.frozen?, b.frozen?)
-        assert_equal(a.tainted?, b.tainted?)
-      end
-    end
-  end
-
-  def test_collect
-    a = @cls[ 1, 'cat', 1..1 ]
-    assert_equal([ Fixnum, String, Range], a.collect {|e| e.class} )
-    assert_equal([ 99, 99, 99], a.collect { 99 } )
-
-    assert_equal([], @cls[].collect { 99 })
-
-    assert_equal([1, 2, 3], @cls[1, 2, 3].collect)
-  end
-
-  # also update map!
-  def test_collect!
-    a = @cls[ 1, 'cat', 1..1 ]
-    assert_equal([ Fixnum, String, Range], a.collect! {|e| e.class} )
-    assert_equal([ Fixnum, String, Range], a)
-   
-    a = @cls[ 1, 'cat', 1..1 ]
-    assert_equal([ 99, 99, 99], a.collect! { 99 } )
-    assert_equal([ 99, 99, 99], a)
-
-    a = @cls[ ]
-    assert_equal([], a.collect! { 99 })
-    assert_equal([], a)
-  end
-
-  def test_compact
-    a = @cls[ 1, nil, nil, 2, 3, nil, 4 ]
-    assert_equal(@cls[1, 2, 3, 4], a.compact)
-
-    a = @cls[ nil, 1, nil, 2, 3, nil, 4 ]
-    assert_equal(@cls[1, 2, 3, 4], a.compact)
-
-    a = @cls[ 1, nil, nil, 2, 3, nil, 4, nil ]
-    assert_equal(@cls[1, 2, 3, 4], a.compact)
-
-    a = @cls[ 1, 2, 3, 4 ]
-    assert_equal(@cls[1, 2, 3, 4], a.compact)
-  end
-
-  def test_compact!
-    a = @cls[ 1, nil, nil, 2, 3, nil, 4 ]
-    assert_equal(@cls[1, 2, 3, 4], a.compact!)
-    assert_equal(@cls[1, 2, 3, 4], a)
-
-    a = @cls[ nil, 1, nil, 2, 3, nil, 4 ]
-    assert_equal(@cls[1, 2, 3, 4], a.compact!)
-    assert_equal(@cls[1, 2, 3, 4], a)
-
-    a = @cls[ 1, nil, nil, 2, 3, nil, 4, nil ]
-    assert_equal(@cls[1, 2, 3, 4], a.compact!)
-    assert_equal(@cls[1, 2, 3, 4], a)
-
-    a = @cls[ 1, 2, 3, 4 ]
-    assert_equal(nil, a.compact!)
-    assert_equal(@cls[1, 2, 3, 4], a)
-  end
-
-  def test_concat
-    assert_equal(@cls[1, 2, 3, 4],     @cls[1, 2].concat(@cls[3, 4]))
-    assert_equal(@cls[1, 2, 3, 4],     @cls[].concat(@cls[1, 2, 3, 4]))
-    assert_equal(@cls[1, 2, 3, 4],     @cls[1, 2, 3, 4].concat(@cls[]))
-    assert_equal(@cls[],               @cls[].concat(@cls[]))
-    assert_equal(@cls[@cls[1, 2], @cls[3, 4]], @cls[@cls[1, 2]].concat(@cls[@cls[3, 4]]))
-    
-    a = @cls[1, 2, 3]
-    a.concat(a)
-    assert_equal([1, 2, 3, 1, 2, 3], a)
-  end
-
-  def test_count
-    a = @cls[1, 2, 3, 1, 2]
-    assert_equal(5, a.count)
-    assert_equal(2, a.count(1))
-    assert_equal(3, a.count {|x| x % 2 == 1 })
-    assert_equal(2, a.count(1) {|x| x % 2 == 1 })
-    assert_raise(ArgumentError) { a.count(0, 1) }
-  end
-
-  def test_delete
-    a = @cls[*('cab'..'cat').to_a]
-    assert_equal('cap', a.delete('cap'))
-    assert_equal(@cls[*('cab'..'cao').to_a] + @cls[*('caq'..'cat').to_a], a)
-
-    a = @cls[*('cab'..'cat').to_a]
-    assert_equal('cab', a.delete('cab'))
-    assert_equal(@cls[*('cac'..'cat').to_a], a)
-
-    a = @cls[*('cab'..'cat').to_a]
-    assert_equal('cat', a.delete('cat'))
-    assert_equal(@cls[*('cab'..'cas').to_a], a)
-
-    a = @cls[*('cab'..'cat').to_a]
-    assert_equal(nil, a.delete('cup'))
-    assert_equal(@cls[*('cab'..'cat').to_a], a)
-
-    a = @cls[*('cab'..'cat').to_a]
-    assert_equal(99, a.delete('cup') { 99 } )
-    assert_equal(@cls[*('cab'..'cat').to_a], a)
-  end
-
-  def test_delete_at
-    a = @cls[*(1..5).to_a]
-    assert_equal(3, a.delete_at(2))
-    assert_equal(@cls[1, 2, 4, 5], a)
-
-    a = @cls[*(1..5).to_a]
-    assert_equal(4, a.delete_at(-2))
-    assert_equal(@cls[1, 2, 3, 5], a)
-
-    a = @cls[*(1..5).to_a]
-    assert_equal(nil, a.delete_at(5))
-    assert_equal(@cls[1, 2, 3, 4, 5], a)
-
-    a = @cls[*(1..5).to_a]
-    assert_equal(nil, a.delete_at(-6))
-    assert_equal(@cls[1, 2, 3, 4, 5], a)
-  end
-
-  # also reject!
-  def test_delete_if
-    a = @cls[ 1, 2, 3, 4, 5 ]
-    assert_equal(a, a.delete_if { false })
-    assert_equal(@cls[1, 2, 3, 4, 5], a)
-
-    a = @cls[ 1, 2, 3, 4, 5 ]
-    assert_equal(a, a.delete_if { true })
-    assert_equal(@cls[], a)
-
-    a = @cls[ 1, 2, 3, 4, 5 ]
-    assert_equal(a, a.delete_if { |i| i > 3 })
-    assert_equal(@cls[1, 2, 3], a)
-  end
-
-  def test_dup
-    for taint in [ false, true ]
-      for frozen in [ false, true ]
-        a = @cls[*(0..99).to_a]
-        a.taint  if taint
-        a.freeze if frozen
-        b = a.dup
-
-        assert_equal(a, b)
-        assert(a.__id__ != b.__id__)
-        assert_equal(false, b.frozen?)
-        assert_equal(a.tainted?, b.tainted?)
-      end
-    end
-  end
-
-  def test_each
-    a = @cls[*%w( ant bat cat dog )]
-    i = 0
-    a.each { |e|
-      assert_equal(a[i], e)
-      i += 1
-    }
-    assert_equal(4, i)
-
-    a = @cls[]
-    i = 0
-    a.each { |e|
-      assert_equal(a[i], e)
-      i += 1
-    }
-    assert_equal(0, i)
-
-    assert_equal(a, a.each {})
-  end
-
-  def test_each_index
-    a = @cls[*%w( ant bat cat dog )]
-    i = 0
-    a.each_index { |ind|
-      assert_equal(i, ind)
-      i += 1
-    }
-    assert_equal(4, i)
-
-    a = @cls[]
-    i = 0
-    a.each_index { |ind|
-      assert_equal(i, ind)
-      i += 1
-    }
-    assert_equal(0, i)
-
-    assert_equal(a, a.each_index {})
-  end
-
-  def test_empty?
-    assert(@cls[].empty?)
-    assert(!@cls[1].empty?)
-  end
-
-  def test_eql?
-    assert(@cls[].eql?(@cls[]))
-    assert(@cls[1].eql?(@cls[1]))
-    assert(@cls[1, 1, 2, 2].eql?(@cls[1, 1, 2, 2]))
-    assert(!@cls[1.0, 1.0, 2.0, 2.0].eql?(@cls[1, 1, 2, 2]))
-  end
-
-  def test_fill
-    assert_equal(@cls[],   @cls[].fill(99))
-    assert_equal(@cls[],   @cls[].fill(99, 0))
-    assert_equal(@cls[99], @cls[].fill(99, 0, 1))
-    assert_equal(@cls[99], @cls[].fill(99, 0..0))
-
-    assert_equal(@cls[99],   @cls[1].fill(99))
-    assert_equal(@cls[99],   @cls[1].fill(99, 0))
-    assert_equal(@cls[99],   @cls[1].fill(99, 0, 1))
-    assert_equal(@cls[99],   @cls[1].fill(99, 0..0))
-
-    assert_equal(@cls[99, 99], @cls[1, 2].fill(99))
-    assert_equal(@cls[99, 99], @cls[1, 2].fill(99, 0))
-    assert_equal(@cls[99, 99], @cls[1, 2].fill(99, nil))
-    assert_equal(@cls[1,  99], @cls[1, 2].fill(99, 1, nil))
-    assert_equal(@cls[99,  2], @cls[1, 2].fill(99, 0, 1))
-    assert_equal(@cls[99,  2], @cls[1, 2].fill(99, 0..0))
-  end
-
-  def test_first
-    assert_equal(3,   @cls[3, 4, 5].first)
-    assert_equal(nil, @cls[].first)
-  end
-
-  def test_flatten
-    a1 = @cls[ 1, 2, 3]
-    a2 = @cls[ 5, 6 ]
-    a3 = @cls[ 4, a2 ]
-    a4 = @cls[ a1, a3 ]
-    assert_equal(@cls[1, 2, 3, 4, 5, 6], a4.flatten)
-    assert_equal(@cls[ a1, a3], a4)
-
-    a5 = @cls[ a1, @cls[], a3 ]
-    assert_equal(@cls[1, 2, 3, 4, 5, 6], a5.flatten)
-    assert_equal(@cls[], @cls[].flatten)
-    assert_equal(@cls[], 
-                 @cls[@cls[@cls[@cls[],@cls[]],@cls[@cls[]],@cls[]],@cls[@cls[@cls[]]]].flatten)
-
-    assert_raise(TypeError, "[ruby-dev:31197]") { [[]].flatten("") }
-  end
-
-  def test_flatten!
-    a1 = @cls[ 1, 2, 3]
-    a2 = @cls[ 5, 6 ]
-    a3 = @cls[ 4, a2 ]
-    a4 = @cls[ a1, a3 ]
-    assert_equal(@cls[1, 2, 3, 4, 5, 6], a4.flatten!)
-    assert_equal(@cls[1, 2, 3, 4, 5, 6], a4)
-
-    a5 = @cls[ a1, @cls[], a3 ]
-    assert_equal(@cls[1, 2, 3, 4, 5, 6], a5.flatten!)
-    assert_equal(@cls[1, 2, 3, 4, 5, 6], a5)
-
-    assert_equal(@cls[], @cls[].flatten)
-    assert_equal(@cls[], 
-                 @cls[@cls[@cls[@cls[],@cls[]],@cls[@cls[]],@cls[]],@cls[@cls[@cls[]]]].flatten)
-  end
-
-  def test_flatten_with_callcc
-    respond_to?(:callcc, true) or require 'continuation'
-    o = Object.new
-    def o.to_ary() callcc {|k| @cont = k; [1,2,3]} end
-    begin
-      assert_equal([10, 20, 1, 2, 3, 30, 1, 2, 3, 40], [10, 20, o, 30, o, 40].flatten)
-    rescue => e
-    else
-      o.instance_eval {@cont}.call
-    end
-    assert_instance_of(RuntimeError, e, '[ruby-dev:34798]')
-    assert_match(/reentered/, e.message, '[ruby-dev:34798]')
-  end
-
-  def test_hash
-    a1 = @cls[ 'cat', 'dog' ]
-    a2 = @cls[ 'cat', 'dog' ]
-    a3 = @cls[ 'dog', 'cat' ]
-    assert(a1.hash == a2.hash)
-    assert(a1.hash != a3.hash)
-  end
-
-  def test_include?
-    a = @cls[ 'cat', 99, /a/, @cls[ 1, 2, 3] ]
-    assert(a.include?('cat'))
-    assert(a.include?(99))
-    assert(a.include?(/a/))
-    assert(a.include?([1,2,3]))
-    assert(!a.include?('ca'))
-    assert(!a.include?([1,2]))
-  end
-
-  def test_index
-    a = @cls[ 'cat', 99, /a/, 99, @cls[ 1, 2, 3] ]
-    assert_equal(0, a.index('cat'))
-    assert_equal(1, a.index(99))
-    assert_equal(4, a.index([1,2,3]))
-    assert_nil(a.index('ca'))
-    assert_nil(a.index([1,2]))
-  end
-
-  def test_values_at
-    a = @cls[*('a'..'j').to_a]
-    assert_equal(@cls['a', 'c', 'e'], a.values_at(0, 2, 4))
-    assert_equal(@cls['j', 'h', 'f'], a.values_at(-1, -3, -5))
-    assert_equal(@cls['h', nil, 'a'], a.values_at(-3, 99, 0))
-  end
-
-  def test_join
-    $, = ""
-    a = @cls[]
-    assert_equal("", a.join)
-    assert_equal("", a.join(','))
-
-    $, = ""
-    a = @cls[1, 2]
-    assert_equal("12", a.join)
-    assert_equal("1,2", a.join(','))
-
-    $, = ""
-    a = @cls[1, 2, 3]
-    assert_equal("123", a.join)
-    assert_equal("1,2,3", a.join(','))
-
-    $, = ":"
-    a = @cls[1, 2, 3]
-    assert_equal("1:2:3", a.join)
-    assert_equal("1,2,3", a.join(','))
-
-    $, = ""
-  end
-
-  def test_last
-    assert_equal(nil, @cls[].last)
-    assert_equal(1, @cls[1].last)
-    assert_equal(99, @cls[*(3..99).to_a].last)
-  end
-
-  def test_length
-    assert_equal(0, @cls[].length)
-    assert_equal(1, @cls[1].length)
-    assert_equal(2, @cls[1, nil].length)
-    assert_equal(2, @cls[nil, 1].length)
-    assert_equal(234, @cls[*(0..233).to_a].length)
-  end
-
-  # also update collect!
-  def test_map!
-    a = @cls[ 1, 'cat', 1..1 ]
-    assert_equal(@cls[ Fixnum, String, Range], a.map! {|e| e.class} )
-    assert_equal(@cls[ Fixnum, String, Range], a)
-   
-    a = @cls[ 1, 'cat', 1..1 ]
-    assert_equal(@cls[ 99, 99, 99], a.map! { 99 } )
-    assert_equal(@cls[ 99, 99, 99], a)
-
-    a = @cls[ ]
-    assert_equal(@cls[], a.map! { 99 })
-    assert_equal(@cls[], a)
-  end
-
-  def test_nitems
-    assert_equal(0, @cls[].nitems)
-    assert_equal(1, @cls[1].nitems)
-    assert_equal(1, @cls[1, nil].nitems)
-    assert_equal(1, @cls[nil, 1].nitems)
-    assert_equal(3, @cls[1, nil, nil, 2, nil, 3, nil].nitems)
-  end
-
-  def test_pack
-    a = @cls[*%w( cat wombat x yy)]
-    assert_equal("catwomx  yy ", a.pack("A3A3A3A3"))
-    assert_equal("cat", a.pack("A*"))
-    assert_equal("cwx  yy ", a.pack("A3@1A3@2A3A3"))
-    assert_equal("catwomx\000\000yy\000", a.pack("a3a3a3a3"))
-    assert_equal("cat", a.pack("a*"))
-    assert_equal("ca", a.pack("a2"))
-    assert_equal("cat\000\000", a.pack("a5"))
-
-    assert_equal("\x61",     @cls["01100001"].pack("B8"))
-    assert_equal("\x61",     @cls["01100001"].pack("B*"))
-    assert_equal("\x61",     @cls["0110000100110111"].pack("B8"))
-    assert_equal("\x61\x37", @cls["0110000100110111"].pack("B16"))
-    assert_equal("\x61\x37", @cls["01100001", "00110111"].pack("B8B8"))
-    assert_equal("\x60",     @cls["01100001"].pack("B4"))
-    assert_equal("\x40",     @cls["01100001"].pack("B2"))
-
-    assert_equal("\x86",     @cls["01100001"].pack("b8"))
-    assert_equal("\x86",     @cls["01100001"].pack("b*"))
-    assert_equal("\x86",     @cls["0110000100110111"].pack("b8"))
-    assert_equal("\x86\xec", @cls["0110000100110111"].pack("b16"))
-    assert_equal("\x86\xec", @cls["01100001", "00110111"].pack("b8b8"))
-    assert_equal("\x06",     @cls["01100001"].pack("b4"))
-    assert_equal("\x02",     @cls["01100001"].pack("b2"))
-
-    assert_equal("ABC",      @cls[ 65, 66, 67 ].pack("C3"))
-    assert_equal("\377BC",   @cls[ -1, 66, 67 ].pack("C*"))
-    assert_equal("ABC",      @cls[ 65, 66, 67 ].pack("c3"))
-    assert_equal("\377BC",   @cls[ -1, 66, 67 ].pack("c*"))
-
-    
-    assert_equal("AB\n\x10",  @cls["4142", "0a", "12"].pack("H4H2H1"))
-    assert_equal("AB\n\x02",  @cls["1424", "a0", "21"].pack("h4h2h1"))
-
-    assert_equal("abc=02def=\ncat=\n=01=\n", 
-                 @cls["abc\002def", "cat", "\001"].pack("M9M3M4"))
-
-    assert_equal("aGVsbG8K\n",  @cls["hello\n"].pack("m"))
-    assert_equal(",:&5L;&\\*:&5L;&\\*\n",  @cls["hello\nhello\n"].pack("u"))
-
-    assert_equal("\xc2\xa9B\xe2\x89\xa0", @cls[0xa9, 0x42, 0x2260].pack("U*"))
-
-
-    format = "c2x5CCxsdils_l_a6";
-    # Need the expression in here to force ary[5] to be numeric.  This avoids
-    # test2 failing because ary2 goes str->numeric->str and ary does not.
-    ary = [1, -100, 127, 128, 32767, 987.654321098/100.0,
-      12345, 123456, -32767, -123456, "abcdef"]
-    x    = ary.pack(format)
-    ary2 = x.unpack(format)
-
-    assert_equal(ary.length, ary2.length)
-    assert_equal(ary.join(':'), ary2.join(':'))
-    assert_not_nil(x =~ /def/)
-
-=begin
-    skipping "Not tested:
-        D,d & double-precision float, native format\\
-        E & double-precision float, little-endian byte order\\
-        e & single-precision float, little-endian byte order\\
-        F,f & single-precision float, native format\\
-        G & double-precision float, network (big-endian) byte order\\
-        g & single-precision float, network (big-endian) byte order\\
-        I & unsigned integer\\
-        i & integer\\
-        L & unsigned long\\
-        l & long\\
-
-        N & long, network (big-endian) byte order\\
-        n & short, network (big-endian) byte-order\\
-        P & pointer to a structure (fixed-length string)\\
-        p & pointer to a null-terminated string\\
-        S & unsigned short\\
-        s & short\\
-        V & long, little-endian byte order\\
-        v & short, little-endian byte order\\
-        X & back up a byte\\
-        x & null byte\\
-        Z & ASCII string (null padded, count is width)\\
-"
-=end
-  end
-
-  def test_pop
-    a = @cls[ 'cat', 'dog' ]
-    assert_equal('dog', a.pop)
-    assert_equal(@cls['cat'], a)
-    assert_equal('cat', a.pop)
-    assert_equal(@cls[], a)
-    assert_nil(a.pop)
-    assert_equal(@cls[], a)
-  end
-
-  def test_push
-    a = @cls[1, 2, 3]
-    assert_equal(@cls[1, 2, 3, 4, 5], a.push(4, 5))
-    assert_equal(@cls[1, 2, 3, 4, 5, nil], a.push(nil))
-    # Ruby 1.8 feature:
-    # Array#push accepts any number of arguments.
-    #assert_raise(ArgumentError, "a.push()") { a.push() }
-    a.push
-    assert_equal @cls[1, 2, 3, 4, 5, nil], a
-    a.push 6, 7
-    assert_equal @cls[1, 2, 3, 4, 5, nil, 6, 7], a
-  end
-
-  def test_rassoc
-    a1 = @cls[*%w( cat  feline )]
-    a2 = @cls[*%w( dog  canine )]
-    a3 = @cls[*%w( mule asinine )]
-    a  = @cls[ a1, a2, a3 ]
-
-    assert_equal(a1,  a.rassoc('feline'))
-    assert_equal(a3,  a.rassoc('asinine'))
-    assert_equal(nil, a.rassoc('dog'))
-    assert_equal(nil, a.rassoc('mule'))
-    assert_equal(nil, a.rassoc(1..2))
-  end
-
-  # also delete_if
-  def test_reject!
-    a = @cls[ 1, 2, 3, 4, 5 ]
-    assert_equal(nil, a.reject! { false })
-    assert_equal(@cls[1, 2, 3, 4, 5], a)
-
-    a = @cls[ 1, 2, 3, 4, 5 ]
-    assert_equal(a, a.reject! { true })
-    assert_equal(@cls[], a)
-
-    a = @cls[ 1, 2, 3, 4, 5 ]
-    assert_equal(a, a.reject! { |i| i > 3 })
-    assert_equal(@cls[1, 2, 3], a)
-  end
-
-  def test_replace
-    a = @cls[ 1, 2, 3]
-    a_id = a.__id__
-    assert_equal(@cls[4, 5, 6], a.replace(@cls[4, 5, 6]))
-    assert_equal(@cls[4, 5, 6], a)
-    assert_equal(a_id, a.__id__)
-    assert_equal(@cls[], a.replace(@cls[]))
-  end
-
-  def test_reverse
-    a = @cls[*%w( dog cat bee ant )]
-    assert_equal(@cls[*%w(ant bee cat dog)], a.reverse)
-    assert_equal(@cls[*%w(dog cat bee ant)], a)
-    assert_equal(@cls[], @cls[].reverse)
-  end
-
-  def test_reverse!
-    a = @cls[*%w( dog cat bee ant )]
-    assert_equal(@cls[*%w(ant bee cat dog)], a.reverse!)
-    assert_equal(@cls[*%w(ant bee cat dog)], a)
-    # Ruby 1.8 feature change:
-    # Array#reverse always returns self.
-    #assert_nil(@cls[].reverse!)
-    assert_equal @cls[], @cls[].reverse!
-  end
-
-  def test_reverse_each
-    a = @cls[*%w( dog cat bee ant )]
-    i = a.length
-    a.reverse_each { |e|
-      i -= 1
-      assert_equal(a[i], e)
-    }
-    assert_equal(0, i)
-
-    a = @cls[]
-    i = 0
-    a.reverse_each { |e|
-      assert(false, "Never get here")
-    }
-    assert_equal(0, i)
-  end
-
-  def test_rindex
-    a = @cls[ 'cat', 99, /a/, 99, [ 1, 2, 3] ]
-    assert_equal(0, a.rindex('cat'))
-    assert_equal(3, a.rindex(99))
-    assert_equal(4, a.rindex([1,2,3]))
-    assert_nil(a.rindex('ca'))
-    assert_nil(a.rindex([1,2]))
-  end
-
-  def test_shift
-    a = @cls[ 'cat', 'dog' ]
-    assert_equal('cat', a.shift)
-    assert_equal(@cls['dog'], a)
-    assert_equal('dog', a.shift)
-    assert_equal(@cls[], a)
-    assert_nil(a.shift)
-    assert_equal(@cls[], a)
-  end
-
-  def test_size
-    assert_equal(0,   @cls[].size)
-    assert_equal(1,   @cls[1].size)
-    assert_equal(100, @cls[*(0..99).to_a].size)
-  end
-
-  def test_slice
-    a = @cls[*(1..100).to_a]
-
-    assert_equal(1, a.slice(0))
-    assert_equal(100, a.slice(99))
-    assert_nil(a.slice(100))
-    assert_equal(100, a.slice(-1))
-    assert_equal(99,  a.slice(-2))
-    assert_equal(1,   a.slice(-100))
-    assert_nil(a.slice(-101))
-
-    assert_equal(@cls[1],   a.slice(0,1))
-    assert_equal(@cls[100], a.slice(99,1))
-    assert_equal(@cls[],    a.slice(100,1))
-    assert_equal(@cls[100], a.slice(99,100))
-    assert_equal(@cls[100], a.slice(-1,1))
-    assert_equal(@cls[99],  a.slice(-2,1))
-
-    assert_equal(@cls[10, 11, 12], a.slice(9, 3))
-    assert_equal(@cls[10, 11, 12], a.slice(-91, 3))
-
-    assert_nil(a.slice(-101, 2))
-
-    assert_equal(@cls[1],   a.slice(0..0))
-    assert_equal(@cls[100], a.slice(99..99))
-    assert_equal(@cls[],    a.slice(100..100))
-    assert_equal(@cls[100], a.slice(99..200))
-    assert_equal(@cls[100], a.slice(-1..-1))
-    assert_equal(@cls[99],  a.slice(-2..-2))
-
-    assert_equal(@cls[10, 11, 12], a.slice(9..11))
-    assert_equal(@cls[10, 11, 12], a.slice(-91..-89))
-    
-    assert_nil(a.slice(-101..-1))
-
-    assert_nil(a.slice(10, -3))
-    # Ruby 1.8 feature change:
-    # Array#slice[size..x] always returns [].
-    #assert_nil(a.slice(10..7))
-    assert_equal @cls[], a.slice(10..7)
-  end
-
-  def test_slice!
-    a = @cls[1, 2, 3, 4, 5]
-    assert_equal(3, a.slice!(2))
-    assert_equal(@cls[1, 2, 4, 5], a)
-
-    a = @cls[1, 2, 3, 4, 5]
-    assert_equal(4, a.slice!(-2))
-    assert_equal(@cls[1, 2, 3, 5], a)
-
-    a = @cls[1, 2, 3, 4, 5]
-    assert_equal(@cls[3,4], a.slice!(2,2))
-    assert_equal(@cls[1, 2, 5], a)
-
-    a = @cls[1, 2, 3, 4, 5]
-    assert_equal(@cls[4,5], a.slice!(-2,2))
-    assert_equal(@cls[1, 2, 3], a)
-
-    a = @cls[1, 2, 3, 4, 5]
-    assert_equal(@cls[3,4], a.slice!(2..3))
-    assert_equal(@cls[1, 2, 5], a)
-
-    a = @cls[1, 2, 3, 4, 5]
-    assert_equal(nil, a.slice!(20))
-    assert_equal(@cls[1, 2, 3, 4, 5], a)
-
-    a = @cls[1, 2, 3, 4, 5]
-    assert_equal(nil, a.slice!(-6))
-    assert_equal(@cls[1, 2, 3, 4, 5], a)
-
-    a = @cls[1, 2, 3, 4, 5]
-    assert_equal(nil, a.slice!(-6..4))
-    assert_equal(@cls[1, 2, 3, 4, 5], a)
-
-    a = @cls[1, 2, 3, 4, 5]
-    assert_equal(nil, a.slice!(-6,2))
-    assert_equal(@cls[1, 2, 3, 4, 5], a)
-  end
-
-  def test_sort
-    a = @cls[ 4, 1, 2, 3 ]
-    assert_equal(@cls[1, 2, 3, 4], a.sort)
-    assert_equal(@cls[4, 1, 2, 3], a)
-
-    assert_equal(@cls[4, 3, 2, 1], a.sort { |x, y| y <=> x} )
-    assert_equal(@cls[4, 1, 2, 3], a)
-
-    a.fill(1)
-    assert_equal(@cls[1, 1, 1, 1], a.sort)
-    
-    assert_equal(@cls[], @cls[].sort)
-  end
-
-  def test_sort!
-    a = @cls[ 4, 1, 2, 3 ]
-    assert_equal(@cls[1, 2, 3, 4], a.sort!)
-    assert_equal(@cls[1, 2, 3, 4], a)
-
-    assert_equal(@cls[4, 3, 2, 1], a.sort! { |x, y| y <=> x} )
-    assert_equal(@cls[4, 3, 2, 1], a)
-
-    a.fill(1)
-    assert_equal(@cls[1, 1, 1, 1], a.sort!)
-
-    assert_equal(@cls[1], @cls[1].sort!)
-    assert_equal(@cls[], @cls[].sort!)
-  end
-
-  def test_to_a
-    a = @cls[ 1, 2, 3 ]
-    a_id = a.__id__
-    assert_equal(a, a.to_a)
-    assert_equal(a_id, a.to_a.__id__)
-  end
-
-  def test_to_ary
-    a = [ 1, 2, 3 ]
-    b = @cls[*a]
-
-    a_id = a.__id__
-    assert_equal(a, b.to_ary)
-    if (@cls == Array)
-      assert_equal(a_id, a.to_ary.__id__)
-    end
-  end
-
-  def test_to_s
-    $, = ""
-    a = @cls[]
-    assert_equal("", a.to_s)
-
-    $, = ""
-    a = @cls[1, 2]
-    assert_equal("12", a.to_s)
-
-    $, = ""
-    a = @cls[1, 2, 3]
-    assert_equal("123", a.to_s)
-
-    $, = ":"
-    a = @cls[1, 2, 3]
-    assert_equal("1:2:3", a.to_s)
-
-    $, = ""
-  end
-
-  def test_uniq
-    a = @cls[ 1, 2, 3, 2, 1, 2, 3, 4, nil ]
-    b = a.dup
-    assert_equal(@cls[1, 2, 3, 4, nil], a.uniq)
-    assert_equal(b, a)
-
-    assert_equal(@cls[1, 2, 3], @cls[1, 2, 3].uniq)
-  end
-
-  def test_uniq!
-    a = @cls[ 1, 2, 3, 2, 1, 2, 3, 4, nil ]
-    assert_equal(@cls[1, 2, 3, 4, nil], a.uniq!)
-    assert_equal(@cls[1, 2, 3, 4, nil], a)
-
-    assert_nil(@cls[1, 2, 3].uniq!)
-  end
-
-  def test_unshift
-    a = @cls[]
-    assert_equal(@cls['cat'], a.unshift('cat'))
-    assert_equal(@cls['dog', 'cat'], a.unshift('dog'))
-    assert_equal(@cls[nil, 'dog', 'cat'], a.unshift(nil))
-    assert_equal(@cls[@cls[1,2], nil, 'dog', 'cat'], a.unshift(@cls[1, 2]))
-  end
-
-  def test_OR # '|'
-    assert_equal(@cls[],  @cls[]  | @cls[])
-    assert_equal(@cls[1], @cls[1] | @cls[])
-    assert_equal(@cls[1], @cls[]  | @cls[1])
-    assert_equal(@cls[1], @cls[1] | @cls[1])
-
-    assert_equal(@cls[1,2], @cls[1] | @cls[2])
-    assert_equal(@cls[1,2], @cls[1, 1] | @cls[2, 2])
-    assert_equal(@cls[1,2], @cls[1, 2] | @cls[1, 2])
-  end
-
- def test_combination
-    assert_equal(@cls[[]], @cls[1,2,3,4].combination(0).to_a)
-    assert_equal(@cls[[1],[2],[3],[4]], @cls[1,2,3,4].combination(1).to_a)
-    assert_equal(@cls[[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]], @cls[1,2,3,4].combination(2).to_a)
-    assert_equal(@cls[[1,2,3],[1,2,4],[1,3,4],[2,3,4]], @cls[1,2,3,4].combination(3).to_a)
-    assert_equal(@cls[[1,2,3,4]], @cls[1,2,3,4].combination(4).to_a)
-    assert_equal(@cls[], @cls[1,2,3,4].combination(5).to_a)
-  end
-
-  def test_product
-    assert_equal(@cls[[1,4],[1,5],[2,4],[2,5],[3,4],[3,5]],
-                 @cls[1,2,3].product([4,5]))
-    assert_equal(@cls[[1,1],[1,2],[2,1],[2,2]], @cls[1,2].product([1,2]))
-
-    assert_equal(@cls[[1,3,5],[1,3,6],[1,4,5],[1,4,6],
-                   [2,3,5],[2,3,6],[2,4,5],[2,4,6]], 
-                 @cls[1,2].product([3,4],[5,6]))
-    assert_equal(@cls[[1],[2]], @cls[1,2].product)
-    assert_equal(@cls[], @cls[1,2].product([]))
-  end
-
-  def test_permutation
-    a = @cls[1,2,3]
-    assert_equal(@cls[[]], a.permutation(0).to_a)
-    assert_equal(@cls[[1],[2],[3]], a.permutation(1).to_a.sort)
-    assert_equal(@cls[[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]],
-                 a.permutation(2).to_a.sort)
-    assert_equal(@cls[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]],
-                 a.permutation(3).sort.to_a)
-    assert_equal(@cls[], a.permutation(4).to_a)
-    assert_equal(@cls[], a.permutation(-1).to_a)
-    assert_equal("abcde".each_char.to_a.permutation(5).sort,
-                 "edcba".each_char.to_a.permutation(5).sort)
-    assert_equal(@cls[].permutation(0).to_a, @cls[[]])
-
-  end
-
-  def test_take
-    assert_equal([1,2,3], [1,2,3,4,5,0].take(3))
-    assert_raise(ArgumentError, '[ruby-dev:34123]') { [1,2].take(-1) }
-    assert_equal([1,2], [1,2].take(1000000000), '[ruby-dev:34123]')
-  end
-
-  def test_take_while
-    assert_equal([1,2], [1,2,3,4,5,0].take_while {|i| i < 3 })
-  end
-
-  def test_drop
-    assert_equal([4,5,0], [1,2,3,4,5,0].drop(3))
-    assert_raise(ArgumentError, '[ruby-dev:34123]') { [1,2].drop(-1) }
-    assert_equal([], [1,2].drop(1000000000), '[ruby-dev:34123]')
-  end
-
-  def test_drop_while
-    assert_equal([3,4,5,0], [1,2,3,4,5,0].drop_while {|i| i < 3 })
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_assignment.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_assignment.rb
deleted file mode 100644 (file)
index 63f37a9..0000000
+++ /dev/null
@@ -1,467 +0,0 @@
-require 'test/unit'
-
-class TestAssignment < Test::Unit::TestCase
-  def test_assign
-    a=[]; a[0] ||= "bar";
-    assert_equal("bar", a[0])
-    h={}; h["foo"] ||= "bar";
-    assert_equal("bar", h["foo"])
-
-    aa = 5
-    aa ||= 25
-    assert_equal(5, aa)
-    bb ||= 25
-    assert_equal(25, bb)
-    cc &&=33
-    assert_nil(cc)
-    cc = 5
-    cc &&=44
-    assert_equal(44, cc)
-
-    a = nil; assert_nil(a)
-    a = 1; assert_equal(1, a)
-    a = []; assert_equal([], a)
-    a = [1]; assert_equal([1], a)
-    a = [nil]; assert_equal([nil], a)
-    a = [[]]; assert_equal([[]], a)
-    a = [1,2]; assert_equal([1,2], a)
-    a = [*[]]; assert_equal([], a)
-    a = [*[1]]; assert_equal([1], a)
-    a = [*[1,2]]; assert_equal([1,2], a)
-
-    a = *nil; assert_nil(a)
-    a = *1; assert_equal(1, a)
-    a = *[]; assert_nil(a)
-    a = *[1]; assert_equal(1, a)
-    a = *[nil]; assert_nil(a)
-    a = *[[]]; assert_equal([], a)
-    a = *[1,2]; assert_equal([1,2], a)
-    a = *[*[]]; assert_nil(a)
-    a = *[*[1]]; assert_equal(1, a)
-    a = *[*[1,2]]; assert_equal([1,2], a)
-
-    *a = nil; assert_equal([nil], a)
-    *a = 1; assert_equal([1], a)
-    *a = []; assert_equal([[]], a)
-    *a = [1]; assert_equal([[1]], a)
-    *a = [nil]; assert_equal([[nil]], a)
-    *a = [[]]; assert_equal([[[]]], a)
-    *a = [1,2]; assert_equal([[1,2]], a)
-    *a = [*[]]; assert_equal([[]], a)
-    *a = [*[1]]; assert_equal([[1]], a)
-    *a = [*[1,2]]; assert_equal([[1,2]], a)
-
-    *a = *nil; assert_equal([nil], a)
-    *a = *1; assert_equal([1], a)
-    *a = *[]; assert_equal([], a)
-    *a = *[1]; assert_equal([1], a)
-    *a = *[nil]; assert_equal([nil], a)
-    *a = *[[]]; assert_equal([[]], a)
-    *a = *[1,2]; assert_equal([1,2], a)
-    *a = *[*[]]; assert_equal([], a)
-    *a = *[*[1]]; assert_equal([1], a)
-    *a = *[*[1,2]]; assert_equal([1,2], a)
-
-    a,b,*c = nil; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = 1; assert_equal([1,nil,[]], [a,b,c])
-    a,b,*c = []; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = [1]; assert_equal([1,nil,[]], [a,b,c])
-    a,b,*c = [nil]; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = [[]]; assert_equal([[],nil,[]], [a,b,c])
-    a,b,*c = [1,2]; assert_equal([1,2,[]], [a,b,c])
-    a,b,*c = [*[]]; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = [*[1]]; assert_equal([1,nil,[]], [a,b,c])
-    a,b,*c = [*[1,2]]; assert_equal([1,2,[]], [a,b,c])
-
-    a,b,*c = *nil; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = *1; assert_equal([1,nil,[]], [a,b,c])
-    a,b,*c = *[]; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = *[1]; assert_equal([1,nil,[]], [a,b,c])
-    a,b,*c = *[nil]; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = *[[]]; assert_equal([[],nil,[]], [a,b,c])
-    a,b,*c = *[1,2]; assert_equal([1,2,[]], [a,b,c])
-    a,b,*c = *[*[]]; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = *[*[1]]; assert_equal([1,nil,[]], [a,b,c])
-    a,b,*c = *[*[1,2]]; assert_equal([1,2,[]], [a,b,c])
-  end
-
-  def test_yield
-    def f; yield nil; end; f {|a| assert_nil(a)}
-    def f; yield 1; end; f {|a| assert_equal(1, a)}
-    def f; yield []; end; f {|a| assert_equal([], a)}
-    def f; yield [1]; end; f {|a| assert_equal([1], a)}
-    def f; yield [nil]; end; f {|a| assert_equal([nil], a)}
-    def f; yield [[]]; end; f {|a| assert_equal([[]], a)}
-    def f; yield [*[]]; end; f {|a| assert_equal([], a)}
-    def f; yield [*[1]]; end; f {|a| assert_equal([1], a)}
-    def f; yield [*[1,2]]; end; f {|a| assert_equal([1,2], a)}
-
-    def f; yield *nil; end; f {|a| assert_nil(a)}
-    def f; yield *1; end; f {|a| assert_equal(1, a)}
-    def f; yield *[1]; end; f {|a| assert_equal(1, a)}
-    def f; yield *[nil]; end; f {|a| assert_nil(a)}
-    def f; yield *[[]]; end; f {|a| assert_equal([], a)}
-    def f; yield *[*[1]]; end; f {|a| assert_equal(1, a)}
-
-    def f; yield; end; f {|*a| assert_equal([], a)}
-    def f; yield nil; end; f {|*a| assert_equal([nil], a)}
-    def f; yield 1; end; f {|*a| assert_equal([1], a)}
-    def f; yield []; end; f {|*a| assert_equal([[]], a)}
-    def f; yield [1]; end; f {|*a| assert_equal([[1]], a)}
-    def f; yield [nil]; end; f {|*a| assert_equal([[nil]], a)}
-    def f; yield [[]]; end; f {|*a| assert_equal([[[]]], a)}
-    def f; yield [1,2]; end; f {|*a| assert_equal([[1,2]], a)}
-    def f; yield [*[]]; end; f {|*a| assert_equal([[]], a)}
-    def f; yield [*[1]]; end; f {|*a| assert_equal([[1]], a)}
-    def f; yield [*[1,2]]; end; f {|*a| assert_equal([[1,2]], a)}
-
-    def f; yield *nil; end; f {|*a| assert_equal([nil], a)}
-    def f; yield *1; end; f {|*a| assert_equal([1], a)}
-    def f; yield *[]; end; f {|*a| assert_equal([], a)}
-    def f; yield *[1]; end; f {|*a| assert_equal([1], a)}
-    def f; yield *[nil]; end; f {|*a| assert_equal([nil], a)}
-    def f; yield *[[]]; end; f {|*a| assert_equal([[]], a)}
-    def f; yield *[*[]]; end; f {|*a| assert_equal([], a)}
-    def f; yield *[*[1]]; end; f {|*a| assert_equal([1], a)}
-    def f; yield *[*[1,2]]; end; f {|*a| assert_equal([1,2], a)}
-
-    def f; yield; end; f {|a,b,*c| assert_equal([nil,nil,[]], [a,b,c])}
-    def f; yield nil; end; f {|a,b,*c| assert_equal([nil,nil,[]], [a,b,c])}
-    def f; yield 1; end; f {|a,b,*c| assert_equal([1,nil,[]], [a,b,c])}
-    def f; yield []; end; f {|a,b,*c| assert_equal([nil,nil,[]], [a,b,c])}
-    def f; yield [1]; end; f {|a,b,*c| assert_equal([1,nil,[]], [a,b,c])}
-    def f; yield [nil]; end; f {|a,b,*c| assert_equal([nil,nil,[]], [a,b,c])}
-    def f; yield [[]]; end; f {|a,b,*c| assert_equal([[],nil,[]], [a,b,c])}
-    def f; yield [*[]]; end; f {|a,b,*c| assert_equal([nil,nil,[]], [a,b,c])}
-    def f; yield [*[1]]; end; f {|a,b,*c| assert_equal([1,nil,[]], [a,b,c])}
-    def f; yield [*[1,2]]; end; f {|a,b,*c| assert_equal([1,2,[]], [a,b,c])}
-
-    def f; yield *nil; end; f {|a,b,*c| assert_equal([nil,nil,[]], [a,b,c])}
-    def f; yield *1; end; f {|a,b,*c| assert_equal([1,nil,[]], [a,b,c])}
-    def f; yield *[]; end; f {|a,b,*c| assert_equal([nil,nil,[]], [a,b,c])}
-    def f; yield *[1]; end; f {|a,b,*c| assert_equal([1,nil,[]], [a,b,c])}
-    def f; yield *[nil]; end; f {|a,b,*c| assert_equal([nil,nil,[]], [a,b,c])}
-    def f; yield *[[]]; end; f {|a,b,*c| assert_equal([[],nil,[]], [a,b,c])}
-    def f; yield *[*[]]; end; f {|a,b,*c| assert_equal([nil,nil,[]], [a,b,c])}
-    def f; yield *[*[1]]; end; f {|a,b,*c| assert_equal([1,nil,[]], [a,b,c])}
-    def f; yield *[*[1,2]]; end; f {|a,b,*c| assert_equal([1,2,[]], [a,b,c])}
-  end
-
-  def test_return
-    def r; return; end; a = r(); assert_nil(a)
-    def r; return nil; end; a = r(); assert_nil(a)
-    def r; return 1; end; a = r(); assert_equal(1, a)
-    def r; return []; end; a = r(); assert_equal([], a)
-    def r; return [1]; end; a = r(); assert_equal([1], a)
-    def r; return [nil]; end; a = r(); assert_equal([nil], a)
-    def r; return [[]]; end; a = r(); assert_equal([[]], a)
-    def r; return [*[]]; end; a = r(); assert_equal([], a)
-    def r; return [*[1]]; end; a = r(); assert_equal([1], a)
-    def r; return [*[1,2]]; end; a = r(); assert_equal([1,2], a)
-
-    def r; return *nil; end; a = r(); assert_nil(a)
-    def r; return *1; end; a = r(); assert_equal(1, a)
-    def r; return *[]; end; a = r(); assert_nil(a)
-    def r; return *[1]; end; a = r(); assert_equal(1, a)
-    def r; return *[nil]; end; a = r(); assert_nil(a)
-    def r; return *[[]]; end; a = r(); assert_equal([], a)
-    def r; return *[*[]]; end; a = r(); assert_nil(a)
-    def r; return *[*[1]]; end; a = r(); assert_equal(1, a)
-    def r; return *[*[1,2]]; end; a = r(); assert_equal([1,2], a)
-
-    def r; return *nil; end; a = *r(); assert_nil(a)
-    def r; return *1; end; a = *r(); assert_equal(1, a)
-    def r; return *[]; end; a = *r(); assert_nil(a)
-    def r; return *[1]; end; a = *r(); assert_equal(1, a)
-    def r; return *[nil]; end; a = *r(); assert_nil(a)
-    def r; return *[[]]; end; a = *r(); assert_nil(a)
-    def r; return *[*[]]; end; a = *r(); assert_nil(a)
-    def r; return *[*[1]]; end; a = *r(); assert_equal(1, a)
-    def r; return *[*[1,2]]; end; a = *r(); assert_equal([1,2], a)
-
-    def r; return; end; *a = r(); assert_equal([nil], a)
-    def r; return nil; end; *a = r(); assert_equal([nil], a)
-    def r; return 1; end; *a = r(); assert_equal([1], a)
-    def r; return []; end; *a = r(); assert_equal([[]], a)
-    def r; return [1]; end; *a = r(); assert_equal([[1]], a)
-    def r; return [nil]; end; *a = r(); assert_equal([[nil]], a)
-    def r; return [[]]; end; *a = r(); assert_equal([[[]]], a)
-    def r; return [1,2]; end; *a = r(); assert_equal([[1,2]], a)
-    def r; return [*[]]; end; *a = r(); assert_equal([[]], a)
-    def r; return [*[1]]; end; *a = r(); assert_equal([[1]], a)
-    def r; return [*[1,2]]; end; *a = r(); assert_equal([[1,2]], a)
-
-    def r; return *nil; end; *a = r(); assert_equal([nil], a)
-    def r; return *1; end; *a = r(); assert_equal([1], a)
-    def r; return *[]; end; *a = r(); assert_equal([nil], a)
-    def r; return *[1]; end; *a = r(); assert_equal([1], a)
-    def r; return *[nil]; end; *a = r(); assert_equal([nil], a)
-    def r; return *[[]]; end; *a = r(); assert_equal([[]], a)
-    def r; return *[1,2]; end; *a = r(); assert_equal([[1,2]], a)
-    def r; return *[*[]]; end; *a = r(); assert_equal([nil], a)
-    def r; return *[*[1]]; end; *a = r(); assert_equal([1], a)
-    def r; return *[*[1,2]]; end; *a = r(); assert_equal([[1,2]], a)
-
-    def r; return *nil; end; *a = *r(); assert_equal([nil], a)
-    def r; return *1; end; *a = *r(); assert_equal([1], a)
-    def r; return *[]; end; *a = *r(); assert_equal([nil], a)
-    def r; return *[1]; end; *a = *r(); assert_equal([1], a)
-    def r; return *[nil]; end; *a = *r(); assert_equal([nil], a)
-    def r; return *[[]]; end; *a = *r(); assert_equal([], a)
-    def r; return *[1,2]; end; *a = *r(); assert_equal([1,2], a)
-    def r; return *[*[]]; end; *a = *r(); assert_equal([nil], a)
-    def r; return *[*[1]]; end; *a = *r(); assert_equal([1], a)
-    def r; return *[*[1,2]]; end; *a = *r(); assert_equal([1,2], a)
-
-    def r; return; end; a,b,*c = r(); assert_equal([nil,nil,[]], [a,b,c])
-    def r; return nil; end; a,b,*c = r(); assert_equal([nil,nil,[]], [a,b,c])
-    def r; return 1; end; a,b,*c = r(); assert_equal([1,nil,[]], [a,b,c])
-    def r; return []; end; a,b,*c = r(); assert_equal([nil,nil,[]], [a,b,c])
-    def r; return [1]; end; a,b,*c = r(); assert_equal([1,nil,[]], [a,b,c])
-    def r; return [nil]; end; a,b,*c = r(); assert_equal([nil,nil,[]], [a,b,c])
-    def r; return [[]]; end; a,b,*c = r(); assert_equal([[],nil,[]], [a,b,c])
-    def r; return [1,2]; end; a,b,*c = r(); assert_equal([1,2,[]], [a,b,c])
-    def r; return [*[]]; end; a,b,*c = r(); assert_equal([nil,nil,[]], [a,b,c])
-    def r; return [*[1]]; end; a,b,*c = r(); assert_equal([1,nil,[]], [a,b,c])
-    def r; return [*[1,2]]; end; a,b,*c = r(); assert_equal([1,2,[]], [a,b,c])
-
-    def r; return *nil; end; a,b,*c = r(); assert_equal([nil,nil,[]], [a,b,c])
-    def r; return *1; end; a,b,*c = r(); assert_equal([1,nil,[]], [a,b,c])
-    def r; return *[]; end; a,b,*c = r(); assert_equal([nil,nil,[]], [a,b,c])
-    def r; return *[1]; end; a,b,*c = r(); assert_equal([1,nil,[]], [a,b,c])
-    def r; return *[nil]; end; a,b,*c = r(); assert_equal([nil,nil,[]], [a,b,c])
-    def r; return *[[]]; end; a,b,*c = r(); assert_equal([nil,nil,[]], [a,b,c])
-    def r; return *[1,2]; end; a,b,*c = r(); assert_equal([1,2,[]], [a,b,c])
-    def r; return *[*[]]; end; a,b,*c = r(); assert_equal([nil,nil,[]], [a,b,c])
-    def r; return *[*[1]]; end; a,b,*c = r(); assert_equal([1,nil,[]], [a,b,c])
-    def r; return *[*[1,2]]; end; a,b,*c = r(); assert_equal([1,2,[]], [a,b,c])
-  end
-
-  def test_lambda
-    f = lambda {|r,| assert_equal([], r)}
-    f.call([], *[])
-
-    f = lambda {|r,*l| assert_equal([], r); assert_equal([1], l)}
-    f.call([], *[1])
-
-    f = lambda{|x| x}
-    assert_equal(42, f.call(42))
-    assert_equal([42], f.call([42]))
-    assert_equal([[42]], f.call([[42]]))
-    assert_equal([42,55], f.call([42,55]))
-
-    f = lambda{|x,| x}
-    assert_equal(42, f.call(42))
-    assert_equal([42], f.call([42]))
-    assert_equal([[42]], f.call([[42]]))
-    assert_equal([42,55], f.call([42,55]))
-
-    f = lambda{|*x| x}
-    assert_equal([42], f.call(42))
-    assert_equal([[42]], f.call([42]))
-    assert_equal([[[42]]], f.call([[42]]))
-    assert_equal([[42,55]], f.call([42,55]))
-    assert_equal([42,55], f.call(42,55))
-  end
-
-  def test_multi
-    a,=*[1]
-    assert_equal(1, a)
-    a,=*[[1]]
-    assert_equal([1], a)
-    a,=*[[[1]]]
-    assert_equal([[1]], a)
-
-    x, (y, z) = 1, 2, 3
-    assert_equal([1,2,nil], [x,y,z])
-    x, (y, z) = 1, [2,3]
-    assert_equal([1,2,3], [x,y,z])
-    x, (y, z) = 1, [2]
-    assert_equal([1,2,nil], [x,y,z])
-  end
-
-  def test_break
-    a = loop do break; end; assert_nil(a)
-    a = loop do break nil; end; assert_nil(a)
-    a = loop do break 1; end; assert_equal(1, a)
-    a = loop do break []; end; assert_equal([], a)
-    a = loop do break [1]; end; assert_equal([1], a)
-    a = loop do break [nil]; end; assert_equal([nil], a)
-    a = loop do break [[]]; end; assert_equal([[]], a)
-    a = loop do break [*[]]; end; assert_equal([], a)
-    a = loop do break [*[1]]; end; assert_equal([1], a)
-    a = loop do break [*[1,2]]; end; assert_equal([1,2], a)
-
-    a = loop do break *nil; end; assert_nil(a)
-    a = loop do break *1; end; assert_equal(1, a)
-    a = loop do break *[]; end; assert_nil(a)
-    a = loop do break *[1]; end; assert_equal(1, a)
-    a = loop do break *[nil]; end; assert_nil(a)
-    a = loop do break *[[]]; end; assert_equal([], a)
-    a = loop do break *[*[]]; end; assert_nil(a)
-    a = loop do break *[*[1]]; end; assert_equal(1, a)
-    a = loop do break *[*[1,2]]; end; assert_equal([1,2], a)
-
-    *a = loop do break; end; assert_equal([nil], a)
-    *a = loop do break nil; end; assert_equal([nil], a)
-    *a = loop do break 1; end; assert_equal([1], a)
-    *a = loop do break []; end; assert_equal([[]], a)
-    *a = loop do break [1]; end; assert_equal([[1]], a)
-    *a = loop do break [nil]; end; assert_equal([[nil]], a)
-    *a = loop do break [[]]; end; assert_equal([[[]]], a)
-    *a = loop do break [1,2]; end; assert_equal([[1,2]], a)
-    *a = loop do break [*[]]; end; assert_equal([[]], a)
-    *a = loop do break [*[1]]; end; assert_equal([[1]], a)
-    *a = loop do break [*[1,2]]; end; assert_equal([[1,2]], a)
-
-    *a = loop do break *nil; end; assert_equal([nil], a)
-    *a = loop do break *1; end; assert_equal([1], a)
-    *a = loop do break *[]; end; assert_equal([nil], a)
-    *a = loop do break *[1]; end; assert_equal([1], a)
-    *a = loop do break *[nil]; end; assert_equal([nil], a)
-    *a = loop do break *[[]]; end; assert_equal([[]], a)
-    *a = loop do break *[1,2]; end; assert_equal([[1,2]], a)
-    *a = loop do break *[*[]]; end; assert_equal([nil], a)
-    *a = loop do break *[*[1]]; end; assert_equal([1], a)
-    *a = loop do break *[*[1,2]]; end; assert_equal([[1,2]], a)
-
-    *a = *loop do break *nil; end; assert_equal([nil], a)
-    *a = *loop do break *1; end; assert_equal([1], a)
-    *a = *loop do break *[]; end; assert_equal([nil], a)
-    *a = *loop do break *[1]; end; assert_equal([1], a)
-    *a = *loop do break *[nil]; end; assert_equal([nil], a)
-    *a = *loop do break *[[]]; end; assert_equal([], a)
-    *a = *loop do break *[1,2]; end; assert_equal([1,2], a)
-    *a = *loop do break *[*[]]; end; assert_equal([nil], a)
-    *a = *loop do break *[*[1]]; end; assert_equal([1], a)
-    *a = *loop do break *[*[1,2]]; end; assert_equal([1,2], a)
-
-    a,b,*c = loop do break; end; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = loop do break nil; end; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = loop do break 1; end; assert_equal([1,nil,[]], [a,b,c])
-    a,b,*c = loop do break []; end; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = loop do break [1]; end; assert_equal([1,nil,[]], [a,b,c])
-    a,b,*c = loop do break [nil]; end; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = loop do break [[]]; end; assert_equal([[],nil,[]], [a,b,c])
-    a,b,*c = loop do break [1,2]; end; assert_equal([1,2,[]], [a,b,c])
-    a,b,*c = loop do break [*[]]; end; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = loop do break [*[1]]; end; assert_equal([1,nil,[]], [a,b,c])
-    a,b,*c = loop do break [*[1,2]]; end; assert_equal([1,2,[]], [a,b,c])
-
-    a,b,*c = loop do break *nil; end; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = loop do break *1; end; assert_equal([1,nil,[]], [a,b,c])
-    a,b,*c = loop do break *[]; end; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = loop do break *[1]; end; assert_equal([1,nil,[]], [a,b,c])
-    a,b,*c = loop do break *[nil]; end; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = loop do break *[[]]; end; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = loop do break *[1,2]; end; assert_equal([1,2,[]], [a,b,c])
-    a,b,*c = loop do break *[*[]]; end; assert_equal([nil,nil,[]], [a,b,c])
-    a,b,*c = loop do break *[*[1]]; end; assert_equal([1,nil,[]], [a,b,c])
-    a,b,*c = loop do break *[*[1,2]]; end; assert_equal([1,2,[]], [a,b,c])
-  end
-
-  def test_next
-    def r(val); a = yield(); assert_equal(val, a); end
-    r(nil){next}
-    r(nil){next nil}
-    r(1){next 1}
-    r([]){next []}
-    r([1]){next [1]}
-    r([nil]){next [nil]}
-    r([[]]){next [[]]}
-    r([]){next [*[]]}
-    r([1]){next [*[1]]}
-    r([1,2]){next [*[1,2]]}
-
-    r(nil){next *nil}
-    r(1){next *1}
-    r(nil){next *[]}
-    r(1){next *[1]}
-    r(nil){next *[nil]}
-    r([]){next *[[]]}
-    r(nil){next *[*[]]}
-    r(1){next *[*[1]]}
-    r([1,2]){next *[*[1,2]]}
-
-    def r(val); *a = yield(); assert_equal(val, a); end
-    r([nil]){next}
-    r([nil]){next nil}
-    r([1]){next 1}
-    r([[]]){next []}
-    r([[1]]){next [1]}
-    r([[nil]]){next [nil]}
-    r([[[]]]){next [[]]}
-    r([[1,2]]){next [1,2]}
-    r([[]]){next [*[]]}
-    r([[1]]){next [*[1]]}
-    r([[1,2]]){next [*[1,2]]}
-
-    def r(val); *a = *yield(); assert_equal(val, a); end
-    r([nil]){next *nil}
-    r([1]){next *1}
-    r([nil]){next *[]}
-    r([1]){next *[1]}
-    r([nil]){next *[nil]}
-    r([]){next *[[]]}
-    r([1,2]){next *[1,2]}
-    r([nil]){next *[*[]]}
-    r([1]){next *[*[1]]}
-    r([1,2]){next *[*[1,2]]}
-
-    def r(val); a,b,*c = yield(); assert_equal(val, [a,b,c]); end
-    r([nil,nil,[]]){next}
-    r([nil,nil,[]]){next nil}
-    r([1,nil,[]]){next 1}
-    r([nil,nil,[]]){next []}
-    r([1,nil,[]]){next [1]}
-    r([nil,nil,[]]){next [nil]}
-    r([[],nil,[]]){next [[]]}
-    r([1,2,[]]){next [1,2]}
-    r([nil,nil,[]]){next [*[]]}
-    r([1,nil,[]]){next [*[1]]}
-    r([1,2,[]]){next [*[1,2]]}
-
-    def r(val); a,b,*c = *yield(); assert_equal(val, [a,b,c]); end
-    r([nil,nil,[]]){next *nil}
-    r([1,nil,[]]){next *1}
-    r([nil,nil,[]]){next *[]}
-    r([1,nil,[]]){next *[1]}
-    r([nil,nil,[]]){next *[nil]}
-    r([nil,nil,[]]){next *[[]]}
-    r([1,2,[]]){next *[1,2]}
-    r([nil,nil,[]]){next *[*[]]}
-    r([1,nil,[]]){next *[*[1]]}
-    r([1,2,[]]){next *[*[1,2]]}
-  end
-
-  def test_assign2
-    a = nil
-    assert(defined?(a))
-    assert_nil(a)
-
-    # multiple asignment
-    a, b = 1, 2
-    assert(a == 1 && b == 2)
-
-    a, b = b, a
-    assert(a == 2 && b == 1)
-
-    a, = 1,2
-    assert_equal(1, a)
-
-    a, *b = 1, 2, 3
-    assert(a == 1 && b == [2, 3])
-
-    a, (b, c), d = 1, [2, 3], 4
-    assert(a == 1 && b == 2 && c == 3 && d == 4)
-
-    *a = 1, 2, 3
-    assert_equal([1, 2, 3], a)
-
-    *a = 4
-    assert_equal([4], a)
-
-    *a = nil
-    assert_equal([nil], a)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_beginendblock.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_beginendblock.rb
deleted file mode 100644 (file)
index b5d898d..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-require 'test/unit'
-require 'tempfile'
-$:.replace([File.dirname(File.expand_path(__FILE__))] | $:)
-require 'envutil'
-
-class TestBeginEndBlock < Test::Unit::TestCase
-  DIR = File.dirname(File.expand_path(__FILE__))
-
-  def q(content)
-    "\"#{content}\""
-  end
-
-  def test_beginendblock
-    ruby = EnvUtil.rubybin
-    target = File.join(DIR, 'beginmainend.rb')
-    result = IO.popen("#{q(ruby)} #{q(target)}"){|io|io.read}
-    assert_equal(%w(b1 b2-1 b2 main b3-1 b3 b4 e1 e4 e3 e2 e4-2 e4-1 e1-1 e4-1-1), result.split)
-  end
-
-  def test_begininmethod
-    assert_raises(SyntaxError) do
-      eval("def foo; BEGIN {}; end")
-    end
-
-    assert_raises(SyntaxError) do
-      eval('eval("def foo; BEGIN {}; end")')
-    end
-  end
-
-  def test_endblockwarn
-    ruby = EnvUtil.rubybin
-    # Use Tempfile to create temporary file path.
-    launcher = Tempfile.new(self.class.name)
-    errout = Tempfile.new(self.class.name)
-
-    launcher << <<EOF
-errout = ARGV.shift
-STDERR.reopen(File.open(errout, "w"))
-STDERR.sync = true
-Dir.chdir(#{q(DIR)})
-cmd = "\\"#{ruby}\\" \\"endblockwarn.rb\\""
-system(cmd)
-EOF
-    launcher.close
-    launcherpath = launcher.path
-    errout.close
-    erroutpath = errout.path
-    system("#{q(ruby)} #{q(launcherpath)} #{q(erroutpath)}")
-    expected = <<EOW
-endblockwarn.rb:2: warning: END in method; use at_exit
-(eval):2: warning: END in method; use at_exit
-EOW
-    assert_equal(expected, File.read(erroutpath))
-    # expecting Tempfile to unlink launcher and errout file.
-  end
-
-  def test_raise_in_at_exit
-    # [ruby-core:09675]
-    ruby = EnvUtil.rubybin
-    out = IO.popen("#{q(ruby)} -e 'STDERR.reopen(STDOUT);" \
-                  "at_exit{raise %[SomethingBad]};" \
-                  "raise %[SomethingElse]'") {|f|
-      f.read
-    }
-    assert_match /SomethingBad/, out
-    assert_match /SomethingElse/, out
-  end
-
-  def test_should_propagate_exit_code
-    ruby = EnvUtil.rubybin
-    assert_equal false, system(ruby, '-e', 'at_exit{exit 2}')
-    assert_equal 2, $?.exitstatus
-    assert_nil $?.termsig
-  end
-
-  def test_should_propagate_signaled
-    ruby = EnvUtil.rubybin
-    out = IO.popen("#{ruby} #{File.dirname(__FILE__)}/suicide.rb"){|f|
-      f.read
-    }
-    assert_match /Interrupt$/, out
-    Process.kill(0, 0) rescue return # check if signal works
-    assert_nil $?.exitstatus
-    assert_equal Signal.list["INT"], $?.termsig
-  end
-
-  def test_begin_and_eval
-    $test_begin_and_eval = :ok
-    begin
-      eval("BEGIN{$test_begin_and_eval = :ng}\n_/a:a")
-    rescue SyntaxError
-      x1 = x2 = $test_begin_and_eval
-      eval("x2 = $test_begin_and_eval")
-    end
-    assert_equal(:ok, x1)
-    assert_equal(:ok, x2)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_bignum.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_bignum.rb
deleted file mode 100644 (file)
index 99c5952..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-require 'test/unit'
-
-class TestBignum < Test::Unit::TestCase
-  def fact(n)
-    return 1 if n == 0
-    f = 1
-    while n>0
-      f *= n
-      n -= 1
-    end
-    return f
-  end
-
-  def test_bignum
-    $x = fact(40)
-    assert_equal($x, $x)
-    assert_equal($x, fact(40))
-    assert($x < $x+2)
-    assert($x > $x-2)
-    assert_equal(815915283247897734345611269596115894272000000000, $x)
-    assert_not_equal(815915283247897734345611269596115894272000000001, $x)
-    assert_equal(815915283247897734345611269596115894272000000001, $x+1)
-    assert_equal(335367096786357081410764800000, $x/fact(20))
-    $x = -$x
-    assert_equal(-815915283247897734345611269596115894272000000000, $x)
-    assert_equal(2-(2**32), -(2**32-2))
-    assert_equal(2**32 - 5, (2**32-3)-2)
-
-    for i in 1000..1014
-      assert_equal(2 ** i, 1 << i)
-    end
-
-    n1 = 1 << 1000
-    for i in 1000..1014
-      assert_equal(n1, 1 << i)
-      n1 *= 2
-    end
-
-    n2=n1
-    for i in 1..10
-      n1 = n1 / 2
-      n2 = n2 >> 1
-      assert_equal(n1, n2)
-    end
-
-    for i in 4000..4096
-      n1 = 1 << i;
-      assert_equal(n1-1, (n1**2-1) / (n1+1))
-    end
-  end
-
-  def test_calc
-    b = 10**80
-    a = b * 9 + 7
-    assert_equal(7, a.modulo(b))
-    assert_equal(-b + 7, a.modulo(-b))
-    assert_equal(b + -7, (-a).modulo(b))
-    assert_equal(-7, (-a).modulo(-b))
-    assert_equal(7, a.remainder(b))
-    assert_equal(7, a.remainder(-b))
-    assert_equal(-7, (-a).remainder(b))
-    assert_equal(-7, (-a).remainder(-b))
-
-    assert_equal(10000000000000000000100000000000000000000, 10**40+10**20)
-    assert_equal(100000000000000000000, 10**40/10**20)
-
-    a = 677330545177305025495135714080
-    b = 14269972710765292560
-    assert_equal(0, a % b)
-    assert_equal(0, -a % b)
-  end
-
-  def shift_test(a)
-    b = a / (2 ** 32)
-    c = a >> 32
-    assert_equal(b, c)
-
-    b = a * (2 ** 32)
-    c = a << 32
-    assert_equal(b, c)
-  end
-
-  def test_shift
-    shift_test(-4518325415524767873)
-    shift_test(-0xfffffffffffffffff)
-  end
-
-  def test_to_s  # [ruby-core:10686]
-    assert_equal("fvvvvvvvvvvvv" ,18446744073709551615.to_s(32))
-    assert_equal("g000000000000" ,18446744073709551616.to_s(32))
-    assert_equal("3w5e11264sgsf" ,18446744073709551615.to_s(36))
-    assert_equal("3w5e11264sgsg" ,18446744073709551616.to_s(36))
-    assert_equal("nd075ib45k86f" ,18446744073709551615.to_s(31))
-    assert_equal("nd075ib45k86g" ,18446744073709551616.to_s(31))
-    assert_equal("1777777777777777777777" ,18446744073709551615.to_s(8))
-    assert_equal("-1777777777777777777777" ,-18446744073709551615.to_s(8))
-  end
-
-  def test_too_big_to_s
-    if (big = 2**31-1).is_a?(Fixnum)
-      return
-    end
-    e = assert_raise(RangeError) {(1 << big).to_s}
-    assert_match(/too big to convert/, e.message)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_call.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_call.rb
deleted file mode 100644 (file)
index da7ee93..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'test/unit'
-
-class TestCall < Test::Unit::TestCase
-  def aaa(a, b=100, *rest)
-    res = [a, b]
-    res += rest if rest
-    return res
-  end
-
-  def test_call
-    assert_raises(ArgumentError) {aaa()}
-    assert_raises(ArgumentError) {aaa}
-
-    assert_equal([1, 100], aaa(1))
-    assert_equal([1, 2], aaa(1, 2))
-    assert_equal([1, 2, 3, 4], aaa(1, 2, 3, 4))
-    assert_equal([1, 2, 3, 4], aaa(1, *[2, 3, 4]))
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_case.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_case.rb
deleted file mode 100644 (file)
index 41a2203..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-require 'test/unit'
-
-class TestCase < Test::Unit::TestCase
-  def test_case
-    case 5
-    when 1, 2, 3, 4, 6, 7, 8
-      assert(false)
-    when 5
-      assert(true)
-    end
-
-    case 5
-    when 5
-      assert(true)
-    when 1..10
-      assert(false)
-    end
-
-    case 5
-    when 1..10
-      assert(true)
-    else
-      assert(false)
-    end
-
-    case 5
-    when 5
-      assert(true)
-    else
-      assert(false)
-    end
-
-    case "foobar"
-    when /^f.*r$/
-      assert(true)
-    else
-      assert(false)
-    end
-
-    case
-    when true
-      assert(true)
-    when false, nil
-      assert(false)
-    else
-      assert(false)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_clone.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_clone.rb
deleted file mode 100644 (file)
index 43c0cff..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-require 'test/unit'
-
-class TestClone < Test::Unit::TestCase
-  module M001; end
-  module M002; end
-  module M003; include M002; end
-  module M002; include M001; end
-  module M003; include M002; end
-
-  def test_clone
-    foo = Object.new
-    def foo.test
-      "test"
-    end
-    bar = foo.clone
-    def bar.test2
-      "test2"
-    end
-
-    assert_equal("test2", bar.test2)
-    assert_equal("test", bar.test)
-    assert_equal("test", foo.test)
-
-    assert_raises(NoMethodError) {foo.test2}
-
-    assert_equal([M003, M002, M001], M003.ancestors)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_condition.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_condition.rb
deleted file mode 100644 (file)
index ba2e068..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'test/unit'
-
-class TestCondition < Test::Unit::TestCase
-
-  # [should] first test to see if we can run the tests.
-
-  def test_condition
-    $x = '0';
-
-    $x == $x && assert(true)
-    $x != $x && assert(false)
-    $x == $x || assert(false)
-    $x != $x || assert(true)
-
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_const.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_const.rb
deleted file mode 100644 (file)
index 8d01379..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'test/unit'
-
-class TestConst < Test::Unit::TestCase
-  TEST1 = 1
-  TEST2 = 2
-
-  module Const
-    TEST3 = 3
-    TEST4 = 4
-  end
-
-  module Const2
-    TEST3 = 6
-    TEST4 = 8
-  end
-
-  def test_const
-    self.class.class_eval {
-      include Const
-    }
-    assert_equal([1,2,3,4], [TEST1,TEST2,TEST3,TEST4])
-
-    self.class.class_eval {
-      include Const2
-    }
-    STDERR.print "intentionally redefines TEST3, TEST4\n" if $VERBOSE
-    assert_equal([1,2,6,8], [TEST1,TEST2,TEST3,TEST4])
-
-    assert_equal(-1, (String <=> Object))
-    assert_equal(1, (Object <=> String))
-    assert_equal(nil, (Array <=> String))
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_defined.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_defined.rb
deleted file mode 100644 (file)
index 8a7fcf4..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-require 'test/unit'
-
-class TestDefined < Test::Unit::TestCase
-  class Foo
-    def foo
-      p :foo
-    end
-    protected :foo
-    def bar(f)
-      yield(defined?(self.foo))
-      yield(defined?(f.foo))
-    end
-  end
-
-  def defined_test
-    return !defined?(yield)
-  end
-
-  def test_defined
-    $x = nil
-
-    assert(defined?($x))               # global variable
-    assert_equal('global-variable', defined?($x))# returns description
-
-    assert_nil(defined?(foo))          # undefined
-    foo=5
-    assert(defined?(foo))              # local variable
-
-    assert(defined?(Array))            # constant
-    assert(defined?(::Array))          # toplevel constant
-    assert(defined?(File::Constants))  # nested constant
-    assert(defined?(Object.new))       # method
-    assert(!defined?(Object.print))    # private method
-    assert(defined?(1 == 2))           # operator expression
-
-    f = Foo.new
-    assert_nil(defined?(f.foo))
-    f.bar(f) { |v| assert(v) }
-
-    assert(defined_test)               # not iterator
-    assert(!defined_test{})    # called as iterator
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_dir.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_dir.rb
deleted file mode 100644 (file)
index 09685be..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-require 'test/unit'
-
-require 'tmpdir'
-require 'fileutils'
-
-class TestDir < Test::Unit::TestCase
-
-  ROOT = File.join(Dir.tmpdir, "__test_dir__#{$$}")
-
-  def setup
-    Dir.mkdir(ROOT)
-    for i in ?a..?z
-      if i % 2 == 0
-        FileUtils.touch(File.join(ROOT, i.chr))
-      else
-        FileUtils.mkdir(File.join(ROOT, i.chr))
-      end
-    end
-  end
-
-  def teardown
-    FileUtils.rm_rf ROOT if File.directory?(ROOT)
-  end
-
-  def test_seek
-    dir = Dir.open(ROOT)
-    begin
-      cache = []
-      loop do
-        pos = dir.tell
-        break unless name = dir.read
-        cache << [pos, name]
-      end
-      for x in cache.sort_by {|x| x[0] % 3 } # shuffle
-        dir.seek(x[0])
-        assert_equal(x[1], dir.read)
-      end
-    ensure
-      dir.close
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_enum.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_enum.rb
deleted file mode 100644 (file)
index e541d56..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-require 'test/unit'
-
-class TestEnumerable < Test::Unit::TestCase
-  def setup
-    @obj = Object.new
-    class << @obj
-      include Enumerable
-      def each
-        yield 1
-        yield 2
-        yield 3
-        yield 1
-        yield 2
-      end
-    end
-    @verbose = $VERBOSE
-    $VERBOSE = nil
-  end
-
-  def teardown
-    $VERBOSE = @verbose
-  end
-
-  def test_grep
-    assert_equal([1, 2, 1, 2], @obj.grep(1..2))
-    a = []
-    @obj.grep(2) {|x| a << x }
-    assert_equal([2, 2], a)
-  end
-
-  def test_count
-    assert_equal(5, @obj.count)
-    assert_equal(2, @obj.count(1))
-    assert_equal(3, @obj.count {|x| x % 2 == 1 })
-    assert_equal(2, @obj.count(1) {|x| x % 2 == 1 })
-    assert_raise(ArgumentError) { @obj.count(0, 1) }
-  end
-
-  def test_find
-    assert_equal(2, @obj.find {|x| x % 2 == 0 })
-    assert_equal(nil, @obj.find {|x| false })
-    assert_equal(:foo, @obj.find(proc { :foo }) {|x| false })
-  end
-
-  def test_find_index
-    assert_equal(1, @obj.find_index(2))
-    assert_equal(1, @obj.find_index {|x| x % 2 == 0 })
-    assert_equal(nil, @obj.find_index {|x| false })
-    assert_raise(ArgumentError) { @obj.find_index(0, 1) }
-  end
-
-  def test_find_all
-    assert_equal([1, 3, 1], @obj.find_all {|x| x % 2 == 1 })
-  end
-
-  def test_reject
-    assert_equal([2, 3, 2], @obj.reject {|x| x < 2 })
-  end
-
-  def test_to_a
-    assert_equal([1, 2, 3, 1, 2], @obj.to_a)
-  end
-
-  def test_inject
-    assert_equal(12, @obj.inject {|z, x| z * x })
-    assert_equal(48, @obj.inject {|z, x| z * 2 + x })
-    assert_equal(12, @obj.inject(:*))
-    assert_equal(24, @obj.inject(2) {|z, x| z * x })
-    assert_equal(24, @obj.inject(2, :*) {|z, x| z * x })
-  end
-
-  def test_partition
-    assert_equal([[1, 3, 1], [2, 2]], @obj.partition {|x| x % 2 == 1 })
-  end
-
-  def test_group_by
-    h = { 1 => [1, 1], 2 => [2, 2], 3 => [3] }
-    assert_equal(h, @obj.group_by {|x| x })
-  end
-
-  def test_first
-    assert_equal(1, @obj.first)
-    assert_equal([1, 2, 3], @obj.first(3))
-  end
-
-  def test_sort
-    assert_equal([1, 1, 2, 2, 3], @obj.sort)
-  end
-
-  def test_sort_by
-    assert_equal([3, 2, 2, 1, 1], @obj.sort_by {|x| -x })
-  end
-
-  def test_all
-    assert_equal(true, @obj.all? {|x| x <= 3 })
-    assert_equal(false, @obj.all? {|x| x < 3 })
-    assert_equal(true, @obj.all?)
-    assert_equal(false, [true, true, false].all?)
-  end
-
-  def test_any
-    assert_equal(true, @obj.any? {|x| x >= 3 })
-    assert_equal(false, @obj.any? {|x| x > 3 })
-    assert_equal(true, @obj.any?)
-    assert_equal(false, [false, false, false].any?)
-  end
-
-  def test_one
-    assert(@obj.one? {|x| x == 3 })
-    assert(!(@obj.one? {|x| x == 1 }))
-    assert(!(@obj.one? {|x| x == 4 }))
-    assert(%w{ant bear cat}.one? {|word| word.length == 4})
-    assert(!(%w{ant bear cat}.one? {|word| word.length > 4}))
-    assert(!(%w{ant bear cat}.one? {|word| word.length < 4}))
-    assert(!([ nil, true, 99 ].one?))
-    assert([ nil, true, false ].one?)
-  end
-
-  def test_none
-    assert(@obj.none? {|x| x == 4 })
-    assert(!(@obj.none? {|x| x == 1 }))
-    assert(!(@obj.none? {|x| x == 3 }))
-    assert(%w{ant bear cat}.none? {|word| word.length == 5})
-    assert(!(%w{ant bear cat}.none? {|word| word.length >= 4}))
-    assert([].none?)
-    assert([nil].none?)
-    assert([nil,false].none?)
-  end
-
-  def test_min
-    assert_equal(1, @obj.min)
-    assert_equal(3, @obj.min {|a,b| b <=> a })
-    a = %w(albatross dog horse)
-    assert_equal("albatross", a.min)
-    assert_equal("dog", a.min {|a,b| a.length <=> b.length })
-    assert_equal(1, [3,2,1].min)
-  end
-
-  def test_max
-    assert_equal(3, @obj.max)
-    assert_equal(1, @obj.max {|a,b| b <=> a })
-    a = %w(albatross dog horse)
-    assert_equal("horse", a.max)
-    assert_equal("albatross", a.max {|a,b| a.length <=> b.length })
-    assert_equal(1, [3,2,1].max{|a,b| b <=> a })
-  end
-
-  def test_minmax
-    assert_equal([1, 3], @obj.minmax)
-    assert_equal([3, 1], @obj.minmax {|a,b| b <=> a })
-    a = %w(albatross dog horse)
-    assert_equal(["albatross", "horse"], a.minmax)
-    assert_equal(["dog", "albatross"], a.minmax {|a,b| a.length <=> b.length })
-    assert_equal([1, 3], [2,3,1].minmax)
-    assert_equal([3, 1], [2,3,1].minmax {|a,b| b <=> a })
-  end
-
-  def test_min_by
-    assert_equal(3, @obj.min_by {|x| -x })
-    a = %w(albatross dog horse)
-    assert_equal("dog", a.min_by {|x| x.length })
-    assert_equal(3, [2,3,1].min_by {|x| -x })
-  end
-
-  def test_max_by
-    assert_equal(1, @obj.max_by {|x| -x })
-    a = %w(albatross dog horse)
-    assert_equal("albatross", a.max_by {|x| x.length })
-    assert_equal(1, [2,3,1].max_by {|x| -x })
-  end
-
-  def test_minmax_by
-    assert_equal([3, 1], @obj.minmax_by {|x| -x })
-    a = %w(albatross dog horse)
-    assert_equal(["dog", "albatross"], a.minmax_by {|x| x.length })
-    assert_equal([3, 1], [2,3,1].minmax_by {|x| -x })
-  end
-
-  def test_member
-    assert(@obj.member?(1))
-    assert(!(@obj.member?(4)))
-    assert([1,2,3].member?(1))
-    assert(!([1,2,3].member?(4)))
-  end
-
-  def test_each_with_index
-    a = []
-    @obj.each_with_index {|x, i| a << [x, i] }
-    assert_equal([[1,0],[2,1],[3,2],[1,3],[2,4]], a)
-
-    hash = Hash.new
-    %w(cat dog wombat).each_with_index do |item, index|
-      hash[item] = index
-    end
-    assert_equal({"cat"=>0, "wombat"=>2, "dog"=>1}, hash)
-  end
-
-  def test_zip
-    assert_equal([[1,1],[2,2],[3,3],[1,1],[2,2]], @obj.zip(@obj))
-    a = []
-    @obj.zip([:a, :b, :c]) {|x,y| a << [x, y] }
-    assert_equal([[1,:a],[2,:b],[3,:c],[1,nil],[2,nil]], a)
-  end
-
-  def test_take
-    assert_equal([1,2,3], @obj.take(3))
-  end
-
-  def test_take_while
-    assert_equal([1,2], @obj.take_while {|x| x <= 2})
-  end
-
-  def test_drop
-    assert_equal([3,1,2], @obj.drop(2))
-  end
-
-  def test_drop_while
-    assert_equal([3,1,2], @obj.drop_while {|x| x <= 2})
-  end
-
-  def test_cycle
-    assert_equal([1,2,3,1,2,1,2,3,1,2], @obj.cycle.take(10))
-  end
-
-  def test_callcc
-    assert_raise(RuntimeError) do
-      c = nil
-      @obj.sort_by {|x| callcc {|c2| c ||= c2 }; x }
-      c.call
-    end
-
-    assert_raise(RuntimeError) do
-      c = nil
-      o = Object.new
-      class << o; self; end.class_eval do
-        define_method(:<=>) do |x|
-          callcc {|c2| c ||= c2 }
-          0
-        end
-      end
-      [o, o].sort_by {|x| x }
-      c.call
-    end
-
-    assert_raise(RuntimeError) do
-      c = nil
-      o = Object.new
-      class << o; self; end.class_eval do
-        define_method(:<=>) do |x|
-          callcc {|c2| c ||= c2 }
-          0
-        end
-      end
-      [o, o, o].sort_by {|x| x }
-      c.call
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_enumerator.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_enumerator.rb
deleted file mode 100644 (file)
index 2625791..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-require 'test/unit'
-
-class TestEnumerator < Test::Unit::TestCase
-  def setup
-    @obj = Object.new
-    class << @obj
-      include Enumerable
-      def foo(*a)
-        a.each {|x| yield x }
-      end
-    end
-  end
-
-  def enum_test obj
-    i = 0
-    obj.map{|e|
-      e
-    }.sort
-  end
-
-  def test_iterators
-    assert_equal [0, 1, 2], enum_test(3.times)
-    assert_equal ["x", "y", "z"], enum_test(["z", "y", "x"].each)
-    assert_equal [["x", 1], ["y", 2]], enum_test({"y"=>2, "x"=>1})
-  end
-
-  ## Enumerator as Iterator
-
-  def test_next
-    e = 3.times
-    3.times{|i|
-      assert_equal i, e.next
-    }
-    assert_raise(StopIteration){e.next}
-  end
-
-  def test_loop
-    e = 3.times
-    i = 0
-    loop{
-      assert_equal(i, e.next)
-      i += 1
-    }
-  end
-
-  def test_nested_itaration
-    def (o = Object.new).each
-      yield :ok1
-      yield [:ok2, :x].each.next
-    end
-    e = o.to_enum
-    assert_equal :ok1, e.next
-    assert_equal :ok2, e.next
-    assert_raise(StopIteration){e.next}
-  end
-
-
-  def test_initialize
-    assert_equal([1, 2, 3], @obj.to_enum(:foo, 1, 2, 3).to_a)
-    assert_equal([1, 2, 3], Enumerable::Enumerator.new(@obj, :foo, 1, 2, 3).to_a)
-    assert_raise(ArgumentError) { Enumerable::Enumerator.new }
-  end
-
-  def test_initialize_copy
-    assert_equal([1, 2, 3], @obj.to_enum(:foo, 1, 2, 3).dup.to_a)
-    e = @obj.to_enum(:foo, 1, 2, 3)
-    assert_nothing_raised { assert_equal(1, e.next) }
-    #assert_raise(TypeError) { e.dup }
-  end
-
-  def test_gc
-    assert_nothing_raised do
-      1.times do
-        foo = [1,2,3].to_enum
-        GC.start
-      end
-      GC.start
-    end
-  end
-
-  def test_slice
-    assert_equal([[1,2,3],[4,5,6],[7,8,9],[10]], (1..10).each_slice(3).to_a)
-  end
-
-  def test_cons
-    a = [[1,2,3], [2,3,4], [3,4,5], [4,5,6], [5,6,7], [6,7,8], [7,8,9], [8,9,10]]
-    assert_equal(a, (1..10).each_cons(3).to_a)
-  end
-
-  def test_with_index
-    assert_equal([[1,0],[2,1],[3,2]], @obj.to_enum(:foo, 1, 2, 3).with_index.to_a)
-  end
-
-  def test_next_rewind
-    e = @obj.to_enum(:foo, 1, 2, 3)
-    assert_equal(1, e.next)
-    assert_equal(2, e.next)
-    e.rewind
-    assert_equal(1, e.next)
-    assert_equal(2, e.next)
-    assert_equal(3, e.next)
-    assert_raise(StopIteration) { e.next }
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_env.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_env.rb
deleted file mode 100644 (file)
index 3a65f91..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-require 'test/unit'
-
-class TestEnv < Test::Unit::TestCase
-  IGNORE_CASE = /djgpp|bccwin|mswin|mingw/ =~ RUBY_PLATFORM
-
-  def setup
-    @backup = ENV.delete('test')
-    @BACKUP = ENV.delete('TEST')
-  end
-
-  def teardown
-    ENV['test'] = @backup if @backup
-    ENV['TEST'] = @BACKUP if @BACKUP
-  end
-
-  def test_bracket
-    assert_nil(ENV['test'])
-    assert_nil(ENV['TEST'])
-    ENV['test'] = 'foo'
-    assert_equal('foo', ENV['test'])
-    if IGNORE_CASE
-      assert_equal('foo', ENV['TEST'])
-    else
-      assert_nil(ENV['TEST'])
-    end
-    ENV['TEST'] = 'bar'
-    assert_equal('bar', ENV['TEST'])
-    if IGNORE_CASE
-      assert_equal('bar', ENV['test'])
-    else
-      assert_equal('foo', ENV['test'])
-    end
-
-    assert_raises(TypeError) {
-      tmp = ENV[1]
-    }
-    assert_raises(TypeError) {
-      ENV[1] = 'foo'
-    }
-    assert_raises(TypeError) {
-      ENV['test'] = 0
-    }
-  end
-
-  def test_has_value
-    val = 'a'
-    val.succ! while ENV.has_value?(val) && ENV.has_value?(val.upcase)
-    ENV['test'] = val[0...-1]
-
-    assert_equal(false, ENV.has_value?(val))
-    assert_equal(false, ENV.has_value?(val.upcase))
-    ENV['test'] = val
-    assert_equal(true, ENV.has_value?(val))
-    assert_equal(false, ENV.has_value?(val.upcase))
-    ENV['test'] = val.upcase
-    assert_equal(false, ENV.has_value?(val))
-    assert_equal(true, ENV.has_value?(val.upcase))
-  end
-
-  def test_index
-    val = 'a'
-    val.succ! while ENV.has_value?(val) && ENV.has_value?(val.upcase)
-    ENV['test'] = val[0...-1]
-
-    assert_nil(ENV.index(val))
-    assert_nil(ENV.index(val.upcase))
-    ENV['test'] = val
-    if IGNORE_CASE
-      assert_equal('TEST', ENV.index(val).upcase)
-    else
-      assert_equal('test', ENV.index(val))
-    end
-    assert_nil(ENV.index(val.upcase))
-    ENV['test'] = val.upcase
-    assert_nil(ENV.index(val))
-    if IGNORE_CASE
-      assert_equal('TEST', ENV.index(val.upcase).upcase)
-    else
-      assert_equal('test', ENV.index(val.upcase))
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_eval.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_eval.rb
deleted file mode 100644 (file)
index 6b3fea7..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-require 'test/unit'
-
-class TestEval < Test::Unit::TestCase
-  # eval with binding
-  def test_ev
-    local1 = "local1"
-    lambda {
-      local2 = "local2"
-      return binding
-    }.call
-  end
-
-  def test_eval
-    assert_nil(eval(""))
-    $bad=false
-    eval 'while false; $bad = true; print "foo\n" end'
-    assert(!$bad)
-
-    assert(eval('TRUE'))
-    assert(eval('true'))
-    assert(!eval('NIL'))
-    assert(!eval('nil'))
-    assert(!eval('FALSE'))
-    assert(!eval('false'))
-
-    $foo = 'assert(true)'
-    begin
-      eval $foo
-    rescue
-      assert(false)
-    end
-
-    assert_equal('assert(true)', eval("$foo"))
-    assert_equal(true, eval("true"))
-    i = 5
-    assert(eval("i == 5"))
-    assert_equal(5, eval("i"))
-    assert(eval("defined? i"))
-
-    $x = test_ev
-    assert_equal("local1", eval("local1", $x)) # normal local var
-    assert_equal("local2", eval("local2", $x)) # nested local var
-    $bad = true
-    begin
-      p eval("local1")
-    rescue NameError           # must raise error
-      $bad = false
-    end
-    assert(!$bad)
-
-    # !! use class_eval to avoid nested definition
-    self.class.class_eval %q(
-      module EvTest
-       EVTEST1 = 25
-       evtest2 = 125
-       $x = binding
-      end
-    )
-    assert_equal(25, eval("EVTEST1", $x))      # constant in module
-    assert_equal(125, eval("evtest2", $x))     # local var in module
-    $bad = true
-    begin
-      eval("EVTEST1")
-    rescue NameError           # must raise error
-      $bad = false
-    end
-    assert(!$bad)
-
-    x = proc{}
-    eval "i4 = 1", x
-    assert_equal(1, eval("i4", x))
-    x = proc{proc{}}.call
-    eval "i4 = 22", x
-    assert_equal(22, eval("i4", x))
-    $x = []
-    x = proc{proc{}}.call
-    eval "(0..9).each{|i5| $x[i5] = proc{i5*2}}", x
-    assert_equal(8, $x[4].call)
-
-    x = binding
-    eval "i = 1", x
-    assert_equal(1, eval("i", x))
-    x = proc{binding}.call
-    eval "i = 22", x
-    assert_equal(22, eval("i", x))
-    $x = []
-    x = proc{binding}.call
-    eval "(0..9).each{|i5| $x[i5] = proc{i5*2}}", x
-    assert_equal(8, $x[4].call)
-    x = proc{binding}.call
-    eval "for i6 in 1..1; j6=i6; end", x
-    assert(eval("defined? i6", x))
-    assert(eval("defined? j6", x))
-
-    proc {
-      p = binding
-      eval "foo11 = 1", p
-      foo22 = 5
-      proc{foo11=22}.call
-      proc{foo22=55}.call
-      assert_equal(eval("foo11"), eval("foo11", p))
-      assert_equal(1, eval("foo11"))
-      assert_equal(eval("foo22"), eval("foo22", p))
-      assert_equal(55, eval("foo22"))
-    }.call
-
-    p1 = proc{i7 = 0; proc{i7}}.call
-    assert_equal(0, p1.call)
-    eval "i7=5", p1
-    assert_equal(5, p1.call)
-    assert(!defined?(i7))
-
-    p1 = proc{i7 = 0; proc{i7}}.call
-    i7 = nil
-    assert_equal(0, p1.call)
-    eval "i7=1", p1
-    assert_equal(1, p1.call)
-    eval "i7=5", p1
-    assert_equal(5, p1.call)
-    assert_nil(i7)
-  end
-
-  def test_nil_instance_eval_cvar # [ruby-dev:24103]
-    def nil.test_binding
-      binding
-    end
-    bb = eval("nil.instance_eval \"binding\"", nil.test_binding)
-    assert_raise(NameError) { eval("@@a", bb) }
-    class << nil
-      remove_method :test_binding
-    end
-  end
-
-  def test_fixnum_instance_eval_cvar # [ruby-dev:24213]
-    assert_raise(NameError) { 1.instance_eval "@@a" }
-  end
-
-  def test_cvar_scope_with_instance_eval # [ruby-dev:24223]
-    Fixnum.class_eval "@@test_cvar_scope_with_instance_eval = 1" # depends on [ruby-dev:24229]
-    @@test_cvar_scope_with_instance_eval = 4
-    assert_equal(4, 1.instance_eval("@@test_cvar_scope_with_instance_eval"))
-    Fixnum.__send__(:remove_class_variable, :@@test_cvar_scope_with_instance_eval)
-  end
-
-  def test_eval_and_define_method # [ruby-dev:24228]
-    assert_nothing_raised {
-      def temporally_method_for_test_eval_and_define_method(&block)
-        lambda {
-          class << Object.new; self end.__send__(:define_method, :zzz, &block)
-        }
-      end
-      v = eval("temporally_method_for_test_eval_and_define_method {}")
-      {}[0] = {}
-      v.call
-    }
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_exception.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_exception.rb
deleted file mode 100644 (file)
index 4c27c52..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-require 'test/unit'
-
-class TestException < Test::Unit::TestCase
-  def test_exception
-    begin
-      raise "this must be handled"
-      assert(false)
-    rescue
-      assert(true)
-    end
-
-    $bad = true
-    begin
-      raise "this must be handled no.2"
-    rescue
-      if $bad
-        $bad = false
-        retry
-        assert(false)
-      end
-    end
-    assert(true)
-
-    # exception in rescue clause
-    $string = "this must be handled no.3"
-    e = assert_raises(RuntimeError) do
-      begin
-        raise "exception in rescue clause"
-      rescue
-        raise $string
-      end
-      assert(false)
-    end
-    assert_equal($string, e.message)
-
-    # exception in ensure clause
-    $string = "exception in ensure clause"
-    e = assert_raises(RuntimeError) do
-      begin
-        raise "this must be handled no.4"
-      ensure
-        assert_instance_of(RuntimeError, $!)
-        assert_equal("this must be handled no.4", $!.message)
-        raise "exception in ensure clause"
-      end
-      assert(false)
-    end
-    assert_equal($string, e.message)
-
-    $bad = true
-    begin
-      begin
-        raise "this must be handled no.5"
-      ensure
-        $bad = false
-      end
-    rescue
-    end
-    assert(!$bad)
-
-    $bad = true
-    begin
-      begin
-        raise "this must be handled no.6"
-      ensure
-        $bad = false
-      end
-    rescue
-    end
-    assert(!$bad)
-
-    $bad = true
-    while true
-      begin
-        break
-      ensure
-        $bad = false
-      end
-    end
-    assert(!$bad)
-
-    assert(catch(:foo) {
-         loop do
-           loop do
-        throw :foo, true
-        break
-           end
-           break
-           assert(false)                       # should no reach here
-         end
-         false
-       })
-
-  end
-
-  def test_else
-    begin
-      assert(true)
-    rescue
-      assert(false)
-    else
-      assert(true)
-    end
-
-    begin
-      assert(true)
-      raise
-      assert(false)
-    rescue
-      assert(true)
-    else
-      assert(false)
-    end
-
-    begin
-      assert(true)
-      begin
-       assert(true)
-      rescue
-       assert(false)
-      else
-       assert(true)
-      end
-      assert(true)
-    rescue
-      assert(false)
-    else
-      assert(true)
-    end
-
-    begin
-      assert(true)
-      begin
-       assert(true)
-       raise
-       assert(false)
-      rescue
-       assert(true)
-      else
-       assert(false)
-      end
-      assert(true)
-    rescue
-      assert(false)
-    else
-      assert(true)
-    end
-
-    begin
-      assert(true)
-      begin
-       assert(true)
-      rescue
-       assert(false)
-      else
-       assert(true)
-      end
-      assert(true)
-      raise
-      assert(false)
-    rescue
-      assert(true)
-    else
-      assert(false)
-    end
-
-    begin
-      assert(true)
-      begin
-       assert(true)
-       raise
-       assert(false)
-      rescue
-       assert(true)
-      else
-       assert(false)
-      end
-      assert(true)
-      raise
-      assert(false)
-    rescue
-      assert(true)
-    else
-      assert(false)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_file.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_file.rb
deleted file mode 100644 (file)
index 2458dde..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-require 'test/unit'
-require 'tempfile'
-$:.replace([File.dirname(File.expand_path(__FILE__))] | $:)
-require 'ut_eof'
-
-class TestFile < Test::Unit::TestCase
-
-  # I don't know Ruby's spec about "unlink-before-close" exactly.
-  # This test asserts current behaviour.
-  def test_unlink_before_close
-    filename = File.basename(__FILE__) + ".#{$$}"
-    w = File.open(filename, "w")
-    w << "foo"
-    w.close
-    r = File.open(filename, "r")
-    begin
-      if /(mswin|bccwin|mingw|emx)/ =~ RUBY_PLATFORM
-       begin
-         File.unlink(filename)
-         assert(false)
-       rescue Errno::EACCES
-         assert(true)
-       end
-      else
-       File.unlink(filename)
-       assert(true)
-      end
-    ensure
-      r.close
-      File.unlink(filename) if File.exist?(filename)
-    end
-  end
-
-  include TestEOF
-  def open_file(content)
-    f = Tempfile.new("test-eof")
-    f << content
-    f.rewind
-    yield f
-  end
-  alias open_file_rw open_file
-
-  include TestEOF::Seek
-
-  def test_fnmatch
-    # from [ruby-dev:22815] and [ruby-dev:22819]
-    assert(true, File.fnmatch('\[1\]' , '[1]'))
-    assert(true, File.fnmatch('*?', 'a'))
-  end
-
-  def test_truncate_wbuf # [ruby-dev:24191]
-    f = Tempfile.new("test-truncate")
-    f.print "abc"
-    f.truncate(0)
-    f.print "def"
-    f.close
-    assert_equal("\0\0\0def", File.read(f.path))
-  end
-
-  def test_truncate_rbuf # [ruby-dev:24197]
-    f = Tempfile.new("test-truncate")
-    f.puts "abc"
-    f.puts "def"
-    f.close
-    f.open
-    assert_equal("abc\n", f.gets)
-    f.truncate(3)
-    assert_equal(nil, f.gets)
-  end
-
-  def test_read_all_extended_file
-    f = Tempfile.new("test-extended-file")
-    assert_nil(f.getc)
-    open(f.path, "w") {|g| g.print "a" }
-    assert_equal("a", f.read)
-  end
-
-  def test_gets_extended_file
-    f = Tempfile.new("test-extended-file")
-    assert_nil(f.getc)
-    open(f.path, "w") {|g| g.print "a" }
-    assert_equal("a", f.gets("a"))
-  end
-
-  def test_gets_para_extended_file
-    f = Tempfile.new("test-extended-file")
-    assert_nil(f.getc)
-    open(f.path, "w") {|g| g.print "\na" }
-    assert_equal("a", f.gets(""))
-  end
-
-  def test_each_byte_extended_file
-    f = Tempfile.new("test-extended-file")
-    assert_nil(f.getc)
-    open(f.path, "w") {|g| g.print "a" }
-    result = []
-    f.each_byte {|b| result << b }
-    assert_equal([?a], result)
-  end
-
-  def test_getc_extended_file
-    f = Tempfile.new("test-extended-file")
-    assert_nil(f.getc)
-    open(f.path, "w") {|g| g.print "a" }
-    assert_equal(?a, f.getc)
-  end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_fixnum.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_fixnum.rb
deleted file mode 100644 (file)
index d17b1f8..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-require 'test/unit'
-
-class TestFixnum < Test::Unit::TestCase
-  def setup
-    @verbose = $VERBOSE
-    $VERBOSE = nil
-  end
-
-  def teardown
-    $VERBOSE = @verbose
-  end
-
-  def test_pow
-    [1, 2, 2**64, 2**63*3, 2**64*3].each do |y|
-      [-1, 0, 1].each do |x|
-        z1 = x**y
-        z2 = (-x)**y
-        if y % 2 == 1
-          assert_equal(z2, -z1)
-        else
-          assert_equal(z2, z1)
-        end
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_float.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_float.rb
deleted file mode 100644 (file)
index cbc6a78..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-require 'test/unit'
-
-class TestFloat < Test::Unit::TestCase
-  def test_float
-    assert_equal(2, 2.6.floor)
-    assert_equal(-3, (-2.6).floor)
-    assert_equal(3, 2.6.ceil)
-    assert_equal(-2, (-2.6).ceil)
-    assert_equal(2, 2.6.truncate)
-    assert_equal(-2, (-2.6).truncate)
-    assert_equal(3, 2.6.round)
-    assert_equal(-2, (-2.4).truncate)
-    assert((13.4 % 1 - 0.4).abs < 0.0001)
-  end
-
-  def nan_test(x,y)
-    extend Test::Unit::Assertions
-    assert(x != y)
-    assert_equal(false, (x < y))
-    assert_equal(false, (x > y))
-    assert_equal(false, (x <= y))
-    assert_equal(false, (x >= y))
-  end
-  def test_nan
-    nan = 0.0/0
-    nan_test(nan, nan)
-    nan_test(nan, 0)
-    nan_test(nan, 1)
-    nan_test(nan, -1)
-    nan_test(nan, 1000)
-    nan_test(nan, -1000)
-    nan_test(nan, 1_000_000_000_000)
-    nan_test(nan, -1_000_000_000_000)
-    nan_test(nan, 100.0);
-    nan_test(nan, -100.0);
-    nan_test(nan, 0.001);
-    nan_test(nan, -0.001);
-    nan_test(nan, 1.0/0);
-    nan_test(nan, -1.0/0);
-  end
-
-  def test_precision
-    u = 3.7517675036461267e+17
-    v = sprintf("%.16e", u).to_f
-    assert_in_delta(u, v, u.abs * Float::EPSILON)
-    assert_in_delta(u, v, v.abs * Float::EPSILON)
-  end
-
-  def test_symmetry_bignum # [ruby-bugs-ja:118]
-    a = 100000000000000000000000
-    b = 100000000000000000000000.0
-    assert_equal(a == b, b == a)
-  end
-
-  def test_strtod
-    a = Float("0")
-    assert(a.abs < Float::EPSILON)
-    a = Float("0.0")
-    assert(a.abs < Float::EPSILON)
-    a = Float("+0.0")
-    assert(a.abs < Float::EPSILON)
-    a = Float("-0.0")
-    assert(a.abs < Float::EPSILON)
-    a = Float("0.0000000000000000001")
-    assert(a != 0.0)
-    a = Float("+0.0000000000000000001")
-    assert(a != 0.0)
-    a = Float("-0.0000000000000000001")
-    assert(a != 0.0)
-    a = Float(".0")
-    assert(a.abs < Float::EPSILON)
-    a = Float("+.0")
-    assert(a.abs < Float::EPSILON)
-    a = Float("-.0")
-    assert(a.abs < Float::EPSILON)
-    assert(a.abs < Float::EPSILON)
-    assert_raise(ArgumentError){Float(".")}
-    assert_raise(ArgumentError){Float("+")}
-    assert_raise(ArgumentError){Float("+.")}
-    assert_raise(ArgumentError){Float("-")}
-    assert_raise(ArgumentError){Float("-.")}
-    assert_raise(ArgumentError){Float("1e")}
-    # add expected behaviour here.
-  end
-
-  def test_divmod
-    assert_equal([2, 3.5], 11.5.divmod(4))
-    assert_equal([-3, -0.5], 11.5.divmod(-4))
-    assert_equal([-3, 0.5], (-11.5).divmod(4))
-    assert_equal([2, -3.5], (-11.5).divmod(-4))
-  end
-
-  def test_div
-    assert_equal(2, 11.5.div(4))
-    assert_equal(-3, 11.5.div(-4))
-    assert_equal(-3, (-11.5).div(4))
-    assert_equal(2, (-11.5).div(-4))
-  end
-
-  def test_modulo
-    assert_equal(3.5, 11.5.modulo(4))
-    assert_equal(-0.5, 11.5.modulo(-4))
-    assert_equal(0.5, (-11.5).modulo(4))
-    assert_equal(-3.5, (-11.5).modulo(-4))
-  end
-
-  def test_remainder
-    assert_equal(3.5, 11.5.remainder(4))
-    assert_equal(3.5, 11.5.remainder(-4))
-    assert_equal(-3.5, (-11.5).remainder(4))
-    assert_equal(-3.5, (-11.5).remainder(-4))
-  end
-
-  def test_to_i
-    assert_operator(4611686018427387905.0.to_i, :>, 0)
-    assert_operator(4611686018427387904.0.to_i, :>, 0)
-    assert_operator(4611686018427387903.8.to_i, :>, 0)
-    assert_operator(4611686018427387903.5.to_i, :>, 0)
-    assert_operator(4611686018427387903.2.to_i, :>, 0)
-    assert_operator(4611686018427387903.0.to_i, :>, 0)
-    assert_operator(4611686018427387902.0.to_i, :>, 0)
-
-    assert_operator(1073741825.0.to_i, :>, 0)
-    assert_operator(1073741824.0.to_i, :>, 0)
-    assert_operator(1073741823.8.to_i, :>, 0)
-    assert_operator(1073741823.5.to_i, :>, 0)
-    assert_operator(1073741823.2.to_i, :>, 0)
-    assert_operator(1073741823.0.to_i, :>, 0)
-    assert_operator(1073741822.0.to_i, :>, 0)
-
-    assert_operator((-1073741823.0).to_i, :<, 0)
-    assert_operator((-1073741824.0).to_i, :<, 0)
-    assert_operator((-1073741824.2).to_i, :<, 0)
-    assert_operator((-1073741824.5).to_i, :<, 0)
-    assert_operator((-1073741824.8).to_i, :<, 0)
-    assert_operator((-1073741825.0).to_i, :<, 0)
-    assert_operator((-1073741826.0).to_i, :<, 0)
-
-    assert_operator((-4611686018427387903.0).to_i, :<, 0)
-    assert_operator((-4611686018427387904.0).to_i, :<, 0)
-    assert_operator((-4611686018427387904.2).to_i, :<, 0)
-    assert_operator((-4611686018427387904.5).to_i, :<, 0)
-    assert_operator((-4611686018427387904.8).to_i, :<, 0)
-    assert_operator((-4611686018427387905.0).to_i, :<, 0)
-    assert_operator((-4611686018427387906.0).to_i, :<, 0)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_gc.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_gc.rb
deleted file mode 100644 (file)
index d0b4e3d..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'test/unit'
-
-class TestGc < Test::Unit::TestCase
-  class S
-    def initialize(a)
-      @a = a
-    end
-  end
-
-  def test_gc
-    assert_nothing_raised do
-      1.upto(10000) {
-        tmp = [0,1,2,3,4,5,6,7,8,9]
-      }
-      tmp = nil
-    end
-    l=nil
-    100000.times {
-      l = S.new(l)
-    }
-    GC.start
-    assert true   # reach here or dumps core
-    l = []
-    100000.times {
-      l.push([l])
-    }
-    GC.start
-    assert true   # reach here or dumps core
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_hash.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_hash.rb
deleted file mode 100644 (file)
index 4131a6b..0000000
+++ /dev/null
@@ -1,641 +0,0 @@
-require 'test/unit'
-
-class TestHash < Test::Unit::TestCase
-
-  def test_hash
-    x = {1=>2, 2=>4, 3=>6}
-    y = {1, 2, 2, 4, 3, 6}
-
-    assert_equal(2, x[1])
-
-    assert(begin
-         for k,v in y
-           raise if k*2 != v
-         end
-         true
-       rescue
-         false
-       end)
-
-    assert_equal(3, x.length)
-    assert(x.has_key?(1))
-    assert(x.has_value?(4))
-    assert_equal([4,6], x.values_at(2,3))
-    assert_equal({1=>2, 2=>4, 3=>6}, x)
-
-    z = y.keys.join(":")
-    assert_equal("1:2:3", z)
-
-    z = y.values.join(":")
-    assert_equal("2:4:6", z)
-    assert_equal(x, y)
-
-    y.shift
-    assert_equal(2, y.length)
-
-    z = [1,2]
-    y[z] = 256
-    assert_equal(256, y[z])
-
-    x = Hash.new(0)
-    x[1] = 1
-    assert_equal(1, x[1])
-    assert_equal(0, x[2])
-
-    x = Hash.new([])
-    assert_equal([], x[22])
-    assert_same(x[22], x[22])
-
-    x = Hash.new{[]}
-    assert_equal([], x[22])
-    assert_not_same(x[22], x[22])
-
-    x = Hash.new{|h,k| z = k; h[k] = k*2}
-    z = 0
-    assert_equal(44, x[22])
-    assert_equal(22, z)
-    z = 0
-    assert_equal(44, x[22])
-    assert_equal(0, z)
-    x.default = 5
-    assert_equal(5, x[23])
-
-    x = Hash.new
-    def x.default(k)
-      $z = k
-      self[k] = k*2
-    end
-    $z = 0
-    assert_equal(44, x[22])
-    assert_equal(22, $z)
-    $z = 0
-    assert_equal(44, x[22])
-    assert_equal(0, $z)
-  end
-
-  # From rubicon
-
-  def setup
-    @cls = Hash
-    @h = @cls[
-      1 => 'one', 2 => 'two', 3 => 'three',
-      self => 'self', true => 'true', nil => 'nil',
-      'nil' => nil
-    ]
-  end
-
-  def test_s_AREF
-    h = @cls["a" => 100, "b" => 200]
-    assert_equal(100, h['a'])
-    assert_equal(200, h['b'])
-    assert_nil(h['c'])
-
-    h = @cls.[]("a" => 100, "b" => 200)
-    assert_equal(100, h['a'])
-    assert_equal(200, h['b'])
-    assert_nil(h['c'])
-  end
-
-  def test_s_new
-    h = @cls.new
-    assert_instance_of(@cls, h)
-    assert_nil(h.default)
-    assert_nil(h['spurious'])
-
-    h = @cls.new('default')
-    assert_instance_of(@cls, h)
-    assert_equal('default', h.default)
-    assert_equal('default', h['spurious'])
-    
-  end
-
-  def test_AREF # '[]'
-    t = Time.now
-    h = @cls[
-      1 => 'one', 2 => 'two', 3 => 'three',
-      self => 'self', t => 'time', nil => 'nil',
-      'nil' => nil
-    ]
-
-    assert_equal('one',   h[1])
-    assert_equal('two',   h[2])
-    assert_equal('three', h[3])
-    assert_equal('self',  h[self])
-    assert_equal('time',  h[t])
-    assert_equal('nil',   h[nil])
-    assert_equal(nil,     h['nil'])
-    assert_equal(nil,     h['koala'])
-
-    h1 = h.dup
-    h1.default = :default
-
-    assert_equal('one',    h1[1])
-    assert_equal('two',    h1[2])
-    assert_equal('three',  h1[3])
-    assert_equal('self',   h1[self])
-    assert_equal('time',   h1[t])
-    assert_equal('nil',    h1[nil])
-    assert_equal(nil,      h1['nil'])
-    assert_equal(:default, h1['koala'])
-
-
-  end
-
-  def test_ASET # '[]='
-    t = Time.now
-    h = @cls.new
-    h[1]     = 'one'
-    h[2]     = 'two'
-    h[3]     = 'three'
-    h[self]  = 'self'
-    h[t]     = 'time'
-    h[nil]   = 'nil'
-    h['nil'] = nil
-    assert_equal('one',   h[1])
-    assert_equal('two',   h[2])
-    assert_equal('three', h[3])
-    assert_equal('self',  h[self])
-    assert_equal('time',  h[t])
-    assert_equal('nil',   h[nil])
-    assert_equal(nil,     h['nil'])
-    assert_equal(nil,     h['koala'])
-
-    h[1] = 1
-    h[nil] = 99
-    h['nil'] = nil
-    z = [1,2]
-    h[z] = 256
-    assert_equal(1,       h[1])
-    assert_equal('two',   h[2])
-    assert_equal('three', h[3])
-    assert_equal('self',  h[self])
-    assert_equal('time',  h[t])
-    assert_equal(99,      h[nil])
-    assert_equal(nil,     h['nil'])
-    assert_equal(nil,     h['koala'])
-    assert_equal(256,     h[z])
-  end
-
-  def test_EQUAL # '=='
-    h1 = @cls[ "a" => 1, "c" => 2 ]
-    h2 = @cls[ "a" => 1, "c" => 2, 7 => 35 ]
-    h3 = @cls[ "a" => 1, "c" => 2, 7 => 35 ]
-    h4 = @cls[ ]
-    assert(h1 == h1)
-    assert(h2 == h2)
-    assert(h3 == h3)
-    assert(h4 == h4)
-    assert(!(h1 == h2))
-    assert(h2 == h3)
-    assert(!(h3 == h4))
-  end
-
-  def test_clear
-    assert(@h.size > 0)
-    @h.clear
-    assert_equal(0, @h.size)
-    assert_nil(@h[1])
-  end
-
-  def test_clone
-    for taint in [ false, true ]
-      for frozen in [ false, true ]
-        a = @h.clone
-        a.taint  if taint
-        a.freeze if frozen
-        b = a.clone
-
-        assert_equal(a, b)
-        assert(a.__id__ != b.__id__)
-        assert_equal(a.frozen?, b.frozen?)
-        assert_equal(a.tainted?, b.tainted?)
-      end
-    end
-  end
-
-  def test_default
-    assert_nil(@h.default)
-    h = @cls.new(:xyzzy)
-    assert_equal(:xyzzy, h.default)
-  end
-
-  def test_default=
-    assert_nil(@h.default)
-    @h.default = :xyzzy
-    assert_equal(:xyzzy, @h.default)
-  end
-
-  def test_delete
-    h1 = @cls[ 1 => 'one', 2 => 'two', true => 'true' ]
-    h2 = @cls[ 1 => 'one', 2 => 'two' ]
-    h3 = @cls[ 2 => 'two' ]
-
-    assert_equal('true', h1.delete(true))
-    assert_equal(h2, h1)
-
-    assert_equal('one', h1.delete(1))
-    assert_equal(h3, h1)
-
-    assert_equal('two', h1.delete(2))
-    assert_equal(@cls[], h1)
-
-    assert_nil(h1.delete(99))
-    assert_equal(@cls[], h1)
-
-    assert_equal('default 99', h1.delete(99) {|i| "default #{i}" })
-  end
-
-  def test_delete_if
-    base = @cls[ 1 => 'one', 2 => false, true => 'true', 'cat' => 99 ]
-    h1   = @cls[ 1 => 'one', 2 => false, true => 'true' ]
-    h2   = @cls[ 2 => false, 'cat' => 99 ]
-    h3   = @cls[ 2 => false ]
-
-    h = base.dup
-    assert_equal(h, h.delete_if { false })
-    assert_equal(@cls[], h.delete_if { true })
-
-    h = base.dup
-    assert_equal(h1, h.delete_if {|k,v| k.instance_of?(String) })
-    assert_equal(h1, h)
-
-    h = base.dup
-    assert_equal(h2, h.delete_if {|k,v| v.instance_of?(String) })
-    assert_equal(h2, h)
-
-    h = base.dup
-    assert_equal(h3, h.delete_if {|k,v| v })
-    assert_equal(h3, h)
-
-    h = base.dup
-    n = 0
-    h.delete_if {|*a|
-      n += 1
-      assert_equal(2, a.size)
-      assert_equal(base[a[0]], a[1])
-      h.shift
-      true
-    }
-    assert_equal(base.size, n)
-  end
-
-  def test_dup
-    for taint in [ false, true ]
-      for frozen in [ false, true ]
-        a = @h.dup
-        a.taint  if taint
-        a.freeze if frozen
-        b = a.dup
-
-        assert_equal(a, b)
-        assert(a.__id__ != b.__id__)
-        assert_equal(false, b.frozen?)
-        assert_equal(a.tainted?, b.tainted?)
-      end
-    end
-  end
-
-  def test_each
-    count = 0
-    @cls[].each { |k, v| count + 1 }
-    assert_equal(0, count)
-
-    h = @h
-    h.each do |k, v|
-      assert_equal(v, h.delete(k))
-    end
-    assert_equal(@cls[], h)
-  end
-
-  def test_each_key
-    count = 0
-    @cls[].each_key { |k| count + 1 }
-    assert_equal(0, count)
-
-    h = @h
-    h.each_key do |k|
-      h.delete(k)
-    end
-    assert_equal(@cls[], h)
-  end
-
-  def test_each_pair
-    count = 0
-    @cls[].each_pair { |k, v| count + 1 }
-    assert_equal(0, count)
-
-    h = @h
-    h.each_pair do |k, v|
-      assert_equal(v, h.delete(k))
-    end
-    assert_equal(@cls[], h)
-  end
-
-  def test_each_value
-    res = []
-    @cls[].each_value { |v| res << v }
-    assert_equal(0, [].length)
-
-    @h.each_value { |v| res << v }
-    assert_equal(0, [].length)
-
-    expected = []
-    @h.each { |k, v| expected << v }
-
-    assert_equal([], expected - res)
-    assert_equal([], res - expected)
-  end
-
-  def test_empty?
-    assert(@cls[].empty?)
-    assert(!@h.empty?)
-  end
-
-  def test_fetch
-    assert_raise(IndexError) { @cls[].fetch(1) }
-    assert_raise(IndexError) { @h.fetch('gumby') }
-    assert_equal('gumbygumby', @h.fetch('gumby') {|k| k * 2 })
-    assert_equal('pokey', @h.fetch('gumby', 'pokey'))
-
-    assert_equal('one', @h.fetch(1))
-    assert_equal(nil, @h.fetch('nil'))
-    assert_equal('nil', @h.fetch(nil))
-  end
-
-  def test_key?
-    assert(!@cls[].key?(1))
-    assert(!@cls[].key?(nil))
-    assert(@h.key?(nil))
-    assert(@h.key?(1))
-    assert(!@h.key?('gumby'))
-  end
-
-  def test_value?
-    assert(!@cls[].value?(1))
-    assert(!@cls[].value?(nil))
-    assert(@h.value?('one'))
-    assert(@h.value?(nil))
-    assert(!@h.value?('gumby'))
-  end
-
-  def test_include?
-    assert(!@cls[].include?(1))
-    assert(!@cls[].include?(nil))
-    assert(@h.include?(nil))
-    assert(@h.include?(1))
-    assert(!@h.include?('gumby'))
-  end
-
-  def test_values_at
-    res = @h.values_at('dog', 'cat', 'horse')
-    assert(res.length == 3)
-    assert_equal([nil, nil, nil], res)
-
-    res = @h.values_at
-    assert(res.length == 0)
-
-    res = @h.values_at(3, 2, 1, nil)
-    assert_equal 4, res.length
-    assert_equal %w( three two one nil ), res
-
-    res = @h.values_at(3, 99, 1, nil)
-    assert_equal 4, res.length
-    assert_equal ['three', nil, 'one', 'nil'], res
-  end
-
-
-  def test_invert
-    h = @h.invert
-    assert_equal(1, h['one'])
-    assert_equal(true, h['true'])
-    assert_equal(nil,  h['nil'])
-
-    h.each do |k, v|
-      assert(@h.key?(v))    # not true in general, but works here
-    end
-
-    h = @cls[ 'a' => 1, 'b' => 2, 'c' => 1].invert
-    assert_equal(2, h.length)
-    assert(h[1] == 'a' || h[1] == 'c')
-    assert_equal('b', h[2])
-  end
-
-  def test_key?
-    assert(!@cls[].key?(1))
-    assert(!@cls[].key?(nil))
-    assert(@h.key?(nil))
-    assert(@h.key?(1))
-    assert(!@h.key?('gumby'))
-  end
-
-  def test_keys
-    assert_equal([], @cls[].keys)
-
-    keys = @h.keys
-    expected = []
-    @h.each { |k, v| expected << k }
-    assert_equal([], keys - expected)
-    assert_equal([], expected - keys)
-  end
-
-  def test_length
-    assert_equal(0, @cls[].length)
-    assert_equal(7, @h.length)
-  end
-
-  def test_member?
-    assert(!@cls[].member?(1))
-    assert(!@cls[].member?(nil))
-    assert(@h.member?(nil))
-    assert(@h.member?(1))
-    assert(!@h.member?('gumby'))
-  end
-
-  def test_rehash
-    a = [ "a", "b" ]
-    c = [ "c", "d" ]
-    h = @cls[ a => 100, c => 300 ]
-    assert_equal(100, h[a])
-    a[0] = "z"
-    assert_nil(h[a])
-    h.rehash
-    assert_equal(100, h[a])
-  end
-
-  def test_reject
-    base = @cls[ 1 => 'one', 2 => false, true => 'true', 'cat' => 99 ]
-    h1   = @cls[ 1 => 'one', 2 => false, true => 'true' ]
-    h2   = @cls[ 2 => false, 'cat' => 99 ]
-    h3   = @cls[ 2 => false ]
-
-    h = base.dup
-    assert_equal(h, h.reject { false })
-    assert_equal(@cls[], h.reject { true })
-
-    h = base.dup
-    assert_equal(h1, h.reject {|k,v| k.instance_of?(String) })
-
-    assert_equal(h2, h.reject {|k,v| v.instance_of?(String) })
-
-    assert_equal(h3, h.reject {|k,v| v })
-    assert_equal(base, h)
-  end
-
-  def test_reject!
-    base = @cls[ 1 => 'one', 2 => false, true => 'true', 'cat' => 99 ]
-    h1   = @cls[ 1 => 'one', 2 => false, true => 'true' ]
-    h2   = @cls[ 2 => false, 'cat' => 99 ]
-    h3   = @cls[ 2 => false ]
-
-    h = base.dup
-    assert_equal(nil, h.reject! { false })
-    assert_equal(@cls[],  h.reject! { true })
-
-    h = base.dup
-    assert_equal(h1, h.reject! {|k,v| k.instance_of?(String) })
-    assert_equal(h1, h)
-
-    h = base.dup
-    assert_equal(h2, h.reject! {|k,v| v.instance_of?(String) })
-    assert_equal(h2, h)
-
-    h = base.dup
-    assert_equal(h3, h.reject! {|k,v| v })
-    assert_equal(h3, h)
-  end
-
-  def test_replace
-    h = @cls[ 1 => 2, 3 => 4 ]
-    h1 = h.replace(@cls[ 9 => 8, 7 => 6 ])
-    assert_equal(h, h1)
-    assert_equal(8, h[9])
-    assert_equal(6, h[7])
-    assert_nil(h[1])
-    assert_nil(h[2])
-  end
-
-  def test_shift
-    h = @h.dup
-    
-    @h.length.times {
-      k, v = h.shift
-      assert(@h.key?(k))
-      assert_equal(@h[k], v)
-    }
-
-    assert_equal(0, h.length)
-  end
-
-  def test_size
-    assert_equal(0, @cls[].length)
-    assert_equal(7, @h.length)
-  end
-
-  def test_sort
-    h = @cls[].sort
-    assert_equal([], h)
-
-    h = @cls[ 1 => 1, 2 => 1 ].sort
-    assert_equal([[1,1], [2,1]], h)
-
-    h = @cls[ 'cat' => 'feline', 'ass' => 'asinine', 'bee' => 'beeline' ]
-    h1 = h.sort
-    assert_equal([ %w(ass asinine), %w(bee beeline), %w(cat feline)], h1)
-  end
-
-  def test_store
-    t = Time.now
-    h = @cls.new
-    h.store(1, 'one')
-    h.store(2, 'two')
-    h.store(3, 'three')
-    h.store(self, 'self')
-    h.store(t,  'time')
-    h.store(nil, 'nil')
-    h.store('nil', nil)
-    assert_equal('one',   h[1])
-    assert_equal('two',   h[2])
-    assert_equal('three', h[3])
-    assert_equal('self',  h[self])
-    assert_equal('time',  h[t])
-    assert_equal('nil',   h[nil])
-    assert_equal(nil,     h['nil'])
-    assert_equal(nil,     h['koala'])
-
-    h.store(1, 1)
-    h.store(nil,  99)
-    h.store('nil', nil)
-    assert_equal(1,       h[1])
-    assert_equal('two',   h[2])
-    assert_equal('three', h[3])
-    assert_equal('self',  h[self])
-    assert_equal('time',  h[t])
-    assert_equal(99,      h[nil])
-    assert_equal(nil,     h['nil'])
-    assert_equal(nil,     h['koala'])
-  end
-
-  def test_to_a
-    assert_equal([], @cls[].to_a)
-    assert_equal([[1,2]], @cls[ 1=>2 ].to_a)
-    a = @cls[ 1=>2, 3=>4, 5=>6 ].to_a
-    assert_equal([1,2], a.delete([1,2]))
-    assert_equal([3,4], a.delete([3,4]))
-    assert_equal([5,6], a.delete([5,6]))
-    assert_equal(0, a.length)
-  end
-
-  def test_to_hash
-    h = @h.to_hash
-    assert_equal(@h, h)
-  end
-
-  def test_to_s
-    h = @cls[ 1 => 2, "cat" => "dog", 1.5 => :fred ]
-    assert_equal(h.to_a.join, h.to_s)
-    $, = ":"
-    assert_equal(h.to_a.join, h.to_s)
-    h = @cls[]
-    assert_equal(h.to_a.join, h.to_s)
-    $, = nil
-  end
-
-  def test_update
-    h1 = @cls[ 1 => 2, 2 => 3, 3 => 4 ]
-    h2 = @cls[ 2 => 'two', 4 => 'four' ]
-
-    ha = @cls[ 1 => 2, 2 => 'two', 3 => 4, 4 => 'four' ]
-    hb = @cls[ 1 => 2, 2 => 3, 3 => 4, 4 => 'four' ]
-
-    assert_equal(ha, h1.update(h2))
-    assert_equal(ha, h1)
-
-    h1 = @cls[ 1 => 2, 2 => 3, 3 => 4 ]
-    h2 = @cls[ 2 => 'two', 4 => 'four' ]
-
-    assert_equal(hb, h2.update(h1))
-    assert_equal(hb, h2)
-  end
-
-  def test_value?
-    assert(!@cls[].value?(1))
-    assert(!@cls[].value?(nil))
-    assert(@h.value?(nil))
-    assert(@h.value?('one'))
-    assert(!@h.value?('gumby'))
-  end
-
-  def test_values
-    assert_equal([], @cls[].values)
-
-    vals = @h.values
-    expected = []
-    @h.each { |k, v| expected << v }
-    assert_equal([], vals - expected)
-    assert_equal([], expected - vals)
-  end
-
-  def test_hash_hash
-    assert_equal({0=>2,11=>1}.hash, {11=>1,0=>2}.hash)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_ifunless.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_ifunless.rb
deleted file mode 100644 (file)
index bffc794..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-require 'test/unit'
-
-class TestIfunless < Test::Unit::TestCase
-  def test_if_unless
-    $x = 'test';
-    assert(if $x == $x then true else false end)
-    $bad = false
-    unless $x == $x
-      $bad = true
-    end
-    assert(!$bad)
-    assert(unless $x != $x then true else false end)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_integer.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_integer.rb
deleted file mode 100644 (file)
index cfda9e5..0000000
+++ /dev/null
@@ -1,653 +0,0 @@
-require 'test/unit'
-
-class TestInteger < Test::Unit::TestCase
-  VS = [
-    -0x1000000000000000000000000000000000000000000000002,
-    -0x1000000000000000000000000000000000000000000000001,
-    -0x1000000000000000000000000000000000000000000000000,
-    -0xffffffffffffffffffffffffffffffffffffffffffffffff,
-    -0x1000000000000000000000002,
-    -0x1000000000000000000000001,
-    -0x1000000000000000000000000,
-    -0xffffffffffffffffffffffff,
-    -0x10000000000000002,
-    -0x10000000000000001,
-    -0x10000000000000000,
-    -0xffffffffffffffff,
-    -0x4000000000000002,
-    -0x4000000000000001,
-    -0x4000000000000000,
-    -0x3fffffffffffffff,
-    -0x100000002,
-    -0x100000001,
-    -0x100000000,
-    -0xffffffff,
-    -0xc717a08d, # 0xc717a08d * 0x524b2245 = 0x4000000000000001
-    -0x80000002,
-    -0x80000001,
-    -0x80000000,
-    -0x7fffffff,
-    -0x524b2245,
-    -0x40000002,
-    -0x40000001,
-    -0x40000000,
-    -0x3fffffff,
-    -0x10002,
-    -0x10001,
-    -0x10000,
-    -0xffff,
-    -0x8101, # 0x8101 * 0x7f01 = 0x40000001
-    -0x8002,
-    -0x8001,
-    -0x8000,
-    -0x7fff,
-    -0x7f01,
-    -65,
-    -64,
-    -63,
-    -62,
-    -33,
-    -32,
-    -31,
-    -30,
-    -3,
-    -2,
-    -1,
-    0,
-    1,
-    2,
-    3,
-    30,
-    31,
-    32,
-    33,
-    62,
-    63,
-    64,
-    65,
-    0x7f01,
-    0x7ffe,
-    0x7fff,
-    0x8000,
-    0x8001,
-    0x8101,
-    0xfffe,
-    0xffff,
-    0x10000,
-    0x10001,
-    0x3ffffffe,
-    0x3fffffff,
-    0x40000000,
-    0x40000001,
-    0x524b2245,
-    0x7ffffffe,
-    0x7fffffff,
-    0x80000000,
-    0x80000001,
-    0xc717a08d,
-    0xfffffffe,
-    0xffffffff,
-    0x100000000,
-    0x100000001,
-    0x3ffffffffffffffe,
-    0x3fffffffffffffff,
-    0x4000000000000000,
-    0x4000000000000001,
-    0xfffffffffffffffe,
-    0xffffffffffffffff,
-    0x10000000000000000,
-    0x10000000000000001,
-    0xffffffffffffffffffffffff,
-    0x1000000000000000000000000,
-    0x1000000000000000000000001,
-    0xffffffffffffffffffffffffffffffffffffffffffffffff,
-    0x1000000000000000000000000000000000000000000000000,
-    0x1000000000000000000000000000000000000000000000001
-  ]
-
-  #VS.map! {|v| 0x4000000000000000.coerce(v)[0] }
-
-  BDSIZE = 0x4000000000000000.coerce(0)[0].size
-  def self.bdsize(x)
-    ((x + 1) / 8 + BDSIZE) / BDSIZE * BDSIZE
-  end
-  def bdsize(x)
-    self.class.bdsize(x)
-  end
-
-  min = -1
-  min *= 2 while min.class == Fixnum
-  FIXNUM_MIN = min/2
-  max = 1
-  max *= 2 while (max-1).class == Fixnum
-  FIXNUM_MAX = max/2-1
-
-  def test_fixnum_range
-    assert_instance_of(Bignum, FIXNUM_MIN-1)
-    assert_instance_of(Fixnum, FIXNUM_MIN)
-    assert_instance_of(Fixnum, FIXNUM_MAX)
-    assert_instance_of(Bignum, FIXNUM_MAX+1)
-  end
-
-  def check_class(n)
-    if FIXNUM_MIN <= n && n <= FIXNUM_MAX
-      assert_instance_of(Fixnum, n)
-    else
-      assert_instance_of(Bignum, n)
-    end
-  end
-
-  def test_aref
-    VS.each {|a|
-      100.times {|i|
-        assert_equal((a >> i).odd? ? 1 : 0, a[i], "(#{a})[#{i}]")
-      }
-    }
-    VS.each {|a|
-      VS.each {|b|
-        c = nil
-        assert_nothing_raised("(#{a})[#{b}]") { c = a[b] }
-        check_class(c)
-        if b < 0
-          assert_equal(0, c, "(#{a})[#{b}]")
-        else
-          assert_equal((a >> b).odd? ? 1 : 0, c, "(#{a})[#{b}]")
-        end
-      }
-    }
-
-    # assert_equal(1, (1 << 0x40000000)[0x40000000], "[ruby-dev:31271]")
-    # assert_equal(0, (-1 << 0x40000001)[0x40000000], "[ruby-dev:31271]")
-    big_zero = 0x40000000.coerce(0)[0]
-    assert_equal(0, (-0x40000002)[big_zero], "[ruby-dev:31271]")
-    assert_equal(1, 0x400000001[big_zero], "[ruby-dev:31271]")
-  end
-
-  def test_plus
-    VS.each {|a|
-      VS.each {|b|
-        c = a + b
-        check_class(c)
-        assert_equal(b + a, c, "#{a} + #{b}")
-        assert_equal(a, c - b, "(#{a} + #{b}) - #{b}")
-        assert_equal(a-~b-1, c, "#{a} + #{b}") # Hacker's Delight
-        assert_equal((a^b)+2*(a&b), c, "#{a} + #{b}") # Hacker's Delight
-        assert_equal((a|b)+(a&b), c, "#{a} + #{b}") # Hacker's Delight
-        assert_equal(2*(a|b)-(a^b), c, "#{a} + #{b}") # Hacker's Delight
-      }
-    }
-  end
-
-  def test_minus
-    VS.each {|a|
-      VS.each {|b|
-        c = a - b
-        check_class(c)
-        assert_equal(a, c + b, "(#{a} - #{b}) + #{b}")
-        assert_equal(-b, c - a, "(#{a} - #{b}) - #{a}")
-        assert_equal(a+~b+1, c, "#{a} - #{b}") # Hacker's Delight
-        assert_equal((a^b)-2*(b&~a), c, "#{a} - #{b}") # Hacker's Delight
-        assert_equal((a&~b)-(b&~a), c, "#{a} - #{b}") # Hacker's Delight
-        assert_equal(2*(a&~b)-(a^b), c, "#{a} - #{b}") # Hacker's Delight
-      }
-    }
-  end
-
-  def test_mult
-    VS.each {|a|
-      VS.each {|b|
-        c = a * b
-        check_class(c)
-        assert_equal(b * a, c, "#{a} * #{b}")
-        assert_equal(b, c / a, "(#{a} * #{b}) / #{a}") if a != 0
-        assert_equal(a.abs * b.abs, (a * b).abs, "(#{a} * #{b}).abs")
-        assert_equal((a-100)*(b-100)+(a-100)*100+(b-100)*100+10000, c, "#{a} * #{b}")
-        assert_equal((a+100)*(b+100)-(a+100)*100-(b+100)*100+10000, c, "#{a} * #{b}")
-      }
-    }
-  end
-
-  def test_divmod
-    VS.each {|a|
-      VS.each {|b|
-        if b == 0
-          assert_raise(ZeroDivisionError) { a.divmod(b) }
-        else
-          q, r = a.divmod(b)
-          check_class(q)
-          check_class(r)
-          assert_equal(a, b*q+r)
-          assert(r.abs < b.abs)
-          assert(0 < b ? (0 <= r && r < b) : (b < r && r <= 0))
-          assert_equal(q, a/b)
-          assert_equal(q, a.div(b))
-          assert_equal(r, a%b)
-          assert_equal(r, a.modulo(b))
-        end
-      }
-    }
-  end
-
-  def test_pow
-    small_values = VS.find_all {|v| 0 <= v && v < 1000 }
-    VS.each {|a|
-      small_values.each {|b|
-        c = a ** b
-        check_class(c)
-        d = 1
-        b.times { d *= a }
-        assert_equal(d, c, "(#{a}) ** #{b}")
-        if a != 0
-          d = c
-          b.times { d /= a }
-          assert_equal(1, d, "((#{a}) ** #{b}) / #{a} / ...(#{b} times)...")
-        end
-      }
-    }
-
-    assert_equal(0**-1 == 0, false)
-  end
-
-  def test_not
-    VS.each {|a|
-      b = ~a
-      check_class(b)
-      assert_equal(-1 ^ a, b, "~#{a}")
-      assert_equal(-a-1, b, "~#{a}") # Hacker's Delight
-      assert_equal(0, a & b, "#{a} & ~#{a}")
-      assert_equal(-1, a | b, "#{a} | ~#{a}")
-    }
-  end
-
-  def test_or
-    VS.each {|a|
-      VS.each {|b|
-        c = a | b
-        check_class(c)
-        assert_equal(b | a, c, "#{a} | #{b}")
-        assert_equal(a + b - (a&b), c, "#{a} | #{b}")
-        assert_equal((a & ~b) + b, c, "#{a} | #{b}") # Hacker's Delight
-        assert_equal(-1, c | ~a, "(#{a} | #{b}) | ~#{a})")
-      }
-    }
-  end
-
-  def test_and
-    VS.each {|a|
-      VS.each {|b|
-        c = a & b
-        check_class(c)
-        assert_equal(b & a, c, "#{a} & #{b}")
-        assert_equal(a + b - (a|b), c, "#{a} & #{b}")
-        assert_equal((~a | b) - ~a, c, "#{a} & #{b}") # Hacker's Delight
-        assert_equal(0, c & ~a, "(#{a} & #{b}) & ~#{a}")
-      }
-    }
-  end
-
-  def test_xor
-    VS.each {|a|
-      VS.each {|b|
-        c = a ^ b
-        check_class(c)
-        assert_equal(b ^ a, c, "#{a} ^ #{b}")
-        assert_equal((a|b)-(a&b), c, "#{a} ^ #{b}") # Hacker's Delight
-        assert_equal(b, c ^ a, "(#{a} ^ #{b}) ^ #{a}")
-      }
-    }
-  end
-
-  def test_lshift
-    small_values = VS.find_all {|v| v < 8000 }
-    VS.each {|a|
-      small_values.each {|b|
-        c = a << b
-        check_class(c)
-        if 0 <= b
-          assert_equal(a, c >> b, "(#{a} << #{b}) >> #{b}")
-          assert_equal(a * 2**b, c, "#{a} << #{b}")
-        end
-        0.upto(c.size*8+10) {|nth|
-          assert_equal(a[nth-b], c[nth], "(#{a} << #{b})[#{nth}]")
-        }
-      }
-    }
-    assert_equal(0, 1 << -0x40000000)
-    assert_equal(0, 1 << -0x40000001)
-    assert_equal(0, 1 << -0x80000000)
-    assert_equal(0, 1 << -0x80000001)
-    # assert_equal(bdsize(0x80000000), (1 << 0x80000000).size)
-  end
-
-  def test_rshift
-    small_values = VS.find_all {|v| -8000 < v }
-    VS.each {|a|
-      small_values.each {|b|
-        c = a >> b
-        check_class(c)
-        if b <= 0
-          assert_equal(a, c << b, "(#{a} >> #{b}) << #{b}")
-          assert_equal(a * 2**(-b), c, "#{a} >> #{b}")
-        end
-        0.upto(c.size*8+10) {|nth|
-          assert_equal(a[nth+b], c[nth], "(#{a} >> #{b})[#{nth}]")
-        }
-      }
-    }
-    # assert_equal(bdsize(0x40000001), (1 >> -0x40000001).size)
-    assert((1 >> 0x80000000).zero?)
-    assert((1 >> 0xffffffff).zero?)
-    assert((1 >> 0x100000000).zero?)
-    # assert_equal((1 << 0x40000000), (1 >> -0x40000000))
-    # assert_equal((1 << 0x40000001), (1 >> -0x40000001))
-  end
-
-  def test_succ
-    VS.each {|a|
-      b = a.succ
-      check_class(b)
-      assert_equal(a+1, b, "(#{a}).succ")
-      assert_equal(a, b.pred, "(#{a}).succ.pred")
-      assert_equal(a, b-1, "(#{a}).succ - 1")
-    }
-  end
-
-  def test_pred
-    VS.each {|a|
-      b = a.pred
-      check_class(b)
-      assert_equal(a-1, b, "(#{a}).pred")
-      assert_equal(a, b.succ, "(#{a}).pred.succ")
-      assert_equal(a, b + 1, "(#{a}).pred + 1")
-    }
-  end
-
-  def test_unary_plus
-    VS.each {|a|
-      b = +a
-      check_class(b)
-      assert_equal(a, b, "+(#{a})")
-    }
-  end
-
-  def test_unary_minus
-    VS.each {|a|
-      b = -a
-      check_class(b)
-      assert_equal(0-a, b, "-(#{a})")
-      assert_equal(~a+1, b, "-(#{a})")
-      assert_equal(0, a+b, "#{a}+(-(#{a}))")
-    }
-  end
-
-  def test_cmp
-    VS.each_with_index {|a, i|
-      VS.each_with_index {|b, j|
-        assert_equal(i <=> j, a <=> b, "#{a} <=> #{b}")
-        assert_equal(i < j, a < b, "#{a} < #{b}")
-        assert_equal(i <= j, a <= b, "#{a} <= #{b}")
-        assert_equal(i > j, a > b, "#{a} > #{b}")
-        assert_equal(i >= j, a >= b, "#{a} >= #{b}")
-      }
-    }
-  end
-
-  def test_eq
-    VS.each_with_index {|a, i|
-      VS.each_with_index {|b, j|
-        c = a == b
-        assert_equal(b == a, c, "#{a} == #{b}")
-        assert_equal(i == j, c, "#{a} == #{b}")
-      }
-    }
-  end
-
-  def test_abs
-    VS.each {|a|
-      b = a.abs
-      check_class(b)
-      if a < 0
-        assert_equal(-a, b, "(#{a}).abs")
-      else
-        assert_equal(a, b, "(#{a}).abs")
-      end
-    }
-  end
-
-  def test_ceil
-    VS.each {|a|
-      b = a.ceil
-      check_class(b)
-      assert_equal(a, b, "(#{a}).ceil")
-    }
-  end
-
-  def test_floor
-    VS.each {|a|
-      b = a.floor
-      check_class(b)
-      assert_equal(a, b, "(#{a}).floor")
-    }
-  end
-
-  def test_round
-    VS.each {|a|
-      b = a.round
-      check_class(b)
-      assert_equal(a, b, "(#{a}).round")
-    }
-  end
-
-  def test_truncate
-    VS.each {|a|
-      b = a.truncate
-      check_class(b)
-      assert_equal(a, b, "(#{a}).truncate")
-    }
-  end
-
-  def test_remainder
-    VS.each {|a|
-      VS.each {|b|
-        if b == 0
-          assert_raise(ZeroDivisionError) { a.divmod(b) }
-        else
-          r = a.remainder(b)
-          check_class(r)
-          if a < 0
-            assert_operator(-b.abs, :<, r, "#{a}.remainder(#{b})")
-            assert_operator(0, :>=, r, "#{a}.remainder(#{b})")
-          elsif 0 < a
-            assert_operator(0, :<=, r, "#{a}.remainder(#{b})")
-            assert_operator(b.abs, :>, r, "#{a}.remainder(#{b})")
-          else
-            assert_equal(0, r, "#{a}.remainder(#{b})")
-          end
-        end
-      }
-    }
-  end
-
-  def test_zero_nonzero
-    VS.each {|a|
-      z = a.zero?
-      n = a.nonzero?
-      if a == 0
-        assert_equal(true, z, "(#{a}).zero?")
-        assert_equal(nil, n, "(#{a}).nonzero?")
-      else
-        assert_equal(false, z, "(#{a}).zero?")
-        assert_equal(a, n, "(#{a}).nonzero?")
-        check_class(n)
-      end
-      assert(z ^ n, "(#{a}).zero? ^ (#{a}).nonzero?")
-    }
-  end
-
-  def test_even_odd
-    VS.each {|a|
-      e = a.even?
-      o = a.odd?
-      assert_equal((a % 2) == 0, e, "(#{a}).even?")
-      assert_equal((a % 2) == 1, o, "(#{a}).odd")
-      assert_equal((a & 1) == 0, e, "(#{a}).even?")
-      assert_equal((a & 1) == 1, o, "(#{a}).odd")
-      assert(e ^ o, "(#{a}).even? ^ (#{a}).odd?")
-    }
-  end
-
-  def test_to_s
-    2.upto(36) {|radix|
-      VS.each {|a|
-        s = a.to_s(radix)
-        b = s.to_i(radix)
-        assert_equal(a, b, "(#{a}).to_s(#{radix}).to_i(#{radix})")
-      }
-    }
-  end
-
-  def test_printf_x
-    VS.reverse_each {|a|
-      s = sprintf("%x", a)
-      if /\A\.\./ =~ s
-        b = -($'.tr('0123456789abcdef', 'fedcba9876543210').to_i(16) + 1)
-      else
-        b = s.to_i(16)
-      end
-      assert_equal(a, b, "sprintf('%x', #{a}) = #{s.inspect}")
-    }
-  end
-
-  def test_printf_x_sign
-    VS.reverse_each {|a|
-      s = sprintf("%+x", a)
-      b = s.to_i(16)
-      assert_equal(a, b, "sprintf('%+x', #{a}) = #{s.inspect}")
-      s = sprintf("% x", a)
-      b = s.to_i(16)
-      assert_equal(a, b, "sprintf('% x', #{a}) = #{s.inspect}")
-    }
-  end
-
-  def test_printf_o
-    VS.reverse_each {|a|
-      s = sprintf("%o", a)
-      if /\A\.\./ =~ s
-        b = -($'.tr('01234567', '76543210').to_i(8) + 1)
-      else
-        b = s.to_i(8)
-      end
-      assert_equal(a, b, "sprintf('%o', #{a}) = #{s.inspect}")
-    }
-  end
-
-  def test_printf_o_sign
-    VS.reverse_each {|a|
-      s = sprintf("%+o", a)
-      b = s.to_i(8)
-      assert_equal(a, b, "sprintf('%+o', #{a}) = #{s.inspect}")
-      s = sprintf("% o", a)
-      b = s.to_i(8)
-      assert_equal(a, b, "sprintf('% o', #{a}) = #{s.inspect}")
-    }
-  end
-
-  def test_printf_b
-    VS.reverse_each {|a|
-      s = sprintf("%b", a)
-      if /\A\.\./ =~ s
-        b = -($'.tr('01', '10').to_i(2) + 1)
-      else
-        b = s.to_i(2)
-      end
-      assert_equal(a, b, "sprintf('%b', #{a}) = #{s.inspect}")
-    }
-  end
-
-  def test_printf_b_sign
-    VS.reverse_each {|a|
-      s = sprintf("%+b", a)
-      b = s.to_i(2)
-      assert_equal(a, b, "sprintf('%+b', #{a}) = #{s.inspect}")
-      s = sprintf("% b", a)
-      b = s.to_i(2)
-      assert_equal(a, b, "sprintf('% b', #{a}) = #{s.inspect}")
-    }
-  end
-
-  def test_printf_di
-    VS.reverse_each {|a|
-      s = sprintf("%d", a)
-      b = s.to_i
-      assert_equal(a, b, "sprintf('%d', #{a}) = #{s.inspect}")
-      s = sprintf("%i", a)
-      b = s.to_i
-      assert_equal(a, b, "sprintf('%i', #{a}) = #{s.inspect}")
-    }
-  end
-
-  def test_marshal
-    VS.reverse_each {|a|
-      s = Marshal.dump(a)
-      b = Marshal.load(s)
-      assert_equal(a, b, "Marshal.load(Marshal.dump(#{a}))")
-    }
-  end
-
-  def test_pack_ber
-    template = "w"
-    VS.reverse_each {|a|
-      if a < 0
-        assert_raise(ArgumentError) { [a].pack(template) }
-      else
-        s = [a].pack(template)
-        b = s.unpack(template)[0]
-        assert_equal(a, b, "[#{a}].pack(#{template.dump}).unpack(#{template.dump})")
-      end
-    }
-  end
-
-  def test_pack_utf8
-    template = "U"
-    VS.reverse_each {|a|
-      if a < 0 || 0x7fffffff < a
-        assert_raise(RangeError) { [a].pack(template) }
-      else
-        s = [a].pack(template)
-        b = s.unpack(template)[0]
-        assert_equal(a, b, "[#{a}].pack(#{template.dump}).unpack(#{template.dump})")
-      end
-    }
-  end
-
-  def test_Integer
-    assert_raise(ArgumentError) {Integer("0x-1")}
-    assert_raise(ArgumentError) {Integer("-0x-1")}
-    assert_raise(ArgumentError) {Integer("0x     123")}
-    assert_raise(ArgumentError) {Integer("0x      123")}
-    assert_raise(ArgumentError) {Integer("0x0x5")}
-    assert_raise(ArgumentError) {Integer("0x0x000000005")}
-    assert_nothing_raised(ArgumentError) {
-      assert_equal(1540841, "0x0x5".to_i(36))
-    }
-    assert_raise(ArgumentError) { Integer("--0") }
-    assert_raise(ArgumentError) { Integer("-+0") }
-    assert_raise(ArgumentError) { Integer("++1") }
-    assert_raise(ArgumentError) { Integer("") }
-    assert_raise(ArgumentError) { Integer("10  x") }
-    assert_raise(ArgumentError) { Integer("1__2") }
-    assert_raise(ArgumentError) { Integer("1z") }
-    assert_raise(ArgumentError) { Integer("46116860184273__87904") }
-    assert_raise(ArgumentError) { Integer("4611686018427387904_") }
-    assert_raise(ArgumentError) { Integer("4611686018427387904  :") }
-    assert_equal(0x4000000000000000, Integer("46_11_686_0184273_87904"))
-    assert_raise(ArgumentError) { Integer("\0") }
-    assert_nothing_raised(ArgumentError, "[ruby-core:13873]") {
-      assert_equal(0, Integer("0 "))
-    }
-    assert_nothing_raised(ArgumentError, "[ruby-core:14139]") {
-      assert_equal(0377, Integer("0_3_7_7"))
-    }
-    assert_raise(ArgumentError, "[ruby-core:14139]") {Integer("0__3_7_7")}
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_io.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_io.rb
deleted file mode 100644 (file)
index 642c8f4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-require 'test/unit'
-
-class TestIO < Test::Unit::TestCase
-  def test_gets_rs
-    r, w = IO.pipe
-    w.print "\377xyz"
-    w.close
-    assert_equal("\377", r.gets("\377"), "[ruby-dev:24460]")
-    r.close
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_iterator.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_iterator.rb
deleted file mode 100644 (file)
index 2cd48b2..0000000
+++ /dev/null
@@ -1,477 +0,0 @@
-require 'test/unit'
-
-class Array
-  def iter_test1
-    collect{|e| [e, yield(e)]}.sort{|a,b|a[1]<=>b[1]}
-  end
-  def iter_test2
-    a = collect{|e| [e, yield(e)]}
-    a.sort{|a,b|a[1]<=>b[1]}
-  end
-end
-
-class TestIterator < Test::Unit::TestCase
-  def ttt
-    assert(iterator?)
-  end
-
-  def test_iterator
-    assert(!iterator?)
-
-    ttt{}
-
-    # yield at top level       !! here's not toplevel
-    assert(!defined?(yield))
-  end
-
-  def test_array
-    $x = [1, 2, 3, 4]
-    $y = []
-
-    # iterator over array
-    for i in $x
-      $y.push i
-    end
-    assert_equal($x, $y)
-  end
-
-  def tt
-    1.upto(10) {|i|
-      yield i
-    }
-  end
-
-  def tt2(dummy)
-    yield 1
-  end
-
-  def tt3(&block)
-    tt2(raise(ArgumentError,""),&block)
-  end
-
-  def test_nested_iterator
-    i = 0
-    tt{|i| break if i == 5}
-    assert_equal(5, i)
-
-    assert_raises(ArgumentError) do
-      tt3{}
-    end
-  end
-
-  def tt4 &block
-    tt2(raise(ArgumentError,""),&block)
-  end
-
-  def test_block_argument_without_paren
-    assert_raises(ArgumentError) do
-      tt4{}
-    end
-  end
-
-  # iterator break/redo/next/retry
-  def test_break
-    done = true
-    loop{
-      break
-      done = false                     # should not reach here
-    }
-    assert(done)
-
-    done = false
-    $bad = false
-    loop {
-      break if done
-      done = true
-      next
-      $bad = true                      # should not reach here
-    }
-    assert(!$bad)
-
-    done = false
-    $bad = false
-    loop {
-      break if done
-      done = true
-      redo
-      $bad = true                      # should not reach here
-    }
-    assert(!$bad)
-
-    $x = []
-    for i in 1 .. 7
-      $x.push i
-    end
-    assert_equal(7, $x.size)
-    assert_equal([1, 2, 3, 4, 5, 6, 7], $x)
-
-    $done = false
-    $x = []
-    for i in 1 .. 7                    # see how retry works in iterator loop
-      if i == 4 and not $done
-       $done = true
-       retry
-      end
-      $x.push(i)
-    end
-    assert_equal(10, $x.size)
-    assert_equal([1, 2, 3, 1, 2, 3, 4, 5, 6, 7], $x)
-  end
-
-  def test_append_method_to_built_in_class
-    $x = [[1,2],[3,4],[5,6]]
-    assert_equal($x.iter_test1{|x|x}, $x.iter_test2{|x|x})
-  end
-
-  class IterTest
-    def initialize(e); @body = e; end
-
-    def each0(&block); @body.each(&block); end
-    def each1(&block); @body.each {|*x| block.call(*x) } end
-    def each2(&block); @body.each {|*x| block.call(x) } end
-    def each3(&block); @body.each {|x| block.call(*x) } end
-    def each4(&block); @body.each {|x| block.call(x) } end
-    def each5; @body.each {|*x| yield(*x) } end
-    def each6; @body.each {|*x| yield(x) } end
-    def each7; @body.each {|x| yield(*x) } end
-    def each8; @body.each {|x| yield(x) } end
-
-    def f(a)
-      a
-    end
-  end
-
-  def test_itertest
-    assert_equal([1], IterTest.new(nil).method(:f).to_proc.call([1]))
-    m = /\w+/.match("abc")
-    assert_equal([m], IterTest.new(nil).method(:f).to_proc.call([m]))
-
-    IterTest.new([0]).each0 {|x| assert_equal(0, x)}
-    IterTest.new([1]).each1 {|x| assert_equal(1, x)}
-    IterTest.new([2]).each2 {|x| assert_equal([2], x)}
-    IterTest.new([3]).each3 {|x| assert_equal(3, x)}
-    IterTest.new([4]).each4 {|x| assert_equal(4, x)}
-    IterTest.new([5]).each5 {|x| assert_equal(5, x)}
-    IterTest.new([6]).each6 {|x| assert_equal([6], x)}
-    IterTest.new([7]).each7 {|x| assert_equal(7, x)}
-    IterTest.new([8]).each8 {|x| assert_equal(8, x)}
-
-    IterTest.new([[0]]).each0 {|x| assert_equal([0], x)}
-    IterTest.new([[1]]).each1 {|x| assert_equal([1], x)}
-    IterTest.new([[2]]).each2 {|x| assert_equal([[2]], x)}
-    IterTest.new([[3]]).each3 {|x| assert_equal(3, x)}
-    IterTest.new([[4]]).each4 {|x| assert_equal([4], x)}
-    IterTest.new([[5]]).each5 {|x| assert_equal([5], x)}
-    IterTest.new([[6]]).each6 {|x| assert_equal([[6]], x)}
-    IterTest.new([[7]]).each7 {|x| assert_equal(7, x)}
-    IterTest.new([[8]]).each8 {|x| assert_equal([8], x)}
-
-    IterTest.new([[0,0]]).each0 {|x| assert_equal([0,0], x)}
-    IterTest.new([[8,8]]).each8 {|x| assert_equal([8,8], x)}
-  end
-
-  def m(var)
-    var
-  end
-
-  def m1
-    m(block_given?)
-  end
-
-  def m2
-    m(block_given?,&proc{})
-  end
-
-  def test_block_given
-    assert(m1{p 'test'})
-    assert(m2{p 'test'})
-    assert(!m1())
-    assert(!m2())
-  end
-
-  def m3(var, &block)
-    m(yield(var), &block)
-  end
-
-  def m4(&block)
-    m(m1(), &block)
-  end
-
-  def test_block_passing
-    assert(!m4())
-    assert(!m4 {})
-    assert_equal(100, m3(10) {|x|x*x})
-  end
-
-  class C
-    include Enumerable
-    def initialize
-      @a = [1,2,3]
-    end
-    def each(&block)
-      @a.each(&block)
-    end
-  end
-
-  def test_collect
-    assert_equal([1,2,3], C.new.collect{|n| n})
-  end
-
-  def test_proc
-    assert_instance_of(Proc, lambda{})
-    assert_instance_of(Proc, Proc.new{})
-    lambda{|a|assert_equal(a, 1)}.call(1)
-  end
-
-  def test_block
-    assert_instance_of(NilClass, get_block)
-    assert_instance_of(Proc, get_block{})
-  end
-
-  def test_argument
-    assert_nothing_raised {lambda{||}.call}
-    assert_raises(ArgumentError) {lambda{||}.call(1)}
-    assert_nothing_raised {lambda{|a,|}.call(1)}
-    assert_raises(ArgumentError) {lambda{|a,|}.call()}
-    assert_raises(ArgumentError) {lambda{|a,|}.call(1,2)}
-  end
-
-  def get_block(&block)
-    block
-  end
-
-  def test_get_block
-    assert_instance_of(Proc, get_block{})
-    assert_nothing_raised {get_block{||}.call()}
-    assert_nothing_raised {get_block{||}.call(1)}
-    assert_nothing_raised {get_block{|a,|}.call(1)}
-    assert_nothing_raised {get_block{|a,|}.call()}
-    assert_nothing_raised {get_block{|a,|}.call(1,2)}
-
-    assert_nothing_raised {get_block(&lambda{||}).call()}
-    assert_raises(ArgumentError) {get_block(&lambda{||}).call(1)}
-    assert_nothing_raised {get_block(&lambda{|a,|}).call(1)}
-    assert_raises(ArgumentError) {get_block(&lambda{|a,|}).call(1,2)}
-
-    block = get_block{11}
-    assert_instance_of(Proc, block)
-    assert_instance_of(Proc, block.to_proc)
-    assert_equal(block.clone.call, 11)
-    assert_instance_of(Proc, get_block(&block))
-
-    lambda = lambda{44}
-    assert_instance_of(Proc, lambda)
-    assert_instance_of(Proc, lambda.to_proc)
-    assert_equal(lambda.clone.call, 44)
-    assert_instance_of(Proc, get_block(&lambda))
-
-    assert_equal(1, Proc.new{|a,| a}.call(1,2,3))
-    assert_nothing_raised {Proc.new{|a,|}.call(1,2)}
-  end
-
-  def return1_test
-    Proc.new {
-      return 55
-    }.call + 5
-  end
-
-  def test_return1
-    assert_equal(55, return1_test())
-  end
-
-  def return2_test
-    lambda {
-      return 55
-    }.call + 5
-  end
-
-  def test_return2
-    assert_equal(60, return2_test())
-  end
-
-  def proc_call(&b)
-    b.call
-  end
-  def proc_yield()
-    yield
-  end
-  def proc_return1
-    proc_call{return 42}+1
-  end
-
-  def test_proc_return1
-    assert_equal(42, proc_return1())
-  end
-
-  def proc_return2
-    proc_yield{return 42}+1
-  end
-
-  def test_proc_return2
-    assert_equal(42, proc_return2())
-  end
-
-  def test_ljump
-    block = get_block{11}
-    lambda = lambda{44}
-    assert_raises(LocalJumpError) {get_block{break}.call}
-    assert_nothing_raised {lambda{break}.call}
-    assert_instance_of(LocalJumpError, (get_block{break}.call rescue $!))
-
-    assert_equal(-1, block.arity)
-    assert_equal(-1, lambda.arity)
-    assert_equal(0, lambda{||}.arity)
-    assert_equal(1, lambda{|a|}.arity)
-    assert_equal(1, lambda{|a,|}.arity)
-    assert_equal(2, lambda{|a,b|}.arity)
-  end
-
-  def marity_test(m)
-    method = method(m)
-    assert_equal(method.arity, method.to_proc.arity)
-  end
-
-  def test_marity
-    marity_test(:assert)
-    marity_test(:marity_test)
-    marity_test(:p)
-
-    lambda(&method(:assert)).call(true)
-    lambda(&get_block{|a,n| assert(a,n)}).call(true, "marity")
-  end
-
-  def foo
-    yield([:key, :value])
-  end
-  def bar(&blk)
-    blk.call([:key, :value])
-  end
-
-  def test_yield_vs_call
-    foo{|k,v| assert_equal([:key, :value], [k,v])}
-    bar{|k,v| assert_equal([:key, :value], [k,v])}
-  end
-
-  class H
-    def each
-      yield [:key, :value]
-    end
-  end
-
-  def test_assoc_yield
-    [{:key=>:value}, H.new].each {|h|
-      h.each{|a| assert_equal([:key, :value], a)}
-      h.each{|*a| assert_equal([[:key, :value]], a)}
-      h.each{|k,v| assert_equal([:key, :value], [k,v])}
-    }
-  end
-
-  class ITER_TEST1
-    def a
-      block_given?
-    end
-  end
-
-  class ITER_TEST2 < ITER_TEST1
-    include Test::Unit::Assertions
-    def a
-      assert(super)
-      super
-    end
-  end
-
-  def test_iter_test2
-    assert(ITER_TEST2.new.a {})
-  end
-
-  class ITER_TEST3
-    def foo x
-      return yield if block_given?
-      x
-    end
-  end
-
-  class ITER_TEST4 < ITER_TEST3
-    include Test::Unit::Assertions
-    def foo x
-      assert_equal(super, yield)
-      assert_equal(x, super(x, &nil))
-    end
-  end
-
-  def test_iter4
-    ITER_TEST4.new.foo(44){55}
-  end
-
-  def test_break__nested_loop1
-    _test_break__nested_loop1 do
-      break
-    end
-  end
-
-  def _test_break__nested_loop1
-    while true
-      yield
-    end
-    assert(false, "must not reach here")
-  end
-
-  def test_break__nested_loop2
-    _test_break__nested_loop2 do
-      break
-    end
-  end
-
-  def _test_break__nested_loop2
-    until false
-      yield
-    end
-    assert(false, "must not reach here")
-  end
-
-  def test_break__nested_loop3
-    _test_break__nested_loop3 do
-      break
-    end
-  end
-
-  def _test_break__nested_loop3
-    loop do
-      yield
-    end
-    assert(false, "must not reach here")
-  end
-
-  def test_break_from_enum
-    result = ["a"].inject("ng") {|x,y| break "ok"}
-    assert_equal("ok", result)
-  end
-
-  def _test_return_trace_func(x)
-    set_trace_func(proc {})
-    [].fetch(2) {return x}
-  ensure
-    set_trace_func(nil)
-  end
-
-  def test_return_trace_func
-    ok = "returned gracefully"
-    result = "skipped"
-    result = _test_return_trace_func(ok)
-  ensure
-    assert_equal(ok, result)
-    return
-  end
-
-  class IterString < ::String
-    def ===(other)
-      super if !block_given?
-    end
-  end
-
-  # Check that the block passed to an iterator
-  # does not get propagated inappropriately
-  def test_block_given_within_iterator
-    assert_equal(["b"], ["a", "b", "c"].grep(IterString.new("b")) {|s| s})
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_marshal.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_marshal.rb
deleted file mode 100644 (file)
index 11f3583..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-require 'test/unit'
-dir = File.dirname(File.expand_path(__FILE__))
-orgpath = $:.dup
-begin
-  $:.push(dir)
-  require 'marshaltestlib'
-ensure
-  $:.replace(orgpath)
-end
-
-class TestMarshal < Test::Unit::TestCase
-  include MarshalTestLib
-
-  def encode(o)
-    Marshal.dump(o)
-  end
-
-  def decode(s)
-    Marshal.load(s)
-  end
-
-  def fact(n)
-    return 1 if n == 0
-    f = 1
-    while n>0
-      f *= n
-      n -= 1
-    end
-    return f
-  end
-
-  StrClone=String.clone;
-
-  def test_marshal
-    $x = [1,2,3,[4,5,"foo"],{1=>"bar"},2.5,fact(30)]
-    $y = Marshal.dump($x)
-    assert_equal($x, Marshal.load($y))
-
-    assert_instance_of(StrClone, Marshal.load(Marshal.dump(StrClone.new("abc"))))
-
-    [[1,2,3,4], [81, 2, 118, 3146]].each { |w,x,y,z|
-      a = (x.to_f + y.to_f / z.to_f) * Math.exp(w.to_f / (x.to_f + y.to_f / z.to_f))
-      ma = Marshal.dump(a)
-      b = Marshal.load(ma)
-      assert_equal(a, b)
-    }
-  end
-
-  class C
-    def initialize(str)
-      @str = str
-    end
-    def _dump(limit)
-      @str
-    end
-    def self._load(s)
-      new(s)
-    end
-  end
-
-  def test_too_long_string
-    (data = Marshal.dump(C.new("a")))[-2, 1] = "\003\377\377\377"
-    e = assert_raise(ArgumentError, "[ruby-dev:32054]") {
-      Marshal.load(data)
-    }
-    assert_equal("marshal data too short", e.message)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_math.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_math.rb
deleted file mode 100644 (file)
index e1e49db..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-require 'test/unit'
-
-class TestMath < Test::Unit::TestCase
-  def test_math
-    assert_equal(2, Math.sqrt(4))
-
-    self.class.class_eval {
-      include Math
-    }
-    assert_equal(2, sqrt(4))
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_method.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_method.rb
deleted file mode 100644 (file)
index d721176..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-require 'test/unit'
-
-class TestMethod < Test::Unit::TestCase
-  def m0() end
-  def m1(a) end
-  def m2(a, b) end
-  def mo1(a = nil, &b) end
-  def mo2(a, b = nil) end
-  def mo3(*a) end
-  def mo4(a, *b, &c) end
-
-  class Base
-    def foo() :base end
-  end
-  class Derived < Base
-    def foo() :derived end
-  end
-
-  def test_arity
-    assert_equal(0, method(:m0).arity)
-    assert_equal(1, method(:m1).arity)
-    assert_equal(2, method(:m2).arity)
-    assert_equal(-1, method(:mo1).arity)
-    assert_equal(-2, method(:mo2).arity)
-    assert_equal(-1, method(:mo3).arity)
-    assert_equal(-2, method(:mo4).arity)
-  end
-
-  def test_unbind
-    assert_equal(:derived, Derived.new.foo)
-    um = Derived.new.method(:foo).unbind
-    assert_instance_of(UnboundMethod, um)
-    Derived.class_eval do
-      def foo() :changed end
-    end
-    assert_equal(:changed, Derived.new.foo)
-    assert_equal(:derived, um.bind(Derived.new).call)
-    assert_raise(TypeError) do
-      um.bind(Base.new)
-    end
-  end
-
-  def test_receiver_name_owner
-    o = Object.new
-    def o.foo; end
-    m = o.method(:foo)
-    assert_equal(o, m.receiver)
-    assert_equal("foo", m.name)
-    assert_equal(class << o; self; end, m.owner)
-    assert_equal("foo", m.unbind.name)
-    assert_equal(class << o; self; end, m.unbind.owner)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_objectspace.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_objectspace.rb
deleted file mode 100644 (file)
index a2d0164..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-require 'test/unit'
-
-class TestObjectSpace < Test::Unit::TestCase
-  def self.deftest_id2ref(obj)
-    /:(\d+)/ =~ caller[0]
-    file = $`
-    line = $1.to_i
-    code = <<"End"
-    define_method("test_id2ref_#{line}") {\
-      o = ObjectSpace._id2ref(obj.object_id);\
-      assert_same(obj, o, "didn't round trip: \#{obj.inspect}");\
-    }
-End
-    eval code, binding, file, line
-  end
-
-  deftest_id2ref(-0x4000000000000001)
-  deftest_id2ref(-0x4000000000000000)
-  deftest_id2ref(-0x40000001)
-  deftest_id2ref(-0x40000000)
-  deftest_id2ref(-1)
-  deftest_id2ref(0)
-  deftest_id2ref(1)
-  deftest_id2ref(0x3fffffff)
-  deftest_id2ref(0x40000000)
-  deftest_id2ref(0x3fffffffffffffff)
-  deftest_id2ref(0x4000000000000000)
-  deftest_id2ref(:a)
-  deftest_id2ref(:abcdefghijilkjl)
-  deftest_id2ref(:==)
-  deftest_id2ref(Object.new)
-  deftest_id2ref(self)
-  deftest_id2ref(true)
-  deftest_id2ref(false)
-  deftest_id2ref(nil)
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_pack.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_pack.rb
deleted file mode 100644 (file)
index e67465b..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-require 'test/unit'
-
-class TestPack < Test::Unit::TestCase
-  def test_pack
-    $format = "c2x5CCxsdils_l_a6";
-    # Need the expression in here to force ary[5] to be numeric.  This avoids
-    # test2 failing because ary2 goes str->numeric->str and ary does not.
-    ary = [1,-100,127,128,32767,987.654321098 / 100.0,12345,123456,-32767,-123456,"abcdef"]
-    $x = ary.pack($format)
-    ary2 = $x.unpack($format)
-
-    assert_equal(ary.length, ary2.length)
-    assert_equal(ary.join(':'), ary2.join(':'))
-    assert_match(/def/, $x)
-
-    $x = [-1073741825]
-    assert_equal($x, $x.pack("q").unpack("q"))
-
-    $x = [-1]
-    assert_equal($x, $x.pack("l").unpack("l"))
-  end
-
-  def test_pack_N
-    assert_equal "\000\000\000\000", [0].pack('N')
-    assert_equal "\000\000\000\001", [1].pack('N')
-    assert_equal "\000\000\000\002", [2].pack('N')
-    assert_equal "\000\000\000\003", [3].pack('N')
-    assert_equal "\377\377\377\376", [4294967294].pack('N')
-    assert_equal "\377\377\377\377", [4294967295].pack('N')
-
-    assert_equal "\200\000\000\000", [2**31].pack('N')
-    assert_equal "\177\377\377\377", [-2**31-1].pack('N')
-    assert_equal "\377\377\377\377", [-1].pack('N')
-
-    assert_equal "\000\000\000\001\000\000\000\001", [1,1].pack('N*')
-    assert_equal "\000\000\000\001\000\000\000\001\000\000\000\001", [1,1,1].pack('N*')
-  end
-
-  def test_unpack_N
-    assert_equal 1, "\000\000\000\001".unpack('N')[0]
-    assert_equal 2, "\000\000\000\002".unpack('N')[0]
-    assert_equal 3, "\000\000\000\003".unpack('N')[0]
-    assert_equal 3, "\000\000\000\003".unpack('N')[0]
-    assert_equal 4294967295, "\377\377\377\377".unpack('N')[0]
-    assert_equal [1,1], "\000\000\000\001\000\000\000\001".unpack('N*')
-    assert_equal [1,1,1], "\000\000\000\001\000\000\000\001\000\000\000\001".unpack('N*')
-  end
-
-  def test_pack_U
-    assert_raises(RangeError) { [-0x40000001].pack("U") }
-    assert_raises(RangeError) { [-0x40000000].pack("U") }
-    assert_raises(RangeError) { [-1].pack("U") }
-    assert_equal "\000", [0].pack("U")
-    assert_equal "\374\277\277\277\277\277", [0x3fffffff].pack("U")
-    assert_equal "\375\200\200\200\200\200", [0x40000000].pack("U")
-    assert_equal "\375\277\277\277\277\277", [0x7fffffff].pack("U")
-    assert_raises(RangeError) { [0x80000000].pack("U") }
-    assert_raises(RangeError) { [0x100000000].pack("U") }
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_path.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_path.rb
deleted file mode 100644 (file)
index 63dbd07..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-require 'test/unit'
-
-class TestPath < Test::Unit::TestCase
-  def test_path
-    assert_equal("a", File.basename("a"))
-    assert_equal("b", File.basename("a/b"))
-    assert_equal("b", File.basename("a/b/"))
-    assert_equal("/", File.basename("/"))
-    assert_equal("/", File.basename("//"))
-    assert_equal("/", File.basename("///"))
-    assert_equal("b", File.basename("a/b////"))
-    assert_equal("a", File.basename("a.rb", ".rb"))
-    assert_equal("a", File.basename("a.rb///", ".rb"))
-    assert_equal("a", File.basename("a.rb///", ".*"))
-    assert_equal("a.rb", File.basename("a.rb///", ".c"))
-    assert_equal(".", File.dirname("a"))
-    assert_equal("/", File.dirname("/"))
-    assert_equal("/", File.dirname("/a"))
-    assert_equal("a", File.dirname("a/b"))
-    assert_equal("a/b", File.dirname("a/b/c"))
-    assert_equal("/a/b", File.dirname("/a/b/c"))
-    assert_equal("/a", File.dirname("/a/b/"))
-    assert_equal("/a", File.dirname("/a/b///"))
-    case Dir.pwd
-    when %r'\A\w:'
-      assert_match(/\A\w:\/\z/, File.expand_path(".", "/"))
-      assert_match(/\A\w:\/a\z/, File.expand_path("a", "/"))
-      dosish = true
-    when %r'\A//'
-      assert_match(%r'\A//[^/]+/[^/]+\z', File.expand_path(".", "/"))
-      assert_match(%r'\A//[^/]+/[^/]+/a\z', File.expand_path(".", "/"))
-      dosish = true
-    else
-      assert_equal("/", File.expand_path(".", "/"))
-      assert_equal("/sub", File.expand_path("sub", "/"))
-    end
-    if dosish
-      assert_equal("//machine/share", File.expand_path("/", "//machine/share/sub"))
-      assert_equal("//machine/share/dir", File.expand_path("/dir", "//machine/share/sub"))
-      assert_equal("z:/", File.expand_path("/", "z:/sub"))
-      assert_equal("z:/dir", File.expand_path("/dir", "z:/sub"))
-    end
-    assert_equal("//", File.expand_path(".", "//"))
-    assert_equal("//sub", File.expand_path("sub", "//"))
-  end
-
-  def test_dirname # [ruby-dev:27738]
-    if /(bcc|ms)win\d|mingw|cygwin|djgpp|human|emx/ =~ RUBY_PLATFORM
-      # DOSISH_DRIVE_LETTER
-      assert_equal('C:.', File.dirname('C:'))
-      assert_equal('C:.', File.dirname('C:a'))
-      assert_equal('C:.', File.dirname('C:a/'))
-      assert_equal('C:a', File.dirname('C:a/b'))
-
-      assert_equal('C:/', File.dirname('C:/'))
-      assert_equal('C:/', File.dirname('C:/a'))
-      assert_equal('C:/', File.dirname('C:/a/'))
-      assert_equal('C:/a', File.dirname('C:/a/b'))
-
-      assert_equal('C:/', File.dirname('C://'))
-      assert_equal('C:/', File.dirname('C://a'))
-      assert_equal('C:/', File.dirname('C://a/'))
-      assert_equal('C:/a', File.dirname('C://a/b'))
-
-      assert_equal('C:/', File.dirname('C:///'))
-      assert_equal('C:/', File.dirname('C:///a'))
-      assert_equal('C:/', File.dirname('C:///a/'))
-      assert_equal('C:/a', File.dirname('C:///a/b'))
-    else
-      # others
-      assert_equal('.', File.dirname('C:'))
-      assert_equal('.', File.dirname('C:a'))
-      assert_equal('.', File.dirname('C:a/'))
-      assert_equal('C:a', File.dirname('C:a/b'))
-
-      assert_equal('.', File.dirname('C:/'))
-      assert_equal('C:', File.dirname('C:/a'))
-      assert_equal('C:', File.dirname('C:/a/'))
-      assert_equal('C:/a', File.dirname('C:/a/b'))
-
-      assert_equal('.', File.dirname('C://'))
-      assert_equal('C:', File.dirname('C://a'))
-      assert_equal('C:', File.dirname('C://a/'))
-      # not spec.
-      #assert_equal('C://a', File.dirname('C://a/b'))
-
-      assert_equal('.', File.dirname('C:///'))
-      assert_equal('C:', File.dirname('C:///a'))
-      assert_equal('C:', File.dirname('C:///a/'))
-      # not spec.
-      #assert_equal('C:///a', File.dirname('C:///a/b'))
-    end
-
-    assert_equal('.', File.dirname(''))
-    assert_equal('.', File.dirname('a'))
-    assert_equal('.', File.dirname('a/'))
-    assert_equal('a', File.dirname('a/b'))
-
-    assert_equal('/', File.dirname('/'))
-    assert_equal('/', File.dirname('/a'))
-    assert_equal('/', File.dirname('/a/'))
-    assert_equal('/a', File.dirname('/a/b'))
-
-    if /(bcc|ms|cyg)win|mingw|djgpp|human|emx/ =~ RUBY_PLATFORM
-      # DOSISH_UNC
-      assert_equal('//', File.dirname('//'))
-      assert_equal('//a', File.dirname('//a'))
-      assert_equal('//a', File.dirname('//a/'))
-      assert_equal('//a/b', File.dirname('//a/b'))
-      assert_equal('//a/b', File.dirname('//a/b/'))
-      assert_equal('//a/b', File.dirname('//a/b/c'))
-
-      assert_equal('//', File.dirname('///'))
-      assert_equal('//a', File.dirname('///a'))
-      assert_equal('//a', File.dirname('///a/'))
-      assert_equal('//a/b', File.dirname('///a/b'))
-      assert_equal('//a/b', File.dirname('///a/b/'))
-      assert_equal('//a/b', File.dirname('///a/b/c'))
-    else
-      # others
-      assert_equal('/', File.dirname('//'))
-      assert_equal('/', File.dirname('//a'))
-      assert_equal('/', File.dirname('//a/'))
-      assert_equal('/a', File.dirname('//a/b'))
-      assert_equal('/a', File.dirname('//a/b/'))
-      assert_equal('/a/b', File.dirname('//a/b/c'))
-
-      assert_equal('/', File.dirname('///'))
-      assert_equal('/', File.dirname('///a'))
-      assert_equal('/', File.dirname('///a/'))
-      assert_equal('/a', File.dirname('///a/b'))
-      assert_equal('/a', File.dirname('///a/b/'))
-      assert_equal('/a/b', File.dirname('///a/b/c'))
-    end
-  end
-
-  def test_basename # [ruby-dev:27766]
-    if /(bcc|ms)win\d|mingw|cygwin|djgpp|human|emx/ =~ RUBY_PLATFORM
-      # DOSISH_DRIVE_LETTER
-      assert_equal('', File.basename('C:'))
-      assert_equal('a', File.basename('C:a'))
-      assert_equal('a', File.basename('C:a/'))
-      assert_equal('b', File.basename('C:a/b'))
-
-      assert_equal('/', File.basename('C:/'))
-      assert_equal('a', File.basename('C:/a'))
-      assert_equal('a', File.basename('C:/a/'))
-      assert_equal('b', File.basename('C:/a/b'))
-
-      assert_equal('/', File.basename('C://'))
-      assert_equal('a', File.basename('C://a'))
-      assert_equal('a', File.basename('C://a/'))
-      assert_equal('b', File.basename('C://a/b'))
-
-      assert_equal('/', File.basename('C:///'))
-      assert_equal('a', File.basename('C:///a'))
-      assert_equal('a', File.basename('C:///a/'))
-      assert_equal('b', File.basename('C:///a/b'))
-    else
-      # others
-      assert_equal('C:', File.basename('C:'))
-      assert_equal('C:a', File.basename('C:a'))
-      assert_equal('C:a', File.basename('C:a/'))
-      assert_equal('b', File.basename('C:a/b'))
-
-      assert_equal('C:', File.basename('C:/'))
-      assert_equal('a', File.basename('C:/a'))
-      assert_equal('a', File.basename('C:/a/'))
-      assert_equal('b', File.basename('C:/a/b'))
-
-      assert_equal('C:', File.basename('C://'))
-      assert_equal('a', File.basename('C://a'))
-      assert_equal('a', File.basename('C://a/'))
-      assert_equal('b', File.basename('C://a/b'))
-
-      assert_equal('C:', File.basename('C:///'))
-      assert_equal('a', File.basename('C:///a'))
-      assert_equal('a', File.basename('C:///a/'))
-      assert_equal('b', File.basename('C:///a/b'))
-    end
-
-    assert_equal('', File.basename(''))
-    assert_equal('a', File.basename('a'))
-    assert_equal('a', File.basename('a/'))
-    assert_equal('b', File.basename('a/b'))
-
-    assert_equal('/', File.basename('/'))
-    assert_equal('a', File.basename('/a'))
-    assert_equal('a', File.basename('/a/'))
-    assert_equal('b', File.basename('/a/b'))
-
-    if /(bcc|ms|cyg)win|mingw|djgpp|human|emx/ =~ RUBY_PLATFORM
-      # DOSISH_UNC
-      assert_equal('/', File.basename('//'))
-      assert_equal('/', File.basename('//a'))
-      assert_equal('/', File.basename('//a/'))
-      assert_equal('/', File.basename('//a/b'))
-      assert_equal('/', File.basename('//a/b/'))
-      assert_equal('c', File.basename('//a/b/c'))
-
-      assert_equal('/', File.basename('///'))
-      assert_equal('/', File.basename('///a'))
-      assert_equal('/', File.basename('///a/'))
-      assert_equal('/', File.basename('///a/b'))
-      assert_equal('/', File.basename('///a/b/'))
-      assert_equal('c', File.basename('///a/b/c'))
-    else
-      # others
-      assert_equal('/', File.basename('//'))
-      assert_equal('a', File.basename('//a'))
-      assert_equal('a', File.basename('//a/'))
-      assert_equal('b', File.basename('//a/b'))
-      assert_equal('b', File.basename('//a/b/'))
-      assert_equal('c', File.basename('//a/b/c'))
-
-      assert_equal('/', File.basename('///'))
-      assert_equal('a', File.basename('///a'))
-      assert_equal('a', File.basename('///a/'))
-      assert_equal('b', File.basename('///a/b'))
-      assert_equal('b', File.basename('///a/b/'))
-      assert_equal('c', File.basename('///a/b/c'))
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_pipe.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_pipe.rb
deleted file mode 100644 (file)
index c3b4d29..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-require 'test/unit'
-$:.replace([File.dirname(File.expand_path(__FILE__))] | $:)
-require 'ut_eof'
-require 'envutil'
-
-class TestPipe < Test::Unit::TestCase
-  include TestEOF
-  def open_file(content)
-    r, w = IO.pipe
-    w << content
-    w.close
-    begin
-      yield r
-    ensure
-      r.close
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_proc.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_proc.rb
deleted file mode 100644 (file)
index 0ddc76a..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-require 'test/unit'
-
-class TestProc < Test::Unit::TestCase
-  def test_proc
-    p1 = proc{|i| i}
-    assert_equal(2, p1.call(2))
-    assert_equal(3, p1.call(3))
-
-    p1 = proc{|i| i*2}
-    assert_equal(4, p1.call(2))
-    assert_equal(6, p1.call(3))
-
-    p2 = nil
-    x=0
-
-    proc{
-      iii=5                            # nested local variable
-      p1 = proc{|i|
-        iii = i
-      }
-      p2 = proc {
-        x = iii                        # nested variables shared by procs
-      }
-      # scope of nested variables
-      assert(defined?(iii))
-    }.call
-    assert(!defined?(iii))             # out of scope
-
-    loop{iii=5; assert(eval("defined? iii")); break}
-    loop {
-      iii = 10
-      def self.dyna_var_check
-        loop {
-          assert(!defined?(iii))
-          break
-        }
-      end
-      dyna_var_check
-      break
-    }
-    p1.call(5)
-    p2.call
-    assert_equal(5, x)
-  end
-
-  def assert_arity(n)
-    meta = class << self; self; end
-    meta.class_eval {define_method(:foo, Proc.new)}
-    assert_equal(n, method(:foo).arity)
-  end
-
-  def test_arity
-    assert_equal(-1, proc{}.arity)
-    assert_equal(0, proc{||}.arity)
-    assert_equal(1, proc{|x|}.arity)
-    assert_equal(2, proc{|x, y|}.arity)
-    assert_equal(-2, proc{|x, *y|}.arity)
-    assert_equal(-1, proc{|*x|}.arity)
-    assert_equal(-1, proc{|*|}.arity)
-
-    assert_arity(-1) {}
-    assert_arity(0) {||}
-    assert_arity(1) {|x|}
-    assert_arity(2) {|x, y|}
-    assert_arity(-2) {|x, *y|}
-    assert_arity(-1) {|*x|}
-    assert_arity(-1) {|*|}
-  end
-
-  # [ruby-dev:22592]
-  def m(x)
-    lambda { x }
-  end
-  def test_eq
-    # [ruby-dev:22592]
-    a = m(1)
-    b = m(2)
-    assert_not_equal(a, b)
-    assert_not_equal(a.call, b.call)
-
-    # [ruby-dev:22599]
-    assert_not_equal(proc {||}, proc {|x,y|})
-
-    # [ruby-dev:22601]
-    a = lambda {|x| lambda {} }.call(1)
-    b = lambda {}
-    assert_not_equal(a, b)
-  end
-
-  def test_block_par
-    assert_equal(10, Proc.new{|&b| b.call(10)}.call {|x| x})
-    assert_equal(12, Proc.new{|a,&b| b.call(a)}.call(12) {|x| x})
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_process.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_process.rb
deleted file mode 100644 (file)
index 93eb871..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-require 'test/unit'
-
-class TestProcess < Test::Unit::TestCase
-  def test_rlimit_availability
-    begin
-      Process.getrlimit(nil)
-    rescue NotImplementedError
-      assert_raise(NotImplementedError) { Process.setrlimit }
-    rescue TypeError
-      assert_raise(ArgumentError) { Process.setrlimit }
-    end
-  end
-
-  def rlimit_exist?
-    Process.getrlimit(nil)
-  rescue NotImplementedError
-    return false
-  rescue TypeError
-    return true
-  end
-
-  def test_rlimit_nofile
-    return unless rlimit_exist?
-    pid = fork {
-      cur_nofile, max_nofile = Process.getrlimit(Process::RLIMIT_NOFILE)
-      begin
-        Process.setrlimit(Process::RLIMIT_NOFILE, 0, max_nofile)
-      rescue Errno::EINVAL
-        exit 0
-      end
-      begin
-        IO.pipe
-      rescue Errno::EMFILE
-        exit 0
-      end
-      exit 1
-    }
-    Process.wait pid
-    assert_equal(0, $?.to_i)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_rand.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_rand.rb
deleted file mode 100644 (file)
index e2fd127..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-require 'test/unit'
-
-class TestRand < Test::Unit::TestCase
-  def test_mt
-    srand(0x00000456_00000345_00000234_00000123)
-    %w(1067595299  955945823  477289528 4107218783 4228976476).each {|w|
-      assert_equal(w.to_i, rand(0x100000000))
-    }
-  end
-
-  def test_0x3fffffff
-    srand(0)
-    %w(209652396 398764591 924231285 404868288 441365315).each {|w|
-      assert_equal(w.to_i, rand(0x3fffffff))
-    }
-  end
-
-  def test_0x40000000
-    srand(0)
-    %w(209652396 398764591 924231285 404868288 441365315).each {|w|
-      assert_equal(w.to_i, rand(0x40000000))
-    }
-  end
-
-  def test_0x40000001
-    srand(0)
-    %w(209652396 398764591 924231285 441365315 192771779).each {|w|
-      assert_equal(w.to_i, rand(0x40000001))
-    }
-  end
-
-  def test_0xffffffff
-    srand(0)
-    %w(2357136044 2546248239 3071714933 3626093760 2588848963).each {|w|
-      assert_equal(w.to_i, rand(0xffffffff))
-    }
-  end
-
-  def test_0x100000000
-    srand(0)
-    %w(2357136044 2546248239 3071714933 3626093760 2588848963).each {|w|
-      assert_equal(w.to_i, rand(0x100000000))
-    }
-  end
-
-  def test_0x100000001
-    srand(0)
-    %w(2546248239 1277901399 243580376 1171049868 2051556033).each {|w|
-      assert_equal(w.to_i, rand(0x100000001))
-    }
-  end
-
-  def test_rand_0x100000000
-    srand(311702798)
-    %w(4119812344 3870378946 80324654 4294967296 410016213).each {|w|
-      assert_equal(w.to_i, rand(0x100000001))
-    }
-  end
-
-  def test_0x1000000000000
-    srand(0)
-    %w(11736396900911
-       183025067478208
-       197104029029115
-       130583529618791
-       180361239846611).each {|w|
-      assert_equal(w.to_i, rand(0x1000000000000))
-    }
-  end
-
-  def test_0x1000000000001
-    srand(0)
-    %w(187121911899765
-       197104029029115
-       180361239846611
-       236336749852452
-       208739549485656).each {|w|
-      assert_equal(w.to_i, rand(0x1000000000001))
-    }
-  end
-
-  def test_0x3fffffffffffffff
-    srand(0)
-    %w(900450186894289455
-       3969543146641149120
-       1895649597198586619
-       827948490035658087
-       3203365596207111891).each {|w|
-      assert_equal(w.to_i, rand(0x3fffffffffffffff))
-    }
-  end
-
-  def test_0x4000000000000000
-    srand(0)
-    %w(900450186894289455
-       3969543146641149120
-       1895649597198586619
-       827948490035658087
-       3203365596207111891).each {|w|
-      assert_equal(w.to_i, rand(0x4000000000000000))
-    }
-  end
-
-  def test_0x4000000000000001
-    srand(0)
-    %w(900450186894289455
-       3969543146641149120
-       1895649597198586619
-       827948490035658087
-       2279347887019741461).each {|w|
-      assert_equal(w.to_i, rand(0x4000000000000001))
-    }
-  end
-
-  def test_neg_0x10000000000
-    ws = %w(455570294424 1073054410371 790795084744 2445173525 1088503892627)
-    srand(3)
-    ws.each {|w| assert_equal(w.to_i, rand(0x10000000000)) }
-    srand(3)
-    ws.each {|w| assert_equal(w.to_i, rand(-0x10000000000)) }
-  end
-
-  def test_neg_0x10000
-    ws = %w(2732 43567 42613 52416 45891)
-    srand(0)
-    ws.each {|w| assert_equal(w.to_i, rand(0x10000)) }
-    srand(0)
-    ws.each {|w| assert_equal(w.to_i, rand(-0x10000)) }
-  end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_range.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_range.rb
deleted file mode 100644 (file)
index 4551750..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'test/unit'
-
-class TestRange < Test::Unit::TestCase
-  def test_range_string
-    # XXX: Is this really the test of Range?
-    assert_equal([], ("a" ... "a").to_a)
-    assert_equal(["a"], ("a" .. "a").to_a)
-    assert_equal(["a"], ("a" ... "b").to_a)
-    assert_equal(["a", "b"], ("a" .. "b").to_a)
-  end
-
-  def test_evaluation_order
-    arr = [1,2]
-    r = (arr.shift)..(arr.shift)
-    assert_equal(1..2, r, "[ruby-dev:26383]")
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_readpartial.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_readpartial.rb
deleted file mode 100644 (file)
index 3877e21..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-require 'test/unit'
-require 'timeout'
-require 'fcntl'
-
-class TestReadPartial < Test::Unit::TestCase
-  def make_pipe
-    r, w = IO.pipe
-    begin
-      yield r, w
-    ensure
-      r.close unless r.closed?
-      w.close unless w.closed?
-    end
-  end
-
-  def pipe
-    make_pipe {|r, w|
-      yield r, w
-    }
-    return unless defined?(Fcntl::F_SETFL)
-    return unless defined?(Fcntl::F_GETFL)
-    return unless defined?(Fcntl::O_NONBLOCK)
-    make_pipe {|r, w|
-      r.fcntl(Fcntl::F_SETFL, r.fcntl(Fcntl::F_GETFL) | Fcntl::O_NONBLOCK)
-      yield r, w
-    }
-  end
-
-  def test_length_zero
-    pipe {|r, w|
-      assert_equal('', r.readpartial(0))
-    }
-  end
-
-  def test_closed_pipe
-    pipe {|r, w|
-      w << 'abc'
-      w.close
-      assert_equal('ab', r.readpartial(2))
-      assert_equal('c', r.readpartial(2))
-      assert_raises(EOFError) { r.readpartial(2) }
-      assert_raises(EOFError) { r.readpartial(2) }
-    }
-  end
-
-  if !File::ALT_SEPARATOR # read on pipe cannot timeout on Windows.
-  def test_open_pipe
-    pipe {|r, w|
-      w << 'abc'
-      assert_equal('ab', r.readpartial(2))
-      assert_equal('c', r.readpartial(2))
-      assert_raises(TimeoutError) {
-        timeout(0.1) { r.readpartial(2) }
-      }
-    }
-  end
-
-  def test_with_stdio
-    pipe {|r, w|
-      w << "abc\ndef\n"
-      assert_equal("abc\n", r.gets)
-      w << "ghi\n"
-      assert_equal("de", r.readpartial(2))
-      assert_equal("f\n", r.readpartial(4096))
-      assert_equal("ghi\n", r.readpartial(4096))
-      assert_raises(TimeoutError) {
-        timeout(0.1) { r.readpartial(2) }
-      }
-    }
-  end
-  end
-
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_settracefunc.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_settracefunc.rb
deleted file mode 100644 (file)
index 14d6679..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-require 'test/unit'
-
-class TestSetTraceFunc < Test::Unit::TestCase
-  def foo; end;
-
-  def bar
-    events = []
-    set_trace_func(Proc.new { |event, file, lineno, mid, bidning, klass|
-      events << [event, lineno, mid, klass]
-    })
-    return events
-  end
-
-  def test_event
-    events = []
-    set_trace_func(Proc.new { |event, file, lineno, mid, bidning, klass|
-      events << [event, lineno, mid, klass]
-    })
-    a = 1
-    foo
-    a
-    b = 1 + 2
-    if b == 3
-      case b
-      when 2
-        c = "b == 2"
-      when 3
-        c = "b == 3"
-      end
-    end
-    begin
-      raise "error"
-    rescue
-    end
-    eval("class Foo; end")
-    set_trace_func nil
-
-    assert_equal(["line", 19, :test_event, TestSetTraceFunc],
-                 events.shift)     # a = 1
-    assert_equal(["line", 20, :test_event, TestSetTraceFunc],
-                 events.shift)     # foo
-    assert_equal(["call", 4, :foo, TestSetTraceFunc],
-                 events.shift)     # foo
-    assert_equal(["return", 4, :foo, TestSetTraceFunc],
-                 events.shift)     # foo
-    assert_equal(["line", 21, :test_event, TestSetTraceFunc],
-                 events.shift)     # a
-    assert_equal(["line", 22, :test_event, TestSetTraceFunc],
-                 events.shift)     # b = 1 + 2
-    assert_equal(["c-call", 22, :+, Fixnum],
-                 events.shift)     # 1 + 2
-    assert_equal(["c-return", 22, :+, Fixnum],
-                 events.shift)     # 1 + 2
-    assert_equal(["line", 23, :test_event, TestSetTraceFunc],
-                 events.shift)     # if b == 3
-    assert_equal(["c-call", 23, :==, Fixnum],
-                 events.shift)     # b == 3
-    assert_equal(["c-return", 23, :==, Fixnum],
-                 events.shift)     # b == 3
-    assert_equal(["line", 23, :test_event, TestSetTraceFunc],
-                 events.shift)     # if b == 3
-    assert_equal(["line", 24, :test_event, TestSetTraceFunc],
-                 events.shift)     # case b
-    assert_equal(["line", 25, :test_event, TestSetTraceFunc],
-                 events.shift)     # when 2
-    assert_equal(["c-call", 25, :===, Kernel],
-                 events.shift)     # when 2
-    assert_equal(["c-call", 25, :==, Fixnum],
-                 events.shift)     # when 2
-    assert_equal(["c-return", 25, :==, Fixnum],
-                 events.shift)     # when 2
-    assert_equal(["c-return", 25, :===, Kernel],
-                 events.shift)     # when 2
-    assert_equal(["line", 27, :test_event, TestSetTraceFunc],
-                 events.shift)     # when 3
-    assert_equal(["c-call", 27, :===, Kernel],
-                 events.shift)     # when 3
-    assert_equal(["c-return", 27, :===, Kernel],
-                 events.shift)     # when 3
-    assert_equal(["line", 28, :test_event, TestSetTraceFunc],
-                 events.shift)     # c = "b == 3"
-    assert_equal(["line", 31, :test_event, TestSetTraceFunc],
-                 events.shift)     # begin
-    assert_equal(["line", 32, :test_event, TestSetTraceFunc],
-                 events.shift)     # raise "error"
-    assert_equal(["c-call", 32, :raise, Kernel],
-                 events.shift)     # raise "error"
-    assert_equal(["c-call", 32, :new, Class],
-                 events.shift)     # raise "error"
-    assert_equal(["c-call", 32, :initialize, Exception],
-                 events.shift)     # raise "error"
-    assert_equal(["c-return", 32, :initialize, Exception],
-                 events.shift)     # raise "error"
-    assert_equal(["c-return", 32, :new, Class],
-                 events.shift)     # raise "error"
-    assert_equal(["c-call", 32, :backtrace, Exception],
-                 events.shift)     # raise "error"
-    assert_equal(["c-return", 32, :backtrace, Exception],
-                 events.shift)     # raise "error"
-    assert_equal(["c-call", 32, :set_backtrace, Exception],
-                 events.shift)     # raise "error"
-    assert_equal(["c-return", 32, :set_backtrace, Exception],
-                 events.shift)     # raise "error"
-    assert_equal(["raise", 32, :test_event, TestSetTraceFunc],
-                 events.shift)     # raise "error"
-    assert_equal(["c-return", 32, :raise, Kernel],
-                 events.shift)     # raise "error"
-    assert_equal(["line", 35, :test_event, TestSetTraceFunc],
-                 events.shift)     # eval(<<EOF)
-    assert_equal(["c-call", 35, :eval, Kernel],
-                 events.shift)     # eval(<<EOF)
-    assert_equal(["line", 1, :test_event, TestSetTraceFunc],
-                 events.shift)     # class Foo
-    assert_equal(["c-call", 1, :inherited, Class],
-                 events.shift)     # class Foo
-    assert_equal(["c-return", 1, :inherited, Class],
-                 events.shift)     # class Foo
-    assert_equal(["class", 1, :test_event, TestSetTraceFunc],
-                 events.shift)     # class Foo
-    assert_equal(["end", 1, :test_event, TestSetTraceFunc],
-                 events.shift)     # class Foo
-    assert_equal(["c-return", 35, :eval, Kernel],
-                 events.shift)     # eval(<<EOF)
-    assert_equal(["line", 36, :test_event, TestSetTraceFunc],
-                 events.shift)     # set_trace_func nil
-    assert_equal(["c-call", 36, :set_trace_func, Kernel],
-                 events.shift)     # set_trace_func nil
-    assert_equal([], events)
-
-    events = bar
-    set_trace_func(nil)
-    assert_equal(["line", 11, :bar, TestSetTraceFunc], events.shift)
-    assert_equal(["return", 11, :bar, TestSetTraceFunc], events.shift)
-    assert_equal(["line", 131, :test_event, TestSetTraceFunc], events.shift)
-    assert_equal(["c-call", 131, :set_trace_func, Kernel], events.shift)
-    assert_equal([], events)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_signal.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_signal.rb
deleted file mode 100644 (file)
index 43e16b8..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-require 'test/unit'
-require 'timeout'
-
-class TestSignal < Test::Unit::TestCase
-  def have_fork?
-    begin
-      fork{}
-      true
-    rescue NotImplementedError
-      false
-    end
-  end
-
-  def test_signal
-    defined?(Process.kill) or return
-    begin
-      $x = 0
-      oldtrap = trap "SIGINT", proc{|sig| $x = 2}
-      Process.kill "SIGINT", $$
-      sleep 0.1
-      assert_equal(2, $x)
-
-      trap "SIGINT", proc{raise "Interrupt"}
-
-      x = assert_raises(RuntimeError) do
-        Process.kill "SIGINT", $$
-        sleep 0.1
-      end
-      assert(x)
-      assert_match(/Interrupt/, x.message)
-    ensure
-      trap "SIGINT", oldtrap
-    end
-  end
-
-  def test_exit_action
-    return unless have_fork?   # snip this test
-    begin
-      r, w = IO.pipe
-      r0, w0 = IO.pipe
-      pid = fork {
-        trap(:USR1, "EXIT")
-        w0.close
-        w.syswrite("a")
-        Thread.start { Thread.pass }
-        r0.sysread(4096)
-      }
-      r.sysread(1)
-      sleep 0.1
-      assert_nothing_raised("[ruby-dev:26128]") {
-        Process.kill(:USR1, pid)
-        begin
-          Timeout.timeout(10) {
-            Process.waitpid pid
-          }
-        rescue Timeout::Error
-          Process.kill(:TERM, pid)
-          raise
-        end
-      }
-    ensure
-      r.close
-      w.close
-      r0.close
-      w0.close
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_string.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_string.rb
deleted file mode 100644 (file)
index f8938ca..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'test/unit'
-
-class TestString < Test::Unit::TestCase
-  def check_sum(str, bits=16)
-    sum = 0
-    str.each_byte {|c| sum += c}
-    sum = sum & ((1 << bits) - 1) if bits != 0
-    assert_equal(sum, str.sum(bits))
-  end
-  def test_sum
-    assert_equal(0, "".sum)
-    assert_equal(294, "abc".sum)
-    check_sum("abc")
-    check_sum("\x80")
-    0.upto(70) {|bits|
-      check_sum("xyz", bits)
-    }
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_stringchar.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_stringchar.rb
deleted file mode 100644 (file)
index 34934e8..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-require 'test/unit'
-
-class TestStringchar < Test::Unit::TestCase
-  def test_string
-    assert_equal("abcd", "abcd")
-    assert_match(/abcd/, "abcd")
-    assert("abcd" === "abcd")
-    # compile time string concatenation
-    assert_equal("abcd", "ab" "cd")
-    assert_equal("22aacd44", "#{22}aa" "cd#{44}")
-    assert_equal("22aacd445566", "#{22}aa" "cd#{44}" "55" "#{66}")
-    assert("abc" !~ /^$/)
-    assert("abc\n" !~ /^$/)
-    assert("abc" !~ /^d*$/)
-    assert_equal(3, ("abc" =~ /d*$/))
-    assert("" =~ /^$/)
-    assert("\n" =~ /^$/)
-    assert("a\n\n" =~ /^$/)
-    assert("abcabc" =~ /.*a/); assert_equal("abca", $&)
-    assert("abcabc" =~ /.*c/); assert_equal("abcabc", $&)
-    assert("abcabc" =~ /.*?a/); assert_equal("a", $&)
-    assert("abcabc" =~ /.*?c/); assert_equal("abc", $&)
-    assert(/(.|\n)*?\n(b|\n)/ =~ "a\nb\n\n"); assert_equal("a\nb", $&)
-
-    assert(/^(ab+)+b/ =~ "ababb"); assert_equal("ababb", $&)
-    assert(/^(?:ab+)+b/ =~ "ababb"); assert_equal("ababb", $&)
-    assert(/^(ab+)+/ =~ "ababb"); assert_equal("ababb", $&)
-    assert(/^(?:ab+)+/ =~ "ababb"); assert_equal("ababb", $&)
-
-    assert(/(\s+\d+){2}/ =~ " 1 2"); assert_equal(" 1 2", $&)
-    assert(/(?:\s+\d+){2}/ =~ " 1 2"); assert_equal(" 1 2", $&)
-
-    $x = <<END;
-ABCD
-ABCD
-END
-    $x.gsub!(/((.|\n)*?)B((.|\n)*?)D/){$1+$3}
-    assert_equal("AC\nAC\n", $x)
-
-    assert("foobar" =~ /foo(?=(bar)|(baz))/)
-    assert("foobaz" =~ /foo(?=(bar)|(baz))/)
-
-    $foo = "abc"
-    assert_equal("abc = abc", "#$foo = abc")
-    assert_equal("abc = abc", "#{$foo} = abc")
-
-    foo = "abc"
-    assert_equal("abc = abc", "#{foo} = abc")
-
-    assert_equal('-----', '-' * 5)
-    assert_equal('-', '-' * 1)
-    assert_equal('', '-' * 0)
-
-    foo = '-'
-    assert_equal('-----', foo * 5)
-    assert_equal('-', foo * 1)
-    assert_equal('', foo * 0)
-
-    $x = "a.gif"
-    assert_equal("gif", $x.sub(/.*\.([^\.]+)$/, '\1'))
-    assert_equal("b.gif", $x.sub(/.*\.([^\.]+)$/, 'b.\1'))
-    assert_equal("", $x.sub(/.*\.([^\.]+)$/, '\2'))
-    assert_equal("ab", $x.sub(/.*\.([^\.]+)$/, 'a\2b'))
-    assert_equal("<a.gif>", $x.sub(/.*\.([^\.]+)$/, '<\&>'))
-  end
-
-  def test_char
-    # character constants(assumes ASCII)
-    assert_equal(?a, "a"[0])
-    assert_equal(?a, ?a)
-    assert_equal(1, ?\C-a)
-    assert_equal(225, ?\M-a)
-    assert_equal(129, ?\M-\C-a)
-    assert_equal(?A, "a".upcase![0])
-    assert_equal(?a, "A".downcase![0])
-    assert_equal("ABC", "abc".tr!("a-z", "A-Z"))
-    assert_equal("ABC", "aabbcccc".tr_s!("a-z", "A-Z"))
-    assert_equal("abc", "abcc".squeeze!("a-z"))
-    assert_equal("ad", "abcd".delete!("bc"))
-
-    $x = "abcdef"
-    $y = [ ?a, ?b, ?c, ?d, ?e, ?f ]
-    $bad = false
-    $x.each_byte {|i|
-      if i != $y.shift
-        $bad = true
-        break
-      end
-    }
-    assert(!$bad)
-
-    s = "a string"
-    s[0..s.size]="another string"
-    assert_equal("another string", s)
-
-    s = <<EOS
-#{
-[1,2,3].join(",")
-}
-EOS
-    assert_equal("1,2,3\n", s)
-    assert_equal(926381, "Just".to_i(36))
-    assert_equal(-23200231779, "-another".to_i(36))
-    assert_equal("ruby", 1299022.to_s(36))
-    assert_equal("-hacker", -1045307475.to_s(36))
-    assert_equal(265419172580680477752431643787347, "Just_another_Ruby_hacker".to_i(36))
-    assert_equal("-justanotherrubyhacker", -265419172580680477752431643787347.to_s(36))
-
-    a = []
-    (0..255).each {|n|
-      ch = [n].pack("C")
-      a.push ch if /a#{Regexp.quote ch}b/x =~ "ab"
-    }
-    assert_equal(0, a.size)
-  end
-
-  def test_bang
-    s = "aBc"
-    s.upcase
-    assert_equal("aBc", s)
-    s.upcase!
-    assert_equal("ABC", s)
-
-    s = "aBc"
-    s.downcase
-    assert_equal("aBc", s)
-    s.downcase!
-    assert_equal("abc", s)
-
-    s = "aBc"
-    s.swapcase
-    assert_equal("aBc", s)
-    s.swapcase!
-    assert_equal("AbC", s)
-
-    s = "aBc"
-    s.capitalize
-    assert_equal("aBc", s)
-    s.capitalize!
-    assert_equal("Abc", s)
-
-    s = "aBc"
-    s.tr("a-z", "A-Z")
-    assert_equal("aBc", s)
-    s.tr!("a-z", "A-Z")
-    assert_equal("ABC", s)
-
-    s = "aaBBcc"
-    s.tr_s("a-z", "A-Z")
-    assert_equal("aaBBcc", s)
-    s.tr_s!("a-z", "A-Z")
-    assert_equal("ABBC", s)
-
-    s = "aaBBcc"
-    s.squeeze("a-z")
-    assert_equal("aaBBcc", s)
-    s.squeeze!("a-z")
-    assert_equal("aBBc", s)
-
-    s = "aaBBcc"
-    s.delete("a-z")
-    assert_equal("aaBBcc", s)
-    s.delete!("a-z")
-    assert_equal("BB", s)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_struct.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_struct.rb
deleted file mode 100644 (file)
index fa1bb15..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-require 'test/unit'
-
-class TestStruct < Test::Unit::TestCase
-  def test_struct
-    struct_test = Struct.new("Test", :foo, :bar)
-    assert_equal(Struct::Test, struct_test)
-
-    test = struct_test.new(1, 2)
-    assert_equal(1, test.foo)
-    assert_equal(2, test.bar)
-    assert_equal(1, test[0])
-    assert_equal(2, test[1])
-
-    a, b = test.to_a
-    assert_equal(1, a)
-    assert_equal(2, b)
-
-    test[0] = 22
-    assert_equal(22, test.foo)
-
-    test.bar = 47
-    assert_equal(47, test.bar)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_super.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_super.rb
deleted file mode 100644 (file)
index 900fe99..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-require 'test/unit'
-
-class TestSuper < Test::Unit::TestCase
-  class Base
-    def single(a) a end
-    def double(a, b) [a,b] end
-    def array(*a) a end
-    def optional(a = 0) a end
-  end
-  class Single1 < Base
-    def single(*) super end
-  end
-  class Single2 < Base
-    def single(a,*) super end
-  end
-  class Double1 < Base
-    def double(*) super end
-  end
-  class Double2 < Base
-    def double(a,*) super end
-  end
-  class Double3 < Base
-    def double(a,b,*) super end
-  end
-  class Array1 < Base
-    def array(*) super end
-  end
-  class Array2 < Base
-    def array(a,*) super end
-  end
-  class Array3 < Base
-    def array(a,b,*) super end
-  end
-  class Array4 < Base
-    def array(a,b,c,*) super end
-  end
-  class Optional1 < Base
-    def optional(a = 1) super end
-  end
-  class Optional2 < Base
-    def optional(a, b = 1) super end
-  end
-  class Optional3 < Base
-    def single(a = 1) super end
-  end
-  class Optional4 < Base
-    def array(a = 1, *) super end
-  end
-  class Optional5 < Base
-    def array(a = 1, b = 2, *) super end
-  end
-
-  def test_single1
-    assert_equal(1, Single1.new.single(1))
-  end
-  def test_single2
-    assert_equal(1, Single2.new.single(1))
-  end
-  def test_double1
-    assert_equal([1, 2], Double1.new.double(1, 2))
-  end
-  def test_double2
-    assert_equal([1, 2], Double2.new.double(1, 2))
-  end
-  def test_double3
-    assert_equal([1, 2], Double3.new.double(1, 2))
-  end
-  def test_array1
-    assert_equal([], Array1.new.array())
-    assert_equal([1], Array1.new.array(1))
-  end
-  def test_array2
-    assert_equal([1], Array2.new.array(1))
-    assert_equal([1,2], Array2.new.array(1, 2))
-  end
-  def test_array3
-    assert_equal([1,2], Array3.new.array(1, 2))
-    assert_equal([1,2,3], Array3.new.array(1, 2, 3))
-  end
-  def test_array4
-    assert_equal([1,2,3], Array4.new.array(1, 2, 3))
-    assert_equal([1,2,3,4], Array4.new.array(1, 2, 3, 4))
-  end
-  def test_optional1
-    assert_equal(9, Optional1.new.optional(9))
-    assert_equal(1, Optional1.new.optional)
-  end
-  def test_optional2
-    assert_raise(ArgumentError) do
-      # call Base#optional with 2 arguments; the 2nd arg is supplied
-      assert_equal(9, Optional2.new.optional(9))
-    end
-    assert_raise(ArgumentError) do
-      # call Base#optional with 2 arguments
-      assert_equal(9, Optional2.new.optional(9, 2))
-    end
-  end
-  def test_optional3
-    assert_equal(9, Optional3.new.single(9))
-    # call Base#single with 1 argument; the arg is supplied
-    assert_equal(1, Optional3.new.single)
-  end
-  def test_optional4
-    assert_equal([1], Optional4.new.array)
-    assert_equal([9], Optional4.new.array(9))
-    assert_equal([9, 8], Optional4.new.array(9, 8))
-  end
-  def test_optional5
-    assert_equal([1, 2], Optional5.new.array)
-    assert_equal([9, 2], Optional5.new.array(9))
-    assert_equal([9, 8], Optional5.new.array(9, 8))
-    assert_equal([9, 8, 7], Optional5.new.array(9, 8, 7))
-  end
-
-  class A
-    def tt(aa)
-      "A#tt"
-    end
-
-    def uu(a)
-      class << self
-        define_method(:tt) do |sym|
-          super
-        end
-      end
-    end
-  end
-
-  def test_define_method # [ruby-core:03856]
-    a = A.new
-    a.uu(12)
-    assert_equal("A#tt", a.tt(12))
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_symbol.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_symbol.rb
deleted file mode 100644 (file)
index 42350ba..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-require 'test/unit'
-
-class TestSymbol < Test::Unit::TestCase
-  # [ruby-core:3573]
-
-  def assert_eval_inspected(sym)
-    n = sym.inspect
-    assert_nothing_raised(SyntaxError) {assert_equal(sym, eval(n))}
-  end
-
-  def test_inspect_invalid
-    # 2) Symbol#inspect sometimes returns invalid symbol representations:
-    assert_eval_inspected(:"!")
-    assert_eval_inspected(:"=")
-    assert_eval_inspected(:"0")
-    assert_eval_inspected(:"$1")
-    assert_eval_inspected(:"@1")
-    assert_eval_inspected(:"@@1")
-    assert_eval_inspected(:"@")
-    assert_eval_inspected(:"@@")
-  end
-
-  def assert_inspect_evaled(n)
-    assert_nothing_raised(SyntaxError) {assert_equal(n, eval(n).inspect)}
-  end
-
-  def test_inspect_suboptimal
-    # 3) Symbol#inspect sometimes returns suboptimal symbol representations:
-    assert_inspect_evaled(':foo')
-    assert_inspect_evaled(':foo!')
-    assert_inspect_evaled(':bar?')
-    assert_inspect_evaled(':<<')
-    assert_inspect_evaled(':>>')
-    assert_inspect_evaled(':<=')
-    assert_inspect_evaled(':>=')
-    assert_inspect_evaled(':=~')
-    assert_inspect_evaled(':==')
-    assert_inspect_evaled(':===')
-    assert_raise(SyntaxError) {eval ':='}
-    assert_inspect_evaled(':*')
-    assert_inspect_evaled(':**')
-    assert_raise(SyntaxError) {eval ':***'}
-    assert_inspect_evaled(':+')
-    assert_inspect_evaled(':-')
-    assert_inspect_evaled(':+@')
-    assert_inspect_evaled(':-@')
-    assert_inspect_evaled(':|')
-    assert_inspect_evaled(':^')
-    assert_inspect_evaled(':&')
-    assert_inspect_evaled(':/')
-    assert_inspect_evaled(':%')
-    assert_inspect_evaled(':~')
-    assert_inspect_evaled(':`')
-    assert_inspect_evaled(':[]')
-    assert_inspect_evaled(':[]=')
-    assert_raise(SyntaxError) {eval ':||'}
-    assert_raise(SyntaxError) {eval ':&&'}
-    assert_raise(SyntaxError) {eval ':['}
-  end
-
-  def test_inspect_dollar
-    # 4) :$- always treats next character literally:
-    sym = "$-".intern
-    assert_nothing_raised(SyntaxError) {assert_equal(sym, eval(':$-'))}
-    assert_nothing_raised(SyntaxError) {assert_equal(sym, eval(":$-\n"))}
-    assert_nothing_raised(SyntaxError) {assert_equal(sym, eval(":$- "))}
-    assert_nothing_raised(SyntaxError) {assert_equal(sym, eval(":$-#"))}
-    assert_raise(SyntaxError) {eval ':$-('}
-  end
-
-  def test_inspect_number
-    # 5) Inconsistency between :$0 and :$1? The first one is valid, but the 
-    # latter isn't.
-    assert_inspect_evaled(':$0')
-    assert_inspect_evaled(':$1')
-  end
-
-  def test_to_proc
-    assert_equal %w(1 2 3), (1..3).map(&:to_s)
-    [
-      [],
-      [1],
-      [1, 2],
-      [1, [2, 3]],
-    ].each do |ary|
-      ary_id = ary.object_id
-      assert_equal ary_id, :object_id.to_proc.call(ary)
-      ary_ids = ary.collect{|x| x.object_id }
-      assert_equal ary_ids, ary.collect(&:object_id)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_system.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_system.rb
deleted file mode 100644 (file)
index 3513577..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-require 'test/unit'
-$:.replace([File.dirname(File.expand_path(__FILE__))] | $:)
-require 'envutil'
-
-class TestSystem < Test::Unit::TestCase
-  def valid_syntax?(code, fname)
-    code = code.sub(/\A(?:\s*\#.*$)*(\n)?/n) {
-      "#$&#{"\n" if $1 && !$2}BEGIN{return true}\n"
-    }
-    eval(code, nil, fname, 0)
-  end
-
-  def test_system
-    ruby = EnvUtil.rubybin
-    assert_equal("foobar\n", `echo foobar`)
-    assert_equal('foobar', `#{ruby} -e 'print "foobar"'`)
-
-    tmp = open("script_tmp", "w")
-    tmp.print "print $zzz\n";
-    tmp.close
-
-    assert_equal('true', `#{ruby} -s script_tmp -zzz`)
-    assert_equal('555', `#{ruby} -s script_tmp -zzz=555`)
-
-    tmp = open("script_tmp", "w")
-    tmp.print "#! /usr/local/bin/ruby -s\n";
-    tmp.print "print $zzz\n";
-    tmp.close
-
-    assert_equal('678', `#{ruby} script_tmp -zzz=678`)
-
-    tmp = open("script_tmp", "w")
-    tmp.print "this is a leading junk\n";
-    tmp.print "#! /usr/local/bin/ruby -s\n";
-    tmp.print "print $zzz\n";
-    tmp.print "__END__\n";
-    tmp.print "this is a trailing junk\n";
-    tmp.close
-
-    assert_equal('nil', `#{ruby} -x script_tmp`)
-    assert_equal('555', `#{ruby} -x script_tmp -zzz=555`)
-
-    tmp = open("script_tmp", "w")
-    for i in 1..5
-      tmp.print i, "\n"
-    end
-    tmp.close
-
-    `#{ruby} -i.bak -pe 'sub(/^[0-9]+$/){$&.to_i * 5}' script_tmp`
-    tmp = open("script_tmp", "r")
-    while tmp.gets
-      assert_equal(0, $_.to_i % 5)
-    end
-    tmp.close
-
-    File.unlink "script_tmp" or `/bin/rm -f "script_tmp"`
-    File.unlink "script_tmp.bak" or `/bin/rm -f "script_tmp.bak"`
-  end
-
-  def test_syntax
-    assert_nothing_raised(Exception) do
-      for script in Dir[File.expand_path("../../../{lib,sample,ext}/**/*.rb", __FILE__)]
-        valid_syntax? IO::read(script), script
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_time.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_time.rb
deleted file mode 100644 (file)
index ae1a35f..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-require 'test/unit'
-
-class TestTime < Test::Unit::TestCase
-  def test_time_add()
-    assert_equal(Time.utc(2000, 3, 21, 3, 30) + 3 * 3600,
-                 Time.utc(2000, 3, 21, 6, 30))
-    assert_equal(Time.utc(2000, 3, 21, 3, 30) + (-3 * 3600),
-                 Time.utc(2000, 3, 21, 0, 30))
-    assert_equal(0, (Time.at(1.1) + 0.9).usec)
-  end
-
-  def test_time_subt()
-    assert_equal(Time.utc(2000, 3, 21, 3, 30) - 3 * 3600,
-                 Time.utc(2000, 3, 21, 0, 30))
-    assert_equal(Time.utc(2000, 3, 21, 3, 30) - (-3 * 3600),
-                 Time.utc(2000, 3, 21, 6, 30))
-    assert_equal(900000, (Time.at(1.1) - 0.2).usec)
-  end
-
-  def test_time_time()
-    assert_equal(Time.utc(2000, 3, 21, 3, 30)  \
-                -Time.utc(2000, 3, 21, 0, 30), 3*3600)
-    assert_equal(Time.utc(2000, 3, 21, 0, 30)  \
-                -Time.utc(2000, 3, 21, 3, 30), -3*3600)
-  end
-
-  def negative_time_t?
-    begin
-      Time.at(-1)
-      true
-    rescue ArgumentError
-      false
-    end
-  end
-
-  def test_timegm
-    if negative_time_t?
-      assert_equal(-0x80000000, Time.utc(1901, 12, 13, 20, 45, 52).tv_sec)
-      assert_equal(-2, Time.utc(1969, 12, 31, 23, 59, 58).tv_sec)
-      assert_equal(-1, Time.utc(1969, 12, 31, 23, 59, 59).tv_sec)
-    end
-
-    assert_equal(0, Time.utc(1970, 1, 1, 0, 0, 0).tv_sec) # the Epoch
-    assert_equal(1, Time.utc(1970, 1, 1, 0, 0, 1).tv_sec)
-    assert_equal(31535999, Time.utc(1970, 12, 31, 23, 59, 59).tv_sec)
-    assert_equal(31536000, Time.utc(1971, 1, 1, 0, 0, 0).tv_sec)
-    assert_equal(78796799, Time.utc(1972, 6, 30, 23, 59, 59).tv_sec)
-
-    # 1972-06-30T23:59:60Z is the first leap second.
-    if Time.utc(1972, 7, 1, 0, 0, 0) - Time.utc(1972, 6, 30, 23, 59, 59) == 1
-      # no leap second.
-      assert_equal(78796800, Time.utc(1972, 7, 1, 0, 0, 0).tv_sec)
-      assert_equal(78796801, Time.utc(1972, 7, 1, 0, 0, 1).tv_sec)
-      assert_equal(946684800, Time.utc(2000, 1, 1, 0, 0, 0).tv_sec)
-      assert_equal(0x7fffffff, Time.utc(2038, 1, 19, 3, 14, 7).tv_sec)
-    else
-      # leap seconds supported.
-      assert_equal(2, Time.utc(1972, 7, 1, 0, 0, 0) - Time.utc(1972, 6, 30, 23, 59, 59))
-      assert_equal(78796800, Time.utc(1972, 6, 30, 23, 59, 60).tv_sec)
-      assert_equal(78796801, Time.utc(1972, 7, 1, 0, 0, 0).tv_sec)
-      assert_equal(78796802, Time.utc(1972, 7, 1, 0, 0, 1).tv_sec)
-      assert_equal(946684822, Time.utc(2000, 1, 1, 0, 0, 0).tv_sec)
-    end
-  end
-
-  def test_huge_difference # [ruby-dev:22619]
-    if negative_time_t?
-      assert_equal(Time.at(-0x80000000), Time.at(0x7fffffff) - 0xffffffff)
-      assert_equal(Time.at(-0x80000000), Time.at(0x7fffffff) + (-0xffffffff))
-      assert_equal(Time.at(0x7fffffff), Time.at(-0x80000000) + 0xffffffff)
-      assert_equal(Time.at(0x7fffffff), Time.at(-0x80000000) - (-0xffffffff))
-    end
-  end
-
-  def test_at
-    assert_equal(100000, Time.at(0.1).usec)
-    assert_equal(10000, Time.at(0.01).usec)
-    assert_equal(1000, Time.at(0.001).usec)
-    assert_equal(100, Time.at(0.0001).usec)
-    assert_equal(10, Time.at(0.00001).usec)
-    assert_equal(1, Time.at(0.000001).usec)
-    assert_equal(0, Time.at(1e-7).usec)
-    assert_equal(0, Time.at(4e-7).usec)
-    assert_equal(1, Time.at(6e-7).usec)
-    assert_equal(1, Time.at(14e-7).usec)
-    assert_equal(2, Time.at(16e-7).usec)
-    if negative_time_t?
-      assert_equal(0, Time.at(-1e-7).usec)
-      assert_equal(0, Time.at(-4e-7).usec)
-      assert_equal(999999, Time.at(-6e-7).usec)
-      assert_equal(999999, Time.at(-14e-7).usec)
-      assert_equal(999998, Time.at(-16e-7).usec)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_trace.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_trace.rb
deleted file mode 100644 (file)
index 6adfe0b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-require 'test/unit'
-
-class TestTrace < Test::Unit::TestCase
-  def test_trace
-    $x = 1234
-    $y = 0
-    trace_var :$x, proc{$y = $x}
-    $x = 40414
-    assert_equal($x, $y)
-    
-    untrace_var :$x
-    $x = 19660208
-    assert_not_equal($x, $y)
-    
-    trace_var :$x, proc{$x *= 2}
-    $x = 5
-    assert_equal(10, $x)
-    
-    untrace_var :$x
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_variable.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_variable.rb
deleted file mode 100644 (file)
index 8726160..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-require 'test/unit'
-
-class TestVariable < Test::Unit::TestCase
-  class Gods
-    @@rule = "Uranus"
-    def ruler0
-      @@rule
-    end
-
-    def self.ruler1            # <= per method definition style
-      @@rule
-    end
-    class << self                      # <= multiple method definition style
-      def ruler2
-       @@rule
-      end
-    end
-  end
-
-  module Olympians
-    @@rule ="Zeus"
-    def ruler3
-      @@rule
-    end
-  end
-
-  class Titans < Gods
-    @@rule = "Cronus"
-    include Olympians                  # OK to cause warning (intentional)
-  end
-
-  def test_variable
-    assert_instance_of(Fixnum, $$)
-    
-    # read-only variable
-    assert_raises(NameError) do
-      $$ = 5
-    end
-
-    foobar = "foobar"
-    $_ = foobar
-    assert_equal(foobar, $_)
-
-    assert_equal("Cronus", Gods.new.ruler0)
-    assert_equal("Cronus", Gods.ruler1)
-    assert_equal("Cronus", Gods.ruler2)
-    assert_equal("Cronus", Titans.ruler1)
-    assert_equal("Cronus", Titans.ruler2)
-    atlas = Titans.new
-    assert_equal("Cronus", atlas.ruler0)
-    assert_equal("Zeus", atlas.ruler3)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_whileuntil.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/test_whileuntil.rb
deleted file mode 100644 (file)
index 6faed31..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-require 'test/unit'
-
-class TestWhileuntil < Test::Unit::TestCase
-  def test_while
-    tmp = open("while_tmp", "w")
-    tmp.print "tvi925\n";
-    tmp.print "tvi920\n";
-    tmp.print "vt100\n";
-    tmp.print "Amiga\n";
-    tmp.print "paper\n";
-    tmp.close
-
-    tmp = open("while_tmp", "r")
-    assert_instance_of(File, tmp)
-    
-    while line = tmp.gets()
-      break if /vt100/ =~ line
-    end
-
-    assert(!tmp.eof?)
-    assert_match(/vt100/, line)
-    tmp.close
-
-    tmp = open("while_tmp", "r")
-    while line = tmp.gets()
-      next if /vt100/ =~ line
-      assert_no_match(/vt100/, line)
-    end
-    assert(tmp.eof?)
-    assert_no_match(/vt100/, line)
-    tmp.close
-
-    tmp = open("while_tmp", "r")
-    while tmp.gets()
-      line = $_
-      gsub(/vt100/, 'VT100')
-      if $_ != line
-        $_.gsub!('VT100', 'Vt100')
-        redo
-      end
-      assert_no_match(/vt100/, $_)
-      assert_no_match(/VT100/, $_)
-    end
-    assert(tmp.eof?)
-    tmp.close
-
-    sum=0
-    for i in 1..10
-      sum += i
-      i -= 1
-      if i > 0
-        redo
-      end
-    end
-    assert_equal(220, sum)
-
-    tmp = open("while_tmp", "r")
-    while line = tmp.gets()
-      break if 3
-      assert_no_match(/vt100/, line)
-      assert_no_match(/Amiga/, line)
-      assert_no_match(/paper/, line)
-    end
-    tmp.close
-
-    File.unlink "while_tmp" or `/bin/rm -f "while_tmp"`
-    assert(!File.exist?("while_tmp"))
-  end
-
-  def test_until
-    i = 0
-    until i>4
-      i+=1
-    end
-    assert(i>4)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/ruby/ut_eof.rb b/ruby/doc/ruby/ruby-1.8.7/test/ruby/ut_eof.rb
deleted file mode 100644 (file)
index e6f6edd..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-require 'test/unit'
-
-module TestEOF
-  def test_eof_0
-    open_file("") {|f|
-      assert_equal("", f.read(0))
-      assert_equal("", f.read(0))
-      assert_equal("", f.read)
-      assert_nil(f.read(0))
-      assert_nil(f.read(0))
-    }
-    open_file("") {|f|
-      assert_nil(f.read(1))
-      assert_equal("", f.read)
-      assert_nil(f.read(1))
-    }
-    open_file("") {|f|
-      s = "x"
-      assert_equal("", f.read(nil, s))
-      assert_equal("", s)
-    }
-    open_file("") {|f|
-      s = "x"
-      assert_nil(f.read(10, s))
-      assert_equal("", s)
-    }
-  end
-
-  def test_eof_0_rw
-    return unless respond_to? :open_file_rw
-    open_file_rw("") {|f|
-      assert_equal("", f.read)
-      assert_equal("", f.read)
-      assert_equal(0, f.syswrite(""))
-      assert_equal("", f.read)
-    }
-  end
-
-  def test_eof_1
-    open_file("a") {|f|
-      assert_equal("", f.read(0))
-      assert_equal("a", f.read(1))
-      assert_equal("" , f.read(0))
-      assert_equal("" , f.read(0))
-      assert_equal("", f.read)
-      assert_nil(f.read(0))
-      assert_nil(f.read(0))
-    }
-    open_file("a") {|f|
-      assert_equal("a", f.read(1))
-      assert_nil(f.read(1))
-    }
-    open_file("a") {|f|
-      assert_equal("a", f.read(2))
-      assert_nil(f.read(1))
-      assert_equal("", f.read)
-      assert_nil(f.read(1))
-    }
-    open_file("a") {|f|
-      assert_equal("a", f.read)
-      assert_nil(f.read(1))
-      assert_equal("", f.read)
-      assert_nil(f.read(1))
-    }
-    open_file("a") {|f|
-      assert_equal("a", f.read(2))
-      assert_equal("", f.read)
-      assert_equal("", f.read)
-    }
-    open_file("a") {|f|
-      assert_equal("a", f.read)
-      assert_nil(f.read(0))
-    }
-    open_file("a") {|f|
-      s = "x"
-      assert_equal("a", f.read(nil, s))
-      assert_equal("a", s)
-    }
-    open_file("a") {|f|
-      s = "x"
-      assert_equal("a", f.read(10, s))
-      assert_equal("a", s)
-    }
-  end
-
-  def test_eof_2
-    open_file("") {|f|
-      assert_equal("", f.read)
-      assert(f.eof?)
-    }
-  end
-
-  def test_eof_3
-    open_file("") {|f|
-      assert(f.eof?)
-    }
-  end
-
-  module Seek
-    def open_file_seek(content, pos)
-      open_file(content) do |f|
-        f.seek(pos)
-        yield f
-      end
-    end
-
-    def test_eof_0_seek
-      open_file_seek("", 10) {|f|
-        assert_equal(10, f.pos)
-        assert_equal("", f.read(0))
-        assert_equal("", f.read)
-        assert_nil(f.read(0))
-        assert_equal("", f.read)
-      }
-    end
-
-    def test_eof_1_seek
-      open_file_seek("a", 10) {|f|
-        assert_equal("", f.read)
-        assert_equal("", f.read)
-      }
-      open_file_seek("a", 1) {|f|
-        assert_equal("", f.read)
-        assert_equal("", f.read)
-      }
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/runner.rb b/ruby/doc/ruby/ruby-1.8.7/test/runner.rb
deleted file mode 100644 (file)
index bbcbb70..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'test/unit'
-
-rcsid = %w$Id: runner.rb 11708 2007-02-12 23:01:19Z shyouhei $
-Version = rcsid[2].scan(/\d+/).collect!(&method(:Integer)).freeze
-Release = rcsid[3].freeze
-
-exit Test::Unit::AutoRunner.run(true, File.dirname($0))
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/sdbm/test_sdbm.rb b/ruby/doc/ruby/ruby-1.8.7/test/sdbm/test_sdbm.rb
deleted file mode 100644 (file)
index 8789d71..0000000
+++ /dev/null
@@ -1,534 +0,0 @@
-require 'test/unit'
-
-begin
-  require 'sdbm'
-rescue LoadError
-end
-
-class TestSDBM < Test::Unit::TestCase
-  def setup
-    @path = "tmptest_sdbm_"
-    assert_instance_of(SDBM, @sdbm = SDBM.new(@path))
-  end
-  def teardown
-    assert_nil(@sdbm.close)
-    ObjectSpace.each_object(SDBM) do |obj|
-      obj.close unless obj.closed?
-    end
-    File.delete *Dir.glob("tmptest_sdbm*").to_a
-    p Dir.glob("tmptest_sdbm*") if $DEBUG
-  end
-
-  def check_size(expect, sdbm=@sdbm)
-    assert_equal(expect, sdbm.size)
-    n = 0
-    sdbm.each { n+=1 }
-    assert_equal(expect, n)
-    if expect == 0
-      assert_equal(true, sdbm.empty?)
-    else
-      assert_equal(false, sdbm.empty?)
-    end
-  end
-
-  def have_fork?
-    begin
-      fork{}
-      true
-    rescue NotImplementedError
-      false
-    end
-  end
-
-  def test_version
-    assert(! SDBM.const_defined?(:VERSION))
-  end
-
-  def test_s_new_has_no_block
-    # SDBM.new ignore the block
-    foo = true
-    assert_instance_of(SDBM, sdbm = SDBM.new("tmptest_sdbm") { foo = false })
-    assert_equal(foo, true)
-    assert_nil(sdbm.close)
-  end
-  def test_s_open_no_create
-    assert_nil(sdbm = SDBM.open("tmptest_sdbm", nil))
-  ensure
-    sdbm.close if sdbm
-  end
-  def test_s_open_with_block
-    assert_equal(SDBM.open("tmptest_sdbm") { :foo }, :foo)
-  end
-=begin
-  # Is it guaranteed on many OS?
-  def test_s_open_lock_one_process
-    # locking on one process
-    assert_instance_of(SDBM, sdbm  = SDBM.open("tmptest_sdbm", 0644))
-    assert_raise(Errno::EWOULDBLOCK) {
-      begin
-       SDBM.open("tmptest_sdbm", 0644)
-      rescue Errno::EAGAIN
-       raise Errno::EWOULDBLOCK
-      end
-    }
-  end
-=end
-
-  def test_s_open_nolock
-    # sdbm 1.8.0 specific
-    if not defined? SDBM::NOLOCK
-      return
-    end
-    return unless have_fork?   # snip this test
-
-    fork() {
-      assert_instance_of(SDBM, sdbm  = SDBM.open("tmptest_sdbm", 0644,
-                                               SDBM::NOLOCK))
-      sleep 2
-    }
-    sleep 1
-    begin
-      sdbm2 = nil
-      assert_no_exception(Errno::EWOULDBLOCK, Errno::EAGAIN, Errno::EACCES) {
-       assert_instance_of(SDBM, sdbm2 = SDBM.open("tmptest_sdbm", 0644))
-      }
-    ensure
-      Process.wait
-      sdbm2.close if sdbm2
-    end
-
-    p Dir.glob("tmptest_sdbm*") if $DEBUG
-
-    fork() {
-      assert_instance_of(SDBM, sdbm  = SDBM.open("tmptest_sdbm", 0644))
-      sleep 2
-    }
-    begin
-      sleep 1
-      sdbm2 = nil
-      assert_no_exception(Errno::EWOULDBLOCK, Errno::EAGAIN, Errno::EACCES) {
-       # this test is failed on Cygwin98 (???)
-       assert_instance_of(SDBM, sdbm2 = SDBM.open("tmptest_sdbm", 0644,
-                                                  SDBM::NOLOCK))
-      }
-    ensure
-      Process.wait
-      sdbm2.close if sdbm2
-    end
-  end
-
-  def test_s_open_error
-    return if /(ms|bcc)win|mingw|djgpp/ =~ RUBY_PLATFORM
-    assert_instance_of(SDBM, sdbm = SDBM.open("tmptest_sdbm", 0))
-    assert_raise(Errno::EACCES) {
-      SDBM.open("tmptest_sdbm", 0)
-    }
-    sdbm.close
-  end
-
-  def test_close
-    assert_instance_of(SDBM, sdbm = SDBM.open("tmptest_sdbm"))
-    assert_nil(sdbm.close)
-
-    # closed SDBM file
-    assert_raise(SDBMError) { sdbm.close }
-  end
-
-  def test_aref
-    assert_equal('bar', @sdbm['foo'] = 'bar')
-    assert_equal('bar', @sdbm['foo'])
-
-    assert_nil(@sdbm['bar'])
-  end
-
-  def test_fetch
-    assert_equal('bar', @sdbm['foo']='bar')
-    assert_equal('bar', @sdbm.fetch('foo'))
-
-    # key not found
-    assert_raise(IndexError) {
-      @sdbm.fetch('bar')
-    }
-
-    # test for `ifnone' arg
-    assert_equal('baz', @sdbm.fetch('bar', 'baz'))
-
-    # test for `ifnone' block
-    assert_equal('foobar', @sdbm.fetch('bar') {|key| 'foo' + key })
-  end
-
-  def test_aset
-    num = 0
-    2.times {|i|
-      assert_equal('foo', @sdbm['foo'] = 'foo')
-      assert_equal('foo', @sdbm['foo'])
-      assert_equal('bar', @sdbm['foo'] = 'bar')
-      assert_equal('bar', @sdbm['foo'])
-
-      num += 1 if i == 0
-      assert_equal(num, @sdbm.size)
-
-      # assign nil
-      assert_equal('', @sdbm['bar'] = '')
-      assert_equal('', @sdbm['bar'])
-
-      num += 1 if i == 0
-      assert_equal(num, @sdbm.size)
-
-      # empty string
-      assert_equal('', @sdbm[''] = '')
-      assert_equal('', @sdbm[''])
-
-      num += 1 if i == 0
-      assert_equal(num, @sdbm.size)
-
-      # Fixnum
-      assert_equal('200', @sdbm['100'] = '200')
-      assert_equal('200', @sdbm['100'])
-
-      num += 1 if i == 0
-      assert_equal(num, @sdbm.size)
-
-      # Big key and value
-      assert_equal('y' * 100, @sdbm['x' * 100] = 'y' * 100)
-      assert_equal('y' * 100, @sdbm['x' * 100])
-
-      num += 1 if i == 0
-      assert_equal(num, @sdbm.size)
-    }
-  end
-
-  def test_index
-    assert_equal('bar', @sdbm['foo'] = 'bar')
-    assert_equal('foo', @sdbm.index('bar'))
-    assert_nil(@sdbm['bar'])
-  end
-
-  def test_indexes
-    keys = %w(foo bar baz)
-    values = %w(FOO BAR BAZ)
-    @sdbm[keys[0]], @sdbm[keys[1]], @sdbm[keys[2]] = values
-    assert_equal(values.reverse, @sdbm.indexes(*keys.reverse))
-  end
-
-  def test_values_at
-    keys = %w(foo bar baz)
-    values = %w(FOO BAR BAZ)
-    @sdbm[keys[0]], @sdbm[keys[1]], @sdbm[keys[2]] = values
-    assert_equal(values.reverse, @sdbm.values_at(*keys.reverse))
-  end
-
-  def test_select_with_block
-    keys = %w(foo bar baz)
-    values = %w(FOO BAR BAZ)
-    @sdbm[keys[0]], @sdbm[keys[1]], @sdbm[keys[2]] = values
-    ret = @sdbm.select {|k,v|
-      assert_equal(k.upcase, v)
-      k != "bar"
-    }
-    assert_equal([['baz', 'BAZ'], ['foo', 'FOO']],
-                 ret.sort)
-  end
-
-  def test_length
-    num = 10
-    assert_equal(0, @sdbm.size)
-    num.times {|i|
-      i = i.to_s
-      @sdbm[i] = i
-    }
-    assert_equal(num, @sdbm.size)
-
-    @sdbm.shift
-
-    assert_equal(num - 1, @sdbm.size)
-  end
-
-  def test_empty?
-    assert_equal(true, @sdbm.empty?)
-    @sdbm['foo'] = 'FOO'
-    assert_equal(false, @sdbm.empty?)
-  end
-
-  def test_each_pair
-    n = 0
-    @sdbm.each_pair { n += 1 }
-    assert_equal(0, n)
-
-    keys = %w(foo bar baz)
-    values = %w(FOO BAR BAZ)
-
-    @sdbm[keys[0]], @sdbm[keys[1]], @sdbm[keys[2]] = values
-
-    n = 0
-    ret = @sdbm.each_pair {|key, val|
-      assert_not_nil(i = keys.index(key))
-      assert_equal(val, values[i])
-
-      n += 1
-    }
-    assert_equal(keys.size, n)
-    assert_equal(@sdbm, ret)
-  end
-
-  def test_each_value
-    n = 0
-    @sdbm.each_value { n += 1 }
-    assert_equal(0, n)
-
-    keys = %w(foo bar baz)
-    values = %w(FOO BAR BAZ)
-
-    @sdbm[keys[0]], @sdbm[keys[1]], @sdbm[keys[2]] = values
-
-    n = 0
-    ret = @sdbm.each_value {|val|
-      assert_not_nil(key = @sdbm.index(val))
-      assert_not_nil(i = keys.index(key))
-      assert_equal(val, values[i])
-
-      n += 1
-    }
-    assert_equal(keys.size, n)
-    assert_equal(@sdbm, ret)
-  end
-
-  def test_each_key
-    n = 0
-    @sdbm.each_key { n += 1 }
-    assert_equal(0, n)
-
-    keys = %w(foo bar baz)
-    values = %w(FOO BAR BAZ)
-
-    @sdbm[keys[0]], @sdbm[keys[1]], @sdbm[keys[2]] = values
-
-    n = 0
-    ret = @sdbm.each_key {|key|
-      assert_not_nil(i = keys.index(key))
-      assert_equal(@sdbm[key], values[i])
-
-      n += 1
-    }
-    assert_equal(keys.size, n)
-    assert_equal(@sdbm, ret)
-  end
-
-  def test_keys
-    assert_equal([], @sdbm.keys)
-
-    keys = %w(foo bar baz)
-    values = %w(FOO BAR BAZ)
-
-    @sdbm[keys[0]], @sdbm[keys[1]], @sdbm[keys[2]] = values
-
-    assert_equal(keys.sort, @sdbm.keys.sort)
-    assert_equal(values.sort, @sdbm.values.sort)
-  end
-
-  def test_values
-    test_keys
-  end
-
-  def test_shift
-    assert_nil(@sdbm.shift)
-    assert_equal(0, @sdbm.size)
-
-    keys = %w(foo bar baz)
-    values = %w(FOO BAR BAZ)
-
-    @sdbm[keys[0]], @sdbm[keys[1]], @sdbm[keys[2]] = values
-
-    ret_keys = []
-    ret_values = []
-    while ret = @sdbm.shift
-      ret_keys.push ret[0]
-      ret_values.push ret[1]
-
-      assert_equal(keys.size - ret_keys.size, @sdbm.size)
-    end
-
-    assert_equal(keys.sort, ret_keys.sort)
-    assert_equal(values.sort, ret_values.sort)
-  end
-
-  def test_delete
-    keys = %w(foo bar baz)
-    values = %w(FOO BAR BAZ)
-    key = keys[1]
-
-    assert_nil(@sdbm.delete(key))
-    assert_equal(0, @sdbm.size)
-
-    @sdbm[keys[0]], @sdbm[keys[1]], @sdbm[keys[2]] = values
-
-    assert_equal('BAR', @sdbm.delete(key))
-    assert_nil(@sdbm[key])
-    assert_equal(2, @sdbm.size)
-
-    assert_nil(@sdbm.delete(key))
-  end
-  def test_delete_with_block
-    key = 'no called block'
-    @sdbm[key] = 'foo'
-    assert_equal('foo', @sdbm.delete(key) {|k| k.replace 'called block'})
-    assert_equal('no called block', key)
-    assert_equal(0, @sdbm.size)
-
-    key = 'no called block'
-    assert_equal(:blockval,
-                 @sdbm.delete(key) {|k| k.replace 'called block'; :blockval})
-    assert_equal('called block', key)
-    assert_equal(0, @sdbm.size)
-  end
-
-  def test_delete_if
-    v = "0"
-    100.times {@sdbm[v] = v; v = v.next}
-
-    ret = @sdbm.delete_if {|key, val| key.to_i < 50}
-    assert_equal(@sdbm, ret)
-    check_size(50, @sdbm)
-
-    ret = @sdbm.delete_if {|key, val| key.to_i >= 50}
-    assert_equal(@sdbm, ret)
-    check_size(0, @sdbm)
-
-    # break
-    v = "0"
-    100.times {@sdbm[v] = v; v = v.next}
-    check_size(100, @sdbm)
-    n = 0;
-    @sdbm.delete_if {|key, val|
-      break if n > 50
-      n+=1
-      true
-    }
-    assert_equal(51, n)
-    check_size(49, @sdbm)
-
-    @sdbm.clear
-
-    # raise
-    v = "0"
-    100.times {@sdbm[v] = v; v = v.next}
-    check_size(100, @sdbm)
-    n = 0;
-    begin
-      @sdbm.delete_if {|key, val|
-       raise "runtime error" if n > 50
-       n+=1
-       true
-      }
-    rescue
-    end
-    assert_equal(51, n)
-    check_size(49, @sdbm)
-  end
-
-  def test_reject
-    v = "0"
-    100.times {@sdbm[v] = v; v = v.next}
-
-    hash = @sdbm.reject {|key, val| key.to_i < 50}
-    assert_instance_of(Hash, hash)
-    assert_equal(100, @sdbm.size)
-
-    assert_equal(50, hash.size)
-    hash.each_pair {|key,val|
-      assert_equal(false, key.to_i < 50)
-      assert_equal(key, val)
-    }
-
-    hash = @sdbm.reject {|key, val| key.to_i < 100}
-    assert_instance_of(Hash, hash)
-    assert_equal(true, hash.empty?)
-  end
-
-  def test_clear
-    v = "1"
-    100.times {v = v.next; @sdbm[v] = v}
-
-    assert_equal(@sdbm, @sdbm.clear)
-
-    # validate SDBM#size
-    i = 0
-    @sdbm.each { i += 1 }
-    assert_equal(@sdbm.size, i)
-    assert_equal(0, i)
-  end
-
-  def test_invert
-    v = "0"
-    100.times {@sdbm[v] = v; v = v.next}
-
-    hash = @sdbm.invert
-    assert_instance_of(Hash, hash)
-    assert_equal(100, hash.size)
-    hash.each_pair {|key, val|
-      assert_equal(key.to_i, val.to_i)
-    }
-  end
-
-  def test_update
-    hash = {}
-    v = "0"
-    100.times {v = v.next; hash[v] = v}
-
-    @sdbm["101"] = "101"
-    @sdbm.update hash
-    assert_equal(101, @sdbm.size)
-    @sdbm.each_pair {|key, val|
-      assert_equal(key.to_i, val.to_i)
-    }
-  end
-
-  def test_replace
-    hash = {}
-    v = "0"
-    100.times {v = v.next; hash[v] = v}
-
-    @sdbm["101"] = "101"
-    @sdbm.replace hash
-    assert_equal(100, @sdbm.size)
-    @sdbm.each_pair {|key, val|
-      assert_equal(key.to_i, val.to_i)
-    }
-  end
-
-  def test_haskey?
-    assert_equal('bar', @sdbm['foo']='bar')
-    assert_equal(true,  @sdbm.has_key?('foo'))
-    assert_equal(false, @sdbm.has_key?('bar'))
-  end
-
-  def test_has_value?
-    assert_equal('bar', @sdbm['foo']='bar')
-    assert_equal(true,  @sdbm.has_value?('bar'))
-    assert_equal(false, @sdbm.has_value?('foo'))
-  end
-
-  def test_to_a
-    v = "0"
-    100.times {v = v.next; @sdbm[v] = v}
-
-    ary = @sdbm.to_a
-    assert_instance_of(Array, ary)
-    assert_equal(100, ary.size)
-    ary.each {|key,val|
-      assert_equal(key.to_i, val.to_i)
-    }
-  end
-
-  def test_to_hash
-    v = "0"
-    100.times {v = v.next; @sdbm[v] = v}
-
-    hash = @sdbm.to_hash
-    assert_instance_of(Hash, hash)
-    assert_equal(100, hash.size)
-    hash.each {|key,val|
-      assert_equal(key.to_i, val.to_i)
-    }
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/asp.net/hello.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/soap/asp.net/hello.wsdl
deleted file mode 100644 (file)
index b94129c..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
-xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-xmlns:s="http://www.w3.org/2001/XMLSchema"
-xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
-xmlns:tns="http://localhost/WebService/"
-xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
-xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
-targetNamespace="http://localhost/WebService/"
-xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
-  <wsdl:types>
-    <s:schema elementFormDefault="qualified"
-targetNamespace="http://localhost/WebService/">
-      <s:element name="HelloWorld">
-        <s:complexType />
-      </s:element>
-      <s:element name="HelloWorldResponse">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1"
-name="HelloWorldResult" type="s:string" />
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-      <s:element name="SayHello">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1" name="name"
-type="s:string" />
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-      <s:element name="SayHelloResponse">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1"
-name="SayHelloResult" type="s:string" />
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-    </s:schema>
-  </wsdl:types>
-  <wsdl:message name="HelloWorldSoapIn">
-    <wsdl:part name="parameters" element="tns:HelloWorld" />
-  </wsdl:message>
-  <wsdl:message name="HelloWorldSoapOut">
-    <wsdl:part name="parameters" element="tns:HelloWorldResponse" />
-  </wsdl:message>
-  <wsdl:message name="SayHelloSoapIn">
-    <wsdl:part name="parameters" element="tns:SayHello" />
-  </wsdl:message>
-  <wsdl:message name="SayHelloSoapOut">
-    <wsdl:part name="parameters" element="tns:SayHelloResponse" />
-  </wsdl:message>
-  <wsdl:portType name="Service1Soap">
-    <wsdl:operation name="HelloWorld">
-      <wsdl:input message="tns:HelloWorldSoapIn" />
-      <wsdl:output message="tns:HelloWorldSoapOut" />
-    </wsdl:operation>
-    <wsdl:operation name="SayHello">
-      <wsdl:input message="tns:SayHelloSoapIn" />
-      <wsdl:output message="tns:SayHelloSoapOut" />
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding name="Service1Soap" type="tns:Service1Soap">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
-style="document" />
-    <wsdl:operation name="HelloWorld">
-      <soap:operation
-soapAction="http://localhost/WebService/HelloWorld" style="document" />
-      <wsdl:input>
-        <soap:body use="literal" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" />
-      </wsdl:output>
-    </wsdl:operation>
-    <wsdl:operation name="SayHello">
-      <soap:operation soapAction="http://localhost/WebService/SayHello"
-style="document" />
-      <wsdl:input>
-        <soap:body use="literal" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" />
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:service name="Service1">
-    <documentation xmlns="http://schemas.xmlsoap.org/wsdl/" />
-    <wsdl:port name="Service1Soap" binding="tns:Service1Soap">
-      <soap:address
-location="http://localhost/WebService/Service1.asmx" />
-    </wsdl:port>
-  </wsdl:service>
-</wsdl:definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/asp.net/test_aspdotnet.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/asp.net/test_aspdotnet.rb
deleted file mode 100644 (file)
index 7d5f3fd..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/standaloneServer'
-require 'soap/rpc/driver'
-
-
-module SOAP; module ASPDotNet
-
-
-class TestASPDotNet < Test::Unit::TestCase
-  class Server < ::SOAP::RPC::StandaloneServer
-    Namespace = "http://localhost/WebService/"
-
-    def on_init
-      add_document_method(
-        self,
-        Namespace + 'SayHello',
-        'sayHello',
-        XSD::QName.new(Namespace, 'SayHello'),
-        XSD::QName.new(Namespace, 'SayHelloResponse')
-      )
-    end
-  
-    def sayHello(arg)
-      name = arg['name']
-      "Hello #{name}"
-    end
-  end
-
-  Port = 17171
-  Endpoint = "http://localhost:#{Port}/"
-
-  def setup
-    setup_server
-    @client = nil
-  end
-
-  def teardown
-    teardown_server
-    @client.reset_stream if @client
-  end
-
-  def setup_server
-    @server = Server.new('Test', Server::Namespace, '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @server_thread = start_server_thread(@server)
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def test_document_method
-    @client = SOAP::RPC::Driver.new(Endpoint, Server::Namespace)
-    @client.wiredump_dev = STDOUT if $DEBUG
-    @client.add_document_method('sayHello', Server::Namespace + 'SayHello',
-      XSD::QName.new(Server::Namespace, 'SayHello'),
-      XSD::QName.new(Server::Namespace, 'SayHelloResponse'))
-    assert_equal("Hello Mike", @client.sayHello(:name => "Mike"))
-  end
-
-  def test_aspdotnethandler
-    @client = SOAP::RPC::Driver.new(Endpoint, Server::Namespace)
-    @client.wiredump_dev = STDOUT if $DEBUG
-    @client.add_method_with_soapaction('sayHello', Server::Namespace + 'SayHello', 'name')
-    @client.default_encodingstyle = SOAP::EncodingStyle::ASPDotNetHandler::Namespace
-    assert_equal("Hello Mike", @client.sayHello("Mike"))
-  end
-
-  if defined?(HTTPAccess2)
-
-    # qualified!
-    REQUEST_ASPDOTNETHANDLER =
-%q[<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <n1:sayHello xmlns:n1="http://localhost/WebService/">
-      <n1:name>Mike</n1:name>
-    </n1:sayHello>
-  </env:Body>
-</env:Envelope>]
-
-    def test_aspdotnethandler_envelope
-      @client = SOAP::RPC::Driver.new(Endpoint, Server::Namespace)
-      @client.wiredump_dev = str = ''
-      @client.add_method_with_soapaction('sayHello', Server::Namespace + 'SayHello', 'name')
-      @client.default_encodingstyle = SOAP::EncodingStyle::ASPDotNetHandler::Namespace
-      assert_equal("Hello Mike", @client.sayHello("Mike"))
-      assert_equal(REQUEST_ASPDOTNETHANDLER, parse_requestxml(str))
-    end
-
-    def parse_requestxml(str)
-      str.split(/\r?\n\r?\n/)[3]
-    end
-
-  end
-end
-
-
-end; end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/calc.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/calc.rb
deleted file mode 100644 (file)
index 6bc7880..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-module CalcService
-  def self.add(lhs, rhs)
-    lhs + rhs
-  end
-
-  def self.sub(lhs, rhs)
-    lhs - rhs
-  end
-
-  def self.multi(lhs, rhs)
-    lhs * rhs
-  end
-
-  def self.div(lhs, rhs)
-    lhs / rhs
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/calc2.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/calc2.rb
deleted file mode 100644 (file)
index 6949573..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-class CalcService2
-  def initialize(value = 0)
-    @value = value
-  end
-
-  def set_value(value)
-    @value = value
-  end
-
-  def get_value
-    @value
-  end
-
-  def +(rhs)
-    @value + rhs
-  end
-
-  def -(rhs)
-    @value - rhs
-  end
-
-  def *(rhs)
-    @value * rhs
-  end
-
-  def /(rhs)
-    @value / rhs
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/server.cgi b/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/server.cgi
deleted file mode 100644 (file)
index 1eb0d1d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-require 'soap/rpc/cgistub'
-
-class CalcServer < SOAP::RPC::CGIStub
-  def initialize(*arg)
-    super
-
-    require 'calc'
-    servant = CalcService
-    add_servant(servant, 'http://tempuri.org/calcService')
-  end
-end
-
-status = CalcServer.new('CalcServer', nil).start
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/server.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/server.rb
deleted file mode 100644 (file)
index a93774d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'soap/rpc/standaloneServer'
-require 'calc'
-
-class CalcServer < SOAP::RPC::StandaloneServer
-  def initialize(*arg)
-    super
-
-    servant = CalcService
-    add_servant(servant, 'http://tempuri.org/calcService')
-  end
-end
-
-if $0 == __FILE__
-  status = CalcServer.new('CalcServer', nil, '0.0.0.0', 17171).start
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/server2.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/server2.rb
deleted file mode 100644 (file)
index 01c6d75..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/usr/bin/env ruby
-
-require 'soap/rpc/standaloneServer'
-require 'calc2'
-
-class CalcServer2 < SOAP::RPC::StandaloneServer
-  def on_init
-    servant = CalcService2.new
-    add_method(servant, 'set_value', 'newValue')
-    add_method(servant, 'get_value')
-    add_method_as(servant, '+', 'add', 'lhs')
-    add_method_as(servant, '-', 'sub', 'lhs')
-    add_method_as(servant, '*', 'multi', 'lhs')
-    add_method_as(servant, '/', 'div', 'lhs')
-  end
-end
-
-if $0 == __FILE__
-  status = CalcServer2.new('CalcServer', 'http://tempuri.org/calcService', '0.0.0.0', 17171).start
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/test_calc.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/test_calc.rb
deleted file mode 100644 (file)
index 8873871..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/driver'
-require 'server.rb'
-
-
-module SOAP
-module Calc
-
-
-class TestCalc < Test::Unit::TestCase
-  Port = 17171
-
-  def setup
-    @server = CalcServer.new(self.class.name, nil, '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @t = Thread.new {
-      @server.start
-    }
-    @endpoint = "http://localhost:#{Port}/"
-    @calc = SOAP::RPC::Driver.new(@endpoint, 'http://tempuri.org/calcService')
-    @calc.add_method('add', 'lhs', 'rhs')
-    @calc.add_method('sub', 'lhs', 'rhs')
-    @calc.add_method('multi', 'lhs', 'rhs')
-    @calc.add_method('div', 'lhs', 'rhs')
-  end
-
-  def teardown
-    @server.shutdown
-    @t.kill
-    @t.join
-    @calc.reset_stream
-  end
-
-  def test_calc
-    assert_equal(3, @calc.add(1, 2))
-    assert_equal(-1.1, @calc.sub(1.1, 2.2))
-    assert_equal(2.42, @calc.multi(1.1, 2.2))
-    assert_equal(2, @calc.div(5, 2))
-    assert_equal(2.5, @calc.div(5.0, 2))
-    assert_equal(1.0/0.0, @calc.div(1.1, 0))
-    assert_raises(ZeroDivisionError) do
-      @calc.div(1, 0)
-    end
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/test_calc2.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/test_calc2.rb
deleted file mode 100644 (file)
index f334b29..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/driver'
-require 'server2.rb'
-
-
-module SOAP
-module Calc
-
-
-class TestCalc2 < Test::Unit::TestCase
-  Port = 17171
-
-  def setup
-    @server = CalcServer2.new('CalcServer', 'http://tempuri.org/calcService', '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @t = Thread.new {
-      Thread.current.abort_on_exception = true
-      @server.start
-    }
-    @endpoint = "http://localhost:#{Port}/"
-    @var = SOAP::RPC::Driver.new(@endpoint, 'http://tempuri.org/calcService')
-    @var.wiredump_dev = STDERR if $DEBUG
-    @var.add_method('set_value', 'newValue')
-    @var.add_method('get_value')
-    @var.add_method_as('+', 'add', 'rhs')
-    @var.add_method_as('-', 'sub', 'rhs')
-    @var.add_method_as('*', 'multi', 'rhs')
-    @var.add_method_as('/', 'div', 'rhs')
-  end
-
-  def teardown
-    @server.shutdown
-    @t.kill
-    @t.join
-    @var.reset_stream
-  end
-
-  def test_calc2
-    assert_equal(1, @var.set_value(1))
-    assert_equal(3, @var + 2)
-    assert_equal(-1.2, @var - 2.2)
-    assert_equal(2.2, @var * 2.2)
-    assert_equal(0, @var / 2)
-    assert_equal(0.5, @var / 2.0)
-    assert_raises(ZeroDivisionError) do
-      @var / 0
-    end
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/test_calc_cgi.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/calc/test_calc_cgi.rb
deleted file mode 100644 (file)
index d288306..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/driver'
-require 'logger'
-require 'webrick'
-require 'rbconfig'
-
-
-module SOAP
-module Calc
-
-
-class TestCalcCGI < Test::Unit::TestCase
-  # This test shuld be run after installing ruby.
-  RUBYBIN = File.join(
-    Config::CONFIG["bindir"],
-    Config::CONFIG["ruby_install_name"] + Config::CONFIG["EXEEXT"]
-  )
-  RUBYBIN << " -d" if $DEBUG
-
-  Port = 17171
-
-  def setup
-    logger = Logger.new(STDERR)
-    logger.level = Logger::Severity::ERROR
-    @server = WEBrick::HTTPServer.new(
-      :BindAddress => "0.0.0.0",
-      :Logger => logger,
-      :Port => Port,
-      :AccessLog => [],
-      :DocumentRoot => File.dirname(File.expand_path(__FILE__)),
-      :CGIPathEnv => ENV['PATH'],
-      :CGIInterpreter => RUBYBIN
-    )
-    @t = Thread.new {
-      Thread.current.abort_on_exception = true
-      @server.start
-    }
-    @endpoint = "http://localhost:#{Port}/server.cgi"
-    @calc = SOAP::RPC::Driver.new(@endpoint, 'http://tempuri.org/calcService')
-    @calc.wiredump_dev = STDERR if $DEBUG
-    @calc.add_method('add', 'lhs', 'rhs')
-    @calc.add_method('sub', 'lhs', 'rhs')
-    @calc.add_method('multi', 'lhs', 'rhs')
-    @calc.add_method('div', 'lhs', 'rhs')
-  end
-
-  def teardown
-    @server.shutdown
-    @t.kill
-    @t.join
-    @calc.reset_stream
-  end
-
-  def test_calc_cgi
-    assert_equal(3, @calc.add(1, 2))
-    assert_equal(-1.1, @calc.sub(1.1, 2.2))
-    assert_equal(2.42, @calc.multi(1.1, 2.2))
-    assert_equal(2, @calc.div(5, 2))
-    assert_equal(2.5, @calc.div(5.0, 2))
-    assert_equal(1.0/0.0, @calc.div(1.1, 0))
-    assert_raises(ZeroDivisionError) do
-      @calc.div(1, 0)
-    end
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/fault/test_customfault.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/fault/test_customfault.rb
deleted file mode 100644 (file)
index 2f7bc2b..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/driver'
-require 'soap/rpc/standaloneServer'
-
-
-module SOAP
-module Fault
-
-
-class TestCustomFault < Test::Unit::TestCase
-  Port = 17171
-
-  class CustomFaultServer < SOAP::RPC::StandaloneServer
-    def on_init
-      add_method(self, 'fault', 'msg')
-    end
-
-    def fault(msg)
-      SOAPFault.new(SOAPString.new("mycustom"),
-        SOAPString.new("error: #{msg}"),
-        SOAPString.new(self.class.name))
-    end
-  end
-
-  def setup
-    @server = CustomFaultServer.new('customfault', 'urn:customfault', '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @t = Thread.new {
-      Thread.current.abort_on_exception = true
-      @server.start
-    }
-    @endpoint = "http://localhost:#{Port}/"
-    @client = SOAP::RPC::Driver.new(@endpoint, 'urn:customfault')
-    @client.wiredump_dev = STDERR if $DEBUG
-    @client.add_method("fault", "msg")
-  end
-
-  def teardown
-    @server.shutdown
-    @t.kill
-    @t.join
-    @client.reset_stream
-  end
-
-  def test_custom_fault
-    begin
-      @client.fault("message")
-      assert(false, 'exception not raised')
-    rescue SOAP::FaultError => e
-      assert(true, 'exception raised')
-      assert_equal('error: message', e.message)
-    end
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/header/server.cgi b/ruby/doc/ruby/ruby-1.8.7/test/soap/header/server.cgi
deleted file mode 100644 (file)
index 2a18853..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-require 'pstore'
-require 'soap/rpc/cgistub'
-require 'soap/header/simplehandler'
-
-
-class AuthHeaderPortServer < SOAP::RPC::CGIStub
-  PortName = 'http://tempuri.org/authHeaderPort'
-  SupportPortName = 'http://tempuri.org/authHeaderSupportPort'
-  MyHeaderName = XSD::QName.new("http://tempuri.org/authHeader", "auth")
-  SessionDB = File.join(File.expand_path(File.dirname(__FILE__)), 'session.pstoredb')
-
-  class AuthHeaderService
-    def self.create
-      new
-    end
-
-    def deposit(amt)
-      "deposit #{amt} OK"
-    end
-
-    def withdrawal(amt)
-      "withdrawal #{amt} OK"
-    end
-  end
-
-  class AuthHeaderSupportService
-    def delete_sessiondb
-      File.unlink(SessionDB) if File.file?(SessionDB)
-      backup = SessionDB + "~"
-      File.unlink(backup) if File.file?(backup)
-    end
-  end
-
-  def initialize(*arg)
-    super
-    add_rpc_servant(AuthHeaderService.new, PortName)
-    add_rpc_servant(AuthHeaderSupportService.new, SupportPortName)
-    add_rpc_headerhandler(ServerAuthHeaderHandler.new)
-  end
-
-  class ServerAuthHeaderHandler < SOAP::Header::SimpleHandler
-    Users = {
-      'NaHi' => 'passwd',
-      'HiNa' => 'wspass'
-    }
-
-    def initialize
-      super(MyHeaderName)
-      @db = PStore.new(SessionDB)
-      @db.transaction do
-       @db["root"] = {} unless @db.root?("root")
-      end
-      @userid = @sessionid = nil
-    end
-
-    def login(userid, passwd)
-      userid and passwd and Users[userid] == passwd
-    end
-
-    def auth(sessionid)
-      in_sessiondb do |root|
-       root[sessionid][0]
-      end
-    end
-
-    def create_session(userid)
-      in_sessiondb do |root|
-       while true
-         key = create_sessionkey
-         break unless root[key]
-       end
-       root[key] = [userid]
-       key
-      end
-    end
-
-    def destroy_session(sessionkey)
-      in_sessiondb do |root|
-       root.delete(sessionkey)
-      end
-    end
-
-    def on_simple_outbound
-      { "sessionid" => @sessionid }
-    end
-
-    def on_simple_inbound(my_header, mu)
-      succeeded = false
-      userid = my_header["userid"]
-      passwd = my_header["passwd"]
-      if login(userid, passwd)
-       succeeded = true
-      elsif sessionid = my_header["sessionid"]
-       if userid = auth(sessionid)
-         destroy_session(sessionid)
-         succeeded = true
-       end
-      end
-      raise RuntimeError.new("authentication failed") unless succeeded
-      @userid = userid
-      @sessionid = create_session(userid)
-    end
-
-  private
-
-    def create_sessionkey
-      Time.now.usec.to_s
-    end
-
-    def in_sessiondb
-      @db.transaction do
-       yield(@db["root"])
-      end
-    end
-  end
-end
-
-
-status = AuthHeaderPortServer.new('AuthHeaderPortServer', nil).start
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/header/test_authheader.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/header/test_authheader.rb
deleted file mode 100644 (file)
index 47e1e76..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/driver'
-require 'soap/rpc/standaloneServer'
-require 'soap/header/simplehandler'
-
-
-module SOAP
-module Header
-
-
-class TestAuthHeader < Test::Unit::TestCase
-  Port = 17171
-  PortName = 'http://tempuri.org/authHeaderPort'
-  MyHeaderName = XSD::QName.new("http://tempuri.org/authHeader", "auth")
-  DummyHeaderName = XSD::QName.new("http://tempuri.org/authHeader", "dummy")
-
-  class AuthHeaderPortServer < SOAP::RPC::StandaloneServer
-    class AuthHeaderService
-      def self.create
-       new
-      end
-
-      def deposit(amt)
-       "deposit #{amt} OK"
-      end
-
-      def withdrawal(amt)
-       "withdrawal #{amt} OK"
-      end
-    end
-
-    def initialize(*arg)
-      super
-      add_rpc_servant(AuthHeaderService.new, PortName)
-      ServerAuthHeaderHandler.init
-      add_request_headerhandler(ServerAuthHeaderHandler)
-    end
-
-    class ServerAuthHeaderHandler < SOAP::Header::SimpleHandler
-      class << self
-       def create
-         new
-       end
-
-       def init
-         @users = {
-           'NaHi' => 'passwd',
-           'HiNa' => 'wspass'
-         }
-         @sessions = {}
-       end
-
-       def login(userid, passwd)
-         userid and passwd and @users[userid] == passwd
-       end
-
-       def auth(sessionid)
-         @sessions[sessionid][0]
-       end
-
-       def create_session(userid)
-         while true
-           key = create_sessionkey
-           break unless @sessions[key]
-         end
-         @sessions[key] = [userid]
-         key
-       end
-
-       def destroy_session(sessionkey)
-         @sessions.delete(sessionkey)
-       end
-
-       def sessions
-         @sessions
-       end
-
-      private
-
-       def create_sessionkey
-         Time.now.usec.to_s
-       end
-      end
-
-      def initialize
-       super(MyHeaderName)
-       @userid = @sessionid = nil
-      end
-
-      def on_simple_outbound
-       { "sessionid" => @sessionid }
-      end
-
-      def on_simple_inbound(my_header, mu)
-       auth = false
-       userid = my_header["userid"]
-       passwd = my_header["passwd"]
-       if self.class.login(userid, passwd)
-         auth = true
-       elsif sessionid = my_header["sessionid"]
-         if userid = self.class.auth(sessionid)
-           self.class.destroy_session(sessionid)
-           auth = true
-         end
-       end
-       raise RuntimeError.new("authentication failed") unless auth
-       @userid = userid
-       @sessionid = self.class.create_session(userid)
-      end
-    end
-  end
-
-  class ClientAuthHeaderHandler < SOAP::Header::SimpleHandler
-    def initialize(userid, passwd, mustunderstand)
-      super(MyHeaderName)
-      @sessionid = nil
-      @userid = userid
-      @passwd = passwd
-      @mustunderstand = mustunderstand
-    end
-
-    def on_simple_outbound
-      if @sessionid
-       { "sessionid" => @sessionid }
-      else
-       { "userid" => @userid, "passwd" => @passwd }
-      end
-    end
-
-    def on_simple_inbound(my_header, mustunderstand)
-      @sessionid = my_header["sessionid"]
-    end
-
-    def sessionid
-      @sessionid
-    end
-  end
-
-  class DummyHeaderHandler < SOAP::Header::SimpleHandler
-    def initialize(mustunderstand)
-      super(DummyHeaderName)
-      @mustunderstand = mustunderstand
-    end
-
-    def on_simple_outbound
-      { XSD::QName.new("foo", "bar") => nil }
-    end
-
-    def on_simple_inbound(my_header, mustunderstand)
-    end
-  end
-
-  def setup
-    @endpoint = "http://localhost:#{Port}/"
-    setup_server
-    setup_client
-  end
-
-  def setup_server
-    @server = AuthHeaderPortServer.new(self.class.name, nil, '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @t = Thread.new {
-      @server.start
-    }
-  end
-
-  def setup_client
-    @client = SOAP::RPC::Driver.new(@endpoint, PortName)
-    @client.wiredump_dev = STDERR if $DEBUG
-    @client.add_method('deposit', 'amt')
-    @client.add_method('withdrawal', 'amt')
-  end
-
-  def teardown
-    teardown_server
-    teardown_client
-  end
-
-  def teardown_server
-    @server.shutdown
-    @t.kill
-    @t.join
-  end
-
-  def teardown_client
-    @client.reset_stream
-  end
-
-  def test_success_no_mu
-    h = ClientAuthHeaderHandler.new('NaHi', 'passwd', false)
-    @client.headerhandler << h
-    do_transaction_check(h)
-  end
-
-  def test_success_mu
-    h = ClientAuthHeaderHandler.new('NaHi', 'passwd', true)
-    @client.headerhandler << h
-    do_transaction_check(h)
-  end
-
-  def test_no_mu
-    h = ClientAuthHeaderHandler.new('NaHi', 'passwd', true)
-    @client.headerhandler << h
-    @client.headerhandler << DummyHeaderHandler.new(false)
-    do_transaction_check(h)
-  end
-
-  def test_mu
-    h = ClientAuthHeaderHandler.new('NaHi', 'passwd', true)
-    @client.headerhandler << h
-    @client.headerhandler << (h2 = DummyHeaderHandler.new(true))
-    assert_raise(SOAP::UnhandledMustUnderstandHeaderError) do
-      assert_equal("deposit 150 OK", @client.deposit(150))
-    end
-    @client.headerhandler.delete(h2)
-    @client.headerhandler << (h2 = DummyHeaderHandler.new(false))
-    do_transaction_check(h)
-  end
-
-  def do_transaction_check(h)
-    assert_equal("deposit 150 OK", @client.deposit(150))
-    serversess = AuthHeaderPortServer::ServerAuthHeaderHandler.sessions[h.sessionid]
-    assert_equal("NaHi", serversess[0])
-    assert_equal("withdrawal 120 OK", @client.withdrawal(120))
-    serversess = AuthHeaderPortServer::ServerAuthHeaderHandler.sessions[h.sessionid]
-    assert_equal("NaHi", serversess[0])
-  end
-
-  def test_authfailure
-    h = ClientAuthHeaderHandler.new('NaHi', 'pa', false)
-    @client.headerhandler << h
-    assert_raises(RuntimeError) do
-      @client.deposit(150)
-    end
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/header/test_authheader_cgi.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/header/test_authheader_cgi.rb
deleted file mode 100644 (file)
index d70b022..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/driver'
-require 'soap/rpc/standaloneServer'
-require 'soap/header/simplehandler'
-require 'logger'
-require 'webrick'
-require 'rbconfig'
-
-
-module SOAP
-module Header
-
-
-class TestAuthHeaderCGI < Test::Unit::TestCase
-  # This test shuld be run after installing ruby.
-  RUBYBIN = File.join(
-    Config::CONFIG["bindir"],
-    Config::CONFIG["ruby_install_name"] + Config::CONFIG["EXEEXT"]
-  )
-  RUBYBIN << " -d" if $DEBUG
-  
-  Port = 17171
-  PortName = 'http://tempuri.org/authHeaderPort'
-  SupportPortName = 'http://tempuri.org/authHeaderSupportPort'
-  MyHeaderName = XSD::QName.new("http://tempuri.org/authHeader", "auth")
-
-  class ClientAuthHeaderHandler < SOAP::Header::SimpleHandler
-    def initialize(userid, passwd)
-      super(MyHeaderName)
-      @sessionid = nil
-      @userid = userid
-      @passwd = passwd
-    end
-
-    def on_simple_outbound
-      if @sessionid
-       { "sessionid" => @sessionid }
-      else
-       { "userid" => @userid, "passwd" => @passwd }
-      end
-    end
-
-    def on_simple_inbound(my_header, mustunderstand)
-      @sessionid = my_header["sessionid"]
-    end
-
-    def sessionid
-      @sessionid
-    end
-  end
-
-  def setup
-    @endpoint = "http://localhost:#{Port}/"
-    setup_server
-    setup_client
-  end
-
-  def setup_server
-    @endpoint = "http://localhost:#{Port}/server.cgi"
-    logger = Logger.new(STDERR)
-    logger.level = Logger::Severity::ERROR
-    @server = WEBrick::HTTPServer.new(
-      :BindAddress => "0.0.0.0",
-      :Logger => logger,
-      :Port => Port,
-      :AccessLog => [],
-      :DocumentRoot => File.dirname(File.expand_path(__FILE__)),
-      :CGIPathEnv => ENV['PATH'],
-      :CGIInterpreter => RUBYBIN
-    )
-    @t = Thread.new {
-      Thread.current.abort_on_exception = true
-      @server.start
-    }
-  end
-
-  def setup_client
-    @client = SOAP::RPC::Driver.new(@endpoint, PortName)
-    @client.wiredump_dev = STDERR if $DEBUG
-    @client.add_method('deposit', 'amt')
-    @client.add_method('withdrawal', 'amt')
-    @supportclient = SOAP::RPC::Driver.new(@endpoint, SupportPortName)
-    @supportclient.add_method('delete_sessiondb')
-  end
-
-  def teardown
-    @supportclient.delete_sessiondb
-    teardown_server
-    teardown_client
-  end
-
-  def teardown_server
-    @server.shutdown
-    @t.kill
-    @t.join
-  end
-
-  def teardown_client
-    @client.reset_stream
-    @supportclient.reset_stream
-  end
-
-  def test_success
-    h = ClientAuthHeaderHandler.new('NaHi', 'passwd')
-    @client.headerhandler << h
-    assert_equal("deposit 150 OK", @client.deposit(150))
-    assert_equal("withdrawal 120 OK", @client.withdrawal(120))
-  end
-
-  def test_authfailure
-    h = ClientAuthHeaderHandler.new('NaHi', 'pa')
-    @client.headerhandler << h
-    assert_raises(RuntimeError) do
-      @client.deposit(150)
-    end
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/header/test_simplehandler.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/header/test_simplehandler.rb
deleted file mode 100644 (file)
index 75dbd4a..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/driver'
-require 'soap/rpc/standaloneServer'
-require 'soap/header/simplehandler'
-
-
-module SOAP
-module Header
-
-
-class TestSimpleHandler < Test::Unit::TestCase
-  Port = 17171
-  PortName = 'http://tempuri.org/authHeaderPort'
-
-  class PingPortServer < SOAP::RPC::StandaloneServer
-    class PingService
-      def self.create
-       new
-      end
-
-      def ping
-        Thread.current[:pingheader]
-      end
-    end
-
-    def initialize(*arg)
-      super
-      add_rpc_servant(PingService.new, PortName)
-      add_request_headerhandler(PingServerHeaderHandler)
-    end
-
-    class PingServerHeaderHandler < SOAP::Header::SimpleHandler
-      MyHeaderName = XSD::QName.new("http://xmlsoap.org/Ping", "PingHeader")
-  
-      def self.create
-        new
-      end
-
-      def initialize()
-        super(MyHeaderName)
-      end
-
-      def on_simple_outbound
-        "dummy"
-      end
-
-      def on_simple_inbound(my_header, mu)
-        Thread.current[:pingheader] = my_header
-      end
-    end
-  end
-
-  class PingClientHeaderHandler < SOAP::Header::SimpleHandler
-    MyHeaderName = XSD::QName.new("http://xmlsoap.org/Ping", "PingHeader")
-
-    def initialize(pingHeader)
-      super(MyHeaderName)
-      @pingHeader = pingHeader
-      @mustunderstand = false
-    end
-
-    def on_simple_outbound
-      @pingHeader # --- note, not a Hash
-    end
-
-    def on_simple_inbound(my_header, mustunderstand)
-      Thread.current[:pingheader] = my_header
-    end
-  end
-
-  def setup
-    @endpoint = "http://localhost:#{Port}/"
-    setup_server
-    setup_client
-  end
-
-  def setup_server
-    @server = PingPortServer.new(self.class.name, nil, '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @t = Thread.new {
-      @server.start
-    }
-  end
-
-  def setup_client
-    @client = SOAP::RPC::Driver.new(@endpoint, PortName)
-    @client.wiredump_dev = STDERR if $DEBUG
-    @client.add_method('ping')
-  end
-
-  def teardown
-    teardown_server
-    teardown_client
-  end
-
-  def teardown_server
-    @server.shutdown
-    @t.kill
-    @t.join
-  end
-
-  def teardown_client
-    @client.reset_stream
-  end
-
-  def test_string
-    h = PingClientHeaderHandler.new('pingheader')
-    @client.headerhandler << h
-    assert_equal("pingheader", @client.ping)
-    assert_equal("dummy", Thread.current[:pingheader])
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/helloworld/hw_s.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/helloworld/hw_s.rb
deleted file mode 100644 (file)
index 1a54adb..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'soap/rpc/standaloneServer'
-
-class HelloWorldServer < SOAP::RPC::StandaloneServer
-  def on_init
-    add_method(self, 'hello_world', 'from')
-  end
-
-  def hello_world(from)
-    "Hello World, from #{ from }"
-  end
-end
-
-if $0 == __FILE__
-  server = HelloWorldServer.new('hws', 'urn:hws', '0.0.0.0', 17171)
-  server.start
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/helloworld/test_helloworld.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/helloworld/test_helloworld.rb
deleted file mode 100644 (file)
index 40c35b5..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/driver'
-require 'hw_s.rb'
-
-
-module SOAP
-module HelloWorld
-
-
-class TestHelloWorld < Test::Unit::TestCase
-  Port = 17171
-
-  def setup
-    @server = HelloWorldServer.new('hws', 'urn:hws', '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @t = Thread.new {
-      Thread.current.abort_on_exception = true
-      @server.start
-    }
-    @endpoint = "http://localhost:#{Port}/"
-    @client = SOAP::RPC::Driver.new(@endpoint, 'urn:hws')
-    @client.add_method("hello_world", "from")
-  end
-
-  def teardown
-    @server.shutdown
-    @t.kill
-    @t.join
-    @client.reset_stream
-  end
-
-  def test_hello_world
-    assert_equal("Hello World, from NaHi", @client.hello_world("NaHi"))
-    assert_equal("Hello World, from <&>", @client.hello_world("<&>"))
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/marshal/test_digraph.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/marshal/test_digraph.rb
deleted file mode 100644 (file)
index d7f3065..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-require 'test/unit'
-require 'soap/marshal'
-
-
-module SOAP
-module Marshal
-
-
-class Node; include SOAP::Marshallable
-  attr_reader :first, :second, :str
-
-  def initialize(*init_next)
-    @first = init_next[0]
-    @second = init_next[1]
-  end
-end
-
-class TestDigraph < Test::Unit::TestCase
-  def setup
-    @n9 = Node.new
-    @n81 = Node.new(@n9)
-    @n82 = Node.new(@n9)
-    @n7 = Node.new(@n81, @n82)
-    @n61 = Node.new(@n7)
-    @n62 = Node.new(@n7)
-    @n5 = Node.new(@n61, @n62)
-    @n41 = Node.new(@n5)
-    @n42 = Node.new(@n5)
-    @n3 = Node.new(@n41, @n42)
-    @n21 = Node.new(@n3)
-    @n22 = Node.new(@n3)
-    @n1 = Node.new(@n21, @n22)
-  end
-
-  def test_marshal
-    f = File.open("digraph_marshalled_string.soap", "wb")
-    SOAP::Marshal.dump(@n1, f)
-    f.close
-    f = File.open("digraph_marshalled_string.soap")
-    str = f.read
-    f.close
-    newnode = SOAP::Marshal.unmarshal(str)
-    assert_equal(newnode.first.first.__id__, newnode.second.first.__id__)
-    assert_equal(newnode.first.first.first.first.__id__, newnode.second.first.second.first.__id__)
-  end
-
-  def teardown
-    if File.exist?("digraph_marshalled_string.soap")
-      File.unlink("digraph_marshalled_string.soap")
-    end
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/marshal/test_marshal.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/marshal/test_marshal.rb
deleted file mode 100644 (file)
index 5cc30a2..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-require 'test/unit'
-require 'soap/marshal'
-dir = File.join(File.dirname(File.expand_path(__FILE__)), '../../ruby')
-orgpath = $:.dup
-begin
-  $:.push(dir)
-  require 'marshaltestlib'
-ensure
-  $:.replace(orgpath)
-end
-
-module SOAP
-module Marshal
-class TestMarshal < Test::Unit::TestCase
-  include MarshalTestLib
-
-  def encode(o)
-    SOAPMarshal.dump(o)
-  end
-
-  def decode(s)
-    SOAPMarshal.load(s)
-  end
-end
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/marshal/test_struct.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/marshal/test_struct.rb
deleted file mode 100644 (file)
index 33975c3..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-require 'test/unit'
-require 'soap/marshal'
-
-
-module SOAP
-module Marshal
-
-
-Foo1 = ::Struct.new("Foo1", :m)
-Foo2 = ::Struct.new(:m)
-class Foo3
-  attr_accessor :m
-end
-
-class TestStruct < Test::Unit::TestCase
-  def test_foo1
-    org = Foo1.new
-    org.m = org
-    obj = convert(org)
-    assert_equal(Foo1, obj.class)
-    assert_equal(obj.m, obj)
-  end
-
-  def test_foo2
-    org = Foo2.new
-    org.m = org
-    obj = convert(org)
-    assert_equal(Foo2, obj.class)
-    assert_equal(obj.m, obj)
-  end
-
-  def test_foo3
-    org = Foo3.new
-    org.m = org
-    obj = convert(org)
-    assert_equal(Foo3, obj.class)
-    assert_equal(obj.m, obj)
-  end
-
-  def convert(obj)
-    SOAP::Marshal.unmarshal(SOAP::Marshal.marshal(obj))
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/README b/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/README
deleted file mode 100644 (file)
index 98ebcf7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-* certificates and keys in this directory is copied from http-access2 test.
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/ca.cert b/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/ca.cert
deleted file mode 100644 (file)
index bcabbee..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
------BEGIN CERTIFICATE-----
-MIID0DCCArigAwIBAgIBADANBgkqhkiG9w0BAQUFADA8MQswCQYDVQQGDAJKUDES
-MBAGA1UECgwJSklOLkdSLkpQMQwwCgYDVQQLDANSUlIxCzAJBgNVBAMMAkNBMB4X
-DTA0MDEzMDAwNDIzMloXDTM2MDEyMjAwNDIzMlowPDELMAkGA1UEBgwCSlAxEjAQ
-BgNVBAoMCUpJTi5HUi5KUDEMMAoGA1UECwwDUlJSMQswCQYDVQQDDAJDQTCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANbv0x42BTKFEQOE+KJ2XmiSdZpR
-wjzQLAkPLRnLB98tlzs4xo+y4RyY/rd5TT9UzBJTIhP8CJi5GbS1oXEerQXB3P0d
-L5oSSMwGGyuIzgZe5+vZ1kgzQxMEKMMKlzA73rbMd4Jx3u5+jdbP0EDrPYfXSvLY
-bS04n2aX7zrN3x5KdDrNBfwBio2/qeaaj4+9OxnwRvYP3WOvqdW0h329eMfHw0pi
-JI0drIVdsEqClUV4pebT/F+CPUPkEh/weySgo9wANockkYu5ujw2GbLFcO5LXxxm
-dEfcVr3r6t6zOA4bJwL0W/e6LBcrwiG/qPDFErhwtgTLYf6Er67SzLyA66UCAwEA
-AaOB3DCB2TAPBgNVHRMBAf8EBTADAQH/MDEGCWCGSAGG+EIBDQQkFiJSdWJ5L09w
-ZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBRJ7Xd380KzBV7f
-USKIQ+O/vKbhDzAOBgNVHQ8BAf8EBAMCAQYwZAYDVR0jBF0wW4AUSe13d/NCswVe
-31EiiEPjv7ym4Q+hQKQ+MDwxCzAJBgNVBAYMAkpQMRIwEAYDVQQKDAlKSU4uR1Iu
-SlAxDDAKBgNVBAsMA1JSUjELMAkGA1UEAwwCQ0GCAQAwDQYJKoZIhvcNAQEFBQAD
-ggEBAIu/mfiez5XN5tn2jScgShPgHEFJBR0BTJBZF6xCk0jyqNx/g9HMj2ELCuK+
-r/Y7KFW5c5M3AQ+xWW0ZSc4kvzyTcV7yTVIwj2jZ9ddYMN3nupZFgBK1GB4Y05GY
-MJJFRkSu6d/Ph5ypzBVw2YMT/nsOo5VwMUGLgS7YVjU+u/HNWz80J3oO17mNZllj
-PvORJcnjwlroDnS58KoJ7GDgejv3ESWADvX1OHLE4cRkiQGeLoEU4pxdCxXRqX0U
-PbwIkZN9mXVcrmPHq8MWi4eC/V7hnbZETMHuWhUoiNdOEfsAXr3iP4KjyyRdwc7a
-d/xgcK06UVQRL/HbEYGiQL056mc=
------END CERTIFICATE-----
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/client.cert b/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/client.cert
deleted file mode 100644 (file)
index ad13c4b..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDKDCCAhCgAwIBAgIBAjANBgkqhkiG9w0BAQUFADA8MQswCQYDVQQGDAJKUDES
-MBAGA1UECgwJSklOLkdSLkpQMQwwCgYDVQQLDANSUlIxCzAJBgNVBAMMAkNBMB4X
-DTA0MDEzMTAzMTQ1OFoXDTM1MDEyMzAzMTQ1OFowZTELMAkGA1UEBgwCSlAxEjAQ
-BgNVBAoMCUpJTi5HUi5KUDEMMAoGA1UECwwDUlJSMRAwDgYDVQQDDAdleGFtcGxl
-MSIwIAYJKoZIhvcNAQkBDBNleGFtcGxlQGV4YW1wbGUub3JnMIGfMA0GCSqGSIb3
-DQEBAQUAA4GNADCBiQKBgQDRWssrK8Gyr+500hpLjCGR3+AHL8/hEJM5zKi/MgLW
-jTkvsgOwbYwXOiNtAbR9y4/ucDq7EY+cMUMHES4uFaPTcOaAV0aZRmk8AgslN1tQ
-gNS6ew7/Luq3DcVeWkX8PYgR9VG0mD1MPfJ6+IFA5d3vKpdBkBgN4l46jjO0/2Xf
-ewIDAQABo4GPMIGMMAwGA1UdEwEB/wQCMAAwMQYJYIZIAYb4QgENBCQWIlJ1Ynkv
-T3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFOFvay0H7lr2
-xUx6waYEV2bVDYQhMAsGA1UdDwQEAwIF4DAdBgNVHSUEFjAUBggrBgEFBQcDAgYI
-KwYBBQUHAwQwDQYJKoZIhvcNAQEFBQADggEBABd2dYWqbDIWf5sWFvslezxJv8gI
-w64KCJBuyJAiDuf+oazr3016kMzAlt97KecLZDusGNagPrq02UX7YMoQFsWJBans
-cDtHrkM0al5r6/WGexNMgtYbNTYzt/IwodISGBgZ6dsOuhznwms+IBsTNDAvWeLP
-lt2tOqD8kEmjwMgn0GDRuKjs4EoboA3kMULb1p9akDV9ZESU3eOtpS5/G5J5msLI
-9WXbYBjcjvkLuJH9VsJhb+R58Vl0ViemvAHhPilSl1SPWVunGhv6FcIkdBEi1k9F
-e8BNMmsEjFiANiIRvpdLRbiGBt0KrKTndVfsmoKCvY48oCOvnzxtahFxfs8=
------END CERTIFICATE-----
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/client.key b/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/client.key
deleted file mode 100644 (file)
index 37bc62f..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICWwIBAAKBgQDRWssrK8Gyr+500hpLjCGR3+AHL8/hEJM5zKi/MgLWjTkvsgOw
-bYwXOiNtAbR9y4/ucDq7EY+cMUMHES4uFaPTcOaAV0aZRmk8AgslN1tQgNS6ew7/
-Luq3DcVeWkX8PYgR9VG0mD1MPfJ6+IFA5d3vKpdBkBgN4l46jjO0/2XfewIDAQAB
-AoGAZcz8llWErtsV3QB9gNb3S/PNADGjqBFjReva8n3jG2k4sZSibpwWTwUaTNtT
-ZQgjSRKRvH1hk9XwffNAvXAQZNNkuj/16gO2oO45nyLj4dO365ujLptWnVIWDHOE
-uN0GeiZO+VzcCisT0WCq4tvtLeH8svrxzA8cbXIEyOK7NiECQQDwo2zPFyKAZ/Cu
-lDJ6zKT+RjfWwW7DgWzirAlTrt4ViMaW+IaDH29TmQpb4V4NuR3Xi+2Xl4oicu6S
-36TW9+/FAkEA3rgfOQJuLlWSnw1RTGwvnC816a/W7iYYY7B+0U4cDbfWl7IoXT4y
-M8nV/HESooviZLqBwzAYSoj3fFKYBKpGPwJAUO8GN5iWWA2dW3ooiDiv/X1sZmRk
-dojfMFWgRW747tEzya8Ivq0h6kH8w+5GjeMG8Gn1nRiwsulo6Ckj7dEx6QJACyui
-7UIQ8qP6GZ4aYMHgVW4Mvy7Bkeo5OO7GPYs0Xv/EdJFL8vlGnVBXOjUVoS9w6Gpu
-TbLg1QQvnX2rADjmEwJANxZO2GUkaWGsEif8aGW0x5g/IdaMGG27pTWk5zqix7P3
-1UDrdo/JOXhptovhRi06EppIxAxYmbh9vd9VN8Itlw==
------END RSA PRIVATE KEY-----
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/server.cert b/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/server.cert
deleted file mode 100644 (file)
index 998ccc5..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIC/zCCAeegAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQGDAJKUDES
-MBAGA1UECgwJSklOLkdSLkpQMQwwCgYDVQQLDANSUlIxDjAMBgNVBAMMBVN1YkNB
-MB4XDTA0MDEzMTAzMTMxNloXDTMzMDEyMzAzMTMxNlowQzELMAkGA1UEBgwCSlAx
-EjAQBgNVBAoMCUpJTi5HUi5KUDEMMAoGA1UECwwDUlJSMRIwEAYDVQQDDAlsb2Nh
-bGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANFJTxWqup3nV9dsJAku
-p+WaXnPNIzcpAA3qMGZDJTJsfa8Du7ZxTP0XJK5mETttBrn711cJxAuP3KjqnW9S
-vtZ9lY2sXJ6Zj62sN5LwG3VVe25dI28yR1EsbHjJ5Zjf9tmggMC6am52dxuHbt5/
-vHo4ngJuKE/U+eeGRivMn6gFAgMBAAGjgYUwgYIwDAYDVR0TAQH/BAIwADAxBglg
-hkgBhvhCAQ0EJBYiUnVieS9PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAd
-BgNVHQ4EFgQUpZIyygD9JxFYHHOTEuWOLbCKfckwCwYDVR0PBAQDAgWgMBMGA1Ud
-JQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBBQUAA4IBAQBwAIj5SaBHaA5X31IP
-CFCJiep96awfp7RANO0cuUj+ZpGoFn9d6FXY0g+Eg5wAkCNIzZU5NHN9xsdOpnUo
-zIBbyTfQEPrge1CMWMvL6uGaoEXytq84VTitF/xBTky4KtTn6+es4/e7jrrzeUXQ
-RC46gkHObmDT91RkOEGjHLyld2328jo3DIN/VTHIryDeVHDWjY5dENwpwdkhhm60
-DR9IrNBbXWEe9emtguNXeN0iu1ux0lG1Hc6pWGQxMlRKNvGh0yZB9u5EVe38tOV0
-jQaoNyL7qzcQoXD3Dmbi1p0iRmg/+HngISsz8K7k7MBNVsSclztwgCzTZOBiVtkM
-rRlQ
------END CERTIFICATE-----
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/server.key b/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/server.key
deleted file mode 100644 (file)
index 9ba2218..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXQIBAAKBgQDRSU8Vqrqd51fXbCQJLqflml5zzSM3KQAN6jBmQyUybH2vA7u2
-cUz9FySuZhE7bQa5+9dXCcQLj9yo6p1vUr7WfZWNrFyemY+trDeS8Bt1VXtuXSNv
-MkdRLGx4yeWY3/bZoIDAumpudncbh27ef7x6OJ4CbihP1PnnhkYrzJ+oBQIDAQAB
-AoGBAIf4CstW2ltQO7+XYGoex7Hh8s9lTSW/G2vu5Hbr1LTHy3fzAvdq8MvVR12O
-rk9fa+lU9vhzPc0NMB0GIDZ9GcHuhW5hD1Wg9OSCbTOkZDoH3CAFqonjh4Qfwv5W
-IPAFn9KHukdqGXkwEMdErsUaPTy9A1V/aROVEaAY+HJgq/eZAkEA/BP1QMV04WEZ
-Oynzz7/lLizJGGxp2AOvEVtqMoycA/Qk+zdKP8ufE0wbmCE3Qd6GoynavsHb6aGK
-gQobb8zDZwJBANSK6MrXlrZTtEaeZuyOB4mAmRzGzOUVkUyULUjEx2GDT93ujAma
-qm/2d3E+wXAkNSeRpjUmlQXy/2oSqnGvYbMCQQDRM+cYyEcGPUVpWpnj0shrF/QU
-9vSot/X1G775EMTyaw6+BtbyNxVgOIu2J+rqGbn3c+b85XqTXOPL0A2RLYkFAkAm
-syhSDtE9X55aoWsCNZY/vi+i4rvaFoQ/WleogVQAeGVpdo7/DK9t9YWoFBIqth0L
-mGSYFu9ZhvZkvQNV8eYrAkBJ+rOIaLDsmbrgkeDruH+B/9yrm4McDtQ/rgnOGYnH
-LjLpLLOrgUxqpzLWe++EwSLwK2//dHO+SPsQJ4xsyQJy
------END RSA PRIVATE KEY-----
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/sslsvr.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/sslsvr.rb
deleted file mode 100644 (file)
index 4f67eb9..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-require 'webrick/https'
-require 'logger'
-require 'rbconfig'
-
-require 'soap/rpc/httpserver'
-
-class HelloWorldServer < SOAP::RPC::HTTPServer
-private
-
-  def on_init
-    self.level = Logger::Severity::FATAL
-    @default_namespace = 'urn:ssltst'
-    add_method(self, 'hello_world', 'from')
-  end
-
-  def hello_world(from)
-    "Hello World, from #{ from }"
-  end
-end
-
-
-if $0 == __FILE__
-  PORT = 17171
-  DIR = File.dirname(File.expand_path(__FILE__))
-
-  def cert(filename)
-    OpenSSL::X509::Certificate.new(File.open(File.join(DIR, filename)) { |f|
-      f.read
-    })
-  end
-
-  def key(filename)
-    OpenSSL::PKey::RSA.new(File.open(File.join(DIR, filename)) { |f|
-      f.read
-    })
-  end
-
-  $server = HelloWorldServer.new(
-    :BindAddress => "0.0.0.0",
-    :Port => PORT,
-    :AccessLog => [],
-    :SSLEnable => true,
-    :SSLCACertificateFile => File.join(DIR, 'ca.cert'),
-    :SSLCertificate => cert('server.cert'),
-    :SSLPrivateKey => key('server.key'),
-    :SSLVerifyClient => nil, #OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT|OpenSSL::SSL::VERIFY_PEER,
-    :SSLClientCA => cert('ca.cert'),
-    :SSLCertName => nil
-  )
-  t = Thread.new {
-    Thread.current.abort_on_exception = true
-    $server.start
-  }
-  STDOUT.sync = true
-  puts $$
-  t.join
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/subca.cert b/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/subca.cert
deleted file mode 100644 (file)
index 1e47185..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDaDCCAlCgAwIBAgIBATANBgkqhkiG9w0BAQUFADA8MQswCQYDVQQGDAJKUDES
-MBAGA1UECgwJSklOLkdSLkpQMQwwCgYDVQQLDANSUlIxCzAJBgNVBAMMAkNBMB4X
-DTA0MDEzMDAwNDMyN1oXDTM1MDEyMjAwNDMyN1owPzELMAkGA1UEBgwCSlAxEjAQ
-BgNVBAoMCUpJTi5HUi5KUDEMMAoGA1UECwwDUlJSMQ4wDAYDVQQDDAVTdWJDQTCC
-ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ0Ou7AyRcRXnB/kVHv/6kwe
-ANzgg/DyJfsAUqW90m7Lu1nqyug8gK0RBd77yU0w5HOAMHTVSdpjZK0g2sgx4Mb1
-d/213eL9TTl5MRVEChTvQr8q5DVG/8fxPPE7fMI8eOAzd98/NOAChk+80r4Sx7fC
-kGVEE1bKwY1MrUsUNjOY2d6t3M4HHV3HX1V8ShuKfsHxgCmLzdI8U+5CnQedFgkm
-3e+8tr8IX5RR1wA1Ifw9VadF7OdI/bGMzog/Q8XCLf+WPFjnK7Gcx6JFtzF6Gi4x
-4dp1Xl45JYiVvi9zQ132wu8A1pDHhiNgQviyzbP+UjcB/tsOpzBQF8abYzgEkWEC
-AwEAAaNyMHAwDwYDVR0TAQH/BAUwAwEB/zAxBglghkgBhvhCAQ0EJBYiUnVieS9P
-cGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUlCjXWLsReYzH
-LzsxwVnCXmKoB/owCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCJ/OyN
-rT8Cq2Y+G2yA/L1EMRvvxwFBqxavqaqHl/6rwsIBFlB3zbqGA/0oec6MAVnYynq4
-c4AcHTjx3bQ/S4r2sNTZq0DH4SYbQzIobx/YW8PjQUJt8KQdKMcwwi7arHP7A/Ha
-LKu8eIC2nsUBnP4NhkYSGhbmpJK+PFD0FVtD0ZIRlY/wsnaZNjWWcnWF1/FNuQ4H
-ySjIblqVQkPuzebv3Ror6ZnVDukn96Mg7kP4u6zgxOeqlJGRe1M949SS9Vudjl8X
-SF4aZUUB9pQGhsqQJVqaz2OlhGOp9D0q54xko/rekjAIcuDjl1mdX4F2WRrzpUmZ
-uY/bPeOBYiVsOYVe
------END CERTIFICATE-----
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/test_ssl.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/ssl/test_ssl.rb
deleted file mode 100644 (file)
index f0a1e18..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-require 'test/unit'
-begin
-  require 'http-access2'
-rescue LoadError
-end
-require 'soap/rpc/driver'
-
-if defined?(HTTPAccess2) and defined?(OpenSSL)
-
-module SOAP; module SSL
-
-
-class TestSSL < Test::Unit::TestCase
-  PORT = 17171
-
-  DIR = File.dirname(File.expand_path(__FILE__))
-  require 'rbconfig'
-  RUBY = File.join(
-    Config::CONFIG["bindir"],
-    Config::CONFIG["ruby_install_name"] + Config::CONFIG["EXEEXT"]
-  )
-
-  def setup
-    @url = "https://localhost:#{PORT}/hello"
-    @serverpid = @client = nil
-    @verify_callback_called = false
-    setup_server
-    setup_client
-  end
-
-  def teardown
-    teardown_client
-    teardown_server
-  end
-
-  def test_options
-    cfg = @client.streamhandler.client.ssl_config
-    assert_nil(cfg.client_cert)
-    assert_nil(cfg.client_key)
-    assert_nil(cfg.client_ca)
-    assert_equal(OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT, cfg.verify_mode)
-    assert_nil(cfg.verify_callback)
-    assert_nil(cfg.timeout)
-    assert_equal(OpenSSL::SSL::OP_ALL | OpenSSL::SSL::OP_NO_SSLv2, cfg.options)
-    assert_equal("ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH", cfg.ciphers)
-    assert_instance_of(OpenSSL::X509::Store, cfg.cert_store)
-    # dummy call to ensure sslsvr initialization finished.
-    assert_raise(OpenSSL::SSL::SSLError) do
-      @client.hello_world("ssl client")
-    end
-  end
-
-  def test_verification
-    cfg = @client.options
-    cfg["protocol.http.ssl_config.verify_callback"] = method(:verify_callback).to_proc
-    @verify_callback_called = false
-    ssle = assert_raise(OpenSSL::SSL::SSLError) {@client.hello_world("ssl client")}
-    assert_equal("certificate verify failed", ssle.message)
-    assert(@verify_callback_called)
-    #
-    cfg["protocol.http.ssl_config.client_cert"] = File.join(DIR, "client.cert")
-    cfg["protocol.http.ssl_config.client_key"] = File.join(DIR, "client.key")
-    @verify_callback_called = false
-    ssle = assert_raise(OpenSSL::SSL::SSLError) {@client.hello_world("ssl client")}
-    assert_equal("certificate verify failed", ssle.message)
-    assert(@verify_callback_called)
-    #
-    cfg["protocol.http.ssl_config.ca_file"] = File.join(DIR, "ca.cert")
-    @verify_callback_called = false
-    ssle = assert_raise(OpenSSL::SSL::SSLError) {@client.hello_world("ssl client")}
-    assert_equal("certificate verify failed", ssle.message)
-    assert(@verify_callback_called)
-    #
-    cfg["protocol.http.ssl_config.ca_file"] = File.join(DIR, "subca.cert")
-    @verify_callback_called = false
-    assert_equal("Hello World, from ssl client", @client.hello_world("ssl client"))
-    assert(@verify_callback_called)
-    #
-    cfg["protocol.http.ssl_config.verify_depth"] = "1"
-    @verify_callback_called = false
-    ssle = assert_raise(OpenSSL::SSL::SSLError) {@client.hello_world("ssl client")}
-    assert_equal("certificate verify failed", ssle.message)
-    assert(@verify_callback_called)
-    #
-    cfg["protocol.http.ssl_config.verify_depth"] = ""
-    cfg["protocol.http.ssl_config.cert_store"] = OpenSSL::X509::Store.new
-    cfg["protocol.http.ssl_config.verify_mode"] = OpenSSL::SSL::VERIFY_PEER.to_s
-    ssle = assert_raise(OpenSSL::SSL::SSLError) {@client.hello_world("ssl client")}
-    assert_equal("certificate verify failed", ssle.message)
-    #
-    cfg["protocol.http.ssl_config.verify_mode"] = ""
-    assert_equal("Hello World, from ssl client", @client.hello_world("ssl client"))
-  end
-
-  def test_property
-    testpropertyname = File.join(DIR, 'soapclient.properties')
-    File.open(testpropertyname, "w") do |f|
-      f <<<<__EOP__
-protocol.http.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_PEER
-# depth: 1 causes an error (intentional)
-protocol.http.ssl_config.verify_depth = 1
-protocol.http.ssl_config.client_cert = #{File.join(DIR, 'client.cert')}
-protocol.http.ssl_config.client_key = #{File.join(DIR, 'client.key')}
-protocol.http.ssl_config.ca_file = #{File.join(DIR, 'ca.cert')}
-protocol.http.ssl_config.ca_file = #{File.join(DIR, 'subca.cert')}
-protocol.http.ssl_config.ciphers = ALL
-__EOP__
-    end
-    begin
-      @client.loadproperty(testpropertyname)
-      @client.options["protocol.http.ssl_config.verify_callback"] = method(:verify_callback).to_proc
-      @verify_callback_called = false
-      # NG with String
-      ssle = assert_raise(OpenSSL::SSL::SSLError) {@client.hello_world("ssl client")}
-      assert_equal("certificate verify failed", ssle.message)
-      assert(@verify_callback_called)
-      # NG with Integer
-      @client.options["protocol.http.ssl_config.verify_depth"] = 0
-      ssle = assert_raise(OpenSSL::SSL::SSLError) {@client.hello_world("ssl client")}
-      assert_equal("certificate verify failed", ssle.message)
-      assert(@verify_callback_called)
-      # OK with empty
-      @client.options["protocol.http.ssl_config.verify_depth"] = ""
-      @verify_callback_called = false
-      assert_equal("Hello World, from ssl client", @client.hello_world("ssl client"))
-      assert(@verify_callback_called)
-      # OK with nil
-      @client.options["protocol.http.ssl_config.verify_depth"] = nil
-      @verify_callback_called = false
-      assert_equal("Hello World, from ssl client", @client.hello_world("ssl client"))
-      assert(@verify_callback_called)
-      # OK with String
-      @client.options["protocol.http.ssl_config.verify_depth"] = "3"
-      @verify_callback_called = false
-      assert_equal("Hello World, from ssl client", @client.hello_world("ssl client"))
-      assert(@verify_callback_called)
-      # OK with Integer
-      @client.options["protocol.http.ssl_config.verify_depth"] = 3
-      @verify_callback_called = false
-      assert_equal("Hello World, from ssl client", @client.hello_world("ssl client"))
-      assert(@verify_callback_called)
-    ensure
-      File.unlink(testpropertyname)
-    end
-  end
-
-  def test_ciphers
-    cfg = @client.options
-    cfg["protocol.http.ssl_config.client_cert"] = File.join(DIR, 'client.cert')
-    cfg["protocol.http.ssl_config.client_key"] = File.join(DIR, 'client.key')
-    cfg["protocol.http.ssl_config.ca_file"] = File.join(DIR, "ca.cert")
-    cfg["protocol.http.ssl_config.ca_file"] = File.join(DIR, "subca.cert")
-    #cfg.timeout = 123
-    cfg["protocol.http.ssl_config.ciphers"] = "!ALL"
-    #
-    ssle = assert_raise(OpenSSL::SSL::SSLError) {@client.hello_world("ssl client")}
-    # depends on OpenSSL version. (?:0.9.8|0.9.7)
-    assert_match(/\A(?:SSL_CTX_set_cipher_list:: no cipher match|no ciphers available)\z/, ssle.message)
-    #
-    cfg["protocol.http.ssl_config.ciphers"] = "ALL"
-    assert_equal("Hello World, from ssl client", @client.hello_world("ssl client"))
-  end
-
-private
-
-  def q(str)
-    %Q["#{str}"]
-  end
-
-  def setup_server
-    svrcmd = "#{q(RUBY)} "
-    #svrcmd << "-d " if $DEBUG
-    svrcmd << File.join(DIR, "sslsvr.rb")
-    svrout = IO.popen(svrcmd)
-    @serverpid = Integer(svrout.gets.chomp)
-  end
-
-  def setup_client
-    @client = SOAP::RPC::Driver.new(@url, 'urn:ssltst')
-    @client.add_method("hello_world", "from")
-  end
-
-  def teardown_server
-    if @serverpid
-      Process.kill('KILL', @serverpid)
-      Process.waitpid(@serverpid)
-    end
-  end
-
-  def teardown_client
-    @client.reset_stream if @client
-  end
-
-  def verify_callback(ok, cert)
-    @verify_callback_called = true
-    p ["client", ok, cert] if $DEBUG
-    ok
-  end
-end
-
-
-end; end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/struct/test_struct.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/struct/test_struct.rb
deleted file mode 100644 (file)
index d92f4bc..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/httpserver'
-require 'soap/rpc/driver'
-
-
-module SOAP; module Struct
-
-
-class TestStruct < Test::Unit::TestCase
-  Namespace = "urn:example.com:simpletype-rpc"
-  class Server < ::SOAP::RPC::HTTPServer
-    @@test_struct = ::Struct.new(:one, :two)
-
-    def on_init
-      add_method(self, 'a_method')
-    end
-  
-    def a_method
-      @@test_struct.new("string", 1)
-    end
-  end
-
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_client
-  end
-
-  def setup_server
-    @server = Server.new(
-      :Port => Port,
-      :BindAddress => "0.0.0.0",
-      :AccessLog => [],
-      :SOAPDefaultNamespace => Namespace
-    )
-    @server.level = Logger::Severity::ERROR
-    @server_thread = start_server_thread(@server)
-  end
-
-  def setup_client
-    @client = ::SOAP::RPC::Driver.new("http://localhost:#{Port}/", Namespace)
-    @client.wiredump_dev = STDERR if $DEBUG
-    @client.add_method('a_method')
-  end
-
-  def teardown
-    teardown_server
-    teardown_client
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def teardown_client
-    @client.reset_stream
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def test_struct
-    assert_equal("string", @client.a_method.one)
-    assert_equal(1, @client.a_method.two)
-  end
-end
-
-
-end; end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/swa/test_file.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/swa/test_file.rb
deleted file mode 100644 (file)
index 1ec7aa9..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/driver'
-require 'soap/rpc/standaloneServer'
-require 'soap/attachment'
-
-
-module SOAP
-module SWA
-
-
-class TestFile < Test::Unit::TestCase
-  Port = 17171
-  THIS_FILE = File.expand_path(__FILE__)
-
-  class SwAService
-    def get_file
-      return {
-       'name' => $0,
-       'file' => SOAP::Attachment.new(File.open(THIS_FILE)) # closed when GCed.
-      }
-    end
-  
-    def put_file(name, file)
-      "File '#{name}' was received ok."
-    end
-  end
-
-  def setup
-    @server = SOAP::RPC::StandaloneServer.new('SwAServer',
-      'http://www.acmetron.com/soap', '0.0.0.0', Port)
-    @server.add_servant(SwAService.new)
-    @server.level = Logger::Severity::ERROR
-    @t = Thread.new {
-      @server.start
-    }
-    @endpoint = "http://localhost:#{Port}/"
-    @client = SOAP::RPC::Driver.new(@endpoint, 'http://www.acmetron.com/soap')
-    @client.add_method('get_file')
-    @client.add_method('put_file', 'name', 'file')
-    @client.wiredump_dev = STDERR if $DEBUG
-  end
-
-  def teardown
-    @server.shutdown
-    @t.kill
-    @t.join
-    @client.reset_stream
-  end
-
-  def test_get_file
-    assert_equal(
-      File.open(THIS_FILE) { |f| f.read },
-      @client.get_file['file'].content
-    )
-  end
-
-  def test_put_file
-    assert_equal(
-      "File 'foo' was received ok.",
-      @client.put_file('foo',
-       SOAP::Attachment.new(File.open(THIS_FILE)))
-    )
-    assert_equal(
-      "File 'bar' was received ok.",
-      @client.put_file('bar',
-       SOAP::Attachment.new(File.open(THIS_FILE) { |f| f.read }))
-    )
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/test_basetype.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/test_basetype.rb
deleted file mode 100644 (file)
index 3785873..0000000
+++ /dev/null
@@ -1,970 +0,0 @@
-require 'test/unit'
-require 'soap/baseData'
-
-
-module SOAP
-
-
-class TestSOAP < Test::Unit::TestCase
-  NegativeZero = (-1.0 / (1.0 / 0.0))
-
-  def setup
-    # Nothing to do.
-  end
-
-  def teardown
-    # Nothing to do.
-  end
-
-  def assert_parsed_result(klass, str)
-    o = klass.new(str)
-    assert_equal(str, o.to_s)
-  end
-
-  def test_SOAPNil
-    o = SOAP::SOAPNil.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::NilLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    o = SOAP::SOAPNil.new(nil)
-    assert_equal(true, o.is_nil)
-    assert_equal(nil, o.data)
-    assert_equal("", o.to_s)
-    o = SOAP::SOAPNil.new('var')
-    assert_equal(false, o.is_nil)
-    assert_equal('var', o.data)
-    assert_equal('var', o.to_s)
-  end
-
-  def test_SOAPString
-    o = SOAP::SOAPString.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::StringLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    str = "abc"
-    assert_equal(str, SOAP::SOAPString.new(str).data)
-    assert_equal(str, SOAP::SOAPString.new(str).to_s)
-    assert_raises(XSD::ValueSpaceError) do
-      SOAP::SOAPString.new("\0")
-    end
-    assert_raises(XSD::ValueSpaceError) do
-      p SOAP::SOAPString.new("\xC0\xC0").to_s
-    end
-  end
-
-  def test_SOAPBoolean
-    o = SOAP::SOAPBoolean.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::BooleanLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      ["true", true],
-      ["1", true],
-      ["false", false],
-      ["0", false],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, SOAP::SOAPBoolean.new(data).data)
-      assert_equal(expected.to_s, SOAP::SOAPBoolean.new(data).to_s)
-    end
-
-    assert_raises(XSD::ValueSpaceError) do
-      SOAP::SOAPBoolean.new("nil").to_s
-    end
-  end
-
-  def test_SOAPDecimal
-    o = SOAP::SOAPDecimal.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::DecimalLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      1000000000,
-      -9999999999,
-      12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890,
-      12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890,
-      -1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789,
-    ]
-    targets.each do |dec|
-      assert_equal(dec.to_s, SOAP::SOAPDecimal.new(dec).data)
-    end
-
-    targets = [
-      "0",
-      "0.00000001",
-      "1000000000",
-      "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-      "-12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123.45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789",
-    ]
-    targets.each do |str|
-      assert_equal(str, SOAP::SOAPDecimal.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["0.0", "0"],
-      ["-0.0", "0"],
-      ["+0.0", "0"],
-      ["0.", "0"],
-      [".0", "0"],
-      [
-       "+0.12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-       "0.1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
-      ],
-      [
-       ".0000012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-       "0.000001234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
-      ],
-      [
-       "-12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.",
-       "-12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
-      ],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, SOAP::SOAPDecimal.new(data).to_s)
-    end
-
-    targets = [
-      "0.000000000000a",
-      "00a.0000000000001",
-      "+-5",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       SOAP::SOAPDecimal.new(d)
-      end
-    end
-  end
-
-  def test_SOAPFloat
-    o = SOAP::SOAPFloat.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::FloatLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      3.14159265358979,
-      12.34e36,
-      1.402e-45,
-      -1.402e-45,
-    ]
-    targets.each do |f|
-      assert_equal(f, SOAP::SOAPFloat.new(f).data)
-    end
-
-    targets = [
-      "+3.141592654",
-      "+1.234e+37",
-      "+1.402e-45",
-      "-1.402e-45",
-    ]
-    targets.each do |f|
-      assert_equal(f, SOAP::SOAPFloat.new(f).to_s)
-    end
-
-    targets = [
-      [3, "+3"],       # should be 3.0?
-      [-2, "-2"],      # ditto
-      [3.14159265358979, "+3.141592654"],
-      [12.34e36, "+1.234e+37"],
-      [1.402e-45, "+1.402e-45"],
-      [-1.402e-45, "-1.402e-45"],
-      ["1.402e", "+1.402"],
-      ["12.34E36", "+1.234e+37"],
-      ["1.402E-45", "+1.402e-45"],
-      ["-1.402E-45", "-1.402e-45"],
-      ["1.402E", "+1.402"],
-    ]
-    targets.each do |f, str|
-      assert_equal(str, SOAP::SOAPFloat.new(f).to_s)
-    end
-
-    assert_equal("+0", SOAP::SOAPFloat.new(+0.0).to_s)
-    assert_equal("-0", SOAP::SOAPFloat.new(NegativeZero).to_s)
-    assert(SOAP::SOAPFloat.new(0.0/0.0).data.nan?)
-    assert_equal("INF", SOAP::SOAPFloat.new(1.0/0.0).to_s)
-    assert_equal(1, SOAP::SOAPFloat.new(1.0/0.0).data.infinite?)
-    assert_equal("-INF", SOAP::SOAPFloat.new(-1.0/0.0).to_s)
-    assert_equal(-1, SOAP::SOAPFloat.new(-1.0/0.0).data.infinite?)
-
-    targets = [
-      "0.000000000000a",
-      "00a.0000000000001",
-      "+-5",
-      "5_0",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       SOAP::SOAPFloat.new(d)
-      end
-    end
-  end
-
-  def test_SOAPDouble
-    o = SOAP::SOAPDouble.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::DoubleLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      3.14159265358979,
-      12.34e36,
-      1.402e-45,
-      -1.402e-45,
-    ]
-    targets.each do |f|
-      assert_equal(f, SOAP::SOAPDouble.new(f).data)
-    end
-
-    targets = [
-      "+3.14159265358979",
-      "+1.234e+37",
-      "+1.402e-45",
-      "-1.402e-45",
-    ]
-    targets.each do |f|
-      assert_equal(f, SOAP::SOAPDouble.new(f).to_s)
-    end
-
-    targets = [
-      [3, "+3"],       # should be 3.0?
-      [-2, "-2"],      # ditto.
-      [3.14159265358979, "+3.14159265358979"],
-      [12.34e36, "+1.234e+37"],
-      [1.402e-45, "+1.402e-45"],
-      [-1.402e-45, "-1.402e-45"],
-      ["1.402e", "+1.402"],
-      ["12.34E36", "+1.234e+37"],
-      ["1.402E-45", "+1.402e-45"],
-      ["-1.402E-45", "-1.402e-45"],
-      ["1.402E", "+1.402"],
-    ]
-    targets.each do |f, str|
-      assert_equal(str, SOAP::SOAPDouble.new(f).to_s)
-    end
-
-    assert_equal("+0", SOAP::SOAPFloat.new(+0.0).to_s)
-    assert_equal("-0", SOAP::SOAPFloat.new(NegativeZero).to_s)
-    assert_equal("NaN", SOAP::SOAPDouble.new(0.0/0.0).to_s)
-    assert(SOAP::SOAPDouble.new(0.0/0.0).data.nan?)
-    assert_equal("INF", SOAP::SOAPDouble.new(1.0/0.0).to_s)
-    assert_equal(1, SOAP::SOAPDouble.new(1.0/0.0).data.infinite?)
-    assert_equal("-INF", SOAP::SOAPDouble.new(-1.0/0.0).to_s)
-    assert_equal(-1, SOAP::SOAPDouble.new(-1.0/0.0).data.infinite?)
-
-    targets = [
-      "0.000000000000a",
-      "00a.0000000000001",
-      "+-5",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       SOAP::SOAPDouble.new(d)
-      end
-    end
-  end
-
-  def test_SOAPDuration
-    o = SOAP::SOAPDuration.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::DurationLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "P1Y2M3DT4H5M6S",
-      "P1234Y5678M9012DT3456H7890M1234.5678S",
-      "P0DT3456H7890M1234.5678S",
-      "P1234Y5678M9012D",
-      "-P1234Y5678M9012DT3456H7890M1234.5678S",
-      "P5678M9012DT3456H7890M1234.5678S",
-      "-P1234Y9012DT3456H7890M1234.5678S",
-      "+P1234Y5678MT3456H7890M1234.5678S",
-      "P1234Y5678M9012DT7890M1234.5678S",
-      "-P1234Y5678M9012DT3456H1234.5678S",
-      "+P1234Y5678M9012DT3456H7890M",
-      "P123400000000000Y",
-      "-P567800000000000M",
-      "+P901200000000000D",
-      "P0DT345600000000000H",
-      "-P0DT789000000000000M",
-      "+P0DT123400000000000.000000000005678S",
-      "P1234YT1234.5678S",
-      "-P5678MT7890M",
-      "+P9012DT3456H",
-    ]
-    targets.each do |str|
-      assert_parsed_result(SOAP::SOAPDuration, str)
-    end
-
-    targets = [
-      ["P0Y0M0DT0H0M0S",
-        "P0D"],
-      ["-P0DT0S",
-        "-P0D"],
-      ["P01234Y5678M9012DT3456H7890M1234.5678S",
-        "P1234Y5678M9012DT3456H7890M1234.5678S"],
-      ["P1234Y005678M9012DT3456H7890M1234.5678S",
-        "P1234Y5678M9012DT3456H7890M1234.5678S"],
-      ["P1234Y5678M0009012DT3456H7890M1234.5678S",
-        "P1234Y5678M9012DT3456H7890M1234.5678S"],
-      ["P1234Y5678M9012DT00003456H7890M1234.5678S",
-        "P1234Y5678M9012DT3456H7890M1234.5678S"],
-      ["P1234Y5678M9012DT3456H000007890M1234.5678S",
-        "P1234Y5678M9012DT3456H7890M1234.5678S"],
-      ["P1234Y5678M9012DT3456H7890M0000001234.5678S",
-        "P1234Y5678M9012DT3456H7890M1234.5678S"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, SOAP::SOAPDuration.new(data).to_s)
-    end
-  end
-
-  def test_SOAPDateTime
-    o = SOAP::SOAPDateTime.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::DateTimeLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "2002-05-18T16:52:20Z",
-      "0001-01-01T00:00:00Z",
-      "9999-12-31T23:59:59Z",
-      "19999-12-31T23:59:59Z",
-      "2002-12-31T23:59:59.999Z",
-      "2002-12-31T23:59:59.001Z",
-      "2002-12-31T23:59:59.99999999999999999999Z",
-      "2002-12-31T23:59:59.00000000000000000001Z",
-      "2002-12-31T23:59:59+09:00",
-      "2002-12-31T23:59:59+00:01",
-      "2002-12-31T23:59:59-00:01",
-      "2002-12-31T23:59:59-23:59",
-      "2002-12-31T23:59:59.00000000000000000001+13:30",
-      "2002-12-31T23:59:59.51375Z",
-      "2002-12-31T23:59:59.51345+12:34",
-      "-2002-05-18T16:52:20Z",
-      "-4711-12-31T23:59:59Z",
-      "-4713-01-01T12:00:00Z",
-      "-19999-12-31T23:59:59Z",
-      "-2002-12-31T23:59:59+00:01",
-      "-0001-12-31T23:59:59.00000000000000000001+13:30",
-    ]
-    targets.each do |str|
-      assert_parsed_result(SOAP::SOAPDateTime, str)
-    end
-
-    targets = [
-      ["2002-12-31T23:59:59.00",
-       "2002-12-31T23:59:59Z"],
-      ["2002-12-31T23:59:59+00:00",
-       "2002-12-31T23:59:59Z"],
-      ["2002-12-31T23:59:59-00:00",
-       "2002-12-31T23:59:59Z"],
-      ["-2002-12-31T23:59:59.00",
-       "-2002-12-31T23:59:59Z"],
-      ["-2002-12-31T23:59:59+00:00",
-       "-2002-12-31T23:59:59Z"],
-      ["-2002-12-31T23:59:59-00:00",
-       "-2002-12-31T23:59:59Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, SOAP::SOAPDateTime.new(data).to_s)
-      d = DateTime.parse(data)
-      d >>= 12 if d.year < 0    # XSDDateTime.year(-1) == DateTime.year(0)
-      assert_equal(expected, SOAP::SOAPDateTime.new(d).to_s)
-    end
-
-    targets = [
-      "1-05-18T16:52:20Z",
-      "05-18T16:52:20Z",
-      "2002-05T16:52:20Z",
-      "2002-05-18T16:52Z",
-      "",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError, d.to_s) do
-       SOAP::SOAPDateTime.new(d)
-      end
-    end
-  end
-
-  def test_SOAPTime
-    o = SOAP::SOAPTime.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::TimeLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "16:52:20Z",
-      "00:00:00Z",
-      "23:59:59Z",
-      "23:59:59.999Z",
-      "23:59:59.001Z",
-      "23:59:59.99999999999999999999Z",
-      "23:59:59.00000000000000000001Z",
-      "23:59:59+09:00",
-      "23:59:59+00:01",
-      "23:59:59-00:01",
-      "23:59:59-23:59",
-      "23:59:59.00000000000000000001+13:30",
-      "23:59:59.51375Z",
-      "23:59:59.51375+12:34",
-      "23:59:59+00:01",
-    ]
-    targets.each do |str|
-      assert_parsed_result(SOAP::SOAPTime, str)
-    end
-
-    targets = [
-      ["23:59:59.00",
-       "23:59:59Z"],
-      ["23:59:59+00:00",
-       "23:59:59Z"],
-      ["23:59:59-00:00",
-       "23:59:59Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, SOAP::SOAPTime.new(data).to_s)
-    end
-  end
-
-  def test_SOAPDate
-    o = SOAP::SOAPDate.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::DateLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "2002-05-18Z",
-      "0001-01-01Z",
-      "9999-12-31Z",
-      "19999-12-31Z",
-      "2002-12-31+09:00",
-      "2002-12-31+00:01",
-      "2002-12-31-00:01",
-      "2002-12-31-23:59",
-      "2002-12-31+13:30",
-      "-2002-05-18Z",
-      "-19999-12-31Z",
-      "-2002-12-31+00:01",
-      "-0001-12-31+13:30",
-    ]
-    targets.each do |str|
-      assert_parsed_result(SOAP::SOAPDate, str)
-    end
-
-    targets = [
-      ["2002-12-31",
-       "2002-12-31Z"],
-      ["2002-12-31+00:00",
-       "2002-12-31Z"],
-      ["2002-12-31-00:00",
-       "2002-12-31Z"],
-      ["-2002-12-31",
-       "-2002-12-31Z"],
-      ["-2002-12-31+00:00",
-       "-2002-12-31Z"],
-      ["-2002-12-31-00:00",
-       "-2002-12-31Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, SOAP::SOAPDate.new(data).to_s)
-      d = Date.parse(data)
-      d >>= 12 if d.year < 0    # XSDDate.year(-1) == Date.year(0)
-      assert_equal(expected, SOAP::SOAPDate.new(d).to_s)
-    end
-  end
-
-  def test_SOAPGYearMonth
-    o = SOAP::SOAPGYearMonth.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::GYearMonthLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "2002-05Z",
-      "0001-01Z",
-      "9999-12Z",
-      "19999-12Z",
-      "2002-12+09:00",
-      "2002-12+00:01",
-      "2002-12-00:01",
-      "2002-12-23:59",
-      "2002-12+13:30",
-      "-2002-05Z",
-      "-19999-12Z",
-      "-2002-12+00:01",
-      "-0001-12+13:30",
-    ]
-    targets.each do |str|
-      assert_parsed_result(SOAP::SOAPGYearMonth, str)
-    end
-
-    targets = [
-      ["2002-12",
-       "2002-12Z"],
-      ["2002-12+00:00",
-       "2002-12Z"],
-      ["2002-12-00:00",
-       "2002-12Z"],
-      ["-2002-12",
-       "-2002-12Z"],
-      ["-2002-12+00:00",
-       "-2002-12Z"],
-      ["-2002-12-00:00",
-       "-2002-12Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, SOAP::SOAPGYearMonth.new(data).to_s)
-    end
-  end
-
-  def test_SOAPGYear
-    o = SOAP::SOAPGYear.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::GYearLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "2002Z",
-      "0001Z",
-      "9999Z",
-      "19999Z",
-      "2002+09:00",
-      "2002+00:01",
-      "2002-00:01",
-      "2002-23:59",
-      "2002+13:30",
-      "-2002Z",
-      "-19999Z",
-      "-2002+00:01",
-      "-0001+13:30",
-    ]
-    targets.each do |str|
-      assert_parsed_result(SOAP::SOAPGYear, str)
-    end
-
-    targets = [
-      ["2002",
-       "2002Z"],
-      ["2002+00:00",
-       "2002Z"],
-      ["2002-00:00",
-       "2002Z"],
-      ["-2002",
-       "-2002Z"],
-      ["-2002+00:00",
-       "-2002Z"],
-      ["-2002-00:00",
-       "-2002Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, SOAP::SOAPGYear.new(data).to_s)
-    end
-  end
-
-  def test_SOAPGMonthDay
-    o = SOAP::SOAPGMonthDay.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::GMonthDayLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "05-18Z",
-      "01-01Z",
-      "12-31Z",
-      "12-31+09:00",
-      "12-31+00:01",
-      "12-31-00:01",
-      "12-31-23:59",
-      "12-31+13:30",
-    ]
-    targets.each do |str|
-      assert_parsed_result(SOAP::SOAPGMonthDay, str)
-    end
-
-    targets = [
-      ["12-31",
-       "12-31Z"],
-      ["12-31+00:00",
-       "12-31Z"],
-      ["12-31-00:00",
-       "12-31Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, SOAP::SOAPGMonthDay.new(data).to_s)
-    end
-  end
-
-  def test_SOAPGDay
-    o = SOAP::SOAPGDay.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::GDayLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "18Z",
-      "01Z",
-      "31Z",
-      "31+09:00",
-      "31+00:01",
-      "31-00:01",
-      "31-23:59",
-      "31+13:30",
-    ]
-    targets.each do |str|
-      assert_parsed_result(SOAP::SOAPGDay, str)
-    end
-
-    targets = [
-      ["31",
-       "31Z"],
-      ["31+00:00",
-       "31Z"],
-      ["31-00:00",
-       "31Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, SOAP::SOAPGDay.new(data).to_s)
-    end
-  end
-
-  def test_SOAPGMonth
-    o = SOAP::SOAPGMonth.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::GMonthLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "05Z",
-      "01Z",
-      "12Z",
-      "12+09:00",
-      "12+00:01",
-      "12-00:01",
-      "12-23:59",
-      "12+13:30",
-    ]
-    targets.each do |str|
-      assert_parsed_result(SOAP::SOAPGMonth, str)
-    end
-
-    targets = [
-      ["12",
-       "12Z"],
-      ["12+00:00",
-       "12Z"],
-      ["12-00:00",
-       "12Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, SOAP::SOAPGMonth.new(data).to_s)
-    end
-  end
-
-  def test_SOAPHexBinary
-    o = SOAP::SOAPHexBinary.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::HexBinaryLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "abcdef",
-      "\xe3\x81\xaa\xe3\x81\xb2",
-      "\0",
-      "",
-    ]
-    targets.each do |str|
-      assert_equal(str, SOAP::SOAPHexBinary.new(str).string)
-      assert_equal(str.unpack("H*")[0].tr('a-f', 'A-F'),
-       SOAP::SOAPHexBinary.new(str).data)
-      o = SOAP::SOAPHexBinary.new
-      o.set_encoded(str.unpack("H*")[0].tr('a-f', 'A-F'))
-      assert_equal(str, o.string)
-      o.set_encoded(str.unpack("H*")[0].tr('A-F', 'a-f'))
-      assert_equal(str, o.string)
-    end
-
-    targets = [
-      "0FG7",
-      "0fg7",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError, d.to_s) do
-       o = SOAP::SOAPHexBinary.new
-       o.set_encoded(d)
-       p o.string
-      end
-    end
-  end
-
-  def test_SOAPBase64Binary
-    o = SOAP::SOAPBase64.new
-    assert_equal(SOAP::EncodingNamespace, o.type.namespace)
-    assert_equal(SOAP::Base64Literal, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "abcdef",
-      "\xe3\x81\xaa\xe3\x81\xb2",
-      "\0",
-      "",
-    ]
-    targets.each do |str|
-      assert_equal(str, SOAP::SOAPBase64.new(str).string)
-      assert_equal([str].pack("m").chomp, SOAP::SOAPBase64.new(str).data)
-      o = SOAP::SOAPBase64.new
-      o.set_encoded([str].pack("m").chomp)
-      assert_equal(str, o.string)
-    end
-
-    targets = [
-      "-",
-      "*",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError, d.to_s) do
-       o = SOAP::SOAPBase64.new
-       o.set_encoded(d)
-       p o.string
-      end
-    end
-  end
-
-  def test_SOAPAnyURI
-    o = SOAP::SOAPAnyURI.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::AnyURILiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    # Too few tests here I know.  Believe uri module. :)
-    targets = [
-      "foo",
-      "http://foo",
-      "http://foo/bar/baz",
-      "http://foo/bar#baz",
-      "http://foo/bar%20%20?a+b",
-      "HTTP://FOO/BAR%20%20?A+B",
-    ]
-    targets.each do |str|
-      assert_parsed_result(SOAP::SOAPAnyURI, str)
-    end
-  end
-
-  def test_SOAPQName
-    o = SOAP::SOAPQName.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::QNameLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    # More strict test is needed but current implementation allows all non-':'
-    # chars like ' ', C0 or C1...
-    targets = [
-      "foo",
-      "foo:bar",
-      "a:b",
-    ]
-    targets.each do |str|
-      assert_parsed_result(SOAP::SOAPQName, str)
-    end
-  end
-
-
-  ###
-  ## Derived types
-  #
-
-  def test_SOAPInteger
-    o = SOAP::SOAPInteger.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::IntegerLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      1000000000,
-      -9999999999,
-      12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890,
-      12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890,
-      -1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789,
-    ]
-    targets.each do |int|
-      assert_equal(int, SOAP::SOAPInteger.new(int).data)
-    end
-
-    targets = [
-      "0",
-      "1000000000",
-      "-9999999999",
-      "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-      "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-      "-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789",
-    ]
-    targets.each do |str|
-      assert_equal(str, SOAP::SOAPInteger.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["000123", "123"],
-      ["-000123", "-123"],
-      [
-       "+12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-       "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
-      ],
-   ]
-    targets.each do |data, expected|
-      assert_equal(expected, SOAP::SOAPInteger.new(data).to_s)
-    end
-
-    targets = [
-      "0.0",
-      "-5.2",
-      "0.000000000000a",
-      "+-5",
-      "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890."
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       SOAP::SOAPInteger.new(d)
-      end
-    end
-  end
-
-  def test_SOAPLong
-    o = SOAP::SOAPLong.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::LongLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      123,
-      -123,
-      9223372036854775807,
-      -9223372036854775808,
-    ]
-    targets.each do |lng|
-      assert_equal(lng, SOAP::SOAPLong.new(lng).data)
-    end
-
-    targets = [
-      "0",
-      "123",
-      "-123",
-      "9223372036854775807",
-      "-9223372036854775808",
-    ]
-    targets.each do |str|
-      assert_equal(str, SOAP::SOAPLong.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["000123", "123"],
-      ["-000123", "-123"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, SOAP::SOAPLong.new(data).to_s)
-    end
-
-    targets = [
-      9223372036854775808,
-      -9223372036854775809,
-      "0.0",
-      "-5.2",
-      "0.000000000000a",
-      "+-5",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       SOAP::SOAPLong.new(d)
-      end
-    end
-  end
-
-  def test_SOAPInt
-    o = SOAP::SOAPInt.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::IntLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      123,
-      -123,
-      2147483647,
-      -2147483648,
-    ]
-    targets.each do |lng|
-      assert_equal(lng, SOAP::SOAPInt.new(lng).data)
-    end
-
-    targets = [
-      "0",
-      "123",
-      "-123",
-      "2147483647",
-      "-2147483648",
-    ]
-    targets.each do |str|
-      assert_equal(str, SOAP::SOAPInt.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["000123", "123"],
-      ["-000123", "-123"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, SOAP::SOAPInt.new(data).to_s)
-    end
-
-    targets = [
-      2147483648,
-      -2147483649,
-      "0.0",
-      "-5.2",
-      "0.000000000000a",
-      "+-5",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       SOAP::SOAPInt.new(d)
-      end
-    end
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/test_envelopenamespace.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/test_envelopenamespace.rb
deleted file mode 100644 (file)
index 5b7d281..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/driver'
-require 'webrick'
-require 'logger'
-
-
-module SOAP
-
-
-class TestEnvelopeNamespace < Test::Unit::TestCase
-  Port = 17171
-  TemporaryNamespace = 'urn:foo'
-
-  def setup
-    @logger = Logger.new(STDERR)
-    @logger.level = Logger::Severity::ERROR
-    @url = "http://localhost:#{Port}/"
-    @server = @client = nil
-    @server_thread = nil
-    setup_server
-    setup_client
-  end
-
-  def teardown
-    teardown_client
-    teardown_server
-  end
-
-  def setup_server
-    @server = WEBrick::HTTPServer.new(
-      :BindAddress => "0.0.0.0",
-      :Logger => @logger,
-      :Port => Port,
-      :AccessLog => [],
-      :DocumentRoot => File.dirname(File.expand_path(__FILE__))
-    )
-    @server.mount(
-      '/',
-      WEBrick::HTTPServlet::ProcHandler.new(method(:do_server_proc).to_proc)
-    )
-    @server_thread = start_server_thread(@server)
-  end
-
-  def setup_client
-    @client = SOAP::RPC::Driver.new(@url, '')
-    @client.add_method("do_server_proc")
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def teardown_client
-    @client.reset_stream
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def do_server_proc(req, res)
-    res['content-type'] = 'text/xml'
-    res.body = <<__EOX__
-<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:env="#{TemporaryNamespace}">
-  <env:Body>
-    <n1:do_server_proc xmlns:n1="urn:foo" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
-      <return>hello world</return>
-    </n1:do_server_proc>
-  </env:Body>
-</env:Envelope>
-__EOX__
-  end
-
-  def test_normal
-    assert_raise(SOAP::ResponseFormatError) do
-      @client.do_server_proc
-    end
-    @client.options["soap.envelope.requestnamespace"] = TemporaryNamespace
-    @client.options["soap.envelope.responsenamespace"] = TemporaryNamespace
-    assert_equal('hello world', @client.do_server_proc)
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/test_httpconfigloader.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/test_httpconfigloader.rb
deleted file mode 100644 (file)
index b06243f..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-require 'test/unit'
-require 'soap/httpconfigloader'
-require 'soap/rpc/driver'
-
-if defined?(HTTPAccess2)
-
-module SOAP
-
-
-class TestHTTPConfigLoader < Test::Unit::TestCase
-  DIR = File.dirname(File.expand_path(__FILE__))
-
-  def setup
-    @client = SOAP::RPC::Driver.new(nil, nil)
-  end
-
-  def test_property
-    testpropertyname = File.join(DIR, 'soapclient.properties')
-    File.open(testpropertyname, "w") do |f|
-      f <<<<__EOP__
-protocol.http.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_PEER
-# depth: 1 causes an error (intentional)
-protocol.http.ssl_config.verify_depth = 1
-protocol.http.ssl_config.ciphers = ALL
-__EOP__
-    end
-    begin
-      @client.loadproperty(testpropertyname)
-      assert_equal('ALL', @client.options['protocol.http.ssl_config.ciphers'])
-    ensure
-      File.unlink(testpropertyname)
-    end
-  end
-end
-
-
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/test_mapping.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/test_mapping.rb
deleted file mode 100644 (file)
index 26222e6..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-require 'test/unit'
-require 'soap/mapping'
-
-
-module SOAP
-
-
-class TestMapping < Test::Unit::TestCase
-  def test_date
-    targets = [
-      ["2002-12-31",
-       "2002-12-31Z"],
-      ["2002-12-31+00:00",
-       "2002-12-31Z"],
-      ["2002-12-31-00:00",
-       "2002-12-31Z"],
-      ["-2002-12-31",
-       "-2002-12-31Z"],
-      ["-2002-12-31+00:00",
-       "-2002-12-31Z"],
-      ["-2002-12-31-00:00",
-       "-2002-12-31Z"],
-    ]
-    targets.each do |str, expectec|
-      d = Date.parse(str)
-      assert_equal(d.class, convert(d).class)
-      assert_equal(d, convert(d))
-    end
-  end
-
-  def test_datetime
-    targets = [
-      ["2002-12-31T23:59:59.00",
-       "2002-12-31T23:59:59Z"],
-      ["2002-12-31T23:59:59+00:00",
-       "2002-12-31T23:59:59Z"],
-      ["2002-12-31T23:59:59-00:00",
-       "2002-12-31T23:59:59Z"],
-      ["-2002-12-31T23:59:59.00",
-       "-2002-12-31T23:59:59Z"],
-      ["-2002-12-31T23:59:59+00:00",
-       "-2002-12-31T23:59:59Z"],
-      ["-2002-12-31T23:59:59-00:00",
-       "-2002-12-31T23:59:59Z"],
-    ]
-    targets.each do |str, expectec|
-      d = DateTime.parse(str)
-      assert_equal(d.class, convert(d).class)
-      assert_equal(d, convert(d))
-    end
-  end
-
-  def convert(obj)
-    SOAP::Mapping.soap2obj(SOAP::Mapping.obj2soap(obj))
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/test_no_indent.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/test_no_indent.rb
deleted file mode 100644 (file)
index f49fb73..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/standaloneServer'
-require 'soap/rpc/driver'
-
-if defined?(HTTPAccess2)
-
-module SOAP
-
-
-class TestNoIndent < Test::Unit::TestCase
-  Port = 17171
-
-  class NopServer < SOAP::RPC::StandaloneServer
-    def initialize(*arg)
-      super
-      add_rpc_method(self, 'nop')
-    end
-
-    def nop
-      SOAP::RPC::SOAPVoid.new
-    end
-  end
-
-  def setup
-    @server = NopServer.new(self.class.name, nil, '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @t = Thread.new {
-      @server.start
-    }
-    @endpoint = "http://localhost:#{Port}/"
-    @client = SOAP::RPC::Driver.new(@endpoint)
-    @client.add_rpc_method('nop')
-  end
-
-  def teardown
-    @server.shutdown
-    @t.kill
-    @t.join
-    @client.reset_stream
-  end
-
-  INDENT_XML =
-%q[<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <nop env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
-    </nop>
-  </env:Body>
-</env:Envelope>]
-
-  NO_INDENT_XML =
-%q[<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<env:Body>
-<nop env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
-</nop>
-</env:Body>
-</env:Envelope>]
-
-  def test_indent
-    @client.wiredump_dev = str = ''
-    @client.options["soap.envelope.no_indent"] = false
-    @client.nop
-    assert_equal(INDENT_XML, parse_requestxml(str))
-  end
-
-  def test_no_indent
-    @client.wiredump_dev = str = ''
-    @client.options["soap.envelope.no_indent"] = true
-    @client.nop
-    assert_equal(NO_INDENT_XML, parse_requestxml(str))
-  end
-
-  def parse_requestxml(str)
-    str.split(/\r?\n\r?\n/)[3]
-  end
-end
-
-
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/test_property.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/test_property.rb
deleted file mode 100644 (file)
index 7acd2c8..0000000
+++ /dev/null
@@ -1,424 +0,0 @@
-require 'test/unit'
-require 'soap/property'
-
-
-module SOAP
-
-
-class TestProperty < Test::Unit::TestCase
-  FrozenError = (RUBY_VERSION >= "1.9.0") ? RuntimeError : TypeError
-
-  def setup
-    @prop = ::SOAP::Property.new
-  end
-
-  def teardown
-    # Nothing to do.
-  end
-
-  def test_s_load
-    propstr = <<__EOP__
-
-# comment1
-
-# comment2\r
-# comment2
-
-\r
-a.b.0 = 1
-a.b.1 = 2
-a.b.2 = 3
-client.protocol.http.proxy=http://myproxy:8080   \r
-client.protocol.http.no_proxy:  intranet.example.com,local.example.com\r
-client.protocol.http.protocol_version = 1.0
-foo\\:bar\\=baz = qux
-foo\\\\.bar.baz=\tq\\\\ux\ttab
-  a\\ b                            =                          1   
-[ppp.qqq.rrr]
-sss = 3
-ttt.uuu = 4
-
-[ sss.ttt.uuu  ]
-vvv.www = 5
-[  ]
-xxx.yyy.zzz = 6
-__EOP__
-    prop = Property.load(propstr)
-    assert_equal(["1", "2", "3"], prop["a.b"].values.sort)
-    assert_equal("intranet.example.com,local.example.com",
-      prop["client.protocol.http.no_proxy"])
-    assert_equal("http://myproxy:8080", prop["client.protocol.http.proxy"])
-    assert_equal("1.0", prop["client.protocol.http.protocol_version"])
-    assert_equal("q\\ux\ttab", prop['foo\.bar.baz'])
-    assert_equal("1", prop['a b'])
-    assert_equal("3", prop['ppp.qqq.rrr.sss'])
-    assert_equal("4", prop['ppp.qqq.rrr.ttt.uuu'])
-    assert_equal("5", prop['sss.ttt.uuu.vvv.www'])
-    assert_equal("6", prop['xxx.yyy.zzz'])
-  end
-
-  def test_load
-    prop = Property.new
-    hooked = false
-    prop.add_hook("foo.bar.baz") do |name, value|
-      assert_equal(["foo", "bar", "baz"], name)
-      assert_equal("123", value)
-      hooked = true
-    end
-    prop.lock
-    prop["foo.bar"].lock
-    prop.load("foo.bar.baz = 123")
-    assert(hooked)
-    assert_raises(FrozenError) do
-      prop.load("foo.bar.qux = 123")
-    end
-    prop.load("foo.baz = 456")
-    assert_equal("456", prop["foo.baz"])
-  end
-
-  def test_initialize
-    prop = ::SOAP::Property.new
-    # store is empty
-    assert_nil(prop["a"])
-    # does hook work?
-    assert_equal(1, prop["a"] = 1)
-  end
-
-  def test_aref
-    # name_to_a
-    assert_nil(@prop[:foo])
-    assert_nil(@prop["foo"])
-    assert_nil(@prop[[:foo]])
-    assert_nil(@prop[["foo"]])
-    assert_raises(ArgumentError) do
-      @prop[1]
-    end
-    @prop[:foo] = :foo
-    assert_equal(:foo, @prop[:foo])
-    assert_equal(:foo, @prop["foo"])
-    assert_equal(:foo, @prop[[:foo]])
-    assert_equal(:foo, @prop[["foo"]])
-  end
-
-  def test_referent
-    # referent(1)
-    assert_nil(@prop["foo.foo"])
-    assert_nil(@prop[["foo", "foo"]])
-    assert_nil(@prop[["foo", :foo]])
-    @prop["foo.foo"] = :foo
-    assert_equal(:foo, @prop["foo.foo"])
-    assert_equal(:foo, @prop[["foo", "foo"]])
-    assert_equal(:foo, @prop[[:foo, "foo"]])
-    # referent(2)
-    @prop["bar.bar.bar"] = :bar
-    assert_equal(:bar, @prop["bar.bar.bar"])
-    assert_equal(:bar, @prop[["bar", "bar", "bar"]])
-    assert_equal(:bar, @prop[[:bar, "bar", :bar]])
-  end
-
-  def test_to_key_and_deref
-    @prop["foo.foo"] = :foo
-    assert_equal(:foo, @prop["fOo.FoO"])
-    assert_equal(:foo, @prop[[:fOO, :FOO]])
-    assert_equal(:foo, @prop[["FoO", :Foo]])
-    # deref_key negative test
-    assert_raises(ArgumentError) do
-      @prop["baz"] = 1
-      @prop["baz.qux"] = 2
-    end
-  end
-
-  def test_hook_name
-    tag = Object.new
-    tested = false
-    @prop.add_hook("foo.bar") do |key, value|
-      assert_raise(FrozenError) do
-       key << "baz"
-      end
-      tested = true
-    end
-    @prop["foo.bar"] = tag
-    assert(tested)
-  end
-
-  def test_value_hook
-    tag = Object.new
-    tested = false
-    @prop.add_hook("FOO.BAR.BAZ") do |key, value|
-      assert_equal(["Foo", "baR", "baZ"], key)
-      assert_equal(tag, value)
-      tested = true
-    end
-    @prop["Foo.baR.baZ"] = tag
-    assert_equal(tag, @prop["foo.bar.baz"])
-    assert(tested)
-    @prop["foo.bar"] = 1       # unhook the above block
-    assert_equal(1, @prop["foo.bar"])
-  end
-
-  def test_key_hook_no_cascade
-    tag = Object.new
-    tested = 0
-    @prop.add_hook do |key, value|
-      assert(false)
-    end
-    @prop.add_hook(false) do |key, value|
-      assert(false)
-    end
-    @prop.add_hook("foo") do |key, value|
-      assert(false)
-    end
-    @prop.add_hook("foo.bar", false) do |key, value|
-      assert(false)
-    end
-    @prop.add_hook("foo.bar.baz") do |key, value|
-      assert(false)
-    end
-    @prop.add_hook("foo.bar.baz.qux", false) do |key, value|
-      assert_equal(["foo", "bar", "baz", "qux"], key)
-      assert_equal(tag, value)
-      tested += 1
-    end
-    @prop["foo.bar.baz.qux"] = tag
-    assert_equal(tag, @prop["foo.bar.baz.qux"])
-    assert_equal(1, tested)
-  end
-
-  def test_key_hook_cascade
-    tag = Object.new
-    tested = 0
-    @prop.add_hook(true) do |key, value|
-      assert_equal(["foo", "bar", "baz", "qux"], key)
-      assert_equal(tag, value)
-      tested += 1
-    end
-    @prop.add_hook("foo", true) do |key, value|
-      assert_equal(["foo", "bar", "baz", "qux"], key)
-      assert_equal(tag, value)
-      tested += 1
-    end
-    @prop.add_hook("foo.bar", true) do |key, value|
-      assert_equal(["foo", "bar", "baz", "qux"], key)
-      assert_equal(tag, value)
-      tested += 1
-    end
-    @prop.add_hook("foo.bar.baz", true) do |key, value|
-      assert_equal(["foo", "bar", "baz", "qux"], key)
-      assert_equal(tag, value)
-      tested += 1
-    end
-    @prop.add_hook("foo.bar.baz.qux", true) do |key, value|
-      assert_equal(["foo", "bar", "baz", "qux"], key)
-      assert_equal(tag, value)
-      tested += 1
-    end
-    @prop["foo.bar.baz.qux"] = tag
-    assert_equal(tag, @prop["foo.bar.baz.qux"])
-    assert_equal(5, tested)
-  end
-
-  def test_keys
-    assert(@prop.keys.empty?)
-    @prop["foo"] = 1
-    @prop["bar"]
-    @prop["BAz"] = 2
-    assert_equal(2, @prop.keys.size)
-    assert(@prop.keys.member?("foo"))
-    assert(@prop.keys.member?("baz"))
-    #
-    assert_nil(@prop["a"])
-    @prop["a.a"] = 1
-    assert_instance_of(::SOAP::Property, @prop["a"])
-    @prop["a.b"] = 1
-    @prop["a.c"] = 1
-    assert_equal(3, @prop["a"].keys.size)
-    assert(@prop["a"].keys.member?("a"))
-    assert(@prop["a"].keys.member?("b"))
-    assert(@prop["a"].keys.member?("c"))
-  end
-
-  def test_lshift
-    assert(@prop.empty?)
-    @prop << 1
-    assert_equal([1], @prop.values)
-    assert_equal(1, @prop["0"])
-    @prop << 1
-    assert_equal([1, 1], @prop.values)
-    assert_equal(1, @prop["1"])
-    @prop << 1
-    assert_equal([1, 1, 1], @prop.values)
-    assert_equal(1, @prop["2"])
-    #
-    @prop["abc.def"] = o = SOAP::Property.new
-    tested = 0
-    o.add_hook do |k, v|
-      tested += 1
-    end
-    @prop["abc.def"] << 1
-    @prop["abc.def"] << 2
-    @prop["abc.def"] << 3
-    @prop["abc.def"] << 4
-    assert_equal(4, tested)
-  end
-
-  def test_lock_each
-    @prop["a.b.c.d.e"] = 1
-    @prop["a.b.d"] = branch = ::SOAP::Property.new
-    @prop["a.b.d.e.f"] = 2
-    @prop.lock
-    assert(@prop.locked?)
-    assert_instance_of(::SOAP::Property, @prop["a"])
-    assert_raises(FrozenError) do
-      @prop["b"]
-    end
-    #
-    @prop["a"].lock
-    assert_raises(FrozenError) do
-      @prop["a"]
-    end
-    assert_instance_of(::SOAP::Property, @prop["a.b"])
-    #
-    @prop["a.b"].lock
-    assert_raises(FrozenError) do
-      @prop["a.b"]
-    end
-    assert_raises(FrozenError) do
-      @prop["a"]
-    end
-    #
-    @prop["a.b.c.d"].lock
-    assert_instance_of(::SOAP::Property, @prop["a.b.c"])
-    assert_raises(FrozenError) do
-      @prop["a.b.c.d"]
-    end
-    assert_instance_of(::SOAP::Property, @prop["a.b.d"])
-    #
-    branch["e"].lock
-    assert_instance_of(::SOAP::Property, @prop["a.b.d"])
-    assert_raises(FrozenError) do
-      @prop["a.b.d.e"]
-    end
-    assert_raises(FrozenError) do
-      branch["e"]
-    end
-  end
-
-  def test_lock_cascade
-    @prop["a.a"] = nil
-    @prop["a.b.c"] = 1
-    @prop["b"] = false
-    @prop.lock(true)
-    assert(@prop.locked?)
-    assert_equal(nil, @prop["a.a"])
-    assert_equal(1, @prop["a.b.c"])
-    assert_equal(false, @prop["b"])
-    assert_raises(FrozenError) do
-      @prop["c"]
-    end
-    assert_raises(FrozenError) do
-      @prop["c"] = 2
-    end
-    assert_raises(FrozenError) do
-      @prop["a.b.R"]
-    end
-    assert_raises(FrozenError) do
-      @prop.add_hook do
-       assert(false)
-      end
-    end
-    assert_raises(FrozenError) do
-      @prop.add_hook("c") do
-       assert(false)
-      end
-    end
-    assert_raises(FrozenError) do
-      @prop.add_hook("a.c") do
-       assert(false)
-      end
-    end
-    assert_nil(@prop["a.a"])
-    @prop["a.a"] = 2
-    assert_equal(2, @prop["a.a"])
-    #
-    @prop.unlock(true)
-    assert_nil(@prop["c"])
-    @prop["c"] = 2
-    assert_equal(2, @prop["c"])
-    @prop["a.d.a.a"] = :foo
-    assert_equal(:foo, @prop["a.d.a.a"])
-    tested = false
-    @prop.add_hook("a.c") do |name, value|
-      assert(true)
-      tested = true
-    end
-    @prop["a.c"] = 3
-    assert(tested)
-  end
-
-  def test_hook_then_lock
-    tested = false
-    @prop.add_hook("a.b.c") do |name, value|
-      assert_equal(["a", "b", "c"], name)
-      tested = true
-    end
-    @prop["a.b"].lock
-    assert(!tested)
-    @prop["a.b.c"] = 5
-    assert(tested)
-    assert_equal(5, @prop["a.b.c"])
-    assert_raises(FrozenError) do
-      @prop["a.b.d"] = 5
-    end
-  end
-
-  def test_lock_unlock_return
-    assert_equal(@prop, @prop.lock)
-    assert_equal(@prop, @prop.unlock)
-  end
-
-  def test_lock_split
-    @prop["a.b.c"] = 1
-    assert_instance_of(::SOAP::Property, @prop["a.b"])
-    @prop["a.b.d"] = branch = ::SOAP::Property.new
-    @prop["a.b.d.e"] = 2
-    assert_equal(branch, @prop["a.b.d"])
-    assert_equal(branch, @prop[:a][:b][:d])
-    @prop.lock(true)
-    # split error 1
-    assert_raises(FrozenError) do
-      @prop["a.b"]
-    end
-    # split error 2
-    assert_raises(FrozenError) do
-      @prop["a"]
-    end
-    @prop["a.b.c"] = 2
-    assert_equal(2, @prop["a.b.c"])
-    # replace error
-    assert_raises(FrozenError) do
-      @prop["a.b.c"] = ::SOAP::Property.new
-    end
-    # override error
-    assert_raises(FrozenError) do
-      @prop["a.b"] = 1
-    end
-    #
-    assert_raises(FrozenError) do
-      @prop["a.b.d"] << 1
-    end
-    assert_raises(FrozenError) do
-      branch << 1
-    end
-    branch.unlock(true)
-    branch << 1
-    branch << 2
-    branch << 3
-    assert_equal(2, @prop["a.b.d.e"])
-    assert_equal(1, @prop["a.b.d.1"])
-    assert_equal(2, @prop["a.b.d.2"])
-    assert_equal(3, @prop["a.b.d.3"])
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/test_soapelement.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/test_soapelement.rb
deleted file mode 100644 (file)
index 66e2a83..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-require 'test/unit'
-require 'soap/baseData'
-require 'soap/mapping'
-
-
-module SOAP
-
-
-class TestSOAPElement < Test::Unit::TestCase
-  include SOAP
-
-  def setup
-    # Nothing to do.
-  end
-
-  def teardown
-    # Nothing to do.
-  end
-
-  def d(elename = nil, text = nil)
-    elename ||= n(nil, nil)
-    if text
-      SOAPElement.new(elename, text)
-    else
-      SOAPElement.new(elename) # do not merge.
-    end
-  end
-
-  def n(namespace, name)
-    XSD::QName.new(namespace, name)
-  end
-
-  def test_initialize
-    elename = n(nil, nil)
-    obj = d(elename)
-    assert_equal(elename, obj.elename)
-    assert_equal(LiteralNamespace, obj.encodingstyle)
-    assert_equal({}, obj.extraattr)
-    assert_equal([], obj.precedents)
-    assert_equal(nil, obj.qualified)
-    assert_equal(nil, obj.text)
-    assert(obj.members.empty?)
-
-    obj = d("foo", "text")
-    assert_equal(n(nil, "foo"), obj.elename)
-    assert_equal("text", obj.text)
-  end
-
-  def test_add
-    obj = d()
-    child = d("abc")
-    obj.add(child)
-    assert(obj.key?("abc"))
-    assert_same(child, obj["abc"])
-    assert_same(child, obj.abc)
-    def obj.foo; 1; end
-    child = d("foo")
-    obj.add(child)
-    assert_equal(1, obj.foo)
-    assert_equal(child, obj.var_foo)
-    child = d("_?a?b_")
-    obj.add(child)
-    assert_equal(child, obj.__send__('_?a?b_'))
-  end
-
-  def test_member
-    obj = d()
-    c1 = d("c1")
-    obj.add(c1)
-    c2 = d("c2")
-    obj.add(c2)
-    assert(obj.key?("c1"))
-    assert(obj.key?("c2"))
-    assert_equal(c1, obj["c1"])
-    assert_equal(c2, obj["c2"])
-    c22 = d("c22")
-    obj["c2"] = c22
-    assert(obj.key?("c2"))
-    assert_equal(c22, obj["c2"])
-    assert_equal(["c1", "c2"], obj.members.sort)
-    #
-    k_expect = ["c1", "c2"]
-    v_expect = [c1, c22]
-    obj.each do |k, v|
-      assert(k_expect.include?(k))
-      assert(v_expect.include?(v))
-      k_expect.delete(k)
-      v_expect.delete(v)
-    end
-    assert(k_expect.empty?)
-    assert(v_expect.empty?)
-  end
-
-  def test_to_obj
-    obj = d("root")
-    ct1 = d("ct1", "t1")
-    obj.add(ct1)
-    c2 = d("c2")
-    ct2 = d("ct2", "t2")
-    c2.add(ct2)
-    obj.add(c2)
-    assert_equal({ "ct1" => "t1", "c2" => { "ct2" => "t2" }}, obj.to_obj) 
-    #
-    assert_equal(nil, d().to_obj)
-    assert_equal("abc", d(nil, "abc").to_obj)
-    assert_equal(nil, d("abc", nil).to_obj)
-  end
-
-  def test_from_obj
-    source = { "ct1" => "t1", "c2" => { "ct2" => "t2" }}
-    assert_equal(source, SOAPElement.from_obj(source).to_obj)
-    source = { "1" => nil }
-    assert_equal(source, SOAPElement.from_obj(source).to_obj)
-    source = {}
-    assert_equal(nil, SOAPElement.from_obj(source).to_obj)     # not {}
-    source = nil
-    assert_equal(nil, SOAPElement.from_obj(source).to_obj)
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/test_streamhandler.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/test_streamhandler.rb
deleted file mode 100644 (file)
index c312545..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/driver'
-require 'webrick'
-require 'webrick/httpproxy'
-require 'logger'
-
-
-module SOAP
-
-
-class TestStreamHandler < Test::Unit::TestCase
-  Port = 17171
-  ProxyPort = 17172
-
-  def setup
-    @logger = Logger.new(STDERR)
-    @logger.level = Logger::Severity::ERROR
-    @url = "http://localhost:#{Port}/"
-    @proxyurl = "http://localhost:#{ProxyPort}/"
-    @server = @proxyserver = @client = nil
-    @server_thread = @proxyserver_thread = nil
-    setup_server
-    setup_client
-  end
-
-  def teardown
-    teardown_client
-    teardown_proxyserver if @proxyserver
-    teardown_server
-  end
-
-  def setup_server
-    @server = WEBrick::HTTPServer.new(
-      :BindAddress => "0.0.0.0",
-      :Logger => @logger,
-      :Port => Port,
-      :AccessLog => [],
-      :DocumentRoot => File.dirname(File.expand_path(__FILE__))
-    )
-    @server.mount(
-      '/',
-      WEBrick::HTTPServlet::ProcHandler.new(method(:do_server_proc).to_proc)
-    )
-    @server_thread = start_server_thread(@server)
-  end
-
-  def setup_proxyserver
-    @proxyserver = WEBrick::HTTPProxyServer.new(
-      :BindAddress => "0.0.0.0",
-      :Logger => @logger,
-      :Port => ProxyPort,
-      :AccessLog => []
-    )
-    @proxyserver_thread = start_server_thread(@proxyserver)
-  end
-
-  def setup_client
-    @client = SOAP::RPC::Driver.new(@url, '')
-    @client.add_method("do_server_proc")
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def teardown_proxyserver
-    @proxyserver.shutdown
-    @proxyserver_thread.kill
-    @proxyserver_thread.join
-  end
-
-  def teardown_client
-    @client.reset_stream
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def do_server_proc(req, res)
-    res['content-type'] = 'text/xml'
-    res.body = <<__EOX__
-<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <n1:do_server_proc xmlns:n1="urn:foo" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
-      <return xsi:nil="true"/>
-    </n1:do_server_proc>
-  </env:Body>
-</env:Envelope>
-__EOX__
-  end
-
-  def parse_req_header(str)
-    if ::SOAP::HTTPStreamHandler::Client.to_s == 'SOAP::NetHttpClient'
-      str = eval(str.split(/\r?\n/)[4][3..-1])
-    end
-    parse_req_header_http_access2(str)
-  end
-
-  def parse_req_header_http_access2(str)
-    headerp = false
-    headers = {}
-    req = nil
-    str.split(/(?:\r?\n)/).each do |line|
-      if headerp and /^$/ =~line
-       headerp = false
-       break
-      end
-      if headerp
-       k, v = line.scan(/^([^:]+):\s*(.*)$/)[0]
-       headers[k.downcase] = v
-      end
-      if /^POST/ =~ line
-       req = line
-       headerp = true
-      end
-    end
-    return req, headers
-  end
-
-  def test_normal
-    str = ""
-    @client.wiredump_dev = str
-    assert_nil(@client.do_server_proc)
-    r, h = parse_req_header(str)
-    assert_match(%r"POST / HTTP/1.", r)
-    assert(/^text\/xml;/ =~ h["content-type"])
-  end
-
-  def test_uri
-    # initialize client with URI object
-    @client = SOAP::RPC::Driver.new(URI.parse(@url), '')
-    @client.add_method("do_server_proc")
-    # same as test_normal
-    str = ""
-    @client.wiredump_dev = str
-    assert_nil(@client.do_server_proc)
-    r, h = parse_req_header(str)
-    assert_match(%r"POST / HTTP/1.", r)
-    assert(/^text\/xml;/ =~ h["content-type"])
-  end
-
-  def test_basic_auth
-    unless Object.const_defined?('HTTPAccess2')
-      # soap4r + net/http + basic_auth is not supported.
-      # use http-access2 instead.
-      assert(true)
-      return
-    end
-    str = ""
-    @client.wiredump_dev = str
-    @client.options["protocol.http.basic_auth"] << [@url, "foo", "bar"]
-    assert_nil(@client.do_server_proc)
-    r, h = parse_req_header(str)
-    assert_equal("Basic Zm9vOmJhcg==", h["authorization"])
-  end
-
-  def test_proxy
-    if Object.const_defined?('HTTPAccess2')
-      backup = HTTPAccess2::Client::NO_PROXY_HOSTS.dup
-      HTTPAccess2::Client::NO_PROXY_HOSTS.clear
-    else
-      backup = SOAP::NetHttpClient::NO_PROXY_HOSTS.dup
-      SOAP::NetHttpClient::NO_PROXY_HOSTS.clear
-    end
-    setup_proxyserver
-    str = ""
-    @client.wiredump_dev = str
-    @client.options["protocol.http.proxy"] = @proxyurl
-    assert_nil(@client.do_server_proc)
-    r, h = parse_req_header(str)
-    assert_match(%r"POST http://localhost:17171/ HTTP/1.", r)
-    # illegal proxy uri
-    assert_raise(ArgumentError) do
-      @client.options["protocol.http.proxy"] = 'ftp://foo:8080'
-    end
-  ensure
-    if Object.const_defined?('HTTPAccess2')
-      HTTPAccess2::Client::NO_PROXY_HOSTS.replace(backup)
-    else
-      SOAP::NetHttpClient::NO_PROXY_HOSTS.replace(backup)
-    end
-  end
-
-  def test_charset
-    str = ""
-    @client.wiredump_dev = str
-    @client.options["protocol.http.charset"] = "iso-8859-8"
-    assert_nil(@client.do_server_proc)
-    r, h = parse_req_header(str)
-    assert_equal("text/xml; charset=iso-8859-8", h["content-type"])
-    #
-    str.replace("")
-    @client.options["protocol.http.charset"] = "iso-8859-3"
-    assert_nil(@client.do_server_proc)
-    r, h = parse_req_header(str)
-    assert_equal("text/xml; charset=iso-8859-3", h["content-type"])
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/test_styleuse.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/test_styleuse.rb
deleted file mode 100644 (file)
index 4ea3218..0000000
+++ /dev/null
@@ -1,333 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/httpserver'
-require 'soap/rpc/driver'
-
-
-module SOAP
-
-
-class TestStyleUse < Test::Unit::TestCase
-  # rpc driver: obj in(Hash allowed for literal), obj out
-  # 
-  #   style: not visible from user
-  #     rpc: wrapped element
-  #     document: unwrappted element
-  #
-  #   use:
-  #     encoding: a graph (SOAP Data Model)
-  #     literal: not a graph (SOAPElement)
-  #
-  # rpc stub: obj in, obj out(Hash is allowed for literal)
-  #
-  #   style: not visible from user
-  #     rpc: wrapped element
-  #     document: unwrappted element
-  #
-  #   use:
-  #     encoding: a graph (SOAP Data Model)
-  #     literal: not a graph (SOAPElement)
-  #
-  # document driver: SOAPElement in, SOAPElement out? [not implemented]
-  #
-  #   style: ditto
-  #   use: ditto
-  #
-  #
-  # document stub: SOAPElement in, SOAPElement out? [not implemented]
-  #
-  #   style: ditto
-  #   use: ditto
-  #
-  class GenericServant
-    # method name style: requeststyle_requestuse_responsestyle_responseuse
-
-    # 2 params -> array
-    def rpc_enc_rpc_enc(obj1, obj2)
-      [obj1, [obj1, obj2]]
-    end
-
-    # 2 objs -> array
-    def rpc_lit_rpc_enc(obj1, obj2)
-      [obj2, obj1]
-    end
-
-    # 2 params -> 2 params
-    def rpc_enc_rpc_lit(obj1, obj2)
-      klass = [obj1.class.name, obj2.class.name]
-      [obj2, obj1]
-    end
-
-    # 2 objs -> 2 objs
-    def rpc_lit_rpc_lit(obj1, obj2)
-      [obj1, obj2]
-    end
-
-    # 2 params -> array
-    def doc_enc_doc_enc(obj1, obj2)
-      [obj1, [obj1, obj2]]
-    end
-
-    # 2 objs -> array
-    def doc_lit_doc_enc(obj1, obj2)
-      [obj2, obj1]
-    end
-
-    # 2 params -> 2 hashes
-    def doc_enc_doc_lit(obj1, obj2)
-      klass = [obj1.class.name, obj2.class.name]
-      return {'obj1' => {'klass' => klass}, 'misc' => 'hash does not have an order'},
-        {'obj2' => {'klass' => klass}}
-    end
-
-    # 2 objs -> 2 objs
-    def doc_lit_doc_lit(obj1, obj2)
-      return obj1, obj2
-    end
-  end
-
-  Namespace = "urn:styleuse"
-
-  module Op
-    def self.opt(request_style, request_use, response_style, response_use)
-      {
-        :request_style => request_style,
-        :request_use => request_use,
-        :response_style => response_style,
-        :response_use => response_use
-      }
-    end
-
-    Op_rpc_enc_rpc_enc = [
-      XSD::QName.new(Namespace, 'rpc_enc_rpc_enc'),
-      nil,
-      'rpc_enc_rpc_enc', [
-        ['in', 'obj1', nil],
-        ['in', 'obj2', nil],
-        ['retval', 'return', nil]],
-      opt(:rpc, :encoded, :rpc, :encoded)
-    ]
-
-    Op_rpc_lit_rpc_enc = [
-      XSD::QName.new(Namespace, 'rpc_lit_rpc_enc'),
-      nil,
-      'rpc_lit_rpc_enc', [
-        ['in', 'obj1', nil],
-        ['in', 'obj2', nil],
-        ['retval', 'return', nil]],
-      opt(:rpc, :literal, :rpc, :encoded)
-    ]
-
-    Op_rpc_enc_rpc_lit = [
-      XSD::QName.new(Namespace, 'rpc_enc_rpc_lit'),
-      nil,
-      'rpc_enc_rpc_lit', [
-        ['in', 'obj1', nil],
-        ['in', 'obj2', nil],
-        ['retval', 'ret1', nil],
-        ['out', 'ret2', nil]],
-      opt(:rpc, :encoded, :rpc, :literal)
-    ]
-
-    Op_rpc_lit_rpc_lit = [
-      XSD::QName.new(Namespace, 'rpc_lit_rpc_lit'),
-      nil,
-      'rpc_lit_rpc_lit', [
-        ['in', 'obj1', nil],
-        ['in', 'obj2', nil],
-        ['retval', 'ret1', nil],
-        ['out', 'ret2', nil]],
-      opt(:rpc, :literal, :rpc, :literal)
-    ]
-
-    Op_doc_enc_doc_enc = [
-      Namespace + 'doc_enc_doc_enc',
-      'doc_enc_doc_enc', [
-        ['in', 'obj1', [nil, Namespace, 'obj1']],
-        ['in', 'obj2', [nil, Namespace, 'obj2']],
-        ['out', 'ret1', [nil, Namespace, 'ret1']],
-        ['out', 'ret2', [nil, Namespace, 'ret2']]],
-      opt(:document, :encoded, :document, :encoded)
-    ]
-
-    Op_doc_lit_doc_enc = [
-      Namespace + 'doc_lit_doc_enc',
-      'doc_lit_doc_enc', [
-        ['in', 'obj1', [nil, Namespace, 'obj1']],
-        ['in', 'obj2', [nil, Namespace, 'obj2']],
-        ['out', 'ret1', [nil, Namespace, 'ret1']],
-        ['out', 'ret2', [nil, Namespace, 'ret2']]],
-      opt(:document, :literal, :document, :encoded)
-    ]
-
-    Op_doc_enc_doc_lit = [
-      Namespace + 'doc_enc_doc_lit',
-      'doc_enc_doc_lit', [
-        ['in', 'obj1', [nil, Namespace, 'obj1']],
-        ['in', 'obj2', [nil, Namespace, 'obj2']],
-        ['out', 'ret1', [nil, Namespace, 'ret1']],
-        ['out', 'ret2', [nil, Namespace, 'ret2']]],
-      opt(:document, :encoded, :document, :literal)
-    ]
-
-    Op_doc_lit_doc_lit = [
-      Namespace + 'doc_lit_doc_lit',
-      'doc_lit_doc_lit', [
-        ['in', 'obj1', [nil, Namespace, 'obj1']],
-        ['in', 'obj2', [nil, Namespace, 'obj2']],
-        ['out', 'ret1', [nil, Namespace, 'ret1']],
-        ['out', 'ret2', [nil, Namespace, 'ret2']]],
-      opt(:document, :literal, :document, :literal)
-    ]
-  end
-
-  include Op
-
-  class Server < ::SOAP::RPC::HTTPServer
-    include Op
-
-    def on_init
-      @servant = GenericServant.new
-      add_rpc_operation(@servant, *Op_rpc_enc_rpc_enc)
-      add_rpc_operation(@servant, *Op_rpc_lit_rpc_enc)
-      add_rpc_operation(@servant, *Op_rpc_enc_rpc_lit)
-      add_rpc_operation(@servant, *Op_rpc_lit_rpc_lit)
-      add_document_operation(@servant, *Op_doc_enc_doc_enc)
-      add_document_operation(@servant, *Op_doc_lit_doc_enc)
-      add_document_operation(@servant, *Op_doc_enc_doc_lit)
-      add_document_operation(@servant, *Op_doc_lit_doc_lit)
-    end
-  end
-
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_client
-  end
-
-  def setup_server
-    @server = Server.new(
-      :BindAddress => "0.0.0.0",
-      :Port => Port,
-      :AccessLog => [],
-      :SOAPDefaultNamespace => Namespace
-    )
-    @server.level = Logger::Severity::ERROR
-    @server_thread = start_server_thread(@server)
-  end
-
-  def setup_client
-    @client = ::SOAP::RPC::Driver.new("http://localhost:#{Port}/", Namespace)
-    @client.wiredump_dev = STDERR if $DEBUG
-    @client.add_rpc_operation(*Op_rpc_enc_rpc_enc)
-    @client.add_rpc_operation(*Op_rpc_lit_rpc_enc)
-    @client.add_rpc_operation(*Op_rpc_enc_rpc_lit)
-    @client.add_rpc_operation(*Op_rpc_lit_rpc_lit)
-    @client.add_document_operation(*Op_doc_enc_doc_enc)
-    @client.add_document_operation(*Op_doc_lit_doc_enc)
-    @client.add_document_operation(*Op_doc_enc_doc_lit)
-    @client.add_document_operation(*Op_doc_lit_doc_lit)
-  end
-
-  def teardown
-    teardown_server
-    teardown_client
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def teardown_client
-    @client.reset_stream
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def test_rpc_enc_rpc_enc
-    o = "hello"
-    obj1 = o
-    obj2 = [1]
-    ret = @client.rpc_enc_rpc_enc(obj1, obj2)
-    # server returns [obj1, [obj1, obj2]]
-    assert_equal([obj1, [obj1, obj2]], ret)
-    assert_same(ret[0], ret[1][0])
-  end
-
-  S1 = ::Struct.new(:a)
-  S2 = ::Struct.new(:c)
-  def test_rpc_lit_rpc_enc
-    ret1, ret2 = @client.rpc_lit_rpc_enc(S1.new('b'), S2.new('d'))
-    assert_equal('d', ret1.c)
-    assert_equal('b', ret2.a)
-    # Hash is allowed for literal
-    ret1, ret2 = @client.rpc_lit_rpc_enc({'a' => 'b'}, {'c' => 'd'})
-    assert_equal('d', ret1.c)
-    assert_equal('b', ret2.a)
-    # simple value
-    assert_equal(
-      ['1', 'a'],
-      @client.rpc_lit_rpc_enc('a', 1)
-    )
-  end
-
-  def test_rpc_enc_rpc_lit
-    assert_equal(
-      ['1', 'a'],
-      @client.rpc_enc_rpc_lit('a', '1')
-    )
-  end
-
-  def test_rpc_lit_rpc_lit
-    ret1, ret2 = @client.rpc_lit_rpc_lit({'a' => 'b'}, {'c' => 'd'})
-    assert_equal('b', ret1["a"])
-    assert_equal('d', ret2["c"])
-  end
-
-  def test_doc_enc_doc_enc
-    o = "hello"
-    obj1 = o
-    obj2 = [1]
-    ret = @client.rpc_enc_rpc_enc(obj1, obj2)
-    # server returns [obj1, [obj1, obj2]]
-    assert_equal([obj1, [obj1, obj2]], ret)
-    assert_same(ret[0], ret[1][0])
-  end
-
-  def test_doc_lit_doc_enc
-    ret1, ret2 = @client.doc_lit_doc_enc({'a' => 'b'}, {'c' => 'd'})
-    assert_equal('d', ret1.c)
-    assert_equal('b', ret2.a)
-    assert_equal(
-      ['a', '1'],
-      @client.doc_lit_doc_enc(1, 'a')
-    )
-  end
-
-  def test_doc_enc_doc_lit
-    ret1, ret2 = @client.doc_enc_doc_lit('a', 1)
-    # literal Array
-    assert_equal(['String', 'Fixnum'], ret1['obj1']['klass'])
-    # same value
-    assert_equal(ret1['obj1']['klass'], ret2['obj2']['klass'])
-    # not the same object (not encoded)
-    assert_not_same(ret1['obj1']['klass'], ret2['obj2']['klass'])
-  end
-
-  def test_doc_lit_doc_lit
-    ret1, ret2 = @client.doc_lit_doc_lit({'a' => 'b'}, {'c' => 'd'})
-    assert_equal('b', ret1["a"])
-    assert_equal('d', ret2["c"])
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/README.txt b/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/README.txt
deleted file mode 100644 (file)
index b4d45a0..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-echo_version.rb is generated by wsdl2ruby.rb;
-% wsdl2ruby.rb --wsdl simpletype.wsdl --classdef --force
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/calc.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/calc.wsdl
deleted file mode 100644 (file)
index 694a01e..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!--generated by GLUE Standard 4.0.1 on Wed Mar 09 10:20:07 GMT-08:00
-2005-->
-<wsdl:definitions name='Calculator'
-targetNamespace='http://www.themindelectric.com/wsdl/Calculator/'
-    xmlns:tns='http://www.themindelectric.com/wsdl/Calculator/'
-    xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
-    xmlns:http='http://schemas.xmlsoap.org/wsdl/http/'
-    xmlns:mime='http://schemas.xmlsoap.org/wsdl/mime/'
-    xmlns:xsd='http://www.w3.org/2001/XMLSchema'
-    xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
-    xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
-    xmlns:tme='http://www.themindelectric.com/'>
-    <wsdl:message name='add0In'>
-        <wsdl:part name='x' type='xsd:float'/>
-        <wsdl:part name='y' type='xsd:float'/>
-    </wsdl:message>
-    <wsdl:message name='add0Out'>
-        <wsdl:part name='Result' type='xsd:float'/>
-    </wsdl:message>
-    <wsdl:message name='divide1In'>
-        <wsdl:part name='numerator' type='xsd:float'/>
-        <wsdl:part name='denominator' type='xsd:float'/>
-    </wsdl:message>
-    <wsdl:message name='divide1Out'>
-        <wsdl:part name='Result' type='xsd:float'/>
-    </wsdl:message>
-    <wsdl:message name='multiply2In'>
-        <wsdl:part name='x' type='xsd:float'/>
-        <wsdl:part name='y' type='xsd:float'/>
-    </wsdl:message>
-    <wsdl:message name='multiply2Out'>
-        <wsdl:part name='Result' type='xsd:float'/>
-    </wsdl:message>
-    <wsdl:message name='subtract3In'>
-        <wsdl:part name='x' type='xsd:float'/>
-        <wsdl:part name='y' type='xsd:float'/>
-    </wsdl:message>
-    <wsdl:message name='subtract3Out'>
-        <wsdl:part name='Result' type='xsd:float'/>
-    </wsdl:message>
-    <wsdl:portType name='ICalculator'>
-        <wsdl:operation name='add' parameterOrder='x y'>
-            <wsdl:input name='add0In' message='tns:add0In'/>
-            <wsdl:output name='add0Out' message='tns:add0Out'/>
-        </wsdl:operation>
-        <wsdl:operation name='divide' parameterOrder='numerator
-denominator'>
-            <wsdl:input name='divide1In' message='tns:divide1In'/>
-            <wsdl:output name='divide1Out' message='tns:divide1Out'/>
-        </wsdl:operation>
-        <wsdl:operation name='multiply' parameterOrder='x y'>
-            <wsdl:input name='multiply2In' message='tns:multiply2In'/>
-            <wsdl:output name='multiply2Out'
-message='tns:multiply2Out'/>
-        </wsdl:operation>
-        <wsdl:operation name='subtract' parameterOrder='x y'>
-            <wsdl:input name='subtract3In' message='tns:subtract3In'/>
-            <wsdl:output name='subtract3Out'
-message='tns:subtract3Out'/>
-        </wsdl:operation>
-    </wsdl:portType>
-    <wsdl:binding name='ICalculator' type='tns:ICalculator'>
-        <soap:binding style='rpc'
-transport='http://schemas.xmlsoap.org/soap/http'/>
-        <wsdl:operation name='add'>
-            <soap:operation soapAction='add' style='rpc'/>
-            <wsdl:input name='add0In'>
-                <soap:body use='encoded'
-namespace='http://www.fred.com'
-encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-            </wsdl:input>
-            <wsdl:output name='add0Out'>
-                <soap:body use='encoded'
-namespace='http://www.fred.com'
-encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-            </wsdl:output>
-        </wsdl:operation>
-        <wsdl:operation name='divide'>
-            <soap:operation soapAction='divide' style='rpc'/>
-            <wsdl:input name='divide1In'>
-                <soap:body use='encoded'
-namespace='http://www.fred.com'
-encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-            </wsdl:input>
-            <wsdl:output name='divide1Out'>
-                <soap:body use='encoded'
-namespace='http://www.fred.com'
-encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-            </wsdl:output>
-        </wsdl:operation>
-        <wsdl:operation name='multiply'>
-            <soap:operation soapAction='multiply' style='rpc'/>
-            <wsdl:input name='multiply2In'>
-                <soap:body use='encoded'
-namespace='http://www.fred.com'
-encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-            </wsdl:input>
-            <wsdl:output name='multiply2Out'>
-                <soap:body use='encoded'
-namespace='http://www.fred.com'
-encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-            </wsdl:output>
-        </wsdl:operation>
-        <wsdl:operation name='subtract'>
-            <soap:operation soapAction='subtract' style='rpc'/>
-            <wsdl:input name='subtract3In'>
-                <soap:body use='encoded'
-namespace='http://www.fred.com'
-encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-            </wsdl:input>
-            <wsdl:output name='subtract3Out'>
-                <soap:body use='encoded'
-namespace='http://www.fred.com'
-encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-            </wsdl:output>
-        </wsdl:operation>
-    </wsdl:binding>
-    <wsdl:service name='Calculator'>
-        <wsdl:documentation>calculator service</wsdl:documentation>
-        <wsdl:port name='ICalculator' binding='tns:ICalculator'>
-            <soap:address
-location='http://ukulele:8080/calcapp/services/calculator'/>
-        </wsdl:port>
-    </wsdl:service>
-</wsdl:definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/document.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/document.wsdl
deleted file mode 100644 (file)
index 5e9e74b..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<definitions name="submit_service"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:tns="urn:example.com:document"
-    targetNamespace="urn:example.com:document"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-  <types>
-    <xsd:schema targetNamespace="urn:example.com:document">
-      <xsd:element name="ruby">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element minOccurs="1" maxOccurs="1" name="myversion" type="tns:myversion"/>
-            <xsd:element minOccurs="0" maxOccurs="1" name="date" type="xsd:dateTime"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-
-      <xsd:simpleType name="myversion">
-        <xsd:restriction base="xsd:string">
-          <xsd:enumeration value="1.6"/>
-          <xsd:enumeration value="1.8"/>
-          <xsd:enumeration value="1.9"/>
-        </xsd:restriction>
-      </xsd:simpleType>
-    </xsd:schema>
-  </types>
-
-  <message name="submit_msg">
-    <part name="parameters" element="tns:ruby"/>
-  </message>
-
-  <portType name="submit_port_type">
-    <operation name="submit">
-      <input message="tns:submit_msg"/>
-      <output message="tns:submit_msg"/>
-    </operation>
-  </portType>
-
-  <binding name="submit_binding" type="tns:submit_port_type">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
-    <operation name="submit">
-      <soap:operation soapAction="urn:example.com:document#submit" style="document"/>
-      <input><soap:body use="literal"/></input>
-      <output><soap:body use="literal"/></output>
-    </operation>
-  </binding>
-
-  <service name="submit_service">
-    <port name="submit_port" binding="tns:submit_binding">
-      <soap:address location="http://localhost:10080"/>
-    </port>
-  </service>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/echo_version.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/echo_version.rb
deleted file mode 100644 (file)
index 7d76fb7..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-# urn:example.com:simpletype-rpc-type
-class Version_struct
-  @@schema_type = "version_struct"
-  @@schema_ns = "urn:example.com:simpletype-rpc-type"
-
-  attr_accessor :version
-  attr_accessor :msg
-
-  def initialize(version = nil, msg = nil)
-    @version = version
-    @msg = msg
-  end
-end
-
-# urn:example.com:simpletype-rpc-type
-module Versions
-  C_16 = "1.6"
-  C_18 = "1.8"
-  C_19 = "1.9"
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/simpletype.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/simpletype.wsdl
deleted file mode 100644 (file)
index 6781dda..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<definitions name="echo_version"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:tns="urn:example.com:simpletype-rpc"
-    xmlns:txd="urn:example.com:simpletype-rpc-type"
-    targetNamespace="urn:example.com:simpletype-rpc"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-  <types>
-    <xsd:schema targetNamespace="urn:example.com:simpletype-rpc-type">
-      <xsd:complexType name="version_struct">
-       <xsd:all>
-         <xsd:element name="myversion" type="txd:myversions" />
-         <xsd:element name="msg" type="xsd:string" />
-       </xsd:all>
-      </xsd:complexType>
-
-      <xsd:simpleType name="myversions">
-        <xsd:restriction base="xsd:string">
-          <xsd:enumeration value="1.6"/>
-          <xsd:enumeration value="1.8"/>
-          <xsd:enumeration value="1.9"/>
-        </xsd:restriction>
-      </xsd:simpleType>
-    </xsd:schema>
-  </types>
-
-  <message name="msg_version">
-    <part name="myversion" type="txd:myversions"/>
-  </message>
-
-  <message name="msg_version_struct">
-    <part name="return" type="txd:version_struct"/>
-  </message>
-
-  <portType name="echo_version_port_type">
-    <operation name="echo_version">
-      <input message="tns:msg_version"/>
-      <output message="tns:msg_version_struct"/>
-    </operation>
-  </portType>
-
-  <binding name="echo_version_binding" type="tns:echo_version_port_type">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
-    <operation name="echo_version">
-      <soap:operation soapAction="urn:example.com:simpletype-rpc"/>
-      <input>
-        <soap:body use="encoded" namespace="urn:example.com:simpletype-rpc"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="urn:example.com:simpletype-rpc"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-  </binding>
-
-  <service name="echo_version_service">
-    <port name="echo_version_port" binding="tns:echo_version_binding">
-      <soap:address location="http://localhost:10080"/>
-    </port>
-  </service>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/test_calc.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/test_calc.rb
deleted file mode 100644 (file)
index d031f66..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/httpserver'
-require 'soap/wsdlDriver'
-
-
-module SOAP
-
-
-class TestCalc < Test::Unit::TestCase
-  class Server < ::SOAP::RPC::HTTPServer
-    def on_init
-      add_method(self, 'add', 'x', 'y')
-    end
-  
-    def add(x, y)
-      x.to_f + y.to_f
-    end
-  end
-
-  DIR = File.dirname(File.expand_path(__FILE__))
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_client
-  end
-
-  def setup_server
-    @server = Server.new(
-      :BindAddress => "0.0.0.0",
-      :Port => Port,
-      :AccessLog => [],
-      :SOAPDefaultNamespace => 'http://www.fred.com'
-    )
-    @server.level = Logger::Severity::ERROR
-    @server_thread = start_server_thread(@server)
-  end
-
-  def setup_client
-    @wsdl = File.join(DIR, 'calc.wsdl')
-  end
-
-  def teardown
-    teardown_server
-    teardown_client
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def teardown_client
-    @client.reset_stream if @client
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def test_rpc_driver
-    @client = ::SOAP::WSDLDriverFactory.new(@wsdl).create_rpc_driver
-    @client.wiredump_dev = STDOUT if $DEBUG
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.generate_explicit_type = true
-    assert_equal(0.3, @client.add(0.1, 0.2))
-    @client.generate_explicit_type = false
-    assert_equal(0.3, @client.add(0.1, 0.2))
-  end
-
-  def test_old_driver
-    silent do
-      @client = ::SOAP::WSDLDriverFactory.new(@wsdl).create_driver
-    end
-    @client.wiredump_dev = STDOUT if $DEBUG
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.generate_explicit_type = true
-    assert_equal(0.3, @client.add(0.1, 0.2))
-    @client.generate_explicit_type = false
-    assert_equal(0.3, @client.add(0.1, 0.2))
-  end
-
-  def silent
-    back = $VERBOSE
-    $VERBOSE = nil
-    begin
-      yield
-    ensure
-      $VERBOSE = back
-    end
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/test_document.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/test_document.rb
deleted file mode 100644 (file)
index 634b827..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/standaloneServer'
-require 'soap/wsdlDriver'
-
-
-module SOAP
-
-
-class TestDocument < Test::Unit::TestCase
-  Namespace = 'urn:example.com:document'
-
-  class Server < ::SOAP::RPC::StandaloneServer
-    def on_init
-      add_document_method(self, 'urn:example.com:document#submit', 'submit', XSD::QName.new(Namespace, 'ruby'), XSD::QName.new(Namespace, 'ruby'))
-    end
-  
-    def submit(ruby)
-      ruby
-    end
-  end
-
-  DIR = File.dirname(File.expand_path(__FILE__))
-
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_client
-  end
-
-  def setup_server
-    @server = Server.new('Test', Namespace, '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @server_thread = start_server_thread(@server)
-  end
-
-  def setup_client
-    wsdl = File.join(DIR, 'document.wsdl')
-    @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.wiredump_dev = STDOUT if $DEBUG
-  end
-
-  def teardown
-    teardown_server
-    teardown_client
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def teardown_client
-    @client.reset_stream
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def test_document
-    msg = {'myversion' => "1.9", 'date' => "2004-01-01T00:00:00Z"}
-    reply_msg = @client.submit(msg)
-    assert_equal('1.9', reply_msg.myversion)
-    assert_equal('1.9', reply_msg['myversion'])
-    assert_equal('2004-01-01T00:00:00Z', reply_msg.date)
-    assert_equal('2004-01-01T00:00:00Z', reply_msg['date'])
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/test_simpletype.rb b/ruby/doc/ruby/ruby-1.8.7/test/soap/wsdlDriver/test_simpletype.rb
deleted file mode 100644 (file)
index 76b3a32..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/httpserver'
-require 'soap/wsdlDriver'
-
-
-module SOAP
-
-
-class TestSimpleType < Test::Unit::TestCase
-  class Server < ::SOAP::RPC::HTTPServer
-    def on_init
-      add_method(self, 'echo_version', 'version')
-    end
-  
-    def echo_version(version)
-      # "2.0" is out of range.
-      Version_struct.new(version || "2.0", 'checked')
-    end
-  end
-
-  DIR = File.dirname(File.expand_path(__FILE__))
-  require File.join(DIR, 'echo_version')
-
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_client
-  end
-
-  def setup_server
-    @server = Server.new(
-      :BindAddress => "0.0.0.0",
-      :Port => Port,
-      :AccessLog => [],
-      :SOAPDefaultNamespace => "urn:example.com:simpletype-rpc"
-    )
-    @server.level = Logger::Severity::ERROR
-    @server_thread = start_server_thread(@server)
-  end
-
-  def setup_client
-    wsdl = File.join(DIR, 'simpletype.wsdl')
-    @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    @client.wiredump_dev = STDOUT if $DEBUG
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.generate_explicit_type = false
-  end
-
-  def teardown
-    teardown_server
-    teardown_client
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def teardown_client
-    @client.reset_stream
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def test_ping
-    result = @client.echo_version("1.9")
-    assert_equal("1.9", result.version)
-    assert_equal("checked", result.msg)
-    assert_raise(XSD::ValueSpaceError) do
-      @client.echo_version("2.0")
-    end
-    assert_raise(XSD::ValueSpaceError) do
-      @client.echo_version(nil) # nil => "2.0" => out of range
-    end
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/socket/test_nonblock.rb b/ruby/doc/ruby/ruby-1.8.7/test/socket/test_nonblock.rb
deleted file mode 100644 (file)
index ed6487b..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-begin
-  require "socket"
-rescue LoadError
-end
-
-require "test/unit"
-require "tempfile"
-require "timeout"
-
-class TestNonblockSocket < Test::Unit::TestCase
-  def test_accept_nonblock
-    serv = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
-    serv.bind(Socket.sockaddr_in(0, "127.0.0.1"))
-    serv.listen(5)
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK) { serv.accept_nonblock }
-    c = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
-    c.connect(serv.getsockname)
-    s, sockaddr = serv.accept_nonblock
-    assert_equal(Socket.unpack_sockaddr_in(c.getsockname), Socket.unpack_sockaddr_in(sockaddr))
-  ensure
-    serv.close if serv
-    c.close if c
-    s.close if s
-  end
-
-  def test_connect_nonblock
-    serv = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
-    serv.bind(Socket.sockaddr_in(0, "127.0.0.1"))
-    serv.listen(5)
-    c = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
-    servaddr = serv.getsockname
-    begin
-      c.connect_nonblock(servaddr)
-    rescue Errno::EINPROGRESS
-      IO.select nil, [c]
-      assert_nothing_raised {
-        begin
-          c.connect_nonblock(servaddr)
-        rescue Errno::EISCONN
-        end
-      }
-    end
-    s, sockaddr = serv.accept
-    assert_equal(Socket.unpack_sockaddr_in(c.getsockname), Socket.unpack_sockaddr_in(sockaddr))
-  ensure
-    serv.close if serv
-    c.close if c
-    s.close if s
-  end
-
-  def test_udp_recvfrom_nonblock
-    u1 = UDPSocket.new
-    u2 = UDPSocket.new
-    u1.bind("127.0.0.1", 0)
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK) { u1.recvfrom_nonblock(100) }
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK, Errno::EINVAL) { u2.recvfrom_nonblock(100) }
-    u2.send("aaa", 0, u1.getsockname)
-    IO.select [u1]
-    mesg, inet_addr = u1.recvfrom_nonblock(100)
-    assert_equal(4, inet_addr.length)
-    assert_equal("aaa", mesg)
-    af, port, host, addr = inet_addr
-    u2_port, u2_addr = Socket.unpack_sockaddr_in(u2.getsockname)
-    assert_equal(u2_port, port)
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK) { u1.recvfrom_nonblock(100) }
-    u2.send("", 0, u1.getsockname)
-    assert_nothing_raised("cygwin 1.5.19 has a problem to send an empty UDP packet. [ruby-dev:28915]") {
-      timeout(1) { IO.select [u1] }
-    }
-    mesg, inet_addr = u1.recvfrom_nonblock(100)
-    assert_equal("", mesg)
-  ensure
-    u1.close if u1
-    u2.close if u2
-  end
-
-  def test_udp_recv_nonblock
-    u1 = UDPSocket.new
-    u2 = UDPSocket.new
-    u1.bind("127.0.0.1", 0)
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK) { u1.recv_nonblock(100) }
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK, Errno::EINVAL) { u2.recv_nonblock(100) }
-    u2.send("aaa", 0, u1.getsockname)
-    IO.select [u1]
-    mesg = u1.recv_nonblock(100)
-    assert_equal("aaa", mesg)
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK) { u1.recv_nonblock(100) }
-    u2.send("", 0, u1.getsockname)
-    assert_nothing_raised("cygwin 1.5.19 has a problem to send an empty UDP packet. [ruby-dev:28915]") {
-      timeout(1) { IO.select [u1] }
-    }
-    mesg = u1.recv_nonblock(100)
-    assert_equal("", mesg)
-  ensure
-    u1.close if u1
-    u2.close if u2
-  end
-
-  def test_socket_recvfrom_nonblock
-    s1 = Socket.new(Socket::AF_INET, Socket::SOCK_DGRAM, 0)
-    s1.bind(Socket.sockaddr_in(0, "127.0.0.1"))
-    s2 = Socket.new(Socket::AF_INET, Socket::SOCK_DGRAM, 0)
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK) { s1.recvfrom_nonblock(100) }
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK, Errno::EINVAL) { s2.recvfrom_nonblock(100) }
-    s2.send("aaa", 0, s1.getsockname)
-    IO.select [s1]
-    mesg, sockaddr = s1.recvfrom_nonblock(100) 
-    assert_equal("aaa", mesg)
-    port, addr = Socket.unpack_sockaddr_in(sockaddr)
-    s2_port, s2_addr = Socket.unpack_sockaddr_in(s2.getsockname)
-    assert_equal(s2_port, port)
-  ensure
-    s1.close if s1
-    s2.close if s2
-  end
-
-  def tcp_pair
-    serv = TCPServer.new("127.0.0.1", 0)
-    af, port, host, addr = serv.addr
-    c = TCPSocket.new(addr, port)
-    s = serv.accept
-    return c, s
-  ensure
-    serv.close if serv
-  end
-
-  def test_tcp_recv_nonblock
-    c, s = tcp_pair
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK) { c.recv_nonblock(100) }
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK) { s.recv_nonblock(100) }
-    c.write("abc")
-    IO.select [s]
-    assert_equal("a", s.recv_nonblock(1))
-    assert_equal("bc", s.recv_nonblock(100))
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK) { s.recv_nonblock(100) }
-  ensure
-    c.close if c
-    s.close if s
-  end
-
-  def test_read_nonblock
-    c, s = tcp_pair
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK) { c.read_nonblock(100) }
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK) { s.read_nonblock(100) }
-    c.write("abc")
-    IO.select [s]
-    assert_equal("a", s.read_nonblock(1))
-    assert_equal("bc", s.read_nonblock(100))
-    assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK) { s.read_nonblock(100) }
-  ensure
-    c.close if c
-    s.close if s
-  end
-
-=begin
-  def test_write_nonblock
-    c, s = tcp_pair
-    str = "a" * 10000
-    _, ws, _ = IO.select(nil, [c], nil)
-    assert_equal([c], ws)
-    ret = c.write_nonblock(str)
-    assert_operator(ret, :>, 0)
-    loop {
-      assert_raise(Errno::EAGAIN, Errno::EWOULDBLOCK) {
-        loop {
-          ret = c.write_nonblock(str)
-          assert_operator(ret, :>, 0)
-        }
-      }
-      _, ws, _ = IO.select(nil, [c], nil, 0)
-      break if !ws
-    }
-  ensure
-    c.close if c
-    s.close if s
-  end
-=end
-
-end if defined?(Socket)
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/socket/test_socket.rb b/ruby/doc/ruby/ruby-1.8.7/test/socket/test_socket.rb
deleted file mode 100644 (file)
index fc01467..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-begin
-  require "socket"
-  require "test/unit"
-rescue LoadError
-end
-
-class TestBasicSocket < Test::Unit::TestCase
-  def inet_stream
-    sock = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
-    yield sock
-  ensure
-    assert_raise(IOError) {sock.close}
-  end
-
-  def test_getsockopt
-    inet_stream do |s|
-      n = s.getsockopt(Socket::SOL_SOCKET, Socket::SO_TYPE)
-      assert_equal([Socket::SOCK_STREAM].pack("i"), n)
-      n = s.getsockopt(Socket::SOL_SOCKET, Socket::SO_ERROR)
-      assert_equal([0].pack("i"), n)
-      val = Object.new
-      class << val; self end.__send__(:define_method, :to_int) {
-        s.close
-        Socket::SO_TYPE
-      }
-      assert_raise(IOError) {
-        n = s.getsockopt(Socket::SOL_SOCKET, val)
-      }
-    end
-  end
-
-  def test_setsockopt # [ruby-dev:25039]
-    s = nil
-    linger = [0, 0].pack("ii")
-
-    val = Object.new
-    class << val; self end.__send__(:define_method, :to_str) {
-      s.close
-      linger
-    }
-    inet_stream do |s|
-      assert_equal(0, s.setsockopt(Socket::SOL_SOCKET, Socket::SO_LINGER, linger))
-
-      assert_raise(IOError) {
-        s.setsockopt(Socket::SOL_SOCKET, Socket::SO_LINGER, val)
-      }
-    end
-
-    val = Object.new
-    class << val; self end.__send__(:define_method, :to_int) {
-      s.close
-      Socket::SO_LINGER
-    }
-    inet_stream do |s|
-      assert_raise(IOError) {
-        s.setsockopt(Socket::SOL_SOCKET, val, linger)
-      }
-    end
-  end
-
-  def test_listen
-    s = nil
-    log = Object.new
-    class << log; self end.__send__(:define_method, :to_int) {
-      s.close
-      2
-    }
-    inet_stream do |s|
-      assert_raise(IOError) {
-        s.listen(log)
-      }
-    end
-  end
-end if defined?(Socket)
-
-class TestSocket < Test::Unit::TestCase
-  def test_unpack_sockaddr
-    sockaddr_in = Socket.sockaddr_in(80, "")
-    assert_raise(ArgumentError) { Socket.unpack_sockaddr_un(sockaddr_in) }
-    sockaddr_un = Socket.sockaddr_un("/tmp/s")
-    assert_raise(ArgumentError) { Socket.unpack_sockaddr_in(sockaddr_un) }
-  end
-end if defined?(Socket) && Socket.respond_to?(:sockaddr_un)
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/socket/test_unix.rb b/ruby/doc/ruby/ruby-1.8.7/test/socket/test_unix.rb
deleted file mode 100644 (file)
index 14ddd6a..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-begin
-  require "socket"
-rescue LoadError
-end
-
-require "test/unit"
-require "tempfile"
-
-class TestUNIXSocket < Test::Unit::TestCase
-  def test_fd_passing
-    r1, w = IO.pipe
-    s1, s2 = UNIXSocket.pair
-    begin
-      s1.send_io(nil)
-    rescue NotImplementedError
-      assert_raise(NotImplementedError) { s2.recv_io }
-    rescue TypeError
-      s1.send_io(r1)
-      r2 = s2.recv_io
-      assert_equal(r1.stat.ino, r2.stat.ino)
-      assert_not_equal(r1.fileno, r2.fileno)
-      w.syswrite "a"
-      assert_equal("a", r2.sysread(10))
-    ensure
-      s1.close
-      s2.close
-      w.close
-      r1.close
-      r2.close if r2 && !r2.closed?
-    end
-  end
-
-  def bound_unix_socket(klass)
-    tmpfile = Tempfile.new("testrubysock")
-    path = tmpfile.path
-    tmpfile.close(true)
-    yield klass.new(path), path
-  ensure
-    File.unlink path if path && File.socket?(path)
-  end
-
-  def test_addr
-    bound_unix_socket(UNIXServer) {|serv, path|
-      c = UNIXSocket.new(path)
-      s = serv.accept
-      assert_equal(["AF_UNIX", path], c.peeraddr)
-      assert_equal(["AF_UNIX", ""], c.addr)
-      assert_equal(["AF_UNIX", ""], s.peeraddr)
-      assert_equal(["AF_UNIX", path], s.addr)
-      assert_equal(path, s.path)
-      assert_equal("", c.path)
-    }
-  end
-
-  def test_noname_path
-    s1, s2 = UNIXSocket.pair
-    assert_equal("", s1.path)
-    assert_equal("", s2.path)
-  ensure
-    s1.close
-    s2.close
-  end
-
-  def test_noname_addr
-    s1, s2 = UNIXSocket.pair
-    assert_equal(["AF_UNIX", ""], s1.addr)
-    assert_equal(["AF_UNIX", ""], s2.addr)
-  ensure
-    s1.close
-    s2.close
-  end
-
-  def test_noname_peeraddr
-    s1, s2 = UNIXSocket.pair
-    assert_equal(["AF_UNIX", ""], s1.peeraddr)
-    assert_equal(["AF_UNIX", ""], s2.peeraddr)
-  ensure
-    s1.close
-    s2.close
-  end
-
-  def test_noname_unpack_sockaddr_un
-    s1, s2 = UNIXSocket.pair
-    n = nil
-    assert_equal("", Socket.unpack_sockaddr_un(n)) if (n = s1.getsockname) != ""
-    assert_equal("", Socket.unpack_sockaddr_un(n)) if (n = s1.getsockname) != ""
-    assert_equal("", Socket.unpack_sockaddr_un(n)) if (n = s2.getsockname) != ""
-    assert_equal("", Socket.unpack_sockaddr_un(n)) if (n = s1.getpeername) != ""
-    assert_equal("", Socket.unpack_sockaddr_un(n)) if (n = s2.getpeername) != ""
-  ensure
-    s1.close
-    s2.close
-  end
-
-  def test_noname_recvfrom
-    s1, s2 = UNIXSocket.pair
-    s2.write("a")
-    assert_equal(["a", ["AF_UNIX", ""]], s1.recvfrom(10))
-  ensure
-    s1.close
-    s2.close
-  end
-
-  def test_noname_recv_nonblock
-    s1, s2 = UNIXSocket.pair
-    s2.write("a")
-    IO.select [s1]
-    assert_equal("a", s1.recv_nonblock(10))
-  ensure
-    s1.close
-    s2.close
-  end
-
-  def test_too_long_path
-    assert_raise(ArgumentError) { Socket.sockaddr_un("a" * 300) }
-    assert_raise(ArgumentError) { UNIXServer.new("a" * 300) }
-  end
-
-  def test_nul
-    assert_raise(ArgumentError) { Socket.sockaddr_un("a\0b") }
-    assert_raise(ArgumentError) { UNIXServer.new("a\0b") }
-  end
-
-  def test_dgram_pair
-    s1, s2 = UNIXSocket.pair(Socket::SOCK_DGRAM)
-    assert_raise(Errno::EAGAIN) { s1.recv_nonblock(10) }
-    s2.send("", 0)
-    s2.send("haha", 0)
-    s2.send("", 0)
-    s2.send("", 0)
-    assert_equal("", s1.recv(10))
-    assert_equal("haha", s1.recv(10))
-    assert_equal("", s1.recv(10))
-    assert_equal("", s1.recv(10))
-    assert_raise(Errno::EAGAIN) { s1.recv_nonblock(10) }
-  ensure
-    s1.close if s1
-    s2.close if s2
-  end
-
-end if defined?(UNIXSocket) && /cygwin/ !~ RUBY_PLATFORM
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/stringio/test_stringio.rb b/ruby/doc/ruby/ruby-1.8.7/test/stringio/test_stringio.rb
deleted file mode 100644 (file)
index de15ab5..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-require 'test/unit'
-require 'stringio'
-dir = File.expand_path(__FILE__)
-2.times {dir = File.dirname(dir)}
-$:.replace([File.join(dir, "ruby")] | $:)
-require 'ut_eof'
-
-class TestStringIO < Test::Unit::TestCase
-  include TestEOF
-  def open_file(content)
-    f = StringIO.new(content)
-    yield f
-  end
-  alias open_file_rw open_file
-
-  include TestEOF::Seek
-
-  def test_truncate # [ruby-dev:24190]
-    io = StringIO.new("")
-    io.puts "abc"
-    io.truncate(0)
-    io.puts "def"
-    assert_equal("\0\0\0\0def\n", io.string)
-  end
-
-  def test_seek_beyond_eof # [ruby-dev:24194]
-    io = StringIO.new
-    n = 100
-    io.seek(n)
-    io.print "last"
-    assert_equal("\0" * n + "last", io.string)
-  end
-
-  def test_overwrite # [ruby-core:03836]
-    stringio = StringIO.new
-    responses = ['', 'just another ruby', 'hacker']
-    responses.each do |resp|
-      stringio.puts(resp)
-      stringio.rewind
-    end
-    assert_equal("hacker\nother ruby\n", stringio.string)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/strscan/test_stringscanner.rb b/ruby/doc/ruby/ruby-1.8.7/test/strscan/test_stringscanner.rb
deleted file mode 100644 (file)
index 75e96c0..0000000
+++ /dev/null
@@ -1,571 +0,0 @@
-#
-# test/strscan/test_stringscanner.rb
-#
-
-require 'strscan'
-require 'test/unit'
-
-class TestStringScanner < Test::Unit::TestCase
-  def test_s_new
-    s = StringScanner.new('test string')
-    assert_instance_of StringScanner, s
-    assert_equal false, s.eos?
-    assert_equal false, s.tainted?
-
-    str = 'test string'
-    str.taint
-    s = StringScanner.new(str, false)
-    assert_instance_of StringScanner, s
-    assert_equal false, s.eos?
-    assert_same str, s.string
-    assert_equal true, s.string.tainted?
-
-    str = 'test string'
-    str.taint
-    s = StringScanner.new(str)
-    assert_equal true, s.string.tainted?
-  end
-
-  UNINIT_ERROR = ArgumentError
-
-  def test_s_allocate
-    s = StringScanner.allocate
-    assert_equal '#<StringScanner (uninitialized)>', s.inspect.sub(/StringScanner_C/, 'StringScanner')
-    assert_raises(UNINIT_ERROR) { s.eos? }
-    assert_raises(UNINIT_ERROR) { s.scan(/a/) }
-    s.string = 'test'
-    assert_equal '#<StringScanner 0/4 @ "test">', s.inspect.sub(/StringScanner_C/, 'StringScanner')
-    assert_nothing_raised(UNINIT_ERROR) { s.eos? }
-    assert_equal false, s.eos?
-  end
-
-  def test_s_mustc
-    assert_nothing_raised(NotImplementedError) {
-        StringScanner.must_C_version
-    }
-  end
-
-  def test_dup
-    s = StringScanner.new('test string')
-    d = s.dup
-    assert_equal s.inspect, d.inspect
-    assert_equal s.string, d.string
-    assert_equal s.pos, d.pos
-    assert_equal s.matched?, d.matched?
-    assert_equal s.eos?, d.eos?
-
-    s = StringScanner.new('test string')
-    s.scan(/test/)
-    d = s.dup
-    assert_equal s.inspect, d.inspect
-    assert_equal s.string, d.string
-    assert_equal s.pos, d.pos
-    assert_equal s.matched?, d.matched?
-    assert_equal s.eos?, d.eos?
-
-    s = StringScanner.new('test string')
-    s.scan(/test/)
-    s.scan(/NOT MATCH/)
-    d = s.dup
-    assert_equal s.inspect, d.inspect
-    assert_equal s.string, d.string
-    assert_equal s.pos, d.pos
-    assert_equal s.matched?, d.matched?
-    assert_equal s.eos?, d.eos?
-
-    s = StringScanner.new('test string')
-    s.terminate
-    d = s.dup
-    assert_equal s.inspect, d.inspect
-    assert_equal s.string, d.string
-    assert_equal s.pos, d.pos
-    assert_equal s.matched?, d.matched?
-    assert_equal s.eos?, d.eos?
-  end
-
-  def test_const_Version
-    assert_instance_of String, StringScanner::Version
-    assert_equal true, StringScanner::Version.frozen?
-  end
-
-  def test_const_Id
-    assert_instance_of String, StringScanner::Id
-    assert_equal true, StringScanner::Id.frozen?
-  end
-
-  def test_inspect
-    str = 'test string'
-    str.taint
-    s = StringScanner.new(str, false)
-    assert_instance_of String, s.inspect
-    assert_equal s.inspect, s.inspect
-    assert_equal '#<StringScanner 0/11 @ "test ...">', s.inspect.sub(/StringScanner_C/, 'StringScanner')
-    s.get_byte
-    assert_equal '#<StringScanner 1/11 "t" @ "est s...">', s.inspect.sub(/StringScanner_C/, 'StringScanner')
-    assert_equal true, s.inspect.tainted?
-
-    s = StringScanner.new("\n")
-    assert_equal '#<StringScanner 0/1 @ "\n">', s.inspect
-  end
-
-  def test_eos?
-    s = StringScanner.new('test string')
-    assert_equal false, s.eos?
-    assert_equal false, s.eos?
-    s.scan(/\w+/)
-    assert_equal false, s.eos?
-    assert_equal false, s.eos?
-    s.scan(/\s+/)
-    s.scan(/\w+/)
-    assert_equal true, s.eos?
-    assert_equal true, s.eos?
-    s.scan(/\w+/)
-    assert_equal true, s.eos?
-
-    s = StringScanner.new('test')
-    s.scan(/te/)
-    s.string.replace ''
-    assert_equal true, s.eos?
-  end
-
-  def test_bol?
-    s = StringScanner.new("a\nbbb\n\ncccc\nddd\r\neee")
-    assert_equal true, s.bol?
-    assert_equal true, s.bol?
-    s.scan(/a/)
-    assert_equal false, s.bol?
-    assert_equal false, s.bol?
-    s.scan(/\n/)
-    assert_equal true, s.bol?
-    s.scan(/b/)
-    assert_equal false, s.bol?
-    s.scan(/b/)
-    assert_equal false, s.bol?
-    s.scan(/b/)
-    assert_equal false, s.bol?
-    s.scan(/\n/)
-    assert_equal true, s.bol?
-    s.unscan
-    assert_equal false, s.bol?
-    s.scan(/\n/)
-    s.scan(/\n/)
-    assert_equal true, s.bol?
-    s.scan(/c+\n/)
-    assert_equal true, s.bol?
-    s.scan(/d+\r\n/)
-    assert_equal true, s.bol?
-    s.scan(/e+/)
-    assert_equal false, s.bol?
-  end
-
-  def test_string
-    s = StringScanner.new('test')
-    assert_equal 'test', s.string
-    s.string = 'a'
-    assert_equal 'a', s.string
-    s.scan(/a/)
-    s.string = 'b'
-    assert_equal 0, s.pos
-  end
-
-  def test_pos
-    s = StringScanner.new('test string')
-    assert_equal 0, s.pos
-    s.get_byte
-    assert_equal 1, s.pos
-    s.get_byte
-    assert_equal 2, s.pos
-    s.terminate
-    assert_equal 11, s.pos
-  end
-
-  def test_concat
-    s = StringScanner.new('a')
-    s.scan(/a/)
-    s.concat 'b'
-    assert_equal false, s.eos?
-    assert_equal 'b', s.scan(/b/)
-    assert_equal true, s.eos?
-    s.concat 'c'
-    assert_equal false, s.eos?
-    assert_equal 'c', s.scan(/c/)
-    assert_equal true, s.eos?
-  end
-
-  def test_scan
-    s = StringScanner.new('stra strb strc', true)
-    tmp = s.scan(/\w+/)
-    assert_equal 'stra', tmp
-    assert_equal false, tmp.tainted?
-
-    tmp = s.scan(/\s+/)
-    assert_equal ' ', tmp
-    assert_equal false, tmp.tainted?
-
-    assert_equal 'strb', s.scan(/\w+/)
-    assert_equal ' ',    s.scan(/\s+/)
-
-    tmp = s.scan(/\w+/)
-    assert_equal 'strc', tmp
-    assert_equal false, tmp.tainted?
-
-    assert_nil           s.scan(/\w+/)
-    assert_nil           s.scan(/\w+/)
-
-
-    str = 'stra strb strc'
-    str.taint
-    s = StringScanner.new(str, false)
-    tmp = s.scan(/\w+/)
-    assert_equal 'stra', tmp
-    assert_equal true, tmp.tainted?
-
-    tmp = s.scan(/\s+/)
-    assert_equal ' ', tmp
-    assert_equal true, tmp.tainted?
-
-    assert_equal 'strb', s.scan(/\w+/)
-    assert_equal ' ',    s.scan(/\s+/)
-
-    tmp = s.scan(/\w+/)
-    assert_equal 'strc', tmp
-    assert_equal true, tmp.tainted?
-
-    assert_nil           s.scan(/\w+/)
-    assert_nil           s.scan(/\w+/)
-
-    s = StringScanner.new('test')
-    s.scan(/te/)
-    # This assumes #string does not duplicate string,
-    # but it is implementation specific issue.
-    # DO NOT RELY ON THIS FEATURE.
-    s.string.replace ''
-    # unspecified: assert_equal 2, s.pos
-    assert_equal nil, s.scan(/test/)
-
-    # [ruby-bugs:4361]
-    s = StringScanner.new("")
-    assert_equal "", s.scan(//)
-    assert_equal "", s.scan(//)
-
-    # [ruby-dev:29914]
-    %w( NONE EUC SJIS UTF8 ).each do |kcode|
-      begin
-        $KCODE = kcode
-        assert_equal "a", StringScanner.new("a:b").scan(/[^\x01\:]+/n)
-        assert_equal "a", StringScanner.new("a:b").scan(/[^\x01\:]+/e)
-        assert_equal "a", StringScanner.new("a:b").scan(/[^\x01\:]+/s)
-        assert_equal "a", StringScanner.new("a:b").scan(/[^\x01\:]+/u)
-      ensure
-        $KCODE = 'NONE'
-      end
-    end
-  end
-
-  def test_skip
-    s = StringScanner.new('stra strb strc', true)
-    assert_equal 4, s.skip(/\w+/)
-    assert_equal 1, s.skip(/\s+/)
-    assert_equal 4, s.skip(/\w+/)
-    assert_equal 1, s.skip(/\s+/)
-    assert_equal 4, s.skip(/\w+/)
-    assert_nil      s.skip(/\w+/)
-    assert_nil      s.skip(/\s+/)
-    assert_equal true, s.eos?
-
-    s = StringScanner.new('test')
-    s.scan(/te/)
-    s.string.replace ''
-    assert_equal nil, s.skip(/./)
-
-    # [ruby-bugs:4361]
-    s = StringScanner.new("")
-    assert_equal 0, s.skip(//)
-    assert_equal 0, s.skip(//)
-  end
-
-  def test_getch
-    s = StringScanner.new('abcde')
-    assert_equal 'a', s.getch
-    assert_equal 'b', s.getch
-    assert_equal 'c', s.getch
-    assert_equal 'd', s.getch
-    assert_equal 'e', s.getch
-    assert_nil        s.getch
-
-    str = 'abc'
-    str.taint
-    s = StringScanner.new(str)
-    assert_equal true, s.getch.tainted?
-    assert_equal true, s.getch.tainted?
-    assert_equal true, s.getch.tainted?
-    assert_nil s.getch
-
-    kc_backup = $KCODE
-    begin
-      $KCODE = 'EUC'
-      s = StringScanner.new("\244\242")
-      assert_equal "\244\242", s.getch
-      assert_nil s.getch
-    ensure
-      $KCODE = kc_backup
-    end
-
-    s = StringScanner.new('test')
-    s.scan(/te/)
-    s.string.replace ''
-    assert_equal nil, s.getch
-  end
-
-  def test_get_byte
-    s = StringScanner.new('abcde')
-    assert_equal 'a', s.get_byte
-    assert_equal 'b', s.get_byte
-    assert_equal 'c', s.get_byte
-    assert_equal 'd', s.get_byte
-    assert_equal 'e', s.get_byte
-    assert_nil        s.get_byte
-    assert_nil        s.get_byte
-
-    str = 'abc'
-    str.taint
-    s = StringScanner.new(str)
-    assert_equal true, s.get_byte.tainted?
-    assert_equal true, s.get_byte.tainted?
-    assert_equal true, s.get_byte.tainted?
-    assert_nil s.get_byte
-
-    kc_backup = $KCODE
-    begin
-      $KCODE = 'EUC'
-      s = StringScanner.new("\244\242")
-      assert_equal "\244", s.get_byte
-      assert_equal "\242", s.get_byte
-      assert_nil s.get_byte
-    ensure
-      $KCODE = kc_backup
-    end
-
-    s = StringScanner.new('test')
-    s.scan(/te/)
-    s.string.replace ''
-    assert_equal nil, s.get_byte
-  end
-
-  def test_matched
-    s = StringScanner.new('stra strb strc')
-    s.scan(/\w+/)
-    assert_equal 'stra', s.matched
-    assert_equal false, s.matched.tainted?
-    s.scan(/\s+/)
-    assert_equal ' ', s.matched
-    s.scan(/\w+/)
-    assert_equal 'strb', s.matched
-    s.scan(/\s+/)
-    assert_equal ' ', s.matched
-    s.scan(/\w+/)
-    assert_equal 'strc', s.matched
-    s.scan(/\w+/)
-    assert_nil s.matched
-    s.getch
-    assert_nil s.matched
-
-    s = StringScanner.new('stra strb strc')
-    s.getch
-    assert_equal 's', s.matched
-    assert_equal false, s.matched.tainted?
-    s.get_byte
-    assert_equal 't', s.matched
-    assert_equal 't', s.matched
-    assert_equal false, s.matched.tainted?
-
-    str = 'test'
-    str.taint
-    s = StringScanner.new(str)
-    s.scan(/\w+/)
-    assert_equal true, s.matched.tainted?
-    assert_equal true, s.matched.tainted?
-  end
-
-  def test_AREF
-    s = StringScanner.new('stra strb strc')
-
-    s.scan(/\w+/)
-    assert_nil           s[-2]
-    assert_equal 'stra', s[-1]
-    assert_equal 'stra', s[0]
-    assert_nil           s[1]
-
-    assert_equal false,  s[-1].tainted?
-    assert_equal false,  s[0].tainted?
-
-    s.skip(/\s+/)
-    assert_nil           s[-2]
-    assert_equal ' ',    s[-1]
-    assert_equal ' ',    s[0]
-    assert_nil           s[1]
-
-    s.scan(/(s)t(r)b/)
-    assert_nil           s[-100]
-    assert_nil           s[-4]
-    assert_equal 'strb', s[-3]
-    assert_equal 's',    s[-2]
-    assert_equal 'r',    s[-1]
-    assert_equal 'strb', s[0]
-    assert_equal 's',    s[1]
-    assert_equal 'r',    s[2]
-    assert_nil           s[3]
-    assert_nil           s[100]
-
-    s.scan(/\s+/)
-
-    s.getch
-    assert_nil           s[-2]
-    assert_equal 's',    s[-1]
-    assert_equal 's',    s[0]
-    assert_nil           s[1]
-
-    s.get_byte
-    assert_nil           s[-2]
-    assert_equal 't',    s[-1]
-    assert_equal 't',    s[0]
-    assert_nil           s[1]
-
-    s.scan(/.*/)
-    s.scan(/./)
-    assert_nil           s[0]
-    assert_nil           s[0]
-
-
-    kc_backup = $KCODE
-    begin
-      $KCODE = 'EUC'
-      s = StringScanner.new("\244\242")
-      s.getch
-      assert_equal "\244\242", s[0]
-    ensure
-      $KCODE = kc_backup
-    end
-
-
-    str = 'test'
-    str.taint
-    s = StringScanner.new(str)
-    s.scan(/(t)(e)(s)(t)/)
-    assert_equal true, s[0].tainted?
-    assert_equal true, s[1].tainted?
-    assert_equal true, s[2].tainted?
-    assert_equal true, s[3].tainted?
-    assert_equal true, s[4].tainted?
-  end
-
-  def test_pre_match
-    s = StringScanner.new('a b c d e')
-    s.scan(/\w/)
-    assert_equal '', s.pre_match
-    assert_equal false, s.pre_match.tainted?
-    s.skip(/\s/)
-    assert_equal 'a', s.pre_match
-    assert_equal false, s.pre_match.tainted?
-    s.scan(/\w/)
-    assert_equal 'a ', s.pre_match
-    s.scan_until(/c/)
-    assert_equal 'a b ', s.pre_match
-    s.getch
-    assert_equal 'a b c', s.pre_match
-    s.get_byte
-    assert_equal 'a b c ', s.pre_match
-    s.get_byte
-    assert_equal 'a b c d', s.pre_match
-    s.scan(/never match/)
-    assert_nil s.pre_match
-
-    str = 'test string'
-    str.taint
-    s = StringScanner.new(str)
-    s.scan(/\w+/)
-    assert_equal true, s.pre_match.tainted?
-    s.scan(/\s+/)
-    assert_equal true, s.pre_match.tainted?
-    s.scan(/\w+/)
-    assert_equal true, s.pre_match.tainted?
-  end
-
-  def test_post_match
-    s = StringScanner.new('a b c d e')
-    s.scan(/\w/)
-    assert_equal ' b c d e', s.post_match
-    s.skip(/\s/)
-    assert_equal 'b c d e', s.post_match
-    s.scan(/\w/)
-    assert_equal ' c d e', s.post_match
-    s.scan_until(/c/)
-    assert_equal ' d e', s.post_match
-    s.getch
-    assert_equal 'd e', s.post_match
-    s.get_byte
-    assert_equal ' e', s.post_match
-    s.get_byte
-    assert_equal 'e', s.post_match
-    s.scan(/never match/)
-    assert_nil s.post_match
-    s.scan(/./)
-    assert_equal '', s.post_match
-    s.scan(/./)
-    assert_nil s.post_match
-
-    str = 'test string'
-    str.taint
-    s = StringScanner.new(str)
-    s.scan(/\w+/)
-    assert_equal true, s.post_match.tainted?
-    s.scan(/\s+/)
-    assert_equal true, s.post_match.tainted?
-    s.scan(/\w+/)
-    assert_equal true, s.post_match.tainted?
-  end
-
-  def test_terminate
-    s = StringScanner.new('ssss')
-    s.getch
-    s.terminate
-    assert_equal true, s.eos?
-    s.terminate
-    assert_equal true, s.eos?
-  end
-
-  def test_reset
-    s = StringScanner.new('ssss')
-    s.getch
-    s.reset
-    assert_equal 0, s.pos
-    s.scan(/\w+/)
-    s.reset
-    assert_equal 0, s.pos
-    s.reset
-    assert_equal 0, s.pos
-  end
-
-  def test_matched_size
-    s = StringScanner.new('test string')
-    assert_nil s.matched_size
-    s.scan(/test/)
-    assert_equal 4, s.matched_size
-    assert_equal 4, s.matched_size
-    s.scan(//)
-    assert_equal 0, s.matched_size
-    s.scan(/x/)
-    assert_nil s.matched_size
-    assert_nil s.matched_size
-    s.terminate
-    assert_nil s.matched_size
-
-    # obsolete
-    s = StringScanner.new('test string')
-    assert_nil s.matchedsize
-    s.scan(/test/)
-    assert_equal 4, s.matched_size
-    s.terminate
-    assert_nil s.matched_size
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/collector/test_dir.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/collector/test_dir.rb
deleted file mode 100644 (file)
index 2de802c..0000000
+++ /dev/null
@@ -1,406 +0,0 @@
-require 'test/unit'
-require 'test/unit/collector/dir'
-require 'pp'
-
-module Test
-  module Unit
-    module Collector
-      class TestDir < TestCase
-        class FileSystem
-          class Directory
-            def initialize(name, fs, parent=self, &block)
-              @name = name
-              @fs = fs
-              @parent = parent
-              @contents = {'.' => self, '..' => parent}
-              instance_eval(&block) if(block)
-            end
-            
-            def file(name, contents)
-              @contents[name] = contents
-            end
-
-            def dir(name, &block)
-              @contents[name] = self.class.new(name, @fs, self, &block)
-            end
-
-            def entries
-              @contents.keys
-            end
-
-            def directory?(name)
-              return true if(name.nil? || name.empty?)
-              return false unless(@contents.include?(name))
-              @contents[name].kind_of?(self.class)
-            end
-
-            def file?(name)
-              return false unless(@contents.include?(name))
-              !directory?(name)
-            end
-
-            def exist?(name)
-              @contents.include?(name)
-            end
-
-            def [](name)
-              raise Errno::ENOENT, name unless(@contents.include?(name))
-              @contents[name]
-            end
-
-            def path_to(name=nil)
-              if(!name)
-                @parent.path_to(@name)
-              elsif(@parent == self)
-                @fs.join('/', name)
-              else
-                @fs.join(@parent.path_to(@name), name)
-              end
-            end
-          end
-
-          class ObjectSpace
-            def initialize
-              @objects = []
-            end
-
-            def each_object(klass, &block)
-              @objects.find_all{|o| o.kind_of?(klass)}.each(&block)
-            end
-
-            def <<(object)
-              @objects << object
-            end
-          end
-
-          attr_reader :object_space
-          
-          def initialize(&block)
-            @root = Directory.new('/', self, &block)
-            @pwd = @root
-            @object_space = ObjectSpace.new
-            @required = []
-          end
-
-          def entries(dir)
-            e = find(dir)
-            require_directory(dir)
-            e.entries
-          end
-
-          def directory?(name)
-            return true if (base = basename(name)) == '/'
-            e = find(dirname(name))
-            return false unless(e)
-            e.directory?(base)
-          end
-
-          def find(path)
-            if(/\A\// =~ path)
-              thing = @root
-            else
-              thing = @pwd
-            end
-            path.scan(/[^\/]+/) do |e|
-              break thing = false unless(thing.kind_of?(Directory))
-              thing = thing[e]
-            end
-            thing
-          end
-
-          def dirname(name)
-            if (name = name.tr_s('/', '/')) == '/'
-              name
-            else
-              name[%r"\A.+(?=/[^/]+/?\z)|\A/"] || "."
-            end
-          end
-
-          def basename(name)
-            name[%r"(\A/|[^/]+)/*\z", 1]
-          end
-
-          def split(name)
-            [dirname(name), basename(name)]
-          end
-
-          def join(*parts)
-            parts.join('/').gsub(%r{/+}, '/')
-          end
-
-          def file?(name)
-            e = find(dirname(name))
-            return false unless(e)
-            e.file?(basename(name))
-          end
-
-          def pwd
-            @pwd.path_to
-          end
-
-          def chdir(to)
-            e = find(to)
-            require_directory(to)
-            @pwd = e
-          end
-
-          def expand_path(path, base = nil)
-            until /\A\// =~ path
-              base ||= pwd
-              path = join(base, path)
-              base = nil
-            end
-            path.gsub!(%r"(?:/\.)+(?=/)", '')
-            nil while path.sub!(%r"/(?!\.\./)[^/]+/\.\.(?=/)", '')
-            path.sub!(%r"\A(?:/\.\.)+(?=/)", '')
-            path.sub!(%r"(?:\A(/)|/)\.\.?\z", '\1')
-            path
-          end
-
-          def require_directory(path)
-            raise Errno::ENOTDIR, path unless(directory?(path))
-          end
-
-          def require(file)
-            return false if(@required.include?(file))
-            begin
-              e = find(file)
-            rescue Errno::ENOENT => e
-              if(/\.rb\Z/ =~ file)
-                raise LoadError, file
-              end
-              e = find(file + '.rb')
-            end
-            @required << file
-            @object_space << e
-            true
-          rescue Errno::ENOENT
-            raise LoadError, file
-          end
-        end
-
-        def test_dir
-          inner_dir = nil
-          dirs = FileSystem::Directory.new('/', nil) do
-            file 'a', nil
-            inner_dir = dir 'b'
-          end
-          assert_equal(inner_dir, dirs['b'])
-        end
-
-        def test_fs
-          fs = FileSystem.new do
-            file 'a', nil
-            dir 'b'
-          end
-          assert_equal(['.', '..', 'a', 'b'].sort, fs.entries('/').sort)
-          assert(fs.directory?('/'))
-          assert(!fs.directory?('/a'))
-          assert(!fs.directory?('/bogus'))
-          assert(fs.file?('/a'))
-          assert(!fs.file?('/'))
-          assert(!fs.file?('/bogus'))
-          assert(fs.directory?('/b'))
-          assert(fs.file?('a'))
-          assert(fs.directory?('b'))
-        end
-
-        def test_fs_sub
-          fs = FileSystem.new do
-            dir 'a' do
-              file 'b', nil
-              dir 'c' do
-                file 'd', nil
-              end
-            end
-          end
-          assert(fs.file?('/a/b'))
-          assert(!fs.file?('/a/b/c/d'))
-          assert(fs.file?('/a/c/d'))
-        end
-
-        def test_fs_pwd
-          fs = FileSystem.new do
-            file 'a', nil
-            dir 'b' do
-              file 'c', nil
-              dir 'd' do
-                file 'e', nil
-              end
-            end
-          end
-          assert_equal('/', fs.pwd)
-          assert_raises(Errno::ENOENT) do
-            fs.chdir('bogus')
-          end
-          assert_raises(Errno::ENOTDIR) do
-            fs.chdir('a')
-          end
-          fs.chdir('b')
-          assert_equal('/b', fs.pwd)
-          fs.chdir('d')
-          assert_equal('/b/d', fs.pwd)
-          fs.chdir('..')
-          assert_equal('/b', fs.pwd)
-          fs.chdir('..')
-          assert_equal('/', fs.pwd)
-        end
-
-        def test_fs_entries
-          fs = FileSystem.new do
-            file 'a', nil
-            dir 'b' do
-              file 'c', nil
-              file 'd', nil
-            end
-            file 'e', nil
-            dir 'f' do
-              file 'g', nil
-              dir 'h' do
-                file 'i', nil
-              end
-            end
-          end
-          assert_equal(['.', '..', 'a', 'b', 'e', 'f'], fs.entries('/').sort)
-          assert_equal(['.', '..', 'a', 'b', 'e', 'f'], fs.entries('.').sort)
-          assert_equal(['.', '..', 'a', 'b', 'e', 'f'], fs.entries('b/..').sort)
-          assert_equal(['.', '..', 'c', 'd'], fs.entries('b').sort)
-          assert_raises(Errno::ENOENT) do
-            fs.entries('z')
-          end
-          assert_raises(Errno::ENOTDIR) do
-            fs.entries('a')
-          end
-          fs.chdir('f')
-          assert_equal(['.', '..', 'i'], fs.entries('h').sort)
-        end
-
-        class TestClass1
-        end
-        class TestClass2
-        end
-        def test_fs_require
-          fs = FileSystem.new do
-            file 'test_class1.rb', TestClass1
-            dir 'dir' do
-              file 'test_class2.rb', TestClass2
-            end
-          end
-          c = []
-          fs.object_space.each_object(Class) do |o|
-            c << o
-          end
-          assert_equal([], c)
-
-          assert_raises(LoadError) do
-            fs.require('bogus')
-          end
-          
-          assert(fs.require('test_class1.rb'))
-          assert(!fs.require('test_class1.rb'))
-          c = []
-          fs.object_space.each_object(Class) do |o|
-            c << o
-          end
-          assert_equal([TestClass1], c)
-
-          fs.require('dir/test_class2')
-          c = []
-          fs.object_space.each_object(Class) do |o|
-            c << o
-          end
-          assert_equal([TestClass1, TestClass2], c)
-
-          c = []
-          fs.object_space.each_object(Time) do |o|
-            c << o
-          end
-          assert_equal([], c)
-        end
-
-        def setup
-          @t1 = t1 = create_test(1)
-          @t2 = t2 = create_test(2)
-          @t3 = t3 = create_test(3)
-          @t4 = t4 = create_test(4)
-          @t5 = t5 = create_test(5)
-          @t6 = t6 = create_test(6)
-          fs = FileSystem.new do
-            file 'test_1.rb', t1
-            file 'test_2.rb', t2
-            dir 'd1' do
-              file 'test_3.rb', t3
-            end
-            file 't4.rb', t4
-            dir 'd2' do
-              file 'test_5', t5
-              file 'test_6.rb', Time
-            end
-            file 't6.rb', t6
-          end
-          fs.require('t6')
-          @c = Dir.new(fs, fs, fs.object_space, fs)
-        end
-
-        def create_test(name)
-          t = Class.new(TestCase)
-          t.class_eval <<-EOC
-            def self.name
-              "T\#{#{name}}"
-            end
-            def test_#{name}a
-            end
-            def test_#{name}b
-            end
-          EOC
-          t
-        end
-
-        def test_simple_collect
-          expected = TestSuite.new('d1')
-          expected << (@t3.suite)
-          assert_equal(expected, @c.collect('d1'))
-        end
-
-        def test_multilevel_collect
-          expected = TestSuite.new('.')
-          expected << @t1.suite << @t2.suite
-          expected << (TestSuite.new('d1') << @t3.suite)
-          assert_equal(expected, @c.collect)
-        end
-
-        def test_collect_file
-          expected = TestSuite.new('test_1.rb')
-          expected << @t1.suite
-          assert_equal(expected, @c.collect('test_1.rb'))
-          
-          expected = TestSuite.new('t4.rb')
-          expected << @t4.suite
-          assert_equal(expected, @c.collect('t4.rb'))
-        end
-
-        def test_nil_pattern
-          expected = TestSuite.new('d2')
-          expected << @t5.suite
-          @c.pattern.clear
-          assert_equal(expected, @c.collect('d2'))
-        end
-
-        def test_filtering
-          expected = TestSuite.new('.')
-          expected << @t1.suite
-          @c.filter = proc{|t| t.method_name == 'test_1a' || t.method_name == 'test_1b'}
-          assert_equal(expected, @c.collect)
-        end
-
-        def test_collect_multi
-          expected = TestSuite.new('[d1, d2]')
-          expected << (TestSuite.new('d1') << @t3.suite)
-          expected << (TestSuite.new('d2') << @t5.suite)
-          @c.pattern.replace([/\btest_/])
-          assert_equal(expected, @c.collect('d1', 'd2'))
-        end
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/collector/test_objectspace.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/collector/test_objectspace.rb
deleted file mode 100644 (file)
index a1532ff..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit'
-require 'test/unit/collector/objectspace'
-
-module Test
-  module Unit
-    module Collector
-      class TC_ObjectSpace < TestCase
-        def setup
-          @tc1 = Class.new(TestCase) do
-            def self.name
-              "tc_1"
-            end
-            def test_1
-            end
-            def test_2
-            end
-          end
-
-          @tc2 = Class.new(TestCase) do
-            def self.name
-              "tc_2"
-            end
-            def test_0
-            end
-          end
-
-          @no_tc = Class.new do
-            def test_4
-            end
-          end
-          @object_space = {Class => [@tc1, @tc2, @no_tc], String => ['']}
-          def @object_space.each_object(type)
-            self[type].each{|item| yield(item) }
-          end
-
-          @c = ObjectSpace.new(@object_space)
-        end
-
-        def full_suite(name=ObjectSpace::NAME)
-          expected = TestSuite.new(name)
-          expected << (TestSuite.new(@tc1.name) << @tc1.new('test_1') << @tc1.new('test_2'))
-          expected << (TestSuite.new(@tc2.name) << @tc2.new('test_0'))
-        end
-
-        def empty_suite
-          TestSuite.new(ObjectSpace::NAME)
-        end
-        
-        def test_basic_collection
-          assert_equal(full_suite("name"), @c.collect("name"))
-
-          @c.filter = []
-          assert_equal(full_suite("name"), @c.collect("name"))
-        end
-        
-        def test_filtered_collection
-          @c.filter = proc{false}
-          assert_equal(empty_suite, @c.collect)
-
-          @c.filter = proc{true}
-          assert_equal(full_suite, @c.collect)
-
-          @c.filter = proc{nil}
-          assert_equal(full_suite, @c.collect)
-
-          @c.filter = [proc{false}, proc{true}]
-          assert_equal(empty_suite, @c.collect)
-
-          @c.filter = [proc{true}, proc{false}]
-          assert_equal(full_suite, @c.collect)
-
-          @c.filter = [proc{nil}, proc{false}]
-          assert_equal(empty_suite, @c.collect)
-          
-          @c.filter = [proc{nil}, proc{true}]
-          assert_equal(full_suite, @c.collect)
-          
-          expected = TestSuite.new(ObjectSpace::NAME)
-          expected << (TestSuite.new(@tc1.name) << @tc1.new('test_1'))
-          expected << (TestSuite.new(@tc2.name) << @tc2.new('test_0'))
-          @c.filter = proc{|test| ['test_1', 'test_0'].include?(test.method_name)}
-          assert_equal(expected, @c.collect)
-
-          expected = TestSuite.new(ObjectSpace::NAME)
-          expected << (TestSuite.new(@tc1.name) << @tc1.new('test_1'))
-          expected << (TestSuite.new(@tc2.name) << @tc2.new('test_0'))
-          @c.filter = [proc{|t| t.method_name == 'test_1' ? true : nil}, proc{|t| t.method_name == 'test_0' ? true : nil}, proc{false}]
-          assert_equal(expected, @c.collect)
-        end
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/runit/test_assert.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/runit/test_assert.rb
deleted file mode 100644 (file)
index a3e62b2..0000000
+++ /dev/null
@@ -1,402 +0,0 @@
-# Author:: Masaki Suketa.
-# Adapted by:: Nathaniel Talbott.
-# Copyright:: Copyright (c) Masaki Suketa. All rights reserved.
-# Copyright:: Copyright (c) 2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'rubyunit'
-
-module RUNIT
-  class TargetAssert
-    include RUNIT::Assert
-  end
-
-  class TestAssert < RUNIT::TestCase
-    def setup
-      @assert = TargetAssert.new
-      @e = nil
-    end
-
-    def test_assert
-      sub_test_assert_pass(true)
-      sub_test_assert_pass(TRUE)
-      sub_test_assert_failure(false)
-      sub_test_assert_failure(FALSE)
-      sub_test_assert_failure(nil)
-      sub_test_assert_pass("")
-      sub_test_assert_pass("ok")
-      sub_test_assert_pass(0)
-      sub_test_assert_pass(1)
-    end
-
-    def test_assert_with_2_argument
-      assert_no_exception {
-        assert(true, "3")
-      }
-      assert_no_exception {
-        assert(true)
-      }
-    end
-
-    def test_assert_equal_float_0_1
-      assert_proc = Proc.new {
-        @assert.assert_equal_float(1.4, 1.35, 0.1)
-      }
-      sub_assert_pass(assert_proc)
-    end
-
-    def test_assert_equal_float_0_5
-      assert_proc = Proc.new {
-        @assert.assert_equal_float(1.4, 1.34, 0.5)
-      }
-      sub_assert_pass(assert_proc)
-    end
-
-    def test_assert_equal_float_0
-      assert_proc = Proc.new {
-        @assert.assert_equal_float(1.4, 1.4, 0)
-      }
-      sub_assert_pass(assert_proc)
-    end
-
-    def test_assert_equal_float_0_raise
-      assert_proc = Proc.new {
-        @assert.assert_equal_float(1.4, 1.34, 0)
-      }
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_equal_float_0_01
-      assert_proc = Proc.new {
-        @assert.assert_equal_float(1.4, 1.35, 0.01)
-      }
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_equal_float_0_001
-      assert_proc = Proc.new {
-        @assert.assert_equal_float(Math.sqrt(2), 1.414, 0.001)
-      }
-      sub_assert_pass(assert_proc)
-    end
-
-    def test_assert_equal_float_minus_1_0
-      assert_proc = Proc.new {
-        @assert.assert_equal_float(1.4, 1.35, -1.0)
-      }
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_fail
-      except = nil
-      begin
-        @assert.assert_fail("failure")
-      rescue Exception
-        except = $!
-      end
-      assert_not_nil(except)
-    end
-
-    def sub_test_assert_pass(obj)
-      assert_proc = Proc.new {
-        @assert.assert(obj)
-      }
-      sub_assert_pass(assert_proc)
-    end
-
-    def sub_test_assert_failure(obj)
-      assert_proc = Proc.new {
-        @assert.assert(obj)
-      }
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_equal
-      assert_proc = Proc.new {
-        @assert.assert_equal(2, 2)
-      }
-      sub_assert_pass(assert_proc)
-      assert_proc = Proc.new {
-        @assert.assert_equal(2, 3)
-      }
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_nil
-      obj = nil
-      assert_proc = Proc.new {
-        @assert.assert_nil(obj)
-      }
-      sub_assert_pass(assert_proc)
-      obj = 'string'
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_not_nil
-      obj = 'string'
-      assert_proc = Proc.new {
-        @assert.assert_not_nil(obj)
-      }
-      sub_assert_pass(assert_proc)
-
-      obj = nil
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_operator
-      assert_proc = Proc.new {
-        @assert.assert_operator(2, :<, 3)
-      }
-      sub_assert_pass(assert_proc)
-      assert_proc = Proc.new {
-        @assert.assert_operator(2, :>, 3)
-      }
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_respond_to
-      sub_test_assert_respond_to('string', 'sub', 'foo')
-      sub_test_assert_respond_to('string', :sub, :foo)
-    end
-
-    def sub_test_assert_respond_to(obj, msg, dummy_msg)
-      assert_proc = Proc.new {
-        @assert.assert_respond_to(msg, obj)
-      }
-      sub_assert_pass(assert_proc)
-      assert_proc = Proc.new {
-        @assert.assert_respond_to(dummy_msg, obj)
-      }
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_send
-      assert_proc = Proc.new {
-        ary = []
-        @assert.assert_send ary, :empty?
-      }
-      sub_assert_pass(assert_proc)
-      assert_proc = Proc.new {
-        ary = [2,3]
-        @assert.assert_send ary, :empty?
-      }
-      sub_assert_raise_fail(assert_proc)
-      assert_proc = Proc.new {
-        str = "abc"
-        @assert.assert_send str, :sub!, "z", "y"
-      }
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_kind_of
-      assert_proc = Proc.new {
-        @assert.assert_kind_of(String, "string")
-      }
-      sub_assert_pass(assert_proc)
-      assert_proc = Proc.new {
-        @assert.assert_kind_of(Regexp, "string")
-      }
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_instance_of
-      assert_proc = Proc.new {
-        @assert.assert_instance_of(String, "string")
-      }
-      sub_assert_pass(assert_proc)
-      assert_proc = Proc.new {
-        @assert.assert_instance_of(Object, "string")
-      }
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_match
-      assert_proc = Proc.new{
-        @assert.assert_match('foostring', /foo/)
-      }
-      sub_assert_pass(assert_proc)
-      assert_proc = Proc.new {
-        @assert.assert_match('barstring', /foo/)
-      }
-      sub_assert_raise_fail(assert_proc)
-      match = @assert.assert_match('foostring', /foo/)
-      assert_instance_of(MatchData, match)
-      assert_equal('foo', match[0])
-    end
-
-    def test_assert_matches
-      assert_proc = Proc.new{
-        @assert.assert_matches('foostring', /foo/)
-      }
-      sub_assert_pass(assert_proc)
-      assert_proc = Proc.new {
-        @assert.assert_matches('barstring', /foo/)
-      }
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_not_match
-      assert_proc = Proc.new{
-        @assert.assert_not_match('barstring', /foo/)
-      }
-      sub_assert_pass(assert_proc)
-      assert_proc = Proc.new {
-        @assert.assert_not_match('foostring', /foo/)
-      }
-      sub_assert_raise_fail(assert_proc)
-      assert_proc = Proc.new {
-        @assert.assert_not_match('foobarbaz', /ba.+/)
-      }
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_same
-      flag = false
-      e = "foo"
-      a = e
-      assert_proc = Proc.new {@assert.assert_same(e, a)}
-      sub_assert_pass(assert_proc)
-
-      a = "foo"
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def test_assert_exception
-      assert_proc = Proc.new{
-        @assert.assert_exception(IOError) {
-    raise IOError
-        }
-      }
-      sub_assert_pass(assert_proc)
-
-      assert_proc = Proc.new{
-        @assert.assert_exception(StandardError) {
-    raise IOError
-        }
-      }
-      sub_assert_raise_fail(assert_proc)
-
-      assert_proc = Proc.new{
-        @assert.assert_exception(IOError, "Exception") {
-    raise StandardError
-        }
-      }
-      sub_assert_raise_fail(assert_proc)
-
-      assert_proc = Proc.new {
-        @assert.assert_exception(StandardError) {
-    "No Exception raised in this block"
-        }
-      }
-      sub_assert_raise_fail(assert_proc)
-
-      assert_proc = Proc.new {
-        @assert.assert_exception(StandardError) {
-    exit(33)
-        }
-      }
-      sub_assert_raise_fail(assert_proc)
-
-      t = @assert.assert_exception(IOError) {
-        raise IOError
-      }
-      assert_instance_of(IOError, t)
-      t = @assert.assert_exception(NameError) {
-        non_existent_method
-      }
-      assert_instance_of(NameError, t)
-      t = @assert.assert_exception(SystemExit) {
-        exit(33)
-      }
-      assert_instance_of(SystemExit, t)
-    end
-
-    def test_assert_no_exception
-      assert_proc = Proc.new{
-        @assert.assert_no_exception(IOError, ArgumentError) {
-    "No Exception raised in this block"
-        }
-      }
-      sub_assert_pass(assert_proc)
-
-      assert_proc = Proc.new{
-        @assert.assert_no_exception(IOError, ArgumentError) {
-    raise StandardError, "Standard Error raised"
-        }
-      }
-      sub_assert_raise_error(assert_proc)
-
-      assert_proc = Proc.new{
-        @assert.assert_no_exception(IOError, ArgumentError) {
-    raise ArgumentError, "Bad Argument"
-        }
-      }
-      sub_assert_raise_fail(assert_proc)
-
-      assert_proc = Proc.new{
-        @assert.assert_no_exception {
-          raise ArgumentError, "Bad Argument"
-        }
-      }
-      sub_assert_raise_fail(assert_proc)
-
-      assert_proc = Proc.new{
-        @assert.assert_no_exception {
-          raise NameError, "Bad Name"
-        }
-      }
-      sub_assert_raise_fail(assert_proc)
-      assert_proc = Proc.new {
-        @assert.assert_no_exception {
-    raise NoMemoryError
-        }
-      }
-      sub_assert_raise_fail(assert_proc)
-    end
-
-    def sub_assert_pass(p)
-      flag = false
-      err = nil
-      begin
-        p.call
-        flag = true
-      rescue
-        err = $!
-        flag = false
-      end
-      assert(flag, err.to_s)
-    end
-
-    def sub_assert_raise_fail(p)
-      flag = false
-      err = nil
-      begin
-        p.call
-        flag = false
-      rescue RUNIT::AssertionFailedError
-        flag = true
-        err = $!
-      rescue Exception
-        flag = false
-        err = $!
-      end
-      assert(flag, err.to_s)
-    end
-      
-    def sub_assert_raise_error(p)
-      flag = false
-      err = nil
-      begin
-        p.call
-        flag = false
-      rescue RUNIT::AssertionFailedError
-        flag = false
-        err = $!
-      rescue Exception
-        flag = true
-        err = $!
-      end
-      assert(flag, err.to_s)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/runit/test_testcase.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/runit/test_testcase.rb
deleted file mode 100644 (file)
index f57e038..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-# Author:: Masaki Suketa.
-# Adapted by:: Nathaniel Talbott.
-# Copyright:: Copyright (c) Masaki Suketa. All rights reserved.
-# Copyright:: Copyright (c) 2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'rubyunit'
-
-module RUNIT
-  class DummyError < StandardError
-  end
-
-  class TestTestCase < RUNIT::TestCase
-    def setup
-      @dummy_testcase = Class.new(RUNIT::TestCase) do
-        def self.name
-          "DummyTestCase"
-        end
-        
-        attr_reader :status, :dummy_called, :dummy2_called
-
-        def initialize(*arg)
-          super(*arg)
-          @status = 0
-          @dummy_called = false
-          @dummy2_called = false
-        end
-
-        def setup
-          @status = 1 if @status == 0
-        end
-
-        def test_dummy
-          @status = 2 if @status == 1
-          @dummy_called = true
-        end
-
-        def test_dummy2
-          @status = 2 if @status == 1
-          @dummy2_called = true
-          raise DummyError
-        end
-
-        def teardown
-          @status = 3 if @status == 2
-        end
-      end
-
-      @test1 = @dummy_testcase.new('test_dummy')
-      @test2 = @dummy_testcase.new('test_dummy2', 'TestCase')
-    end
-
-    def test_name
-      assert_equal('DummyTestCase#test_dummy', @test1.name) # The second parameter to #initialize is ignored in emulation
-      assert_equal('DummyTestCase#test_dummy2', @test2.name)
-    end
-
-    def test_run
-      result = RUNIT::TestResult.new
-      @test1.run(result)
-      assert_equal(1, result.run_count)
-    end
-
-    def test_s_suite
-      suite = @dummy_testcase.suite
-      assert_instance_of(RUNIT::TestSuite, suite)
-      assert_equal(2, suite.count_test_cases)
-    end
-
-    def test_teardown_err
-      suite = Class.new(RUNIT::TestCase) do
-        def test_foo
-          assert(false)
-        end
-        
-        def test_bar
-          assert(true)
-        end
-        
-        def teardown
-          raise StandardError
-        end
-      end.suite
-
-      result = RUNIT::TestResult.new
-      suite.run(result)
-      assert_equal(2, result.error_size)
-      assert_equal(1, result.failure_size)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/runit/test_testresult.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/runit/test_testresult.rb
deleted file mode 100644 (file)
index 702b88d..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-# Author:: Masaki Suketa.
-# Adapted by:: Nathaniel Talbott.
-# Copyright:: Copyright (c) Masaki Suketa. All rights reserved.
-# Copyright:: Copyright (c) 2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'rubyunit'
-
-module RUNIT
-  class TestTestResult < RUNIT::TestCase
-    def setup
-      @result = RUNIT::TestResult.new
-      
-      @normal_suite = Class::new(RUNIT::TestCase) do
-        def test_1
-          assert(true)
-          assert(true)
-        end
-      end.suite
-      
-      @failure_suite = Class::new(RUNIT::TestCase) do
-        def test_1
-          assert(true)
-          assert(false)
-        end
-      end.suite
-      
-      @error_suite = Class::new(RUNIT::TestCase) do
-        def setup
-          raise ScriptError
-        end
-        def test_1
-          assert(true)
-        end
-      end.suite
-      
-      @multi_failure_suite = Class::new(RUNIT::TestCase) do
-        def test1
-          assert(false)
-        end
-        def test2
-          assert(false)
-        end
-        def test3
-          assert(false)
-        end
-      end.suite
-      
-      @with_error_suite = Class::new(RUNIT::TestCase) do
-        def test1
-          raise StandardError
-        end
-      end.suite
-      
-      @multi_error_suite = Class::new(RUNIT::TestCase) do
-        def test1
-          raise StandardError
-        end
-        def test2
-          raise StandardError
-        end
-        def test3
-          raise StandardError
-        end
-      end.suite
-      
-      @multi_suite = Class::new(RUNIT::TestCase) do
-        def test_1
-          assert(true)
-          assert(true)
-        end
-        def test_2
-          assert(true)
-        end
-        def test_3
-          assert(true)
-          assert(false)
-          assert(true)
-        end
-      end.suite
-    end
-
-    def test_error_size
-      @normal_suite.run(@result)
-      assert_equal(0, @result.error_size)
-      @with_error_suite.run(@result)
-      assert_equal(1, @result.error_size)
-      @multi_error_suite.run(@result)
-      assert_equal(4, @result.error_size)
-    end
-
-    def test_errors
-      @normal_suite.run(@result)
-      assert_equal(0, @result.errors.size)
-    end
-
-    def test_failure_size
-      @normal_suite.run(@result)
-      assert_equal(0, @result.failure_size)
-      @failure_suite.run(@result)
-      assert_equal(1, @result.failure_size)
-      @multi_failure_suite.run(@result)
-      assert_equal(4, @result.failure_size)
-    end
-
-    def test_failures
-      @normal_suite.run(@result)
-      assert_equal(0, @result.failures.size)
-      @failure_suite.run(@result)
-      assert_equal(1, @result.failures.size)
-      @multi_failure_suite.run(@result)
-      assert_equal(4, @result.failures.size)
-    end
-
-    def test_run_no_exception
-      assert_no_exception {
-        @error_suite.run(@result)
-      }
-    end
-
-    def test_run_asserts
-      @normal_suite.run(@result)
-      assert_equal(2, @result.run_asserts)
-    end
-
-    def test_run_asserts2
-      @failure_suite.run(@result)
-      assert_equal(2, @result.run_asserts)
-    end
-
-    def test_run_tests
-      assert_equal(0, @result.run_tests)
-      @normal_suite.run(@result)
-      assert_equal(1, @result.run_tests)
-      @multi_suite.run(@result) 
-      assert_equal(4, @result.run_tests)
-    end
-
-    def test_succeed?
-      @normal_suite.run(@result)
-      assert(@result.succeed?)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/runit/test_testsuite.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/runit/test_testsuite.rb
deleted file mode 100644 (file)
index 58702d3..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-# Author:: Masaki Suketa.
-# Adapted by:: Nathaniel Talbott.
-# Copyright:: Copyright (c) Masaki Suketa. All rights reserved.
-# Copyright:: Copyright (c) 2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'rubyunit'
-
-module RUNIT
-  class TestTestSuite < RUNIT::TestCase
-    def setup
-      @testsuite = RUNIT::TestSuite.new
-      @dummy_test = Class.new(RUNIT::TestCase) do
-        def test_foo
-        end
-        def test_bar
-        end
-      end
-      @dummy_empty_test = Class.new(RUNIT::TestCase){}
-    end
-
-    def test_count_test_cases
-      assert_equal(0, @testsuite.count_test_cases)
-
-      @testsuite.add(@dummy_empty_test.suite)
-      assert_equal(0, @testsuite.count_test_cases)
-
-      @testsuite.add(@dummy_test.suite)
-      assert_equal(2, @testsuite.count_test_cases)
-
-      @testsuite.add(@dummy_test.suite)
-      assert_equal(4, @testsuite.count_test_cases)
-
-      dummytest_foo = @dummy_test.new('test_foo')
-      @testsuite.add(dummytest_foo)
-      assert_equal(5, @testsuite.count_test_cases)
-    end
-
-    def test_add
-      @testsuite.add(@dummy_empty_test.suite)
-      assert_equal(0, @testsuite.size)
-      assert_equal(0, @testsuite.count_test_cases)
-
-      @testsuite.add(@dummy_test.suite)
-      assert_equal(2, @testsuite.size)
-      assert_equal(2, @testsuite.count_test_cases)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/test_assertions.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/test_assertions.rb
deleted file mode 100644 (file)
index 8ccd2a8..0000000
+++ /dev/null
@@ -1,528 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit'
-
-module Test
-  module Unit
-    class TC_Assertions < TestCase
-      def check(value, message="")
-        add_assertion
-        if (!value)
-          raise AssertionFailedError.new(message)
-        end
-      end
-
-      def check_assertions(expect_fail, expected_message="", return_value_expected=false)
-        @actual_assertion_count = 0
-        failed = true
-        actual_message = nil
-        @catch_assertions = true
-        return_value = nil
-        begin
-          return_value = yield
-          failed = false
-        rescue AssertionFailedError => error
-          actual_message = error.message
-        end
-        @catch_assertions = false
-        check(expect_fail == failed, (expect_fail ? "Should have failed, but didn't" : "Should not have failed, but did with message\n<#{actual_message}>"))
-        check(1 == @actual_assertion_count, "Should have made one assertion but made <#{@actual_assertion_count}>")
-        if (expect_fail)
-          case expected_message
-            when String
-              check(actual_message == expected_message, "Should have the correct message.\n<#{expected_message.inspect}> expected but was\n<#{actual_message.inspect}>")
-            when Regexp
-              check(actual_message =~ expected_message, "The message should match correctly.\n</#{expected_message.source}/> expected to match\n<#{actual_message.inspect}>")
-            else
-              check(false, "Incorrect expected message type in assert_nothing_failed")
-          end
-        else
-          if (!return_value_expected)
-            check(return_value.nil?, "Should not return a value but returned <#{return_value}>")
-          else
-            check(!return_value.nil?, "Should return a value")
-          end
-        end
-        return return_value
-      end
-      
-      def check_nothing_fails(return_value_expected=false, &proc)
-        check_assertions(false, "", return_value_expected, &proc)
-      end
-      
-      def check_fails(expected_message="", &proc)
-        check_assertions(true, expected_message, &proc)
-      end
-      
-      def test_assert_block
-        check_nothing_fails {
-          assert_block {true}
-        }
-        check_nothing_fails {
-          assert_block("successful assert_block") {true}
-        }
-        check_nothing_fails {
-          assert_block("successful assert_block") {true}
-        }
-        check_fails("assert_block failed.") {
-          assert_block {false}
-        }
-        check_fails("failed assert_block") {
-          assert_block("failed assert_block") {false}
-        }
-      end
-      
-      def test_assert
-        check_nothing_fails{assert("a")}
-        check_nothing_fails{assert(true)}
-        check_nothing_fails{assert(true, "successful assert")}
-        check_fails("<nil> is not true."){assert(nil)}
-        check_fails("<false> is not true."){assert(false)}
-        check_fails("failed assert.\n<false> is not true."){assert(false, "failed assert")}
-      end
-      
-      def test_assert_equal
-        check_nothing_fails {
-          assert_equal("string1", "string1")
-        }
-        check_nothing_fails {
-          assert_equal( "string1", "string1", "successful assert_equal")
-        }
-        check_nothing_fails {
-          assert_equal("string1", "string1", "successful assert_equal")
-        }
-        check_fails(%Q{<"string1"> expected but was\n<"string2">.}) {
-          assert_equal("string1", "string2")
-        }
-        check_fails(%Q{failed assert_equal.\n<"string1"> expected but was\n<"string2">.}) {
-          assert_equal("string1", "string2", "failed assert_equal")
-        }
-        check_fails(%Q{<"1"> expected but was\n<1>.}) do
-          assert_equal("1", 1)
-        end
-      end
-      
-      def test_assert_raise
-        return_value = nil
-        check_nothing_fails(true) {
-          return_value = assert_raise(RuntimeError) {
-            raise "Error"
-          }
-        }
-        check(return_value.kind_of?(Exception), "Should have returned the exception from a successful assert_raise")
-        check(return_value.message == "Error", "Should have returned the correct exception from a successful assert_raise")
-        check_nothing_fails(true) {
-          assert_raise(ArgumentError, "successful assert_raise") {
-            raise ArgumentError.new("Error")
-          }
-        }
-        check_nothing_fails(true) {
-          assert_raise(RuntimeError) {
-            raise "Error"
-          }
-        }
-        check_nothing_fails(true) {
-          assert_raise(RuntimeError, "successful assert_raise") {
-            raise "Error"
-          }
-        }
-        check_fails("<RuntimeError> exception expected but none was thrown.") {
-          assert_raise(RuntimeError) {
-            1 + 1
-          }
-        }
-        check_fails(%r{\Afailed assert_raise.\n<ArgumentError> exception expected but was\nClass: <RuntimeError>\nMessage: <"Error">\n---Backtrace---\n.+\n---------------\Z}m) {
-          assert_raise(ArgumentError, "failed assert_raise") {
-            raise "Error"
-          }
-        }
-        check_fails("Should expect a class of exception, Object.\n<false> is not true.") {
-          assert_nothing_raised(Object) {
-            1 + 1
-          }
-        }
-
-        exceptions = [ArgumentError, TypeError]
-        modules = [Math, Comparable]
-        rescues = exceptions + modules
-        exceptions.each do |exc|
-          check_nothing_fails(true) {
-            return_value = assert_raise(*rescues) {
-              raise exc, "Error"
-            }
-          }
-          check(return_value.instance_of?(exc), "Should have returned #{exc} but was #{return_value.class}")
-          check(return_value.message == "Error", "Should have returned the correct exception from a successful assert_raise")
-        end
-        modules.each do |mod|
-          check_nothing_fails(true) {
-            return_value = assert_raise(*rescues) {
-              raise Exception.new("Error").extend(mod)
-            }
-          }
-          check(mod === return_value, "Should have returned #{mod}")
-          check(return_value.message == "Error", "Should have returned the correct exception from a successful assert_raise")
-        end
-        check_fails("<[ArgumentError, TypeError, Math, Comparable]> exception expected but none was thrown.") {
-          assert_raise(*rescues) {
-            1 + 1
-          }
-        }
-        check_fails(%r{\Afailed assert_raise.
-<\[ArgumentError, TypeError\]> exception expected but was
-Class: <RuntimeError>
-Message: <"Error">
----Backtrace---
-.+
----------------\Z}m) {
-          assert_raise(ArgumentError, TypeError, "failed assert_raise") {
-            raise "Error"
-          }
-        }
-      end
-      
-      def test_assert_instance_of
-        check_nothing_fails {
-          assert_instance_of(String, "string")
-        }
-        check_nothing_fails {
-          assert_instance_of(String, "string", "successful assert_instance_of")
-        }
-        check_nothing_fails {
-          assert_instance_of(String, "string", "successful assert_instance_of")
-        }
-        check_fails(%Q{<"string"> expected to be an instance of\n<Hash> but was\n<String>.}) {
-          assert_instance_of(Hash, "string")
-        }
-        check_fails(%Q{failed assert_instance_of.\n<"string"> expected to be an instance of\n<Hash> but was\n<String>.}) {
-          assert_instance_of(Hash, "string", "failed assert_instance_of")
-        }
-      end
-      
-      def test_assert_nil
-        check_nothing_fails {
-          assert_nil(nil)
-        }
-        check_nothing_fails {
-          assert_nil(nil, "successful assert_nil")
-        }
-        check_nothing_fails {
-          assert_nil(nil, "successful assert_nil")
-        }
-        check_fails(%Q{<nil> expected but was\n<"string">.}) {
-          assert_nil("string")
-        }
-        check_fails(%Q{failed assert_nil.\n<nil> expected but was\n<"string">.}) {
-          assert_nil("string", "failed assert_nil")
-        }
-      end
-      
-      def test_assert_not_nil
-        check_nothing_fails{assert_not_nil(false)}
-        check_nothing_fails{assert_not_nil(false, "message")}
-        check_fails("<nil> expected to not be nil."){assert_not_nil(nil)}
-        check_fails("message.\n<nil> expected to not be nil.") {assert_not_nil(nil, "message")}
-      end
-        
-      def test_assert_kind_of
-        check_nothing_fails {
-          assert_kind_of(Module, Array)
-        }
-        check_nothing_fails {
-          assert_kind_of(Object, "string", "successful assert_kind_of")
-        }
-        check_nothing_fails {
-          assert_kind_of(Object, "string", "successful assert_kind_of")
-        }
-        check_nothing_fails {
-          assert_kind_of(Comparable, 1)
-        }
-        check_fails(%Q{<"string">\nexpected to be kind_of?\n<Class> but was\n<String>.}) {
-          assert_kind_of(Class, "string")
-        }
-        check_fails(%Q{failed assert_kind_of.\n<"string">\nexpected to be kind_of?\n<Class> but was\n<String>.}) {
-          assert_kind_of(Class, "string", "failed assert_kind_of")
-        }
-      end
-      
-      def test_assert_match
-        check_nothing_fails {
-          assert_match(/strin./, "string")
-        }
-        check_nothing_fails {
-          assert_match("strin", "string")
-        }
-        check_nothing_fails {
-          assert_match(/strin./, "string", "successful assert_match")
-        }
-        check_nothing_fails {
-          assert_match(/strin./, "string", "successful assert_match")
-        }
-        check_fails(%Q{<"string"> expected to be =~\n</slin./>.}) {
-          assert_match(/slin./, "string")
-        }
-        check_fails(%Q{<"string"> expected to be =~\n</strin\\./>.}) {
-          assert_match("strin.", "string")
-        }
-        check_fails(%Q{failed assert_match.\n<"string"> expected to be =~\n</slin./>.}) {
-          assert_match(/slin./, "string", "failed assert_match")
-        }
-      end
-      
-      def test_assert_same
-        thing = "thing"
-        check_nothing_fails {
-          assert_same(thing, thing)
-        }
-        check_nothing_fails {
-          assert_same(thing, thing, "successful assert_same")
-        }
-        check_nothing_fails {
-          assert_same(thing, thing, "successful assert_same")
-        }
-        thing2 = "thing"
-        check_fails(%Q{<"thing">\nwith id <#{thing.__id__}> expected to be equal? to\n<"thing">\nwith id <#{thing2.__id__}>.}) {
-          assert_same(thing, thing2)
-        }
-        check_fails(%Q{failed assert_same.\n<"thing">\nwith id <#{thing.__id__}> expected to be equal? to\n<"thing">\nwith id <#{thing2.__id__}>.}) {
-          assert_same(thing, thing2, "failed assert_same")
-        }
-      end
-      
-      def test_assert_nothing_raised
-        check_nothing_fails {
-          assert_nothing_raised {
-            1 + 1
-          }
-        }
-        check_nothing_fails {
-          assert_nothing_raised("successful assert_nothing_raised") {
-            1 + 1
-          }
-        }
-        check_nothing_fails {
-          assert_nothing_raised("successful assert_nothing_raised") {
-            1 + 1
-          }
-        }
-        check_nothing_fails {
-          begin
-            assert_nothing_raised(RuntimeError, StandardError, Comparable, "successful assert_nothing_raised") {
-              raise ZeroDivisionError.new("ArgumentError")
-            }
-          rescue ZeroDivisionError
-          end
-        }
-        check_fails("Should expect a class of exception, Object.\n<false> is not true.") {
-          assert_nothing_raised(Object) {
-            1 + 1
-          }
-        }
-        check_fails(%r{\AException raised:\nClass: <RuntimeError>\nMessage: <"Error">\n---Backtrace---\n.+\n---------------\Z}m) {
-          assert_nothing_raised {
-            raise "Error"
-          }
-        }
-        check_fails(%r{\Afailed assert_nothing_raised\.\nException raised:\nClass: <RuntimeError>\nMessage: <"Error">\n---Backtrace---\n.+\n---------------\Z}m) {
-          assert_nothing_raised("failed assert_nothing_raised") {
-            raise "Error"
-          }
-        }
-        check_fails(%r{\AException raised:\nClass: <RuntimeError>\nMessage: <"Error">\n---Backtrace---\n.+\n---------------\Z}m) {
-          assert_nothing_raised(StandardError, RuntimeError) {
-            raise "Error"
-          }
-        }
-        check_fails("Failure.") do
-          assert_nothing_raised do
-            flunk("Failure")
-          end
-        end
-      end
-      
-      def test_flunk
-        check_fails("Flunked.") {
-          flunk
-        }
-        check_fails("flunk message.") {
-          flunk("flunk message")
-        }
-      end
-      
-      def test_assert_not_same
-        thing = "thing"
-        thing2 = "thing"
-        check_nothing_fails {
-          assert_not_same(thing, thing2)
-        }
-        check_nothing_fails {
-          assert_not_same(thing, thing2, "message")
-        }
-        check_fails(%Q{<"thing">\nwith id <#{thing.__id__}> expected to not be equal? to\n<"thing">\nwith id <#{thing.__id__}>.}) {
-          assert_not_same(thing, thing)
-        }
-        check_fails(%Q{message.\n<"thing">\nwith id <#{thing.__id__}> expected to not be equal? to\n<"thing">\nwith id <#{thing.__id__}>.}) {
-          assert_not_same(thing, thing, "message")
-        }
-      end
-      
-      def test_assert_not_equal
-        check_nothing_fails {
-          assert_not_equal("string1", "string2")
-        }
-        check_nothing_fails {
-          assert_not_equal("string1", "string2", "message")
-        }
-        check_fails(%Q{<"string"> expected to be != to\n<"string">.}) {
-          assert_not_equal("string", "string")
-        }
-        check_fails(%Q{message.\n<"string"> expected to be != to\n<"string">.}) {
-          assert_not_equal("string", "string", "message")
-        }
-      end
-      
-      def test_assert_no_match
-        check_nothing_fails{assert_no_match(/sling/, "string")}
-        check_nothing_fails{assert_no_match(/sling/, "string", "message")}
-        check_fails(%Q{The first argument to assert_no_match should be a Regexp.\n<"asdf"> expected to be an instance of\n<Regexp> but was\n<String>.}) do
-          assert_no_match("asdf", "asdf")
-        end
-        check_fails(%Q{</string/> expected to not match\n<"string">.}) do
-          assert_no_match(/string/, "string")
-        end
-        check_fails(%Q{message.\n</string/> expected to not match\n<"string">.}) do
-          assert_no_match(/string/, "string", "message")
-        end
-      end
-      
-      def test_assert_throws
-        check_nothing_fails {
-          assert_throws(:thing, "message") {
-            throw :thing
-          }
-        }
-        check_fails("message.\n<:thing> expected to be thrown but\n<:thing2> was thrown.") {
-          assert_throws(:thing, "message") {
-            throw :thing2
-          }
-        }
-        check_fails("message.\n<:thing> should have been thrown.") {
-          assert_throws(:thing, "message") {
-            1 + 1
-          }
-        }
-      end
-      
-      def test_assert_nothing_thrown
-        check_nothing_fails {
-          assert_nothing_thrown("message") {
-            1 + 1
-          }
-        }
-        check_fails("message.\n<:thing> was thrown when nothing was expected.") {
-          assert_nothing_thrown("message") {
-            throw :thing
-          }
-        }
-      end
-      
-      def test_assert_operator
-        check_nothing_fails {
-          assert_operator("thing", :==, "thing", "message")
-        }
-        check_fails(%Q{<0.15>\ngiven as the operator for #assert_operator must be a Symbol or #respond_to?(:to_str).}) do
-          assert_operator("thing", 0.15, "thing")
-        end
-        check_fails(%Q{message.\n<"thing1"> expected to be\n==\n<"thing2">.}) {
-          assert_operator("thing1", :==, "thing2", "message")
-        }
-      end
-      
-      def test_assert_respond_to
-        check_nothing_fails {
-          assert_respond_to("thing", :to_s, "message")
-        }
-        check_nothing_fails {
-          assert_respond_to("thing", "to_s", "message")
-        }
-        check_fails("<0.15>\ngiven as the method name argument to #assert_respond_to must be a Symbol or #respond_to?(:to_str).") {
-          assert_respond_to("thing", 0.15)
-        }
-        check_fails("message.\n<:symbol>\nof type <Symbol>\nexpected to respond_to?<:non_existent>.") {
-          assert_respond_to(:symbol, :non_existent, "message")
-        }
-      end
-      
-      def test_assert_in_delta
-        check_nothing_fails {
-          assert_in_delta(1.4, 1.4, 0)
-        }
-        check_nothing_fails {
-          assert_in_delta(0.5, 0.4, 0.1, "message")
-        }
-        check_nothing_fails {
-          float_thing = Object.new
-          def float_thing.to_f
-            0.2
-          end
-          assert_in_delta(0.1, float_thing, 0.1)
-        }
-        check_fails("message.\n<0.5> and\n<0.4> expected to be within\n<0.05> of each other.") {
-          assert_in_delta(0.5, 0.4, 0.05, "message")
-        }
-        check_fails(%r{The arguments must respond to to_f; the first float did not\.\n<.+>\nof type <Object>\nexpected to respond_to\?<:to_f>.}) {
-          assert_in_delta(Object.new, 0.4, 0.1)
-        }
-        check_fails("The delta should not be negative.\n<-0.1> expected to be\n>=\n<0.0>.") {
-          assert_in_delta(0.5, 0.4, -0.1, "message")
-        }
-      end
-      
-      def test_assert_send
-        object = Object.new
-        class << object
-          private
-          def return_argument(argument, bogus)
-            return argument
-          end
-        end
-        check_nothing_fails {
-          assert_send([object, :return_argument, true, "bogus"], "message")
-        }
-        check_fails(%r{\Amessage\.\n<.+> expected to respond to\n<return_argument\(\[false, "bogus"\]\)> with a true value.\Z}) {
-          assert_send([object, :return_argument, false, "bogus"], "message")
-        }
-      end
-      
-      def test_condition_invariant
-        object = Object.new
-        def object.inspect
-          @changed = true
-        end
-        def object.==(other)
-          @changed ||= false
-          return (!@changed)
-        end
-        check_nothing_fails {
-          assert_equal(object, object, "message")
-        }
-      end
-  
-      def add_failure(message, location=caller)
-        if (!@catch_assertions)
-          super
-        end
-      end
-      
-      def add_assertion
-        if (!@catch_assertions)
-          super
-        else
-          @actual_assertion_count += 1
-        end
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/test_error.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/test_error.rb
deleted file mode 100644 (file)
index 56b275b..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit'
-
-module Test
-  module Unit
-    class TC_Error < TestCase
-      TF_Exception = Struct.new('TF_Exception', :message, :backtrace)
-      def test_display
-        ex = TF_Exception.new("message1\nmessage2", ['line1', 'line2'])
-        e = Error.new("name", ex)
-        assert_equal("name: #{TF_Exception.name}: message1", e.short_display)
-        assert_equal(<<EOM.strip, e.long_display)
-Error:
-name:
-Struct::TF_Exception: message1
-message2
-    line1
-    line2
-EOM
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/test_failure.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/test_failure.rb
deleted file mode 100644 (file)
index 164f942..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2003 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit'
-require 'test/unit/failure'
-
-module Test::Unit
-  class TestFailure < TestCase
-    def test_display
-      f = Failure.new("name", [%q{location:1 in 'l'}], "message1\nmessage2")
-      assert_equal("name: message1", f.short_display)
-      assert_equal(<<EOM.strip, f.long_display)
-Failure:
-name [location:1]:
-message1
-message2
-EOM
-
-      f = Failure.new("name", [%q{location1:2 in 'l1'}, 'location2:1', %q{location3:3 in 'l3'}], "message1\nmessage2")
-      assert_equal("name: message1", f.short_display)
-      assert_equal(<<EOM.strip, f.long_display)
-Failure:
-name
-    [location1:2 in 'l1'
-     location2:1
-     location3:3 in 'l3']:
-message1
-message2
-EOM
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/test_testcase.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/test_testcase.rb
deleted file mode 100644 (file)
index 2934a92..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit'
-
-module Test
-  module Unit
-    class TC_TestCase < TestCase
-      def test_creation
-        tc = Class.new(TestCase) do
-          def test_with_arguments(arg1, arg2)
-          end
-        end
-      
-        caught = true
-        catch(:invalid_test) do
-          tc.new(:test_with_arguments)
-          caught = false
-        end
-        check("Should have caught an invalid test when there are arguments", caught)
-        
-        caught = true
-        catch(:invalid_test) do
-          tc.new(:non_existent_test)
-          caught = false
-        end
-        check("Should have caught an invalid test when the method does not exist", caught)
-      end
-      
-      def setup
-        @tc_failure_error = Class.new(TestCase) do
-          def test_failure
-            assert_block("failure") { false }
-          end
-          def test_error
-            1 / 0
-          end
-          def test_nested_failure
-            nested
-          end
-          def nested
-            assert_block("nested"){false}
-          end
-          def return_passed?
-            return passed?
-          end
-        end
-
-        def @tc_failure_error.name
-          "TC_FailureError"
-        end
-      end
-      def test_add_failed_assertion
-        test_case = @tc_failure_error.new(:test_failure)
-        check("passed? should start out true", test_case.return_passed?)
-        result = TestResult.new
-        called = false
-        result.add_listener(TestResult::FAULT) {
-          | fault |
-          check("Should have a Failure", fault.instance_of?(Failure))
-          check("The Failure should have the correct message", "failure" == fault.message)
-          check("The Failure should have the correct test_name (was <#{fault.test_name}>)", fault.test_name == "test_failure(TC_FailureError)")
-          r = /\A.*#{Regexp.escape(File.basename(__FILE__))}:\d+:in `test_failure'\Z/
-
-          location = fault.location
-          check("The location should be an array", location.kind_of?(Array))
-          check("The location should have two lines (was: <#{location.inspect}>)", location.size == 2)
-          check("The Failure should have the correct location (was <#{location[0].inspect}>, expected <#{r.inspect}>)", r =~ location[0])
-          called = true
-        }
-        progress = []
-        test_case.run(result) { |*arguments| progress << arguments }
-        check("The failure should have triggered the listener", called)
-        check("The failure should have set passed?", !test_case.return_passed?)
-        check("The progress block should have been updated correctly", [[TestCase::STARTED, test_case.name], [TestCase::FINISHED, test_case.name]] == progress)
-      end
-
-      def test_add_failure_nested
-        test_case = @tc_failure_error.new(:test_nested_failure)
-        check("passed? should start out true", test_case.return_passed?)
-
-        result = TestResult.new
-        called = false
-        result.add_listener(TestResult::FAULT) {
-          | fault |
-          check("Should have a Failure", fault.instance_of?(Failure))
-          check("The Failure should have the correct message", "nested" == fault.message)
-          check("The Failure should have the correct test_name (was <#{fault.test_name}>)", fault.test_name == "test_nested_failure(TC_FailureError)")
-          r = 
-
-          location = fault.location
-          check("The location should be an array", location.kind_of?(Array))
-          check("The location should have the correct number of lines (was: <#{location.inspect}>)", location.size == 3)
-          check("The Failure should have the correct location (was <#{location[0].inspect}>)", /\A.*#{Regexp.escape(File.basename(__FILE__))}:\d+:in `nested'\Z/ =~ location[0])
-          check("The Failure should have the correct location (was <#{location[1].inspect}>)", /\A.*#{Regexp.escape(File.basename(__FILE__))}:\d+:in `test_nested_failure'\Z/ =~ location[1])
-          called = true
-        }
-        test_case.run(result){}
-        check("The failure should have triggered the listener", called)
-      end
-      
-      def test_add_error
-        test_case = @tc_failure_error.new(:test_error)
-        check("passed? should start out true", test_case.return_passed?)
-        result = TestResult.new
-        called = false
-        result.add_listener(TestResult::FAULT) {
-          | fault |
-          check("Should have a TestError", fault.instance_of?(Error))
-          check("The Error should have the correct message", "ZeroDivisionError: divided by 0" == fault.message)
-          check("The Error should have the correct test_name", "test_error(TC_FailureError)" == fault.test_name)
-          check("The Error should have the correct exception", fault.exception.instance_of?(ZeroDivisionError))
-          called = true
-        }
-        test_case.run(result) {}
-        check("The error should have triggered the listener", called)
-        check("The error should have set passed?", !test_case.return_passed?)
-      end
-
-      def test_no_tests      
-        suite = TestCase.suite
-        check("Should have a test suite", suite.instance_of?(TestSuite))
-        check("Should have one test", suite.size == 1)
-        check("Should have the default test", suite.tests.first.name == "default_test(Test::Unit::TestCase)")
-        
-        result = TestResult.new
-        suite.run(result) {}
-        check("Should have had one test run", result.run_count == 1)
-        check("Should have had one test failure", result.failure_count == 1)
-        check("Should have had no errors", result.error_count == 0)
-      end
-
-      def test_suite
-        tc = Class.new(TestCase) do
-          def test_succeed
-            assert_block {true}
-          end
-          def test_fail
-            assert_block {false}
-          end
-          def test_error
-            1/0
-          end
-          def dont_run
-            assert_block {true}
-          end
-          def test_dont_run(argument)
-            assert_block {true}
-          end
-          def test
-            assert_block {true}
-          end
-        end
-      
-        suite = tc.suite
-        check("Should have a test suite", suite.instance_of?(TestSuite))
-        check("Should have three tests", suite.size == 3)
-  
-        result = TestResult.new
-        suite.run(result) {}
-        check("Should have had three test runs", result.run_count == 3)
-        check("Should have had one test failure", result.failure_count == 1)
-        check("Should have had one test error", result.error_count == 1)
-      end
-      
-     
-      def test_setup_teardown
-        tc = Class.new(TestCase) do
-          attr_reader(:setup_called, :teardown_called)
-          def initialize(test)
-            super(test)
-            @setup_called = false
-            @teardown_called = false
-          end
-          def setup
-            @setup_called = true
-          end
-          def teardown
-            @teardown_called = true
-          end
-          def test_succeed
-            assert_block {true}
-          end
-          def test_fail
-            assert_block {false}
-          end
-          def test_error
-            raise "Error!"
-          end
-        end
-        result = TestResult.new
-  
-        test = tc.new(:test_succeed)
-        test.run(result) {}
-        check("Should have called setup the correct number of times", test.setup_called)
-        check("Should have called teardown the correct number of times", test.teardown_called)
-  
-        test = tc.new(:test_fail)
-        test.run(result) {}
-        check("Should have called setup the correct number of times", test.setup_called)
-        check("Should have called teardown the correct number of times", test.teardown_called)
-  
-        test = tc.new(:test_error)
-        test.run(result) {}
-        check("Should have called setup the correct number of times", test.setup_called)
-        check("Should have called teardown the correct number of times", test.teardown_called)
-  
-        check("Should have had two test runs", result.run_count == 3)
-        check("Should have had a test failure", result.failure_count == 1)
-        check("Should have had a test error", result.error_count == 1)
-      end
-      
-      def test_assertion_failed_not_called
-        tc = Class.new(TestCase) do
-          def test_thing
-            raise AssertionFailedError.new
-          end
-        end
-        
-        suite = tc.suite
-        check("Should have one test", suite.size == 1)
-        result = TestResult.new
-        suite.run(result) {}
-        check("Should have had one test run", result.run_count == 1)
-        check("Should have had one assertion failure", result.failure_count == 1)
-        check("Should not have any assertion errors but had #{result.error_count}", result.error_count == 0)
-      end
-      
-      def test_equality
-        tc1 = Class.new(TestCase) do
-          def test_1
-          end
-          def test_2
-          end
-        end
-        
-        tc2 = Class.new(TestCase) do
-          def test_1
-          end
-        end
-      
-        test1 = tc1.new('test_1')
-        test2 = tc1.new('test_1')
-        check("Should be equal", test1 == test2)
-        check("Should be equal", test2 == test1)
-        
-        test1 = tc1.new('test_2')
-        check("Should not be equal", test1 != test2)
-        check("Should not be equal", test2 != test1)
-        
-        test2 = tc1.new('test_2')
-        check("Should be equal", test1 == test2)
-        check("Should be equal", test2 == test1)
-        
-        test1 = tc1.new('test_1')
-        test2 = tc2.new('test_1')
-        check("Should not be equal", test1 != test2)
-        check("Should not be equal", test2 != test1)
-
-        
-        check("Should not be equal", test1 != Object.new)
-        check("Should not be equal", Object.new != test1)
-      end
-      
-      def check(message, passed)
-        @_result.add_assertion
-        if ! passed
-          raise AssertionFailedError.new(message)
-        end
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/test_testresult.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/test_testresult.rb
deleted file mode 100644 (file)
index 95d631a..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/testcase'
-require 'test/unit/testresult'
-
-module Test
-  module Unit
-    class TC_TestResult < TestCase
-      def setup
-        @my_result = TestResult.new
-        @my_result.add_assertion()
-        @my_result.add_failure("")
-        @my_result.add_error("")
-      end
-      def test_result_changed_notification
-        called1 = false
-        @my_result.add_listener( TestResult::CHANGED) {
-          |result|
-          assert_block("The result should be correct") { result == @my_result }
-          called1 = true
-        }
-        @my_result.add_assertion
-        assert_block("Should have been notified when the assertion happened") { called1 }
-        
-        called1, called2 = false, false
-        @my_result.add_listener( TestResult::CHANGED) {
-          |result|
-          assert_block("The result should be correct") { result == @my_result }
-          called2 = true
-        }
-        @my_result.add_assertion
-        assert_block("Both listeners should have been notified for a success") { called1 && called2 }
-  
-        called1, called2 = false, false
-        @my_result.add_failure("")
-        assert_block("Both listeners should have been notified for a failure") { called1 && called2 }
-  
-        called1, called2 = false, false    
-        @my_result.add_error("")
-        assert_block("Both listeners should have been notified for an error") { called1 && called2 }
-  
-        called1, called2 = false, false    
-        @my_result.add_run
-        assert_block("Both listeners should have been notified for a run") { called1 && called2 }
-      end
-      def test_fault_notification
-        called1 = false
-        fault = "fault"
-        @my_result.add_listener(TestResult::FAULT) {
-          | passed_fault |
-          assert_block("The fault should be correct") { passed_fault == fault }
-          called1 = true
-        }
-  
-        @my_result.add_assertion
-        assert_block("Should not have been notified when the assertion happened") { !called1 }
-        
-        @my_result.add_failure(fault)
-        assert_block("Should have been notified when the failure happened") { called1 }
-        
-        called1, called2 = false, false
-        @my_result.add_listener(TestResult::FAULT) {
-          | passed_fault |
-          assert_block("The fault should be correct") { passed_fault == fault }
-          called2 = true
-        }
-  
-        @my_result.add_assertion
-        assert_block("Neither listener should have been notified for a success") { !(called1 || called2) }
-  
-        called1, called2 = false, false
-        @my_result.add_failure(fault)
-        assert_block("Both listeners should have been notified for a failure") { called1 && called2 }
-  
-        called1, called2 = false, false    
-        @my_result.add_error(fault)
-        assert_block("Both listeners should have been notified for an error") { called1 && called2 }
-  
-        called1, called2 = false, false
-        @my_result.add_run
-        assert_block("Neither listener should have been notified for a run") { !(called1 || called2) }
-      end
-      def test_passed?
-        result = TestResult.new
-        assert(result.passed?, "An empty result should have passed")
-  
-        result.add_assertion
-        assert(result.passed?, "Adding an assertion should not cause the result to not pass")
-  
-        result.add_run
-        assert(result.passed?, "Adding a run should not cause the result to not pass")
-  
-        result.add_failure("")
-        assert(!result.passed?, "Adding a failed assertion should cause the result to not pass")
-  
-        result = TestResult.new
-        result.add_error("")
-        assert(!result.passed?, "Adding an error should cause the result to not pass")
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/test_testsuite.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/test_testsuite.rb
deleted file mode 100644 (file)
index 5f6631d..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit'
-
-module Test
-  module Unit
-    class TC_TestSuite < TestCase
-      def setup
-        @testcase1 = Class.new(TestCase) do
-          def test_succeed1
-            assert_block { true }
-          end
-          def test_fail
-            assert_block { false }
-          end
-        end
-
-        @testcase2 = Class.new(TestCase) do
-          def test_succeed2
-            assert_block { true }
-          end
-          def test_error
-            raise
-          end
-        end
-      end
-
-      def test_add
-        s = TestSuite.new
-        assert_equal(s, s << self.class.new("test_add"))
-      end
-
-      def test_delete
-        s = TestSuite.new
-        t1 = self.class.new("test_delete")
-        s << t1
-        t2 = self.class.new("test_add")
-        s << t2
-        assert_equal(t1, s.delete(t1))
-        assert_nil(s.delete(t1))
-        assert_equal(TestSuite.new << t2, s)
-      end
-
-      def test_size
-        suite = TestSuite.new
-        suite2 = TestSuite.new
-        suite2 << self.class.new("test_size")
-        suite << suite2
-        suite << self.class.new("test_size")
-        assert_equal(2, suite.size, "The count should be correct")
-      end
-      
-      def test_run
-        progress = []
-        suite = @testcase1.suite
-        result = TestResult.new
-        suite.run(result) { |*values| progress << values }
-  
-        assert_equal(2, result.run_count, "Should have had four test runs")
-        assert_equal(1, result.failure_count, "Should have had one test failure")
-        assert_equal(0, result.error_count, "Should have had one test error")
-        assert_equal([[TestSuite::STARTED, suite.name],
-                [TestCase::STARTED, "test_fail(#{suite.name})"],
-                [TestCase::FINISHED, "test_fail(#{suite.name})"],
-                [TestCase::STARTED, "test_succeed1(#{suite.name})"],
-                [TestCase::FINISHED, "test_succeed1(#{suite.name})"],
-                [TestSuite::FINISHED, suite.name]],
-                progress, "Should have had the correct progress")
-        
-        suite = TestSuite.new
-        suite << @testcase1.suite
-        suite << @testcase2.suite
-        result = TestResult.new
-        progress = []
-        suite.run(result) { |*values| progress << values }
-  
-        assert_equal(4, result.run_count, "Should have had four test runs")
-        assert_equal(1, result.failure_count, "Should have had one test failure")
-        assert_equal(1, result.error_count, "Should have had one test error")
-        assert_equal(14, progress.size, "Should have had the correct number of progress calls")
-      end
-      
-      def test_empty?
-        assert(TestSuite.new.empty?, "A new test suite should be empty?")
-        assert(!@testcase2.suite.empty?, "A test suite with tests should not be empty")
-      end
-      
-      def test_equality
-        suite1 = TestSuite.new
-        suite2 = TestSuite.new
-        assert_equal(suite1, suite2)
-        assert_equal(suite2, suite1)
-        
-        suite1 = TestSuite.new('name')
-        assert_not_equal(suite1, suite2)
-        assert_not_equal(suite2, suite1)
-        
-        suite2 = TestSuite.new('name')
-        assert_equal(suite1, suite2)
-        assert_equal(suite2, suite1)
-        
-        suite1 << 'test'
-        assert_not_equal(suite1, suite2)
-        assert_not_equal(suite2, suite1)
-        
-        suite2 << 'test'
-        assert_equal(suite1, suite2)
-        assert_equal(suite2, suite1)
-        
-        suite2 = Object.new
-        class << suite2
-          def name
-            'name'
-          end
-          def tests
-            ['test']
-          end
-        end
-        assert_not_equal(suite1, suite2)
-        assert_not_equal(suite2, suite1)
-
-        assert_not_equal(suite1, Object.new)
-        assert_not_equal(Object.new, suite1)
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/util/test_backtracefilter.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/util/test_backtracefilter.rb
deleted file mode 100644 (file)
index d4e40ea..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-require 'test/unit'
-
-require 'test/unit/util/backtracefilter'
-
-module Test::Unit::Util
-  class TestBacktraceFilter < Test::Unit::TestCase
-    include BacktraceFilter
-    
-    def test_filter_backtrace
-      backtrace = [%q{C:\some\old\path/test/unit/assertions.rb:44:in 'assert'},
-        %q{tc_thing.rb:4:in 'a'},
-        %q{tc_thing.rb:4:in 'test_stuff'},
-        %q{C:\some\old\path/test/unit/testcase.rb:44:in 'send'},
-        %q{C:\some\old\path\test\unit\testcase.rb:44:in 'run'},
-        %q{C:\some\old\path\test\unit.rb:44:in 'run'},
-        %q{tc_thing.rb:3}]
-      assert_equal(backtrace[1..2], filter_backtrace(backtrace, %q{C:\some\old\path\test\unit}), "Should filter out all TestUnit-specific lines")
-
-backtrace = [%q{tc_thing.rb:4:in 'a'},
-        %q{tc_thing.rb:4:in 'test_stuff'},
-        %q{tc_thing.rb:3}]
-      assert_equal(backtrace, filter_backtrace(backtrace, %q{C:\some\old\path\test\unit}), "Shouldn't filter too much")
-
-      backtrace = [%q{C:\some\old\path/test/unit/assertions.rb:44:in 'assert'},
-        %q{tc_thing.rb:4:in 'a'},
-        %q{tc_thing.rb:4:in 'test_stuff'},
-        %q{tc_thing.rb:3}]
-      assert_equal(backtrace[1..3], filter_backtrace(backtrace, %q{C:\some\old\path\test\unit}), "Should filter out all TestUnit-specific lines")
-      
-      backtrace = [%q{C:\some\old\path/test/unit/assertions.rb:44:in 'assert'},
-        %q{C:\some\old\path/test/unit/testcase.rb:44:in 'send'},
-        %q{C:\some\old\path\test\unit\testcase.rb:44:in 'run'},
-        %q{C:\some\old\path\test\unit.rb:44:in 'run'}]
-      assert_equal(backtrace, filter_backtrace(backtrace, %q{C:\some\old\path\test\unit}), "Should filter out all TestUnit-specific lines")
-    end
-
-    def test_nil_backtrace
-      assert_equal(["No backtrace"], filter_backtrace(nil))
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/util/test_observable.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/util/test_observable.rb
deleted file mode 100644 (file)
index 6cd1018..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit/util/observable'
-
-module Test
-  module Unit
-    module Util
-      class TC_Observable < TestCase
-      
-        class TF_Observable
-          include Observable
-        end
-        
-        def setup
-          @observable = TF_Observable.new
-        end
-        
-        def test_simple_observation
-          assert_raises(ArgumentError, "add_listener should throw an exception if no callback is supplied") do
-            @observable.add_listener(:property, "a")
-          end
-      
-          heard = false
-          callback = proc { heard = true }
-          assert_equal("a", @observable.add_listener(:property, "a", &callback), "add_listener should return the listener that was added")
-      
-          count = 0
-          @observable.instance_eval do
-            count = notify_listeners(:property)
-          end
-          assert_equal(1, count, "notify_listeners should have returned the number of listeners that were notified")
-          assert(heard, "Should have heard the property changed")
-      
-          heard = false
-          assert_equal(callback, @observable.remove_listener(:property, "a"), "remove_listener should return the callback")
-          
-          count = 1
-          @observable.instance_eval do
-            count = notify_listeners(:property)
-          end
-          assert_equal(0, count, "notify_listeners should have returned the number of listeners that were notified")
-          assert(!heard, "Should not have heard the property change")
-        end
-        
-        def test_value_observation
-          value = nil
-          @observable.add_listener(:property, "a") do |passed_value|
-            value = passed_value
-          end
-          count = 0
-          @observable.instance_eval do
-            count = notify_listeners(:property, "stuff")
-          end
-          assert_equal(1, count, "Should have update the correct number of listeners")
-          assert_equal("stuff", value, "Should have received the value as an argument to the listener")
-        end
-        
-        def test_multiple_value_observation
-          values = []
-          @observable.add_listener(:property, "a") do |first_value, second_value|
-            values = [first_value, second_value]
-          end
-          count = 0
-          @observable.instance_eval do
-            count = notify_listeners(:property, "stuff", "more stuff")
-          end
-          assert_equal(1, count, "Should have update the correct number of listeners")
-          assert_equal(["stuff", "more stuff"], values, "Should have received the value as an argument to the listener")
-        end
-        
-        def test_add_remove_with_default_listener
-          assert_raises(ArgumentError, "add_listener should throw an exception if no callback is supplied") do
-            @observable.add_listener(:property)
-          end
-      
-          heard = false
-          callback = proc { heard = true }
-          assert_equal(callback, @observable.add_listener(:property, &callback), "add_listener should return the listener that was added")
-      
-          count = 0
-          @observable.instance_eval do
-            count = notify_listeners(:property)
-          end
-          assert_equal(1, count, "notify_listeners should have returned the number of listeners that were notified")
-          assert(heard, "Should have heard the property changed")
-      
-          heard = false
-          assert_equal(callback, @observable.remove_listener(:property, callback), "remove_listener should return the callback")
-      
-          count = 1
-          @observable.instance_eval do
-            count = notify_listeners(:property)
-          end
-          assert_equal(0, count, "notify_listeners should have returned the number of listeners that were notified")
-          assert(!heard, "Should not have heard the property change")
-        end
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/testunit/util/test_procwrapper.rb b/ruby/doc/ruby/ruby-1.8.7/test/testunit/util/test_procwrapper.rb
deleted file mode 100644 (file)
index 3e552c7..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-# Author:: Nathaniel Talbott.
-# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
-# License:: Ruby license.
-
-require 'test/unit'
-require 'test/unit/util/procwrapper'
-
-module Test
-  module Unit
-    module Util
-      class TC_ProcWrapper < TestCase
-        def munge_proc(&a_proc)
-          return a_proc
-        end
-        def setup
-          @original = proc {}
-          @munged = munge_proc(&@original)
-          @wrapped_original = ProcWrapper.new(@original)
-          @wrapped_munged = ProcWrapper.new(@munged)
-        end
-        def test_wrapping
-          assert_same(@original, @wrapped_original.to_proc, "The wrapper should return what was wrapped")
-        end
-        def test_hashing
-      
-          assert_equal(@wrapped_original.hash, @wrapped_munged.hash, "The original and munged should have the same hash when wrapped")
-          assert_equal(@wrapped_original, @wrapped_munged, "The wrappers should be equivalent")
-          
-          a_hash = {@wrapped_original => @original}
-          assert(a_hash[@wrapped_original], "Should be able to access the wrapper in the hash")
-          assert_equal(a_hash[@wrapped_original], @original, "Should be able to access the wrapper in the hash")
-        end
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/thread/lbtest.rb b/ruby/doc/ruby/ruby-1.8.7/test/thread/lbtest.rb
deleted file mode 100644 (file)
index 10bb901..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#! /usr/bin/ruby
-require 'thread'
-
-class LocalBarrier
-  def initialize(n)
-    @wait = Queue.new
-    @done = Queue.new
-    @keeper = begin_keeper(n)
-  end
-
-  def sync
-    @done.push(true)
-    @wait.pop
-  end
-
-  def join
-    @keeper.join
-  end
-
-  private
-  def begin_keeper(n)
-    Thread.start do
-      n.times do
-        @done.pop
-      end
-      n.times do
-        @wait.push(true)
-      end
-    end
-  end
-end
-
-n = 10
-
-lb = LocalBarrier.new(n)
-
-(n - 1).times do |i|
-  Thread.start do
-    sleep((rand(n) + 1) / 10.0)
-    puts "#{i}: done"
-    lb.sync
-    puts "#{i}: cont"
-  end
-end
-
-lb.sync
-puts "#{n-1}: done"
-
-# lb.join # leaving waiting threads.
-
-puts "exit."
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/thread/test_thread.rb b/ruby/doc/ruby/ruby-1.8.7/test/thread/test_thread.rb
deleted file mode 100644 (file)
index 44ae3b3..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-# -*- ruby-indent-level: 4 -*-
-require 'thread'
-require 'test/unit'
-
-class TC_Thread < Test::Unit::TestCase
-    def setup
-       Thread.abort_on_exception = true
-    end
-    def teardown
-       Thread.abort_on_exception = false
-    end
-    def test_condvar
-       mutex = Mutex.new
-       condvar = ConditionVariable.new
-       result = []
-       mutex.synchronize do
-           t = Thread.new do
-               mutex.synchronize do
-                   result << 1
-                   condvar.signal
-               end
-           end
-       
-           result << 0
-           condvar.wait(mutex)
-           result << 2
-           t.join
-       end
-       assert_equal([0, 1, 2], result)
-    end
-
-    def test_condvar_wait_not_owner
-       mutex = Mutex.new
-       condvar = ConditionVariable.new
-
-       assert_raises(ThreadError) { condvar.wait(mutex) }
-    end
-
-    def test_condvar_wait_exception_handling
-       # Calling wait in the only thread running should raise a ThreadError of
-       # 'stopping only thread'
-       mutex = Mutex.new
-       condvar = ConditionVariable.new
-
-       Thread.abort_on_exception = false
-
-       locked = false
-       thread = Thread.new do
-           mutex.synchronize do
-               begin
-                   condvar.wait(mutex)
-               rescue Exception
-                   locked = mutex.locked?
-                   raise
-               end
-           end
-       end
-
-       while !thread.stop?
-           sleep(0.1)
-       end
-
-       thread.raise Interrupt, "interrupt a dead condition variable"
-       assert_raises(Interrupt) { thread.value }
-       assert(locked)
-    end
-
-    def test_local_barrier
-        dir = File.dirname(__FILE__)
-        lbtest = File.join(dir, "lbtest.rb")
-        $:.unshift File.join(File.dirname(dir), 'ruby')
-        require 'envutil'
-        $:.shift
-        10.times {
-            result = `#{EnvUtil.rubybin} #{lbtest}`
-            assert(!$?.coredump?, '[ruby-dev:30653]')
-            assert_equal("exit.", result[/.*\Z/], '[ruby-dev:30653]')
-        }
-    end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/uri/test_common.rb b/ruby/doc/ruby/ruby-1.8.7/test/uri/test_common.rb
deleted file mode 100644 (file)
index 0fe031b..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-require 'test/unit'
-require 'uri'
-
-module URI
-
-
-class TestCommon < Test::Unit::TestCase
-  def setup
-  end
-
-  def teardown
-  end
-
-  def test_extract
-    assert_equal(['http://example.com'], 
-                URI.extract('http://example.com'))
-    assert_equal(['http://example.com'], 
-                URI.extract('(http://example.com)'))
-    assert_equal(['http://example.com/foo)'], 
-                URI.extract('(http://example.com/foo)'))
-    assert_equal(['http://example.jphttp://example.jp'], 
-                URI.extract('http://example.jphttp://example.jp'), "[ruby-list:36086]")
-    assert_equal(['http://example.jphttp://example.jp'], 
-                URI.extract('http://example.jphttp://example.jp', ['http']), "[ruby-list:36086]")
-    assert_equal(['http://', 'mailto:'].sort, 
-                URI.extract('ftp:// http:// mailto: https://', ['http', 'mailto']).sort)
-    # reported by Doug Kearns <djkea2@mugca.its.monash.edu.au>
-    assert_equal(['From:', 'mailto:xxx@xxx.xxx.xxx]'].sort, 
-                URI.extract('From: XXX [mailto:xxx@xxx.xxx.xxx]').sort)
-  end
-
-  def test_regexp
-    assert_instance_of Regexp, URI.regexp
-    assert_instance_of Regexp, URI.regexp(['http'])
-    assert_equal URI.regexp, URI.regexp
-    assert_equal 'http://', 'x http:// x'.slice(URI.regexp)
-    assert_equal 'http://', 'x http:// x'.slice(URI.regexp(['http']))
-    assert_equal 'http://', 'x http:// x ftp://'.slice(URI.regexp(['http']))
-    assert_equal nil, 'http://'.slice(URI.regexp([]))
-    assert_equal nil, ''.slice(URI.regexp)
-    assert_equal nil, 'xxxx'.slice(URI.regexp)
-    assert_equal nil, ':'.slice(URI.regexp)
-    assert_equal 'From:', 'From:'.slice(URI.regexp)
-  end
-
-  def test_kernel_uri
-    expected = URI.parse("http://www.ruby-lang.org/")
-    assert_equal(expected, URI("http://www.ruby-lang.org/"))
-    assert_equal(expected, Kernel::URI("http://www.ruby-lang.org/"))
-    assert_raise(NoMethodError) { Object.new.URI("http://www.ruby-lang.org/") }
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/uri/test_ftp.rb b/ruby/doc/ruby/ruby-1.8.7/test/uri/test_ftp.rb
deleted file mode 100644 (file)
index 10abd29..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-require 'test/unit'
-require 'uri/ftp'
-
-module URI
-
-
-class TestFTP < Test::Unit::TestCase
-  def setup
-  end
-
-  def test_parse
-    url = URI.parse('ftp://user:pass@host.com/abc/def')
-    assert_kind_of(URI::FTP, url)
-
-    exp = [
-      'ftp',
-      'user:pass', 'host.com', URI::FTP.default_port, 
-      'abc/def', nil,
-    ]
-    ary = [
-      url.scheme, url.userinfo, url.host, url.port,
-      url.path, url.opaque
-    ]
-    assert_equal(exp, ary)
-
-    assert_equal('user', url.user)
-    assert_equal('pass', url.password)
-  end
-
-  def test_paths
-    # If you think what's below is wrong, please read RubyForge bug 2055, 
-    # RFC 1738 section 3.2.2, and RFC 2396.
-    u = URI.parse('ftp://ftp.example.com/foo/bar/file.ext')
-    assert_equal(u.path, 'foo/bar/file.ext')
-    u = URI.parse('ftp://ftp.example.com//foo/bar/file.ext')
-    assert_equal(u.path, '/foo/bar/file.ext')
-    u = URI.parse('ftp://ftp.example.com/%2Ffoo/bar/file.ext')
-    assert_equal(u.path, '/foo/bar/file.ext')
-  end
-
-  def test_assemble
-    # uri/ftp is conservative and uses the older RFC 1738 rules, rather than
-    # assuming everyone else has implemented RFC 2396.
-    uri = URI::FTP.build(['user:password', 'ftp.example.com', nil, 
-                         '/path/file.zip', 'i'])
-    assert_equal(uri.to_s,
-           'ftp://user:password@ftp.example.com/%2Fpath/file.zip;type=i')
-  end
-
-  def test_select
-    assert_equal(['ftp', 'a.b.c', 21], URI.parse('ftp://a.b.c/').select(:scheme, :host, :port))
-    u = URI.parse('ftp://a.b.c/')
-    ary = u.component.collect {|c| u.send(c)}
-    assert_equal(ary, u.select(*u.component))
-    assert_raises(ArgumentError) do
-      u.select(:scheme, :host, :not_exist, :port)
-    end
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/uri/test_generic.rb b/ruby/doc/ruby/ruby-1.8.7/test/uri/test_generic.rb
deleted file mode 100644 (file)
index 5cd4c7f..0000000
+++ /dev/null
@@ -1,704 +0,0 @@
-require 'test/unit'
-require 'uri'
-
-module URI
-
-
-class TestGeneric < Test::Unit::TestCase
-  def setup
-    @url = 'http://a/b/c/d;p?q'
-    @base_url = URI.parse(@url)
-  end
-
-  def teardown
-  end
-
-  def uri_to_ary(uri)
-    uri.class.component.collect {|c| uri.send(c)}
-  end
-
-  def test_parse
-    # 0
-    assert_kind_of(URI::HTTP, @base_url)
-
-    exp = [
-      'http', 
-      nil, 'a', URI::HTTP.default_port, 
-      '/b/c/d;p', 
-      'q',
-      nil
-    ]
-    ary = uri_to_ary(@base_url)
-    assert_equal(exp, ary)
-
-    # 1
-    url = URI.parse('ftp://ftp.is.co.za/rfc/rfc1808.txt')
-    assert_kind_of(URI::FTP, url)
-
-    exp = [
-      'ftp', 
-      nil, 'ftp.is.co.za', URI::FTP.default_port, 
-      'rfc/rfc1808.txt', nil,
-    ]
-    ary = uri_to_ary(url)
-    assert_equal(exp, ary)
-    # 1'
-    url = URI.parse('ftp://ftp.is.co.za/%2Frfc/rfc1808.txt')
-    assert_kind_of(URI::FTP, url)
-
-    exp = [
-      'ftp', 
-      nil, 'ftp.is.co.za', URI::FTP.default_port, 
-      '/rfc/rfc1808.txt', nil,
-    ]
-    ary = uri_to_ary(url)
-    assert_equal(exp, ary)
-
-    # 2
-    url = URI.parse('gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles')
-    assert_kind_of(URI::Generic, url)
-
-    exp = [
-      'gopher', 
-      nil, 'spinaltap.micro.umn.edu', nil, nil,
-      '/00/Weather/California/Los%20Angeles', nil,
-      nil,
-      nil
-    ]
-    ary = uri_to_ary(url)
-    assert_equal(exp, ary)
-
-    # 3
-    url = URI.parse('http://www.math.uio.no/faq/compression-faq/part1.html')
-    assert_kind_of(URI::HTTP, url)
-
-    exp = [
-      'http', 
-      nil, 'www.math.uio.no', URI::HTTP.default_port, 
-      '/faq/compression-faq/part1.html', 
-      nil,
-      nil
-    ]
-    ary = uri_to_ary(url)
-    assert_equal(exp, ary)
-
-    # 4
-    url = URI.parse('mailto:mduerst@ifi.unizh.ch')
-    assert_kind_of(URI::Generic, url)
-
-    exp = [
-      'mailto', 
-      'mduerst@ifi.unizh.ch',
-      []
-    ]
-    ary = uri_to_ary(url)
-    assert_equal(exp, ary)
-
-    # 5
-    url = URI.parse('news:comp.infosystems.www.servers.unix')
-    assert_kind_of(URI::Generic, url)
-
-    exp = [
-      'news', 
-      nil, nil, nil, nil, 
-      nil, 'comp.infosystems.www.servers.unix',
-      nil,
-      nil
-    ]
-    ary = uri_to_ary(url)
-    assert_equal(exp, ary)
-
-    # 6
-    url = URI.parse('telnet://melvyl.ucop.edu/')
-    assert_kind_of(URI::Generic, url)
-
-    exp = [
-      'telnet', 
-      nil, 'melvyl.ucop.edu', nil, nil, 
-      '/', nil,
-      nil,
-      nil
-    ]
-    ary = uri_to_ary(url)
-    assert_equal(exp, ary)
-
-    # 7
-    # reported by Mr. Kubota <em6t-kbt@asahi-net.or.jp>
-    assert_raises(URI::InvalidURIError) { URI.parse('http://a_b:80/') }
-    assert_raises(URI::InvalidURIError) { URI.parse('http://a_b/') }
-
-    # 8
-    # reported by m_seki
-    uri = URI.parse('file:///foo/bar.txt')
-    assert_kind_of(URI::Generic, url)
-    uri = URI.parse('file:/foo/bar.txt')
-    assert_kind_of(URI::Generic, url)
-
-    # 9
-    url = URI.parse('ftp://:pass@localhost/')
-    assert_equal('', url.user, "[ruby-dev:25667]")
-    assert_equal('pass', url.password)
-    assert_equal(':pass', url.userinfo, "[ruby-dev:25667]")
-    url = URI.parse('ftp://user@localhost/')
-    assert_equal('user', url.user)
-    assert_equal(nil, url.password)
-    assert_equal('user', url.userinfo)
-    url = URI.parse('ftp://localhost/')
-    assert_equal(nil, url.user)
-    assert_equal(nil, url.password)
-    assert_equal(nil, url.userinfo)
-  end
-
-  def test_merge
-    u1 = URI.parse('http://foo')
-    u2 = URI.parse('http://foo/')
-    u3 = URI.parse('http://foo/bar')
-    u4 = URI.parse('http://foo/bar/')
-
-    assert_equal(URI.parse('http://foo/baz'), u1 + 'baz')
-    assert_equal(URI.parse('http://foo/baz'), u2 + 'baz')
-    assert_equal(URI.parse('http://foo/baz'), u3 + 'baz')
-    assert_equal(URI.parse('http://foo/bar/baz'), u4 + 'baz')
-
-    assert_equal(URI.parse('http://foo/baz'), u1 + '/baz')
-    assert_equal(URI.parse('http://foo/baz'), u2 + '/baz')
-    assert_equal(URI.parse('http://foo/baz'), u3 + '/baz')
-    assert_equal(URI.parse('http://foo/baz'), u4 + '/baz')
-
-    url = URI.parse('http://hoge/a.html') + 'b.html'
-    assert_equal('http://hoge/b.html', url.to_s, "[ruby-dev:11508]")
-
-    # reported by Mr. Kubota <em6t-kbt@asahi-net.or.jp>
-    url = URI.parse('http://a/b') + 'http://x/y'
-    assert_equal('http://x/y', url.to_s)
-    assert_equal(url, URI.parse('')                     + 'http://x/y')
-    assert_equal(url, URI.parse('').normalize           + 'http://x/y')
-    assert_equal(url, URI.parse('http://a/b').normalize + 'http://x/y')
-
-    u = URI.parse('http://foo/bar/baz')
-    assert_equal(nil, u.merge!(""))
-    assert_equal(nil, u.merge!(u))
-    assert(nil != u.merge!("."))
-    assert_equal('http://foo/bar/', u.to_s)
-    assert(nil != u.merge!("../baz"))
-    assert_equal('http://foo/baz', u.to_s)
-
-    u0 = URI.parse('mailto:foo@example.com')
-    u1 = URI.parse('mailto:foo@example.com#bar')
-    assert_equal(uri_to_ary(u0 + '#bar'), uri_to_ary(u1), "[ruby-dev:23628]")
-
-    u0 = URI.parse('http://www.example.com/')
-    u1 = URI.parse('http://www.example.com/foo/..') + './'
-    assert_equal(u0, u1, "[ruby-list:39838]")
-    u0 = URI.parse('http://www.example.com/foo/')
-    u1 = URI.parse('http://www.example.com/foo/bar/..') + './'
-    assert_equal(u0, u1)
-    u0 = URI.parse('http://www.example.com/foo/bar/')
-    u1 = URI.parse('http://www.example.com/foo/bar/baz/..') + './'
-    assert_equal(u0, u1)
-    u0 = URI.parse('http://www.example.com/')
-    u1 = URI.parse('http://www.example.com/foo/bar/../..') + './'
-    assert_equal(u0, u1)
-    u0 = URI.parse('http://www.example.com/foo/')
-    u1 = URI.parse('http://www.example.com/foo/bar/baz/../..') + './'
-    assert_equal(u0, u1)
-
-    u = URI.parse('http://www.example.com/')
-    u0 = u + './foo/'
-    u1 = u + './foo/bar/..'
-    assert_equal(u0, u1, "[ruby-list:39844]")
-    u = URI.parse('http://www.example.com/')
-    u0 = u + './'
-    u1 = u + './foo/bar/../..'
-    assert_equal(u0, u1)
-  end
-
-  def test_route
-    url = URI.parse('http://hoge/a.html').route_to('http://hoge/b.html')
-    assert_equal('b.html', url.to_s)
-
-    url = URI.parse('http://hoge/a/').route_to('http://hoge/b/')
-    assert_equal('../b/', url.to_s)
-    url = URI.parse('http://hoge/a/b').route_to('http://hoge/b/')
-    assert_equal('../b/', url.to_s)
-
-    url = URI.parse('http://hoge/a/b/').route_to('http://hoge/b/')
-    assert_equal('../../b/', url.to_s)
-
-    url = URI.parse('http://hoge/a/b/').route_to('http://HOGE/b/')
-    assert_equal('../../b/', url.to_s)
-
-    url = URI.parse('http://hoge/a/b/').route_to('http://MOGE/b/')
-    assert_equal('//MOGE/b/', url.to_s)
-
-    url = URI.parse('file:///a/b/').route_to('file:///a/b/')
-    assert_equal('', url.to_s)
-
-    url = URI.parse('mailto:foo@example.com').route_to('mailto:foo@example.com#bar')
-    assert_equal('#bar', url.to_s)
-
-    url = URI.parse('mailto:foo@example.com#bar').route_to('mailto:foo@example.com')
-    assert_equal('', url.to_s)
-
-    url = URI.parse('mailto:foo@example.com').route_to('mailto:foo@example.com')
-    assert_equal('', url.to_s)
-  end
-
-  def test_rfc3986_examples
-#  http://a/b/c/d;p?q
-#        g:h           =  g:h
-    url = @base_url.merge('g:h')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g:h', url.to_s)
-    url = @base_url.route_to('g:h')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g:h', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g             =  http://a/b/c/g
-    url = @base_url.merge('g')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        ./g           =  http://a/b/c/g
-    url = @base_url.merge('./g')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g')
-    assert_kind_of(URI::Generic, url)
-    assert('./g' != url.to_s) # ok
-    assert_equal('g', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g/            =  http://a/b/c/g/
-    url = @base_url.merge('g/')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g/', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g/')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g/', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        /g            =  http://a/g
-    url = @base_url.merge('/g')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/g', url.to_s)
-    url = @base_url.route_to('http://a/g')
-    assert_kind_of(URI::Generic, url)
-    assert('/g' != url.to_s) # ok
-    assert_equal('../../g', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        //g           =  http://g
-    url = @base_url.merge('//g')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://g', url.to_s)
-    url = @base_url.route_to('http://g')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('//g', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        ?y            =  http://a/b/c/d;p?y
-    url = @base_url.merge('?y')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/d;p?y', url.to_s)
-    url = @base_url.route_to('http://a/b/c/d;p?y')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('?y', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g?y           =  http://a/b/c/g?y
-    url = @base_url.merge('g?y')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g?y', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g?y')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g?y', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        #s            =  http://a/b/c/d;p?q#s
-    url = @base_url.merge('#s')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/d;p?q#s', url.to_s)
-    url = @base_url.route_to('http://a/b/c/d;p?q#s')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('#s', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g#s           =  http://a/b/c/g#s
-    url = @base_url.merge('g#s')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g#s', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g#s')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g#s', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g?y#s         =  http://a/b/c/g?y#s
-    url = @base_url.merge('g?y#s')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g?y#s', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g?y#s')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g?y#s', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        ;x            =  http://a/b/c/;x
-    url = @base_url.merge(';x')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/;x', url.to_s)
-    url = @base_url.route_to('http://a/b/c/;x')
-    assert_kind_of(URI::Generic, url)
-    assert_equal(';x', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g;x           =  http://a/b/c/g;x
-    url = @base_url.merge('g;x')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g;x', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g;x')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g;x', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g;x?y#s       =  http://a/b/c/g;x?y#s
-    url = @base_url.merge('g;x?y#s')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g;x?y#s', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g;x?y#s')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g;x?y#s', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        .             =  http://a/b/c/
-    url = @base_url.merge('.')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/', url.to_s)
-    url = @base_url.route_to('http://a/b/c/')
-    assert_kind_of(URI::Generic, url)
-    assert('.' != url.to_s) # ok
-    assert_equal('./', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        ./            =  http://a/b/c/
-    url = @base_url.merge('./')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/', url.to_s)
-    url = @base_url.route_to('http://a/b/c/')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('./', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        ..            =  http://a/b/
-    url = @base_url.merge('..')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/', url.to_s)
-    url = @base_url.route_to('http://a/b/')
-    assert_kind_of(URI::Generic, url)
-    assert('..' != url.to_s) # ok
-    assert_equal('../', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        ../           =  http://a/b/
-    url = @base_url.merge('../')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/', url.to_s)
-    url = @base_url.route_to('http://a/b/')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('../', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        ../g          =  http://a/b/g
-    url = @base_url.merge('../g')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/g', url.to_s)
-    url = @base_url.route_to('http://a/b/g')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('../g', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        ../..         =  http://a/
-    url = @base_url.merge('../..')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/', url.to_s)
-    url = @base_url.route_to('http://a/')
-    assert_kind_of(URI::Generic, url)
-    assert('../..' != url.to_s) # ok
-    assert_equal('../../', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        ../../        =  http://a/
-    url = @base_url.merge('../../')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/', url.to_s)
-    url = @base_url.route_to('http://a/')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('../../', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        ../../g       =  http://a/g
-    url = @base_url.merge('../../g')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/g', url.to_s)
-    url = @base_url.route_to('http://a/g')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('../../g', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        <>            =  (current document)
-    url = @base_url.merge('')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/d;p?q', url.to_s)
-    url = @base_url.route_to('http://a/b/c/d;p?q')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        /./g          =  http://a/g
-    url = @base_url.merge('/./g')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/g', url.to_s)
-#    url = @base_url.route_to('http://a/./g')
-#    assert_kind_of(URI::Generic, url)
-#    assert_equal('/./g', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        /../g         =  http://a/g
-    url = @base_url.merge('/../g')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/g', url.to_s)
-#    url = @base_url.route_to('http://a/../g')
-#    assert_kind_of(URI::Generic, url)
-#    assert_equal('/../g', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g.            =  http://a/b/c/g.
-    url = @base_url.merge('g.')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g.', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g.')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g.', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        .g            =  http://a/b/c/.g
-    url = @base_url.merge('.g')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/.g', url.to_s)
-    url = @base_url.route_to('http://a/b/c/.g')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('.g', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g..           =  http://a/b/c/g..
-    url = @base_url.merge('g..')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g..', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g..')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g..', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        ..g           =  http://a/b/c/..g
-    url = @base_url.merge('..g')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/..g', url.to_s)
-    url = @base_url.route_to('http://a/b/c/..g')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('..g', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        ../../../g    =  http://a/g
-    url = @base_url.merge('../../../g')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/g', url.to_s)
-    url = @base_url.route_to('http://a/g')
-    assert_kind_of(URI::Generic, url)
-    assert('../../../g' != url.to_s)  # ok? yes, it confuses you
-    assert_equal('../../g', url.to_s) # and it is clearly
-
-#  http://a/b/c/d;p?q
-#        ../../../../g =  http://a/g
-    url = @base_url.merge('../../../../g')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/g', url.to_s)
-    url = @base_url.route_to('http://a/g')
-    assert_kind_of(URI::Generic, url)
-    assert('../../../../g' != url.to_s) # ok? yes, it confuses you
-    assert_equal('../../g', url.to_s)   # and it is clearly
-
-#  http://a/b/c/d;p?q
-#        ./../g        =  http://a/b/g
-    url = @base_url.merge('./../g')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/g', url.to_s)
-    url = @base_url.route_to('http://a/b/g')
-    assert_kind_of(URI::Generic, url)
-    assert('./../g' != url.to_s) # ok
-    assert_equal('../g', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        ./g/.         =  http://a/b/c/g/
-    url = @base_url.merge('./g/.')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g/', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g/')
-    assert_kind_of(URI::Generic, url)
-    assert('./g/.' != url.to_s) # ok
-    assert_equal('g/', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g/./h         =  http://a/b/c/g/h
-    url = @base_url.merge('g/./h')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g/h', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g/h')
-    assert_kind_of(URI::Generic, url)
-    assert('g/./h' != url.to_s) # ok
-    assert_equal('g/h', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g/../h        =  http://a/b/c/h
-    url = @base_url.merge('g/../h')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/h', url.to_s)
-    url = @base_url.route_to('http://a/b/c/h')
-    assert_kind_of(URI::Generic, url)
-    assert('g/../h' != url.to_s) # ok
-    assert_equal('h', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g;x=1/./y     =  http://a/b/c/g;x=1/y
-    url = @base_url.merge('g;x=1/./y')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g;x=1/y', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g;x=1/y')
-    assert_kind_of(URI::Generic, url)
-    assert('g;x=1/./y' != url.to_s) # ok
-    assert_equal('g;x=1/y', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g;x=1/../y    =  http://a/b/c/y
-    url = @base_url.merge('g;x=1/../y')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/y', url.to_s)
-    url = @base_url.route_to('http://a/b/c/y')
-    assert_kind_of(URI::Generic, url)
-    assert('g;x=1/../y' != url.to_s) # ok
-    assert_equal('y', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g?y/./x       =  http://a/b/c/g?y/./x
-    url = @base_url.merge('g?y/./x')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g?y/./x', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g?y/./x')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g?y/./x', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g?y/../x      =  http://a/b/c/g?y/../x
-    url = @base_url.merge('g?y/../x')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g?y/../x', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g?y/../x')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g?y/../x', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g#s/./x       =  http://a/b/c/g#s/./x
-    url = @base_url.merge('g#s/./x')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g#s/./x', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g#s/./x')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g#s/./x', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        g#s/../x      =  http://a/b/c/g#s/../x
-    url = @base_url.merge('g#s/../x')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http://a/b/c/g#s/../x', url.to_s)
-    url = @base_url.route_to('http://a/b/c/g#s/../x')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('g#s/../x', url.to_s)
-
-#  http://a/b/c/d;p?q
-#        http:g        =  http:g           ; for validating parsers
-#                      |  http://a/b/c/g   ; for backwards compatibility
-    url = @base_url.merge('http:g')
-    assert_kind_of(URI::HTTP, url)
-    assert_equal('http:g', url.to_s)
-    url = @base_url.route_to('http:g')
-    assert_kind_of(URI::Generic, url)
-    assert_equal('http:g', url.to_s)
-  end
-
-  def test_join
-    assert_equal(URI.parse('http://foo/bar'), URI.join('http://foo/bar'))
-    assert_equal(URI.parse('http://foo/bar'), URI.join('http://foo', 'bar'))
-    assert_equal(URI.parse('http://foo/bar/'), URI.join('http://foo', 'bar/'))
-
-    assert_equal(URI.parse('http://foo/baz'), URI.join('http://foo', 'bar', 'baz'))
-    assert_equal(URI.parse('http://foo/baz'), URI.join('http://foo', 'bar', '/baz'))
-    assert_equal(URI.parse('http://foo/baz/'), URI.join('http://foo', 'bar', '/baz/'))
-    assert_equal(URI.parse('http://foo/bar/baz'), URI.join('http://foo', 'bar/', 'baz'))
-    assert_equal(URI.parse('http://foo/hoge'), URI.join('http://foo', 'bar', 'baz', 'hoge'))
-
-    assert_equal(URI.parse('http://foo/bar/baz'), URI.join('http://foo', 'bar/baz'))
-    assert_equal(URI.parse('http://foo/bar/hoge'), URI.join('http://foo', 'bar/baz', 'hoge'))
-    assert_equal(URI.parse('http://foo/bar/baz/hoge'), URI.join('http://foo', 'bar/baz/', 'hoge'))
-    assert_equal(URI.parse('http://foo/hoge'), URI.join('http://foo', 'bar/baz', '/hoge'))
-    assert_equal(URI.parse('http://foo/bar/hoge'), URI.join('http://foo', 'bar/baz', 'hoge'))
-    assert_equal(URI.parse('http://foo/bar/baz/hoge'), URI.join('http://foo', 'bar/baz/', 'hoge'))
-    assert_equal(URI.parse('http://foo/hoge'), URI.join('http://foo', 'bar/baz', '/hoge'))
-  end
-
-  # ruby-dev:16728
-  def test_set_component
-    uri = URI.parse('http://foo:bar@baz')
-    assert_equal('oof', uri.user = 'oof')
-    assert_equal('http://oof:bar@baz', uri.to_s)
-    assert_equal('rab', uri.password = 'rab')
-    assert_equal('http://oof:rab@baz', uri.to_s)
-    assert_equal('foo', uri.userinfo = 'foo')
-    assert_equal('http://foo:rab@baz', uri.to_s)
-    assert_equal(['foo', 'bar'], uri.userinfo = ['foo', 'bar'])
-    assert_equal('http://foo:bar@baz', uri.to_s)
-    assert_equal(['foo'], uri.userinfo = ['foo'])
-    assert_equal('http://foo:bar@baz', uri.to_s)
-    assert_equal('zab', uri.host = 'zab')
-    assert_equal('http://foo:bar@zab', uri.to_s)
-    assert_equal(8080, uri.port = 8080)
-    assert_equal('http://foo:bar@zab:8080', uri.to_s)
-    assert_equal('/', uri.path = '/')
-    assert_equal('http://foo:bar@zab:8080/', uri.to_s)
-    assert_equal('a=1', uri.query = 'a=1')
-    assert_equal('http://foo:bar@zab:8080/?a=1', uri.to_s)
-    assert_equal('b123', uri.fragment = 'b123')
-    assert_equal('http://foo:bar@zab:8080/?a=1#b123', uri.to_s)
-
-    uri = URI.parse('http://example.com')
-    assert_raises(URI::InvalidURIError) { uri.password = 'bar' }
-    uri.userinfo = 'foo:bar'
-    assert_equal('http://foo:bar@example.com', uri.to_s)
-    assert_raises(URI::InvalidURIError) { uri.registry = 'bar' }
-    assert_raises(URI::InvalidURIError) { uri.opaque = 'bar' }
-
-    uri = URI.parse('mailto:foo@example.com')
-    assert_raises(URI::InvalidURIError) { uri.user = 'bar' }
-    assert_raises(URI::InvalidURIError) { uri.password = 'bar' }
-    assert_raises(URI::InvalidURIError) { uri.userinfo = ['bar', 'baz'] }
-    assert_raises(URI::InvalidURIError) { uri.host = 'bar' }
-    assert_raises(URI::InvalidURIError) { uri.port = 'bar' }
-    assert_raises(URI::InvalidURIError) { uri.path = 'bar' }
-    assert_raises(URI::InvalidURIError) { uri.query = 'bar' }
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/uri/test_http.rb b/ruby/doc/ruby/ruby-1.8.7/test/uri/test_http.rb
deleted file mode 100644 (file)
index a684614..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-require 'test/unit'
-require 'uri/http'
-
-module URI
-
-
-class TestHTTP < Test::Unit::TestCase
-  def setup
-  end
-
-  def teardown
-  end
-
-  def uri_to_ary(uri)
-    uri.class.component.collect {|c| uri.send(c)}
-  end
-
-  def test_parse
-    u = URI.parse('http://a')
-    assert_kind_of(URI::HTTP, u)
-    assert_equal(['http', 
-                  nil, 'a', URI::HTTP.default_port,
-                  '', nil, nil], uri_to_ary(u))
-  end
-
-  def test_normalize
-    host = 'aBcD'
-    u1 = URI.parse('http://' + host          + '/eFg?HiJ')
-    u2 = URI.parse('http://' + host.downcase + '/eFg?HiJ')
-    assert(u1.normalize.host == 'abcd')
-    assert(u1.normalize.path == u1.path)
-    assert(u1.normalize == u2.normalize)
-    assert(!u1.normalize.host.equal?(u1.host))
-    assert( u2.normalize.host.equal?(u2.host))
-
-    assert_equal('http://abc/', URI.parse('http://abc').normalize.to_s)
-  end
-
-  def test_equal
-    assert(URI.parse('http://abc') == URI.parse('http://ABC'))
-    assert(URI.parse('http://abc/def') == URI.parse('http://ABC/def'))
-    assert(URI.parse('http://abc/def') != URI.parse('http://ABC/DEF'))
-  end
-
-  def test_request_uri
-    assert_equal('/',         URI.parse('http://a.b.c/').request_uri)
-    assert_equal('/?abc=def', URI.parse('http://a.b.c/?abc=def').request_uri)
-    assert_equal('/',         URI.parse('http://a.b.c').request_uri)
-    assert_equal('/?abc=def', URI.parse('http://a.b.c?abc=def').request_uri)
-  end
-
-  def test_select
-    assert_equal(['http', 'a.b.c', 80], URI.parse('http://a.b.c/').select(:scheme, :host, :port))
-    u = URI.parse('http://a.b.c/')
-    assert_equal(uri_to_ary(u), u.select(*u.component))
-    assert_raises(ArgumentError) do
-      u.select(:scheme, :host, :not_exist, :port)
-    end
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/uri/test_ldap.rb b/ruby/doc/ruby/ruby-1.8.7/test/uri/test_ldap.rb
deleted file mode 100644 (file)
index 866b7d8..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-require 'test/unit'
-require 'uri/ldap'
-
-module URI
-
-
-class TestLDAP < Test::Unit::TestCase
-  def setup
-  end
-
-  def teardown
-  end
-
-  def uri_to_ary(uri)
-    uri.class.component.collect {|c| uri.send(c)}
-  end
-
-  def test_parse
-    url = 'ldap://ldap.jaist.ac.jp/o=JAIST,c=JP?sn?base?(sn=ttate*)'
-    u = URI.parse(url)
-    assert_kind_of(URI::LDAP, u)
-    assert_equal(url, u.to_s)
-    assert_equal('o=JAIST,c=JP', u.dn)
-    assert_equal('sn', u.attributes)
-    assert_equal('base', u.scope)
-    assert_equal('(sn=ttate*)', u.filter)
-    assert_equal(nil, u.extensions)
-
-    u.scope = URI::LDAP::SCOPE_SUB
-    u.attributes = 'sn,cn,mail'
-    assert_equal('ldap://ldap.jaist.ac.jp/o=JAIST,c=JP?sn,cn,mail?sub?(sn=ttate*)', u.to_s)
-    assert_equal('o=JAIST,c=JP', u.dn)
-    assert_equal('sn,cn,mail', u.attributes)
-    assert_equal('sub', u.scope)
-    assert_equal('(sn=ttate*)', u.filter)
-    assert_equal(nil, u.extensions)
-
-    # from RFC2255, section 6.
-    urls = {
-      'ldap:///o=University%20of%20Michigan,c=US' =>
-      ['ldap', nil, URI::LDAP::DEFAULT_PORT, 
-       'o=University%20of%20Michigan,c=US', 
-       nil, nil, nil, nil],
-
-      'ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US' =>
-      ['ldap', 'ldap.itd.umich.edu', URI::LDAP::DEFAULT_PORT, 
-       'o=University%20of%20Michigan,c=US', 
-       nil, nil, nil, nil],
-
-      'ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US?postalAddress' =>
-      ['ldap', 'ldap.itd.umich.edu', URI::LDAP::DEFAULT_PORT, 
-       'o=University%20of%20Michigan,c=US',
-       'postalAddress', nil, nil, nil],
-
-      'ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen)' =>
-      ['ldap', 'host.com', 6666, 
-       'o=University%20of%20Michigan,c=US',
-       nil, 'sub', '(cn=Babs%20Jensen)', nil],
-
-      'ldap://ldap.itd.umich.edu/c=GB?objectClass?one' =>
-      ['ldap', 'ldap.itd.umich.edu', URI::LDAP::DEFAULT_PORT, 
-       'c=GB', 
-       'objectClass', 'one', nil, nil],
-
-      'ldap://ldap.question.com/o=Question%3f,c=US?mail' =>
-      ['ldap', 'ldap.question.com', URI::LDAP::DEFAULT_PORT, 
-       'o=Question%3f,c=US',
-       'mail', nil, nil, nil],
-
-      'ldap://ldap.netscape.com/o=Babsco,c=US??(int=%5c00%5c00%5c00%5c04)' =>
-      ['ldap', 'ldap.netscape.com', URI::LDAP::DEFAULT_PORT, 
-       'o=Babsco,c=US',
-       nil, '(int=%5c00%5c00%5c00%5c04)', nil, nil],
-
-      'ldap:///??sub??bindname=cn=Manager%2co=Foo' =>
-      ['ldap', nil, URI::LDAP::DEFAULT_PORT, 
-       '',
-       nil, 'sub', nil, 'bindname=cn=Manager%2co=Foo'],
-
-      'ldap:///??sub??!bindname=cn=Manager%2co=Foo' =>
-      ['ldap', nil, URI::LDAP::DEFAULT_PORT, 
-       '',
-       nil, 'sub', nil, '!bindname=cn=Manager%2co=Foo'],
-    }.each do |url, ary|
-      u = URI.parse(url)
-      assert_equal(ary, uri_to_ary(u))
-    end
-  end
-
-  def test_select
-    u = URI.parse('ldap:///??sub??!bindname=cn=Manager%2co=Foo')
-    assert_equal(uri_to_ary(u), u.select(*u.component))
-    assert_raises(ArgumentError) do
-      u.select(:scheme, :host, :not_exist, :port)
-    end
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/uri/test_mailto.rb b/ruby/doc/ruby/ruby-1.8.7/test/uri/test_mailto.rb
deleted file mode 100644 (file)
index ba43790..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-require 'test/unit'
-require 'uri/mailto'
-
-module URI
-
-
-class TestMailTo < Test::Unit::TestCase
-  def setup
-    @u = URI::MailTo
-  end
-
-  def teardown
-  end
-
-  def uri_to_ary(uri)
-    uri.class.component.collect {|c| uri.send(c)}
-  end
-
-  def test_build
-    ok = []
-    bad = []
-
-    # RFC2368, 6. Examples
-    # mailto:chris@example.com
-    ok << ["mailto:chris@example.com"]
-    ok[-1] << ["chris@example.com", nil]
-    ok[-1] << {:to => "chris@example.com"}
-
-    # mailto:infobot@example.com?subject=current-issue
-    ok << ["mailto:infobot@example.com?subject=current-issue"]
-    ok[-1] << ["infobot@example.com", ["subject=current-issue"]]
-    ok[-1] << {:to => "infobot@example.com", 
-      :headers => ["subject=current-issue"]}
-
-    # mailto:infobot@example.com?body=send%20current-issue
-    ok << ["mailto:infobot@example.com?body=send%20current-issue"]
-    ok[-1] << ["infobot@example.com", ["body=send%20current-issue"]]
-    ok[-1] << {:to => "infobot@example.com", 
-      :headers => ["body=send%20current-issue"]}
-
-    # mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index
-    ok << ["mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index"]
-    ok[-1] << ["infobot@example.com", 
-      ["body=send%20current-issue%0D%0Asend%20index"]]
-    ok[-1] << {:to => "infobot@example.com", 
-      :headers => ["body=send%20current-issue%0D%0Asend%20index"]}
-
-    # mailto:foobar@example.com?In-Reply-To=%3c3469A91.D10AF4C@example.com
-    ok << ["mailto:foobar@example.com?In-Reply-To=%3c3469A91.D10AF4C@example.com"]
-    ok[-1] << ["foobar@example.com", 
-      ["In-Reply-To=%3c3469A91.D10AF4C@example.com"]]
-    ok[-1] << {:to => "foobar@example.com", 
-      :headers => ["In-Reply-To=%3c3469A91.D10AF4C@example.com"]}
-
-    # mailto:majordomo@example.com?body=subscribe%20bamboo-l
-    ok << ["mailto:majordomo@example.com?body=subscribe%20bamboo-l"]
-    ok[-1] << ["majordomo@example.com", ["body=subscribe%20bamboo-l"]]
-    ok[-1] << {:to => "majordomo@example.com", 
-      :headers => ["body=subscribe%20bamboo-l"]}
-
-    # mailto:joe@example.com?cc=bob@example.com&body=hello
-    ok << ["mailto:joe@example.com?cc=bob@example.com&body=hello"]
-    ok[-1] << ["joe@example.com", ["cc=bob@example.com", "body=hello"]]
-    ok[-1] << {:to => "joe@example.com", 
-      :headers => ["cc=bob@example.com", "body=hello"]}
-
-    # mailto:?to=joe@example.com&cc=bob@example.com&body=hello
-    ok << ["mailto:?to=joe@example.com&cc=bob@example.com&body=hello"]
-    ok[-1] << [nil, 
-      ["to=joe@example.com", "cc=bob@example.com", "body=hello"]]
-    ok[-1] << {:headers => ["to=joe@example.com", 
-       "cc=bob@example.com", "body=hello"]}
-
-    # mailto:gorby%25kremvax@example.com
-    ok << ["mailto:gorby%25kremvax@example.com"]
-    ok[-1] << ["gorby%25kremvax@example.com", nil]
-    ok[-1] << {:to => "gorby%25kremvax@example.com"}
-
-    # mailto:unlikely%3Faddress@example.com?blat=foop
-    ok << ["mailto:unlikely%3Faddress@example.com?blat=foop"]
-    ok[-1] << ["unlikely%3Faddress@example.com", ["blat=foop"]]
-    ok[-1] << {:to => "unlikely%3Faddress@example.com", 
-      :headers => ["blat=foop"]}
-
-    ok_all = ok.flatten.join("\0")
-
-    # mailto:joe@example.com?cc=bob@example.com?body=hello   ; WRONG!
-    bad << ["joe@example.com", ["cc=bob@example.com?body=hello"]]
-
-    # mailto:javascript:alert()
-    bad << ["javascript:alert()", []]
-
-    # '=' which is in hname or hvalue is wrong.
-    bad << ["foo@example.jp?subject=1+1=2", []]
-
-    ok.each do |x|
-      assert_equal(x[0],
-                  @u.build(x[1]).to_s)
-      assert_equal(x[0],
-                  @u.build(x[2]).to_s)
-    end
-
-    bad.each do |x|
-      assert_raises(URI::InvalidComponentError) {
-       @u.build(x)
-      }
-    end
-
-    assert_equal(ok_all, ok.flatten.join("\0"))
-  end
-
-  def test_select
-    u = URI.parse('mailto:joe@example.com?cc=bob@example.com&body=hello')
-    assert_equal(uri_to_ary(u), u.select(*u.component))
-    assert_raises(ArgumentError) do
-      u.select(:scheme, :host, :not_exist, :port)
-    end
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/webrick/.htaccess b/ruby/doc/ruby/ruby-1.8.7/test/webrick/.htaccess
deleted file mode 100644 (file)
index 69d4659..0000000
+++ /dev/null
@@ -1 +0,0 @@
-this file should not be published.
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_cgi.rb b/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_cgi.rb
deleted file mode 100644 (file)
index b39fe26..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-require "webrick"
-require File.join(File.dirname(__FILE__), "utils.rb")
-require "test/unit"
-
-class TestWEBrickCGI < Test::Unit::TestCase
-  def test_cgi
-    accepted = started = stopped = 0
-    requested0 = requested1 = 0
-    config = {
-      :CGIInterpreter => TestWEBrick::RubyBin,
-      :DocumentRoot => File.dirname(__FILE__),
-      :DirectoryIndex => ["webrick.cgi"],
-    }
-    if RUBY_PLATFORM =~ /mswin32|mingw|cygwin|bccwin32/
-      config[:CGIPathEnv] = ENV['PATH'] # runtime dll may not be in system dir.
-    end
-    TestWEBrick.start_httpserver(config){|server, addr, port|
-      http = Net::HTTP.new(addr, port)
-      req = Net::HTTP::Get.new("/webrick.cgi")
-      http.request(req){|res| assert_equal("/webrick.cgi", res.body)}
-      req = Net::HTTP::Get.new("/webrick.cgi/path/info")
-      http.request(req){|res| assert_equal("/path/info", res.body)}
-      req = Net::HTTP::Get.new("/webrick.cgi/%3F%3F%3F?foo=bar")
-      http.request(req){|res| assert_equal("/???", res.body)}
-      req = Net::HTTP::Get.new("/webrick.cgi/%A4%DB%A4%B2/%A4%DB%A4%B2")
-      http.request(req){|res|
-        assert_equal("/\xA4\xDB\xA4\xB2/\xA4\xDB\xA4\xB2", res.body)}
-      req = Net::HTTP::Get.new("/webrick.cgi?a=1;a=2;b=x")
-      http.request(req){|res| assert_equal("a=1, a=2, b=x", res.body)}
-      req = Net::HTTP::Get.new("/webrick.cgi?a=1&a=2&b=x")
-      http.request(req){|res| assert_equal("a=1, a=2, b=x", res.body)}
-
-      req = Net::HTTP::Post.new("/webrick.cgi?a=x;a=y;b=1")
-      req["Content-Type"] = "application/x-www-form-urlencoded"
-      http.request(req, "a=1;a=2;b=x"){|res|
-        assert_equal("a=1, a=2, b=x", res.body)}
-      req = Net::HTTP::Post.new("/webrick.cgi?a=x&a=y&b=1")
-      req["Content-Type"] = "application/x-www-form-urlencoded"
-      http.request(req, "a=1&a=2&b=x"){|res|
-        assert_equal("a=1, a=2, b=x", res.body)}
-      req = Net::HTTP::Get.new("/")
-      http.request(req){|res|
-        ary = res.body.to_a
-        assert_match(%r{/$}, ary[0])
-        assert_match(%r{/webrick.cgi$}, ary[1])
-      }
-
-      req = Net::HTTP::Get.new("/webrick.cgi")
-      req["Cookie"] = "CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001"
-      http.request(req){|res|
-        assert_equal(
-          "CUSTOMER=WILE_E_COYOTE\nPART_NUMBER=ROCKET_LAUNCHER_0001\n",
-          res.body)
-      }
-
-      req = Net::HTTP::Get.new("/webrick.cgi")
-      cookie =  %{$Version="1"; }
-      cookie << %{Customer="WILE_E_COYOTE"; $Path="/acme"; }
-      cookie << %{Part_Number="Rocket_Launcher_0001"; $Path="/acme"; }
-      cookie << %{Shipping="FedEx"; $Path="/acme"}
-      req["Cookie"] = cookie
-      http.request(req){|res|
-        assert_equal("Customer=WILE_E_COYOTE, Shipping=FedEx",
-                     res["Set-Cookie"])
-        assert_equal("Customer=WILE_E_COYOTE\n" +
-                     "Part_Number=Rocket_Launcher_0001\n" +
-                     "Shipping=FedEx\n", res.body)
-      }
-    }
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_cookie.rb b/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_cookie.rb
deleted file mode 100644 (file)
index 14771fd..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-require "test/unit"
-require "webrick/cookie"
-
-class TestWEBrickCookie < Test::Unit::TestCase
-  def test_new
-    cookie = WEBrick::Cookie.new("foo","bar")
-    assert_equal("foo", cookie.name)
-    assert_equal("bar", cookie.value)
-    assert_equal("foo=bar", cookie.to_s)
-  end
-
-  def test_time
-    cookie = WEBrick::Cookie.new("foo","bar")
-    t = 1000000000
-    cookie.max_age = t
-    assert_match(t.to_s, cookie.to_s)
-
-    cookie = WEBrick::Cookie.new("foo","bar")
-    t = Time.at(1000000000)
-    cookie.expires = t
-    assert_equal(Time, cookie.expires.class)
-    assert_equal(t, cookie.expires)
-    ts = t.httpdate
-    cookie.expires = ts
-    assert_equal(Time, cookie.expires.class)
-    assert_equal(t, cookie.expires)
-    assert_match(ts, cookie.to_s)
-  end
-
-  def test_parse
-    data = ""
-    data << '$Version="1"; '
-    data << 'Customer="WILE_E_COYOTE"; $Path="/acme"; '
-    data << 'Part_Number="Rocket_Launcher_0001"; $Path="/acme"; '
-    data << 'Shipping="FedEx"; $Path="/acme"'
-    cookies = WEBrick::Cookie.parse(data)
-    assert_equal(1, cookies[0].version)
-    assert_equal("Customer", cookies[0].name)
-    assert_equal("WILE_E_COYOTE", cookies[0].value)
-    assert_equal("/acme", cookies[0].path)
-    assert_equal(1, cookies[1].version)
-    assert_equal("Part_Number", cookies[1].name)
-    assert_equal("Rocket_Launcher_0001", cookies[1].value)
-    assert_equal(1, cookies[2].version)
-    assert_equal("Shipping", cookies[2].name)
-    assert_equal("FedEx", cookies[2].value)
-
-    data = "hoge=moge; __div__session=9865ecfd514be7f7"
-    cookies = WEBrick::Cookie.parse(data)
-    assert_equal(0, cookies[0].version)
-    assert_equal("hoge", cookies[0].name)
-    assert_equal("moge", cookies[0].value)
-    assert_equal("__div__session", cookies[1].name)
-    assert_equal("9865ecfd514be7f7", cookies[1].value)
-  end
-
-  def test_parse_set_cookie
-    data = %(Customer="WILE_E_COYOTE"; Version="1"; Path="/acme")
-    cookie = WEBrick::Cookie.parse_set_cookie(data)
-    assert_equal("Customer", cookie.name)
-    assert_equal("WILE_E_COYOTE", cookie.value)
-    assert_equal(1, cookie.version)
-    assert_equal("/acme", cookie.path)
-
-    data = %(Shipping="FedEx"; Version="1"; Path="/acme"; Secure)
-    cookie = WEBrick::Cookie.parse_set_cookie(data)
-    assert_equal("Shipping", cookie.name)
-    assert_equal("FedEx", cookie.value)
-    assert_equal(1, cookie.version)
-    assert_equal("/acme", cookie.path)
-    assert_equal(true, cookie.secure)
-  end
-
-  def test_parse_set_cookies
-    data = %(Shipping="FedEx"; Version="1"; Path="/acme"; Secure)
-    data << %(, CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT; path=/; Secure)
-    data << %(, name="Aaron"; Version="1"; path="/acme")
-    cookies = WEBrick::Cookie.parse_set_cookies(data)
-    assert_equal(3, cookies.length)
-
-    fed_ex = cookies.find { |c| c.name == 'Shipping' }
-    assert_not_nil(fed_ex)
-    assert_equal("Shipping", fed_ex.name)
-    assert_equal("FedEx", fed_ex.value)
-    assert_equal(1, fed_ex.version)
-    assert_equal("/acme", fed_ex.path)
-    assert_equal(true, fed_ex.secure)
-
-    name = cookies.find { |c| c.name == 'name' }
-    assert_not_nil(name)
-    assert_equal("name", name.name)
-    assert_equal("Aaron", name.value)
-    assert_equal(1, name.version)
-    assert_equal("/acme", name.path)
-
-    customer = cookies.find { |c| c.name == 'CUSTOMER' }
-    assert_not_nil(customer)
-    assert_equal("CUSTOMER", customer.name)
-    assert_equal("WILE_E_COYOTE", customer.value)
-    assert_equal(0, customer.version)
-    assert_equal("/", customer.path)
-    assert_equal(Time.utc(1999, 11, 9, 23, 12, 40), customer.expires)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_filehandler.rb b/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_filehandler.rb
deleted file mode 100644 (file)
index 2c7d97f..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-require "test/unit"
-require "webrick"
-require "stringio"
-require File.join(File.dirname(__FILE__), "utils.rb")
-
-class WEBrick::TestFileHandler < Test::Unit::TestCase
-  def default_file_handler(filename)
-    klass = WEBrick::HTTPServlet::DefaultFileHandler
-    klass.new(WEBrick::Config::HTTP, filename)
-  end
-
-  def windows?
-    File.directory?("\\")
-  end
-
-  def get_res_body(res)
-    return res.body.read rescue res.body
-  end
-
-  def make_range_request(range_spec)
-    msg = <<-_end_of_request_
-      GET / HTTP/1.0
-      Range: #{range_spec}
-
-    _end_of_request_
-    return StringIO.new(msg.gsub(/^ {6}/, ""))
-  end
-
-  def make_range_response(file, range_spec)
-    req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-    req.parse(make_range_request(range_spec))
-    res = WEBrick::HTTPResponse.new(WEBrick::Config::HTTP)
-    size = File.size(file)
-    handler = default_file_handler(file)
-    handler.make_partial_content(req, res, file, size)
-    return res
-  end
-
-  def test_make_partial_content
-    filename = __FILE__
-    filesize = File.size(filename)
-
-    res = make_range_response(filename, "bytes=#{filesize-100}-")
-    assert_match(%r{^text/plain}, res["content-type"])
-    assert_equal(get_res_body(res).size, 100)
-
-    res = make_range_response(filename, "bytes=-100")
-    assert_match(%r{^text/plain}, res["content-type"])
-    assert_equal(get_res_body(res).size, 100)
-
-    res = make_range_response(filename, "bytes=0-99")
-    assert_match(%r{^text/plain}, res["content-type"])
-    assert_equal(get_res_body(res).size, 100)
-
-    res = make_range_response(filename, "bytes=100-199")
-    assert_match(%r{^text/plain}, res["content-type"])
-    assert_equal(get_res_body(res).size, 100)
-
-    res = make_range_response(filename, "bytes=0-0")
-    assert_match(%r{^text/plain}, res["content-type"])
-    assert_equal(get_res_body(res).size, 1)
-
-    res = make_range_response(filename, "bytes=-1")
-    assert_match(%r{^text/plain}, res["content-type"])
-    assert_equal(get_res_body(res).size, 1)
-
-    res = make_range_response(filename, "bytes=0-0, -2")
-    assert_match(%r{^multipart/byteranges}, res["content-type"])
-  end
-
-  def test_filehandler
-    config = { :DocumentRoot => File.dirname(__FILE__), }
-    this_file = File.basename(__FILE__)
-    TestWEBrick.start_httpserver(config) do |server, addr, port|
-      http = Net::HTTP.new(addr, port)
-      req = Net::HTTP::Get.new("/")
-      http.request(req){|res|
-        assert_equal("200", res.code)
-        assert_equal("text/html", res.content_type)
-        assert_match(/HREF="#{this_file}"/, res.body)
-      }
-      req = Net::HTTP::Get.new("/#{this_file}")
-      http.request(req){|res|
-        assert_equal("200", res.code)
-        assert_equal("text/plain", res.content_type)
-        assert_equal(File.read(__FILE__), res.body)
-      }
-    end
-  end
-
-  def test_non_disclosure_name
-    config = { :DocumentRoot => File.dirname(__FILE__), }
-    this_file = File.basename(__FILE__)
-    TestWEBrick.start_httpserver(config) do |server, addr, port|
-      http = Net::HTTP.new(addr, port)
-      doc_root_opts = server[:DocumentRootOptions]
-      doc_root_opts[:NondisclosureName] = %w(.ht* *~ test_*)
-      req = Net::HTTP::Get.new("/")
-      http.request(req){|res|
-        assert_equal("200", res.code)
-        assert_equal("text/html", res.content_type)
-        assert_no_match(/HREF="#{File.basename(__FILE__)}"/, res.body)
-      }
-      req = Net::HTTP::Get.new("/#{this_file}")
-      http.request(req){|res|
-        assert_equal("404", res.code)
-      }
-      doc_root_opts[:NondisclosureName] = %w(.ht* *~ TEST_*)
-      http.request(req){|res|
-        assert_equal("404", res.code)
-      }
-    end
-  end
-
-  def test_directory_traversal
-    config = { :DocumentRoot => File.dirname(__FILE__), }
-    this_file = File.basename(__FILE__)
-    TestWEBrick.start_httpserver(config) do |server, addr, port|
-      http = Net::HTTP.new(addr, port)
-      req = Net::HTTP::Get.new("/../../")
-      http.request(req){|res| assert_equal("400", res.code) }
-      req = Net::HTTP::Get.new("/..%5c../#{File.basename(__FILE__)}")
-      http.request(req){|res| assert_equal(windows? ? "200" : "404", res.code) }
-      req = Net::HTTP::Get.new("/..%5c..%5cruby.c")
-      http.request(req){|res| assert_equal("404", res.code) }
-    end
-  end
-
-  def test_unwise_in_path
-    if windows?
-      config = { :DocumentRoot => File.dirname(__FILE__), }
-      this_file = File.basename(__FILE__)
-      TestWEBrick.start_httpserver(config) do |server, addr, port|
-        http = Net::HTTP.new(addr, port)
-        req = Net::HTTP::Get.new("/..%5c..")
-        http.request(req){|res| assert_equal("301", res.code) }
-      end
-    end
-  end
-
-  def test_short_filename
-    config = {
-      :CGIInterpreter => TestWEBrick::RubyBin,
-      :DocumentRoot => File.dirname(__FILE__),
-      :CGIPathEnv => ENV['PATH'],
-    }
-    TestWEBrick.start_httpserver(config) do |server, addr, port|
-      http = Net::HTTP.new(addr, port)
-
-      req = Net::HTTP::Get.new("/webric~1.cgi/test")
-      http.request(req) do |res|
-        if windows?
-          assert_equal("200", res.code)
-          assert_equal("/test", res.body)
-        else
-          assert_equal("404", res.code)
-        end
-      end
-
-      req = Net::HTTP::Get.new("/.htaccess")
-      http.request(req) {|res| assert_equal("404", res.code) }
-      req = Net::HTTP::Get.new("/htacce~1")
-      http.request(req) {|res| assert_equal("404", res.code) }
-      req = Net::HTTP::Get.new("/HTACCE~1")
-      http.request(req) {|res| assert_equal("404", res.code) }
-    end
-  end
-
-  def test_script_disclosure
-    config = {
-      :CGIInterpreter => TestWEBrick::RubyBin,
-      :DocumentRoot => File.dirname(__FILE__),
-      :CGIPathEnv => ENV['PATH'],
-    }
-    TestWEBrick.start_httpserver(config) do |server, addr, port|
-      http = Net::HTTP.new(addr, port)
-
-      req = Net::HTTP::Get.new("/webrick.cgi/test")
-      http.request(req) do |res|
-        assert_equal("200", res.code)
-        assert_equal("/test", res.body)
-      end
-
-      response_assertion = Proc.new do |res|
-        if windows?
-          assert_equal("200", res.code)
-          assert_equal("/test", res.body)
-        else
-          assert_equal("404", res.code)
-        end
-      end
-      req = Net::HTTP::Get.new("/webrick.cgi%20/test")
-      http.request(req, &response_assertion)
-      req = Net::HTTP::Get.new("/webrick.cgi./test")
-      http.request(req, &response_assertion)
-      req = Net::HTTP::Get.new("/webrick.cgi::$DATA/test")
-      http.request(req, &response_assertion)
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httpauth.rb b/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httpauth.rb
deleted file mode 100644 (file)
index 75926b1..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-require "test/unit"
-require "net/http"
-require "tempfile"
-require "webrick"
-require "webrick/httpauth/basicauth"
-require File.join(File.dirname(__FILE__), "utils.rb")
-
-class TestWEBrickHTTPAuth < Test::Unit::TestCase
-  def test_basic_auth
-    TestWEBrick.start_httpserver{|server, addr, port|
-      realm = "WEBrick's realm"
-      path = "/basic_auth"
-
-      server.mount_proc(path){|req, res|
-        WEBrick::HTTPAuth.basic_auth(req, res, realm){|user, pass|
-          user == "webrick" && pass == "supersecretpassword"
-        }     
-        res.body = "hoge"
-      }
-      http = Net::HTTP.new(addr, port)
-      g = Net::HTTP::Get.new(path)
-      g.basic_auth("webrick", "supersecretpassword")
-      http.request(g){|res| assert_equal("hoge", res.body)}  
-      g.basic_auth("webrick", "not super")
-      http.request(g){|res| assert_not_equal("hoge", res.body)}
-    }
-  end
-
-  def test_basic_auth2
-    TestWEBrick.start_httpserver{|server, addr, port|
-      realm = "WEBrick's realm"
-      path = "/basic_auth2"
-
-      tmpfile = Tempfile.new("test_webrick_auth")
-      tmpfile.close
-      tmp_pass = WEBrick::HTTPAuth::Htpasswd.new(tmpfile.path)
-      tmp_pass.set_passwd(realm, "webrick", "supersecretpassword")
-      tmp_pass.set_passwd(realm, "foo", "supersecretpassword")
-      tmp_pass.flush
-
-      htpasswd = WEBrick::HTTPAuth::Htpasswd.new(tmpfile.path)
-      users = []
-      htpasswd.each{|user, pass| users << user }
-      assert_equal(2, users.size)
-      assert(users.member?("webrick"))
-      assert(users.member?("foo"))
-
-      server.mount_proc(path){|req, res|
-        auth = WEBrick::HTTPAuth::BasicAuth.new(
-          :Realm => realm, :UserDB => htpasswd,
-          :Logger => server.logger
-        )
-        auth.authenticate(req, res)
-        res.body = "hoge"
-      }
-      http = Net::HTTP.new(addr, port)
-      g = Net::HTTP::Get.new(path)
-      g.basic_auth("webrick", "supersecretpassword")
-      http.request(g){|res| assert_equal("hoge", res.body)}  
-      g.basic_auth("webrick", "not super")
-      http.request(g){|res| assert_not_equal("hoge", res.body)}
-    }
-  end
-
-  def test_basic_auth3
-    tmpfile = Tempfile.new("test_webrick_auth")
-    tmpfile.puts("webrick:{SHA}GJYFRpBbdchp595jlh3Bhfmgp8k=")
-    tmpfile.flush
-    assert_raises(NotImplementedError){
-      WEBrick::HTTPAuth::Htpasswd.new(tmpfile.path)
-    }
-    tmpfile.close(true)
-
-    tmpfile = Tempfile.new("test_webrick_auth")
-    tmpfile.puts("webrick:$apr1$IOVMD/..$rmnOSPXr0.wwrLPZHBQZy0")
-    tmpfile.flush
-    assert_raises(NotImplementedError){
-      WEBrick::HTTPAuth::Htpasswd.new(tmpfile.path)
-    }
-    tmpfile.close(true)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httprequest.rb b/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httprequest.rb
deleted file mode 100644 (file)
index f0cd1a0..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-require "webrick"
-require "stringio"
-require "test/unit"
-
-class TestWEBrickHTTPRequest < Test::Unit::TestCase
-  def test_parse_09
-    msg = <<-_end_of_message_
-      GET /
-      foobar    # HTTP/0.9 request don't have header nor entity body.
-    _end_of_message_
-    req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-    req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-    assert_equal("GET", req.request_method)
-    assert_equal("/", req.unparsed_uri)
-    assert_equal(WEBrick::HTTPVersion.new("0.9"), req.http_version)
-    assert_equal(WEBrick::Config::HTTP[:ServerName], req.host)
-    assert_equal(80, req.port)
-    assert_equal(false, req.keep_alive?)
-    assert_equal(nil, req.body)
-    assert(req.query.empty?)
-  end
-
-  def test_parse_10
-    msg = <<-_end_of_message_
-      GET / HTTP/1.0
-
-    _end_of_message_
-    req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-    req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-    assert_equal("GET", req.request_method)
-    assert_equal("/", req.unparsed_uri)
-    assert_equal(WEBrick::HTTPVersion.new("1.0"), req.http_version)
-    assert_equal(WEBrick::Config::HTTP[:ServerName], req.host)
-    assert_equal(80, req.port)
-    assert_equal(false, req.keep_alive?)
-    assert_equal(nil, req.body)
-    assert(req.query.empty?)
-  end
-
-  def test_parse_11
-    msg = <<-_end_of_message_
-      GET /path HTTP/1.1
-
-    _end_of_message_
-    req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-    req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-    assert_equal("GET", req.request_method)
-    assert_equal("/path", req.unparsed_uri)
-    assert_equal("", req.script_name)
-    assert_equal("/path", req.path_info)
-    assert_equal(WEBrick::HTTPVersion.new("1.1"), req.http_version)
-    assert_equal(WEBrick::Config::HTTP[:ServerName], req.host)
-    assert_equal(80, req.port)
-    assert_equal(true, req.keep_alive?)
-    assert_equal(nil, req.body)
-    assert(req.query.empty?)
-  end
-
-  def test_parse_headers
-    msg = <<-_end_of_message_
-      GET /path HTTP/1.1
-      Host: test.ruby-lang.org:8080
-      Connection: close
-      Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
-              text/html;level=2;q=0.4, */*;q=0.5
-      Accept-Encoding: compress;q=0.5
-      Accept-Encoding: gzip;q=1.0, identity; q=0.4, *;q=0
-      Accept-Language: en;q=0.5, *; q=0
-      Accept-Language: ja
-      Content-Type: text/plain
-      Content-Length: 7
-
-      foobar
-    _end_of_message_
-    req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-    req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-    assert_equal(
-      URI.parse("http://test.ruby-lang.org:8080/path"), req.request_uri)
-    assert_equal("test.ruby-lang.org", req.host)
-    assert_equal(8080, req.port)
-    assert_equal(false, req.keep_alive?)
-    assert_equal(
-      %w(text/html;level=1 text/html */* text/html;level=2 text/*),
-      req.accept)
-    assert_equal(%w(gzip compress identity *), req.accept_encoding)
-    assert_equal(%w(ja en *), req.accept_language)
-    assert_equal(7, req.content_length)
-    assert_equal("text/plain", req.content_type)
-    assert_equal("foobar\n", req.body)
-    assert(req.query.empty?)
-  end
-
-  def test_parse_header2()
-    msg = <<-_end_of_message_
-      POST /foo/bar/../baz?q=a HTTP/1.0
-      Content-Length: 9
-      User-Agent:
-        FOO   BAR
-        BAZ
-
-      hogehoge
-    _end_of_message_
-    req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-    req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-    assert_equal("POST", req.request_method)
-    assert_equal("/foo/baz", req.path)
-    assert_equal("", req.script_name)
-    assert_equal("/foo/baz", req.path_info)
-    assert_equal("9", req['content-length'])
-    assert_equal("FOO BAR BAZ", req['user-agent'])
-    assert_equal("hogehoge\n", req.body)
-  end
-
-  def test_parse_headers3
-    msg = <<-_end_of_message_
-      GET /path HTTP/1.1
-      Host: test.ruby-lang.org
-
-    _end_of_message_
-    req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-    req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-    assert_equal(URI.parse("http://test.ruby-lang.org/path"), req.request_uri)
-    assert_equal("test.ruby-lang.org", req.host)
-    assert_equal(80, req.port)
-
-    msg = <<-_end_of_message_
-      GET /path HTTP/1.1
-      Host: 192.168.1.1
-
-    _end_of_message_
-    req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-    req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-    assert_equal(URI.parse("http://192.168.1.1/path"), req.request_uri)
-    assert_equal("192.168.1.1", req.host)
-    assert_equal(80, req.port)
-
-    msg = <<-_end_of_message_
-      GET /path HTTP/1.1
-      Host: [fe80::208:dff:feef:98c7]
-
-    _end_of_message_
-    req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-    req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-    assert_equal(URI.parse("http://[fe80::208:dff:feef:98c7]/path"),
-                 req.request_uri)
-    assert_equal("[fe80::208:dff:feef:98c7]", req.host)
-    assert_equal(80, req.port)
-
-    msg = <<-_end_of_message_
-      GET /path HTTP/1.1
-      Host: 192.168.1.1:8080
-
-    _end_of_message_
-    req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-    req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-    assert_equal(URI.parse("http://192.168.1.1:8080/path"), req.request_uri)
-    assert_equal("192.168.1.1", req.host)
-    assert_equal(8080, req.port)
-
-    msg = <<-_end_of_message_
-      GET /path HTTP/1.1
-      Host: [fe80::208:dff:feef:98c7]:8080
-
-    _end_of_message_
-    req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-    req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-    assert_equal(URI.parse("http://[fe80::208:dff:feef:98c7]:8080/path"),
-                 req.request_uri)
-    assert_equal("[fe80::208:dff:feef:98c7]", req.host)
-    assert_equal(8080, req.port)
-  end
-
-  def test_parse_get_params
-    param = "foo=1;foo=2;foo=3;bar=x"
-    msg = <<-_end_of_message_
-      GET /path?#{param} HTTP/1.1
-      Host: test.ruby-lang.org:8080
-
-    _end_of_message_
-    req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-    req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-    query = req.query
-    assert_equal("1", query["foo"])
-    assert_equal(["1", "2", "3"], query["foo"].to_ary)
-    assert_equal(["1", "2", "3"], query["foo"].list)
-    assert_equal("x", query["bar"])
-    assert_equal(["x"], query["bar"].list)
-  end
-
-  def test_parse_post_params
-    param = "foo=1;foo=2;foo=3;bar=x"
-    msg = <<-_end_of_message_
-      POST /path?foo=x;foo=y;foo=z;bar=1 HTTP/1.1
-      Host: test.ruby-lang.org:8080
-      Content-Length: #{param.size}
-      Content-Type: application/x-www-form-urlencoded
-
-      #{param}
-    _end_of_message_
-    req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-    req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-    query = req.query
-    assert_equal("1", query["foo"])
-    assert_equal(["1", "2", "3"], query["foo"].to_ary)
-    assert_equal(["1", "2", "3"], query["foo"].list)
-    assert_equal("x", query["bar"])
-    assert_equal(["x"], query["bar"].list)
-  end
-
-  def test_chunked
-    crlf = "\x0d\x0a"
-    msg = <<-_end_of_message_
-      POST /path HTTP/1.1
-      Host: test.ruby-lang.org:8080
-      Transfer-Encoding: chunked
-
-    _end_of_message_
-    msg.gsub!(/^ {6}/, "")
-    open(__FILE__){|io|
-      while chunk = io.read(100)
-        msg << chunk.size.to_s(16) << crlf
-        msg << chunk << crlf
-      end
-    }
-    msg << "0" << crlf
-    req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-    req.parse(StringIO.new(msg))
-    assert_equal(File.read(__FILE__), req.body)
-  end
-
-  def test_bad_messages
-    param = "foo=1;foo=2;foo=3;bar=x"
-    msg = <<-_end_of_message_
-      POST /path?foo=x;foo=y;foo=z;bar=1 HTTP/1.1
-      Host: test.ruby-lang.org:8080
-      Content-Type: application/x-www-form-urlencoded
-
-      #{param}
-    _end_of_message_
-    assert_raises(WEBrick::HTTPStatus::LengthRequired){
-      req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-      req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-      req.body
-    }
-
-    msg = <<-_end_of_message_
-      POST /path?foo=x;foo=y;foo=z;bar=1 HTTP/1.1
-      Host: test.ruby-lang.org:8080
-      Content-Length: 100000
-
-      body is too short.
-    _end_of_message_
-    assert_raises(WEBrick::HTTPStatus::BadRequest){
-      req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-      req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-      req.body
-    }
-
-    msg = <<-_end_of_message_
-      POST /path?foo=x;foo=y;foo=z;bar=1 HTTP/1.1
-      Host: test.ruby-lang.org:8080
-      Transfer-Encoding: foobar
-
-      body is too short.
-    _end_of_message_
-    assert_raises(WEBrick::HTTPStatus::NotImplemented){
-      req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
-      req.parse(StringIO.new(msg.gsub(/^ {6}/, "")))
-      req.body
-    }
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httpserver.rb b/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httpserver.rb
deleted file mode 100644 (file)
index eb685f9..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-require "test/unit"
-require "net/http"
-require "webrick"
-require File.join(File.dirname(__FILE__), "utils.rb")
-
-class TestWEBrickHTTPServer < Test::Unit::TestCase
-  def test_mount
-    httpd = WEBrick::HTTPServer.new(
-      :Logger => WEBrick::Log.new(TestWEBrick::NullWriter),
-      :DoNotListen=>true
-    )
-    httpd.mount("/", :Root)
-    httpd.mount("/foo", :Foo)
-    httpd.mount("/foo/bar", :Bar, :bar1)
-    httpd.mount("/foo/bar/baz", :Baz, :baz1, :baz2)
-
-    serv, opts, script_name, path_info = httpd.search_servlet("/")
-    assert_equal(:Root, serv)
-    assert_equal([], opts)
-    assert_equal(script_name, "")
-    assert_equal(path_info, "/")
-
-    serv, opts, script_name, path_info = httpd.search_servlet("/sub")
-    assert_equal(:Root, serv)
-    assert_equal([], opts)
-    assert_equal(script_name, "")
-    assert_equal(path_info, "/sub")
-
-    serv, opts, script_name, path_info = httpd.search_servlet("/sub/")
-    assert_equal(:Root, serv)
-    assert_equal([], opts)
-    assert_equal(script_name, "")
-    assert_equal(path_info, "/sub/")
-
-    serv, opts, script_name, path_info = httpd.search_servlet("/foo")
-    assert_equal(:Foo, serv)
-    assert_equal([], opts)
-    assert_equal(script_name, "/foo")
-    assert_equal(path_info, "")
-
-    serv, opts, script_name, path_info = httpd.search_servlet("/foo/")
-    assert_equal(:Foo, serv)
-    assert_equal([], opts)
-    assert_equal(script_name, "/foo")
-    assert_equal(path_info, "/")
-
-    serv, opts, script_name, path_info = httpd.search_servlet("/foo/sub")
-    assert_equal(:Foo, serv)
-    assert_equal([], opts)
-    assert_equal(script_name, "/foo")
-    assert_equal(path_info, "/sub")
-
-    serv, opts, script_name, path_info = httpd.search_servlet("/foo/bar")
-    assert_equal(:Bar, serv)
-    assert_equal([:bar1], opts)
-    assert_equal(script_name, "/foo/bar")
-    assert_equal(path_info, "")
-
-    serv, opts, script_name, path_info = httpd.search_servlet("/foo/bar/baz")
-    assert_equal(:Baz, serv)
-    assert_equal([:baz1, :baz2], opts)
-    assert_equal(script_name, "/foo/bar/baz")
-    assert_equal(path_info, "")
-  end
-
-  class Req
-    attr_reader :port, :host
-    def initialize(addr, port, host)
-      @addr, @port, @host = addr, port, host
-    end
-    def addr
-      [0,0,0,@addr]
-    end
-  end
-
-  def httpd(addr, port, host, ali)
-    config ={
-      :Logger      => WEBrick::Log.new(TestWEBrick::NullWriter),
-      :DoNotListen => true,
-      :BindAddress => addr,
-      :Port        => port,
-      :ServerName  => host,
-      :ServerAlias => ali,
-    }
-    return WEBrick::HTTPServer.new(config)
-  end
-
-  def assert_eql?(v1, v2)
-    assert_equal(v1.object_id, v2.object_id)
-  end
-
-  def test_lookup_server
-    addr1  = "192.168.100.1"
-    addr2  = "192.168.100.2"
-    addrz  = "192.168.100.254"
-    local  = "127.0.0.1"
-    port1  = 80
-    port2  = 8080
-    port3  = 10080
-    portz  = 32767
-    name1  = "www.example.com"
-    name2  = "www2.example.com"
-    name3  = "www3.example.com"
-    namea  = "www.example.co.jp"
-    nameb  = "www.example.jp"
-    namec  = "www2.example.co.jp"
-    named  = "www2.example.jp"
-    namez  = "foobar.example.com"
-    alias1 = [namea, nameb]
-    alias2 = [namec, named]
-
-    host1 = httpd(nil, port1, name1, nil)
-    hosts = [
-      host2  = httpd(addr1, port1, name1, nil),
-      host3  = httpd(addr1, port1, name2, alias1),
-      host4  = httpd(addr1, port2, name1, nil),
-      host5  = httpd(addr1, port2, name2, alias1),
-      host6  = httpd(addr1, port2, name3, alias2),
-      host7  = httpd(addr2, nil,   name1, nil),
-      host8  = httpd(addr2, nil,   name2, alias1),
-      host9  = httpd(addr2, nil,   name3, alias2),
-      host10 = httpd(local, nil,   nil,   nil),
-      host11 = httpd(nil,   port3, nil,   nil),
-    ].sort_by{ rand }
-    hosts.each{|h| host1.virtual_host(h) }
-
-    # connect to addr1
-    assert_eql?(host2,   host1.lookup_server(Req.new(addr1, port1, name1)))
-    assert_eql?(host3,   host1.lookup_server(Req.new(addr1, port1, name2)))
-    assert_eql?(host3,   host1.lookup_server(Req.new(addr1, port1, namea)))
-    assert_eql?(host3,   host1.lookup_server(Req.new(addr1, port1, nameb)))
-    assert_eql?(nil,     host1.lookup_server(Req.new(addr1, port1, namez)))
-    assert_eql?(host4,   host1.lookup_server(Req.new(addr1, port2, name1)))
-    assert_eql?(host5,   host1.lookup_server(Req.new(addr1, port2, name2)))
-    assert_eql?(host5,   host1.lookup_server(Req.new(addr1, port2, namea)))
-    assert_eql?(host5,   host1.lookup_server(Req.new(addr1, port2, nameb)))
-    assert_eql?(nil,     host1.lookup_server(Req.new(addr1, port2, namez)))
-    assert_eql?(host11,  host1.lookup_server(Req.new(addr1, port3, name1)))
-    assert_eql?(host11,  host1.lookup_server(Req.new(addr1, port3, name2)))
-    assert_eql?(host11,  host1.lookup_server(Req.new(addr1, port3, namea)))
-    assert_eql?(host11,  host1.lookup_server(Req.new(addr1, port3, nameb)))
-    assert_eql?(host11,  host1.lookup_server(Req.new(addr1, port3, namez)))
-    assert_eql?(nil,     host1.lookup_server(Req.new(addr1, portz, name1)))
-    assert_eql?(nil,     host1.lookup_server(Req.new(addr1, portz, name2)))
-    assert_eql?(nil,     host1.lookup_server(Req.new(addr1, portz, namea)))
-    assert_eql?(nil,     host1.lookup_server(Req.new(addr1, portz, nameb)))
-    assert_eql?(nil,     host1.lookup_server(Req.new(addr1, portz, namez)))
-
-    # connect to addr2
-    assert_eql?(host7,  host1.lookup_server(Req.new(addr2, port1, name1)))
-    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port1, name2)))
-    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port1, namea)))
-    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port1, nameb)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addr2, port1, namez)))
-    assert_eql?(host7,  host1.lookup_server(Req.new(addr2, port2, name1)))
-    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port2, name2)))
-    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port2, namea)))
-    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port2, nameb)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addr2, port2, namez)))
-    assert_eql?(host7,  host1.lookup_server(Req.new(addr2, port3, name1)))
-    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port3, name2)))
-    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port3, namea)))
-    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port3, nameb)))
-    assert_eql?(host11, host1.lookup_server(Req.new(addr2, port3, namez)))
-    assert_eql?(host7,  host1.lookup_server(Req.new(addr2, portz, name1)))
-    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, portz, name2)))
-    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, portz, namea)))
-    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, portz, nameb)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addr2, portz, namez)))
-
-    # connect to addrz
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port1, name1)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port1, name2)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port1, namea)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port1, nameb)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port1, namez)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port2, name1)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port2, name2)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port2, namea)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port2, nameb)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port2, namez)))
-    assert_eql?(host11, host1.lookup_server(Req.new(addrz, port3, name1)))
-    assert_eql?(host11, host1.lookup_server(Req.new(addrz, port3, name2)))
-    assert_eql?(host11, host1.lookup_server(Req.new(addrz, port3, namea)))
-    assert_eql?(host11, host1.lookup_server(Req.new(addrz, port3, nameb)))
-    assert_eql?(host11, host1.lookup_server(Req.new(addrz, port3, namez)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, portz, name1)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, portz, name2)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, portz, namea)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, portz, nameb)))
-    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, portz, namez)))
-
-    # connect to localhost
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port1, name1)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port1, name2)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port1, namea)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port1, nameb)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port1, namez)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port2, name1)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port2, name2)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port2, namea)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port2, nameb)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port2, namez)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port3, name1)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port3, name2)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port3, namea)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port3, nameb)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, port3, namez)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, portz, name1)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, portz, name2)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, portz, namea)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, portz, nameb)))
-    assert_eql?(host10, host1.lookup_server(Req.new(local, portz, namez)))
-  end
-
-  def test_callbacks
-    accepted = started = stopped = 0
-    requested0 = requested1 = 0
-    config = {
-      :ServerName => "localhost",
-      :AcceptCallback => Proc.new{ accepted += 1 },
-      :StartCallback => Proc.new{ started += 1 },
-      :StopCallback => Proc.new{ stopped += 1 },
-      :RequestCallback => Proc.new{|req, res| requested0 += 1 },
-    }
-    TestWEBrick.start_httpserver(config){|server, addr, port|
-      vhost_config = {
-        :ServerName => "myhostname",
-        :BindAddress => addr,
-        :Port => port,
-        :DoNotListen => true,
-        :Logger => WEBrick::Log.new(TestWEBrick::NullWriter),
-        :AccessLog => [],
-        :RequestCallback => Proc.new{|req, res| requested1 += 1 },
-      }
-      server.virtual_host(WEBrick::HTTPServer.new(vhost_config))
-
-      true while server.status != :Running
-      assert_equal(started, 1)
-      assert_equal(stopped, 0)
-      assert_equal(accepted, 0)
-
-      http = Net::HTTP.new(addr, port)
-      req = Net::HTTP::Get.new("/")
-      req["Host"] = "myhostname:#{port}"
-      http.request(req){|res| assert_equal("404", res.code)}
-      http.request(req){|res| assert_equal("404", res.code)}
-      http.request(req){|res| assert_equal("404", res.code)}
-      req["Host"] = "localhost:#{port}"
-      http.request(req){|res| assert_equal("404", res.code)}
-      http.request(req){|res| assert_equal("404", res.code)}
-      http.request(req){|res| assert_equal("404", res.code)}
-      assert_equal(6, accepted)
-      assert_equal(3, requested0)
-      assert_equal(3, requested1)
-    }
-    assert_equal(started, 1)
-    assert_equal(stopped, 1)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httputils.rb b/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httputils.rb
deleted file mode 100644 (file)
index 9d39ff5..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-require "test/unit"
-require "webrick/httputils"
-
-class TestWEBrickHTTPUtils < Test::Unit::TestCase
-  include WEBrick::HTTPUtils
-
-  def test_normilize_path
-    assert_equal("/foo",       normalize_path("/foo"))
-    assert_equal("/foo/bar/",  normalize_path("/foo/bar/"))
-
-    assert_equal("/",          normalize_path("/foo/../"))
-    assert_equal("/",          normalize_path("/foo/.."))
-    assert_equal("/",          normalize_path("/foo/bar/../../"))
-    assert_equal("/",          normalize_path("/foo/bar/../.."))
-    assert_equal("/",          normalize_path("/foo/bar/../.."))
-    assert_equal("/baz",       normalize_path("/foo/bar/../../baz"))
-    assert_equal("/baz",       normalize_path("/foo/../bar/../baz"))
-    assert_equal("/baz/",      normalize_path("/foo/../bar/../baz/"))
-    assert_equal("/...",       normalize_path("/bar/../..."))
-    assert_equal("/.../",      normalize_path("/bar/../.../"))
-
-    assert_equal("/foo/",      normalize_path("/foo/./"))
-    assert_equal("/foo/",      normalize_path("/foo/."))
-    assert_equal("/foo/",      normalize_path("/foo/././"))
-    assert_equal("/foo/",      normalize_path("/foo/./."))
-    assert_equal("/foo/bar",   normalize_path("/foo/./bar"))
-    assert_equal("/foo/bar/",  normalize_path("/foo/./bar/."))
-    assert_equal("/foo/bar/",  normalize_path("/./././foo/./bar/."))
-
-    assert_equal("/foo/bar/",  normalize_path("//foo///.//bar/.///.//"))
-    assert_equal("/",          normalize_path("//foo///..///bar/.///..//.//"))
-
-    assert_raises(RuntimeError){ normalize_path("foo/bar") }
-    assert_raises(RuntimeError){ normalize_path("..") }
-    assert_raises(RuntimeError){ normalize_path("/..") }
-    assert_raises(RuntimeError){ normalize_path("/./..") }
-    assert_raises(RuntimeError){ normalize_path("/./../") }
-    assert_raises(RuntimeError){ normalize_path("/./../..") }
-    assert_raises(RuntimeError){ normalize_path("/./../../") }
-    assert_raises(RuntimeError){ normalize_path("/./../") }
-    assert_raises(RuntimeError){ normalize_path("/../..") }
-    assert_raises(RuntimeError){ normalize_path("/../../") }
-    assert_raises(RuntimeError){ normalize_path("/../../..") }
-    assert_raises(RuntimeError){ normalize_path("/../../../") }
-    assert_raises(RuntimeError){ normalize_path("/../foo/../") }
-    assert_raises(RuntimeError){ normalize_path("/../foo/../../") }
-    assert_raises(RuntimeError){ normalize_path("/foo/bar/../../../../") }
-    assert_raises(RuntimeError){ normalize_path("/foo/../bar/../../") }
-    assert_raises(RuntimeError){ normalize_path("/./../bar/") }
-    assert_raises(RuntimeError){ normalize_path("/./../") }
-  end
-
-  def test_split_header_value
-    assert_equal(['foo', 'bar'], split_header_value('foo, bar'))
-    assert_equal(['"foo"', 'bar'], split_header_value('"foo", bar'))
-    assert_equal(['foo', '"bar"'], split_header_value('foo, "bar"'))
-    assert_equal(['*'], split_header_value('*'))
-    assert_equal(['W/"xyzzy"', 'W/"r2d2xxxx"', 'W/"c3piozzzz"'],
-                 split_header_value('W/"xyzzy", W/"r2d2xxxx", W/"c3piozzzz"'))
-  end
-
-  def test_escape
-    assert_equal("/foo/bar", escape("/foo/bar"))
-    assert_equal("/~foo/bar", escape("/~foo/bar"))
-    assert_equal("/~foo%20bar", escape("/~foo bar"))
-    assert_equal("/~foo%20bar", escape("/~foo bar"))
-    assert_equal("/~foo%09bar", escape("/~foo\tbar"))
-    assert_equal("/~foo+bar", escape("/~foo+bar"))
-  end
-
-  def test_escape_form
-    assert_equal("%2Ffoo%2Fbar", escape_form("/foo/bar"))
-    assert_equal("%2F~foo%2Fbar", escape_form("/~foo/bar"))
-    assert_equal("%2F~foo+bar", escape_form("/~foo bar"))
-    assert_equal("%2F~foo+%2B+bar", escape_form("/~foo + bar"))
-  end
-
-  def test_unescape
-    assert_equal("/foo/bar", unescape("%2ffoo%2fbar"))
-    assert_equal("/~foo/bar", unescape("/%7efoo/bar"))
-    assert_equal("/~foo/bar", unescape("%2f%7efoo%2fbar"))
-    assert_equal("/~foo+bar", unescape("/%7efoo+bar"))
-  end
-
-  def test_unescape_form
-    assert_equal("//foo/bar", unescape_form("/%2Ffoo/bar"))
-    assert_equal("//foo/bar baz", unescape_form("/%2Ffoo/bar+baz"))
-    assert_equal("/~foo/bar baz", unescape_form("/%7Efoo/bar+baz"))
-  end
-
-  def test_escape_path
-    assert_equal("/foo/bar", escape_path("/foo/bar"))
-    assert_equal("/foo/bar/", escape_path("/foo/bar/"))
-    assert_equal("/%25foo/bar/", escape_path("/%foo/bar/"))
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httpversion.rb b/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_httpversion.rb
deleted file mode 100644 (file)
index 81a871a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-require "test/unit"
-require "webrick/httpversion"
-
-class TestWEBrickHTTPVersion < Test::Unit::TestCase
-  def setup
-    @v09 = WEBrick::HTTPVersion.new("0.9")
-    @v10 = WEBrick::HTTPVersion.new("1.0")
-    @v11 = WEBrick::HTTPVersion.new("1.001")
-  end
-
-  def test_to_s()
-    assert_equal("0.9", @v09.to_s)
-    assert_equal("1.0", @v10.to_s)
-    assert_equal("1.1", @v11.to_s)
-  end
-
-  def test_major()
-    assert_equal(0, @v09.major)
-    assert_equal(1, @v10.major)
-    assert_equal(1, @v11.major)
-  end
-
-  def test_minor()
-    assert_equal(9, @v09.minor)
-    assert_equal(0, @v10.minor)
-    assert_equal(1, @v11.minor)
-  end
-
-  def test_compar()
-    assert_equal(0, @v09 <=> "0.9")
-    assert_equal(0, @v09 <=> "0.09")
-
-    assert_equal(-1, @v09 <=> @v10)
-    assert_equal(-1, @v09 <=> "1.00")
-
-    assert_equal(1, @v11 <=> @v09)
-    assert_equal(1, @v11 <=> "1.0")
-    assert_equal(1, @v11 <=> "0.9")
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_server.rb b/ruby/doc/ruby/ruby-1.8.7/test/webrick/test_server.rb
deleted file mode 100644 (file)
index ce5ee85..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-require "test/unit"
-require "tempfile"
-require "webrick"
-require File.join(File.dirname(__FILE__), "utils.rb")
-
-class TestWEBrickServer < Test::Unit::TestCase
-  class Echo < WEBrick::GenericServer
-    def run(sock)
-      while line = sock.gets
-        sock << line
-      end
-    end
-  end
-
-  def test_server
-    TestWEBrick.start_server(Echo){|server, addr, port|
-      TCPSocket.open(addr, port){|sock|
-        sock.puts("foo"); assert_equal("foo\n", sock.gets)
-        sock.puts("bar"); assert_equal("bar\n", sock.gets)
-        sock.puts("baz"); assert_equal("baz\n", sock.gets)
-        sock.puts("qux"); assert_equal("qux\n", sock.gets)
-      }
-    }
-  end
-
-  def test_callbacks
-    accepted = started = stopped = 0
-    config = {
-      :AcceptCallback => Proc.new{ accepted += 1 },
-      :StartCallback => Proc.new{ started += 1 },
-      :StopCallback => Proc.new{ stopped += 1 },
-    }
-    TestWEBrick.start_server(Echo, config){|server, addr, port|
-      true while server.status != :Running
-      assert_equal(started, 1)
-      assert_equal(stopped, 0)
-      assert_equal(accepted, 0)
-      TCPSocket.open(addr, port){|sock| (sock << "foo\n").gets }
-      TCPSocket.open(addr, port){|sock| (sock << "foo\n").gets }
-      TCPSocket.open(addr, port){|sock| (sock << "foo\n").gets }
-      assert_equal(accepted, 3)
-    }
-    assert_equal(started, 1)
-    assert_equal(stopped, 1)
-  end
-
-  def test_daemon
-    begin
-      r, w = IO.pipe
-      Process.fork{
-        r.close
-        WEBrick::Daemon.start
-        w.puts(Process.pid)
-        sleep
-      }
-      assert(Process.kill(:KILL, r.gets.to_i))
-    rescue NotImplementedError
-      # snip this test
-    ensure
-      r.close
-      w.close
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/webrick/utils.rb b/ruby/doc/ruby/ruby-1.8.7/test/webrick/utils.rb
deleted file mode 100644 (file)
index 5db94e6..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-begin
-  loadpath = $:.dup
-  $:.replace($: | [File.expand_path("../ruby", File.dirname(__FILE__))])
-  require 'envutil'
-ensure
-  $:.replace(loadpath)
-end
-require "webrick"
-begin
-  require "webrick/https"
-rescue LoadError
-end
-require "webrick/httpproxy"
-
-module TestWEBrick
-  NullWriter = Object.new
-  def NullWriter.<<(msg)
-    puts msg if $DEBUG
-    return self
-  end
-
-  RubyBin = "\"#{EnvUtil.rubybin}\""
-  RubyBin << " \"-I#{File.expand_path("../..", File.dirname(__FILE__))}/lib\""
-  RubyBin << " \"-I#{File.dirname(EnvUtil.rubybin)}/.ext/common\""
-  RubyBin << " \"-I#{File.dirname(EnvUtil.rubybin)}/.ext/#{RUBY_PLATFORM}\""
-
-  module_function
-
-  def start_server(klass, config={}, &block)
-    server = klass.new({
-      :BindAddress => "127.0.0.1", :Port => 0,
-      :Logger => WEBrick::Log.new(NullWriter),
-      :AccessLog => [[NullWriter, ""]]
-    }.update(config))
-    begin
-      thread = Thread.start{ server.start }
-      addr = server.listeners[0].addr
-      block.call([server, addr[3], addr[1]])
-    ensure
-      server.stop
-      thread.join
-    end
-  end
-
-  def start_httpserver(config={}, &block)
-    start_server(WEBrick::HTTPServer, config, &block)
-  end
-
-  def start_httpproxy(config={}, &block)
-    start_server(WEBrick::HTTPProxyServer, config, &block)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/webrick/webrick.cgi b/ruby/doc/ruby/ruby-1.8.7/test/webrick/webrick.cgi
deleted file mode 100644 (file)
index 73ba729..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#!ruby -d
-require "webrick/cgi"
-
-class TestApp < WEBrick::CGI
-  def do_GET(req, res)
-    res["content-type"] = "text/plain"
-    if (p = req.path_info) && p.length > 0
-      res.body = p
-    elsif (q = req.query).size > 0
-      res.body = q.keys.sort.collect{|key|
-        q[key].list.sort.collect{|v|
-          "#{key}=#{v}"
-        }.join(", ")
-      }.join(", ")
-    elsif %r{/$} =~ req.request_uri.to_s
-      res.body = ""
-      res.body << req.request_uri.to_s  << "\n"
-      res.body << req.script_name
-    elsif !req.cookies.empty?
-      res.body = req.cookies.inject(""){|result, cookie|
-        result << "%s=%s\n" % [cookie.name, cookie.value]
-      }
-      res.cookies << WEBrick::Cookie.new("Customer", "WILE_E_COYOTE")
-      res.cookies << WEBrick::Cookie.new("Shipping", "FedEx")
-    else
-      res.body = req.script_name
-    end
-  end
-
-  def do_POST(req, res)
-    do_GET(req, res)
-  end
-end
-
-cgi = TestApp.new
-cgi.start
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/webrick/webrick_long_filename.cgi b/ruby/doc/ruby/ruby-1.8.7/test/webrick/webrick_long_filename.cgi
deleted file mode 100644 (file)
index 73ba729..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#!ruby -d
-require "webrick/cgi"
-
-class TestApp < WEBrick::CGI
-  def do_GET(req, res)
-    res["content-type"] = "text/plain"
-    if (p = req.path_info) && p.length > 0
-      res.body = p
-    elsif (q = req.query).size > 0
-      res.body = q.keys.sort.collect{|key|
-        q[key].list.sort.collect{|v|
-          "#{key}=#{v}"
-        }.join(", ")
-      }.join(", ")
-    elsif %r{/$} =~ req.request_uri.to_s
-      res.body = ""
-      res.body << req.request_uri.to_s  << "\n"
-      res.body << req.script_name
-    elsif !req.cookies.empty?
-      res.body = req.cookies.inject(""){|result, cookie|
-        result << "%s=%s\n" % [cookie.name, cookie.value]
-      }
-      res.cookies << WEBrick::Cookie.new("Customer", "WILE_E_COYOTE")
-      res.cookies << WEBrick::Cookie.new("Shipping", "FedEx")
-    else
-      res.body = req.script_name
-    end
-  end
-
-  def do_POST(req, res)
-    do_GET(req, res)
-  end
-end
-
-cgi = TestApp.new
-cgi.start
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/any.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/any.wsdl
deleted file mode 100644 (file)
index 4d1f73a..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<definitions name="echo"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:tns="urn:example.com:echo"
-    xmlns:txd="urn:example.com:echo-type"
-    targetNamespace="urn:example.com:echo"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-  <types>
-    <xsd:schema targetNamespace="urn:example.com:echo-type">
-      <xsd:complexType name="foo.bar">
-        <xsd:sequence>
-          <xsd:any />
-        </xsd:sequence>
-      </xsd:complexType>
-    </xsd:schema>
-  </types>
-
-  <message name="msg_echoitem">
-    <part name="echoitem" type="txd:foo.bar"/>
-  </message>
-
-  <portType name="echo_port_type">
-    <operation name="echo">
-      <input message="tns:msg_echoitem"/>
-      <output message="tns:msg_echoitem"/>
-    </operation>
-  </portType>
-
-  <binding name="echo_binding" type="tns:echo_port_type">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
-    <operation name="echo">
-      <soap:operation soapAction="urn:example.com:echo"/>
-      <input>
-        <soap:body use="encoded" namespace="urn:example.com:echo"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="urn:example.com:echo"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-  </binding>
-
-  <service name="echo_service">
-    <port name="echo_port" binding="tns:echo_binding">
-      <soap:address location="http://localhost:10080"/>
-    </port>
-  </service>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/expectedDriver.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/expectedDriver.rb
deleted file mode 100644 (file)
index 6d1827f..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-require 'echo.rb'
-
-require 'soap/rpc/driver'
-
-class Echo_port_type < ::SOAP::RPC::Driver
-  DefaultEndpointUrl = "http://localhost:10080"
-  MappingRegistry = ::SOAP::Mapping::Registry.new
-
-  MappingRegistry.set(
-    FooBar,
-    ::SOAP::SOAPStruct,
-    ::SOAP::Mapping::Registry::TypedStructFactory,
-    { :type => XSD::QName.new("urn:example.com:echo-type", "foo.bar") }
-  )
-
-  Methods = [
-    [ XSD::QName.new("urn:example.com:echo", "echo"),
-      "urn:example.com:echo",
-      "echo",
-      [ ["in", "echoitem", ["FooBar", "urn:example.com:echo-type", "foo.bar"]],
-        ["retval", "echoitem", ["FooBar", "urn:example.com:echo-type", "foo.bar"]] ],
-      { :request_style =>  :rpc, :request_use =>  :encoded,
-        :response_style => :rpc, :response_use => :encoded }
-    ]
-  ]
-
-  def initialize(endpoint_url = nil)
-    endpoint_url ||= DefaultEndpointUrl
-    super(endpoint_url, nil)
-    self.mapping_registry = MappingRegistry
-    init_methods
-  end
-
-private
-
-  def init_methods
-    Methods.each do |definitions|
-      opt = definitions.last
-      if opt[:request_style] == :document
-        add_document_operation(*definitions)
-      else
-        add_rpc_operation(*definitions)
-        qname = definitions[0]
-        name = definitions[2]
-        if qname.name != name and qname.name.capitalize == name.capitalize
-          ::SOAP::Mapping.define_singleton_method(self, qname.name) do |*arg|
-            __send__(name, *arg)
-          end
-        end
-      end
-    end
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/expectedEcho.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/expectedEcho.rb
deleted file mode 100644 (file)
index 456950d..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-require 'xsd/qname'
-
-# {urn:example.com:echo-type}foo.bar
-class FooBar
-  @@schema_type = "foo.bar"
-  @@schema_ns = "urn:example.com:echo-type"
-  @@schema_element = [["any", [nil, XSD::QName.new(nil, "any")]]]
-
-  attr_accessor :any
-
-  def initialize(any = nil)
-    @any = any
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/expectedService.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/expectedService.rb
deleted file mode 100644 (file)
index e3885e7..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/env ruby
-require 'echoServant.rb'
-
-require 'soap/rpc/standaloneServer'
-require 'soap/mapping/registry'
-
-class Echo_port_type
-  MappingRegistry = ::SOAP::Mapping::Registry.new
-
-  MappingRegistry.set(
-    FooBar,
-    ::SOAP::SOAPStruct,
-    ::SOAP::Mapping::Registry::TypedStructFactory,
-    { :type => XSD::QName.new("urn:example.com:echo-type", "foo.bar") }
-  )
-
-  Methods = [
-    [ XSD::QName.new("urn:example.com:echo", "echo"),
-      "urn:example.com:echo",
-      "echo",
-      [ ["in", "echoitem", ["FooBar", "urn:example.com:echo-type", "foo.bar"]],
-        ["retval", "echoitem", ["FooBar", "urn:example.com:echo-type", "foo.bar"]] ],
-      { :request_style =>  :rpc, :request_use =>  :encoded,
-        :response_style => :rpc, :response_use => :encoded }
-    ]
-  ]
-end
-
-class Echo_port_typeApp < ::SOAP::RPC::StandaloneServer
-  def initialize(*arg)
-    super(*arg)
-    servant = Echo_port_type.new
-    Echo_port_type::Methods.each do |definitions|
-      opt = definitions.last
-      if opt[:request_style] == :document
-        @router.add_document_operation(servant, *definitions)
-      else
-        @router.add_rpc_operation(servant, *definitions)
-      end
-    end
-    self.mapping_registry = Echo_port_type::MappingRegistry
-  end
-end
-
-if $0 == __FILE__
-  # Change listen port.
-  server = Echo_port_typeApp.new('app', nil, '0.0.0.0', 10080)
-  trap(:INT) do
-    server.shutdown
-  end
-  server.start
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/test_any.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/any/test_any.rb
deleted file mode 100644 (file)
index aab5eb6..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-require 'test/unit'
-require 'wsdl/parser'
-require 'wsdl/soap/wsdl2ruby'
-module WSDL; module Any
-
-
-class TestAny < Test::Unit::TestCase
-  DIR = File.dirname(File.expand_path(__FILE__))
-  def pathname(filename)
-    File.join(DIR, filename)
-  end
-
-  def test_any
-    gen = WSDL::SOAP::WSDL2Ruby.new
-    gen.location = pathname("any.wsdl")
-    gen.basedir = DIR
-    gen.logger.level = Logger::FATAL
-    gen.opt['classdef'] = nil
-    gen.opt['driver'] = nil
-    gen.opt['client_skelton'] = nil
-    gen.opt['servant_skelton'] = nil
-    gen.opt['standalone_server_stub'] = nil
-    gen.opt['force'] = true
-    suppress_warning do
-      gen.run
-    end
-    compare("expectedDriver.rb", "echoDriver.rb")
-    compare("expectedEcho.rb", "echo.rb")
-    compare("expectedService.rb", "echo_service.rb")
-
-    File.unlink(pathname("echo_service.rb"))
-    File.unlink(pathname("echo.rb"))
-    File.unlink(pathname("echo_serviceClient.rb"))
-    File.unlink(pathname("echoDriver.rb"))
-    File.unlink(pathname("echoServant.rb"))
-  end
-
-  def compare(expected, actual)
-    assert_equal(loadfile(expected), loadfile(actual), actual)
-  end
-
-  def loadfile(file)
-    File.open(pathname(file)) { |f| f.read }
-  end
-
-  def suppress_warning
-    back = $VERBOSE
-    $VERBOSE = nil
-    begin
-      yield
-    ensure
-      $VERBOSE = back
-    end
-  end
-end
-
-
-end; end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/axisArray/axisArray.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/axisArray/axisArray.wsdl
deleted file mode 100644 (file)
index 3602edb..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<wsdl:definitions name = "itemList"
-    targetNamespace="urn:jp.gr.jin.rrr.example.itemList"
-    xmlns:tns="urn:jp.gr.jin.rrr.example.itemList"
-    xmlns:typens="urn:jp.gr.jin.rrr.example.itemListType"
-    xmlns="http://schemas.xmlsoap.org/wsdl/"
-    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-  <wsdl:types>
-    <schema targetNamespace="urn:jp.gr.jin.rrr.example.itemListType"
-       xmlns="http://www.w3.org/2001/XMLSchema">
-      <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
-      <complexType name="Item">
-        <sequence>
-          <element name="name" type="xsd:string"/>
-        </sequence>
-      </complexType>
-      <complexType name="ItemList">
-        <sequence>
-          <element maxOccurs="unbounded" minOccurs="0" name="Item" type="typens:Item"/>
-        </sequence>
-      </complexType>
-    </schema>
-  </wsdl:types>
-
-  <wsdl:message name="listItemRequest"/>
-
-  <wsdl:message name="listItemResponse">
-    <wsdl:part name="list" type="typens:ItemList"/>
-  </wsdl:message>
-
-  <wsdl:portType name="ItemListPortType">
-    <wsdl:operation name="listItem">
-      <wsdl:input message="tns:listItemRequest" name="listItemRequest"/>
-      <wsdl:output message="tns:listItemResponse" name="listItemResponse"/>
-    </wsdl:operation>
-  </wsdl:portType>
-
-  <wsdl:binding name="ItemListBinding" type="tns:ItemListPortType">
-    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
-    <wsdl:operation name="listItem">
-      <soap:operation soapAction=""/>
-      <wsdl:input name="listItemRequest">
-       <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="urn:jp.gr.jin.rrr.example.itemList" use="encoded"/>
-      </wsdl:input>
-      <wsdl:output name="listItemResponse">
-       <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="urn:jp.gr.jin.rrr.example.itemList" use="encoded"/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-
-  <wsdl:service name="ItemListService">
-    <wsdl:port binding="tns:ItemListBinding" name="ItemListPort">
-      <soap:address location="http://localhost:10080/"/>
-    </wsdl:port>
-  </wsdl:service>
-</wsdl:definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/axisArray/itemList.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/axisArray/itemList.rb
deleted file mode 100644 (file)
index b81297e..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-# Generated by wsdl2ruby.rb with axisArray.wsdl.
-
-# urn:jp.gr.jin.rrr.example.itemListType
-class Item
-  @@schema_type = "Item"
-  @@schema_ns = "urn:jp.gr.jin.rrr.example.itemListType"
-
-  def name
-    @name
-  end
-
-  def name=(value)
-    @name = value
-  end
-
-  def initialize(name = nil)
-    @name = name
-  end
-end
-
-# urn:jp.gr.jin.rrr.example.itemListType
-class ItemList < Array
-  # Contents type should be dumped here...
-  @@schema_type = "ItemList"
-  @@schema_ns = "urn:jp.gr.jin.rrr.example.itemListType"
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/axisArray/test_axisarray.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/axisArray/test_axisarray.rb
deleted file mode 100644 (file)
index 9f220bb..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-require 'test/unit'
-require 'soap/processor'
-require 'soap/mapping'
-require 'soap/rpc/element'
-require 'wsdl/importer'
-require 'itemList.rb'
-
-
-module WSDL
-
-
-class TestAxisArray < Test::Unit::TestCase
-  def setup
-    @xml =<<__EOX__
-<?xml version="1.0" encoding="UTF-8"?>
-<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <soapenv:Body>
-    <ns1:listItemResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:jp.gr.jin.rrr.example.itemList">
-      <list href="#id0"/>
-    </ns1:listItemResponse>
-    <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:ItemList" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="urn:jp.gr.jin.rrr.example.itemListType">
-      <Item href="#id1"/>
-      <Item href="#id2"/>
-      <Item href="#id3"/>
-    </multiRef>
-    <multiRef id="id3" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns3:Item" xmlns:ns3="urn:jp.gr.jin.rrr.example.itemListType" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
-      <name xsi:type="xsd:string">name3</name>
-    </multiRef>
-    <multiRef id="id1" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns4:Item" xmlns:ns4="urn:jp.gr.jin.rrr.example.itemListType" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
-      <name xsi:type="xsd:string">name1</name>
-    </multiRef>
-    <multiRef id="id2" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns5:Item" xmlns:ns5="urn:jp.gr.jin.rrr.example.itemListType" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
-      <name xsi:type="xsd:string">name2</name>
-    </multiRef>
-  </soapenv:Body>
-</soapenv:Envelope>
-__EOX__
-  end
-
-  def test_by_stub
-    header, body = ::SOAP::Processor.unmarshal(@xml)
-    ary = ::SOAP::Mapping.soap2obj(body.response)
-    assert_equal(3, ary.size)
-    assert_equal("name1", ary[0].name)
-    assert_equal("name2", ary[1].name)
-    assert_equal("name3", ary[2].name)
-  end
-
-  def test_by_wsdl
-    wsdlfile = File.join(File.dirname(File.expand_path(__FILE__)), 'axisArray.wsdl')
-    wsdl = WSDL::Importer.import(wsdlfile)
-    service = wsdl.services[0]
-    port = service.ports[0]
-    wsdl_types = wsdl.collect_complextypes
-    rpc_decode_typemap = wsdl_types + wsdl.soap_rpc_complextypes(port.find_binding)
-    opt = {}
-    opt[:default_encodingstyle] = ::SOAP::EncodingNamespace
-    opt[:decode_typemap] = rpc_decode_typemap
-    header, body = ::SOAP::Processor.unmarshal(@xml, opt)
-    ary = ::SOAP::Mapping.soap2obj(body.response)
-    assert_equal(3, ary.size)
-    assert_equal("name1", ary[0].name)
-    assert_equal("name2", ary[1].name)
-    assert_equal("name3", ary[2].name)
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/DatetimeService.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/DatetimeService.rb
deleted file mode 100644 (file)
index 800e06d..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env ruby
-require 'datetimeServant.rb'
-
-require 'soap/rpc/standaloneServer'
-require 'soap/mapping/registry'
-
-class DatetimePortType
-  MappingRegistry = ::SOAP::Mapping::Registry.new
-
-  Methods = [
-    ["now", "now",
-      [
-        ["in", "now", [::SOAP::SOAPDateTime]],
-        ["retval", "now", [::SOAP::SOAPDateTime]]
-      ],
-      "", "urn:jp.gr.jin.rrr.example.datetime", :rpc
-    ]
-  ]
-end
-
-class DatetimePortTypeApp < ::SOAP::RPC::StandaloneServer
-  def initialize(*arg)
-    super(*arg)
-    servant = DatetimePortType.new
-    DatetimePortType::Methods.each do |name_as, name, param_def, soapaction, namespace, style|
-      if style == :document
-        @router.add_document_operation(servant, soapaction, name, param_def)
-      else
-        qname = XSD::QName.new(namespace, name_as)
-        @router.add_rpc_operation(servant, qname, soapaction, name, param_def)
-      end
-    end
-    self.mapping_registry = DatetimePortType::MappingRegistry
-  end
-end
-
-if $0 == __FILE__
-  # Change listen port.
-  server = DatetimePortTypeApp.new('app', nil, '0.0.0.0', 10080)
-  trap(:INT) do
-    server.shutdown
-  end
-  server.start
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/datetime.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/datetime.rb
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/datetime.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/datetime.wsdl
deleted file mode 100644 (file)
index 4998dc4..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<wsdl:definitions name = "datetime"
-    targetNamespace="urn:jp.gr.jin.rrr.example.datetime"
-    xmlns:tns="urn:jp.gr.jin.rrr.example.datetime"
-    xmlns="http://schemas.xmlsoap.org/wsdl/"
-    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
-  <wsdl:message name="nowRequest">
-    <wsdl:part name="now" type="xsd:dateTime"/>
-  </wsdl:message>
-
-  <wsdl:message name="nowResponse">
-    <wsdl:part name="now" type="xsd:dateTime"/>
-  </wsdl:message>
-
-  <wsdl:portType name="DatetimePortType">
-    <wsdl:operation name="now">
-      <wsdl:input message="tns:nowRequest" name="nowRequest"/>
-      <wsdl:output message="tns:nowResponse" name="nowResponse"/>
-    </wsdl:operation>
-  </wsdl:portType>
-
-  <wsdl:binding name="DatetimeBinding" type="tns:DatetimePortType">
-    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
-    <wsdl:operation name="now">
-      <soap:operation soapAction=""/>
-      <wsdl:input name="nowRequest">
-       <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="urn:jp.gr.jin.rrr.example.datetime" use="encoded"/>
-      </wsdl:input>
-      <wsdl:output name="nowResponse">
-       <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="urn:jp.gr.jin.rrr.example.datetime" use="encoded"/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-
-  <wsdl:service name="DatetimeService">
-    <wsdl:port binding="tns:DatetimeBinding" name="DatetimePort">
-      <soap:address location="http://localhost:10080/"/>
-    </wsdl:port>
-  </wsdl:service>
-</wsdl:definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/datetimeServant.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/datetimeServant.rb
deleted file mode 100644 (file)
index 14145c4..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-require 'datetime.rb'
-
-class DatetimePortType
-  # SYNOPSIS
-  #   now(now)
-  #
-  # ARGS
-  #   now               - {http://www.w3.org/2001/XMLSchema}dateTime
-  #
-  # RETURNS
-  #   now               - {http://www.w3.org/2001/XMLSchema}dateTime
-  #
-  # RAISES
-  #   (undefined)
-  #
-  def now(now)
-    #raise NotImplementedError.new
-    now + 1
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/test_datetime.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/datetime/test_datetime.rb
deleted file mode 100644 (file)
index 7652318..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-require 'test/unit'
-require 'soap/wsdlDriver'
-require 'DatetimeService.rb'
-
-
-module WSDL
-module Datetime
-
-
-class TestDatetime < Test::Unit::TestCase
-  DIR = File.dirname(File.expand_path(__FILE__))
-
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_client
-  end
-
-  def setup_server
-    @server = DatetimePortTypeApp.new('Datetime server', nil, '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @t = Thread.new {
-      Thread.current.abort_on_exception = true
-      @server.start
-    }
-  end
-
-  def setup_client
-    wsdl = File.join(DIR, 'datetime.wsdl')
-    @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.generate_explicit_type = true
-    @client.wiredump_dev = STDOUT if $DEBUG
-  end
-
-  def teardown
-    teardown_server
-    teardown_client
-  end
-
-  def teardown_server
-    @server.shutdown
-    @t.kill
-    @t.join
-  end
-
-  def teardown_client
-    @client.reset_stream
-  end
-
-  def test_datetime
-    d = DateTime.now
-    d1 = d + 1
-    d2 = @client.now(d)
-    assert_equal(d1.year, d2.year)
-    assert_equal(d1.month, d2.month)
-    assert_equal(d1.day, d2.day)
-    assert_equal(d1.hour, d2.hour)
-    assert_equal(d1.min, d2.min)
-    assert_equal(d1.sec, d2.sec)
-    assert_equal(d1.sec, d2.sec)
-  end
-
-  def test_time
-    d = DateTime.now
-    t = Time.gm(d.year, d.month, d.day, d.hour, d.min, d.sec)
-    d1 = d + 1
-    d2 = @client.now(t)
-    assert_equal(d1.year, d2.year)
-    assert_equal(d1.month, d2.month)
-    assert_equal(d1.day, d2.day)
-    assert_equal(d1.hour, d2.hour)
-    assert_equal(d1.min, d2.min)
-    assert_equal(d1.sec, d2.sec)
-    assert_equal(d1.sec, d2.sec)
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/document.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/document.wsdl
deleted file mode 100644 (file)
index fbf03fa..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<definitions
-    name="echo"
-    targetNamespace="urn:docrpc"
-    xmlns:tns="urn:docrpc"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-  <types>
-    <xsd:schema elementFormDefault="unqualified" targetNamespace="urn:docrpc">
-      <xsd:complexType name="echo_struct">
-        <xsd:sequence>
-          <xsd:element minOccurs="0" maxOccurs="1" name="m_string" type="xsd:string" />
-          <xsd:element minOccurs="0" maxOccurs="1" name="m_datetime" type="xsd:dateTime" />
-        </xsd:sequence>
-        <xsd:attribute name="m_attr" type="xsd:string" />
-      </xsd:complexType>
-
-      <xsd:element name="echoele">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element minOccurs="0" maxOccurs="1" name="struct1" type="tns:echo_struct" />
-            <xsd:element minOccurs="0" maxOccurs="1" name="struct-2" type="tns:echo_struct" />
-          </xsd:sequence>
-          <xsd:attribute name="attr_string" type="xsd:string" />
-          <xsd:attribute name="attr-int" type="xsd:int" />
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="echo_response">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element minOccurs="0" maxOccurs="1" name="struct1" type="tns:echo_struct" />
-            <xsd:element minOccurs="0" maxOccurs="1" name="struct-2" type="tns:echo_struct" />
-          </xsd:sequence>
-          <xsd:attribute name="attr_string" type="xsd:string" />
-          <xsd:attribute name="attr-int" type="xsd:int" />
-        </xsd:complexType>
-      </xsd:element>
-    </xsd:schema>
-  </types>
-
-  <message name="echo_in">
-    <part name="parameters" element="tns:echoele" />
-  </message>
-  <message name="echo_out">
-    <part name="parameters" element="tns:echo_response" />
-  </message>
-
-  <portType name="docrpc_porttype">
-    <operation name="echo">
-      <input message="tns:echo_in" />
-      <output message="tns:echo_out" />
-    </operation>
-  </portType>
-
-  <binding name="docrpc_binding" type="tns:docrpc_porttype">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
-    <operation name="echo">
-      <soap:operation soapAction="urn:docrpc:echo" style="document" />
-      <input>
-        <soap:body use="literal" />
-      </input>
-      <output>
-        <soap:body use="literal" />
-      </output>
-    </operation>
-  </binding>
-
-  <service name="docrpc_service">
-    <port name="docprc_service_port" binding="tns:docrpc_binding">
-      <soap:address location="http://localhost:17171/" />
-    </port>
-  </service>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/echo.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/echo.rb
deleted file mode 100644 (file)
index c6df75a..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-require 'xsd/qname'
-
-# {urn:docrpc}echoele
-class Echoele
-  @@schema_type = "echoele"
-  @@schema_ns = "urn:docrpc"
-  @@schema_attribute = {XSD::QName.new(nil, "attr_string") => "SOAP::SOAPString", XSD::QName.new(nil, "attr-int") => "SOAP::SOAPInt"}
-  @@schema_element = [["struct1", ["Echo_struct", XSD::QName.new(nil, "struct1")]], ["struct_2", ["Echo_struct", XSD::QName.new(nil, "struct-2")]]]
-
-  attr_accessor :struct1
-  attr_accessor :struct_2
-
-  def xmlattr_attr_string
-    (@__xmlattr ||= {})[XSD::QName.new(nil, "attr_string")]
-  end
-
-  def xmlattr_attr_string=(value)
-    (@__xmlattr ||= {})[XSD::QName.new(nil, "attr_string")] = value
-  end
-
-  def xmlattr_attr_int
-    (@__xmlattr ||= {})[XSD::QName.new(nil, "attr-int")]
-  end
-
-  def xmlattr_attr_int=(value)
-    (@__xmlattr ||= {})[XSD::QName.new(nil, "attr-int")] = value
-  end
-
-  def initialize(struct1 = nil, struct_2 = nil)
-    @struct1 = struct1
-    @struct_2 = struct_2
-    @__xmlattr = {}
-  end
-end
-
-# {urn:docrpc}echo_response
-class Echo_response
-  @@schema_type = "echo_response"
-  @@schema_ns = "urn:docrpc"
-  @@schema_attribute = {XSD::QName.new(nil, "attr_string") => "SOAP::SOAPString", XSD::QName.new(nil, "attr-int") => "SOAP::SOAPInt"}
-  @@schema_element = [["struct1", ["Echo_struct", XSD::QName.new(nil, "struct1")]], ["struct_2", ["Echo_struct", XSD::QName.new(nil, "struct-2")]]]
-
-  attr_accessor :struct1
-  attr_accessor :struct_2
-
-  def xmlattr_attr_string
-    (@__xmlattr ||= {})[XSD::QName.new(nil, "attr_string")]
-  end
-
-  def xmlattr_attr_string=(value)
-    (@__xmlattr ||= {})[XSD::QName.new(nil, "attr_string")] = value
-  end
-
-  def xmlattr_attr_int
-    (@__xmlattr ||= {})[XSD::QName.new(nil, "attr-int")]
-  end
-
-  def xmlattr_attr_int=(value)
-    (@__xmlattr ||= {})[XSD::QName.new(nil, "attr-int")] = value
-  end
-
-  def initialize(struct1 = nil, struct_2 = nil)
-    @struct1 = struct1
-    @struct_2 = struct_2
-    @__xmlattr = {}
-  end
-end
-
-# {urn:docrpc}echo_struct
-class Echo_struct
-  @@schema_type = "echo_struct"
-  @@schema_ns = "urn:docrpc"
-  @@schema_attribute = {XSD::QName.new(nil, "m_attr") => "SOAP::SOAPString"}
-  @@schema_element = [["m_string", ["SOAP::SOAPString", XSD::QName.new(nil, "m_string")]], ["m_datetime", ["SOAP::SOAPDateTime", XSD::QName.new(nil, "m_datetime")]]]
-
-  attr_accessor :m_string
-  attr_accessor :m_datetime
-
-  def xmlattr_m_attr
-    (@__xmlattr ||= {})[XSD::QName.new(nil, "m_attr")]
-  end
-
-  def xmlattr_m_attr=(value)
-    (@__xmlattr ||= {})[XSD::QName.new(nil, "m_attr")] = value
-  end
-
-  def initialize(m_string = nil, m_datetime = nil)
-    @m_string = m_string
-    @m_datetime = m_datetime
-    @__xmlattr = {}
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/number.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/number.wsdl
deleted file mode 100644 (file)
index cc3dd8e..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<definitions
-    name="foo"
-    targetNamespace="urn:foo"
-    xmlns:tns="urn:foo"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-  <types>
-    <xsd:schema elementFormDefault="unqualified" targetNamespace="urn:foo">
-      <xsd:element name="get_foo">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element minOccurs="0" maxOccurs="1" name="number" type="xsd:string" />
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-    </xsd:schema>
-  </types>
-
-  <message name="get_foo_in">
-    <part name="parameters" element="tns:get_foo" />
-  </message>
-  <message name="get_foo_out">
-    <part name="parameters" type="xsd:string" />
-  </message>
-
-  <portType name="foo_porttype">
-    <operation name="get_foo">
-      <input message="tns:get_foo_in" />
-      <output message="tns:get_foo_out" />
-    </operation>
-  </portType>
-
-  <binding name="foo_binding" type="tns:foo_porttype">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
-        style="document" />
-    <operation name="get_foo">
-      <soap:operation soapAction="urn:foo:get_foo" style="document" />
-      <input>
-        <soap:body use="literal" />
-      </input>
-      <output>
-        <soap:body use="literal" />
-      </output>
-    </operation>
-  </binding>
-
-  <service name="foo_service">
-    <port name="foo_service_port" binding="tns:foo_binding">
-      <soap:address location="http://localhost:17171/" />
-    </port>
-  </service>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/ping_nosoapaction.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/ping_nosoapaction.wsdl
deleted file mode 100644 (file)
index ab9529e..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<definitions xmlns:tns="http://xmlsoap.org/Ping"
-xmlns="http://schemas.xmlsoap.org/wsdl/"
-xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-targetNamespace="http://xmlsoap.org/Ping" name="Ping">
-    <types>
-        <schema targetNamespace="http://xmlsoap.org/Ping"
-        xmlns="http://www.w3.org/2001/XMLSchema"
-        elementFormDefault="qualified">
-            <complexType name="ping">
-                <sequence>
-                    <element name="scenario" type="xsd:string"
-                    nillable="true"/>
-                    <element name="origin" type="xsd:string"
-                    nillable="true"/>
-                    <element name="text" type="xsd:string"
-                    nillable="true"/>
-                </sequence>
-            </complexType>
-            <complexType name="pingResponse">
-                <sequence>
-                    <element name="scenario" type="xsd:string"
-                    nillable="true"/>
-                    <element name="origin" type="xsd:string"
-                    nillable="true"/>
-                    <element name="text" type="xsd:string"
-                    nillable="true"/>
-                </sequence>
-            </complexType>
-            <element name="Ping" type="tns:ping"/>
-            <element name="PingResponse" type="tns:pingResponse"/>
-        </schema>
-    </types>
-    <message name="PingRequest">
-        <part name="ping" element="tns:Ping"/>
-    </message>
-    <message name="PingResponse">
-        <part name="pingResponse" element="tns:PingResponse"/>
-    </message>
-    <portType name="PingPort">
-        <operation name="Ping">
-            <input message="tns:PingRequest"/>
-            <output message="tns:PingResponse"/>
-        </operation>
-    </portType>
-    <binding name="PingBinding" type="tns:PingPort">
-        <soap:binding style="document"
-        transport="http://schemas.xmlsoap.org/soap/http"/>
-        <operation name="Ping">
-            <soap:operation/>
-            <input>
-                <soap:body use="literal"/>
-            </input>
-            <output>
-                <soap:body use="literal"/>
-            </output>
-        </operation>
-    </binding>
-    <service name="PingService">
-        <port name="PingPort" binding="tns:PingBinding">
-            <soap:address
-            location="http://127.0.0.1:8080/axis/services/PingPort"/>
-        </port>
-    </service>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/test_nosoapaction.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/test_nosoapaction.rb
deleted file mode 100644 (file)
index 77f642f..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-require 'test/unit'
-require 'wsdl/parser'
-require 'wsdl/soap/wsdl2ruby'
-require 'soap/rpc/standaloneServer'
-require 'soap/wsdlDriver'
-require 'soap/rpc/driver'
-
-
-module WSDL; module Document
-
-
-class TestNoSOAPAction < Test::Unit::TestCase
-  class Server < ::SOAP::RPC::StandaloneServer
-    Namespace = 'http://xmlsoap.org/Ping'
-
-    def on_init
-      add_document_method(
-        self,
-        Namespace + '/ping',
-        'ping_with_soapaction',
-        XSD::QName.new(Namespace, 'Ping'),
-        XSD::QName.new(Namespace, 'PingResponse')
-      )
-
-      add_document_method(
-        self,
-        nil,
-        'ping',
-        XSD::QName.new(Namespace, 'Ping'),
-        XSD::QName.new(Namespace, 'PingResponse')
-      )
-
-      # When no SOAPAction given, latter method(ping) is called.
-    end
-  
-    def ping(arg)
-      arg.text = 'ping'
-      arg
-    end
-  
-    def ping_with_soapaction(arg)
-      arg.text = 'ping_with_soapaction'
-      arg
-    end
-  end
-
-  DIR = File.dirname(File.expand_path(__FILE__))
-
-  Port = 17171
-
-  def setup
-    setup_server
-    @client = nil
-  end
-
-  def teardown
-    teardown_server
-    @client.reset_stream if @client
-  end
-
-  def setup_server
-    @server = Server.new('Test', Server::Namespace, '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @server_thread = start_server_thread(@server)
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def test_with_soapaction
-    wsdl = File.join(DIR, 'ping_nosoapaction.wsdl')
-    @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.wiredump_dev = STDOUT if $DEBUG
-    rv = @client.ping(:scenario => 'scenario', :origin => 'origin',
-      :text => 'text')
-    assert_equal('scenario', rv.scenario)
-    assert_equal('origin', rv.origin)
-    assert_equal('ping', rv.text)
-  end
-
-  def test_without_soapaction
-    @client = ::SOAP::RPC::Driver.new("http://localhost:#{Port}/",
-      Server::Namespace)
-    @client.add_document_method('ping', Server::Namespace + '/ping',
-      XSD::QName.new(Server::Namespace, 'Ping'),
-      XSD::QName.new(Server::Namespace, 'PingResponse'))
-    @client.wiredump_dev = STDOUT if $DEBUG
-    rv = @client.ping(:scenario => 'scenario', :origin => 'origin',
-      :text => 'text')
-    assert_equal('scenario', rv.scenario)
-    assert_equal('origin', rv.origin)
-    assert_equal('ping_with_soapaction', rv.text)
-  end
-end
-
-
-end; end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/test_number.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/test_number.rb
deleted file mode 100644 (file)
index a640ef2..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-require 'test/unit'
-require 'wsdl/parser'
-require 'wsdl/soap/wsdl2ruby'
-require 'soap/rpc/standaloneServer'
-require 'soap/wsdlDriver'
-
-
-module WSDL; module Document
-
-
-class TestNumber < Test::Unit::TestCase
-  class Server < ::SOAP::RPC::StandaloneServer
-    Namespace = 'urn:foo'
-
-    def on_init
-      add_document_method(
-        self,
-        Namespace + ':get_foo',
-        'get_foo',
-        XSD::QName.new(Namespace, 'get_foo'),
-        XSD::QName.new(Namespace, 'get_foo_response')
-      )
-    end
-  
-    def get_foo(arg)
-      arg.number
-    end
-  end
-
-  DIR = File.dirname(File.expand_path(__FILE__))
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_classdef
-    @client = nil
-  end
-
-  def teardown
-    teardown_server
-    File.unlink(pathname('foo.rb'))
-    @client.reset_stream if @client
-  end
-
-  def setup_server
-    @server = Server.new('Test', "urn:rpc", '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @server_thread = start_server_thread(@server)
-  end
-
-  def setup_classdef
-    gen = WSDL::SOAP::WSDL2Ruby.new
-    gen.location = pathname("number.wsdl")
-    gen.basedir = DIR
-    gen.logger.level = Logger::FATAL
-    gen.opt['classdef'] = nil
-    gen.opt['force'] = true
-    gen.run
-    require pathname('foo')
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def pathname(filename)
-    File.join(DIR, filename)
-  end
-
-  def test_wsdl
-    wsdl = File.join(DIR, 'number.wsdl')
-    @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.wiredump_dev = STDOUT if $DEBUG
-
-    # with the Struct defined in foo.rb, which is generated from WSDL
-    assert_equal("12345", @client.get_foo(Get_foo.new("12345")))
-
-    # with Hash
-    assert_equal("12345", @client.get_foo({:number => "12345"}))
-
-    # with Original struct
-    get_foo_struct = Struct.new(:number)
-    assert_equal("12345", @client.get_foo(get_foo_struct.new("12345")))
-  end
-end
-
-
-end; end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/test_rpc.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/document/test_rpc.rb
deleted file mode 100644 (file)
index 56cd067..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-require 'test/unit'
-require 'wsdl/parser'
-require 'wsdl/soap/wsdl2ruby'
-require 'soap/rpc/standaloneServer'
-require 'soap/wsdlDriver'
-
-
-module WSDL; module Document
-
-
-class TestRPC < Test::Unit::TestCase
-  class Server < ::SOAP::RPC::StandaloneServer
-    Namespace = 'urn:docrpc'
-
-    def on_init
-      add_document_method(
-        self,
-        Namespace + ':echo',
-        'echo',
-        XSD::QName.new(Namespace, 'echo'),
-        XSD::QName.new(Namespace, 'echo_response')
-      )
-    end
-  
-    def echo(arg)
-      if arg.is_a?(Echoele)
-        # swap args
-        tmp = arg.struct1
-        arg.struct1 = arg.struct_2
-        arg.struct_2 = tmp
-        arg
-      else
-        # swap args
-        tmp = arg["struct1"]
-        arg["struct1"] = arg["struct-2"]
-        arg["struct-2"] = tmp
-        arg
-      end
-    end
-  end
-
-  DIR = File.dirname(File.expand_path(__FILE__))
-
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_classdef
-    @client = nil
-  end
-
-  def teardown
-    teardown_server
-    #File.unlink(pathname('echo.rb'))
-    @client.reset_stream if @client
-  end
-
-  def setup_server
-    @server = Server.new('Test', "urn:rpc", '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @server_thread = start_server_thread(@server)
-  end
-
-  def setup_classdef
-    gen = WSDL::SOAP::WSDL2Ruby.new
-    gen.location = pathname("document.wsdl")
-    gen.basedir = DIR
-    gen.logger.level = Logger::FATAL
-    gen.opt['classdef'] = nil
-    gen.opt['force'] = true
-    gen.run
-    require pathname('echo')
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def pathname(filename)
-    File.join(DIR, filename)
-  end
-
-  def test_wsdl
-    wsdl = File.join(DIR, 'document.wsdl')
-    @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.wiredump_dev = STDOUT if $DEBUG
-
-    struct1 = Echo_struct.new("mystring1", now1 = Time.now)
-    struct1.xmlattr_m_attr = 'myattr1'
-    struct2 = Echo_struct.new("mystring2", now2 = Time.now)
-    struct2.xmlattr_m_attr = 'myattr2'
-    echo = Echoele.new(struct1, struct2)
-    echo.xmlattr_attr_string = 'attr_string'
-    echo.xmlattr_attr_int = 5
-    ret = @client.echo(echo)
-
-    # struct#m_datetime in a response is a DateTime even though
-    # struct#m_datetime in a request is a Time.
-    timeformat = "%Y-%m-%dT%H:%M:%S"
-    assert_equal("mystring2", ret.struct1.m_string)
-    assert_equal(now2.strftime(timeformat),
-      date2time(ret.struct1.m_datetime).strftime(timeformat))
-    assert_equal("mystring1", ret.struct_2.m_string)
-    assert_equal(now1.strftime(timeformat),
-      date2time(ret.struct_2.m_datetime).strftime(timeformat))
-    assert_equal("attr_string", ret.xmlattr_attr_string)
-    assert_equal(5, ret.xmlattr_attr_int)
-  end
-
-  def date2time(date)
-    if date.respond_to?(:to_time)
-      date.to_time
-    else
-      d = date.new_offset(0)
-      d.instance_eval {
-        Time.utc(year, mon, mday, hour, min, sec,
-          (sec_fraction * 86400000000).to_i)
-      }.getlocal
-    end
-  end
-
-  include ::SOAP
-  def test_naive
-    @client = ::SOAP::RPC::Driver.new("http://localhost:#{Port}/")
-    @client.add_document_method('echo', 'urn:docrpc:echo',
-      XSD::QName.new('urn:docrpc', 'echoele'),
-      XSD::QName.new('urn:docrpc', 'echo_response'))
-    @client.wiredump_dev = STDOUT if $DEBUG
-
-    echo = SOAPElement.new('foo')
-    echo.extraattr['attr_string'] = 'attr_string'
-    echo.extraattr['attr-int'] = 5
-    echo.add(struct1 = SOAPElement.new('struct1'))
-    struct1.add(SOAPElement.new('m_string', 'mystring1'))
-    struct1.add(SOAPElement.new('m_datetime', '2005-03-17T19:47:31+01:00'))
-    struct1.extraattr['m_attr'] = 'myattr1'
-    echo.add(struct2 = SOAPElement.new('struct-2'))
-    struct2.add(SOAPElement.new('m_string', 'mystring2'))
-    struct2.add(SOAPElement.new('m_datetime', '2005-03-17T19:47:32+02:00'))
-    struct2.extraattr['m_attr'] = 'myattr2'
-    ret = @client.echo(echo)
-    timeformat = "%Y-%m-%dT%H:%M:%S"
-    assert_equal('mystring2', ret.struct1.m_string)
-    assert_equal('2005-03-17T19:47:32',
-      ret.struct1.m_datetime.strftime(timeformat))
-    assert_equal("mystring1", ret.struct_2.m_string)
-    assert_equal('2005-03-17T19:47:31',
-      ret.struct_2.m_datetime.strftime(timeformat))
-    assert_equal('attr_string', ret.xmlattr_attr_string)
-    assert_equal(5, ret.xmlattr_attr_int)
-
-    echo = {'struct1' => {'m_string' => 'mystring1', 'm_datetime' => '2005-03-17T19:47:31+01:00'}, 
-          'struct-2' => {'m_string' => 'mystring2', 'm_datetime' => '2005-03-17T19:47:32+02:00'}}
-    ret = @client.echo(echo)
-    timeformat = "%Y-%m-%dT%H:%M:%S"
-    assert_equal('mystring2', ret.struct1.m_string)
-    assert_equal('2005-03-17T19:47:32',
-      ret.struct1.m_datetime.strftime(timeformat))
-    assert_equal("mystring1", ret.struct_2.m_string)
-    assert_equal('2005-03-17T19:47:31',
-      ret.struct_2.m_datetime.strftime(timeformat))
-  end
-end
-
-
-end; end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/emptycomplextype.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/emptycomplextype.wsdl
deleted file mode 100644 (file)
index 4f8dc48..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<definitions name = "emptycomplextype"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    targetNamespace="urn:jp.gr.jin.rrr.example.emptycomplextype"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-
-  <types>
-    <xsd:schema elementFormDefault="qualified"
-       targetNamespace="urn:jp.gr.jin.rrr.example.emptycomplextype">
-      <xsd:element name="typeIn">
-        <xsd:complexType />
-      </xsd:element>
-
-      <xsd:element name="typeOut">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element minOccurs="0" maxOccurs="1" name="str1" type="xsd:string" />
-            <xsd:element minOccurs="0" maxOccurs="1" name="str2" type="xsd:string" />
-            <xsd:element minOccurs="0" maxOccurs="1" name="seq">
-              <xsd:complexType>
-                <xsd:sequence>
-                  <xsd:any />
-                </xsd:sequence>
-              </xsd:complexType>
-            </xsd:element>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-    </xsd:schema>
-  </types>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/map/map.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/map/map.wsdl
deleted file mode 100644 (file)
index e418a4c..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0"?>
-<definitions
-    name="map"
-    targetNamespace="urn:map"
-    xmlns:tns="urn:map"
-    xmlns:txd="urn:map"
-    xmlns="http://schemas.xmlsoap.org/wsdl/"
-    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns:apachesoap="http://xml.apache.org/xml-soap">
-
-  <types>
-    <schema
-       xmlns="http://www.w3.org/2001/XMLSchema"
-       targetNamespace="http://xml.apache.org/xml-soap">
-      <complexType name="Map">
-       <sequence>
-         <element name="item" minOccurs="0" maxOccurs="unbounded">
-           <complexType>
-             <sequence>
-               <element name="key" type="xsd:anyType" />
-               <element name="value" type="xsd:anyType" />
-             </sequence>
-           </complexType>
-         </element>
-       </sequence>
-      </complexType>
-    </schema>
-  </types>
-
-  <message name="mapRequest"/>
-  <message name="mapResponse">
-    <part name="return" type="apachesoap:Map"/>
-  </message>
-
-  <message name="map2Request">
-    <part name="arg" type="apachesoap:Map"/>
-  </message>
-  <message name="map2Response">
-    <part name="return" type="apachesoap:Map"/>
-  </message>
-
-  <portType name="MapServicePortType">
-    <operation name="map" parameterOrder="">
-      <input message="tns:mapRequest"/>
-      <output message="tns:mapResponse"/>
-    </operation>
-
-    <operation name="map2" parameterOrder="">
-      <input message="tns:map2Request"/>
-      <output message="tns:map2Response"/>
-    </operation>
-  </portType>
-
-  <binding name="MapServicePortBinding" type="tns:MapServicePortType">
-    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
-    <operation name="map">
-      <soap:operation soapAction=""/>
-      <input>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="urn:map"/>
-      </input>
-      <output>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="urn:map"/>
-      </output>
-    </operation>
-
-    <operation name="map2">
-      <soap:operation soapAction=""/>
-      <input>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="urn:map"/>
-      </input>
-      <output>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="urn:map"/>
-      </output>
-    </operation>
-  </binding>
-
-  <service name="MapService">
-    <port name="MapServicePort" binding="tns:MapServicePortBinding">
-      <soap:address location="http://raa.ruby-lang.org/soap/1.0.2/"/>
-    </port>
-  </service>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/map/map.xml b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/map/map.xml
deleted file mode 100644 (file)
index 7106735..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <n2:mapResponse xmlns:n1="http://schemas.xmlsoap.org/soap/encoding/" xmlns:n2="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
-      <return xmlns:n3="http://xml.apache.org/xml-soap" xsi:type="n3:Map">
-       <item>
-         <key xsi:type="xsd:string">a</key>
-         <value xsi:type="n3:Map">
-           <item>
-             <key xsi:type="xsd:string">a1</key>
-             <value xsi:type="n1:Array" n1:arrayType="xsd:anyType[1]">
-               <item xsi:type="xsd:string">a1</item>
-             </value>
-           </item>
-           <item>
-             <key xsi:type="xsd:string">a2</key>
-             <value xsi:type="n1:Array" n1:arrayType="xsd:anyType[1]">
-               <item xsi:type="xsd:string">a2</item>
-             </value>
-           </item>
-         </value>
-       </item>
-       <item>
-         <key xsi:type="xsd:string">b</key>
-         <value xsi:type="n3:Map">
-           <item>
-             <key xsi:type="xsd:string">b1</key>
-             <value xsi:type="n1:Array" n1:arrayType="xsd:anyType[1]">
-               <item xsi:type="xsd:string">b1</item>
-             </value>
-           </item>
-           <item>
-             <key xsi:type="xsd:string">b2</key>
-             <value xsi:type="n1:Array" n1:arrayType="xsd:anyType[1]">
-               <item xsi:type="xsd:string">b2</item>
-             </value>
-           </item>
-         </value>
-       </item>
-      </return>
-    </n2:mapResponse>
-  </env:Body>
-</env:Envelope>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/map/test_map.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/map/test_map.rb
deleted file mode 100644 (file)
index 68f7d76..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/httpserver'
-require 'soap/wsdlDriver'
-
-
-module WSDL
-
-
-class TestMap < Test::Unit::TestCase
-  Port = 17171
-  DIR = File.dirname(File.expand_path(__FILE__))
-
-  class Server < ::SOAP::RPC::HTTPServer
-    def on_init
-      add_method(self, 'map')
-      add_method(self, 'map2', 'arg')
-    end
-
-    def map
-      {1 => "a", 2 => "b"}
-    end
-
-    def map2(arg)
-      arg
-    end
-  end
-
-  def setup
-    setup_server
-    setup_client
-  end
-
-  def setup_server
-    @server = Server.new(
-      :BindAddress => "0.0.0.0",
-      :Port => Port,
-      :AccessLog => [],
-      :SOAPDefaultNamespace => "urn:map"
-    )
-    @server.level = Logger::Severity::ERROR
-    @t = Thread.new {
-      Thread.current.abort_on_exception = true
-      @server.start
-    }
-  end
-
-  def setup_client
-    wsdl = File.join(DIR, 'map.wsdl')
-    @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.generate_explicit_type = true
-    @client.wiredump_dev = STDOUT if $DEBUG
-  end
-
-  def teardown
-    teardown_server
-    teardown_client
-  end
-
-  def teardown_server
-    @server.shutdown
-    @t.kill
-    @t.join
-  end
-
-  def teardown_client
-    @client.reset_stream
-  end
-
-  def test_by_wsdl
-    dir = File.dirname(File.expand_path(__FILE__))
-    wsdlfile = File.join(dir, 'map.wsdl')
-    xml = File.open(File.join(dir, 'map.xml')) { |f| f.read }
-    wsdl = WSDL::Importer.import(wsdlfile)
-    service = wsdl.services[0]
-    port = service.ports[0]
-    wsdl_types = wsdl.collect_complextypes
-    rpc_decode_typemap = wsdl_types + wsdl.soap_rpc_complextypes(port.find_binding)
-    opt = {}
-    opt[:default_encodingstyle] = ::SOAP::EncodingNamespace
-    opt[:decode_typemap] = rpc_decode_typemap
-    header, body = ::SOAP::Processor.unmarshal(xml, opt)
-    map = ::SOAP::Mapping.soap2obj(body.response)
-    assert_equal(["a1"], map["a"]["a1"])
-    assert_equal(["a2"], map["a"]["a2"])
-    assert_equal(["b1"], map["b"]["b1"])
-    assert_equal(["b2"], map["b"]["b2"])
-  end
-
-  def test_wsdldriver
-    assert_equal({1 => "a", 2 => "b"}, @client.map)
-    assert_equal({1 => 2}, @client.map2({1 => 2}))
-    assert_equal({1 => {2 => 3}}, @client.map2({1 => {2 => 3}}))
-    assert_equal({["a", 2] => {2 => 3}}, @client.map2({["a", 2] => {2 => 3}}))
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/marshal/person.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/marshal/person.wsdl
deleted file mode 100644 (file)
index 6ea8a04..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<definitions name="Person"
-    targetNamespace="http://www.jin.gr.jp/~nahi/xmlns/sample/Person"
-    xmlns:tns="http://www.jin.gr.jp/~nahi/xmlns/sample/Person"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-  <types>
-    <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" 
-        targetNamespace="http://www.jin.gr.jp/~nahi/xmlns/sample/Person">
-      <complexType name="Person">
-        <all>
-          <element name="familyname" type="xsd:string"/>
-          <element name="givenname" type="xsd:string"/>
-          <element name="var1" type="xsd:int"/>
-          <element name="var2" type="xsd:double"/>
-          <element name="var3" type="xsd:string"/>
-        </all>
-      </complexType>
-    </xsd:schema>
-  </types>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/marshal/person_org.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/marshal/person_org.rb
deleted file mode 100644 (file)
index f8c0e0d..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'xsd/qname'
-
-# {http://www.jin.gr.jp/~nahi/xmlns/sample/Person}Person
-class Person
-  @@schema_type = "Person"
-  @@schema_ns = "http://www.jin.gr.jp/~nahi/xmlns/sample/Person"
-  @@schema_element = [["familyname", ["SOAP::SOAPString", XSD::QName.new(nil, "familyname")]], ["givenname", ["SOAP::SOAPString", XSD::QName.new(nil, "givenname")]], ["var1", ["SOAP::SOAPInt", XSD::QName.new(nil, "var1")]], ["var2", ["SOAP::SOAPDouble", XSD::QName.new(nil, "var2")]], ["var3", ["SOAP::SOAPString", XSD::QName.new(nil, "var3")]]]
-
-  attr_accessor :familyname
-  attr_accessor :givenname
-  attr_accessor :var1
-  attr_accessor :var2
-  attr_accessor :var3
-
-  def initialize(familyname = nil, givenname = nil, var1 = nil, var2 = nil, var3 = nil)
-    @familyname = familyname
-    @givenname = givenname
-    @var1 = var1
-    @var2 = var2
-    @var3 = var3
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/marshal/test_wsdlmarshal.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/marshal/test_wsdlmarshal.rb
deleted file mode 100644 (file)
index cd2bdb1..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-require 'test/unit'
-require 'wsdl/parser'
-require 'soap/mapping/wsdlencodedregistry'
-require 'soap/marshal'
-require 'wsdl/soap/wsdl2ruby'
-
-class WSDLMarshaller
-  include SOAP
-
-  def initialize(wsdlfile)
-    wsdl = WSDL::Parser.new.parse(File.open(wsdlfile) { |f| f.read })
-    types = wsdl.collect_complextypes
-    @opt = {
-      :decode_typemap => types,
-      :generate_explicit_type => false,
-      :pretty => true
-    }
-    @mapping_registry = Mapping::WSDLEncodedRegistry.new(types)
-  end
-
-  def dump(obj, io = nil)
-    type = Mapping.class2element(obj.class)
-    ele =  Mapping.obj2soap(obj, @mapping_registry, type)
-    ele.elename = ele.type
-    Processor.marshal(SOAPEnvelope.new(nil, SOAPBody.new(ele)), @opt, io)
-  end
-
-  def load(io)
-    header, body = Processor.unmarshal(io, @opt)
-    Mapping.soap2obj(body.root_node)
-  end
-end
-
-
-require File.join(File.dirname(__FILE__), 'person_org')
-
-class Person
-  def ==(rhs)
-    @familyname == rhs.familyname and @givenname == rhs.givenname and
-      @var1 == rhs.var1 and @var2 == rhs.var2 and @var3 == rhs.var3
-  end
-end
-
-
-class TestWSDLMarshal < Test::Unit::TestCase
-  DIR = File.dirname(File.expand_path(__FILE__))
-
-  def test_marshal
-    marshaller = WSDLMarshaller.new(pathname('person.wsdl'))
-    obj = Person.new("NAKAMURA", "Hiroshi", 1, 1.0,  "1")
-    str = marshaller.dump(obj)
-    obj2 = marshaller.load(str)
-    assert_equal(obj, obj2)
-    assert_equal(str, marshaller.dump(obj2))
-  end
-
-  def test_classdef
-    gen = WSDL::SOAP::WSDL2Ruby.new
-    gen.location = pathname("person.wsdl")
-    gen.basedir = DIR
-    gen.logger.level = Logger::FATAL
-    gen.opt['classdef'] = nil
-    gen.opt['force'] = true
-    gen.run
-    compare("person_org.rb", "Person.rb")
-    File.unlink(pathname('Person.rb'))
-  end
-
-  def compare(expected, actual)
-    assert_equal(loadfile(expected), loadfile(actual), actual)
-  end
-
-  def loadfile(file)
-    File.open(pathname(file)) { |f| f.read }
-  end
-
-  def pathname(filename)
-    File.join(DIR, filename)
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/multiplefault.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/multiplefault.wsdl
deleted file mode 100644 (file)
index 2d928b6..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<definitions name="MultipleFaultTest"
-    targetNamespace="urn:jp.gr.jin.rrr.example.ele"
-    xmlns:tns="urn:jp.gr.jin.rrr.example.ele"
-    xmlns:typens="urn:jp.gr.jin.rrr.example.datatypes"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
-    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-
-  <types>
-    <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
-       targetNamespace="urn:jp.gr.jin.rrr.example.datatypes">
-      <xsd:complexType name="AuthenticationError">
-       <all>
-         <element name="message" type="xsd:string" />
-         <element name="backtrace" type="xoapenc:Array" />
-       </all>
-      </xsd:complexType>
-      <xsd:complexType name="AuthorizationError">
-       <all>
-         <element name="message" type="xsd:string" />
-         <element name="backtrace" type="xoapenc:Array" />
-       </all>
-      </xsd:complexType>
-    </xsd:schema>
-  </types> 
-
-  <message name="inputmsg"/>
-  <message name="outputmsg"/>
-  <message name="faultmsg1" >
-    <part name="exception" type="typens:AuthenticationError" />
-  </message>
-  <message name="faultmsg2" >
-    <part name="exception" type="typens:AuthorizationError" />
-  </message>
-
-  <portType name="MultipleFaultPortType">
-    <operation name="myoperation">
-      <input message="tns:inputmsg"/>
-      <output message="tns:outputmsg"/>
-      <fault message="tns:faultmsg1"/>
-      <fault message="tns:faultmsg2"/>
-    </operation>
-  </portType>
-
-  <binding name="MultipleFaultBinding" type="tns:MultipleFaultPortType">
-    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
-    <operation name="myoperation">
-      <soap:operation soapAction="urn:jp.gr.jin.rrr.example.ele"/>
-      <input>
-        <soap:body use="encoded" namespace="urn:jp.gr.jin.rrr.example.ele"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="urn:jp.gr.jin.rrr.example.ele"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-  </binding>
-
-  <service name="MultipleFaultService">
-    <port name="MultipleFaultPortType" binding="tns:MultipleFaultBinding">
-      <soap:address location="http://localhost:17171/"/>
-    </port>
-  </service>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/lp.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/lp.rb
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/lp.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/lp.wsdl
deleted file mode 100644 (file)
index b107b7b..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<definitions
-    name="lp"
-    targetNamespace="urn:lp"
-    xmlns:tns="urn:lp"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-  <types>
-    <schema xmlns="http://www.w3.org/2001/XMLSchema">
-      <import namespace="urn:lp" schemaLocation="lp.xsd"/>
-    </schema>
-  </types>
-
-  <message name="login_in">
-    <part name="parameters" element="tns:login" />
-  </message>
-  <message name="login_out">
-    <part name="parameters" element="tns:loginResponse" />
-  </message>
-
-  <portType name="lp_porttype">
-    <operation name="login">
-      <input message="tns:login_in" />
-      <output message="tns:login_out" />
-    </operation>
-  </portType>
-
-  <binding name="lp_binding" type="tns:lp_porttype">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
-    <operation name="login">
-      <soap:operation soapAction="urn:lp:login" style="document" />
-      <input>
-        <soap:body use="literal" />
-      </input>
-      <output>
-        <soap:body use="literal" />
-      </output>
-    </operation>
-  </binding>
-
-  <service name="lp_service">
-    <port name="lp_service_port" binding="tns:lp_binding">
-      <soap:address location="http://localhost:17171/" />
-    </port>
-  </service>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/lp.xsd b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/lp.xsd
deleted file mode 100644 (file)
index 12bcbd8..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:lp="urn:lp" targetNamespace="urn:lp" elementFormDefault="unqualified">
-
-  <xs:complexType name="login">
-    <xs:sequence>
-      <xs:element name="username" type="xs:string"/>
-      <xs:element name="password" type="xs:string"/>
-      <xs:element name="timezone" type="xs:string" minOccurs="0" maxOccurs="1"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <xs:element name="login" type="lp:login"/>
-
-  <xs:complexType name="loginResponse">
-    <xs:sequence>
-      <xs:element name="loginResult">
-        <xs:complexType>
-          <xs:sequence>
-            <xs:element name="sessionID" type="xs:string"/>
-          </xs:sequence>
-        </xs:complexType>
-      </xs:element>
-    </xs:sequence>
-  </xs:complexType>
-
-  <xs:element name="loginResponse" type="lp:loginResponse"/>
-</xs:schema>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/np.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/np.wsdl
deleted file mode 100644 (file)
index e2b7253..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www50.brinkster.com/vbfacileinpt/np" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://www50.brinkster.com/vbfacileinpt/np" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
-  <wsdl:types>
-    <s:schema elementFormDefault="qualified" targetNamespace="http://www50.brinkster.com/vbfacileinpt/np">
-      <s:element name="GetPrimeNumbers">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1" name="Max" type="s:string" />
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-      <s:element name="GetPrimeNumbersResponse">
-        <s:complexType>
-          <s:sequence>
-            <s:element minOccurs="0" maxOccurs="1" name="GetPrimeNumbersResult" type="s:string" />
-          </s:sequence>
-        </s:complexType>
-      </s:element>
-    </s:schema>
-  </wsdl:types>
-  <wsdl:message name="GetPrimeNumbersSoapIn">
-    <wsdl:part name="parameters" element="tns:GetPrimeNumbers" />
-  </wsdl:message>
-  <wsdl:message name="GetPrimeNumbersSoapOut">
-    <wsdl:part name="parameters" element="tns:GetPrimeNumbersResponse" />
-  </wsdl:message>
-  <wsdl:portType name="pnumSoap">
-    <wsdl:operation name="GetPrimeNumbers">
-      <wsdl:input message="tns:GetPrimeNumbersSoapIn" />
-      <wsdl:output message="tns:GetPrimeNumbersSoapOut" />
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding name="pnumSoap" type="tns:pnumSoap">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
-    <wsdl:operation name="GetPrimeNumbers">
-      <soap:operation soapAction="http://www50.brinkster.com/vbfacileinpt/np/GetPrimeNumbers" style="document" />
-      <wsdl:input>
-        <soap:body use="literal" />
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use="literal" />
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:service name="pnum">
-    <wsdl:port name="pnumSoap" binding="tns:pnumSoap">
-      <soap:address location="http://www50.brinkster.com/vbfacileinpt/np.asmx" />
-    </wsdl:port>
-  </wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/test_qualified.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/test_qualified.rb
deleted file mode 100644 (file)
index d6c1159..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-require 'test/unit'
-require 'wsdl/soap/wsdl2ruby'
-require 'soap/rpc/standaloneServer'
-require 'soap/wsdlDriver'
-
-if defined?(HTTPAccess2)
-
-module WSDL
-
-
-class TestQualified < Test::Unit::TestCase
-  class Server < ::SOAP::RPC::StandaloneServer
-    Namespace = 'http://www50.brinkster.com/vbfacileinpt/np'
-
-    def on_init
-      add_document_method(
-        self,
-        Namespace + '/GetPrimeNumbers',
-        'GetPrimeNumbers',
-        XSD::QName.new(Namespace, 'GetPrimeNumbers'),
-        XSD::QName.new(Namespace, 'GetPrimeNumbersResponse')
-      )
-    end
-  
-    def GetPrimeNumbers(arg)
-      nil
-    end
-  end
-
-  DIR = File.dirname(File.expand_path(__FILE__))
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_clientdef
-    @client = nil
-  end
-
-  def teardown
-    teardown_server
-    unless $DEBUG
-      File.unlink(pathname('default.rb'))
-      File.unlink(pathname('defaultDriver.rb'))
-    end
-    @client.reset_stream if @client
-  end
-
-  def setup_server
-    @server = Server.new('Test', "urn:lp", '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @server_thread = start_server_thread(@server)
-  end
-
-  def setup_clientdef
-    backupdir = Dir.pwd
-    begin
-      Dir.chdir(DIR)
-      gen = WSDL::SOAP::WSDL2Ruby.new
-      gen.location = pathname("np.wsdl")
-      gen.basedir = DIR
-      gen.logger.level = Logger::FATAL
-      gen.opt['classdef'] = nil
-      gen.opt['driver'] = nil
-      gen.opt['force'] = true
-      gen.run
-      require pathname('default.rb')
-    ensure
-      Dir.chdir(backupdir)
-    end
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def pathname(filename)
-    File.join(DIR, filename)
-  end
-
-  LOGIN_REQUEST_QUALIFIED_NS =
-%q[<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <n1:GetPrimeNumbers xmlns:n1="http://www50.brinkster.com/vbfacileinpt/np">
-      <n1:Max>10</n1:Max>
-    </n1:GetPrimeNumbers>
-  </env:Body>
-</env:Envelope>]
-
-  LOGIN_REQUEST_QUALIFIED =
-%q[<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <GetPrimeNumbers xmlns="http://www50.brinkster.com/vbfacileinpt/np">
-      <Max>10</Max>
-    </GetPrimeNumbers>
-  </env:Body>
-</env:Envelope>]
-
-  def test_wsdl
-    wsdl = File.join(DIR, 'np.wsdl')
-    @client = nil
-    backupdir = Dir.pwd
-    begin
-      Dir.chdir(DIR)
-      @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    ensure
-      Dir.chdir(backupdir)
-    end
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.wiredump_dev = str = ''
-    @client.GetPrimeNumbers(:Max => 10)
-    assert_equal(LOGIN_REQUEST_QUALIFIED_NS, parse_requestxml(str))
-  end
-
-  include ::SOAP
-  def test_naive
-    backupdir = Dir.pwd
-    begin
-      Dir.chdir(DIR)
-      require pathname('defaultDriver')
-    ensure
-      Dir.chdir(backupdir)
-    end
-    @client = PnumSoap.new("http://localhost:#{Port}/")
-
-    @client.wiredump_dev = str = ''
-    @client.getPrimeNumbers(GetPrimeNumbers.new(10))
-    assert_equal(LOGIN_REQUEST_QUALIFIED, parse_requestxml(str))
-  end
-
-  def parse_requestxml(str)
-    str.split(/\r?\n\r?\n/)[3]
-  end
-end
-
-
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/test_unqualified.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/qualified/test_unqualified.rb
deleted file mode 100644 (file)
index bcfed73..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-require 'test/unit'
-require 'wsdl/soap/wsdl2ruby'
-require 'soap/rpc/standaloneServer'
-require 'soap/wsdlDriver'
-
-if defined?(HTTPAccess2)
-
-module WSDL
-
-
-class TestUnqualified < Test::Unit::TestCase
-  class Server < ::SOAP::RPC::StandaloneServer
-    Namespace = 'urn:lp'
-
-    def on_init
-      add_document_method(
-        self,
-        Namespace + ':login',
-        'login',
-        XSD::QName.new(Namespace, 'login'),
-        XSD::QName.new(Namespace, 'loginResponse')
-      )
-    end
-  
-    def login(arg)
-      nil
-    end
-  end
-
-  DIR = File.dirname(File.expand_path(__FILE__))
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_clientdef
-    @client = nil
-  end
-
-  def teardown
-    teardown_server
-    File.unlink(pathname('lp.rb'))
-    File.unlink(pathname('lpDriver.rb'))
-    @client.reset_stream if @client
-  end
-
-  def setup_server
-    @server = Server.new('Test', "urn:lp", '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @server_thread = start_server_thread(@server)
-  end
-
-  def setup_clientdef
-    backupdir = Dir.pwd
-    begin
-      Dir.chdir(DIR)
-      gen = WSDL::SOAP::WSDL2Ruby.new
-      gen.location = pathname("lp.wsdl")
-      gen.basedir = DIR
-      gen.logger.level = Logger::FATAL
-      gen.opt['classdef'] = nil
-      gen.opt['driver'] = nil
-      gen.opt['force'] = true
-      gen.run
-      require pathname('lp')
-    ensure
-      Dir.chdir(backupdir)
-    end
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def pathname(filename)
-    File.join(DIR, filename)
-  end
-
-  LOGIN_REQUEST_QUALIFIED =
-%q[<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <n1:login xmlns:n1="urn:lp">
-      <username>NaHi</username>
-      <password>passwd</password>
-      <timezone>JST</timezone>
-    </n1:login>
-  </env:Body>
-</env:Envelope>]
-
-  def test_wsdl
-    wsdl = File.join(DIR, 'lp.wsdl')
-    @client = nil
-    backupdir = Dir.pwd
-    begin
-      Dir.chdir(DIR)
-      @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    ensure
-      Dir.chdir(backupdir)
-    end
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.wiredump_dev = str = ''
-    @client.login(:timezone => 'JST', :password => 'passwd',
-      :username => 'NaHi')
-    assert_equal(LOGIN_REQUEST_QUALIFIED, parse_requestxml(str))
-  end
-
-  include ::SOAP
-  def test_naive
-    backupdir = Dir.pwd
-    begin
-      Dir.chdir(DIR)
-      require pathname('lpDriver')
-    ensure
-      Dir.chdir(backupdir)
-    end
-    @client = Lp_porttype.new("http://localhost:#{Port}/")
-
-    @client.wiredump_dev = str = ''
-    @client.login(Login.new('NaHi', 'passwd', 'JST'))
-    assert_equal(LOGIN_REQUEST_QUALIFIED, parse_requestxml(str))
-  end
-
-  def parse_requestxml(str)
-    str.split(/\r?\n\r?\n/)[3]
-  end
-end
-
-
-end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/RAA.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/RAA.rb
deleted file mode 100644 (file)
index aff0525..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-# http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/
-class Category
-  @@schema_type = "Category"
-  @@schema_ns = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"
-
-  def major
-    @major
-  end
-
-  def major=(value)
-    @major = value
-  end
-
-  def minor
-    @minor
-  end
-
-  def minor=(value)
-    @minor = value
-  end
-
-  def initialize(major = nil,
-      minor = nil)
-    @major = major
-    @minor = minor
-  end
-end
-
-# http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/
-class Product
-  @@schema_type = "Product"
-  @@schema_ns = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"
-
-  def id
-    @id
-  end
-
-  def id=(value)
-    @id = value
-  end
-
-  def name
-    @name
-  end
-
-  def name=(value)
-    @name = value
-  end
-
-  def short_description
-    @short_description
-  end
-
-  def short_description=(value)
-    @short_description = value
-  end
-
-  def version
-    @version
-  end
-
-  def version=(value)
-    @version = value
-  end
-
-  def status
-    @status
-  end
-
-  def status=(value)
-    @status = value
-  end
-
-  def homepage
-    @homepage
-  end
-
-  def homepage=(value)
-    @homepage = value
-  end
-
-  def download
-    @download
-  end
-
-  def download=(value)
-    @download = value
-  end
-
-  def license
-    @license
-  end
-
-  def license=(value)
-    @license = value
-  end
-
-  def description
-    @description
-  end
-
-  def description=(value)
-    @description = value
-  end
-
-  def initialize(id = nil,
-      name = nil,
-      short_description = nil,
-      version = nil,
-      status = nil,
-      homepage = nil,
-      download = nil,
-      license = nil,
-      description = nil)
-    @id = id
-    @name = name
-    @short_description = short_description
-    @version = version
-    @status = status
-    @homepage = homepage
-    @download = download
-    @license = license
-    @description = description
-  end
-end
-
-# http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/
-class Owner
-  @@schema_type = "Owner"
-  @@schema_ns = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"
-
-  def id
-    @id
-  end
-
-  def id=(value)
-    @id = value
-  end
-
-  def email
-    @email
-  end
-
-  def email=(value)
-    @email = value
-  end
-
-  def name
-    @name
-  end
-
-  def name=(value)
-    @name = value
-  end
-
-  def initialize(id = nil,
-      email = nil,
-      name = nil)
-    @id = id
-    @email = email
-    @name = name
-  end
-end
-
-# http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/
-class Info
-  @@schema_type = "Info"
-  @@schema_ns = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"
-
-  def category
-    @category
-  end
-
-  def category=(value)
-    @category = value
-  end
-
-  def product
-    @product
-  end
-
-  def product=(value)
-    @product = value
-  end
-
-  def owner
-    @owner
-  end
-
-  def owner=(value)
-    @owner = value
-  end
-
-  def created
-    @created
-  end
-
-  def created=(value)
-    @created = value
-  end
-
-  def updated
-    @updated
-  end
-
-  def updated=(value)
-    @updated = value
-  end
-
-  def initialize(category = nil,
-      product = nil,
-      owner = nil,
-      created = nil,
-      updated = nil)
-    @category = category
-    @product = product
-    @owner = owner
-    @created = created
-    @updated = updated
-  end
-end
-
-# http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/
-class InfoArray < Array
-  # Contents type should be dumped here...
-  @@schema_type = "InfoArray"
-  @@schema_ns = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"
-end
-
-# http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/
-class StringArray < Array
-  # Contents type should be dumped here...
-  @@schema_type = "StringArray"
-  @@schema_ns = "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"
-end
-
-# http://xml.apache.org/xml-soap
-class Map < Array
-  # Contents type should be dumped here...
-  @@schema_type = "Map"
-  @@schema_ns = "http://xml.apache.org/xml-soap"
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/RAAServant.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/RAAServant.rb
deleted file mode 100644 (file)
index 68380f8..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-class RAABaseServicePortType
-  # SYNOPSIS
-  #   getAllListings
-  #
-  # ARGS
-  #   N/A
-  #
-  # RETURNS
-  #   return           StringArray - {http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/}StringArray
-  #
-  # RAISES
-  #   (undefined)
-  #
-  def getAllListings
-    #raise NotImplementedError.new
-    ["ruby", "soap4r"]
-  end
-  
-  # SYNOPSIS
-  #   getProductTree
-  #
-  # ARGS
-  #   N/A
-  #
-  # RETURNS
-  #   return           Map - {http://xml.apache.org/xml-soap}Map
-  #
-  # RAISES
-  #   (undefined)
-  #
-  def getProductTree
-    raise NotImplementedError.new
-  end
-  
-  # SYNOPSIS
-  #   getInfoFromCategory(category)
-  #
-  # ARGS
-  #   category         Category - {http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/}Category
-  #
-  # RETURNS
-  #   return           InfoArray - {http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/}InfoArray
-  #
-  # RAISES
-  #   (undefined)
-  #
-  def getInfoFromCategory(category)
-    raise NotImplementedError.new
-  end
-  
-  # SYNOPSIS
-  #   getModifiedInfoSince(timeInstant)
-  #
-  # ARGS
-  #   timeInstant               - {http://www.w3.org/2001/XMLSchema}dateTime
-  #
-  # RETURNS
-  #   return           InfoArray - {http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/}InfoArray
-  #
-  # RAISES
-  #   (undefined)
-  #
-  def getModifiedInfoSince(timeInstant)
-    raise NotImplementedError.new
-  end
-  
-  # SYNOPSIS
-  #   getInfoFromName(productName)
-  #
-  # ARGS
-  #   productName               - {http://www.w3.org/2001/XMLSchema}string
-  #
-  # RETURNS
-  #   return           Info - {http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/}Info
-  #
-  # RAISES
-  #   (undefined)
-  #
-  def getInfoFromName(productName)
-    raise NotImplementedError.new
-  end
-  
-  # SYNOPSIS
-  #   getInfoFromOwnerId(ownerId)
-  #
-  # ARGS
-  #   ownerId           - {http://www.w3.org/2001/XMLSchema}int
-  #
-  # RETURNS
-  #   return           InfoArray - {http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/}InfoArray
-  #
-  # RAISES
-  #   (undefined)
-  #
-  def getInfoFromOwnerId(ownerId)
-    raise NotImplementedError.new
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/RAAService.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/RAAService.rb
deleted file mode 100644 (file)
index 9d08133..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/usr/bin/env ruby
-require 'RAAServant.rb'
-
-require 'soap/rpc/standaloneServer'
-
-class RAABaseServicePortType
-  MappingRegistry = SOAP::Mapping::Registry.new
-
-  MappingRegistry.set(
-    StringArray,
-    ::SOAP::SOAPArray,
-    ::SOAP::Mapping::Registry::TypedArrayFactory,
-    { :type => XSD::QName.new("http://www.w3.org/2001/XMLSchema", "string") }
-  )
-  MappingRegistry.set(
-    Map,
-    ::SOAP::SOAPArray,
-    ::SOAP::Mapping::Registry::TypedArrayFactory,
-    { :type => XSD::QName.new("http://www.w3.org/2001/XMLSchema", "anyType") }
-  )
-  MappingRegistry.set(
-    Category,
-    ::SOAP::SOAPStruct,
-    ::SOAP::Mapping::Registry::TypedStructFactory,
-    { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Category") }
-  )
-  MappingRegistry.set(
-    InfoArray,
-    ::SOAP::SOAPArray,
-    ::SOAP::Mapping::Registry::TypedArrayFactory,
-    { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info") }
-  )
-  MappingRegistry.set(
-    Info,
-    ::SOAP::SOAPStruct,
-    ::SOAP::Mapping::Registry::TypedStructFactory,
-    { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info") }
-  )
-  MappingRegistry.set(
-    Product,
-    ::SOAP::SOAPStruct,
-    ::SOAP::Mapping::Registry::TypedStructFactory,
-    { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Product") }
-  )
-  MappingRegistry.set(
-    Owner,
-    ::SOAP::SOAPStruct,
-    ::SOAP::Mapping::Registry::TypedStructFactory,
-    { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Owner") }
-  )
-
-
-  Methods = [
-    ["getAllListings", "getAllListings", [
-      ["retval", "return",
-       [::SOAP::SOAPArray, "http://www.w3.org/2001/XMLSchema", "string"]]], "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
-    ["getProductTree", "getProductTree", [
-      ["retval", "return",
-       [::SOAP::SOAPArray, "http://www.w3.org/2001/XMLSchema", "anyType"]]], "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
-    ["getInfoFromCategory", "getInfoFromCategory", [
-      ["in", "category",
-       [::SOAP::SOAPStruct, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Category"]],
-      ["retval", "return",
-       [::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]], "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
-    ["getModifiedInfoSince", "getModifiedInfoSince", [
-      ["in", "timeInstant",
-       [SOAP::SOAPDateTime]],
-      ["retval", "return",
-       [::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]], "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
-    ["getInfoFromName", "getInfoFromName", [
-      ["in", "productName",
-       [SOAP::SOAPString]],
-      ["retval", "return",
-       [::SOAP::SOAPStruct, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]], "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
-    ["getInfoFromOwnerId", "getInfoFromOwnerId", [
-      ["in", "ownerId",
-       [SOAP::SOAPInt]],
-      ["retval", "return",
-       [::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]], "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"]
-  ]
-end
-
-class App < SOAP::RPC::StandaloneServer
-  def initialize(*arg)
-    super
-
-    servant = RAABaseServicePortType.new
-    RAABaseServicePortType::Methods.each do |name_as, name, params, soapaction, namespace|
-      qname = XSD::QName.new(namespace, name_as)
-      @router.add_method(servant, qname, soapaction, name, params)
-    end
-
-    self.mapping_registry = RAABaseServicePortType::MappingRegistry
-  end
-end
-
-# Change listen port.
-if $0 == __FILE__
-  App.new('app', nil, '0.0.0.0', 10080).start
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/README.txt b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/README.txt
deleted file mode 100644 (file)
index efbaf9d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-RAAServant.rb: based on the file which is generated with the following command;
-  bin/wsdl2ruby.rb --wsdl raa.wsdl --servant_skelton --force
-
-RAAService.rb: generated with the following command;
-  bin/wsdl2ruby.rb --wsdl raa.wsdl --standalone_server_stub --force
-
-RAA.rb: generated with the following command;
-  bin/wsdl2ruby.rb --wsdl raa.wsdl --classdef --force
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/raa.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/raa.wsdl
deleted file mode 100644 (file)
index 7837689..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-<?xml version="1.0"?>
-<definitions
-    name="RAA"
-    targetNamespace="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"
-    xmlns:tns="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"
-    xmlns:txd="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"
-    xmlns="http://schemas.xmlsoap.org/wsdl/"
-    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
-    xmlns:apachesoap="http://xml.apache.org/xml-soap">
-
-  <types>
-    <schema
-       xmlns="http://www.w3.org/2001/XMLSchema"
-       targetNamespace="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/">
-
-      <complexType name="Category">
-       <all>
-         <element name="major" type="string"/>
-         <element name="minor" type="string"/>
-       </all>
-      </complexType>
-
-      <complexType name="Product">
-       <all>
-         <element name="id" type="int"/>
-         <element name="name" type="string"/>
-         <element name="short_description" type="string"/>
-         <element name="version" type="string"/>
-         <element name="status" type="string"/>
-         <element name="homepage" type="anyURI"/>
-         <element name="download" type="anyURI"/>
-         <element name="license" type="string"/>
-         <element name="description" type="string"/>
-       </all>
-      </complexType>
-
-      <complexType name="Owner">
-       <all>
-         <element name="id" type="int"/>
-         <element name="email" type="anyURI"/>
-         <element name="name" type="string"/>
-       </all>
-      </complexType>
-
-      <complexType name="Info">
-       <all>
-         <element name="category" type="txd:Category"/>
-         <element name="product" type="txd:Product"/>
-         <element name="owner" type="txd:Owner"/>
-         <element name="created" type="xsd:dateTime"/>
-         <element name="updated" type="xsd:dateTime"/>
-       </all>
-      </complexType>
-
-      <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
-      <complexType name="InfoArray">
-       <complexContent>
-         <restriction base="soapenc:Array">
-           <attribute ref="soapenc:arrayType" wsdl:arrayType="txd:Info[]"/>
-         </restriction>
-       </complexContent>
-      </complexType>
-
-      <complexType name="StringArray">
-       <complexContent>
-         <restriction base="soapenc:Array">
-           <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
-         </restriction>
-       </complexContent>
-      </complexType>
-    </schema>
-
-    <!-- type definition for ApacheSOAP's Map -->
-    <schema
-       xmlns="http://www.w3.org/2001/XMLSchema"
-       targetNamespace="http://xml.apache.org/xml-soap">
-      <complexType name="Map">
-       <sequence>
-         <element name="item" minOccurs="0" maxOccurs="unbounded">
-           <complexType>
-             <sequence>
-               <element name="key" type="anyType" />
-               <element name="value" type="anyType" />
-             </sequence>
-           </complexType>
-         </element>
-       </sequence>
-      </complexType>
-    </schema>
-  </types>
-
-  <message name="getAllListingsRequest"/>
-  <message name="getAllListingsResponse">
-    <part name="return" type="txd:StringArray"/>
-  </message>
-
-  <message name="getProductTreeRequest"/>
-  <message name="getProductTreeResponse">
-    <part name="return" type="apachesoap:Map"/>
-  </message>
-
-  <message name="getInfoFromCategoryRequest">
-    <part name="category" type="txd:Category"/>
-  </message>
-  <message name="getInfoFromCategoryResponse">
-    <part name="return" type="txd:InfoArray"/>
-  </message>
-
-  <message name="getModifiedInfoSinceRequest">
-    <part name="timeInstant" type="xsd:dateTime"/>
-  </message>
-  <message name="getModifiedInfoSinceResponse">
-    <part name="return" type="txd:InfoArray"/>
-  </message>
-
-  <message name="getInfoFromNameRequest">
-    <part name="productName" type="xsd:string"/>
-  </message>
-  <message name="getInfoFromNameResponse">
-    <part name="return" type="txd:Info"/>
-  </message>
-
-  <message name="getInfoFromOwnerIdRequest">
-    <part name="ownerId" type="xsd:int"/>
-  </message>
-  <message name="getInfoFromOwnerIdResponse">
-    <part name="return" type="txd:InfoArray"/>
-  </message>
-
-  <portType name="RAABaseServicePortType">
-    <operation name="getAllListings"
-       parameterOrder="">
-      <input message="tns:getAllListingsRequest"/>
-      <output message="tns:getAllListingsResponse"/>
-    </operation>
-
-    <operation name="getProductTree"
-       parameterOrder="">
-      <input message="tns:getProductTreeRequest"/>
-      <output message="tns:getProductTreeResponse"/>
-    </operation>
-
-    <operation name="getInfoFromCategory"
-       parameterOrder="category">
-      <input message="tns:getInfoFromCategoryRequest"/>
-      <output message="tns:getInfoFromCategoryResponse"/>
-    </operation>
-
-    <operation name="getModifiedInfoSince"
-       parameterOrder="timeInstant">
-      <input message="tns:getModifiedInfoSinceRequest"/>
-      <output message="tns:getModifiedInfoSinceResponse"/>
-    </operation>
-
-    <operation name="getInfoFromName"
-       parameterOrder="productName">
-      <input message="tns:getInfoFromNameRequest"/>
-      <output message="tns:getInfoFromNameResponse"/>
-    </operation>
-
-    <operation name="getInfoFromOwnerId"
-       parameterOrder="ownerId">
-      <input message="tns:getInfoFromOwnerIdRequest"/>
-      <output message="tns:getInfoFromOwnerIdResponse"/>
-    </operation>
-  </portType>
-
-  <binding name="RAABaseServicePortBinding" type="tns:RAABaseServicePortType">
-    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
-
-    <operation name="getAllListings">
-      <soap:operation soapAction=""/>
-      <input>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"/>
-      </input>
-      <output>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"/>
-      </output>
-    </operation>
-
-    <operation name="getProductTree">
-      <soap:operation soapAction=""/>
-      <input>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"/>
-      </input>
-      <output>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"/>
-      </output>
-    </operation>
-
-    <operation name="getInfoFromCategory">
-      <soap:operation soapAction=""/>
-      <input>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"/>
-      </input>
-      <output>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"/>
-      </output>
-    </operation>
-
-    <operation name="getModifiedInfoSince">
-      <soap:operation soapAction=""/>
-      <input>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"/>
-      </input>
-      <output>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"/>
-      </output>
-    </operation>
-
-    <operation name="getInfoFromName">
-      <soap:operation soapAction=""/>
-      <input>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"/>
-      </input>
-      <output>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"/>
-      </output>
-    </operation>
-
-    <operation name="getInfoFromOwnerId">
-      <soap:operation soapAction=""/>
-      <input>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"/>
-      </input>
-      <output>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"/>
-      </output>
-    </operation>
-  </binding>
-
-  <service name="RAAService">
-    <port name="RAABaseServicePort" binding="tns:RAABaseServicePortBinding">
-      <soap:address location="http://raa.ruby-lang.org/soap/1.0.2/"/>
-    </port>
-  </service>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/server.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/server.rb
deleted file mode 100644 (file)
index 87bbc6f..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/usr/bin/env ruby
-require 'soap/rpc/standaloneServer'
-require 'RAA.rb'
-
-class RAABaseServicePortType
-  MappingRegistry = SOAP::Mapping::Registry.new
-
-  MappingRegistry.set(
-    StringArray,
-    ::SOAP::SOAPArray,
-    ::SOAP::Mapping::Registry::TypedArrayFactory,
-    { :type => XSD::QName.new("http://www.w3.org/2001/XMLSchema", "string") }
-  )
-  MappingRegistry.set(
-    Map,
-    ::SOAP::SOAPStruct,
-    ::SOAP::Mapping::Registry::TypedStructFactory,
-    { :type => XSD::QName.new("http://xml.apache.org/xml-soap", "Map") }
-  )
-  MappingRegistry.set(
-    Category,
-    ::SOAP::SOAPStruct,
-    ::SOAP::Mapping::Registry::TypedStructFactory,
-    { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Category") }
-  )
-  MappingRegistry.set(
-    InfoArray,
-    ::SOAP::SOAPArray,
-    ::SOAP::Mapping::Registry::TypedArrayFactory,
-    { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info") }
-  )
-  MappingRegistry.set(
-    Info,
-    ::SOAP::SOAPStruct,
-    ::SOAP::Mapping::Registry::TypedStructFactory,
-    { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info") }
-  )
-  MappingRegistry.set(
-    Product,
-    ::SOAP::SOAPStruct,
-    ::SOAP::Mapping::Registry::TypedStructFactory,
-    { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Product") }
-  )
-  MappingRegistry.set(
-    Owner,
-    ::SOAP::SOAPStruct,
-    ::SOAP::Mapping::Registry::TypedStructFactory,
-    { :type => XSD::QName.new("http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Owner") }
-  )
-  
-  Methods = [
-    ["getAllListings", "getAllListings", [
-      ["retval", "return",
-       [::SOAP::SOAPArray, "http://www.w3.org/2001/XMLSchema", "string"]]],
-     "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
-    ["getProductTree", "getProductTree", [
-      ["retval", "return",
-       [::SOAP::SOAPStruct, "http://xml.apache.org/xml-soap", "Map"]]],
-     "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
-    ["getInfoFromCategory", "getInfoFromCategory", [
-      ["in", "category",
-       [::SOAP::SOAPStruct, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Category"]],
-      ["retval", "return",
-       [::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]],
-     "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
-    ["getModifiedInfoSince", "getModifiedInfoSince", [
-      ["in", "timeInstant",
-       [SOAP::SOAPDateTime]],
-      ["retval", "return",
-       [::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]],
-     "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
-    ["getInfoFromName", "getInfoFromName", [
-      ["in", "productName",
-       [SOAP::SOAPString]],
-      ["retval", "return",
-       [::SOAP::SOAPStruct, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]],
-     "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"],
-    ["getInfoFromOwnerId", "getInfoFromOwnerId", [
-      ["in", "ownerId",
-       [SOAP::SOAPInt]],
-      ["retval", "return",
-       [::SOAP::SOAPArray, "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/", "Info"]]],
-     "", "http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.2/"]
-  ]
-
-  def getAllListings
-    ["ruby", "soap4r"]
-  end
-end
-
-class RAABaseServiceServer < SOAP::RPC::StandaloneServer
-  def initialize(*arg)
-    super
-
-    servant = RAABaseServicePortType.new
-    RAABaseServicePortType::Methods.each do |name_as, name, params, soapaction, namespace|
-      qname = XSD::QName.new(namespace, name_as)
-      @router.add_method(servant, qname, soapaction, name, params)
-    end
-
-    self.mapping_registry = RAABaseServicePortType::MappingRegistry
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/test_raa.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/raa/test_raa.rb
deleted file mode 100644 (file)
index 0b00042..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-require 'test/unit'
-require 'soap/wsdlDriver'
-require 'RAA.rb'
-require 'RAAServant.rb'
-require 'RAAService.rb'
-
-
-module WSDL
-module RAA
-
-
-class TestRAA < Test::Unit::TestCase
-  DIR = File.dirname(File.expand_path(__FILE__))
-
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_client
-  end
-
-  def setup_server
-    @server = App.new('RAA server', nil, '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @t = Thread.new {
-      Thread.current.abort_on_exception = true
-      @server.start
-    }
-  end
-
-  def setup_client
-    wsdl = File.join(DIR, 'raa.wsdl')
-    @raa = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    @raa.endpoint_url = "http://localhost:#{Port}/"
-  end
-
-  def teardown
-    teardown_server
-    teardown_client
-  end
-
-  def teardown_server
-    @server.shutdown
-    @t.kill
-    @t.join
-  end
-
-  def teardown_client
-    @raa.reset_stream
-  end
-
-  def test_raa
-    assert_equal(["ruby", "soap4r"], @raa.getAllListings)
-  end
-
-  def foo
-    p @raa.getProductTree()
-    p @raa.getInfoFromCategory(Category.new("Library", "XML"))
-    t = Time.at(Time.now.to_i - 24 * 3600)
-    p @raa.getModifiedInfoSince(t)
-    p @raa.getModifiedInfoSince(DateTime.new(t.year, t.mon, t.mday, t.hour, t.min, t.sec))
-    o = @raa.getInfoFromName("SOAP4R")
-    p o.type
-    p o.owner.name
-    p o
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/ref/expectedProduct.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/ref/expectedProduct.rb
deleted file mode 100644 (file)
index 91c6e4c..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-require 'xsd/qname'
-
-# {urn:product}Rating
-module Rating
-  C_0 = "0"
-  C_1 = "+1"
-  C_1_2 = "-1"
-end
-
-# {urn:product}Product-Bag
-class ProductBag
-  @@schema_type = "Product-Bag"
-  @@schema_ns = "urn:product"
-  @@schema_attribute = {XSD::QName.new("urn:product", "version") => "SOAP::SOAPString", XSD::QName.new("urn:product", "yesno") => "SOAP::SOAPString"}
-  @@schema_element = [["bag", ["Product[]", XSD::QName.new(nil, "bag")]], ["rating", ["SOAP::SOAPString[]", XSD::QName.new("urn:product", "Rating")]], ["product_Bag", [nil, XSD::QName.new("urn:product", "Product-Bag")]], ["comment_1", [nil, XSD::QName.new(nil, "comment_1")]], ["comment_2", ["Comment[]", XSD::QName.new(nil, "comment-2")]]]
-
-  attr_accessor :bag
-  attr_accessor :product_Bag
-  attr_accessor :comment_1
-  attr_accessor :comment_2
-
-  def Rating
-    @rating
-  end
-
-  def Rating=(value)
-    @rating = value
-  end
-
-  def xmlattr_version
-    (@__xmlattr ||= {})[XSD::QName.new("urn:product", "version")]
-  end
-
-  def xmlattr_version=(value)
-    (@__xmlattr ||= {})[XSD::QName.new("urn:product", "version")] = value
-  end
-
-  def xmlattr_yesno
-    (@__xmlattr ||= {})[XSD::QName.new("urn:product", "yesno")]
-  end
-
-  def xmlattr_yesno=(value)
-    (@__xmlattr ||= {})[XSD::QName.new("urn:product", "yesno")] = value
-  end
-
-  def initialize(bag = [], rating = [], product_Bag = nil, comment_1 = [], comment_2 = [])
-    @bag = bag
-    @rating = rating
-    @product_Bag = product_Bag
-    @comment_1 = comment_1
-    @comment_2 = comment_2
-    @__xmlattr = {}
-  end
-end
-
-# {urn:product}Creator
-class Creator
-  @@schema_type = "Creator"
-  @@schema_ns = "urn:product"
-  @@schema_element = []
-
-  def initialize
-  end
-end
-
-# {urn:product}Product
-class Product
-  @@schema_type = "Product"
-  @@schema_ns = "urn:product"
-  @@schema_element = [["name", ["SOAP::SOAPString", XSD::QName.new(nil, "name")]], ["rating", ["SOAP::SOAPString", XSD::QName.new("urn:product", "Rating")]]]
-
-  attr_accessor :name
-
-  def Rating
-    @rating
-  end
-
-  def Rating=(value)
-    @rating = value
-  end
-
-  def initialize(name = nil, rating = nil)
-    @name = name
-    @rating = rating
-  end
-end
-
-# {urn:product}Comment
-class Comment < String
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/ref/product.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/ref/product.wsdl
deleted file mode 100644 (file)
index 993fe21..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0"?>
-<definitions name="product"
-    targetNamespace="urn:product"
-    xmlns:tns="urn:product"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-  <types>
-    <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
-        targetNamespace="urn:product">
-      <simpleType name="non-empty-string">
-        <restriction base="xsd:string">
-          <minLength value="1"/>
-        </restriction>
-      </simpleType>
-
-      <complexType name="Product">
-        <all>
-          <element name="name" type="xsd:string"/>
-          <element ref="tns:Rating"/>
-        </all>
-      </complexType>
-
-      <complexType name="Comment">
-        <simpleContent>
-          <extension base="xsd:string">
-            <attribute name="msgid" type="xsd:string" use="required"/>
-          </extension>
-        </simpleContent>
-      </complexType>
-
-      <attribute name="version" type="tns:non-empty-string"/>
-
-      <attribute default="Y" name="yesno">
-        <simpleType>
-          <restriction base="xsd:string">
-            <enumeration value="Y"/>
-            <enumeration value="N"/>
-          </restriction>
-        </simpleType>
-      </attribute>
-
-      <element name="Rating">
-        <simpleType>
-          <restriction base="xsd:string">
-            <enumeration value="+1"/>
-            <enumeration value="0"/>
-            <enumeration value="-1"/>
-          </restriction>
-        </simpleType>
-      </element>
-
-      <element name="Product-Bag">
-        <complexType>
-          <sequence>
-            <element name="bag" type="tns:Product" minOccurs="0" maxOccurs="unbounded"/>
-            <element ref="tns:Rating" minOccurs="0" maxOccurs="unbounded"/>
-            <element ref="tns:Product-Bag"/>
-            <element name="comment_1" minOccurs="0" maxOccurs="unbounded">
-              <complexType>
-                <simpleContent>
-                  <extension base="xsd:string">
-                    <attribute name="msgid" type="xsd:string" use="required"/>
-                  </extension>
-                </simpleContent>
-              </complexType>
-            </element>
-            <element name="comment-2" type="tns:Comment" minOccurs="0" maxOccurs="unbounded"/>
-          </sequence>
-          <attribute ref="tns:version"/>
-          <attribute ref="tns:yesno"/>
-        </complexType>
-      </element>
-
-      <element name="Creator" minOccurs="0" maxOccurs="unbounded">
-        <complexType>
-          <simpleContent>
-            <extension base="xsd:string">
-              <attribute name="Role" type="xs:string" use="required"/>
-            </extension>
-          </simpleContent>
-        </complexType>
-      </element>
-    </xsd:schema>
-  </types>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/ref/test_ref.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/ref/test_ref.rb
deleted file mode 100644 (file)
index 9e29fa3..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/standaloneServer'
-require 'soap/wsdlDriver'
-require 'wsdl/soap/wsdl2ruby'
-
-
-module WSDL
-module Ref
-
-
-class TestRef < Test::Unit::TestCase
-  DIR = File.dirname(File.expand_path(__FILE__))
-  Port = 17171
-
-  def test_classdef
-    gen = WSDL::SOAP::WSDL2Ruby.new
-    gen.location = pathname("product.wsdl")
-    gen.basedir = DIR
-    gen.logger.level = Logger::FATAL
-    gen.opt['classdef'] = nil
-    gen.opt['force'] = true
-    suppress_warning do
-      gen.run
-    end
-    compare("expectedProduct.rb", "product.rb")
-    File.unlink(pathname('product.rb'))
-  end
-
-  def compare(expected, actual)
-    assert_equal(loadfile(expected), loadfile(actual), actual)
-  end
-
-  def loadfile(file)
-    File.open(pathname(file)) { |f| f.read }
-  end
-
-  def pathname(filename)
-    File.join(DIR, filename)
-  end
-
-  def suppress_warning
-    back = $VERBOSE
-    $VERBOSE = nil
-    begin
-      yield
-    ensure
-      $VERBOSE = back
-    end
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/echoDriver.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/echoDriver.rb
deleted file mode 100644 (file)
index 51e8207..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-require 'echo.rb'
-
-require 'soap/rpc/driver'
-
-class Echo_port_type < ::SOAP::RPC::Driver
-  DefaultEndpointUrl = "http://localhost:10080"
-  MappingRegistry = ::SOAP::Mapping::Registry.new
-
-  MappingRegistry.set(
-    Person,
-    ::SOAP::SOAPStruct,
-    ::SOAP::Mapping::Registry::TypedStructFactory,
-    { :type => XSD::QName.new("urn:rpc-type", "person") }
-  )
-
-  Methods = [
-    ["echo", "echo",
-      [
-        ["in", "arg1", [::SOAP::SOAPStruct, "urn:rpc-type", "person"]],
-        ["in", "arg2", [::SOAP::SOAPStruct, "urn:rpc-type", "person"]],
-        ["retval", "return", [::SOAP::SOAPStruct, "urn:rpc-type", "person"]]
-      ],
-      "", "urn:rpc", :rpc
-    ]
-  ]
-
-  def initialize(endpoint_url = nil)
-    endpoint_url ||= DefaultEndpointUrl
-    super(endpoint_url, nil)
-    self.mapping_registry = MappingRegistry
-    init_methods
-  end
-
-private
-
-  def init_methods
-    Methods.each do |name_as, name, params, soapaction, namespace, style|
-      qname = XSD::QName.new(namespace, name_as)
-      if style == :document
-        @proxy.add_document_method(soapaction, name, params)
-        add_document_method_interface(name, params)
-      else
-        @proxy.add_rpc_method(qname, soapaction, name, params)
-        add_rpc_method_interface(name, params)
-      end
-      if name_as != name and name_as.capitalize == name.capitalize
-        sclass = class << self; self; end
-        sclass.__send__(:define_method, name_as, proc { |*arg|
-          __send__(name, *arg)
-        })
-      end
-    end
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/echo_serviceClient.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/echo_serviceClient.rb
deleted file mode 100644 (file)
index 4026483..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env ruby
-require 'echoDriver.rb'
-
-endpoint_url = ARGV.shift
-obj = Echo_port_type.new(endpoint_url)
-
-# Uncomment the below line to see SOAP wiredumps.
-# obj.wiredump_dev = STDERR
-
-# SYNOPSIS
-#   echo(arg1, arg2)
-#
-# ARGS
-#   arg1            Person - {urn:rpc-type}person
-#   arg2            Person - {urn:rpc-type}person
-#
-# RETURNS
-#   v_return        Person - {urn:rpc-type}person
-#
-arg1 = arg2 = nil
-puts obj.echo(arg1, arg2)
-
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/rpc.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/rpc.wsdl
deleted file mode 100644 (file)
index b0ee5c5..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<definitions name="echo"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:tns="urn:rpc"
-    xmlns:txd="urn:rpc-type"
-    targetNamespace="urn:rpc"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-  <types>
-    <xsd:schema targetNamespace="urn:rpc-type">
-      <xsd:complexType name="person">
-       <xsd:all>
-         <xsd:element name="family-name" type="xsd:string" />
-         <xsd:element name="given_name" type="xsd:string" />
-         <xsd:element name="age" type="xsd:int" />
-         <xsd:element name="link" type="txd:person" />
-       </xsd:all>
-      </xsd:complexType>
-    </xsd:schema>
-  </types>
-
-  <message name="echo_in">
-    <part name="arg1" type="txd:person"/>
-    <part name="arg2" type="txd:person"/>
-  </message>
-
-  <message name="echo_out">
-    <part name="return" type="txd:person"/>
-  </message>
-
-  <portType name="echo_port_type">
-    <operation name="echo">
-      <input message="tns:echo_in"/>
-      <output message="tns:echo_out"/>
-    </operation>
-
-    <operation name="echo_err">
-      <input message="tns:echo_in"/>
-      <output message="tns:echo_out"/>
-    </operation>
-  </portType>
-
-  <binding name="echo_binding" type="tns:echo_port_type">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
-    <operation name="echo">
-      <soap:operation soapAction=""/>
-      <input>
-        <soap:body use="encoded" namespace="urn:rpc"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="urn:rpc"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-
-    <operation name="echo_err">
-      <soap:operation soapAction=""/>
-      <input>
-        <soap:body use="encoded" namespace="urn:rpc"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="urn:rpc"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-  </binding>
-
-  <service name="echo_service">
-    <port name="echo_port" binding="tns:echo_binding">
-      <soap:address location="http://localhost:10080"/>
-    </port>
-  </service>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/test-rpc-lit.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/test-rpc-lit.wsdl
deleted file mode 100644 (file)
index 72de747..0000000
+++ /dev/null
@@ -1,364 +0,0 @@
-<?xml version="1.0"?>
-
-<definitions name="RPC-Literal-TestDefinitions"
-  targetNamespace="http://whitemesa.net/wsdl/rpc-lit-test"
-  xmlns="http://schemas.xmlsoap.org/wsdl/"
-  xmlns:soap11="http://schemas.xmlsoap.org/wsdl/soap/"
-  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-  xmlns:tns="http://whitemesa.net/wsdl/rpc-lit-test"
-  xmlns:types="http://soapbuilders.org/rpc-lit-test/types"
-  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
-  <types>
-    <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soapbuilders.org/rpc-lit-test/types">
-
-      <element name="stringItem" type="xsd:string" />
-      <complexType name="ArrayOfstring">
-        <sequence>
-          <element ref="types:stringItem" minOccurs="0" maxOccurs="unbounded"/>
-        </sequence>
-      </complexType>
-
-      <complexType name="ArrayOfstringInline">
-        <sequence>
-          <element name="stringItem" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
-        </sequence>
-      </complexType>
-
-      <complexType name="ArrayOfint">
-        <sequence>
-          <element name="integer" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
-        </sequence>
-      </complexType>
-
-      <element name="structItem" type="types:SOAPStruct" />
-      <complexType name="SOAPStruct">
-        <all>
-          <element name="varString" type="xsd:string"/>
-          <element name="varInt" type="xsd:int"/>
-          <element name="varFloat" type="xsd:float"/>
-        </all>
-      </complexType>
-
-      <complexType name="ArrayOfSOAPStruct">
-        <sequence>
-          <element ref="types:structItem" minOccurs="0" maxOccurs="unbounded"/>
-        </sequence>
-      </complexType>
-
-      <complexType name="SOAPStructStruct">
-        <all>
-          <element name="varString" type="xsd:string"/>
-          <element name="varInt" type="xsd:int"/>
-          <element name="varFloat" type="xsd:float"/>
-          <element ref="types:structItem" />
-        </all>
-      </complexType>
-
-      <complexType name="SOAPArrayStruct">
-        <all>
-          <element name="varString" type="xsd:string"/>
-          <element name="varInt" type="xsd:int"/>
-          <element name="varFloat" type="xsd:float"/>
-          <element name="varArray" type="types:ArrayOfstring"/>
-        </all>
-      </complexType>
-
-    </schema>
-
-  </types>
-
-  <!-- echoStruct rpc operation -->
-  <message name="echoStructRequest">
-    <part name="inputStruct" type="types:SOAPStruct"/>
-  </message>
-  <message name="echoStructResponse">
-    <part name="return" type="types:SOAPStruct"/>
-  </message>
-
-  <!-- echoStructArray rpc operation -->
-  <message name="echoStructArrayRequest">
-    <part name="inputStructArray" type="types:ArrayOfSOAPStruct"/>
-  </message>
-  <message name="echoStructArrayResponse">
-    <part name="return" type="types:ArrayOfSOAPStruct"/>
-  </message>
-
-  <!-- echoStructAsSimpleTypes rpc operation -->
-  <message name="echoStructAsSimpleTypesRequest">
-    <part name="inputStruct" type="types:SOAPStruct"/>
-  </message>
-  <message name="echoStructAsSimpleTypesResponse">
-    <part name="outputString" type="xsd:string"/>
-    <part name="outputInteger" type="xsd:int"/>
-    <part name="outputFloat" type="xsd:float"/>
-  </message>
-
-  <!-- echoSimpleTypesAsStruct rpc operation -->
-  <message name="echoSimpleTypesAsStructRequest">
-    <part name="inputString" type="xsd:string"/>
-    <part name="inputInteger" type="xsd:int"/>
-    <part name="inputFloat" type="xsd:float"/>
-  </message>
-  <message name="echoSimpleTypesAsStructResponse">
-    <part name="return" type="types:SOAPStruct"/>
-  </message>
-
-  <!-- echoNestedStruct rpc operation -->
-  <message name="echoNestedStructRequest">
-    <part name="inputStruct" type="types:SOAPStructStruct"/>
-  </message>
-  <message name="echoNestedStructResponse">
-    <part name="return" type="types:SOAPStructStruct"/>
-  </message>
-
-  <!-- echoNestedArray rpc operation -->
-  <message name="echoNestedArrayRequest">
-    <part name="inputStruct" type="types:SOAPArrayStruct"/>
-  </message>
-  <message name="echoNestedArrayResponse">
-    <part name="return" type="types:SOAPArrayStruct"/>
-  </message>
-
-  <!-- echoStringArray rpc operation -->
-  <message name="echoStringArrayRequest">
-    <part name="inputStringArray" type="types:ArrayOfstring"/>
-  </message>
-  <message name="echoStringArrayResponse">
-    <part name="return" type="types:ArrayOfstring"/>
-  </message>
-
-  <message name="echoStringArrayInlineRequest">
-    <part name="inputStringArray" type="types:ArrayOfstringInline"/>
-  </message>
-  <message name="echoStringArrayInlineResponse">
-    <part name="return" type="types:ArrayOfstringInline"/>
-  </message>
-
-  <!-- echoIntegerArray rpc operation -->
-  <message name="echoIntegerArrayRequest">
-    <part name="inputIntegerArray" type="types:ArrayOfint"/>
-  </message>
-  <message name="echoIntegerArrayResponse">
-    <part name="return" type="types:ArrayOfint"/>
-  </message>
-
-  <!-- echoBoolean rpc operation -->
-  <message name="echoBooleanRequest">
-    <part name="inputBoolean" type="xsd:boolean"/>
-  </message>
-  <message name="echoBooleanResponse">
-    <part name="return" type="xsd:boolean"/>
-  </message>
-
-  <!-- echoString rpc operation -->
-  <message name="echoStringRequest">
-    <part name="inputString" type="xsd:string"/>
-  </message>
-  <message name="echoStringResponse">
-    <part name="return" type="xsd:string"/>
-  </message>
-
-
-  <portType name="SoapTestPortTypeRpc">
-
-    <!-- echoStruct rpc operation -->
-    <operation name="echoStruct" parameterOrder="inputStruct">
-      <input message="tns:echoStructRequest"/>
-      <output message="tns:echoStructResponse"/>
-    </operation>
-
-    <!-- echoStructArray rpc operation -->
-    <operation name="echoStructArray" parameterOrder="inputStructArray">
-      <input message="tns:echoStructArrayRequest"/>
-      <output message="tns:echoStructArrayResponse"/>
-    </operation>
-
-    <!-- echoStructAsSimpleTypes rpc operation -->
-    <operation name="echoStructAsSimpleTypes" parameterOrder="inputStruct outputString outputInteger outputFloat">
-      <input message="tns:echoStructAsSimpleTypesRequest"/>
-      <output message="tns:echoStructAsSimpleTypesResponse"/>
-    </operation>
-
-    <!-- echoSimpleTypesAsStruct rpc operation -->
-    <operation name="echoSimpleTypesAsStruct" parameterOrder="inputString inputInteger inputFloat">
-      <input message="tns:echoSimpleTypesAsStructRequest"/>
-      <output message="tns:echoSimpleTypesAsStructResponse"/>
-    </operation>
-
-    <!-- echoNestedStruct rpc operation -->
-    <operation name="echoNestedStruct" parameterOrder="inputStruct">
-      <input message="tns:echoNestedStructRequest"/>
-      <output message="tns:echoNestedStructResponse"/>
-    </operation>
-
-    <!-- echoNestedArray rpc operation -->
-    <operation name="echoNestedArray" parameterOrder="inputStruct">
-      <input message="tns:echoNestedArrayRequest"/>
-      <output message="tns:echoNestedArrayResponse"/>
-    </operation>
-
-    <!-- echoStringArray rpc operation -->
-    <operation name="echoStringArray" parameterOrder="inputStringArray">
-      <input message="tns:echoStringArrayRequest"/>
-      <output message="tns:echoStringArrayResponse"/>
-    </operation>
-
-    <operation name="echoStringArrayInline" parameterOrder="inputStringArray">
-      <input message="tns:echoStringArrayInlineRequest"/>
-      <output message="tns:echoStringArrayInlineResponse"/>
-    </operation>
-
-    <!-- echoIntegerArray rpc operation -->
-    <operation name="echoIntegerArray" parameterOrder="inputIntegerArray">
-      <input message="tns:echoIntegerArrayRequest"/>
-      <output message="tns:echoIntegerArrayResponse"/>
-    </operation>
-
-    <!-- echoBoolean rpc operation -->
-    <operation name="echoBoolean" parameterOrder="inputBoolean">
-      <input message="tns:echoBooleanRequest"/>
-      <output message="tns:echoBooleanResponse"/>
-    </operation>
-
-    <!-- echoString rpc operation -->
-    <operation name="echoString" parameterOrder="inputString">
-      <input message="tns:echoStringRequest"/>
-      <output message="tns:echoStringResponse"/>
-    </operation>
-
-  </portType>
-
-  <binding name="Soap11TestRpcLitBinding" type="tns:SoapTestPortTypeRpc">
-    <soap11:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
-
-    <!-- echoStruct rpc operation -->
-    <operation name="echoStruct">
-      <soap11:operation soapAction="http://soapinterop.org/"/>
-      <input>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </input>
-      <output>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </output>
-    </operation>
-
-    <!--  echoStructArray rpc operation -->
-    <operation name="echoStructArray">
-      <soap11:operation soapAction="http://soapinterop.org/"/>
-      <input>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </input>
-      <output>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </output>
-    </operation>
-
-    <!-- echoStructAsSimpleTypes rpc operation -->
-    <operation name="echoStructAsSimpleTypes">
-      <soap11:operation soapAction="http://soapinterop.org/"/>
-      <input>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </input>
-      <output>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </output>
-    </operation>
-
-    <!-- echoSimpleTypesAsStruct rpc operation -->
-    <operation name="echoSimpleTypesAsStruct">
-      <soap11:operation soapAction="http://soapinterop.org/"/>
-      <input>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </input>
-      <output>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </output>
-    </operation>
-
-    <!-- echoNestedStruct rpc operation -->
-    <operation name="echoNestedStruct">
-      <soap11:operation soapAction="http://soapinterop.org/"/>
-      <input>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </input>
-      <output>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </output>
-    </operation>
-
-    <!-- echoNestedArray rpc operation -->
-    <operation name="echoNestedArray">
-      <soap11:operation soapAction="http://soapinterop.org/"/>
-      <input>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </input>
-      <output>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </output>
-    </operation>
-
-    <!-- echoStringArray rpc operation -->
-    <operation name="echoStringArray">
-      <soap11:operation soapAction="http://soapinterop.org/"/>
-      <input>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </input>
-      <output>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </output>
-    </operation>
-
-    <operation name="echoStringArrayInline">
-      <soap11:operation soapAction="http://soapinterop.org/"/>
-      <input>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </input>
-      <output>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </output>
-    </operation>
-
-    <!-- echoIntegerArray rpc operation -->
-    <operation name="echoIntegerArray">
-      <soap11:operation soapAction="http://soapinterop.org/"/>
-      <input>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </input>
-      <output>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </output>
-    </operation>
-
-    <!-- echoBoolean rpc operation -->
-    <operation name="echoBoolean">
-      <soap11:operation soapAction="http://soapinterop.org/"/>
-      <input>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </input>
-      <output>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </output>
-    </operation>
-
-    <!-- echoString rpc operation -->
-    <operation name="echoString">
-      <soap11:operation soapAction="http://soapinterop.org/"/>
-      <input>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </input>
-      <output>
-        <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-      </output>
-    </operation>
-
-  </binding>
-
-  <service name="WhiteMesaSoapRpcLitTestSvc">
-
-    <port name="Soap11TestRpcLitPort" binding="tns:Soap11TestRpcLitBinding">
-      <soap11:address location="http://www.whitemesa.net/test-rpc-lit"/>
-    </port>
-
-  </service>
-
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/test-rpc-lit12.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/test-rpc-lit12.wsdl
deleted file mode 100644 (file)
index 901cde6..0000000
+++ /dev/null
@@ -1,455 +0,0 @@
-<?xml version="1.0"?>
-
-<definitions name="RPC-Literal-TestDefinitions"
-       targetNamespace="http://whitemesa.net/wsdl/rpc-lit-test"
-       xmlns="http://schemas.xmlsoap.org/wsdl/"
-       xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
-       xmlns:soap11="http://schemas.xmlsoap.org/wsdl/soap/"
-       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-       xmlns:tns="http://whitemesa.net/wsdl/rpc-lit-test"
-       xmlns:types="http://soapbuilders.org/rpc-lit-test/types"
-       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
-       <types>
-               <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soapbuilders.org/rpc-lit-test/types">
-
-            <element name="stringItem" type="xsd:string" />
-                       <complexType name="ArrayOfstring">
-                               <sequence>
-                                       <element ref="types:stringItem" minOccurs="0" maxOccurs="unbounded"/>
-                               </sequence>
-                       </complexType>
-
-                       <complexType name="ArrayOfint">
-                               <sequence>
-                                       <element name="integer" type="xsd:int" minOccurs="0" maxOccurs="unbounded"/>
-                               </sequence>
-                       </complexType>
-
-            <element name="structItem" type="types:SOAPStruct" />
-                       <complexType name="SOAPStruct">
-                               <all>
-                                       <element name="varString" type="xsd:string"/>
-                                       <element name="varInt" type="xsd:int"/>
-                                       <element name="varFloat" type="xsd:float"/>
-                               </all>
-                       </complexType>
-                       
-                       <complexType name="ArrayOfSOAPStruct">
-                               <sequence>
-                                       <element ref="types:structItem" minOccurs="0" maxOccurs="unbounded"/>
-                               </sequence>
-                       </complexType>
-
-                       <complexType name="SOAPStructStruct">
-                               <all>
-                                       <element name="varString" type="xsd:string"/>
-                                       <element name="varInt" type="xsd:int"/>
-                                       <element name="varFloat" type="xsd:float"/>
-                                       <element ref="types:structItem" />
-                               </all>
-                       </complexType>
-
-                       <complexType name="SOAPArrayStruct">
-                               <all>
-                                       <element name="varString" type="xsd:string"/>
-                                       <element name="varInt" type="xsd:int"/>
-                                       <element name="varFloat" type="xsd:float"/>
-                                       <element name="varArray" type="types:ArrayOfstring"/>
-                               </all>
-                       </complexType>
-
-               </schema>
-
-       </types>
-
-       <!-- echoStruct rpc operation -->
-       <message name="echoStructRequest">
-               <part name="inputStruct" type="types:SOAPStruct"/>
-       </message>
-       <message name="echoStructResponse">
-               <part name="return" type="types:SOAPStruct"/>
-       </message>
-
-       <!-- echoStructArray rpc operation -->
-       <message name="echoStructArrayRequest">
-               <part name="inputStructArray" type="types:ArrayOfSOAPStruct"/>
-       </message>
-       <message name="echoStructArrayResponse">
-               <part name="return" type="types:ArrayOfSOAPStruct"/>
-       </message>
-
-       <!-- echoStructAsSimpleTypes rpc operation -->
-       <message name="echoStructAsSimpleTypesRequest">
-               <part name="inputStruct" type="types:SOAPStruct"/>
-       </message>
-       <message name="echoStructAsSimpleTypesResponse">
-               <part name="outputString" type="xsd:string"/>
-               <part name="outputInteger" type="xsd:int"/>
-               <part name="outputFloat" type="xsd:float"/>
-       </message>
-
-       <!-- echoSimpleTypesAsStruct rpc operation -->
-       <message name="echoSimpleTypesAsStructRequest">
-               <part name="inputString" type="xsd:string"/>
-               <part name="inputInteger" type="xsd:int"/>
-               <part name="inputFloat" type="xsd:float"/>
-       </message>
-       <message name="echoSimpleTypesAsStructResponse">
-               <part name="return" type="types:SOAPStruct"/>
-       </message>
-
-       <!-- echoNestedStruct rpc operation -->
-       <message name="echoNestedStructRequest">
-               <part name="inputStruct" type="types:SOAPStructStruct"/>
-       </message>
-       <message name="echoNestedStructResponse">
-               <part name="return" type="types:SOAPStructStruct"/>
-       </message>
-
-       <!-- echoNestedArray rpc operation -->
-       <message name="echoNestedArrayRequest">
-               <part name="inputStruct" type="types:SOAPArrayStruct"/>
-       </message>
-       <message name="echoNestedArrayResponse">
-               <part name="return" type="types:SOAPArrayStruct"/>
-       </message>
-
-       <!-- echoStringArray rpc operation -->
-       <message name="echoStringArrayRequest">
-               <part name="inputStringArray" type="types:ArrayOfstring"/>
-       </message>
-       <message name="echoStringArrayResponse">
-               <part name="return" type="types:ArrayOfstring"/>
-       </message>
-
-       <!-- echoIntegerArray rpc operation -->
-       <message name="echoIntegerArrayRequest">
-               <part name="inputIntegerArray" type="types:ArrayOfint"/>
-       </message>
-       <message name="echoIntegerArrayResponse">
-               <part name="return" type="types:ArrayOfint"/>
-       </message>
-
-       <!-- echoBoolean rpc operation -->
-       <message name="echoBooleanRequest">
-               <part name="inputBoolean" type="xsd:boolean"/>
-       </message>
-       <message name="echoBooleanResponse">
-               <part name="return" type="xsd:boolean"/>
-       </message>
-
-       <!-- echoString rpc operation -->
-       <message name="echoStringRequest">
-               <part name="inputString" type="xsd:string"/>
-       </message>
-       <message name="echoStringResponse">
-               <part name="return" type="xsd:string"/>
-       </message>
-
-
-       <portType name="SoapTestPortTypeRpc">
-
-               <!-- echoStruct rpc operation -->
-               <operation name="echoStruct" parameterOrder="inputStruct">
-                       <input message="tns:echoStructRequest"/>
-                       <output message="tns:echoStructResponse"/>
-               </operation>
-
-               <!-- echoStructArray rpc operation -->
-               <operation name="echoStructArray" parameterOrder="inputStructArray">
-                       <input message="tns:echoStructArrayRequest"/>
-                       <output message="tns:echoStructArrayResponse"/>
-               </operation>
-
-               <!-- echoStructAsSimpleTypes rpc operation -->
-               <operation name="echoStructAsSimpleTypes" parameterOrder="inputStruct outputString outputInteger outputFloat">
-                       <input message="tns:echoStructAsSimpleTypesRequest"/>
-                       <output message="tns:echoStructAsSimpleTypesResponse"/>
-               </operation>
-
-               <!-- echoSimpleTypesAsStruct rpc operation -->
-               <operation name="echoSimpleTypesAsStruct" parameterOrder="inputString inputInteger inputFloat">
-                       <input message="tns:echoSimpleTypesAsStructRequest"/>
-                       <output message="tns:echoSimpleTypesAsStructResponse"/>
-               </operation>
-
-               <!-- echoNestedStruct rpc operation -->
-               <operation name="echoNestedStruct" parameterOrder="inputStruct">
-                       <input message="tns:echoNestedStructRequest"/>
-                       <output message="tns:echoNestedStructResponse"/>
-               </operation>
-
-               <!-- echoNestedArray rpc operation -->
-               <operation name="echoNestedArray" parameterOrder="inputStruct">
-                       <input message="tns:echoNestedArrayRequest"/>
-                       <output message="tns:echoNestedArrayResponse"/>
-               </operation>
-
-               <!-- echoStringArray rpc operation -->
-               <operation name="echoStringArray" parameterOrder="inputStringArray">
-                       <input message="tns:echoStringArrayRequest"/>
-                       <output message="tns:echoStringArrayResponse"/>
-               </operation>
-
-               <!-- echoIntegerArray rpc operation -->
-               <operation name="echoIntegerArray" parameterOrder="inputIntegerArray">
-                       <input message="tns:echoIntegerArrayRequest"/>
-                       <output message="tns:echoIntegerArrayResponse"/>
-               </operation>
-
-               <!-- echoBoolean rpc operation -->
-               <operation name="echoBoolean" parameterOrder="inputBoolean">
-                       <input message="tns:echoBooleanRequest"/>
-                       <output message="tns:echoBooleanResponse"/>
-               </operation>
-
-               <!-- echoString rpc operation -->
-               <operation name="echoString" parameterOrder="inputString">
-                       <input message="tns:echoStringRequest"/>
-                       <output message="tns:echoStringResponse"/>
-               </operation>
-
-       </portType>
-
-       <binding name="Soap11TestRpcLitBinding" type="tns:SoapTestPortTypeRpc">
-               <soap11:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
-
-               <!-- echoStruct rpc operation -->
-               <operation name="echoStruct">
-                       <soap11:operation soapAction="http://soapinterop.org/"/>
-                       <input>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!--  echoStructArray rpc operation -->
-               <operation name="echoStructArray">
-                       <soap11:operation soapAction="http://soapinterop.org/"/>
-                       <input>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoStructAsSimpleTypes rpc operation -->
-               <operation name="echoStructAsSimpleTypes">
-                       <soap11:operation soapAction="http://soapinterop.org/"/>
-                       <input>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoSimpleTypesAsStruct rpc operation -->
-               <operation name="echoSimpleTypesAsStruct">
-                       <soap11:operation soapAction="http://soapinterop.org/"/>
-                       <input>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoNestedStruct rpc operation -->
-               <operation name="echoNestedStruct">
-                       <soap11:operation soapAction="http://soapinterop.org/"/>
-                       <input>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoNestedArray rpc operation -->
-               <operation name="echoNestedArray">
-                       <soap11:operation soapAction="http://soapinterop.org/"/>
-                       <input>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoStringArray rpc operation -->
-               <operation name="echoStringArray">
-                       <soap11:operation soapAction="http://soapinterop.org/"/>
-                       <input>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoIntegerArray rpc operation -->
-               <operation name="echoIntegerArray">
-                       <soap11:operation soapAction="http://soapinterop.org/"/>
-                       <input>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoBoolean rpc operation -->
-               <operation name="echoBoolean">
-                       <soap11:operation soapAction="http://soapinterop.org/"/>
-                       <input>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoString rpc operation -->
-               <operation name="echoString">
-                       <soap11:operation soapAction="http://soapinterop.org/"/>
-                       <input>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap11:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-       </binding>
-
-       <binding name="Soap12TestRpcLitBinding" type="tns:SoapTestPortTypeRpc">
-               <soap12:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
-
-               <!-- echoStruct rpc operation -->
-               <operation name="echoStruct">
-                       <soap12:operation/>
-                       <input>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!--  echoStructArray rpc operation -->
-               <operation name="echoStructArray">
-                       <soap12:operation/>
-                       <input>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoStructAsSimpleTypes rpc operation -->
-               <operation name="echoStructAsSimpleTypes">
-                       <soap12:operation/>
-                       <input>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoSimpleTypesAsStruct rpc operation -->
-               <operation name="echoSimpleTypesAsStruct">
-                       <soap12:operation/>
-                       <input>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoNestedStruct rpc operation -->
-               <operation name="echoNestedStruct">
-                       <soap12:operation/>
-                       <input>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoNestedArray rpc operation -->
-               <operation name="echoNestedArray">
-                       <soap12:operation/>
-                       <input>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoStringArray rpc operation -->
-               <operation name="echoStringArray">
-                       <soap12:operation/>
-                       <input>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoIntegerArray rpc operation -->
-               <operation name="echoIntegerArray">
-                       <soap12:operation/>
-                       <input>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoBoolean rpc operation -->
-               <operation name="echoBoolean">
-                       <soap12:operation/>
-                       <input>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-               <!-- echoString rpc operation -->
-               <operation name="echoString">
-                       <soap12:operation/>
-                       <input>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </input>
-                       <output>
-                               <soap12:body use="literal" namespace="http://soapbuilders.org/rpc-lit-test" />
-                       </output>
-               </operation>
-
-       </binding>
-
-       <service name="WhiteMesaSoapRpcLitTestSvc">
-
-               <port name="Soap12TestRpcLitPort" binding="tns:Soap12TestRpcLitBinding">
-                       <soap12:address location="http://www.whitemesa.net/soap12/test-rpc-lit"/>
-               </port>
-               <port name="Soap11TestRpcLitPort" binding="tns:Soap11TestRpcLitBinding">
-                       <soap11:address location="http://www.whitemesa.net/test-rpc-lit"/>
-               </port>
-
-       </service>
-
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/test_rpc.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/test_rpc.rb
deleted file mode 100644 (file)
index 7c4c3a7..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-require 'test/unit'
-require 'wsdl/parser'
-require 'wsdl/soap/wsdl2ruby'
-require 'soap/rpc/standaloneServer'
-require 'soap/wsdlDriver'
-
-
-module WSDL; module RPC
-
-
-class TestRPC < Test::Unit::TestCase
-  class Server < ::SOAP::RPC::StandaloneServer
-    def on_init
-      self.generate_explicit_type = false
-      add_rpc_method(self, 'echo', 'arg1', 'arg2')
-      add_rpc_method(self, 'echo_err', 'arg1', 'arg2')
-    end
-  
-    DummyPerson = Struct.new("family-name".intern, :given_name)
-    def echo(arg1, arg2)
-      case arg1.family_name
-      when 'normal'
-        arg1.family_name = arg2.family_name
-        arg1.given_name = arg2.given_name
-        arg1.age = arg2.age
-        arg1
-      when 'dummy'
-        DummyPerson.new("family-name", "given_name")
-      else
-        raise
-      end
-    end
-  
-    ErrPerson = Struct.new(:given_name, :no_such_element)
-    def echo_err(arg1, arg2)
-      ErrPerson.new(58, Time.now)
-    end
-  end
-
-  DIR = File.dirname(File.expand_path(__FILE__))
-
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_classdef
-    @client = nil
-  end
-
-  def teardown
-    teardown_server
-    File.unlink(pathname('echo.rb'))
-    @client.reset_stream if @client
-  end
-
-  def setup_server
-    @server = Server.new('Test', "urn:rpc", '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @server_thread = start_server_thread(@server)
-  end
-
-  def setup_classdef
-    gen = WSDL::SOAP::WSDL2Ruby.new
-    gen.location = pathname("rpc.wsdl")
-    gen.basedir = DIR
-    gen.logger.level = Logger::FATAL
-    gen.opt['classdef'] = nil
-    gen.opt['force'] = true
-    gen.run
-    require pathname('echo')
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def pathname(filename)
-    File.join(DIR, filename)
-  end
-
-  def test_wsdl
-    wsdl = File.join(DIR, 'rpc.wsdl')
-    @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.wiredump_dev = STDOUT if $DEBUG
-
-    ret = @client.echo(Person.new("normal", "", 12), Person.new("Hi", "Na", 21))
-    assert_equal(Person, ret.class)
-    assert_equal("Hi", ret.family_name)
-    assert_equal("Na", ret.given_name)
-    assert_equal(21, ret.age)
-
-    ret = @client.echo(Person.new("dummy", "", 12), Person.new("Hi", "Na", 21))
-    assert_equal(Person, ret.class)
-    assert_equal("family-name", ret.family_name)
-    assert_equal("given_name", ret.given_name)
-    assert_equal(nil, ret.age)
-
-    ret = @client.echo_err(Person.new("Na", "Hi"), Person.new("Hi", "Na"))
-    assert_equal(Person, ret.class)
-    assert_equal("58", ret.given_name)
-    assert_equal(nil, ret.family_name)
-    assert_equal(nil, ret.age)
-  end
-end
-
-
-end; end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/test_rpc_lit.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/rpc/test_rpc_lit.rb
deleted file mode 100644 (file)
index 080dbb8..0000000
+++ /dev/null
@@ -1,399 +0,0 @@
-require 'test/unit'
-require 'wsdl/soap/wsdl2ruby'
-require 'soap/rpc/standaloneServer'
-require 'soap/wsdlDriver'
-
-if defined?(HTTPAccess2) and defined?(OpenSSL)
-
-module WSDL; module RPC
-
-
-class TestRPCLIT < Test::Unit::TestCase
-  class Server < ::SOAP::RPC::StandaloneServer
-    Namespace = "http://soapbuilders.org/rpc-lit-test"
-
-    def on_init
-      self.generate_explicit_type = false
-      add_rpc_operation(self, 
-        XSD::QName.new(Namespace, 'echoStringArray'),
-        nil,
-        'echoStringArray', [
-          ['in', 'inputStringArray', nil],
-          ['retval', 'return', nil]
-        ],
-        {
-          :request_style => :rpc,
-          :request_use => :literal,
-          :response_style => :rpc,
-          :response_use => :literal
-        }
-      )
-      add_rpc_operation(self, 
-        XSD::QName.new(Namespace, 'echoStringArrayInline'),
-        nil,
-        'echoStringArrayInline', [
-          ['in', 'inputStringArray', nil],
-          ['retval', 'return', nil]
-        ],
-        {
-          :request_style => :rpc,
-          :request_use => :literal,
-          :response_style => :rpc,
-          :response_use => :literal
-        }
-      )
-      add_rpc_operation(self, 
-        XSD::QName.new(Namespace, 'echoNestedStruct'),
-        nil,
-        'echoNestedStruct', [
-          ['in', 'inputNestedStruct', nil],
-          ['retval', 'return', nil]
-        ],
-        {
-          :request_style => :rpc,
-          :request_use => :literal,
-          :response_style => :rpc,
-          :response_use => :literal
-        }
-      )
-      add_rpc_operation(self, 
-        XSD::QName.new(Namespace, 'echoStructArray'),
-        nil,
-        'echoStructArray', [
-          ['in', 'inputStructArray', nil],
-          ['retval', 'return', nil]
-        ],
-        {
-          :request_style => :rpc,
-          :request_use => :literal,
-          :response_style => :rpc,
-          :response_use => :literal
-        }
-      )
-    end
-  
-    def echoStringArray(strings)
-      # strings.stringItem => Array
-      ArrayOfstring[*strings.stringItem]
-    end
-
-    def echoStringArrayInline(strings)
-      ArrayOfstringInline[*strings.stringItem]
-    end
-
-    def echoNestedStruct(struct)
-      struct
-    end
-
-    def echoStructArray(ary)
-      ary
-    end
-  end
-
-  DIR = File.dirname(File.expand_path(__FILE__))
-
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_classdef
-    @client = nil
-  end
-
-  def teardown
-    teardown_server
-    unless $DEBUG
-      File.unlink(pathname('RPC-Literal-TestDefinitions.rb'))
-      File.unlink(pathname('RPC-Literal-TestDefinitionsDriver.rb'))
-    end
-    @client.reset_stream if @client
-  end
-
-  def setup_server
-    @server = Server.new('Test', Server::Namespace, '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @server_thread = start_server_thread(@server)
-  end
-
-  def setup_classdef
-    gen = WSDL::SOAP::WSDL2Ruby.new
-    gen.location = pathname("test-rpc-lit.wsdl")
-    gen.basedir = DIR
-    gen.logger.level = Logger::FATAL
-    gen.opt['classdef'] = nil
-    gen.opt['driver'] = nil
-    gen.opt['force'] = true
-    gen.run
-    backupdir = Dir.pwd
-    begin
-      Dir.chdir(DIR)
-      require pathname('RPC-Literal-TestDefinitions.rb')
-      require pathname('RPC-Literal-TestDefinitionsDriver.rb')
-    ensure
-      Dir.chdir(backupdir)
-    end
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def pathname(filename)
-    File.join(DIR, filename)
-  end
-
-  def test_wsdl_echoStringArray
-    wsdl = pathname('test-rpc-lit.wsdl')
-    @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.wiredump_dev = STDOUT if $DEBUG
-    # response contains only 1 part.
-    result = @client.echoStringArray(ArrayOfstring["a", "b", "c"])[0]
-    assert_equal(["a", "b", "c"], result.stringItem)
-  end
-
-  ECHO_STRING_ARRAY_REQUEST =
-%q[<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <n1:echoStringArray xmlns:n1="http://soapbuilders.org/rpc-lit-test">
-      <inputStringArray xmlns:n2="http://soapbuilders.org/rpc-lit-test/types">
-        <n2:stringItem>a</n2:stringItem>
-        <n2:stringItem>b</n2:stringItem>
-        <n2:stringItem>c</n2:stringItem>
-      </inputStringArray>
-    </n1:echoStringArray>
-  </env:Body>
-</env:Envelope>]
-
-  ECHO_STRING_ARRAY_RESPONSE =
-%q[<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <n1:echoStringArrayResponse xmlns:n1="http://soapbuilders.org/rpc-lit-test">
-      <return xmlns:n2="http://soapbuilders.org/rpc-lit-test/types">
-        <n2:stringItem>a</n2:stringItem>
-        <n2:stringItem>b</n2:stringItem>
-        <n2:stringItem>c</n2:stringItem>
-      </return>
-    </n1:echoStringArrayResponse>
-  </env:Body>
-</env:Envelope>]
-
-  def test_stub_echoStringArray
-    drv = SoapTestPortTypeRpc.new("http://localhost:#{Port}/")
-    drv.wiredump_dev = str = ''
-    # response contains only 1 part.
-    result = drv.echoStringArray(ArrayOfstring["a", "b", "c"])[0]
-    assert_equal(["a", "b", "c"], result.stringItem)
-    assert_equal(ECHO_STRING_ARRAY_REQUEST, parse_requestxml(str))
-    assert_equal(ECHO_STRING_ARRAY_RESPONSE, parse_responsexml(str))
-  end
-
-  ECHO_STRING_ARRAY_INLINE_REQUEST =
-%q[<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <n1:echoStringArrayInline xmlns:n1="http://soapbuilders.org/rpc-lit-test">
-      <inputStringArray>
-        <stringItem>a</stringItem>
-        <stringItem>b</stringItem>
-        <stringItem>c</stringItem>
-      </inputStringArray>
-    </n1:echoStringArrayInline>
-  </env:Body>
-</env:Envelope>]
-
-  ECHO_STRING_ARRAY_INLINE_RESPONSE =
-%q[<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <n1:echoStringArrayInlineResponse xmlns:n1="http://soapbuilders.org/rpc-lit-test">
-      <return>
-        <stringItem>a</stringItem>
-        <stringItem>b</stringItem>
-        <stringItem>c</stringItem>
-      </return>
-    </n1:echoStringArrayInlineResponse>
-  </env:Body>
-</env:Envelope>]
-
-  def test_stub_echoStringArrayInline
-    drv = SoapTestPortTypeRpc.new("http://localhost:#{Port}/")
-    drv.wiredump_dev = str = ''
-    # response contains only 1 part.
-    result = drv.echoStringArrayInline(ArrayOfstringInline["a", "b", "c"])[0]
-    assert_equal(["a", "b", "c"], result.stringItem)
-    assert_equal(ECHO_STRING_ARRAY_INLINE_REQUEST, parse_requestxml(str))
-    assert_equal(ECHO_STRING_ARRAY_INLINE_RESPONSE, parse_responsexml(str))
-  end
-
-  ECHO_NESTED_STRUCT_REQUEST =
-%q[<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <n1:echoNestedStruct xmlns:n1="http://soapbuilders.org/rpc-lit-test">
-      <inputStruct xmlns:n2="http://soapbuilders.org/rpc-lit-test/types">
-        <varString>str</varString>
-        <varInt>1</varInt>
-        <varFloat>+1</varFloat>
-        <n2:structItem>
-          <varString>str</varString>
-          <varInt>1</varInt>
-          <varFloat>+1</varFloat>
-        </n2:structItem>
-      </inputStruct>
-    </n1:echoNestedStruct>
-  </env:Body>
-</env:Envelope>]
-
-  ECHO_NESTED_STRUCT_RESPONSE =
-%q[<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <n1:echoNestedStructResponse xmlns:n1="http://soapbuilders.org/rpc-lit-test">
-      <return xmlns:n2="http://soapbuilders.org/rpc-lit-test/types">
-        <varString>str</varString>
-        <varInt>1</varInt>
-        <varFloat>+1</varFloat>
-        <n2:structItem>
-          <varString>str</varString>
-          <varInt>1</varInt>
-          <varFloat>+1</varFloat>
-        </n2:structItem>
-      </return>
-    </n1:echoNestedStructResponse>
-  </env:Body>
-</env:Envelope>]
-
-  def test_wsdl_echoNestedStruct
-    wsdl = pathname('test-rpc-lit.wsdl')
-    @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.wiredump_dev = str = ''
-    # response contains only 1 part.
-    result = @client.echoNestedStruct(SOAPStructStruct.new("str", 1, 1.0, SOAPStruct.new("str", 1, 1.0)))[0]
-    assert_equal('str', result.varString)
-    assert_equal('1', result.varInt)
-    assert_equal('+1', result.varFloat)
-    assert_equal('str', result.structItem.varString)
-    assert_equal('1', result.structItem.varInt)
-    assert_equal('+1', result.structItem.varFloat)
-    assert_equal(ECHO_NESTED_STRUCT_REQUEST, parse_requestxml(str))
-    assert_equal(ECHO_NESTED_STRUCT_RESPONSE, parse_responsexml(str))
-  end
-
-  def test_stub_echoNestedStruct
-    drv = SoapTestPortTypeRpc.new("http://localhost:#{Port}/")
-    drv.wiredump_dev = str = ''
-    # response contains only 1 part.
-    result = drv.echoNestedStruct(SOAPStructStruct.new("str", 1, 1.0, SOAPStruct.new("str", 1, 1.0)))[0]
-    assert_equal('str', result.varString)
-    assert_equal('1', result.varInt)
-    assert_equal('+1', result.varFloat)
-    assert_equal('str', result.structItem.varString)
-    assert_equal('1', result.structItem.varInt)
-    assert_equal('+1', result.structItem.varFloat)
-    assert_equal(ECHO_NESTED_STRUCT_REQUEST, parse_requestxml(str))
-    assert_equal(ECHO_NESTED_STRUCT_RESPONSE, parse_responsexml(str))
-  end
-
-  ECHO_STRUCT_ARRAY_REQUEST =
-%q[<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <n1:echoStructArray xmlns:n1="http://soapbuilders.org/rpc-lit-test">
-      <inputStructArray xmlns:n2="http://soapbuilders.org/rpc-lit-test/types">
-        <n2:structItem>
-          <varString>str</varString>
-          <varInt>2</varInt>
-          <varFloat>+2.1</varFloat>
-        </n2:structItem>
-        <n2:structItem>
-          <varString>str</varString>
-          <varInt>2</varInt>
-          <varFloat>+2.1</varFloat>
-        </n2:structItem>
-      </inputStructArray>
-    </n1:echoStructArray>
-  </env:Body>
-</env:Envelope>]
-
-  ECHO_STRUCT_ARRAY_RESPONSE =
-%q[<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <n1:echoStructArrayResponse xmlns:n1="http://soapbuilders.org/rpc-lit-test">
-      <return xmlns:n2="http://soapbuilders.org/rpc-lit-test/types">
-        <n2:structItem>
-          <varString>str</varString>
-          <varInt>2</varInt>
-          <varFloat>+2.1</varFloat>
-        </n2:structItem>
-        <n2:structItem>
-          <varString>str</varString>
-          <varInt>2</varInt>
-          <varFloat>+2.1</varFloat>
-        </n2:structItem>
-      </return>
-    </n1:echoStructArrayResponse>
-  </env:Body>
-</env:Envelope>]
-
-  def test_wsdl_echoStructArray
-    wsdl = pathname('test-rpc-lit.wsdl')
-    @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.wiredump_dev = str = ''
-    # response contains only 1 part.
-    e = SOAPStruct.new("str", 2, 2.1)
-    result = @client.echoStructArray(ArrayOfSOAPStruct[e, e])
-    assert_equal(ECHO_STRUCT_ARRAY_REQUEST, parse_requestxml(str))
-    assert_equal(ECHO_STRUCT_ARRAY_RESPONSE, parse_responsexml(str))
-  end
-
-  def test_stub_echoStructArray
-    drv = SoapTestPortTypeRpc.new("http://localhost:#{Port}/")
-    drv.wiredump_dev = str = ''
-    # response contains only 1 part.
-    e = SOAPStruct.new("str", 2, 2.1)
-    result = drv.echoStructArray(ArrayOfSOAPStruct[e, e])
-    assert_equal(ECHO_STRUCT_ARRAY_REQUEST, parse_requestxml(str))
-    assert_equal(ECHO_STRUCT_ARRAY_RESPONSE, parse_responsexml(str))
-  end
-
-  def parse_requestxml(str)
-    str.split(/\r?\n\r?\n/)[3]
-  end
-
-  def parse_responsexml(str)
-    str.split(/\r?\n\r?\n/)[6]
-  end
-end
-
-
-end; end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedClient.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedClient.rb
deleted file mode 100644 (file)
index 55eb58c..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env ruby
-require 'echo_versionDriver.rb'
-
-endpoint_url = ARGV.shift
-obj = Echo_version_port_type.new(endpoint_url)
-
-# run ruby with -d to see SOAP wiredumps.
-obj.wiredump_dev = STDERR if $DEBUG
-
-# SYNOPSIS
-#   echo_version(version)
-#
-# ARGS
-#   version         Version - {urn:example.com:simpletype-rpc-type}version
-#
-# RETURNS
-#   version_struct  Version_struct - {urn:example.com:simpletype-rpc-type}version_struct
-#
-version = nil
-puts obj.echo_version(version)
-
-# SYNOPSIS
-#   echo_version_r(version_struct)
-#
-# ARGS
-#   version_struct  Version_struct - {urn:example.com:simpletype-rpc-type}version_struct
-#
-# RETURNS
-#   version         Version - {urn:example.com:simpletype-rpc-type}version
-#
-version_struct = nil
-puts obj.echo_version_r(version_struct)
-
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedDriver.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedDriver.rb
deleted file mode 100644 (file)
index 81c72d1..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-require 'echo_version.rb'
-
-require 'soap/rpc/driver'
-
-class Echo_version_port_type < ::SOAP::RPC::Driver
-  DefaultEndpointUrl = "http://localhost:10080"
-  MappingRegistry = ::SOAP::Mapping::Registry.new
-
-  MappingRegistry.set(
-    Version_struct,
-    ::SOAP::SOAPStruct,
-    ::SOAP::Mapping::Registry::TypedStructFactory,
-    { :type => XSD::QName.new("urn:example.com:simpletype-rpc-type", "version_struct") }
-  )
-
-  Methods = [
-    [ XSD::QName.new("urn:example.com:simpletype-rpc", "echo_version"),
-      "urn:example.com:simpletype-rpc",
-      "echo_version",
-      [ ["in", "version", ["::SOAP::SOAPString"]],
-        ["retval", "version_struct", ["Version_struct", "urn:example.com:simpletype-rpc-type", "version_struct"]] ],
-      { :request_style =>  :rpc, :request_use =>  :encoded,
-        :response_style => :rpc, :response_use => :encoded }
-    ],
-    [ XSD::QName.new("urn:example.com:simpletype-rpc", "echo_version_r"),
-      "urn:example.com:simpletype-rpc",
-      "echo_version_r",
-      [ ["in", "version_struct", ["Version_struct", "urn:example.com:simpletype-rpc-type", "version_struct"]],
-        ["retval", "version", ["::SOAP::SOAPString"]] ],
-      { :request_style =>  :rpc, :request_use =>  :encoded,
-        :response_style => :rpc, :response_use => :encoded }
-    ]
-  ]
-
-  def initialize(endpoint_url = nil)
-    endpoint_url ||= DefaultEndpointUrl
-    super(endpoint_url, nil)
-    self.mapping_registry = MappingRegistry
-    init_methods
-  end
-
-private
-
-  def init_methods
-    Methods.each do |definitions|
-      opt = definitions.last
-      if opt[:request_style] == :document
-        add_document_operation(*definitions)
-      else
-        add_rpc_operation(*definitions)
-        qname = definitions[0]
-        name = definitions[2]
-        if qname.name != name and qname.name.capitalize == name.capitalize
-          ::SOAP::Mapping.define_singleton_method(self, qname.name) do |*arg|
-            __send__(name, *arg)
-          end
-        end
-      end
-    end
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedEchoVersion.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedEchoVersion.rb
deleted file mode 100644 (file)
index 806ece1..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-require 'xsd/qname'
-
-# {urn:example.com:simpletype-rpc-type}version_struct
-class Version_struct
-  @@schema_type = "version_struct"
-  @@schema_ns = "urn:example.com:simpletype-rpc-type"
-  @@schema_element = [["version", ["SOAP::SOAPString", XSD::QName.new(nil, "version")]], ["msg", ["SOAP::SOAPString", XSD::QName.new(nil, "msg")]]]
-
-  attr_accessor :version
-  attr_accessor :msg
-
-  def initialize(version = nil, msg = nil)
-    @version = version
-    @msg = msg
-  end
-end
-
-# {urn:example.com:simpletype-rpc-type}version
-module Version
-  C_16 = "1.6"
-  C_18 = "1.8"
-  C_19 = "1.9"
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedServant.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedServant.rb
deleted file mode 100644 (file)
index 81cf502..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-require 'echo_version.rb'
-
-class Echo_version_port_type
-  # SYNOPSIS
-  #   echo_version(version)
-  #
-  # ARGS
-  #   version         Version - {urn:example.com:simpletype-rpc-type}version
-  #
-  # RETURNS
-  #   version_struct  Version_struct - {urn:example.com:simpletype-rpc-type}version_struct
-  #
-  def echo_version(version)
-    p [version]
-    raise NotImplementedError.new
-  end
-
-  # SYNOPSIS
-  #   echo_version_r(version_struct)
-  #
-  # ARGS
-  #   version_struct  Version_struct - {urn:example.com:simpletype-rpc-type}version_struct
-  #
-  # RETURNS
-  #   version         Version - {urn:example.com:simpletype-rpc-type}version
-  #
-  def echo_version_r(version_struct)
-    p [version_struct]
-    raise NotImplementedError.new
-  end
-end
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedService.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/expectedService.rb
deleted file mode 100644 (file)
index be6f996..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env ruby
-require 'echo_versionServant.rb'
-
-require 'soap/rpc/standaloneServer'
-require 'soap/mapping/registry'
-
-class Echo_version_port_type
-  MappingRegistry = ::SOAP::Mapping::Registry.new
-
-  MappingRegistry.set(
-    Version_struct,
-    ::SOAP::SOAPStruct,
-    ::SOAP::Mapping::Registry::TypedStructFactory,
-    { :type => XSD::QName.new("urn:example.com:simpletype-rpc-type", "version_struct") }
-  )
-
-  Methods = [
-    [ XSD::QName.new("urn:example.com:simpletype-rpc", "echo_version"),
-      "urn:example.com:simpletype-rpc",
-      "echo_version",
-      [ ["in", "version", ["::SOAP::SOAPString"]],
-        ["retval", "version_struct", ["Version_struct", "urn:example.com:simpletype-rpc-type", "version_struct"]] ],
-      { :request_style =>  :rpc, :request_use =>  :encoded,
-        :response_style => :rpc, :response_use => :encoded }
-    ],
-    [ XSD::QName.new("urn:example.com:simpletype-rpc", "echo_version_r"),
-      "urn:example.com:simpletype-rpc",
-      "echo_version_r",
-      [ ["in", "version_struct", ["Version_struct", "urn:example.com:simpletype-rpc-type", "version_struct"]],
-        ["retval", "version", ["::SOAP::SOAPString"]] ],
-      { :request_style =>  :rpc, :request_use =>  :encoded,
-        :response_style => :rpc, :response_use => :encoded }
-    ]
-  ]
-end
-
-class Echo_version_port_typeApp < ::SOAP::RPC::StandaloneServer
-  def initialize(*arg)
-    super(*arg)
-    servant = Echo_version_port_type.new
-    Echo_version_port_type::Methods.each do |definitions|
-      opt = definitions.last
-      if opt[:request_style] == :document
-        @router.add_document_operation(servant, *definitions)
-      else
-        @router.add_rpc_operation(servant, *definitions)
-      end
-    end
-    self.mapping_registry = Echo_version_port_type::MappingRegistry
-  end
-end
-
-if $0 == __FILE__
-  # Change listen port.
-  server = Echo_version_port_typeApp.new('app', nil, '0.0.0.0', 10080)
-  trap(:INT) do
-    server.shutdown
-  end
-  server.start
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/rpc.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/rpc.wsdl
deleted file mode 100644 (file)
index 91f71a8..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<definitions name="echo_version"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:tns="urn:example.com:simpletype-rpc"
-    xmlns:txd="urn:example.com:simpletype-rpc-type"
-    targetNamespace="urn:example.com:simpletype-rpc"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-  <types>
-    <xsd:schema targetNamespace="urn:example.com:simpletype-rpc-type">
-      <xsd:complexType name="version_struct">
-       <xsd:all>
-         <xsd:element name="version" type="txd:version" />
-         <xsd:element name="msg" type="xsd:string" />
-       </xsd:all>
-      </xsd:complexType>
-
-      <xsd:simpleType name="version">
-        <xsd:restriction base="xsd:string">
-          <xsd:enumeration value="1.6"/>
-          <xsd:enumeration value="1.8"/>
-          <xsd:enumeration value="1.9"/>
-        </xsd:restriction>
-      </xsd:simpleType>
-    </xsd:schema>
-  </types>
-
-  <message name="msg_version">
-    <part name="version" type="txd:version"/>
-  </message>
-
-  <message name="msg_version_struct">
-    <part name="version_struct" type="txd:version_struct"/>
-  </message>
-
-  <portType name="echo_version_port_type">
-    <operation name="echo_version">
-      <input message="tns:msg_version"/>
-      <output message="tns:msg_version_struct"/>
-    </operation>
-
-    <operation name="echo_version_r">
-      <input message="tns:msg_version_struct"/>
-      <output message="tns:msg_version"/>
-    </operation>
-  </portType>
-
-  <binding name="echo_version_binding" type="tns:echo_version_port_type">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
-    <operation name="echo_version">
-      <soap:operation soapAction="urn:example.com:simpletype-rpc"/>
-      <input>
-        <soap:body use="encoded" namespace="urn:example.com:simpletype-rpc"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="urn:example.com:simpletype-rpc"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-
-    <operation name="echo_version_r">
-      <soap:operation soapAction="urn:example.com:simpletype-rpc"/>
-      <input>
-        <soap:body use="encoded" namespace="urn:example.com:simpletype-rpc"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="urn:example.com:simpletype-rpc"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-  </binding>
-
-  <service name="echo_version_service">
-    <port name="echo_version_port" binding="tns:echo_version_binding">
-      <soap:address location="http://localhost:10080"/>
-    </port>
-  </service>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/test_rpc.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/rpc/test_rpc.rb
deleted file mode 100644 (file)
index fdd5555..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-require 'test/unit'
-require 'wsdl/parser'
-require 'wsdl/soap/wsdl2ruby'
-
-
-module WSDL; module SimpleType
-
-
-class TestRPC < Test::Unit::TestCase
-  DIR = File.dirname(File.expand_path(__FILE__))
-  def pathname(filename)
-    File.join(DIR, filename)
-  end
-
-  def test_rpc
-    gen = WSDL::SOAP::WSDL2Ruby.new
-    gen.location = pathname("rpc.wsdl")
-    gen.basedir = DIR
-    gen.logger.level = Logger::FATAL
-    gen.opt['classdef'] = nil
-    gen.opt['driver'] = nil
-    gen.opt['client_skelton'] = nil
-    gen.opt['servant_skelton'] = nil
-    gen.opt['standalone_server_stub'] = nil
-    gen.opt['force'] = true
-    suppress_warning do
-      gen.run
-    end
-    compare("expectedEchoVersion.rb", "echo_version.rb")
-    compare("expectedDriver.rb", "echo_versionDriver.rb")
-    compare("expectedService.rb", "echo_version_service.rb")
-    compare("expectedClient.rb", "echo_version_serviceClient.rb")
-    compare("expectedServant.rb", "echo_versionServant.rb")
-
-    File.unlink(pathname("echo_version.rb"))
-    File.unlink(pathname("echo_versionDriver.rb"))
-    File.unlink(pathname("echo_version_service.rb"))
-    File.unlink(pathname("echo_version_serviceClient.rb"))
-    File.unlink(pathname("echo_versionServant.rb"))
-  end
-
-  def compare(expected, actual)
-    assert_equal(loadfile(expected), loadfile(actual), actual)
-  end
-
-  def loadfile(file)
-    File.open(pathname(file)) { |f| f.read }
-  end
-
-  def suppress_warning
-    back = $VERBOSE
-    $VERBOSE = nil
-    begin
-      yield
-    ensure
-      $VERBOSE = back
-    end
-  end
-end
-
-
-end; end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/simpletype.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/simpletype.wsdl
deleted file mode 100644 (file)
index 623969c..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<definitions name="ping_service"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:tns="urn:example.com:simpletype"
-    targetNamespace="urn:example.com:simpletype"
-    xmlns="http://schemas.xmlsoap.org/wsdl/">
-  <types>
-    <xsd:schema targetNamespace="urn:example.com:simpletype">
-      <xsd:element name="ruby">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element minOccurs="1" maxOccurs="1" name="myversion" type="tns:myversion"/>
-            <xsd:element minOccurs="0" maxOccurs="1" name="date" type="xsd:dateTime"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-
-      <xsd:simpleType name="myversion">
-        <xsd:restriction base="xsd:string">
-          <xsd:enumeration value="1.6"/>
-          <xsd:enumeration value="1.8"/>
-          <xsd:enumeration value="1.9"/>
-        </xsd:restriction>
-      </xsd:simpleType>
-
-      <xsd:element name="myid" type="tns:ID"/>
-
-      <xsd:simpleType name="ID">
-        <xsd:restriction base="xsd:string">
-          <xsd:length value="18"/>
-          <xsd:pattern value='[a-zA-Z0-9]{18}'/>
-        </xsd:restriction>
-      </xsd:simpleType>
-    </xsd:schema>
-  </types>
-
-  <message name="ping_in">
-    <part name="parameters" element="tns:ruby"/>
-  </message>
-
-  <message name="ping_out">
-    <part name="parameters" type="xsd:string"/>
-  </message>
-
-  <message name="ping_id_in">
-    <part name="parameters" element="tns:myid"/>
-  </message>
-
-  <message name="ping_id_out">
-    <part name="parameters" element="tns:myid"/>
-  </message>
-
-  <message name="versionmsg">
-    <part name="myversion" element="tns:myversion"/>
-  </message>
-
-  <portType name="ping_port_type">
-    <operation name="ping">
-      <input message="tns:ping_in"/>
-      <output message="tns:ping_out"/>
-    </operation>
-
-    <operation name="ping_id">
-      <input message="tns:ping_id_in"/>
-      <output message="tns:ping_id_out"/>
-    </operation>
-
-    <operation name="echo_version">
-      <input message="tns:versionmsg"/>
-      <output message="tns:versionmsg"/>
-    </operation>
-  </portType>
-
-  <binding name="ping_binding" type="tns:ping_port_type">
-    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
-    <operation name="ping">
-      <soap:operation soapAction="urn:example.com:simpletype:ping" style="document"/>
-      <input><soap:body use="literal"/></input>
-      <output><soap:body use="literal"/></output>
-    </operation>
-
-    <operation name="ping_id">
-      <soap:operation soapAction="urn:example.com:simpletype:ping_id" style="document"/>
-      <input><soap:body use="literal"/></input>
-      <output><soap:body use="literal"/></output>
-    </operation>
-  </binding>
-
-  <service name="ping_service">
-    <port name="ping_port" binding="tns:ping_binding">
-      <soap:address location="http://localhost:10080"/>
-    </port>
-  </service>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/test_simpletype.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/simpletype/test_simpletype.rb
deleted file mode 100644 (file)
index 7e644c3..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/standaloneServer'
-require 'soap/wsdlDriver'
-
-
-module WSDL
-module SimpleType
-
-
-class TestSimpleType < Test::Unit::TestCase
-  class Server < ::SOAP::RPC::StandaloneServer
-    def on_init
-      add_document_method(self, 'urn:example.com:simpletype:ping', 'ping',
-        XSD::QName.new('urn:example.com:simpletype', 'ruby'),
-        XSD::QName.new('http://www.w3.org/2001/XMLSchema', 'string'))
-      add_document_method(self, 'urn:example.com:simpletype:ping_id', 'ping_id',
-        XSD::QName.new('urn:example.com:simpletype', 'myid'),
-        XSD::QName.new('urn:example.com:simpletype', 'myid'))
-    end
-  
-    def ping(ruby)
-      version = ruby["myversion"]
-      date = ruby["date"]
-      "#{version} (#{date})"
-    end
-
-    def ping_id(id)
-      id
-    end
-  end
-
-  DIR = File.dirname(File.expand_path(__FILE__))
-
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_client
-  end
-
-  def setup_server
-    @server = Server.new('Test', "urn:example.com:simpletype", '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @server_thread = start_server_thread(@server)
-  end
-
-  def setup_client
-    wsdl = File.join(DIR, 'simpletype.wsdl')
-    @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.generate_explicit_type = false
-    @client.wiredump_dev = STDOUT if $DEBUG
-  end
-
-  def teardown
-    teardown_server
-    teardown_client
-  end
-
-  def teardown_server
-    @server.shutdown
-    @server_thread.kill
-    @server_thread.join
-  end
-
-  def teardown_client
-    @client.reset_stream
-  end
-
-  def start_server_thread(server)
-    t = Thread.new {
-      Thread.current.abort_on_exception = true
-      server.start
-    }
-    t
-  end
-
-  def test_ping
-    ret = @client.ping({:myversion => "1.9", :date => "2004-01-01T00:00:00Z"})
-    assert_equal("1.9 (2004-01-01T00:00:00Z)", ret)
-  end
-
-  def test_ping_id
-    ret = @client.ping_id("012345678901234567")
-    assert_equal("012345678901234567", ret)
-    # length
-    assert_raise(XSD::ValueSpaceError) do
-      @client.ping_id("0123456789012345678")
-    end
-    # pattern
-    assert_raise(XSD::ValueSpaceError) do
-      @client.ping_id("01234567890123456;")
-    end
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/soap/soapbodyparts.wsdl b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/soap/soapbodyparts.wsdl
deleted file mode 100644 (file)
index 0e6da0e..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0"?>
-<definitions
-    name="soapbodyparts"
-    targetNamespace="urn:www.example.com:soapbodyparts:v1"
-    xmlns:tns="urn:www.example.com:soapbodyparts:v1"
-    xmlns="http://schemas.xmlsoap.org/wsdl/"
-    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
-
-  <types>
-    <schema xmlns="http://www.w3.org/2001/XMLSchema"
-       targetNamespace="urn:www.example.com:soapbodyparts:v1">
-      <import namespace = "http://schemas.xmlsoap.org/soap/encoding/"/>
-      <complexType name="StringArray">
-       <complexContent>
-         <restriction base="soapenc:Array">
-           <attribute ref="soapenc:arrayType" wsdl:arrayType="string[]"/>
-         </restriction>
-       </complexContent>
-      </complexType>
-    </schema>
-  </types>
-
-  <message name="fooRequest">
-    <part name="param1" type="xsd:string"/>
-    <part name="param2" type="xsd:string"/>
-    <part name="param3" type="xsd:string"/>
-  </message>
-
-  <message name="fooResponse">
-    <part name="return" type="tns:StringArray"/>
-  </message>
-
-  <portType name="FooServicePortType">
-    <operation name="foo"
-       parameterOrder="param3 param2 param1">
-      <input message="tns:fooRequest"/>
-      <output message="tns:fooResponse"/>
-    </operation>
-    <operation name="bar"
-       parameterOrder="param1 param2 param3">
-      <input message="tns:fooRequest"/>
-      <output message="tns:fooResponse"/>
-    </operation>
-    <operation name="baz">
-      <input message="tns:fooRequest"/>
-      <output message="tns:fooResponse"/>
-    </operation>
-  </portType>
-
-  <binding name="FooServicePortBinding" type="tns:FooServicePortType">
-    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
-    <operation name="foo">
-      <soap:operation soapAction=""/>
-      <input>
-       <soap:body use="encoded"
-           parts="param1 param3"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="urn:www.example.com:soapbodyparts:v1"/>
-      </input>
-      <output>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="urn:www.example.com:soapbodyparts:v1"/>
-      </output>
-    </operation>
-    <operation name="bar">
-      <soap:operation soapAction=""/>
-      <input>
-       <soap:body use="encoded"
-           parts="param3 param2"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="urn:www.example.com:soapbodyparts:v1"/>
-      </input>
-      <output>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="urn:www.example.com:soapbodyparts:v1"/>
-      </output>
-    </operation>
-    <operation name="baz">
-      <soap:operation soapAction=""/>
-      <input>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="urn:www.example.com:soapbodyparts:v1"/>
-      </input>
-      <output>
-       <soap:body use="encoded"
-           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
-           namespace="urn:www.example.com:soapbodyparts:v1"/>
-      </output>
-    </operation>
-  </binding>
-
-  <service name="FooService">
-    <port name="FooServicePort" binding="tns:FooServicePortBinding">
-      <soap:address location="http://raa.ruby-lang.org/soap/1.0.2/"/>
-    </port>
-  </service>
-</definitions>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/soap/test_soapbodyparts.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/soap/test_soapbodyparts.rb
deleted file mode 100644 (file)
index 291319a..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-require 'test/unit'
-require 'soap/rpc/standaloneServer'
-require 'soap/wsdlDriver'
-
-
-module WSDL
-module SOAP
-
-
-class TestSOAPBodyParts < Test::Unit::TestCase
-  class Server < ::SOAP::RPC::StandaloneServer
-    def on_init
-      add_method(self, 'foo', 'p1', 'p2', 'p3')
-      add_method(self, 'bar', 'p1', 'p2', 'p3')
-      add_method(self, 'baz', 'p1', 'p2', 'p3')
-    end
-  
-    def foo(p1, p2, p3)
-      [p1, p2, p3]
-    end
-
-    alias bar foo
-
-    def baz(p1, p2, p3)
-      [p3, p2, p1]
-    end
-  end
-
-  DIR = File.dirname(File.expand_path(__FILE__))
-
-  Port = 17171
-
-  def setup
-    setup_server
-    setup_client
-  end
-
-  def setup_server
-    @server = Server.new('Test', "urn:www.example.com:soapbodyparts:v1", '0.0.0.0', Port)
-    @server.level = Logger::Severity::ERROR
-    @t = Thread.new {
-      Thread.current.abort_on_exception = true
-      @server.start
-    }
-  end
-
-  def setup_client
-    wsdl = File.join(DIR, 'soapbodyparts.wsdl')
-    @client = ::SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-    @client.endpoint_url = "http://localhost:#{Port}/"
-    @client.wiredump_dev = STDERR if $DEBUG
-  end
-
-  def teardown
-    teardown_server
-    teardown_client
-  end
-
-  def teardown_server
-    @server.shutdown
-    @t.kill
-    @t.join
-  end
-
-  def teardown_client
-    @client.reset_stream
-  end
-
-  def test_soapbodyparts
-    assert_equal(["1", "2", "3"], @client.foo("1", "2", "3"))
-    assert_equal(["3", "2", "1"], @client.foo("3", "2", "1"))
-    assert_equal(["1", "2", "3"], @client.bar("1", "2", "3"))
-    assert_equal(["3", "2", "1"], @client.baz("1", "2", "3"))
-  end
-end
-
-
-end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/test_emptycomplextype.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/test_emptycomplextype.rb
deleted file mode 100644 (file)
index 71d1b86..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-require 'test/unit'
-require 'wsdl/parser'
-
-
-module WSDL
-
-
-class TestWSDL < Test::Unit::TestCase
-  def setup
-    @file = File.join(File.dirname(File.expand_path(__FILE__)), 'emptycomplextype.wsdl')
-  end
-
-  def test_wsdl
-    @wsdl = WSDL::Parser.new.parse(File.open(@file) { |f| f.read })
-    assert(/\{urn:jp.gr.jin.rrr.example.emptycomplextype\}emptycomplextype/ =~ @wsdl.inspect)
-  end
-end
-
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/test_fault.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/test_fault.rb
deleted file mode 100644 (file)
index ec41452..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-require 'test/unit'
-require 'soap/processor'
-require 'soap/mapping'
-require 'soap/rpc/element'
-require 'wsdl/parser'
-
-
-module WSDL
-
-
-class TestFault < Test::Unit::TestCase
-  def setup
-    @xml =<<__EOX__
-<?xml version="1.0" encoding="utf-8" ?>
-<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <env:Body>
-    <env:Fault xmlns:n1="http://schemas.xmlsoap.org/soap/encoding/"
-        env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
-      <faultcode xsi:type="xsd:string">Server</faultcode>
-      <faultstring xsi:type="xsd:string">faultstring</faultstring>
-      <faultactor xsi:type="xsd:string">faultactor</faultactor>
-      <detail xmlns:n2="http://www.ruby-lang.org/xmlns/ruby/type/custom"
-          xsi:type="n2:SOAPException">
-       <excn_type_name xsi:type="xsd:string">type</excn_type_name>
-       <cause href="#id123"/>
-      </detail>
-    </env:Fault>
-    <cause id="id123" xsi:type="xsd:int">5</cause>
-  </env:Body>
-</env:Envelope>
-__EOX__
-  end
-
-  def test_by_wsdl
-    rpc_decode_typemap = WSDL::Definitions.soap_rpc_complextypes
-    opt = {}
-    opt[:default_encodingstyle] = ::SOAP::EncodingNamespace
-    opt[:decode_typemap] = rpc_decode_typemap
-    header, body = ::SOAP::Processor.unmarshal(@xml, opt)
-    fault = ::SOAP::Mapping.soap2obj(body.response)
-    assert_equal("Server", fault.faultcode)
-    assert_equal("faultstring", fault.faultstring)
-    assert_equal(URI.parse("faultactor"), fault.faultactor)
-    assert_equal(5, fault.detail.cause)
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/wsdl/test_multiplefault.rb b/ruby/doc/ruby/ruby-1.8.7/test/wsdl/test_multiplefault.rb
deleted file mode 100644 (file)
index 7004297..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-require 'test/unit'
-require 'wsdl/parser'
-require 'wsdl/soap/classDefCreator'
-
-
-module WSDL
-
-
-class TestMultipleFault < Test::Unit::TestCase
-  def self.setup(filename)
-    @@filename = filename
-  end
-
-  def test_multiplefault
-    @wsdl = WSDL::Parser.new.parse(File.open(@@filename) { |f| f.read })
-    classdefstr = WSDL::SOAP::ClassDefCreator.new(@wsdl).dump
-    yield_eval_binding(classdefstr) do |b|
-      assert_equal(
-       WSDL::TestMultipleFault::AuthenticationError,
-       eval("AuthenticationError", b)
-      )
-      assert_equal(
-       WSDL::TestMultipleFault::AuthorizationError,
-       eval("AuthorizationError", b)
-      )
-    end
-  end
-
-  def yield_eval_binding(evaled)
-    b = binding
-    eval(evaled, b)
-    yield(b)
-  end
-end
-
-TestMultipleFault.setup(File.join(File.dirname(__FILE__), 'multiplefault.wsdl'))
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_bool.expected b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_bool.expected
deleted file mode 100644 (file)
index 121e3a8..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
---- 
-- true
-- false
\ No newline at end of file
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_bool.xml b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_bool.xml
deleted file mode 100644 (file)
index 04ed007..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-<methodResponse>
-  <params>
-    <param>
-      <value><boolean>0</boolean></value>
-    </param>
-  </params>
-</methodResponse>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_cdata.expected b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_cdata.expected
deleted file mode 100644 (file)
index 17d7861..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
---- 
-- true
-- test
\ No newline at end of file
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_cdata.xml b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_cdata.xml
deleted file mode 100644 (file)
index ba990e0..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-<methodResponse>
-  <params>
-    <param>
-      <value><string><![CDATA[test]]></string></value>
-    </param>
-  </params>
-</methodResponse>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_covert.expected b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_covert.expected
deleted file mode 100644 (file)
index a9ac103..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- 
-- true
-- >
-  Site,SANs,Array
-
-  Configured Capacity,Array Reserved Capacity,Array Ava
-
-  ilable Capacity,Array % Reserved,Host Allocated,Host Used,Host Free,Host %
-
-  Used
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_covert.xml b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/bug_covert.xml
deleted file mode 100644 (file)
index 1d9abd2..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0"
-encoding="ISO-8859-1"?><methodResponse><params><param><value>Site,SANs,Array
-Configured Capacity,Array Reserved Capacity,Array Ava
-ilable Capacity,Array % Reserved,Host Allocated,Host Used,Host Free,Host %
-Used
-</value></param></params></methodResponse>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/datetime_iso8601.xml b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/datetime_iso8601.xml
deleted file mode 100644 (file)
index 43d8da6..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-<methodResponse>
-  <params>
-    <param>
-      <value><dateTime.iso8601>20041105T01:15:23Z</dateTime.iso8601></value>
-    </param>
-  </params>
-</methodResponse>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/fault.xml b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/fault.xml
deleted file mode 100644 (file)
index 041c464..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<methodResponse>
-  <fault>
-    <value><struct>
-      <member>
-        <name>faultCode</name>
-        <value><int>4</int></value>
-      </member>
-      <member>
-        <name>faultString</name>
-        <value>an error message</value>
-      </member>
-    </struct></value>
-  </fault>
-</methodResponse>
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/value.expected b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/value.expected
deleted file mode 100644 (file)
index 9463d02..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
---- 
-- Test
-- 
-  - Hallo Leute
-  - "   Hallo   "
-  - ''
-  - "   "
\ No newline at end of file
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/value.xml b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/value.xml
deleted file mode 100644 (file)
index 1978616..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<methodCall>
-  <methodName>Test</methodName>
-  <params>
-    <param>
-      <value>Hallo Leute</value>
-    </param>
-    <param>
-      <value>   Hallo   </value>
-    </param>
-    <param>
-      <value></value>
-    </param>
-    <param>
-      <value>   </value>
-    </param>
-  </params>
-</methodCall>
-
-
-
-
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/xml1.expected b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/xml1.expected
deleted file mode 100644 (file)
index ff96de8..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
---- 
-- true
-- 
-  - 
-    subscriber: MegaCorp
-    lastName: Baker
-    telephone1: 1-508-791-1267
-    telephone2: 1-800-445-2588
-    password: p1111
-    OID: "1"
-    email: hbaker@yahoo.com
-    adminId: hbaker
-    objectName: AdministratorDO
-  - 
-    subscriber: CornerStore
-    lastName: Dragon
-    telephone1: 1-781-789-9089
-    telephone2: 1-800-445-2588
-    password: p3333
-    OID: "3"
-    email: adragon@yahoo.com
-    adminId: adragon
-    objectName: AdministratorDO
-  - 
-    subscriber: Cyberdyne
-    lastName: Rodman
-    telephone1: 1-617-789-1890
-    telephone2: 1-800-445-2588
-    password: p4444
-    OID: "4"
-    email: mrodman@yahoo.com
-    adminId: mrodman
-    objectName: AdministratorDO
-  - 
-    subscriber: StarSports
-    lastName: Jordan
-    telephone1: 1-617-890-7897
-    telephone2: 1-800-445-2588
-    password: p5555
-    OID: "5"
-    email: mjordan@yahoo.com
-    adminId: mjordan
-    objectName: AdministratorDO
-  - 
-    subscriber: GreatBooks
-    lastName: Pippen
-    telephone1: 1-781-789-9876
-    telephone2: 1-800-445-2588
-    password: p6666
-    OID: "6"
-    email: gpippen@yahoo.com
-    adminId: gpippen
-    objectName: AdministratorDO
-  - 
-    subscriber: AxisChemicals
-    lastName: Andhrew
-    telephone1: 1-781-678-8970
-    telephone2: 1-800-445-2588
-    password: p7777
-    OID: "7"
-    email: aandrew@yahoo.com
-    adminId: aandrew
-    objectName: AdministratorDO
-  - 
-    subscriber: MediaShop
-    lastName: Vincent
-    telephone1: 1-786-897-8908
-    telephone2: 1-800-445-2588
-    password: p8888
-    OID: "8"
-    email: tvincent@yahoo.com
-    adminId: tvincent
-    objectName: AdministratorDO
-  - 
-    subscriber: SmartShop
-    lastName: Richard
-    telephone1: 1-508-789-6789
-    telephone2: 1-800-445-2588
-    password: p9999
-    OID: "9"
-    email: krichard@yahoo.com
-    adminId: krichard
-    objectName: AdministratorDO
-  - 
-    subscriber: HomeNeeds
-    lastName: Cornell
-    telephone1: 1-617-789-8979
-    telephone2: 1-800-445-2588
-    password: paaaa
-    OID: "10"
-    email: gconell@yahoo.com
-    adminId: gcornell
-    objectName: AdministratorDO
-  - 
-    subscriber: MegaCorp
-    lastName: HorstMann
-    telephone1: 1-508-791-1267
-    telephone2: 1-800-445-2588
-    password: p1111
-    OID: "11"
-    email: shorstmann@yahoo.com
-    adminId: shorstmann
-    objectName: AdministratorDO
-  - 
-    subscriber: CornerStore
-    lastName: Bob
-    telephone1: 1-781-789-9089
-    telephone2: 1-800-445-2588
-    password: p3333
-    OID: "13"
-    email: rbob@yahoo.com
-    adminId: rbob
-    objectName: AdministratorDO
-  - 
-    subscriber: Cyberdyne
-    lastName: Peter
-    telephone1: 1-617-789-1890
-    telephone2: 1-800-445-2588
-    password: p4444
-    OID: "14"
-    email: speter@yahoo.com
-    adminId: speter
-    objectName: AdministratorDO
-  - 
-    subscriber: StarSports
-    lastName: Novak
-    telephone1: 1-617-890-7897
-    telephone2: 1-800-445-2588
-    password: p5555
-    OID: "15"
-    email: pnovak@yahoo.com
-    adminId: pnovak
-    objectName: AdministratorDO
-  - 
-    subscriber: GreatBooks
-    lastName: Nancy
-    telephone1: 1-781-789-9876
-    telephone2: 1-800-445-2588
-    password: p6666
-    OID: "16"
-    email: pnancy@yahoo.com
-    adminId: pnancy
-    objectName: AdministratorDO
-  - 
-    subscriber: AxisChemicals
-    lastName: Michel
-    telephone1: 1-781-678-8970
-    telephone2: 1-800-445-2588
-    password: p7777
-    OID: "17"
-    email: hmichel@yahoo.com
-    adminId: hmichel
-    objectName: AdministratorDO
-  - 
-    subscriber: MediaShop
-    lastName: David
-    telephone1: 1-786-897-8908
-    telephone2: 1-800-445-2588
-    password: p8888
-    OID: "18"
-    email: kdavid@yahoo.com
-    adminId: kdavid
-    objectName: AdministratorDO
-  - 
-    subscriber: SmartShop
-    lastName: Valnoor
-    telephone1: 1-508-789-6789
-    telephone2: 1-800-445-2588
-    password: p9999
-    OID: "19"
-    email: pvalnoor@yahoo.com
-    adminId: pvalnoor
-    objectName: AdministratorDO
-  - 
-    subscriber: HomeNeeds
-    lastName: Smith
-    telephone1: 1-617-789-8979
-    telephone2: 1-800-445-2588
-    password: paaaa
-    OID: "20"
-    email: wsmith@yahoo.com
-    adminId: wsmith
-    objectName: AdministratorDO
-  - 
-    subscriber: MegaCorp
-    lastName: Caral
-    telephone1: 1-781-789-9876
-    telephone2: 1-800-445-2588
-    password: p6666
-    OID: "21"
-    email: gcaral@yahoo.com
-    adminId: gcaral
-    objectName: AdministratorDO
-  - 
-    subscriber: CornerStore
-    lastName: Hillary
-    telephone1: 1-786-897-8908
-    telephone2: 1-800-445-2588
-    password: p8888
-    OID: "23"
-    email: phillary@yahoo.com
-    adminId: phillary
-    objectName: AdministratorDO
-  - 
-    subscriber: Cyberdyne
-    lastName: Philip
-    telephone1: 1-508-789-6789
-    telephone2: 1-800-445-2588
-    password: p9999
-    OID: "24"
-    email: bphilip@yahoo.com
-    adminId: bphilip
-    objectName: AdministratorDO
-  - 
-    subscriber: StarSports
-    lastName: Andrea
-    telephone1: 1-617-789-8979
-    telephone2: 1-800-445-2588
-    password: paaaa
-    OID: "25"
-    email: sandrea@yahoo.com
-    adminId: sandrea
-    objectName: AdministratorDO
-  - 
-    subscriber: s4
-    lastName: "null"
-    telephone1: "null"
-    telephone2: "null"
-    password: s4
-    OID: "26"
-    email: "null"
-    adminId: s4
-    objectName: AdministratorDO
-  - 
-    subscriber: BigBank
-    lastName: administrator
-    telephone1: ''
-    telephone2: ''
-    password: admin
-    OID: "82"
-    email: ''
-    adminId: admin
-    objectName: AdministratorDO
\ No newline at end of file
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/xml1.xml b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/data/xml1.xml
deleted file mode 100644 (file)
index 10aa554..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?><methodResponse><params><param><value><array><data><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>hbaker</value></member><member><name>email</name><value>hbaker@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-508-791-1267</value></member><member><name>OID</name><value>1</value></member><member><name>password</name><value>p1111</value></member><member><name>lastName</name><value>Baker</value></member><member><name>subscriber</name><value>MegaCorp</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>adragon</value></member><member><name>email</name><value>adragon@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-781-789-9089</value></member><member><name>OID</name><value>3</value></member><member><name>password</name><value>p3333</value></member><member><name>lastName</name><value>Dragon</value></member><member><name>subscriber</name><value>CornerStore</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>mrodman</value></member><member><name>email</name><value>mrodman@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-617-789-1890</value></member><member><name>OID</name><value>4</value></member><member><name>password</name><value>p4444</value></member><member><name>lastName</name><value>Rodman</value></member><member><name>subscriber</name><value>Cyberdyne</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>mjordan</value></member><member><name>email</name><value>mjordan@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-617-890-7897</value></member><member><name>OID</name><value>5</value></member><member><name>password</name><value>p5555</value></member><member><name>lastName</name><value>Jordan</value></member><member><name>subscriber</name><value>StarSports</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>gpippen</value></member><member><name>email</name><value>gpippen@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-781-789-9876</value></member><member><name>OID</name><value>6</value></member><member><name>password</name><value>p6666</value></member><member><name>lastName</name><value>Pippen</value></member><member><name>subscriber</name><value>GreatBooks</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>aandrew</value></member><member><name>email</name><value>aandrew@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-781-678-8970</value></member><member><name>OID</name><value>7</value></member><member><name>password</name><value>p7777</value></member><member><name>lastName</name><value>Andhrew</value></member><member><name>subscriber</name><value>AxisChemicals</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>tvincent</value></member><member><name>email</name><value>tvincent@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-786-897-8908</value></member><member><name>OID</name><value>8</value></member><member><name>password</name><value>p8888</value></member><member><name>lastName</name><value>Vincent</value></member><member><name>subscriber</name><value>MediaShop</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>krichard</value></member><member><name>email</name><value>krichard@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-508-789-6789</value></member><member><name>OID</name><value>9</value></member><member><name>password</name><value>p9999</value></member><member><name>lastName</name><value>Richard</value></member><member><name>subscriber</name><value>SmartShop</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>gcornell</value></member><member><name>email</name><value>gconell@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-617-789-8979</value></member><member><name>OID</name><value>10</value></member><member><name>password</name><value>paaaa</value></member><member><name>lastName</name><value>Cornell</value></member><member><name>subscriber</name><value>HomeNeeds</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>shorstmann</value></member><member><name>email</name><value>shorstmann@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-508-791-1267</value></member><member><name>OID</name><value>11</value></member><member><name>password</name><value>p1111</value></member><member><name>lastName</name><value>HorstMann</value></member><member><name>subscriber</name><value>MegaCorp</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>rbob</value></member><member><name>email</name><value>rbob@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-781-789-9089</value></member><member><name>OID</name><value>13</value></member><member><name>password</name><value>p3333</value></member><member><name>lastName</name><value>Bob</value></member><member><name>subscriber</name><value>CornerStore</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>speter</value></member><member><name>email</name><value>speter@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-617-789-1890</value></member><member><name>OID</name><value>14</value></member><member><name>password</name><value>p4444</value></member><member><name>lastName</name><value>Peter</value></member><member><name>subscriber</name><value>Cyberdyne</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>pnovak</value></member><member><name>email</name><value>pnovak@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-617-890-7897</value></member><member><name>OID</name><value>15</value></member><member><name>password</name><value>p5555</value></member><member><name>lastName</name><value>Novak</value></member><member><name>subscriber</name><value>StarSports</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>pnancy</value></member><member><name>email</name><value>pnancy@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-781-789-9876</value></member><member><name>OID</name><value>16</value></member><member><name>password</name><value>p6666</value></member><member><name>lastName</name><value>Nancy</value></member><member><name>subscriber</name><value>GreatBooks</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>hmichel</value></member><member><name>email</name><value>hmichel@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-781-678-8970</value></member><member><name>OID</name><value>17</value></member><member><name>password</name><value>p7777</value></member><member><name>lastName</name><value>Michel</value></member><member><name>subscriber</name><value>AxisChemicals</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>kdavid</value></member><member><name>email</name><value>kdavid@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-786-897-8908</value></member><member><name>OID</name><value>18</value></member><member><name>password</name><value>p8888</value></member><member><name>lastName</name><value>David</value></member><member><name>subscriber</name><value>MediaShop</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>pvalnoor</value></member><member><name>email</name><value>pvalnoor@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-508-789-6789</value></member><member><name>OID</name><value>19</value></member><member><name>password</name><value>p9999</value></member><member><name>lastName</name><value>Valnoor</value></member><member><name>subscriber</name><value>SmartShop</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>wsmith</value></member><member><name>email</name><value>wsmith@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-617-789-8979</value></member><member><name>OID</name><value>20</value></member><member><name>password</name><value>paaaa</value></member><member><name>lastName</name><value>Smith</value></member><member><name>subscriber</name><value>HomeNeeds</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>gcaral</value></member><member><name>email</name><value>gcaral@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-781-789-9876</value></member><member><name>OID</name><value>21</value></member><member><name>password</name><value>p6666</value></member><member><name>lastName</name><value>Caral</value></member><member><name>subscriber</name><value>MegaCorp</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>phillary</value></member><member><name>email</name><value>phillary@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-786-897-8908</value></member><member><name>OID</name><value>23</value></member><member><name>password</name><value>p8888</value></member><member><name>lastName</name><value>Hillary</value></member><member><name>subscriber</name><value>CornerStore</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>bphilip</value></member><member><name>email</name><value>bphilip@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-508-789-6789</value></member><member><name>OID</name><value>24</value></member><member><name>password</name><value>p9999</value></member><member><name>lastName</name><value>Philip</value></member><member><name>subscriber</name><value>Cyberdyne</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>sandrea</value></member><member><name>email</name><value>sandrea@yahoo.com</value></member><member><name>telephone2</name><value>1-800-445-2588</value></member><member><name>telephone1</name><value>1-617-789-8979</value></member><member><name>OID</name><value>25</value></member><member><name>password</name><value>paaaa</value></member><member><name>lastName</name><value>Andrea</value></member><member><name>subscriber</name><value>StarSports</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>s4</value></member><member><name>email</name><value>null</value></member><member><name>telephone2</name><value>null</value></member><member><name>telephone1</name><value>null</value></member><member><name>OID</name><value>26</value></member><member><name>password</name><value>s4</value></member><member><name>lastName</name><value>null</value></member><member><name>subscriber</name><value>s4</value></member></struct></value><value><struct><member><name>objectName</name><value>AdministratorDO</value></member><member><name>adminId</name><value>admin</value></member><member><name>email</name><value></value></member><member><name>telephone2</name><value></value></member><member><name>telephone1</name><value></value></member><member><name>OID</name><value>82</value></member><member><name>password</name><value>admin</value></member><member><name>lastName</name><value>administrator</value></member><member><name>subscriber</name><value>BigBank</value></member></struct></value></data></array></value></param></params></methodResponse>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_cookie.rb b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_cookie.rb
deleted file mode 100644 (file)
index c1be5c5..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-require 'test/unit'
-require 'time'
-require 'webrick'
-require File.join(File.dirname(__FILE__), 'webrick_testing')
-require "xmlrpc/server"
-require 'xmlrpc/client'
-
-class TestCookie < Test::Unit::TestCase
-  include WEBrick_Testing
-
-  def create_servlet
-    s = XMLRPC::WEBrickServlet.new
-
-    def s.logged_in_users
-      @logged_in_users ||= {}
-    end
-    def s.request
-      @request
-    end
-    def s.response
-      @response
-    end
-    def s.service(request, response)
-      @request = request
-      @response = response
-      super
-    ensure
-      @request = nil
-      @response = nil
-    end
-
-    key = Time.now.to_i.to_s
-    valid_user = "valid-user"
-    s.add_handler("test.login") do |user, password|
-      ok = (user == valid_user and password == "secret")
-      if ok
-        s.logged_in_users[key] = user
-        expires = (Time.now + 60 * 60).httpdate
-        cookies = s.response.cookies
-        cookies << "key=\"#{key}\"; path=\"/RPC2\"; expires=#{expires}"
-        cookies << "user=\"#{user}\"; path=\"/RPC2\""
-      end
-      ok
-    end
-
-    s.add_handler("test.require_authenticate_echo") do |string|
-      cookies = {}
-      s.request.cookies.each do |cookie|
-        cookies[cookie.name] = cookie.value
-      end
-      if cookies == {"key" => key, "user" => valid_user}
-        string
-      else
-        raise XMLRPC::FaultException.new(29, "Authentication required")
-      end
-    end
-
-    s.set_default_handler do |name, *args|
-      raise XMLRPC::FaultException.new(-99, "Method #{name} missing" +
-            " or wrong number of parameters!")
-    end
-
-    s.add_introspection
-
-    s
-  end
-
-  def setup_http_server(port)
-    option = {:Port => port}
-
-    start_server(option) {|w| w.mount('/RPC2', create_servlet) }
-
-    @s = XMLRPC::Client.new3(:port => port)
-  end
-
-  PORT = 8070
-  def test_cookie
-    begin
-      setup_http_server(PORT)
-      do_test
-    ensure
-      stop_server
-    end
-  end
-
-  def do_test
-    assert(!@s.call("test.login", "invalid-user", "invalid-password"))
-    exception = assert_raise(XMLRPC::FaultException) do
-      @s.call("test.require_authenticate_echo", "Hello")
-    end
-    assert_equal(29, exception.faultCode)
-
-    assert(@s.call("test.login", "valid-user", "secret"))
-    assert_equal("Hello", @s.call("test.require_authenticate_echo", "Hello"))
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_datetime.rb b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_datetime.rb
deleted file mode 100644 (file)
index e38cea6..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-require 'test/unit'
-require "xmlrpc/datetime"
-
-class Test_DateTime < Test::Unit::TestCase
-
-  def test_new
-    dt = createDateTime()
-
-    assert_instance_of(XMLRPC::DateTime, dt)
-  end
-
-  def test_new_exception
-    assert_raises(ArgumentError) { XMLRPC::DateTime.new(4.5, 13, 32, 25, 60, 60) }
-    assert_raises(ArgumentError) { XMLRPC::DateTime.new(2001, 12, 32, 25, 60, 60) }
-    assert_raises(ArgumentError) { XMLRPC::DateTime.new(2001, 12, 31, 25, 60, 60) }
-    assert_raises(ArgumentError) { XMLRPC::DateTime.new(2001, 12, 31, 24, 60, 60) }
-    assert_raises(ArgumentError) { XMLRPC::DateTime.new(2001, 12, 31, 24, 59, 60) }
-    assert_nothing_raised(ArgumentError) { XMLRPC::DateTime.new(2001, 12, 31, 24, 59, 59) }
-
-    assert_raises(ArgumentError) { XMLRPC::DateTime.new(2001, 0, 0, -1, -1, -1) }
-    assert_raises(ArgumentError) { XMLRPC::DateTime.new(2001, 1, 0, -1, -1, -1) }
-    assert_raises(ArgumentError) { XMLRPC::DateTime.new(2001, 1, 1, -1, -1, -1) }
-    assert_raises(ArgumentError) { XMLRPC::DateTime.new(2001, 1, 1, 0, -1, -1) }
-    assert_raises(ArgumentError) { XMLRPC::DateTime.new(2001, 1, 1, 0, 0, -1) }
-    assert_nothing_raised(ArgumentError) { XMLRPC::DateTime.new(2001, 1, 1, 0, 0, 0) }
-  end
-
-
-  def test_get_values
-    y, m, d, h, mi, s = 1970, 3, 24, 12, 0, 5
-    dt = XMLRPC::DateTime.new(y, m, d, h, mi, s)
-
-    assert_equal(y, dt.year)
-    assert_equal(m, dt.month)
-    assert_equal(m, dt.mon)
-    assert_equal(d, dt.day)
-
-    assert_equal(h, dt.hour)
-    assert_equal(mi,dt.min)
-    assert_equal(s, dt.sec)
-  end
-
-  def test_set_values
-    dt = createDateTime()
-    y, m, d, h, mi, s = 1950, 12, 9, 8, 52, 30
-
-    dt.year  = y
-    dt.month = m
-    dt.day   = d
-    dt.hour  = h
-    dt.min   = mi
-    dt.sec   = s
-
-    assert_equal(y, dt.year)
-    assert_equal(m, dt.month)
-    assert_equal(m, dt.mon)
-    assert_equal(d, dt.day)
-
-    assert_equal(h, dt.hour)
-    assert_equal(mi,dt.min)
-    assert_equal(s, dt.sec)
-
-    dt.mon = 5
-    assert_equal(5, dt.month)
-    assert_equal(5, dt.mon)
-  end
-
-  def test_set_exception
-    dt = createDateTime()
-    
-    assert_raises(ArgumentError)    { dt.year = 4.5 }
-    assert_nothing_raised(ArgumentError) { dt.year = -2000 }
-    assert_raises(ArgumentError) { dt.month = 0 }
-    assert_raises(ArgumentError) { dt.month = 13 }
-    assert_nothing_raised(ArgumentError) { dt.month = 7 }
-
-    assert_raises(ArgumentError) { dt.mon = 0 }
-    assert_raises(ArgumentError) { dt.mon = 13 }
-    assert_nothing_raised(ArgumentError) { dt.mon = 7 }
-
-    assert_raises(ArgumentError) { dt.day = 0 }
-    assert_raises(ArgumentError) { dt.day = 32 }
-    assert_nothing_raised(ArgumentError) { dt.day = 16 }
-
-    assert_raises(ArgumentError) { dt.hour = -1 }
-    assert_raises(ArgumentError) { dt.hour = 25 }
-    assert_nothing_raised(ArgumentError) { dt.hour = 12 }
-
-    assert_raises(ArgumentError) { dt.min = -1 }
-    assert_raises(ArgumentError) { dt.min = 60 }
-    assert_nothing_raised(ArgumentError) { dt.min = 30 }
-
-    assert_raises(ArgumentError) { dt.sec = -1 }
-    assert_raises(ArgumentError) { dt.sec = 60 }
-    assert_nothing_raised(ArgumentError) { dt.sec = 30 }
-  end
-
-  def test_to_a
-    y, m, d, h, mi, s = 1970, 3, 24, 12, 0, 5
-    dt = XMLRPC::DateTime.new(y, m, d, h, mi, s)
-    a = dt.to_a 
-
-    assert_instance_of(Array, a)
-    assert_equal(6,  a.size, "Returned array has wrong size")
-
-    assert_equal(y,  a[0])
-    assert_equal(m,  a[1])
-    assert_equal(d,  a[2])
-    assert_equal(h,  a[3])
-    assert_equal(mi, a[4])
-    assert_equal(s,  a[5])
-  end
-
-  def test_to_time1
-    y, m, d, h, mi, s = 1970, 3, 24, 12, 0, 5
-    dt = XMLRPC::DateTime.new(y, m, d, h, mi, s)
-    time = dt.to_time 
-    
-    assert_not_nil(time)
-
-    assert_equal(y,  time.year)
-    assert_equal(m,  time.month)
-    assert_equal(d,  time.day)
-    assert_equal(h,  time.hour)
-    assert_equal(mi, time.min)
-    assert_equal(s,  time.sec)
-  end
-
-  def test_to_time2
-    dt = createDateTime()
-    dt.year = 1969
-    
-    assert_nil(dt.to_time)
-  end
-
-  def test_to_date1
-    y, m, d, h, mi, s = 1970, 3, 24, 12, 0, 5
-    dt = XMLRPC::DateTime.new(y, m, d, h, mi, s)
-    date = dt.to_date 
-    assert_equal(y, date.year)
-    assert_equal(m, date.month)
-    assert_equal(d, date.day)
-  end
-
-  def test_to_date2
-    dt = createDateTime()
-    dt.year = 666
-    
-    assert_equal(666, dt.to_date.year)
-  end
-
-
-  def createDateTime
-    XMLRPC::DateTime.new(1970, 3, 24, 12, 0, 5)
-  end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_features.rb b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_features.rb
deleted file mode 100644 (file)
index 96a6313..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-require 'test/unit'
-require "xmlrpc/create"
-require "xmlrpc/parser"
-require "xmlrpc/config"
-
-class Test_Features < Test::Unit::TestCase
-
-  def setup
-    @params = [nil, {"test" => nil}, [nil, 1, nil]]
-  end
-
-  def test_nil_create
-    XMLRPC::XMLWriter.each_installed_writer do |writer|
-      c = XMLRPC::Create.new(writer)
-
-      XMLRPC::Config.module_eval {remove_const(:ENABLE_NIL_CREATE)}
-      XMLRPC::Config.const_set(:ENABLE_NIL_CREATE, false)
-      assert_raises(RuntimeError) { str = c.methodCall("test", *@params) }
-
-      XMLRPC::Config.module_eval {remove_const(:ENABLE_NIL_CREATE)}
-      XMLRPC::Config.const_set(:ENABLE_NIL_CREATE, true)
-      assert_nothing_raised { str = c.methodCall("test", *@params) }
-    end
-  end
-
-  def test_nil_parse
-    XMLRPC::Config.module_eval {remove_const(:ENABLE_NIL_CREATE)}
-    XMLRPC::Config.const_set(:ENABLE_NIL_CREATE, true)
-
-    XMLRPC::XMLWriter.each_installed_writer do |writer|
-      c = XMLRPC::Create.new(writer)
-      str = c.methodCall("test", *@params) 
-      XMLRPC::XMLParser.each_installed_parser do |parser|
-        para = nil
-
-        XMLRPC::Config.module_eval {remove_const(:ENABLE_NIL_PARSER)}
-        XMLRPC::Config.const_set(:ENABLE_NIL_PARSER, false)
-        assert_raises(RuntimeError) { para = parser.parseMethodCall(str) }
-
-        XMLRPC::Config.module_eval {remove_const(:ENABLE_NIL_PARSER)}
-        XMLRPC::Config.const_set(:ENABLE_NIL_PARSER, true)
-        assert_nothing_raised { para = parser.parseMethodCall(str) }
-        assert_equal(para[1], @params)
-      end
-    end
-  end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_marshal.rb b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_marshal.rb
deleted file mode 100644 (file)
index 38bc8c6..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-require 'test/unit'
-require "xmlrpc/marshal"
-
-class Test_Marshal < Test::Unit::TestCase
-  # for test_parser_values
-  class Person
-    include XMLRPC::Marshallable
-    attr_reader :name
-    def initialize(name)
-      @name = name
-    end
-  end
-
-
-  def test1_dump_response
-    assert_nothing_raised(NameError) {
-      XMLRPC::Marshal.dump_response('arg')
-    }
-  end
-
-  def test1_dump_call
-    assert_nothing_raised(NameError) {
-      XMLRPC::Marshal.dump_call('methodName', 'arg')
-    }
-  end
-
-  def test2_dump_load_response
-    value = [1, 2, 3, {"test" => true}, 3.4]
-    res   = XMLRPC::Marshal.dump_response(value)
-
-    assert_equal(value, XMLRPC::Marshal.load_response(res))
-  end
-
-  def test2_dump_load_call
-    methodName = "testMethod"
-    value      = [1, 2, 3, {"test" => true}, 3.4]
-    exp        = [methodName, [value, value]]
-
-    res   = XMLRPC::Marshal.dump_call(methodName, value, value)
-
-    assert_equal(exp, XMLRPC::Marshal.load_call(res))
-  end
-
-  def test_parser_values
-    v1 = [ 
-      1, -7778,                        # integers
-      1.0, 0.0, -333.0, 2343434343.0,  # floats
-      false, true, true, false,        # booleans
-      "Hallo", "with < and >", ""      # strings
-    ]
-
-    v2 = [
-      [v1, v1, v1],
-      {"a" => v1}
-    ]
-
-    v3 = [
-      XMLRPC::Base64.new("\001"*1000), # base64
-      :aSymbol, :anotherSym            # symbols (-> string)
-    ]
-    v3_exp = [
-      "\001"*1000,
-      "aSymbol", "anotherSym"
-    ]
-    person = Person.new("Michael")
-
-    XMLRPC::XMLParser.each_installed_parser do |parser|
-      m = XMLRPC::Marshal.new(parser)
-
-      assert_equal( v1, m.load_response(m.dump_response(v1)) )
-      assert_equal( v2, m.load_response(m.dump_response(v2)) )
-      assert_equal( v3_exp, m.load_response(m.dump_response(v3)) )
-
-      pers = m.load_response(m.dump_response(person))
-      
-      assert( pers.is_a?(Person) )
-      assert( person.name == pers.name ) 
-    end
-
-    # missing, Date, Time, DateTime
-    # Struct
-  end
-
-  def test_no_params_tag
-    # bug found by Idan Sofer
-
-    expect = %{<?xml version="1.0" ?><methodCall><methodName>myMethod</methodName><params/></methodCall>\n}
-
-    str = XMLRPC::Marshal.dump_call("myMethod")
-    assert_equal(expect, str)
-  end
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_parser.rb b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_parser.rb
deleted file mode 100644 (file)
index 44ca1f8..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-require 'test/unit'
-require 'xmlrpc/datetime'
-require "xmlrpc/parser"
-require 'yaml'
-
-module GenericParserTest
-  def datafile(base)
-    File.join(File.dirname(__FILE__), "data", base)
-  end
-  def load_data(name)
-    [File.read(datafile(name) + ".xml"), YAML.load(File.read(datafile(name) + ".expected"))]
-  end
-
-  def setup
-    @xml1, @expected1 = load_data('xml1')
-    @xml2, @expected2 = load_data('bug_covert') 
-    @xml3, @expected3 = load_data('bug_bool') 
-    @xml4, @expected4 = load_data('value') 
-
-    @cdata_xml, @cdata_expected = load_data('bug_cdata')
-
-    @datetime_xml = File.read(datafile('datetime_iso8601.xml'))
-    @datetime_expected = XMLRPC::DateTime.new(2004, 11, 5, 1, 15, 23)
-
-    @fault_doc = File.read(datafile('fault.xml'))
-  end
-
-  # test parseMethodResponse --------------------------------------------------
-  
-  def test_parseMethodResponse1
-    assert_equal(@expected1, @p.parseMethodResponse(@xml1))
-  end
-
-  def test_parseMethodResponse2
-    assert_equal(@expected2, @p.parseMethodResponse(@xml2))
-  end
-
-  def test_parseMethodResponse3
-    assert_equal(@expected3, @p.parseMethodResponse(@xml3))
-  end
-
-  def test_cdata
-    assert_equal(@cdata_expected, @p.parseMethodResponse(@cdata_xml))
-  end
-
-  def test_dateTime
-    assert_equal(@datetime_expected, @p.parseMethodResponse(@datetime_xml)[1])
-  end
-
-  # test parseMethodCall ------------------------------------------------------
-
-  def test_parseMethodCall
-    assert_equal(@expected4, @p.parseMethodCall(@xml4))
-  end
-
-  # test fault ----------------------------------------------------------------
-
-  def test_fault
-    flag, fault = @p.parseMethodResponse(@fault_doc)
-     assert_equal(flag, false)
-     unless fault.is_a? XMLRPC::FaultException
-       assert(false, "must be an instance of class XMLRPC::FaultException")
-     end
-     assert_equal(fault.faultCode, 4)
-     assert_equal(fault.faultString, "an error message")
-  end
-end
-
-# create test class for each installed parser 
-XMLRPC::XMLParser.each_installed_parser do |parser|
-  klass = parser.class
-  name = klass.to_s.split("::").last
-
-  eval %{
-    class Test_#{name} < Test::Unit::TestCase
-      include GenericParserTest
-
-      def setup
-        super
-        @p = #{klass}.new
-      end
-    end
-  }
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_webrick_server.rb b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/test_webrick_server.rb
deleted file mode 100644 (file)
index 4cd63cf..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-require 'test/unit'
-require 'webrick'
-require File.join(File.dirname(__FILE__), 'webrick_testing')
-require "xmlrpc/server"
-require 'xmlrpc/client'
-
-class Test_Webrick < Test::Unit::TestCase
-  include WEBrick_Testing
-
-  def create_servlet
-    s = XMLRPC::WEBrickServlet.new
-
-    s.add_handler("test.add") do |a,b|
-      a + b
-    end
-
-    s.add_handler("test.div") do |a,b|
-      if b == 0
-        raise XMLRPC::FaultException.new(1, "division by zero")
-      else
-        a / b 
-      end
-    end 
-
-    s.set_default_handler do |name, *args|
-      raise XMLRPC::FaultException.new(-99, "Method #{name} missing" +
-            " or wrong number of parameters!")
-    end
-
-    s.add_introspection
-
-    return s
-  end
-
-  def setup_http_server(port, use_ssl)
-    option = {
-      :Port => port, 
-      :SSLEnable => use_ssl,
-    }
-    if use_ssl
-      require 'webrick/https'
-      option.update(
-        :SSLVerifyClient => ::OpenSSL::SSL::VERIFY_NONE, 
-        :SSLCertName => []
-      )
-    end
-
-    start_server(option) {|w| w.mount('/RPC2', create_servlet) }
-
-    @s = XMLRPC::Client.new3(:port => port, :use_ssl => use_ssl)
-  end
-
-  PORT = 8070
-  def test_client_server
-    # NOTE: I don't enable SSL testing as this hangs
-    [false].each do |use_ssl|
-      begin
-        setup_http_server(PORT, use_ssl)
-        do_test
-      ensure
-        stop_server
-      end
-    end
-  end
-
-  def do_test
-    # simple call
-    assert_equal 9, @s.call('test.add', 4, 5)
-
-    # fault exception
-    assert_raises(XMLRPC::FaultException) { @s.call('test.div', 1, 0) }
-
-    # fault exception via call2
-    ok, param = @s.call2('test.div', 1, 0)
-    assert_equal false, ok
-    assert_instance_of XMLRPC::FaultException, param
-    assert_equal 1, param.faultCode
-    assert_equal 'division by zero', param.faultString
-
-    # call2 without fault exception
-    ok, param = @s.call2('test.div', 10, 5)
-    assert_equal true, ok
-    assert_equal param, 2
-
-    # introspection
-    assert_equal ["test.add", "test.div", "system.listMethods", "system.methodSignature", "system.methodHelp"], @s.call("system.listMethods")
-
-    # default handler (missing handler)
-    ok, param = @s.call2('test.nonexisting')
-    assert_equal false, ok
-    assert_equal -99, param.faultCode
-
-    # default handler (wrong number of arguments)
-    ok, param = @s.call2('test.add', 1, 2, 3)
-    assert_equal false, ok
-    assert_equal -99, param.faultCode
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/webrick_testing.rb b/ruby/doc/ruby/ruby-1.8.7/test/xmlrpc/webrick_testing.rb
deleted file mode 100644 (file)
index a6830ce..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-require 'timeout'
-
-module WEBrick_Testing
-  class DummyLog < WEBrick::BasicLog
-    def initialize() super(self) end
-    def <<(*args) end
-  end
-  
-  def start_server(config={})
-    raise "already started" if @__server
-    @__started = false
-
-    Thread.new {
-      @__server = WEBrick::HTTPServer.new(
-        { 
-          :Logger => DummyLog.new,
-          :AccessLog => [],
-          :StartCallback => proc { @__started = true }
-        }.update(config))
-      yield @__server 
-      @__server.start
-      @__started = false
-    }
-
-    Timeout.timeout(5) {
-      nil until @__started # wait until the server is ready
-    }
-  end
-
-  def stop_server
-    Timeout.timeout(5) {
-      @__server.shutdown
-      nil while @__started # wait until the server is down
-    }
-    @__server = nil
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xsd/codegen/test_classdef.rb b/ruby/doc/ruby/ruby-1.8.7/test/xsd/codegen/test_classdef.rb
deleted file mode 100644 (file)
index 64c4771..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-require 'test/unit'
-require 'xsd/codegen/classdef'
-
-
-module XSD; module CodeGen
-
-
-class TestClassDefCreator < Test::Unit::TestCase
-  include XSD::CodeGen
-  include GenSupport
-
-  def test_classdef_simple
-    c = ClassDef.new("Foo")
-    assert_equal(format(<<-EOD), c.dump)
-      class Foo
-      end
-    EOD
-  end
-
-  def test_classdef_complex
-    c = ClassDef.new("Foo::Bar::Baz", String)
-    assert_equal(format(<<-EOD), c.dump)
-      module Foo; module Bar
-
-      class Baz < String
-      end
-
-      end; end
-    EOD
-  end
-
-  def test_require
-    c = ClassDef.new("Foo")
-    c.def_require("foo/bar")
-    assert_equal(format(<<-EOD), c.dump)
-      require 'foo/bar'
-
-      class Foo
-      end
-    EOD
-  end
-
-  def test_comment
-    c = ClassDef.new("Foo")
-    c.def_require("foo/bar")
-    c.comment = <<-EOD
-      foo
-    EOD
-    assert_equal(format(<<-EOD), c.dump)
-      require 'foo/bar'
-
-      # foo
-      class Foo
-      end
-    EOD
-    c.comment = <<-EOD
-            foo
-
-              bar
-             baz
-
-    EOD
-    assert_equal(format(<<-EOD), c.dump)
-      require 'foo/bar'
-
-      # foo
-      # 
-      #   bar
-      #  baz
-      # 
-      class Foo
-      end
-    EOD
-  end
-
-  def test_emptymethod
-    c = ClassDef.new("Foo")
-    c.def_method('foo') do
-    end
-    c.def_method('bar') do
-      ''
-    end
-    assert_equal(format(<<-EOD), c.dump)
-      class Foo
-        def foo
-        end
-
-        def bar
-        end
-      end
-    EOD
-  end
-
-  def test_full
-    c = ClassDef.new("Foo::Bar::HobbitName", String)
-    c.def_require("foo/bar")
-    c.comment = <<-EOD
-        foo
-      bar
-        baz
-    EOD
-    c.def_const("FOO", 1)
-    c.def_classvar("@@foo", "var".dump)
-    c.def_classvar("baz", "1".dump)
-    c.def_attr("Foo", true, "foo")
-    c.def_attr("bar")
-    c.def_attr("baz", true)
-    c.def_attr("Foo2", true, "foo2")
-    c.def_attr("foo3", false, "foo3")
-    c.def_method("foo") do
-      <<-EOD
-        foo.bar = 1
-\tbaz.each do |ele|
-\t  ele
-        end
-      EOD
-    end
-    c.def_method("baz", "qux") do
-      <<-EOD
-        [1, 2, 3].each do |i|
-          p i
-        end
-      EOD
-    end
-
-    m = MethodDef.new("qux", "quxx", "quxxx") do
-      <<-EOD
-      p quxx + quxxx
-      EOD
-    end
-    m.comment = "hello world\n123"
-    c.add_method(m)
-    c.def_code <<-EOD
-      Foo.new
-      Bar.z
-    EOD
-    c.def_code <<-EOD
-      Foo.new
-      Bar.z
-    EOD
-    c.def_privatemethod("foo", "baz", "*arg", "&block")
-
-    assert_equal(format(<<-EOD), c.dump)
-    require 'foo/bar'
-
-    module Foo; module Bar
-
-    #   foo
-    # bar
-    #   baz
-    class HobbitName < String
-      @@foo = "var"
-      @@baz = "1"
-
-      FOO = 1
-
-      Foo.new
-      Bar.z
-
-      Foo.new
-      Bar.z
-
-      attr_accessor :bar
-      attr_accessor :baz
-      attr_reader :foo3
-
-      def Foo
-        @foo
-      end
-
-      def Foo=(value)
-        @foo = value
-      end
-
-      def Foo2
-        @foo2
-      end
-
-      def Foo2=(value)
-        @foo2 = value
-      end
-
-      def foo
-        foo.bar = 1
-        baz.each do |ele|
-          ele
-        end
-      end
-
-      def baz(qux)
-        [1, 2, 3].each do |i|
-          p i
-        end
-      end
-
-      # hello world
-      # 123
-      def qux(quxx, quxxx)
-        p quxx + quxxx
-      end
-
-    private
-
-      def foo(baz, *arg, &block)
-      end
-    end
-
-    end; end
-    EOD
-  end
-end
-
-
-end; end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xsd/noencoding.xml b/ruby/doc/ruby/ruby-1.8.7/test/xsd/noencoding.xml
deleted file mode 100644 (file)
index 614ffa3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="euc-jp"?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema">
-  <!-- ¤¢¤¤¤¦ -->
-</schema>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xsd/test_noencoding.rb b/ruby/doc/ruby/ruby-1.8.7/test/xsd/test_noencoding.rb
deleted file mode 100644 (file)
index 48119ec..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-require 'test/unit'
-require 'wsdl/xmlSchema/parser'
-
-
-module XSD
-
-
-class TestEmptyCharset < Test::Unit::TestCase
-  def setup
-    @file = File.join(File.dirname(File.expand_path(__FILE__)), 'noencoding.xml')
-  end
-
-  def test_wsdl
-    begin
-      xml = WSDL::XMLSchema::Parser.new.parse(File.open(@file) { |f| f.read })
-    rescue RuntimeError
-      if XSD::XMLParser.const_defined?("REXMLParser")
-       STDERR.puts("rexml cannot handle euc-jp without iconv/uconv.")
-       return
-      end
-      raise
-    rescue Errno::EINVAL
-      # unsupported encoding
-      return
-    end
-    assert_equal(WSDL::XMLSchema::Schema, xml.class)
-    assert_equal(0, xml.collect_elements.size)
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xsd/test_xmlschemaparser.rb b/ruby/doc/ruby/ruby-1.8.7/test/xsd/test_xmlschemaparser.rb
deleted file mode 100644 (file)
index 10dff43..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'test/unit'
-require 'wsdl/xmlSchema/parser'
-
-
-module XSD
-
-
-class TestXMLSchemaParser < Test::Unit::TestCase
-  def setup
-    @file = File.join(File.dirname(File.expand_path(__FILE__)), 'xmlschema.xml')
-  end
-
-  def test_wsdl
-    @wsdl = WSDL::XMLSchema::Parser.new.parse(File.open(@file) { |f| f.read })
-    assert_equal(WSDL::XMLSchema::Schema, @wsdl.class)
-    assert_equal(1, @wsdl.collect_elements.size)
-  end
-end
-
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xsd/test_xsd.rb b/ruby/doc/ruby/ruby-1.8.7/test/xsd/test_xsd.rb
deleted file mode 100644 (file)
index 6302f31..0000000
+++ /dev/null
@@ -1,1511 +0,0 @@
-require 'test/unit'
-require 'xsd/datatypes'
-
-
-module XSD
-
-
-class TestXSD < Test::Unit::TestCase
-  NegativeZero = (-1.0 / (1.0 / 0.0))
-
-  def setup
-  end
-
-  def teardown
-  end
-
-  def assert_parsed_result(klass, str)
-    o = klass.new(str)
-    assert_equal(str, o.to_s)
-  end
-
-  def test_NSDBase
-    o = XSD::NSDBase.new
-    assert_equal(nil, o.type)
-  end
-
-  def test_XSDBase
-    o = XSD::XSDAnySimpleType.new
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-    assert_equal('', o.to_s)
-  end
-
-  def test_XSDNil
-    o = XSD::XSDNil.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::NilLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    o = XSD::XSDNil.new(nil)
-    assert_equal(true, o.is_nil)
-    assert_equal(nil, o.data)
-    assert_equal("", o.to_s)
-    o = XSD::XSDNil.new('var')
-    assert_equal(false, o.is_nil)
-    assert_equal('var', o.data)
-    assert_equal('var', o.to_s)
-  end
-
-  def test_XSDString_UTF8
-    o = XSD::XSDString.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::StringLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    str = "abc"
-    assert_equal(str, XSD::XSDString.new(str).data)
-    assert_equal(str, XSD::XSDString.new(str).to_s)
-    assert_raises(XSD::ValueSpaceError) do
-      XSD::XSDString.new("\0")
-    end
-    assert_raises(XSD::ValueSpaceError) do
-      p XSD::XSDString.new("\xC0\xC0").to_s
-    end
-  end
-
-  def test_XSDString_NONE
-    XSD::Charset.module_eval { @encoding_backup = @encoding; @encoding = "NONE" }
-    begin
-      o = XSD::XSDString.new
-      assert_equal(XSD::Namespace, o.type.namespace)
-      assert_equal(XSD::StringLiteral, o.type.name)
-      assert_equal(nil, o.data)
-      assert_equal(true, o.is_nil)
-
-      str = "abc"
-      assert_equal(str, XSD::XSDString.new(str).data)
-      assert_equal(str, XSD::XSDString.new(str).to_s)
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDString.new("\0")
-      end
-      assert_raises(XSD::ValueSpaceError) do
-       p XSD::XSDString.new("\xC0\xC0").to_s
-      end
-    ensure
-      XSD::Charset.module_eval { @encoding = @encoding_backup }
-    end
-  end
-
-  def test_XSDBoolean
-    o = XSD::XSDBoolean.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::BooleanLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      ["true", true],
-      ["1", true],
-      ["false", false],
-      ["0", false],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDBoolean.new(data).data)
-      assert_equal(expected.to_s, XSD::XSDBoolean.new(data).to_s)
-    end
-
-    assert_raises(XSD::ValueSpaceError) do
-      XSD::XSDBoolean.new("nil").to_s
-    end
-  end
-
-  def test_XSDDecimal
-    o = XSD::XSDDecimal.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::DecimalLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      1000000000,
-      -9999999999,
-      12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890,
-      12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890,
-      -1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789,
-    ]
-    targets.each do |dec|
-      assert_equal(dec.to_s, XSD::XSDDecimal.new(dec).data)
-    end
-
-    targets = [
-      "0",
-      "0.00000001",
-      "1000000000",
-      "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-      "-12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123.45678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDDecimal.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["0.0", "0"],
-      ["-0.0", "0"],
-      ["+0.0", "0"],
-      ["0.", "0"],
-      [".0", "0"],
-      [
-       "+0.12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-       "0.1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
-     ],
-      [
-       ".0000012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-       "0.000001234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"
-     ],
-      [
-       "-12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.",
-       "-12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
-     ],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDDecimal.new(data).to_s)
-    end
-
-    targets = [
-      "0.000000000000a",
-      "00a.0000000000001",
-      "+-5",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDDecimal.new(d)
-      end
-    end
-  end
-
-  def test_XSDFloat
-    o = XSD::XSDFloat.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::FloatLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      3.14159265358979,
-      12.34e36,
-      1.402e-45,
-      -1.402e-45,
-    ]
-    targets.each do |f|
-      assert_equal(f, XSD::XSDFloat.new(f).data)
-    end
-
-    targets = [
-      "+3.141592654",
-      "+1.234e+37",
-      "+1.402e-45",
-      "-1.402e-45",
-    ]
-    targets.each do |f|
-      assert_equal(f, XSD::XSDFloat.new(f).to_s)
-    end
-
-    targets = [
-      [3, "+3"],       # should be 3.0?
-      [-2, "-2"],      # ditto
-      [3.14159265358979, "+3.141592654"],
-      [12.34e36, "+1.234e+37"],
-      [1.402e-45, "+1.402e-45"],
-      [-1.402e-45, "-1.402e-45"],
-      ["1.402e", "+1.402"],
-      ["12.34E36", "+1.234e+37"],
-      ["1.402E-45", "+1.402e-45"],
-      ["-1.402E-45", "-1.402e-45"],
-      ["1.402E", "+1.402"],
-    ]
-    targets.each do |f, str|
-      assert_equal(str, XSD::XSDFloat.new(f).to_s)
-    end
-
-    assert_equal("+0", XSD::XSDFloat.new(+0.0).to_s)
-    assert_equal("-0", XSD::XSDFloat.new(NegativeZero).to_s)
-    assert(XSD::XSDFloat.new(0.0/0.0).data.nan?)
-    assert_equal("INF", XSD::XSDFloat.new(1.0/0.0).to_s)
-    assert_equal(1, XSD::XSDFloat.new(1.0/0.0).data.infinite?)
-    assert_equal("-INF", XSD::XSDFloat.new(-1.0/0.0).to_s)
-    assert_equal(-1, XSD::XSDFloat.new(-1.0/0.0).data.infinite?)
-
-    targets = [
-      "0.000000000000a",
-      "00a.0000000000001",
-      "+-5",
-      "5_0",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDFloat.new(d)
-      end
-    end
-  end
-
-  def test_XSDDouble
-    o = XSD::XSDDouble.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::DoubleLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      3.14159265358979,
-      12.34e36,
-      1.402e-45,
-      -1.402e-45,
-    ]
-    targets.each do |f|
-      assert_equal(f, XSD::XSDDouble.new(f).data)
-    end
-
-    targets = [
-      "+3.14159265358979",
-      "+1.234e+37",
-      "+1.402e-45",
-      "-1.402e-45",
-    ]
-    targets.each do |f|
-      assert_equal(f, XSD::XSDDouble.new(f).to_s)
-    end
-
-    targets = [
-      [3, "+3"],       # should be 3.0?
-      [-2, "-2"],      # ditto.
-      [3.14159265358979, "+3.14159265358979"],
-      [12.34e36, "+1.234e+37"],
-      [1.402e-45, "+1.402e-45"],
-      [-1.402e-45, "-1.402e-45"],
-      ["1.402e", "+1.402"],
-      ["12.34E36", "+1.234e+37"],
-      ["1.402E-45", "+1.402e-45"],
-      ["-1.402E-45", "-1.402e-45"],
-      ["1.402E", "+1.402"],
-    ]
-    targets.each do |f, str|
-      assert_equal(str, XSD::XSDDouble.new(f).to_s)
-    end
-
-    assert_equal("+0", XSD::XSDFloat.new(+0.0).to_s)
-    assert_equal("-0", XSD::XSDFloat.new(NegativeZero).to_s)
-    assert_equal("NaN", XSD::XSDDouble.new(0.0/0.0).to_s)
-    assert(XSD::XSDDouble.new(0.0/0.0).data.nan?)
-    assert_equal("INF", XSD::XSDDouble.new(1.0/0.0).to_s)
-    assert_equal(1, XSD::XSDDouble.new(1.0/0.0).data.infinite?)
-    assert_equal("-INF", XSD::XSDDouble.new(-1.0/0.0).to_s)
-    assert_equal(-1, XSD::XSDDouble.new(-1.0/0.0).data.infinite?)
-
-    targets = [
-      "0.000000000000a",
-      "00a.0000000000001",
-      "+-5",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDDouble.new(d)
-      end
-    end
-  end
-
-  def test_XSDDuration
-    o = XSD::XSDDuration.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::DurationLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "P1Y2M3DT4H5M6S",
-      "P1234Y5678M9012DT3456H7890M1234.5678S",
-      "P0DT3456H7890M1234.5678S",
-      "P1234Y5678M9012D",
-      "-P1234Y5678M9012DT3456H7890M1234.5678S",
-      "P5678M9012DT3456H7890M1234.5678S",
-      "-P1234Y9012DT3456H7890M1234.5678S",
-      "+P1234Y5678MT3456H7890M1234.5678S",
-      "P1234Y5678M9012DT7890M1234.5678S",
-      "-P1234Y5678M9012DT3456H1234.5678S",
-      "+P1234Y5678M9012DT3456H7890M",
-      "P123400000000000Y",
-      "-P567800000000000M",
-      "+P901200000000000D",
-      "P0DT345600000000000H",
-      "-P0DT789000000000000M",
-      "+P0DT123400000000000.000000000005678S",
-      "P1234YT1234.5678S",
-      "-P5678MT7890M",
-      "+P9012DT3456H",
-    ]
-    targets.each do |str|
-      assert_parsed_result(XSD::XSDDuration, str)
-    end
-
-    targets = [
-      ["P0Y0M0DT0H0M0S",
-        "P0D"],
-      ["-P0DT0S",
-        "-P0D"],
-      ["P01234Y5678M9012DT3456H7890M1234.5678S",
-        "P1234Y5678M9012DT3456H7890M1234.5678S"],
-      ["P1234Y005678M9012DT3456H7890M1234.5678S",
-        "P1234Y5678M9012DT3456H7890M1234.5678S"],
-      ["P1234Y5678M0009012DT3456H7890M1234.5678S",
-        "P1234Y5678M9012DT3456H7890M1234.5678S"],
-      ["P1234Y5678M9012DT00003456H7890M1234.5678S",
-        "P1234Y5678M9012DT3456H7890M1234.5678S"],
-      ["P1234Y5678M9012DT3456H000007890M1234.5678S",
-        "P1234Y5678M9012DT3456H7890M1234.5678S"],
-      ["P1234Y5678M9012DT3456H7890M0000001234.5678S",
-        "P1234Y5678M9012DT3456H7890M1234.5678S"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDDuration.new(data).to_s)
-    end
-  end
-
-  def test_XSDDateTime
-    o = XSD::XSDDateTime.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::DateTimeLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "2002-05-18T16:52:20Z",
-      "0001-01-01T00:00:00Z",
-      "9999-12-31T23:59:59Z",
-      "19999-12-31T23:59:59Z",
-      "2002-12-31T23:59:59.999Z",
-      "2002-12-31T23:59:59.001Z",
-      "2002-12-31T23:59:59.99999999999999999999Z",
-      "2002-12-31T23:59:59.00000000000000000001Z",
-      "2002-12-31T23:59:59+09:00",
-      "2002-12-31T23:59:59+00:01",
-      "2002-12-31T23:59:59-00:01",
-      "2002-12-31T23:59:59-23:59",
-      "2002-12-31T23:59:59.00000000000000000001+13:30",
-      "2002-12-31T23:59:59.5137Z",
-      "2002-12-31T23:59:59.51375Z",    # 411/800
-      "2002-12-31T23:59:59.51375+12:34",
-      "-2002-05-18T16:52:20Z",
-      "-4713-01-01T12:00:00Z",
-      "-2002-12-31T23:59:59+00:01",
-      "-0001-12-31T23:59:59.00000000000000000001+13:30",
-    ]
-    targets.each do |str|
-      assert_parsed_result(XSD::XSDDateTime, str)
-    end
-
-    targets = [
-      ["2002-12-31T23:59:59.00",
-       "2002-12-31T23:59:59Z"],
-      ["2002-12-31T23:59:59+00:00",
-       "2002-12-31T23:59:59Z"],
-      ["2002-12-31T23:59:59-00:00",
-       "2002-12-31T23:59:59Z"],
-      ["-2002-12-31T23:59:59.00",
-       "-2002-12-31T23:59:59Z"],
-      ["-2002-12-31T23:59:59+00:00",
-       "-2002-12-31T23:59:59Z"],
-      ["-2002-12-31T23:59:59-00:00",
-       "-2002-12-31T23:59:59Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDDateTime.new(data).to_s)
-      d = DateTime.parse(data)
-      d >>= 12 if d.year < 0    # XSDDateTime.year(-1) == DateTime.year(0)
-      assert_equal(expected, XSD::XSDDateTime.new(d).to_s)
-    end
-
-    targets = [
-      "0000-05-18T16:52:20Z",
-      "05-18T16:52:20Z",
-      "2002-05T16:52:20Z",
-      "2002-05-18T16:52Z",
-      "",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError, d.to_s) do
-       XSD::XSDDateTime.new(d)
-      end
-    end
-  end
-
-  def test_XSDTime
-    o = XSD::XSDTime.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::TimeLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "16:52:20Z",
-      "00:00:00Z",
-      "23:59:59Z",
-      "23:59:59.999Z",
-      "23:59:59.001Z",
-      "23:59:59.99999999999999999999Z",
-      "23:59:59.00000000000000000001Z",
-      "23:59:59+09:00",
-      "23:59:59+00:01",
-      "23:59:59-00:01",
-      "23:59:59-23:59",
-      "23:59:59.00000000000000000001+13:30",
-      "23:59:59.51345Z",
-      "23:59:59.51345+12:34",
-      "23:59:59+00:01",
-    ]
-    targets.each do |str|
-      assert_parsed_result(XSD::XSDTime, str)
-    end
-
-    targets = [
-      ["23:59:59.00",
-       "23:59:59Z"],
-      ["23:59:59+00:00",
-       "23:59:59Z"],
-      ["23:59:59-00:00",
-       "23:59:59Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDTime.new(data).to_s)
-    end
-  end
-
-  def test_XSDDate
-    o = XSD::XSDDate.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::DateLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "2002-05-18Z",
-      "0001-01-01Z",
-      "9999-12-31Z",
-      "19999-12-31Z",
-      "2002-12-31+09:00",
-      "2002-12-31+00:01",
-      "2002-12-31-00:01",
-      "2002-12-31-23:59",
-      "2002-12-31+13:30",
-      "-2002-05-18Z",
-      "-19999-12-31Z",
-      "-2002-12-31+00:01",
-      "-0001-12-31+13:30",
-    ]
-    targets.each do |str|
-      assert_parsed_result(XSD::XSDDate, str)
-    end
-
-    targets = [
-      ["2002-12-31",
-       "2002-12-31Z"],
-      ["2002-12-31+00:00",
-       "2002-12-31Z"],
-      ["2002-12-31-00:00",
-       "2002-12-31Z"],
-      ["-2002-12-31",
-       "-2002-12-31Z"],
-      ["-2002-12-31+00:00",
-       "-2002-12-31Z"],
-      ["-2002-12-31-00:00",
-       "-2002-12-31Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDDate.new(data).to_s)
-      d = Date.parse(data)
-      d >>= 12 if d.year < 0    # XSDDate.year(-1) == Date.year(0)
-      assert_equal(expected, XSD::XSDDate.new(d).to_s)
-    end
-  end
-end
-
-class TestXSD2 < Test::Unit::TestCase
-  def setup
-    # Nothing to do.
-  end
-
-  def teardown
-    # Nothing to do.
-  end
-
-  def assert_parsed_result(klass, str)
-    o = klass.new(str)
-    assert_equal(str, o.to_s)
-  end
-
-  def test_XSDGYearMonth
-    o = XSD::XSDGYearMonth.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::GYearMonthLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "2002-05Z",
-      "0001-01Z",
-      "9999-12Z",
-      "19999-12Z",
-      "2002-12+09:00",
-      "2002-12+00:01",
-      "2002-12-00:01",
-      "2002-12-23:59",
-      "2002-12+13:30",
-      "-2002-05Z",
-      "-19999-12Z",
-      "-2002-12+00:01",
-      "-0001-12+13:30",
-    ]
-    targets.each do |str|
-      assert_parsed_result(XSD::XSDGYearMonth, str)
-    end
-
-    targets = [
-      ["2002-12",
-       "2002-12Z"],
-      ["2002-12+00:00",
-       "2002-12Z"],
-      ["2002-12-00:00",
-       "2002-12Z"],
-      ["-2002-12",
-       "-2002-12Z"],
-      ["-2002-12+00:00",
-       "-2002-12Z"],
-      ["-2002-12-00:00",
-       "-2002-12Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDGYearMonth.new(data).to_s)
-    end
-  end
-
-  def test_XSDGYear
-    o = XSD::XSDGYear.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::GYearLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "2002Z",
-      "0001Z",
-      "9999Z",
-      "19999Z",
-      "2002+09:00",
-      "2002+00:01",
-      "2002-00:01",
-      "2002-23:59",
-      "2002+13:30",
-      "-2002Z",
-      "-19999Z",
-      "-2002+00:01",
-      "-0001+13:30",
-    ]
-    targets.each do |str|
-      assert_parsed_result(XSD::XSDGYear, str)
-    end
-
-    targets = [
-      ["2002",
-       "2002Z"],
-      ["2002+00:00",
-       "2002Z"],
-      ["2002-00:00",
-       "2002Z"],
-      ["-2002",
-       "-2002Z"],
-      ["-2002+00:00",
-       "-2002Z"],
-      ["-2002-00:00",
-       "-2002Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDGYear.new(data).to_s)
-    end
-  end
-
-  def test_XSDGMonthDay
-    o = XSD::XSDGMonthDay.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::GMonthDayLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "05-18Z",
-      "01-01Z",
-      "12-31Z",
-      "12-31+09:00",
-      "12-31+00:01",
-      "12-31-00:01",
-      "12-31-23:59",
-      "12-31+13:30",
-    ]
-    targets.each do |str|
-      assert_parsed_result(XSD::XSDGMonthDay, str)
-    end
-
-    targets = [
-      ["12-31",
-       "12-31Z"],
-      ["12-31+00:00",
-       "12-31Z"],
-      ["12-31-00:00",
-       "12-31Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDGMonthDay.new(data).to_s)
-    end
-  end
-
-  def test_XSDGDay
-    o = XSD::XSDGDay.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::GDayLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "18Z",
-      "01Z",
-      "31Z",
-      "31+09:00",
-      "31+00:01",
-      "31-00:01",
-      "31-23:59",
-      "31+13:30",
-    ]
-    targets.each do |str|
-      assert_parsed_result(XSD::XSDGDay, str)
-    end
-
-    targets = [
-      ["31",
-       "31Z"],
-      ["31+00:00",
-       "31Z"],
-      ["31-00:00",
-       "31Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDGDay.new(data).to_s)
-    end
-  end
-
-  def test_XSDGMonth
-    o = XSD::XSDGMonth.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::GMonthLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "05Z",
-      "01Z",
-      "12Z",
-      "12+09:00",
-      "12+00:01",
-      "12-00:01",
-      "12-23:59",
-      "12+13:30",
-    ]
-    targets.each do |str|
-      assert_parsed_result(XSD::XSDGMonth, str)
-    end
-
-    targets = [
-      ["12",
-       "12Z"],
-      ["12+00:00",
-       "12Z"],
-      ["12-00:00",
-       "12Z"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDGMonth.new(data).to_s)
-    end
-  end
-
-  def test_XSDHexBinary
-    o = XSD::XSDHexBinary.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::HexBinaryLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "abcdef",
-      "\xe3\x81\xaa\xe3\x81\xb2",
-      %Q(\0),
-      "",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDHexBinary.new(str).string)
-      assert_equal(str.unpack("H*")[0 ].tr('a-f', 'A-F'),
-       XSD::XSDHexBinary.new(str).data)
-      o = XSD::XSDHexBinary.new
-      o.set_encoded(str.unpack("H*")[0 ].tr('a-f', 'A-F'))
-      assert_equal(str, o.string)
-      o.set_encoded(str.unpack("H*")[0 ].tr('A-F', 'a-f'))
-      assert_equal(str, o.string)
-    end
-
-    targets = [
-      "0FG7",
-      "0fg7",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError, d.to_s) do
-       o = XSD::XSDHexBinary.new
-       o.set_encoded(d)
-       p o.string
-      end
-    end
-  end
-
-  def test_XSDBase64Binary
-    o = XSD::XSDBase64Binary.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::Base64BinaryLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      "abcdef",
-      "\xe3\x81\xaa\xe3\x81\xb2",
-      %Q(\0),
-      "",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDBase64Binary.new(str).string)
-      assert_equal([str ].pack("m").chomp, XSD::XSDBase64Binary.new(str).data)
-      o = XSD::XSDBase64Binary.new
-      o.set_encoded([str ].pack("m").chomp)
-      assert_equal(str, o.string)
-    end
-
-    targets = [
-      "-",
-      "*",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError, d.to_s) do
-       o = XSD::XSDBase64Binary.new
-       o.set_encoded(d)
-       p o.string
-      end
-    end
-  end
-
-  def test_XSDAnyURI
-    o = XSD::XSDAnyURI.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::AnyURILiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    # Too few tests here I know.  Believe uri module. :)
-    targets = [
-      "foo",
-      "http://foo",
-      "http://foo/bar/baz",
-      "http://foo/bar#baz",
-      "http://foo/bar%20%20?a+b",
-      "HTTP://FOO/BAR%20%20?A+B",
-    ]
-    targets.each do |str|
-      assert_parsed_result(XSD::XSDAnyURI, str)
-    end
-  end
-
-  def test_XSDQName
-    o = XSD::XSDQName.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::QNameLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    # More strict test is needed but current implementation allows all non-':'
-    # chars like ' ', C0 or C1...
-    targets = [
-      "foo",
-      "foo:bar",
-      "a:b",
-    ]
-    targets.each do |str|
-      assert_parsed_result(XSD::XSDQName, str)
-    end
-  end
-
-
-  ###
-  ## Derived types
-  #
-
-  def test_XSDInteger
-    o = XSD::XSDInteger.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::IntegerLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      1000000000,
-      -9999999999,
-      12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890,
-      12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890,
-      -1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789,
-    ]
-    targets.each do |int|
-      assert_equal(int, XSD::XSDInteger.new(int).data)
-    end
-
-    targets = [
-      "0",
-      "1000000000",
-      "-9999999999",
-      "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-      "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-      "-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDInteger.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["000123", "123"],
-      ["-000123", "-123"],
-      [
-       "+12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-       "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
-     ],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDInteger.new(data).to_s)
-    end
-
-    targets = [
-      "0.0",
-      "-5.2",
-      "0.000000000000a",
-      "+-5",
-      "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890."
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDInteger.new(d)
-      end
-    end
-  end
-
-  def test_XSDNonPositiveInteger
-    o = XSD::XSDNonPositiveInteger.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::NonPositiveIntegerLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      -9999999999,
-      -1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789,
-    ]
-    targets.each do |int|
-      assert_equal(int, XSD::XSDNonPositiveInteger.new(int).data)
-    end
-
-    targets = [
-      "0",
-      "-9999999999",
-      "-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDNonPositiveInteger.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["-000123", "-123"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDNonPositiveInteger.new(data).to_s)
-    end
-
-    targets = [
-      "0.0",
-      "-5.2",
-      "0.000000000000a",
-      "+-5",
-      "-12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890."
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDNonPositiveInteger.new(d)
-      end
-    end
-  end
-
-  def test_XSDNegativeInteger
-    o = XSD::XSDNegativeInteger.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::NegativeIntegerLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      -1,
-      -9999999999,
-      -1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789,
-    ]
-    targets.each do |int|
-      assert_equal(int, XSD::XSDNegativeInteger.new(int).data)
-    end
-
-    targets = [
-      "-1",
-      "-9999999999",
-      "-1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDNegativeInteger.new(str).to_s)
-    end
-
-    targets = [
-      ["-000123", "-123"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDNegativeInteger.new(data).to_s)
-    end
-
-    targets = [
-      "-0.0",
-      "-5.2",
-      "-0.000000000000a",
-      "+-5",
-      "-12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890."
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDNegativeInteger.new(d)
-      end
-    end
-  end
-
-  def test_XSDLong
-    o = XSD::XSDLong.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::LongLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      123,
-      -123,
-      9223372036854775807,
-      -9223372036854775808,
-    ]
-    targets.each do |lng|
-      assert_equal(lng, XSD::XSDLong.new(lng).data)
-    end
-
-    targets = [
-      "0",
-      "123",
-      "-123",
-      "9223372036854775807",
-      "-9223372036854775808",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDLong.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["000123", "123"],
-      ["-000123", "-123"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDLong.new(data).to_s)
-    end
-
-    targets = [
-      9223372036854775808,
-      -9223372036854775809,
-      "0.0",
-      "-5.2",
-      "0.000000000000a",
-      "+-5",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDLong.new(d)
-      end
-    end
-  end
-
-  def test_XSDInt
-    o = XSD::XSDInt.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::IntLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      123,
-      -123,
-      2147483647,
-      -2147483648,
-    ]
-    targets.each do |lng|
-      assert_equal(lng, XSD::XSDInt.new(lng).data)
-    end
-
-    targets = [
-      "0",
-      "123",
-      "-123",
-      "2147483647",
-      "-2147483648",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDInt.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["000123", "123"],
-      ["-000123", "-123"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDInt.new(data).to_s)
-    end
-
-    targets = [
-      2147483648,
-      -2147483649,
-      "0.0",
-      "-5.2",
-      "0.000000000000a",
-      "+-5",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDInt.new(d)
-      end
-    end
-  end
-
-  def test_XSDShort
-    o = XSD::XSDShort.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::ShortLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      123,
-      -123,
-      32767,
-      -32768,
-    ]
-    targets.each do |lng|
-      assert_equal(lng, XSD::XSDShort.new(lng).data)
-    end
-
-    targets = [
-      "0",
-      "123",
-      "-123",
-      "32767",
-      "-32768",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDShort.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["000123", "123"],
-      ["-000123", "-123"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDShort.new(data).to_s)
-    end
-
-    targets = [
-      32768,
-      -32769,
-      "0.0",
-      "-5.2",
-      "0.000000000000a",
-      "+-5",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDShort.new(d)
-      end
-    end
-  end
-
-  def test_XSDByte
-    o = XSD::XSDByte.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::ByteLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      123,
-      -123,
-      127,
-      -128,
-    ]
-    targets.each do |lng|
-      assert_equal(lng, XSD::XSDByte.new(lng).data)
-    end
-
-    targets = [
-      "0",
-      "123",
-      "-123",
-      "127",
-      "-128",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDByte.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["000123", "123"],
-      ["-000123", "-123"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDByte.new(data).to_s)
-    end
-
-    targets = [
-      128,
-      -129,
-      "0.0",
-      "-5.2",
-      "0.000000000000a",
-      "+-5",
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDByte.new(d)
-      end
-    end
-  end
-
-  def test_XSDNonNegativeInteger
-    o = XSD::XSDNonNegativeInteger.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::NonNegativeIntegerLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      1000000000,
-      12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890,
-    ]
-    targets.each do |int|
-      assert_equal(int, XSD::XSDNonNegativeInteger.new(int).data)
-    end
-
-    targets = [
-      "0",
-      "1000000000",
-      "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDNonNegativeInteger.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["000123", "123"],
-      [
-       "+12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-       "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
-     ],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDNonNegativeInteger.new(data).to_s)
-    end
-
-    targets = [
-      "0.0",
-      "0.000000000000a",
-      "+-5",
-      "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890."
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDNonNegativeInteger.new(d)
-      end
-    end
-  end
-
-  def test_XSDUnsignedLong
-    o = XSD::XSDUnsignedLong.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::UnsignedLongLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      1000000000,
-      18446744073709551615,
-    ]
-    targets.each do |int|
-      assert_equal(int, XSD::XSDUnsignedLong.new(int).data)
-    end
-
-    targets = [
-      "0",
-      "1000000000",
-      "18446744073709551615",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDUnsignedLong.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["000123", "123"],
-      ["+18446744073709551615", "18446744073709551615"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDUnsignedLong.new(data).to_s)
-    end
-
-    targets = [
-      "0.0",
-      "0.000000000000a",
-      "+-5",
-      "18446744073709551615."
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDUnsignedLong.new(d)
-      end
-    end
-  end
-
-  def test_XSDUnsignedInt
-    o = XSD::XSDUnsignedInt.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::UnsignedIntLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      1000000000,
-      4294967295,
-    ]
-    targets.each do |int|
-      assert_equal(int, XSD::XSDUnsignedInt.new(int).data)
-    end
-
-    targets = [
-      "0",
-      "1000000000",
-      "4294967295",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDUnsignedInt.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["000123", "123"],
-      ["+4294967295", "4294967295"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDUnsignedInt.new(data).to_s)
-    end
-
-    targets = [
-      "0.0",
-      "0.000000000000a",
-      "+-5",
-      "4294967295."
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDUnsignedInt.new(d)
-      end
-    end
-  end
-
-  def test_XSDUnsignedShort
-    o = XSD::XSDUnsignedShort.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::UnsignedShortLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      10000,
-      65535,
-    ]
-    targets.each do |int|
-      assert_equal(int, XSD::XSDUnsignedShort.new(int).data)
-    end
-
-    targets = [
-      "0",
-      "1000",
-      "65535",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDUnsignedShort.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["000123", "123"],
-      ["+65535", "65535"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDUnsignedShort.new(data).to_s)
-    end
-
-    targets = [
-      "0.0",
-      "0.000000000000a",
-      "+-5",
-      "65535."
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDUnsignedShort.new(d)
-      end
-    end
-  end
-
-  def test_XSDUnsignedByte
-    o = XSD::XSDUnsignedByte.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::UnsignedByteLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      0,
-      10,
-      255,
-    ]
-    targets.each do |int|
-      assert_equal(int, XSD::XSDUnsignedByte.new(int).data)
-    end
-
-    targets = [
-      "0",
-      "10",
-      "255",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDUnsignedByte.new(str).to_s)
-    end
-
-    targets = [
-      ["-0", "0"],
-      ["+0", "0"],
-      ["000123", "123"],
-      ["+255", "255"],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDUnsignedByte.new(data).to_s)
-    end
-
-    targets = [
-      "0.0",
-      "0.000000000000a",
-      "+-5",
-      "255."
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDUnsignedByte.new(d)
-      end
-    end
-  end
-
-  def test_XSDPositiveInteger
-    o = XSD::XSDPositiveInteger.new
-    assert_equal(XSD::Namespace, o.type.namespace)
-    assert_equal(XSD::PositiveIntegerLiteral, o.type.name)
-    assert_equal(nil, o.data)
-    assert_equal(true, o.is_nil)
-
-    targets = [
-      1,
-      1000000000,
-      12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890,
-    ]
-    targets.each do |int|
-      assert_equal(int, XSD::XSDPositiveInteger.new(int).data)
-    end
-
-    targets = [
-      "1",
-      "1000000000",
-      "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-    ]
-    targets.each do |str|
-      assert_equal(str, XSD::XSDPositiveInteger.new(str).to_s)
-    end
-
-    targets = [
-      ["+1", "1"],
-      ["000123", "123"],
-      [
-       "+12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
-       "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
-     ],
-    ]
-    targets.each do |data, expected|
-      assert_equal(expected, XSD::XSDPositiveInteger.new(data).to_s)
-    end
-
-    targets = [
-      "1.0",
-      "1.000000000000a",
-      "+-5",
-      "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890."
-    ]
-    targets.each do |d|
-      assert_raises(XSD::ValueSpaceError) do
-       XSD::XSDPositiveInteger.new(d)
-      end
-    end
-  end
-end
-
-
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/xsd/xmlschema.xml b/ruby/doc/ruby/ruby-1.8.7/test/xsd/xmlschema.xml
deleted file mode 100644 (file)
index 018bd0c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xs:schema
-    attributeFormDefault="qualified"
-    elementFormDefault="qualified"
-    targetNamespace="urn:jp.gr.jin.rrr.example.fakeschema"
-    xmlns:xs="http://www.w3.org/2001/XMLSchema">
-  <xs:element name="MessageDataSet">
-    <xs:complexType>
-      <xs:choice maxOccurs="unbounded" />
-    </xs:complexType>
-  </xs:element>
-</xs:schema>
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/yaml/test_yaml.rb b/ruby/doc/ruby/ruby-1.8.7/test/yaml/test_yaml.rb
deleted file mode 100644 (file)
index f82086e..0000000
+++ /dev/null
@@ -1,1292 +0,0 @@
-# -*- mode: ruby; ruby-indent-level: 4; tab-width: 4 -*-
-#                                                                                              vim:sw=4:ts=4
-# $Id: test_yaml.rb 16084 2008-04-19 11:45:39Z knu $
-#
-require 'test/unit'
-require 'yaml'
-
-# [ruby-core:01946]
-module YAML_Tests
-    StructTest = Struct::new( :c )
-end
-
-class YAML_Unit_Tests < Test::Unit::TestCase
-       #
-       # Convert between YAML and the object to verify correct parsing and
-       # emitting
-       #
-       def assert_to_yaml( obj, yaml )
-               assert_equal( obj, YAML::load( yaml ) )
-               assert_equal( obj, YAML::parse( yaml ).transform )
-        assert_equal( obj, YAML::load( obj.to_yaml ) )
-               assert_equal( obj, YAML::parse( obj.to_yaml ).transform )
-        assert_equal( obj, YAML::load(
-                       obj.to_yaml( :UseVersion => true, :UseHeader => true, :SortKeys => true ) 
-               ) )
-       end
-
-       #
-       # Test parser only
-       #
-       def assert_parse_only( obj, yaml )
-               assert_equal( obj, YAML::load( yaml ) )
-               assert_equal( obj, YAML::parse( yaml ).transform )
-       end
-
-    def assert_cycle( obj )
-        assert_equal( obj, YAML::load( obj.to_yaml ) )
-    end
-
-    def assert_path_segments( path, segments )
-        YAML::YPath.each_path( path ) { |choice|
-            assert_equal( choice.segments, segments.shift )
-        }
-        assert_equal( segments.length, 0, "Some segments leftover: #{ segments.inspect }" )
-    end
-
-       #
-       # Make a time with the time zone
-       #
-       def mktime( year, mon, day, hour, min, sec, usec, zone = "Z" )
-        usec = usec.to_s.to_f * 1000000
-               val = Time::utc( year.to_i, mon.to_i, day.to_i, hour.to_i, min.to_i, sec.to_i, usec )
-               if zone != "Z"
-                       hour = zone[0,3].to_i * 3600
-                       min = zone[3,2].to_i * 60
-                       ofs = (hour + min)
-                       val = Time.at( val.to_f - ofs )
-               end
-               return val
-       end
-
-       #
-       # Tests modified from 00basic.t in YAML.pm
-       #
-       def test_basic_map
-               # Simple map
-               assert_parse_only(
-                       { 'one' => 'foo', 'three' => 'baz', 'two' => 'bar' }, <<EOY
-one: foo
-two: bar
-three: baz
-EOY
-               )
-       end
-
-       def test_basic_strings
-               # Common string types
-               assert_cycle("x")
-               assert_cycle(":x")
-               assert_cycle(":")
-               assert_parse_only(
-                       { 1 => 'simple string', 2 => 42, 3 => '1 Single Quoted String',
-                         4 => 'YAML\'s Double "Quoted" String', 5 => "A block\n  with several\n    lines.\n",
-                         6 => "A \"chomped\" block", 7 => "A folded\n string\n", 8 => ": started string" },
-                         <<EOY
-1: simple string
-2: 42
-3: '1 Single Quoted String'
-4: "YAML's Double \\\"Quoted\\\" String"
-5: |
-  A block
-    with several
-      lines.
-6: |-
-  A "chomped" block
-7: >
-  A
-  folded
-   string
-8: ": started string"
-EOY
-               )
-       end
-
-       #
-       # Test the specification examples
-       # - Many examples have been changes because of whitespace problems that
-       #   caused the two to be inequivalent, or keys to be sorted wrong
-       #
-
-       def test_spec_simple_implicit_sequence
-               # Simple implicit sequence
-               assert_to_yaml(
-                       [ 'Mark McGwire', 'Sammy Sosa', 'Ken Griffey' ], <<EOY
-- Mark McGwire
-- Sammy Sosa
-- Ken Griffey
-EOY
-               )
-       end
-
-       def test_spec_simple_implicit_map
-               # Simple implicit map
-               assert_to_yaml(
-                       { 'hr' => 65, 'avg' => 0.278, 'rbi' => 147 }, <<EOY
-avg: 0.278
-hr: 65
-rbi: 147
-EOY
-               )
-       end
-
-       def test_spec_simple_map_with_nested_sequences
-               # Simple mapping with nested sequences
-               assert_to_yaml(
-                       { 'american' => 
-                         [ 'Boston Red Sox', 'Detroit Tigers', 'New York Yankees' ],
-                         'national' =>
-                         [ 'New York Mets', 'Chicago Cubs', 'Atlanta Braves' ] }, <<EOY
-american:
-  - Boston Red Sox
-  - Detroit Tigers
-  - New York Yankees
-national:
-  - New York Mets
-  - Chicago Cubs
-  - Atlanta Braves
-EOY
-               )
-       end
-
-       def test_spec_simple_sequence_with_nested_map
-               # Simple sequence with nested map
-               assert_to_yaml(
-                 [
-                   {'name' => 'Mark McGwire', 'hr' => 65, 'avg' => 0.278},
-                       {'name' => 'Sammy Sosa', 'hr' => 63, 'avg' => 0.288}
-                 ], <<EOY
--
-  avg: 0.278
-  hr: 65
-  name: Mark McGwire
--
-  avg: 0.288
-  hr: 63
-  name: Sammy Sosa
-EOY
-               )
-       end
-
-       def test_spec_sequence_of_sequences
-               # Simple sequence with inline sequences
-               assert_parse_only(
-                 [ 
-                       [ 'name', 'hr', 'avg' ],
-                       [ 'Mark McGwire', 65, 0.278 ],
-                       [ 'Sammy Sosa', 63, 0.288 ]
-                 ], <<EOY
-- [ name         , hr , avg   ]
-- [ Mark McGwire , 65 , 0.278 ]
-- [ Sammy Sosa   , 63 , 0.288 ]
-EOY
-               )
-       end
-
-       def test_spec_mapping_of_mappings
-               # Simple map with inline maps
-               assert_parse_only(
-                 { 'Mark McGwire' =>
-                   { 'hr' => 65, 'avg' => 0.278 },
-                       'Sammy Sosa' =>
-                   { 'hr' => 63, 'avg' => 0.288 }
-                 }, <<EOY
-Mark McGwire: {hr: 65, avg: 0.278}
-Sammy Sosa:   {hr: 63,
-               avg: 0.288}
-EOY
-               )
-       end
-
-    def test_ambiguous_comments
-        # [ruby-talk:88012]
-        assert_to_yaml( "Call the method #dave", <<EOY )
---- "Call the method #dave"
-EOY
-    end
-
-       def test_spec_nested_comments
-               # Map and sequences with comments
-               assert_parse_only(
-                 { 'hr' => [ 'Mark McGwire', 'Sammy Sosa' ],
-                   'rbi' => [ 'Sammy Sosa', 'Ken Griffey' ] }, <<EOY
-hr: # 1998 hr ranking
-  - Mark McGwire
-  - Sammy Sosa
-rbi:
-  # 1998 rbi ranking
-  - Sammy Sosa
-  - Ken Griffey
-EOY
-               )
-       end
-
-       def test_spec_anchors_and_aliases
-               # Anchors and aliases
-               assert_parse_only(
-                       { 'hr' =>
-                         [ 'Mark McGwire', 'Sammy Sosa' ],
-                         'rbi' =>
-                         [ 'Sammy Sosa', 'Ken Griffey' ] }, <<EOY
-hr:
-   - Mark McGwire
-   # Name "Sammy Sosa" scalar SS
-   - &SS Sammy Sosa
-rbi:
-   # So it can be referenced later.
-   - *SS
-   - Ken Griffey
-EOY
-               )
-
-        assert_to_yaml(
-            [{"arrival"=>"EDI", "departure"=>"LAX", "fareref"=>"DOGMA", "currency"=>"GBP"}, {"arrival"=>"MEL", "departure"=>"SYD", "fareref"=>"MADF", "currency"=>"AUD"}, {"arrival"=>"MCO", "departure"=>"JFK", "fareref"=>"DFSF", "currency"=>"USD"}], <<EOY
-  -   
-    &F fareref: DOGMA
-    &C currency: GBP
-    &D departure: LAX
-    &A arrival: EDI 
-  - { *F: MADF, *C: AUD, *D: SYD, *A: MEL }
-  - { *F: DFSF, *C: USD, *D: JFK, *A: MCO }
-EOY
-        )
-
-        assert_to_yaml(
-            {"ALIASES"=>["fareref", "currency", "departure", "arrival"], "FARES"=>[{"arrival"=>"EDI", "departure"=>"LAX", "fareref"=>"DOGMA", "currency"=>"GBP"}, {"arrival"=>"MEL", "departure"=>"SYD", "fareref"=>"MADF", "currency"=>"AUD"}, {"arrival"=>"MCO", "departure"=>"JFK", "fareref"=>"DFSF", "currency"=>"USD"}]}, <<EOY
----
-ALIASES: [&f fareref, &c currency, &d departure, &a arrival]
-FARES:
-- *f: DOGMA
-  *c: GBP
-  *d: LAX
-  *a: EDI
-
-- *f: MADF
-  *c: AUD
-  *d: SYD
-  *a: MEL
-
-- *f: DFSF
-  *c: USD
-  *d: JFK
-  *a: MCO
-
-EOY
-        )
-
-       end
-
-       def test_spec_mapping_between_sequences
-               # Complex key #1
-               dj = Date.new( 2001, 7, 23 )
-               assert_parse_only(
-                       { [ 'Detroit Tigers', 'Chicago Cubs' ] => [ Date.new( 2001, 7, 23 ) ],
-                         [ 'New York Yankees', 'Atlanta Braves' ] => [ Date.new( 2001, 7, 2 ), Date.new( 2001, 8, 12 ), Date.new( 2001, 8, 14 ) ] }, <<EOY
-? # PLAY SCHEDULE
-  - Detroit Tigers
-  - Chicago Cubs
-:  
-  - 2001-07-23
-
-? [ New York Yankees,
-    Atlanta Braves ]
-: [ 2001-07-02, 2001-08-12, 
-    2001-08-14 ]
-EOY
-               )
-
-               # Complex key #2
-               assert_parse_only(
-                 { [ 'New York Yankees', 'Atlanta Braves' ] =>
-                   [ Date.new( 2001, 7, 2 ), Date.new( 2001, 8, 12 ),
-                         Date.new( 2001, 8, 14 ) ],
-                       [ 'Detroit Tigers', 'Chicago Cubs' ] =>
-                       [ Date.new( 2001, 7, 23 ) ]
-                 }, <<EOY
-?
-    - New York Yankees
-    - Atlanta Braves
-:
-  - 2001-07-02
-  - 2001-08-12
-  - 2001-08-14
-?
-    - Detroit Tigers
-    - Chicago Cubs
-:
-  - 2001-07-23
-EOY
-               )
-       end
-
-       def test_spec_sequence_key_shortcut
-               # Shortcut sequence map
-               assert_parse_only(
-                 { 'invoice' => 34843, 'date' => Date.new( 2001, 1, 23 ),
-                   'bill-to' => 'Chris Dumars', 'product' =>
-                       [ { 'item' => 'Super Hoop', 'quantity' => 1 },
-                         { 'item' => 'Basketball', 'quantity' => 4 },
-                         { 'item' => 'Big Shoes', 'quantity' => 1 } ] }, <<EOY
-invoice: 34843
-date   : 2001-01-23
-bill-to: Chris Dumars
-product:
-  - item    : Super Hoop
-    quantity: 1
-  - item    : Basketball
-    quantity: 4
-  - item    : Big Shoes
-    quantity: 1
-EOY
-               )
-       end
-
-    def test_spec_sequence_in_sequence_shortcut
-        # Seq-in-seq
-        assert_parse_only( [ [ [ 'one', 'two', 'three' ] ] ], <<EOY )
-- - - one
-    - two
-    - three
-EOY
-    end
-
-    def test_spec_sequence_shortcuts
-        # Sequence shortcuts combined
-        assert_parse_only( 
-[
-  [ 
-    [ [ 'one' ] ],
-    [ 'two', 'three' ],
-    { 'four' => nil },
-    [ { 'five' => [ 'six' ] } ],
-    [ 'seven' ]
-  ],
-  [ 'eight', 'nine' ]
-], <<EOY )
-- - - - one
-  - - two
-    - three
-  - four:
-  - - five:
-      - six
-  - - seven
-- - eight
-  - nine
-EOY
-    end
-
-       def test_spec_single_literal
-               # Literal scalar block
-               assert_parse_only( [ "\\/|\\/|\n/ |  |_\n" ], <<EOY )
-- |
-    \\/|\\/|
-    / |  |_
-EOY
-       end
-
-       def test_spec_single_folded
-               # Folded scalar block
-               assert_parse_only(
-                       [ "Mark McGwire's year was crippled by a knee injury.\n" ], <<EOY
-- >
-    Mark McGwire\'s
-    year was crippled
-    by a knee injury.
-EOY
-               )
-       end
-
-       def test_spec_preserve_indent
-               # Preserve indented spaces
-               assert_parse_only(
-                       "Sammy Sosa completed another fine season with great stats.\n\n  63 Home Runs\n  0.288 Batting Average\n\nWhat a year!\n", <<EOY
---- >
- Sammy Sosa completed another
- fine season with great stats.
-
-   63 Home Runs
-   0.288 Batting Average
-
- What a year!
-EOY
-               )
-       end
-
-       def test_spec_indentation_determines_scope
-               assert_parse_only(
-                       { 'name' => 'Mark McGwire', 'accomplishment' => "Mark set a major league home run record in 1998.\n",
-                         'stats' => "65 Home Runs\n0.278 Batting Average\n" }, <<EOY
-name: Mark McGwire
-accomplishment: >
-   Mark set a major league
-   home run record in 1998.
-stats: |
-   65 Home Runs
-   0.278 Batting Average
-EOY
-               )
-       end
-
-       def test_spec_multiline_scalars
-               # Multiline flow scalars
-               assert_parse_only(
-                       { 'plain' => 'This unquoted scalar spans many lines.',
-                         'quoted' => "So does this quoted scalar.\n" }, <<EOY
-plain: This unquoted
-       scalar spans
-       many lines.
-quoted: "\\
-  So does this quoted
-  scalar.\\n"
-EOY
-               )
-       end     
-
-       def test_spec_type_int
-               assert_parse_only(
-                       { 'canonical' => 12345, 'decimal' => 12345, 'octal' => '014'.oct, 'hexadecimal' => '0xC'.hex }, <<EOY
-canonical: 12345
-decimal: +12,345
-octal: 014
-hexadecimal: 0xC
-EOY
-               )
-               assert_parse_only(
-            { 'canonical' => 685230, 'decimal' => 685230, 'octal' => 02472256, 'hexadecimal' => 0x0A74AE, 'sexagesimal' => 685230 }, <<EOY)
-canonical: 685230
-decimal: +685,230
-octal: 02472256
-hexadecimal: 0x0A,74,AE
-sexagesimal: 190:20:30
-EOY
-       end
-
-       def test_spec_type_float
-               assert_parse_only(
-                       { 'canonical' => 1230.15, 'exponential' => 1230.15, 'fixed' => 1230.15,
-                         'negative infinity' => -1.0/0.0 }, <<EOY)
-canonical: 1.23015e+3
-exponential: 12.3015e+02
-fixed: 1,230.15
-negative infinity: -.inf
-EOY
-               nan = YAML::load( <<EOY )
-not a number: .NaN
-EOY
-               assert( nan['not a number'].nan? )
-       end
-
-       def test_spec_type_misc
-               assert_parse_only(
-                       { nil => nil, true => true, false => false, 'string' => '12345' }, <<EOY
-null: ~
-true: yes
-false: no
-string: '12345'
-EOY
-               )
-       end
-
-       def test_spec_complex_invoice
-               # Complex invoice type
-               id001 = { 'given' => 'Chris', 'family' => 'Dumars', 'address' =>
-                       { 'lines' => "458 Walkman Dr.\nSuite #292\n", 'city' => 'Royal Oak',
-                         'state' => 'MI', 'postal' => 48046 } }
-               assert_parse_only(
-                       { 'invoice' => 34843, 'date' => Date.new( 2001, 1, 23 ),
-                         'bill-to' => id001, 'ship-to' => id001, 'product' =>
-                         [ { 'sku' => 'BL394D', 'quantity' => 4,
-                             'description' => 'Basketball', 'price' => 450.00 },
-                               { 'sku' => 'BL4438H', 'quantity' => 1,
-                                 'description' => 'Super Hoop', 'price' => 2392.00 } ],
-                         'tax' => 251.42, 'total' => 4443.52,
-                         'comments' => "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.\n" }, <<EOY
-invoice: 34843
-date   : 2001-01-23
-bill-to: &id001
-    given  : Chris
-    family : !str Dumars
-    address:
-        lines: |
-            458 Walkman Dr.
-            Suite #292
-        city    : Royal Oak
-        state   : MI
-        postal  : 48046
-ship-to: *id001
-product:
-    - !map
-      sku         : BL394D
-      quantity    : 4
-      description : Basketball
-      price       : 450.00
-    - sku         : BL4438H
-      quantity    : 1
-      description : Super Hoop
-      price       : 2392.00
-tax  : 251.42
-total: 4443.52
-comments: >
-    Late afternoon is best.
-    Backup contact is Nancy
-    Billsmer @ 338-4338.
-EOY
-               )
-       end
-
-       def test_spec_log_file
-               doc_ct = 0
-               YAML::load_documents( <<EOY
----
-Time: 2001-11-23 15:01:42 -05:00
-User: ed
-Warning: >
-  This is an error message
-  for the log file
----
-Time: 2001-11-23 15:02:31 -05:00
-User: ed
-Warning: >
-  A slightly different error
-  message.
----
-Date: 2001-11-23 15:03:17 -05:00
-User: ed
-Fatal: >
-  Unknown variable "bar"
-Stack:
-  - file: TopClass.py
-    line: 23
-    code: |
-      x = MoreObject("345\\n")
-  - file: MoreClass.py
-    line: 58
-    code: |-
-      foo = bar
-EOY
-               ) { |doc|
-                       case doc_ct
-                               when 0
-                                       assert_equal( doc, { 'Time' => mktime( 2001, 11, 23, 15, 01, 42, 00, "-05:00" ),
-                                               'User' => 'ed', 'Warning' => "This is an error message for the log file\n" } )
-                               when 1
-                                       assert_equal( doc, { 'Time' => mktime( 2001, 11, 23, 15, 02, 31, 00, "-05:00" ),
-                                               'User' => 'ed', 'Warning' => "A slightly different error message.\n" } )
-                               when 2
-                                       assert_equal( doc, { 'Date' => mktime( 2001, 11, 23, 15, 03, 17, 00, "-05:00" ),
-                                               'User' => 'ed', 'Fatal' => "Unknown variable \"bar\"\n",
-                                               'Stack' => [
-                                                       { 'file' => 'TopClass.py', 'line' => 23, 'code' => "x = MoreObject(\"345\\n\")\n" },
-                                                       { 'file' => 'MoreClass.py', 'line' => 58, 'code' => "foo = bar" } ] } )
-                       end
-                       doc_ct += 1
-               }
-               assert_equal( doc_ct, 3 )
-       end
-
-       def test_spec_root_fold
-               y = YAML::load( <<EOY
---- >
-This YAML stream contains a single text value.
-The next stream is a log file - a sequence of
-log entries. Adding an entry to the log is a
-simple matter of appending it at the end.
-EOY
-               )
-               assert_equal( y, "This YAML stream contains a single text value. The next stream is a log file - a sequence of log entries. Adding an entry to the log is a simple matter of appending it at the end.\n" )
-       end
-
-       def test_spec_root_mapping
-               y = YAML::load( <<EOY
-# This stream is an example of a top-level mapping.
-invoice : 34843
-date    : 2001-01-23
-total   : 4443.52
-EOY
-               )
-               assert_equal( y, { 'invoice' => 34843, 'date' => Date.new( 2001, 1, 23 ), 'total' => 4443.52 } )
-       end
-
-       def test_spec_oneline_docs
-               doc_ct = 0
-               YAML::load_documents( <<EOY
-# The following is a sequence of three documents.
-# The first contains an empty mapping, the second
-# an empty sequence, and the last an empty string.
---- {}
---- [ ]
---- ''
-EOY
-               ) { |doc|
-                       case doc_ct
-                               when 0
-                                       assert_equal( doc, {} )
-                               when 1
-                                       assert_equal( doc, [] )
-                               when 2
-                                       assert_equal( doc, '' )
-                       end
-                       doc_ct += 1
-               }
-               assert_equal( doc_ct, 3 )
-       end
-
-       def test_spec_domain_prefix
-        customer_proc = proc { |type, val|
-            if Hash === val
-                scheme, domain, type = type.split( ':', 3 )
-                val['type'] = "domain #{type}"
-                val
-            else
-                raise ArgumentError, "Not a Hash in domain.tld,2002/invoice: " + val.inspect
-            end
-        }
-        YAML.add_domain_type( "domain.tld,2002", 'invoice', &customer_proc )
-        YAML.add_domain_type( "domain.tld,2002", 'customer', &customer_proc )
-               assert_parse_only( { "invoice"=> { "customers"=> [ { "given"=>"Chris", "type"=>"domain customer", "family"=>"Dumars" } ], "type"=>"domain invoice" } }, <<EOY
-# 'http://domain.tld,2002/invoice' is some type family.
-invoice: !domain.tld,2002/^invoice
-  # 'seq' is shorthand for 'http://yaml.org/seq'.
-  # This does not effect '^customer' below
-  # because it is does not specify a prefix.
-  customers: !seq
-    # '^customer' is shorthand for the full
-    # notation 'http://domain.tld,2002/customer'.
-    - !^customer
-      given : Chris
-      family : Dumars
-EOY
-               )
-       end
-
-       def test_spec_throwaway
-               assert_parse_only(
-                       {"this"=>"contains three lines of text.\nThe third one starts with a\n# character. This isn't a comment.\n"}, <<EOY
-### These are four throwaway comment  ###
-
-### lines (the second line is empty). ###
-this: |   # Comments may trail lines.
-    contains three lines of text.
-    The third one starts with a
-    # character. This isn't a comment.
-
-# These are three throwaway comment
-# lines (the first line is empty).
-EOY
-               )
-       end
-
-       def test_spec_force_implicit
-               # Force implicit
-               assert_parse_only( 
-                       { 'integer' => 12, 'also int' => 12, 'string' => '12' }, <<EOY
-integer: 12
-also int: ! "12"
-string: !str 12
-EOY
-               )
-       end
-
-       def test_spec_private_types
-               doc_ct = 0
-               YAML::parse_documents( <<EOY
-# Private types are per-document.
----
-pool: !!ball
-   number: 8
-   color: black
----
-bearing: !!ball
-   material: steel
-EOY
-               ) { |doc|
-                       case doc_ct
-                               when 0
-                                       assert_equal( doc['pool'].type_id, 'x-private:ball' )
-                                       assert_equal( doc['pool'].transform.value, { 'number' => 8, 'color' => 'black' } )
-                               when 1
-                                       assert_equal( doc['bearing'].type_id, 'x-private:ball' ) 
-                                       assert_equal( doc['bearing'].transform.value, { 'material' => 'steel' } )
-                       end
-                       doc_ct += 1
-               }
-               assert_equal( doc_ct, 2 )
-       end
-
-       def test_spec_url_escaping
-               YAML.add_domain_type( "domain.tld,2002", "type0" ) { |type, val|
-                       "ONE: #{val}"
-               }
-               YAML.add_domain_type( "domain.tld,2002", "type%30" ) { |type, val|
-                       "TWO: #{val}"
-               }
-               assert_parse_only(
-                       { 'same' => [ 'ONE: value', 'ONE: value' ], 'different' => [ 'TWO: value' ] }, <<EOY
-same:
-  - !domain.tld,2002/type\\x30 value
-  - !domain.tld,2002/type0 value
-different: # As far as the YAML parser is concerned
-  - !domain.tld,2002/type%30 value
-EOY
-               )
-       end
-
-       def test_spec_override_anchor
-               # Override anchor
-               a001 = "The alias node below is a repeated use of this value.\n"
-               assert_parse_only( 
-                       { 'anchor' => 'This scalar has an anchor.', 'override' => a001, 'alias' => a001 }, <<EOY
-anchor : &A001 This scalar has an anchor.
-override : &A001 >
- The alias node below is a
- repeated use of this value.
-alias : *A001
-EOY
-               )
-       end
-
-       def test_spec_explicit_families
-        YAML.add_domain_type( "somewhere.com,2002", 'type' ) { |type, val|
-            "SOMEWHERE: #{val}"
-        }
-               assert_parse_only(
-                       { 'not-date' => '2002-04-28', 'picture' => "GIF89a\f\000\f\000\204\000\000\377\377\367\365\365\356\351\351\345fff\000\000\000\347\347\347^^^\363\363\355\216\216\216\340\340\340\237\237\237\223\223\223\247\247\247\236\236\236i^\020' \202\n\001\000;", 'hmm' => "SOMEWHERE: family above is short for\nhttp://somewhere.com/type\n" }, <<EOY
-not-date: !str 2002-04-28
-picture: !binary |
- R0lGODlhDAAMAIQAAP//9/X
- 17unp5WZmZgAAAOfn515eXv
- Pz7Y6OjuDg4J+fn5OTk6enp
- 56enmleECcgggoBADs=
-
-hmm: !somewhere.com,2002/type | 
- family above is short for
- http://somewhere.com/type
-EOY
-               )
-       end
-
-       def test_spec_application_family
-               # Testing the clarkevans.com graphs
-               YAML.add_domain_type( "clarkevans.com,2002", 'graph/shape' ) { |type, val|
-                       if Array === val
-                               val << "Shape Container"
-                               val
-                       else
-                               raise ArgumentError, "Invalid graph of type #{val.class}: " + val.inspect
-                       end
-               }
-               one_shape_proc = Proc.new { |type, val|
-                       if Hash === val
-                type = type.split( /:/ )
-                               val['TYPE'] = "Shape: #{type[2]}"
-                               val
-                       else
-                               raise ArgumentError, "Invalid graph of type #{val.class}: " + val.inspect
-                       end
-               }
-               YAML.add_domain_type( "clarkevans.com,2002", 'graph/circle', &one_shape_proc )
-               YAML.add_domain_type( "clarkevans.com,2002", 'graph/line', &one_shape_proc )
-               YAML.add_domain_type( "clarkevans.com,2002", 'graph/text', &one_shape_proc )
-               assert_parse_only(
-                       [[{"radius"=>7, "center"=>{"x"=>73, "y"=>129}, "TYPE"=>"Shape: graph/circle"}, {"finish"=>{"x"=>89, "y"=>102}, "TYPE"=>"Shape: graph/line", "start"=>{"x"=>73, "y"=>129}}, {"TYPE"=>"Shape: graph/text", "value"=>"Pretty vector drawing.", "start"=>{"x"=>73, "y"=>129}, "color"=>16772795}, "Shape Container"]], <<EOY
-- !clarkevans.com,2002/graph/^shape
-  - !^circle
-    center: &ORIGIN {x: 73, y: 129}
-    radius: 7
-  - !^line # !clarkevans.com,2002/graph/line
-    start: *ORIGIN
-    finish: { x: 89, y: 102 }
-  - !^text
-    start: *ORIGIN
-    color: 0xFFEEBB
-    value: Pretty vector drawing.
-EOY
-               )
-       end
-
-       def test_spec_float_explicit
-               assert_parse_only(
-                       [ 10.0, 10.0, 10.0, 10.0 ], <<EOY
-# All entries in the sequence
-# have the same type and value.
-- 10.0
-- !float 10
-- !yaml.org,2002/^float '10'
-- !yaml.org,2002/float "\\
-  1\\
-  0"
-EOY
-               )
-       end
-
-       def test_spec_builtin_seq
-               # Assortment of sequences
-               assert_parse_only(
-                       { 'empty' => [], 'in-line' => [ 'one', 'two', 'three', 'four', 'five' ],
-                         'nested' => [ 'First item in top sequence', [ 'Subordinate sequence entry' ],
-                               "A multi-line sequence entry\n", 'Sixth item in top sequence' ] }, <<EOY
-empty: []
-in-line: [ one, two, three # May span lines,
-         , four,           # indentation is
-           five ]          # mostly ignored.
-nested:
- - First item in top sequence
- -
-  - Subordinate sequence entry
- - >
-   A multi-line
-   sequence entry
- - Sixth item in top sequence
-EOY
-               )
-       end
-
-       def test_spec_builtin_map
-               # Assortment of mappings
-               assert_parse_only( 
-                       { 'empty' => {}, 'in-line' => { 'one' => 1, 'two' => 2 },
-                         'spanning' => { 'one' => 1, 'two' => 2 },
-                         'nested' => { 'first' => 'First entry', 'second' =>
-                               { 'key' => 'Subordinate mapping' }, 'third' =>
-                                 [ 'Subordinate sequence', {}, 'Previous mapping is empty.',
-                                       { 'A key' => 'value pair in a sequence.', 'A second' => 'key:value pair.' },
-                                       'The previous entry is equal to the following one.',
-                                       { 'A key' => 'value pair in a sequence.', 'A second' => 'key:value pair.' } ],
-                                 12.0 => 'This key is a float.', "?\n" => 'This key had to be protected.',
-                                 "\a" => 'This key had to be escaped.',
-                                 "This is a multi-line folded key\n" => "Whose value is also multi-line.\n",
-                                 [ 'This key', 'is a sequence' ] => [ 'With a sequence value.' ] } }, <<EOY
-
-empty: {}
-in-line: { one: 1, two: 2 }
-spanning: { one: 1,
-   two: 2 }
-nested:
- first : First entry
- second:
-  key: Subordinate mapping
- third:
-  - Subordinate sequence
-  - { }
-  - Previous mapping is empty.
-  - A key: value pair in a sequence.
-    A second: key:value pair.
-  - The previous entry is equal to the following one.
-  -
-    A key: value pair in a sequence.
-    A second: key:value pair.
- !float 12 : This key is a float.
- ? >
-  ?
- : This key had to be protected.
- "\\a" : This key had to be escaped.
- ? >
-   This is a
-   multi-line
-   folded key
- : >
-   Whose value is
-   also multi-line.
- ?
-  - This key
-  - is a sequence
- :
-  - With a sequence value.
-# The following parses correctly,
-# but Ruby 1.6.* fails the comparison!
-# ?
-#  This: key
-#  is a: mapping
-# :
-#  with a: mapping value.
-EOY
-               )
-       end
-
-       def test_spec_builtin_literal_blocks
-               # Assortment of literal scalar blocks
-               assert_parse_only(
-                       {"both are equal to"=>"  This has no newline.", "is equal to"=>"The \\ ' \" characters may be\nfreely used. Leading white\n   space is significant.\n\nLine breaks are significant.\nThus this value contains one\nempty line and ends with a\nsingle line break, but does\nnot start with one.\n", "also written as"=>"  This has no newline.", "indented and chomped"=>"  This has no newline.", "empty"=>"", "literal"=>"The \\ ' \" characters may be\nfreely used. Leading white\n   space is significant.\n\nLine breaks are significant.\nThus this value contains one\nempty line and ends with a\nsingle line break, but does\nnot start with one.\n"}, <<EOY
-empty: |
-
-literal: |
- The \\ ' " characters may be
- freely used. Leading white
-    space is significant.
-
- Line breaks are significant.
- Thus this value contains one
- empty line and ends with a
- single line break, but does
- not start with one.
-
-is equal to: "The \\ ' \\" characters may \\
- be\\nfreely used. Leading white\\n   space \\
- is significant.\\n\\nLine breaks are \\
- significant.\\nThus this value contains \\
- one\\nempty line and ends with a\\nsingle \\
- line break, but does\\nnot start with one.\\n"
-
-# Comments may follow a nested
-# scalar value. They must be
-# less indented.
-
-# Modifiers may be combined in any order.
-indented and chomped: |2-
-    This has no newline.
-
-also written as: |-2
-    This has no newline.
-
-both are equal to: "  This has no newline."
-EOY
-               )
-
-               str1 = "This has one newline.\n"
-               str2 = "This has no newline."
-               str3 = "This has two newlines.\n\n"
-               assert_parse_only( 
-                       { 'clipped' => str1, 'same as "clipped" above' => str1, 
-                         'stripped' => str2, 'same as "stripped" above' => str2, 
-                         'kept' => str3, 'same as "kept" above' => str3 }, <<EOY
-clipped: |
-    This has one newline.
-
-same as "clipped" above: "This has one newline.\\n"
-
-stripped: |-
-    This has no newline.
-
-same as "stripped" above: "This has no newline."
-
-kept: |+
-    This has two newlines.
-
-same as "kept" above: "This has two newlines.\\n\\n"
-
-EOY
-               )
-       end
-       
-       def test_spec_span_single_quote
-               assert_parse_only( {"third"=>"a single quote ' must be escaped.", "second"=>"! : \\ etc. can be used freely.", "is same as"=>"this contains six spaces\nand one line break", "empty"=>"", "span"=>"this contains six spaces\nand one line break"}, <<EOY
-empty: ''
-second: '! : \\ etc. can be used freely.'
-third: 'a single quote '' must be escaped.'
-span: 'this contains
-      six spaces
-      
-      and one
-      line break'
-is same as: "this contains six spaces\\nand one line break"
-EOY
-               )
-       end
-
-       def test_spec_span_double_quote
-               assert_parse_only( {"is equal to"=>"this contains four  spaces", "third"=>"a \" or a \\ must be escaped.", "second"=>"! : etc. can be used freely.", "empty"=>"", "fourth"=>"this value ends with an LF.\n", "span"=>"this contains four  spaces"}, <<EOY
-empty: ""
-second: "! : etc. can be used freely."
-third: "a \\\" or a \\\\ must be escaped."
-fourth: "this value ends with an LF.\\n"
-span: "this contains
-  four  \\
-      spaces"
-is equal to: "this contains four  spaces"
-EOY
-               )
-       end
-
-       def test_spec_builtin_time
-               # Time
-               assert_parse_only(
-                       { "space separated" => mktime( 2001, 12, 14, 21, 59, 43, ".10", "-05:00" ), 
-                         "canonical" => mktime( 2001, 12, 15, 2, 59, 43, ".10" ), 
-                         "date (noon UTC)" => Date.new( 2002, 12, 14), 
-                         "valid iso8601" => mktime( 2001, 12, 14, 21, 59, 43, ".10", "-05:00" ) }, <<EOY
-canonical: 2001-12-15T02:59:43.1Z
-valid iso8601: 2001-12-14t21:59:43.10-05:00
-space separated: 2001-12-14 21:59:43.10 -05:00
-date (noon UTC): 2002-12-14
-EOY
-               )
-       end
-
-       def test_spec_builtin_binary
-               arrow_gif = "GIF89a\f\000\f\000\204\000\000\377\377\367\365\365\356\351\351\345fff\000\000\000\347\347\347^^^\363\363\355\216\216\216\340\340\340\237\237\237\223\223\223\247\247\247\236\236\236iiiccc\243\243\243\204\204\204\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371!\376\016Made with GIMP\000,\000\000\000\000\f\000\f\000\000\005,  \216\2010\236\343@\024\350i\020\304\321\212\010\034\317\200M$z\357\3770\205p\270\2601f\r\e\316\001\303\001\036\020' \202\n\001\000;"
-               assert_parse_only(
-                       { 'canonical' => arrow_gif, 'base64' => arrow_gif, 
-                         'description' => "The binary value above is a tiny arrow encoded as a gif image.\n" }, <<EOY
-canonical: !binary "\\
- R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOf\\
- n515eXvPz7Y6OjuDg4J+fn5OTk6enp56enmlpaW\\
- NjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++\\
- f/++f/++f/++f/++f/++f/++f/++SH+Dk1hZGUg\\
- d2l0aCBHSU1QACwAAAAADAAMAAAFLCAgjoEwnuN\\
- AFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84Bww\\
- EeECcgggoBADs="
-base64: !binary |
- R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOf
- n515eXvPz7Y6OjuDg4J+fn5OTk6enp56enmlpaW
- NjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++
- f/++f/++f/++f/++f/++f/++f/++SH+Dk1hZGUg
- d2l0aCBHSU1QACwAAAAADAAMAAAFLCAgjoEwnuN
- AFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84Bww
- EeECcgggoBADs=
-description: >
- The binary value above is a tiny arrow
- encoded as a gif image.
-EOY
-               )
-       end
-       def test_ruby_regexp
-               # Test Ruby regular expressions
-               assert_to_yaml( 
-                       { 'simple' => /a.b/, 'complex' => %r'\A"((?:[^"]|\")+)"',
-                         'case-insensitive' => /George McFly/i }, <<EOY
-case-insensitive: !ruby/regexp "/George McFly/i"
-complex: !ruby/regexp "/\\\\A\\"((?:[^\\"]|\\\\\\")+)\\"/"
-simple: !ruby/regexp "/a.b/"
-EOY
-               )
-       end
-
-    #
-    # Test of Ranges
-    #
-    def test_ranges
-
-        # Simple numeric
-        assert_to_yaml( 1..3, <<EOY )
---- !ruby/range 1..3
-EOY
-
-        # Simple alphabetic
-        assert_to_yaml( 'a'..'z', <<EOY )
---- !ruby/range a..z
-EOY
-
-        # Float
-        assert_to_yaml( 10.5...30.3, <<EOY )
---- !ruby/range 10.5...30.3
-EOY
-
-    end
-
-       def test_ruby_struct
-               # Ruby structures
-               book_struct = Struct::new( "BookStruct", :author, :title, :year, :isbn )
-               assert_to_yaml(
-                       [ book_struct.new( "Yukihiro Matsumoto", "Ruby in a Nutshell", 2002, "0-596-00214-9" ),
-                         book_struct.new( [ 'Dave Thomas', 'Andy Hunt' ], "The Pickaxe", 2002, 
-                               book_struct.new( "This should be the ISBN", "but I have another struct here", 2002, "None" ) 
-                         ) ], <<EOY
-- !ruby/struct:BookStruct
-  author: Yukihiro Matsumoto
-  title: Ruby in a Nutshell
-  year: 2002
-  isbn: 0-596-00214-9
-- !ruby/struct:BookStruct
-  author:
-    - Dave Thomas
-    - Andy Hunt
-  title: The Pickaxe
-  year: 2002
-  isbn: !ruby/struct:BookStruct
-    author: This should be the ISBN
-    title: but I have another struct here
-    year: 2002
-    isbn: None
-EOY
-               )
-
-        assert_to_yaml( YAML_Tests::StructTest.new( 123 ), <<EOY )
---- !ruby/struct:YAML_Tests::StructTest
-c: 123
-EOY
-
-       end
-
-       def test_emitting_indicators
-               assert_to_yaml( "Hi, from Object 1. You passed: please, pretty please", <<EOY
---- "Hi, from Object 1. You passed: please, pretty please"
-EOY
-               )
-       end
-
-       #
-       # Test the YAML::Stream class -- INACTIVE at the moment
-       #
-       def test_document
-               y = YAML::Stream.new( :Indent => 2, :UseVersion => 0 )
-               y.add( 
-                       { 'hi' => 'hello', 'map' =>
-                               { 'good' => 'two' },
-                         'time' => Time.now,
-                         'try' => /^po(.*)$/,
-                         'bye' => 'goodbye'
-                       }
-               )
-               y.add( { 'po' => 'nil', 'oper' => 90 } )
-               y.add( { 'hi' => 'wow!', 'bye' => 'wow!' } )
-               y.add( { [ 'Red Socks', 'Boston' ] => [ 'One', 'Two', 'Three' ] } )
-               y.add( [ true, false, false ] )
-       end
-
-    #
-    # Test YPath choices parsing
-    #
-    def test_ypath_parsing
-        assert_path_segments( "/*/((one|three)/name|place)|//place",
-          [ ["*", "one", "name"],
-            ["*", "three", "name"],
-            ["*", "place"],
-            ["/", "place"] ]
-        )
-    end
-
-    #
-    # Tests from Tanaka Akira on [ruby-core]
-    #
-    def test_akira
-
-        # Commas in plain scalars [ruby-core:1066]
-        assert_to_yaml(
-            {"A"=>"A,","B"=>"B"}, <<EOY
-A: "A,"
-B: B
-EOY
-        )
-
-        # Double-quoted keys [ruby-core:1069]
-        assert_to_yaml(
-            {"1"=>2, "2"=>3}, <<EOY
-'1': 2
-"2": 3
-EOY
-        )
-
-        # Anchored mapping [ruby-core:1071]
-        assert_to_yaml(
-            [{"a"=>"b"}] * 2, <<EOY
-- &id001
-  a: b
-- *id001
-EOY
-        )
-
-        # Stress test [ruby-core:1071]
-        # a = []; 1000.times { a << {"a"=>"b", "c"=>"d"} }
-        # YAML::load( a.to_yaml )
-
-    end
-
-    #
-    # Test Time.now cycle
-    #
-    def test_time_now_cycle
-        #
-        # From Minero Aoki [ruby-core:2305]
-        #
-        require 'yaml'
-        t = Time.now
-        5.times do
-            assert_cycle(t)
-        end
-    end
-
-    #
-    # Test Range cycle
-    #
-    def test_range_cycle
-      #
-      # From Minero Aoki [ruby-core:02306]
-      #
-      assert_cycle("a".."z")
-
-      #
-      # From Nobu Nakada [ruby-core:02311]
-      #
-      assert_cycle(0..1)
-      assert_cycle(1.0e20 .. 2.0e20)
-      assert_cycle("0".."1")
-      assert_cycle(".."..."...")
-      assert_cycle(".rb"..".pl")
-      assert_cycle(".rb"...".pl")
-      assert_cycle('"'...".")
-      assert_cycle("'"...".")
-    end
-
-    #
-    # Circular references
-    #
-    def test_circular_references
-        a = []; a[0] = a; a[1] = a
-        inspect_str = "[[...], [...]]"
-        assert_equal( inspect_str, YAML::load( a.to_yaml ).inspect )
-    end
-
-    #
-    # Test Symbol cycle
-    #
-    def test_symbol_cycle
-      #
-      # From Aaron Schrab [ruby-Bugs:2535]
-      #
-      assert_cycle(:"^foo")
-    end
-
-    #
-    # Test Numeric cycle
-    #
-    class NumericTest < Numeric
-      def initialize(value)
-        @value = value
-      end
-      def ==(other)
-        @value == other.instance_eval{ @value }
-      end
-    end
-    def test_numeric_cycle
-      assert_cycle(1) # Fixnum
-      assert_cycle(111111111111111111111111111111111) # Bignum
-      assert_cycle(NumericTest.new(3)) # Subclass of Numeric
-    end
-
-    #
-    # Test empty map/seq in map cycle
-    #
-    def test_empty_map_key
-      #
-      # empty seq as key
-      #
-      o = YAML.load({[]=>""}.to_yaml)
-      assert_equal(Hash, o.class)
-      assert_equal([[]], o.keys)
-
-      #
-      # empty map as key
-      #
-      o = YAML.load({{}=>""}.to_yaml)
-      assert_equal(Hash, o.class)
-      assert_equal([{}], o.keys)
-    end
-
-    #
-    # contributed by riley lynch [ruby-Bugs-8548]
-    #
-    def test_object_id_collision
-      omap = YAML::Omap.new
-      1000.times { |i| omap["key_#{i}"] = { "value" => i } }
-      raise "id collision in ordered map" if omap.to_yaml =~ /id\d+/
-    end
-end
-
-if $0 == __FILE__
-  suite = Test::Unit::TestSuite.new('YAML')
-  ObjectSpace.each_object(Class) do |klass|
-    suite << klass.suite if (Test::Unit::TestCase > klass)
-  end
-  require 'test/unit/ui/console/testrunner'
-  Test::Unit::UI::Console::TestRunner.run(suite).passed?
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/yaml/test_yamlstore.rb b/ruby/doc/ruby/ruby-1.8.7/test/yaml/test_yamlstore.rb
deleted file mode 100644 (file)
index 7a3d904..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-require 'test/unit'
-require 'yaml/store'
-
-class YAMLStoreTest < Test::Unit::TestCase
-  def setup
-    @yamlstore_file = "yamlstore.tmp.#{Process.pid}"
-    @yamlstore = YAML::Store.new(@yamlstore_file)
-  end
-
-  def teardown
-    File.unlink(@yamlstore_file) rescue nil
-  end
-
-  def test_opening_new_file_in_readonly_mode_should_result_in_empty_values
-    @yamlstore.transaction(true) do
-      assert_nil @yamlstore[:foo]
-      assert_nil @yamlstore[:bar]
-    end
-  end
-  
-  def test_opening_new_file_in_readwrite_mode_should_result_in_empty_values
-    @yamlstore.transaction do
-      assert_nil @yamlstore[:foo]
-      assert_nil @yamlstore[:bar]
-    end
-  end
-  
-  def test_data_should_be_loaded_correctly_when_in_readonly_mode
-    @yamlstore.transaction do
-      @yamlstore[:foo] = "bar"
-    end
-    @yamlstore.transaction(true) do
-      assert_equal "bar", @yamlstore[:foo]
-    end
-  end
-  
-  def test_data_should_be_loaded_correctly_when_in_readwrite_mode
-    @yamlstore.transaction do
-      @yamlstore[:foo] = "bar"
-    end
-    @yamlstore.transaction do
-      assert_equal "bar", @yamlstore[:foo]
-    end
-  end
-  
-  def test_changes_after_commit_are_discarded
-    @yamlstore.transaction do
-      @yamlstore[:foo] = "bar"
-      @yamlstore.commit
-      @yamlstore[:foo] = "baz"
-    end
-    @yamlstore.transaction(true) do
-      assert_equal "bar", @yamlstore[:foo]
-    end
-  end
-  
-  def test_changes_are_not_written_on_abort
-    @yamlstore.transaction do
-      @yamlstore[:foo] = "bar"
-      @yamlstore.abort
-    end
-    @yamlstore.transaction(true) do
-      assert_nil @yamlstore[:foo]
-    end
-  end
-  
-  def test_writing_inside_readonly_transaction_raises_error
-    assert_raise(PStore::Error) do
-      @yamlstore.transaction(true) do
-        @yamlstore[:foo] = "bar"
-      end
-    end
-  end
-end
diff --git a/ruby/doc/ruby/ruby-1.8.7/test/zlib/test_zlib.rb b/ruby/doc/ruby/ruby-1.8.7/test/zlib/test_zlib.rb
deleted file mode 100644 (file)
index 5470609..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-require 'test/unit/testsuite'
-require 'test/unit/testcase'
-require 'stringio'
-
-begin
-  require 'zlib'
-rescue LoadError
-end
-
-if defined? Zlib
-  class TestZlibGzipReader < Test::Unit::TestCase
-    D0 = "\037\213\010\000S`\017A\000\003\003\000\000\000\000\000\000\000\000\000"
-    def test_read0
-      assert_equal("", Zlib::GzipReader.new(StringIO.new(D0)).read(0))
-    end
-
-    def test_ungetc # [ruby-dev:24060]
-      s = ""
-      w = Zlib::GzipWriter.new(StringIO.new(s))
-      w << (1...1000).to_a.inspect
-      w.close
-      r = Zlib::GzipReader.new(StringIO.new(s))
-      r.read(100)
-      r.ungetc ?a
-      assert_nothing_raised {
-        r.read(100)
-        r.read
-        r.close
-      }
-    end
-
-    def test_ungetc_paragraph # [ruby-dev:24065]
-      s = ""
-      w = Zlib::GzipWriter.new(StringIO.new(s))
-      w << "abc"
-      w.close
-      r = Zlib::GzipReader.new(StringIO.new(s))
-      r.ungetc ?\n
-      assert_equal("abc", r.gets(""))
-      assert_nothing_raised {
-        r.read
-        r.close
-      }
-    end
-  end
-
-  class TestZlibGzipWriter < Test::Unit::TestCase
-    def test_invalid_new
-      # [ruby-dev:23228]
-      assert_raise(NoMethodError) { Zlib::GzipWriter.new(nil).close }
-      # [ruby-dev:23344]
-      assert_raise(NoMethodError) { Zlib::GzipWriter.new(true).close }
-      assert_raise(NoMethodError) { Zlib::GzipWriter.new(0).close }
-      assert_raise(NoMethodError) { Zlib::GzipWriter.new(:hoge).close }
-    end
-  end
-end