rumai 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (304) hide show
  1. data/LICENSE +13 -23
  2. data/Rakefile +8 -58
  3. data/bin/rumai +21 -22
  4. data/doc/api/IO.html +53 -0
  5. data/doc/api/Integer.html +102 -0
  6. data/doc/api/Object.html +23 -0
  7. data/doc/api/Rumai.html +1218 -0
  8. data/doc/api/Rumai/Area.html +1088 -0
  9. data/doc/api/Rumai/Chain.html +230 -0
  10. data/doc/api/Rumai/Client.html +1264 -0
  11. data/doc/api/Rumai/ClientContainer.html +227 -0
  12. data/doc/api/Rumai/ExportInstMethods.html +115 -0
  13. data/doc/api/Rumai/IXP.html +23 -0
  14. data/doc/api/Rumai/IXP/Agent.html +1222 -0
  15. data/doc/api/Rumai/IXP/Agent/FidStream.html +602 -0
  16. data/doc/api/Rumai/IXP/Agent/RangedPool.html +263 -0
  17. data/doc/api/Rumai/IXP/Error.html +32 -0
  18. data/doc/api/Rumai/IXP/Fcall.html +398 -0
  19. data/doc/api/Rumai/IXP/Qid.html +99 -0
  20. data/doc/api/Rumai/IXP/Rattach.html +71 -0
  21. data/doc/api/Rumai/IXP/Rauth.html +71 -0
  22. data/doc/api/Rumai/IXP/Rclunk.html +71 -0
  23. data/doc/api/Rumai/IXP/Rcreate.html +71 -0
  24. data/doc/api/Rumai/IXP/Rerror.html +71 -0
  25. data/doc/api/Rumai/IXP/Rflush.html +71 -0
  26. data/doc/api/Rumai/IXP/Ropen.html +71 -0
  27. data/doc/api/Rumai/IXP/Rread.html +71 -0
  28. data/doc/api/Rumai/IXP/Rremove.html +71 -0
  29. data/doc/api/Rumai/IXP/Rstat.html +71 -0
  30. data/doc/api/Rumai/IXP/Rversion.html +71 -0
  31. data/doc/api/Rumai/IXP/Rwalk.html +71 -0
  32. data/doc/api/Rumai/IXP/Rwrite.html +71 -0
  33. data/doc/api/Rumai/IXP/Rwstat.html +71 -0
  34. data/doc/api/Rumai/IXP/Stat.html +188 -0
  35. data/doc/api/Rumai/IXP/Stream.html +112 -0
  36. data/doc/api/Rumai/IXP/Struct.html +348 -0
  37. data/doc/api/Rumai/IXP/Struct/ClassField.html +177 -0
  38. data/doc/api/Rumai/IXP/Struct/Field.html +549 -0
  39. data/doc/api/Rumai/IXP/Struct/Field/CounteeField.html +175 -0
  40. data/doc/api/Rumai/IXP/Struct/Field/CounterField.html +95 -0
  41. data/doc/api/Rumai/IXP/Struct/Integer8Field.html +181 -0
  42. data/doc/api/Rumai/IXP/Struct/StringField.html +128 -0
  43. data/doc/api/Rumai/IXP/Tattach.html +71 -0
  44. data/doc/api/Rumai/IXP/Tauth.html +71 -0
  45. data/doc/api/Rumai/IXP/Tclunk.html +71 -0
  46. data/doc/api/Rumai/IXP/Tcreate.html +71 -0
  47. data/doc/api/Rumai/IXP/Terror.html +156 -0
  48. data/doc/api/Rumai/IXP/Tflush.html +71 -0
  49. data/doc/api/Rumai/IXP/Topen.html +113 -0
  50. data/doc/api/Rumai/IXP/Tread.html +71 -0
  51. data/doc/api/Rumai/IXP/Tremove.html +71 -0
  52. data/doc/api/Rumai/IXP/Tstat.html +71 -0
  53. data/doc/api/Rumai/IXP/Tversion.html +83 -0
  54. data/doc/api/Rumai/IXP/Twalk.html +71 -0
  55. data/doc/api/Rumai/IXP/Twrite.html +71 -0
  56. data/doc/api/Rumai/IXP/Twstat.html +71 -0
  57. data/doc/api/Rumai/Node.html +1139 -0
  58. data/doc/api/Rumai/View.html +1280 -0
  59. data/doc/api/Rumai/WidgetImpl.html +196 -0
  60. data/doc/api/Rumai/WidgetNode.html +184 -0
  61. data/doc/api/String.html +180 -0
  62. data/doc/api/StringIO.html +53 -0
  63. data/doc/api/Time.html +175 -0
  64. data/doc/api/all-methods.html +1436 -0
  65. data/doc/api/all-namespaces.html +140 -0
  66. data/doc/api/app.js +18 -0
  67. data/doc/api/index.html +16 -22
  68. data/doc/api/jquery.js +11 -0
  69. data/doc/api/readme.html +35 -0
  70. data/doc/api/style.css +68 -0
  71. data/doc/api/syntax_highlight.css +21 -0
  72. data/doc/history.erb +17 -0
  73. data/doc/index.erb +13 -0
  74. data/doc/index.xhtml +1235 -0
  75. data/doc/intro.erb +86 -0
  76. data/doc/setup.erb +55 -0
  77. data/doc/theory.erb +3 -0
  78. data/doc/usage.erb +285 -0
  79. data/lib/rumai.rb +10 -7
  80. data/lib/rumai/fs.rb +13 -15
  81. data/lib/rumai/ixp.rb +2 -7
  82. data/lib/rumai/ixp/message.rb +0 -3
  83. data/lib/rumai/ixp/transport.rb +1 -4
  84. data/lib/rumai/wm.rb +6 -6
  85. data/test/rumai/ixp/message.rb +249 -0
  86. metadata +104 -263
  87. data/README +0 -1
  88. data/doc/api/classes/IO.html +0 -120
  89. data/doc/api/classes/Integer.html +0 -142
  90. data/doc/api/classes/Integer.src/M000002.html +0 -18
  91. data/doc/api/classes/Object.html +0 -113
  92. data/doc/api/classes/Rumai.html +0 -530
  93. data/doc/api/classes/Rumai.src/M000007.html +0 -18
  94. data/doc/api/classes/Rumai.src/M000008.html +0 -18
  95. data/doc/api/classes/Rumai.src/M000009.html +0 -18
  96. data/doc/api/classes/Rumai.src/M000010.html +0 -18
  97. data/doc/api/classes/Rumai.src/M000011.html +0 -18
  98. data/doc/api/classes/Rumai.src/M000012.html +0 -18
  99. data/doc/api/classes/Rumai.src/M000013.html +0 -18
  100. data/doc/api/classes/Rumai.src/M000014.html +0 -20
  101. data/doc/api/classes/Rumai.src/M000015.html +0 -18
  102. data/doc/api/classes/Rumai.src/M000016.html +0 -18
  103. data/doc/api/classes/Rumai.src/M000017.html +0 -18
  104. data/doc/api/classes/Rumai.src/M000018.html +0 -18
  105. data/doc/api/classes/Rumai.src/M000019.html +0 -18
  106. data/doc/api/classes/Rumai.src/M000020.html +0 -18
  107. data/doc/api/classes/Rumai.src/M000021.html +0 -18
  108. data/doc/api/classes/Rumai.src/M000022.html +0 -18
  109. data/doc/api/classes/Rumai.src/M000023.html +0 -18
  110. data/doc/api/classes/Rumai.src/M000024.html +0 -18
  111. data/doc/api/classes/Rumai.src/M000025.html +0 -18
  112. data/doc/api/classes/Rumai.src/M000026.html +0 -18
  113. data/doc/api/classes/Rumai/Area.html +0 -461
  114. data/doc/api/classes/Rumai/Area.src/M000079.html +0 -19
  115. data/doc/api/classes/Rumai/Area.src/M000080.html +0 -18
  116. data/doc/api/classes/Rumai/Area.src/M000081.html +0 -18
  117. data/doc/api/classes/Rumai/Area.src/M000082.html +0 -18
  118. data/doc/api/classes/Rumai/Area.src/M000083.html +0 -18
  119. data/doc/api/classes/Rumai/Area.src/M000084.html +0 -18
  120. data/doc/api/classes/Rumai/Area.src/M000085.html +0 -18
  121. data/doc/api/classes/Rumai/Area.src/M000086.html +0 -18
  122. data/doc/api/classes/Rumai/Area.src/M000087.html +0 -18
  123. data/doc/api/classes/Rumai/Area.src/M000088.html +0 -18
  124. data/doc/api/classes/Rumai/Area.src/M000089.html +0 -18
  125. data/doc/api/classes/Rumai/Area.src/M000090.html +0 -22
  126. data/doc/api/classes/Rumai/Area.src/M000092.html +0 -23
  127. data/doc/api/classes/Rumai/Area.src/M000093.html +0 -28
  128. data/doc/api/classes/Rumai/Area.src/M000094.html +0 -18
  129. data/doc/api/classes/Rumai/Area.src/M000095.html +0 -31
  130. data/doc/api/classes/Rumai/Chain.html +0 -179
  131. data/doc/api/classes/Rumai/Chain.src/M000076.html +0 -18
  132. data/doc/api/classes/Rumai/Chain.src/M000077.html +0 -18
  133. data/doc/api/classes/Rumai/Chain.src/M000078.html +0 -18
  134. data/doc/api/classes/Rumai/Client.html +0 -481
  135. data/doc/api/classes/Rumai/Client.src/M000113.html +0 -18
  136. data/doc/api/classes/Rumai/Client.src/M000114.html +0 -18
  137. data/doc/api/classes/Rumai/Client.src/M000115.html +0 -18
  138. data/doc/api/classes/Rumai/Client.src/M000116.html +0 -39
  139. data/doc/api/classes/Rumai/Client.src/M000117.html +0 -19
  140. data/doc/api/classes/Rumai/Client.src/M000118.html +0 -19
  141. data/doc/api/classes/Rumai/Client.src/M000119.html +0 -18
  142. data/doc/api/classes/Rumai/Client.src/M000120.html +0 -18
  143. data/doc/api/classes/Rumai/Client.src/M000121.html +0 -18
  144. data/doc/api/classes/Rumai/Client.src/M000122.html +0 -18
  145. data/doc/api/classes/Rumai/Client.src/M000123.html +0 -19
  146. data/doc/api/classes/Rumai/Client.src/M000124.html +0 -20
  147. data/doc/api/classes/Rumai/Client.src/M000125.html +0 -20
  148. data/doc/api/classes/Rumai/Client.src/M000126.html +0 -22
  149. data/doc/api/classes/Rumai/Client.src/M000127.html +0 -18
  150. data/doc/api/classes/Rumai/Client.src/M000128.html +0 -20
  151. data/doc/api/classes/Rumai/Client.src/M000129.html +0 -18
  152. data/doc/api/classes/Rumai/Client.src/M000130.html +0 -22
  153. data/doc/api/classes/Rumai/ClientContainer.html +0 -180
  154. data/doc/api/classes/Rumai/ClientContainer.src/M000027.html +0 -18
  155. data/doc/api/classes/Rumai/ClientContainer.src/M000028.html +0 -18
  156. data/doc/api/classes/Rumai/ClientContainer.src/M000029.html +0 -18
  157. data/doc/api/classes/Rumai/ExportInstMethods.html +0 -119
  158. data/doc/api/classes/Rumai/IXP.html +0 -149
  159. data/doc/api/classes/Rumai/IXP/Agent.html +0 -447
  160. data/doc/api/classes/Rumai/IXP/Agent.src/M000044.html +0 -53
  161. data/doc/api/classes/Rumai/IXP/Agent.src/M000045.html +0 -36
  162. data/doc/api/classes/Rumai/IXP/Agent.src/M000046.html +0 -39
  163. data/doc/api/classes/Rumai/IXP/Agent.src/M000047.html +0 -20
  164. data/doc/api/classes/Rumai/IXP/Agent.src/M000048.html +0 -22
  165. data/doc/api/classes/Rumai/IXP/Agent.src/M000049.html +0 -20
  166. data/doc/api/classes/Rumai/IXP/Agent.src/M000050.html +0 -33
  167. data/doc/api/classes/Rumai/IXP/Agent.src/M000051.html +0 -19
  168. data/doc/api/classes/Rumai/IXP/Agent.src/M000052.html +0 -18
  169. data/doc/api/classes/Rumai/IXP/Agent.src/M000053.html +0 -21
  170. data/doc/api/classes/Rumai/IXP/Agent.src/M000054.html +0 -20
  171. data/doc/api/classes/Rumai/IXP/Agent.src/M000055.html +0 -20
  172. data/doc/api/classes/Rumai/IXP/Agent.src/M000056.html +0 -22
  173. data/doc/api/classes/Rumai/IXP/Agent.src/M000057.html +0 -23
  174. data/doc/api/classes/Rumai/IXP/Agent.src/M000058.html +0 -19
  175. data/doc/api/classes/Rumai/IXP/Agent/FidStream.html +0 -312
  176. data/doc/api/classes/Rumai/IXP/Agent/FidStream.src/M000060.html +0 -23
  177. data/doc/api/classes/Rumai/IXP/Agent/FidStream.src/M000061.html +0 -19
  178. data/doc/api/classes/Rumai/IXP/Agent/FidStream.src/M000062.html +0 -22
  179. data/doc/api/classes/Rumai/IXP/Agent/FidStream.src/M000063.html +0 -18
  180. data/doc/api/classes/Rumai/IXP/Agent/FidStream.src/M000064.html +0 -45
  181. data/doc/api/classes/Rumai/IXP/Agent/FidStream.src/M000065.html +0 -36
  182. data/doc/api/classes/Rumai/IXP/Agent/MODES.html +0 -130
  183. data/doc/api/classes/Rumai/IXP/Agent/MODES.src/M000059.html +0 -22
  184. data/doc/api/classes/Rumai/IXP/Agent/RangedPool.html +0 -203
  185. data/doc/api/classes/Rumai/IXP/Agent/RangedPool.src/M000067.html +0 -22
  186. data/doc/api/classes/Rumai/IXP/Agent/RangedPool.src/M000068.html +0 -36
  187. data/doc/api/classes/Rumai/IXP/Agent/RangedPool.src/M000069.html +0 -18
  188. data/doc/api/classes/Rumai/IXP/Error.html +0 -117
  189. data/doc/api/classes/Rumai/IXP/Fcall.html +0 -261
  190. data/doc/api/classes/Rumai/IXP/Fcall.src/M000070.html +0 -20
  191. data/doc/api/classes/Rumai/IXP/Fcall.src/M000071.html +0 -25
  192. data/doc/api/classes/Rumai/IXP/Fcall.src/M000072.html +0 -18
  193. data/doc/api/classes/Rumai/IXP/Fcall.src/M000073.html +0 -18
  194. data/doc/api/classes/Rumai/IXP/Qid.html +0 -184
  195. data/doc/api/classes/Rumai/IXP/Rattach.html +0 -119
  196. data/doc/api/classes/Rumai/IXP/Rauth.html +0 -119
  197. data/doc/api/classes/Rumai/IXP/Rclunk.html +0 -119
  198. data/doc/api/classes/Rumai/IXP/Rcreate.html +0 -119
  199. data/doc/api/classes/Rumai/IXP/Rerror.html +0 -119
  200. data/doc/api/classes/Rumai/IXP/Rflush.html +0 -119
  201. data/doc/api/classes/Rumai/IXP/Ropen.html +0 -119
  202. data/doc/api/classes/Rumai/IXP/Rread.html +0 -119
  203. data/doc/api/classes/Rumai/IXP/Rremove.html +0 -119
  204. data/doc/api/classes/Rumai/IXP/Rstat.html +0 -119
  205. data/doc/api/classes/Rumai/IXP/Rversion.html +0 -119
  206. data/doc/api/classes/Rumai/IXP/Rwalk.html +0 -119
  207. data/doc/api/classes/Rumai/IXP/Rwrite.html +0 -119
  208. data/doc/api/classes/Rumai/IXP/Rwstat.html +0 -119
  209. data/doc/api/classes/Rumai/IXP/Stat.html +0 -248
  210. data/doc/api/classes/Rumai/IXP/Stat.src/M000075.html +0 -18
  211. data/doc/api/classes/Rumai/IXP/Stream.html +0 -158
  212. data/doc/api/classes/Rumai/IXP/Stream.src/M000043.html +0 -18
  213. data/doc/api/classes/Rumai/IXP/Struct.html +0 -221
  214. data/doc/api/classes/Rumai/IXP/Struct.src/M000030.html +0 -19
  215. data/doc/api/classes/Rumai/IXP/Struct.src/M000031.html +0 -18
  216. data/doc/api/classes/Rumai/IXP/Struct.src/M000032.html +0 -20
  217. data/doc/api/classes/Rumai/IXP/Struct.src/M000033.html +0 -57
  218. data/doc/api/classes/Rumai/IXP/Struct/Field.html +0 -296
  219. data/doc/api/classes/Rumai/IXP/Struct/Field.src/M000034.html +0 -21
  220. data/doc/api/classes/Rumai/IXP/Struct/Field.src/M000035.html +0 -21
  221. data/doc/api/classes/Rumai/IXP/Struct/Field.src/M000036.html +0 -20
  222. data/doc/api/classes/Rumai/IXP/Struct/Field.src/M000037.html +0 -29
  223. data/doc/api/classes/Rumai/IXP/Struct/Field.src/M000038.html +0 -18
  224. data/doc/api/classes/Rumai/IXP/Struct/Field.src/M000039.html +0 -18
  225. data/doc/api/classes/Rumai/IXP/Struct/Field/CounteeField.html +0 -152
  226. data/doc/api/classes/Rumai/IXP/Struct/Field/CounteeField.src/M000041.html +0 -24
  227. data/doc/api/classes/Rumai/IXP/Struct/Field/CounteeField.src/M000042.html +0 -25
  228. data/doc/api/classes/Rumai/IXP/Struct/Field/CounterField.html +0 -137
  229. data/doc/api/classes/Rumai/IXP/Struct/Field/CounterField.src/M000040.html +0 -18
  230. data/doc/api/classes/Rumai/IXP/Tattach.html +0 -120
  231. data/doc/api/classes/Rumai/IXP/Tauth.html +0 -119
  232. data/doc/api/classes/Rumai/IXP/Tclunk.html +0 -119
  233. data/doc/api/classes/Rumai/IXP/Tcreate.html +0 -120
  234. data/doc/api/classes/Rumai/IXP/Terror.html +0 -145
  235. data/doc/api/classes/Rumai/IXP/Terror.src/M000074.html +0 -18
  236. data/doc/api/classes/Rumai/IXP/Tflush.html +0 -119
  237. data/doc/api/classes/Rumai/IXP/Topen.html +0 -193
  238. data/doc/api/classes/Rumai/IXP/Tread.html +0 -119
  239. data/doc/api/classes/Rumai/IXP/Tremove.html +0 -119
  240. data/doc/api/classes/Rumai/IXP/Tstat.html +0 -119
  241. data/doc/api/classes/Rumai/IXP/Tversion.html +0 -137
  242. data/doc/api/classes/Rumai/IXP/Twalk.html +0 -120
  243. data/doc/api/classes/Rumai/IXP/Twrite.html +0 -120
  244. data/doc/api/classes/Rumai/IXP/Twstat.html +0 -119
  245. data/doc/api/classes/Rumai/Node.html +0 -461
  246. data/doc/api/classes/Rumai/Node.src/M000096.html +0 -18
  247. data/doc/api/classes/Rumai/Node.src/M000097.html +0 -18
  248. data/doc/api/classes/Rumai/Node.src/M000098.html +0 -22
  249. data/doc/api/classes/Rumai/Node.src/M000099.html +0 -18
  250. data/doc/api/classes/Rumai/Node.src/M000100.html +0 -18
  251. data/doc/api/classes/Rumai/Node.src/M000101.html +0 -18
  252. data/doc/api/classes/Rumai/Node.src/M000102.html +0 -18
  253. data/doc/api/classes/Rumai/Node.src/M000103.html +0 -22
  254. data/doc/api/classes/Rumai/Node.src/M000104.html +0 -18
  255. data/doc/api/classes/Rumai/Node.src/M000105.html +0 -18
  256. data/doc/api/classes/Rumai/Node.src/M000106.html +0 -18
  257. data/doc/api/classes/Rumai/Node.src/M000107.html +0 -18
  258. data/doc/api/classes/Rumai/Node.src/M000108.html +0 -18
  259. data/doc/api/classes/Rumai/Node.src/M000109.html +0 -18
  260. data/doc/api/classes/Rumai/Node.src/M000110.html +0 -18
  261. data/doc/api/classes/Rumai/Node.src/M000111.html +0 -20
  262. data/doc/api/classes/Rumai/Node.src/M000112.html +0 -27
  263. data/doc/api/classes/Rumai/View.html +0 -436
  264. data/doc/api/classes/Rumai/View.src/M000131.html +0 -18
  265. data/doc/api/classes/Rumai/View.src/M000132.html +0 -18
  266. data/doc/api/classes/Rumai/View.src/M000133.html +0 -18
  267. data/doc/api/classes/Rumai/View.src/M000134.html +0 -18
  268. data/doc/api/classes/Rumai/View.src/M000135.html +0 -18
  269. data/doc/api/classes/Rumai/View.src/M000136.html +0 -18
  270. data/doc/api/classes/Rumai/View.src/M000137.html +0 -18
  271. data/doc/api/classes/Rumai/View.src/M000138.html +0 -28
  272. data/doc/api/classes/Rumai/View.src/M000139.html +0 -18
  273. data/doc/api/classes/Rumai/View.src/M000140.html +0 -18
  274. data/doc/api/classes/Rumai/View.src/M000141.html +0 -18
  275. data/doc/api/classes/Rumai/View.src/M000142.html +0 -18
  276. data/doc/api/classes/Rumai/View.src/M000143.html +0 -29
  277. data/doc/api/classes/Rumai/View.src/M000144.html +0 -20
  278. data/doc/api/classes/Rumai/View.src/M000145.html +0 -33
  279. data/doc/api/classes/Rumai/View.src/M000146.html +0 -50
  280. data/doc/api/classes/String.html +0 -169
  281. data/doc/api/classes/String.src/M000005.html +0 -18
  282. data/doc/api/classes/String.src/M000006.html +0 -18
  283. data/doc/api/classes/StringIO.html +0 -120
  284. data/doc/api/classes/Time.html +0 -163
  285. data/doc/api/classes/Time.src/M000003.html +0 -18
  286. data/doc/api/classes/Time.src/M000004.html +0 -18
  287. data/doc/api/created.rid +0 -1
  288. data/doc/api/files/lib/rumai/fs_rb.html +0 -115
  289. data/doc/api/files/lib/rumai/ixp/message_rb.html +0 -120
  290. data/doc/api/files/lib/rumai/ixp/message_spec_rb.html +0 -175
  291. data/doc/api/files/lib/rumai/ixp/message_spec_rb.src/M000001.html +0 -37
  292. data/doc/api/files/lib/rumai/ixp/transport_rb.html +0 -115
  293. data/doc/api/files/lib/rumai/ixp_rb.html +0 -116
  294. data/doc/api/files/lib/rumai/nfo_rb.html +0 -107
  295. data/doc/api/files/lib/rumai/wm_rb.html +0 -115
  296. data/doc/api/files/lib/rumai_rb.html +0 -115
  297. data/doc/api/fr_class_index.html +0 -82
  298. data/doc/api/fr_file_index.html +0 -34
  299. data/doc/api/fr_method_index.html +0 -172
  300. data/doc/api/rdoc-style.css +0 -208
  301. data/doc/guide.erb +0 -390
  302. data/doc/guide.html +0 -2043
  303. data/lib/rumai/ixp/message_spec.rb +0 -247
  304. data/lib/rumai/nfo.rb +0 -24
@@ -0,0 +1,140 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html>
4
+ <head>
5
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
6
+ <link rel="stylesheet" href="style.css" type="text/css" charset="utf-8" />
7
+ <link rel="stylesheet" href="syntax_highlight.css" type="text/css" charset="utf-8" />
8
+
9
+ <title>All Modules / Classes</title>
10
+ <base target="main" />
11
+ </head>
12
+ <body>
13
+ <div id="nav" class="namespaces">
14
+ <h1>All Modules / Classes</h1>
15
+ <ul>
16
+
17
+ <li><a href="IO.html" title="IO">IO</a> <em>(class)</em></li>
18
+
19
+ <li><a href="Integer.html" title="Integer">Integer</a> <em>(class)</em></li>
20
+
21
+ <li><a href="Object.html" title="Object">Object</a> <em>(class)</em></li>
22
+
23
+ <li><a href="Rumai.html" title="Rumai">Rumai</a> <em>(module)</em></li>
24
+
25
+ <li><a href="Rumai/Area.html" title="Rumai::Area">Rumai::Area</a> <em>(class)</em></li>
26
+
27
+ <li><a href="Rumai/Chain.html" title="Rumai::Chain">Rumai::Chain</a> <em>(module)</em></li>
28
+
29
+ <li><a href="Rumai/Client.html" title="Rumai::Client">Rumai::Client</a> <em>(class)</em></li>
30
+
31
+ <li><a href="Rumai/ClientContainer.html" title="Rumai::ClientContainer">Rumai::ClientContainer</a> <em>(module)</em></li>
32
+
33
+ <li><a href="Rumai/ExportInstMethods.html" title="Rumai::ExportInstMethods">Rumai::ExportInstMethods</a> <em>(module)</em></li>
34
+
35
+ <li><a href="Rumai/IXP.html" title="Rumai::IXP">Rumai::IXP</a> <em>(module)</em></li>
36
+
37
+ <li><a href="Rumai/IXP/Agent.html" title="Rumai::IXP::Agent">Rumai::IXP::Agent</a> <em>(class)</em></li>
38
+
39
+ <li><a href="Rumai/IXP/Agent/FidStream.html" title="Rumai::IXP::Agent::FidStream">Rumai::IXP::Agent::FidStream</a> <em>(class)</em></li>
40
+
41
+ <li><a href="Rumai/IXP/Agent/RangedPool.html" title="Rumai::IXP::Agent::RangedPool">Rumai::IXP::Agent::RangedPool</a> <em>(class)</em></li>
42
+
43
+ <li><a href="Rumai/IXP/Error.html" title="Rumai::IXP::Error">Rumai::IXP::Error</a> <em>(class)</em></li>
44
+
45
+ <li><a href="Rumai/IXP/Fcall.html" title="Rumai::IXP::Fcall">Rumai::IXP::Fcall</a> <em>(class)</em></li>
46
+
47
+ <li><a href="Rumai/IXP/Qid.html" title="Rumai::IXP::Qid">Rumai::IXP::Qid</a> <em>(class)</em></li>
48
+
49
+ <li><a href="Rumai/IXP/Rattach.html" title="Rumai::IXP::Rattach">Rumai::IXP::Rattach</a> <em>(class)</em></li>
50
+
51
+ <li><a href="Rumai/IXP/Rauth.html" title="Rumai::IXP::Rauth">Rumai::IXP::Rauth</a> <em>(class)</em></li>
52
+
53
+ <li><a href="Rumai/IXP/Rclunk.html" title="Rumai::IXP::Rclunk">Rumai::IXP::Rclunk</a> <em>(class)</em></li>
54
+
55
+ <li><a href="Rumai/IXP/Rcreate.html" title="Rumai::IXP::Rcreate">Rumai::IXP::Rcreate</a> <em>(class)</em></li>
56
+
57
+ <li><a href="Rumai/IXP/Rerror.html" title="Rumai::IXP::Rerror">Rumai::IXP::Rerror</a> <em>(class)</em></li>
58
+
59
+ <li><a href="Rumai/IXP/Rflush.html" title="Rumai::IXP::Rflush">Rumai::IXP::Rflush</a> <em>(class)</em></li>
60
+
61
+ <li><a href="Rumai/IXP/Ropen.html" title="Rumai::IXP::Ropen">Rumai::IXP::Ropen</a> <em>(class)</em></li>
62
+
63
+ <li><a href="Rumai/IXP/Rread.html" title="Rumai::IXP::Rread">Rumai::IXP::Rread</a> <em>(class)</em></li>
64
+
65
+ <li><a href="Rumai/IXP/Rremove.html" title="Rumai::IXP::Rremove">Rumai::IXP::Rremove</a> <em>(class)</em></li>
66
+
67
+ <li><a href="Rumai/IXP/Rstat.html" title="Rumai::IXP::Rstat">Rumai::IXP::Rstat</a> <em>(class)</em></li>
68
+
69
+ <li><a href="Rumai/IXP/Rversion.html" title="Rumai::IXP::Rversion">Rumai::IXP::Rversion</a> <em>(class)</em></li>
70
+
71
+ <li><a href="Rumai/IXP/Rwalk.html" title="Rumai::IXP::Rwalk">Rumai::IXP::Rwalk</a> <em>(class)</em></li>
72
+
73
+ <li><a href="Rumai/IXP/Rwrite.html" title="Rumai::IXP::Rwrite">Rumai::IXP::Rwrite</a> <em>(class)</em></li>
74
+
75
+ <li><a href="Rumai/IXP/Rwstat.html" title="Rumai::IXP::Rwstat">Rumai::IXP::Rwstat</a> <em>(class)</em></li>
76
+
77
+ <li><a href="Rumai/IXP/Stat.html" title="Rumai::IXP::Stat">Rumai::IXP::Stat</a> <em>(class)</em></li>
78
+
79
+ <li><a href="Rumai/IXP/Stream.html" title="Rumai::IXP::Stream">Rumai::IXP::Stream</a> <em>(module)</em></li>
80
+
81
+ <li><a href="Rumai/IXP/Struct.html" title="Rumai::IXP::Struct">Rumai::IXP::Struct</a> <em>(module)</em></li>
82
+
83
+ <li><a href="Rumai/IXP/Struct/ClassField.html" title="Rumai::IXP::Struct::ClassField">Rumai::IXP::Struct::ClassField</a> <em>(class)</em></li>
84
+
85
+ <li><a href="Rumai/IXP/Struct/Field.html" title="Rumai::IXP::Struct::Field">Rumai::IXP::Struct::Field</a> <em>(class)</em></li>
86
+
87
+ <li><a href="Rumai/IXP/Struct/Field/CounteeField.html" title="Rumai::IXP::Struct::Field::CounteeField">Rumai::IXP::Struct::Field::CounteeField</a> <em>(module)</em></li>
88
+
89
+ <li><a href="Rumai/IXP/Struct/Field/CounterField.html" title="Rumai::IXP::Struct::Field::CounterField">Rumai::IXP::Struct::Field::CounterField</a> <em>(module)</em></li>
90
+
91
+ <li><a href="Rumai/IXP/Struct/Integer8Field.html" title="Rumai::IXP::Struct::Integer8Field">Rumai::IXP::Struct::Integer8Field</a> <em>(class)</em></li>
92
+
93
+ <li><a href="Rumai/IXP/Struct/StringField.html" title="Rumai::IXP::Struct::StringField">Rumai::IXP::Struct::StringField</a> <em>(class)</em></li>
94
+
95
+ <li><a href="Rumai/IXP/Tattach.html" title="Rumai::IXP::Tattach">Rumai::IXP::Tattach</a> <em>(class)</em></li>
96
+
97
+ <li><a href="Rumai/IXP/Tauth.html" title="Rumai::IXP::Tauth">Rumai::IXP::Tauth</a> <em>(class)</em></li>
98
+
99
+ <li><a href="Rumai/IXP/Tclunk.html" title="Rumai::IXP::Tclunk">Rumai::IXP::Tclunk</a> <em>(class)</em></li>
100
+
101
+ <li><a href="Rumai/IXP/Tcreate.html" title="Rumai::IXP::Tcreate">Rumai::IXP::Tcreate</a> <em>(class)</em></li>
102
+
103
+ <li><a href="Rumai/IXP/Terror.html" title="Rumai::IXP::Terror">Rumai::IXP::Terror</a> <em>(class)</em></li>
104
+
105
+ <li><a href="Rumai/IXP/Tflush.html" title="Rumai::IXP::Tflush">Rumai::IXP::Tflush</a> <em>(class)</em></li>
106
+
107
+ <li><a href="Rumai/IXP/Topen.html" title="Rumai::IXP::Topen">Rumai::IXP::Topen</a> <em>(class)</em></li>
108
+
109
+ <li><a href="Rumai/IXP/Tread.html" title="Rumai::IXP::Tread">Rumai::IXP::Tread</a> <em>(class)</em></li>
110
+
111
+ <li><a href="Rumai/IXP/Tremove.html" title="Rumai::IXP::Tremove">Rumai::IXP::Tremove</a> <em>(class)</em></li>
112
+
113
+ <li><a href="Rumai/IXP/Tstat.html" title="Rumai::IXP::Tstat">Rumai::IXP::Tstat</a> <em>(class)</em></li>
114
+
115
+ <li><a href="Rumai/IXP/Tversion.html" title="Rumai::IXP::Tversion">Rumai::IXP::Tversion</a> <em>(class)</em></li>
116
+
117
+ <li><a href="Rumai/IXP/Twalk.html" title="Rumai::IXP::Twalk">Rumai::IXP::Twalk</a> <em>(class)</em></li>
118
+
119
+ <li><a href="Rumai/IXP/Twrite.html" title="Rumai::IXP::Twrite">Rumai::IXP::Twrite</a> <em>(class)</em></li>
120
+
121
+ <li><a href="Rumai/IXP/Twstat.html" title="Rumai::IXP::Twstat">Rumai::IXP::Twstat</a> <em>(class)</em></li>
122
+
123
+ <li><a href="Rumai/Node.html" title="Rumai::Node">Rumai::Node</a> <em>(class)</em></li>
124
+
125
+ <li><a href="Rumai/View.html" title="Rumai::View">Rumai::View</a> <em>(class)</em></li>
126
+
127
+ <li><a href="Rumai/WidgetImpl.html" title="Rumai::WidgetImpl">Rumai::WidgetImpl</a> <em>(module)</em></li>
128
+
129
+ <li><a href="Rumai/WidgetNode.html" title="Rumai::WidgetNode">Rumai::WidgetNode</a> <em>(class)</em></li>
130
+
131
+ <li><a href="String.html" title="String">String</a> <em>(class)</em></li>
132
+
133
+ <li><a href="StringIO.html" title="StringIO">StringIO</a> <em>(class)</em></li>
134
+
135
+ <li><a href="Time.html" title="Time">Time</a> <em>(class)</em></li>
136
+
137
+ </ul>
138
+ </div>
139
+ </body>
140
+ </html>
data/doc/api/app.js ADDED
@@ -0,0 +1,18 @@
1
+ $(document).ready(function() {
2
+ // Set the title of this page as the index title
3
+ if (parent && parent.document) {
4
+ $('html head title', parent.document).text($('html head title').text());
5
+ }
6
+
7
+ // Setup the view source links
8
+ $(".section.source a.source_link").toggle(
9
+ function() {
10
+ $(this).text('Hide source');
11
+ $(this).parent().next().show();
12
+ },
13
+ function() {
14
+ $(this).text('View source');
15
+ $(this).parent().next().hide();
16
+ }
17
+ );
18
+ });
data/doc/api/index.html CHANGED
@@ -1,24 +1,18 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
5
-
6
- <!--
7
-
8
- RDoc Documentation
9
-
10
- -->
11
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
12
- <head>
13
- <title>RDoc Documentation</title>
14
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
15
- </head>
16
- <frameset rows="20%, 80%">
17
- <frameset cols="25%,35%,45%">
18
- <frame src="fr_file_index.html" title="Files" name="Files" />
19
- <frame src="fr_class_index.html" name="Classes" />
20
- <frame src="fr_method_index.html" name="Methods" />
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
3
+ <html>
4
+ <head>
5
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
6
+ <title>YARD Documentation</title>
7
+ </head>
8
+ <frameset cols="20%,*">
9
+ <frameset rows="50%,50%">
10
+ <frame src="all-namespaces.html" />
11
+ <frame src="all-methods.html" />
21
12
  </frameset>
22
- <frame src="files/lib/rumai_rb.html" name="docwin" />
23
- </frameset>
13
+ <frame name="main" src="readme.html" />
14
+ <noframes>
15
+ <p><a href="readme.html">Click here to go to the title page</a>.</p>
16
+ </noframes>
17
+ </frameset>
24
18
  </html>
data/doc/api/jquery.js ADDED
@@ -0,0 +1,11 @@
1
+ /*
2
+ * jQuery 1.2.6 - New Wave Javascript
3
+ *
4
+ * Copyright (c) 2008 John Resig (jquery.com)
5
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
6
+ * and GPL (GPL-LICENSE.txt) licenses.
7
+ *
8
+ * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
9
+ * $Rev: 5685 $
10
+ */
11
+ eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(H(){J w=1b.4M,3m$=1b.$;J D=1b.4M=1b.$=H(a,b){I 2B D.17.5j(a,b)};J u=/^[^<]*(<(.|\\s)+>)[^>]*$|^#(\\w+)$/,62=/^.[^:#\\[\\.]*$/,12;D.17=D.44={5j:H(d,b){d=d||S;G(d.16){7[0]=d;7.K=1;I 7}G(1j d=="23"){J c=u.2D(d);G(c&&(c[1]||!b)){G(c[1])d=D.4h([c[1]],b);N{J a=S.61(c[3]);G(a){G(a.2v!=c[3])I D().2q(d);I D(a)}d=[]}}N I D(b).2q(d)}N G(D.1D(d))I D(S)[D.17.27?"27":"43"](d);I 7.6Y(D.2d(d))},5w:"1.2.6",8G:H(){I 7.K},K:0,3p:H(a){I a==12?D.2d(7):7[a]},2I:H(b){J a=D(b);a.5n=7;I a},6Y:H(a){7.K=0;2p.44.1p.1w(7,a);I 7},P:H(a,b){I D.P(7,a,b)},5i:H(b){J a=-1;I D.2L(b&&b.5w?b[0]:b,7)},1K:H(c,a,b){J d=c;G(c.1q==56)G(a===12)I 7[0]&&D[b||"1K"](7[0],c);N{d={};d[c]=a}I 7.P(H(i){R(c 1n d)D.1K(b?7.V:7,c,D.1i(7,d[c],b,i,c))})},1g:H(b,a){G((b==\'2h\'||b==\'1Z\')&&3d(a)<0)a=12;I 7.1K(b,a,"2a")},1r:H(b){G(1j b!="49"&&b!=U)I 7.4E().3v((7[0]&&7[0].2z||S).5F(b));J a="";D.P(b||7,H(){D.P(7.3t,H(){G(7.16!=8)a+=7.16!=1?7.76:D.17.1r([7])})});I a},5z:H(b){G(7[0])D(b,7[0].2z).5y().39(7[0]).2l(H(){J a=7;1B(a.1x)a=a.1x;I a}).3v(7);I 7},8Y:H(a){I 7.P(H(){D(7).6Q().5z(a)})},8R:H(a){I 7.P(H(){D(7).5z(a)})},3v:H(){I 7.3W(19,M,Q,H(a){G(7.16==1)7.3U(a)})},6F:H(){I 7.3W(19,M,M,H(a){G(7.16==1)7.39(a,7.1x)})},6E:H(){I 7.3W(19,Q,Q,H(a){7.1d.39(a,7)})},5q:H(){I 7.3W(19,Q,M,H(a){7.1d.39(a,7.2H)})},3l:H(){I 7.5n||D([])},2q:H(b){J c=D.2l(7,H(a){I D.2q(b,a)});I 7.2I(/[^+>] [^+>]/.11(b)||b.1h("..")>-1?D.4r(c):c)},5y:H(e){J f=7.2l(H(){G(D.14.1f&&!D.4n(7)){J a=7.6o(M),5h=S.3h("1v");5h.3U(a);I D.4h([5h.4H])[0]}N I 7.6o(M)});J d=f.2q("*").5c().P(H(){G(7[E]!=12)7[E]=U});G(e===M)7.2q("*").5c().P(H(i){G(7.16==3)I;J c=D.L(7,"3w");R(J a 1n c)R(J b 1n c[a])D.W.1e(d[i],a,c[a][b],c[a][b].L)});I f},1E:H(b){I 7.2I(D.1D(b)&&D.3C(7,H(a,i){I b.1k(a,i)})||D.3g(b,7))},4Y:H(b){G(b.1q==56)G(62.11(b))I 7.2I(D.3g(b,7,M));N b=D.3g(b,7);J a=b.K&&b[b.K-1]!==12&&!b.16;I 7.1E(H(){I a?D.2L(7,b)<0:7!=b})},1e:H(a){I 7.2I(D.4r(D.2R(7.3p(),1j a==\'23\'?D(a):D.2d(a))))},3F:H(a){I!!a&&D.3g(a,7).K>0},7T:H(a){I 7.3F("."+a)},6e:H(b){G(b==12){G(7.K){J c=7[0];G(D.Y(c,"2A")){J e=c.64,63=[],15=c.15,2V=c.O=="2A-2V";G(e<0)I U;R(J i=2V?e:0,2f=2V?e+1:15.K;i<2f;i++){J d=15[i];G(d.2W){b=D.14.1f&&!d.at.2x.an?d.1r:d.2x;G(2V)I b;63.1p(b)}}I 63}N I(7[0].2x||"").1o(/\\r/g,"")}I 12}G(b.1q==4L)b+=\'\';I 7.P(H(){G(7.16!=1)I;G(b.1q==2p&&/5O|5L/.11(7.O))7.4J=(D.2L(7.2x,b)>=0||D.2L(7.34,b)>=0);N G(D.Y(7,"2A")){J a=D.2d(b);D("9R",7).P(H(){7.2W=(D.2L(7.2x,a)>=0||D.2L(7.1r,a)>=0)});G(!a.K)7.64=-1}N 7.2x=b})},2K:H(a){I a==12?(7[0]?7[0].4H:U):7.4E().3v(a)},7b:H(a){I 7.5q(a).21()},79:H(i){I 7.3s(i,i+1)},3s:H(){I 7.2I(2p.44.3s.1w(7,19))},2l:H(b){I 7.2I(D.2l(7,H(a,i){I b.1k(a,i,a)}))},5c:H(){I 7.1e(7.5n)},L:H(d,b){J a=d.1R(".");a[1]=a[1]?"."+a[1]:"";G(b===12){J c=7.5C("9z"+a[1]+"!",[a[0]]);G(c===12&&7.K)c=D.L(7[0],d);I c===12&&a[1]?7.L(a[0]):c}N I 7.1P("9u"+a[1]+"!",[a[0],b]).P(H(){D.L(7,d,b)})},3b:H(a){I 7.P(H(){D.3b(7,a)})},3W:H(g,f,h,d){J e=7.K>1,3x;I 7.P(H(){G(!3x){3x=D.4h(g,7.2z);G(h)3x.9o()}J b=7;G(f&&D.Y(7,"1T")&&D.Y(3x[0],"4F"))b=7.3H("22")[0]||7.3U(7.2z.3h("22"));J c=D([]);D.P(3x,H(){J a=e?D(7).5y(M)[0]:7;G(D.Y(a,"1m"))c=c.1e(a);N{G(a.16==1)c=c.1e(D("1m",a).21());d.1k(b,a)}});c.P(6T)})}};D.17.5j.44=D.17;H 6T(i,a){G(a.4d)D.3Y({1a:a.4d,31:Q,1O:"1m"});N D.5u(a.1r||a.6O||a.4H||"");G(a.1d)a.1d.37(a)}H 1z(){I+2B 8J}D.1l=D.17.1l=H(){J b=19[0]||{},i=1,K=19.K,4x=Q,15;G(b.1q==8I){4x=b;b=19[1]||{};i=2}G(1j b!="49"&&1j b!="H")b={};G(K==i){b=7;--i}R(;i<K;i++)G((15=19[i])!=U)R(J c 1n 15){J a=b[c],2w=15[c];G(b===2w)6M;G(4x&&2w&&1j 2w=="49"&&!2w.16)b[c]=D.1l(4x,a||(2w.K!=U?[]:{}),2w);N G(2w!==12)b[c]=2w}I b};J E="4M"+1z(),6K=0,5r={},6G=/z-?5i|8B-?8A|1y|6B|8v-?1Z/i,3P=S.3P||{};D.1l({8u:H(a){1b.$=3m$;G(a)1b.4M=w;I D},1D:H(a){I!!a&&1j a!="23"&&!a.Y&&a.1q!=2p&&/^[\\s[]?H/.11(a+"")},4n:H(a){I a.1C&&!a.1c||a.2j&&a.2z&&!a.2z.1c},5u:H(a){a=D.3k(a);G(a){J b=S.3H("6w")[0]||S.1C,1m=S.3h("1m");1m.O="1r/4t";G(D.14.1f)1m.1r=a;N 1m.3U(S.5F(a));b.39(1m,b.1x);b.37(1m)}},Y:H(b,a){I b.Y&&b.Y.2r()==a.2r()},1Y:{},L:H(c,d,b){c=c==1b?5r:c;J a=c[E];G(!a)a=c[E]=++6K;G(d&&!D.1Y[a])D.1Y[a]={};G(b!==12)D.1Y[a][d]=b;I d?D.1Y[a][d]:a},3b:H(c,b){c=c==1b?5r:c;J a=c[E];G(b){G(D.1Y[a]){2U D.1Y[a][b];b="";R(b 1n D.1Y[a])1X;G(!b)D.3b(c)}}N{1U{2U c[E]}1V(e){G(c.5l)c.5l(E)}2U D.1Y[a]}},P:H(d,a,c){J e,i=0,K=d.K;G(c){G(K==12){R(e 1n d)G(a.1w(d[e],c)===Q)1X}N R(;i<K;)G(a.1w(d[i++],c)===Q)1X}N{G(K==12){R(e 1n d)G(a.1k(d[e],e,d[e])===Q)1X}N R(J b=d[0];i<K&&a.1k(b,i,b)!==Q;b=d[++i]){}}I d},1i:H(b,a,c,i,d){G(D.1D(a))a=a.1k(b,i);I a&&a.1q==4L&&c=="2a"&&!6G.11(d)?a+"2X":a},1F:{1e:H(c,b){D.P((b||"").1R(/\\s+/),H(i,a){G(c.16==1&&!D.1F.3T(c.1F,a))c.1F+=(c.1F?" ":"")+a})},21:H(c,b){G(c.16==1)c.1F=b!=12?D.3C(c.1F.1R(/\\s+/),H(a){I!D.1F.3T(b,a)}).6s(" "):""},3T:H(b,a){I D.2L(a,(b.1F||b).6r().1R(/\\s+/))>-1}},6q:H(b,c,a){J e={};R(J d 1n c){e[d]=b.V[d];b.V[d]=c[d]}a.1k(b);R(J d 1n c)b.V[d]=e[d]},1g:H(d,e,c){G(e=="2h"||e=="1Z"){J b,3X={30:"5x",5g:"1G",18:"3I"},35=e=="2h"?["5e","6k"]:["5G","6i"];H 5b(){b=e=="2h"?d.8f:d.8c;J a=0,2C=0;D.P(35,H(){a+=3d(D.2a(d,"57"+7,M))||0;2C+=3d(D.2a(d,"2C"+7+"4b",M))||0});b-=29.83(a+2C)}G(D(d).3F(":4j"))5b();N D.6q(d,3X,5b);I 29.2f(0,b)}I D.2a(d,e,c)},2a:H(f,l,k){J e,V=f.V;H 3E(b){G(!D.14.2k)I Q;J a=3P.54(b,U);I!a||a.52("3E")==""}G(l=="1y"&&D.14.1f){e=D.1K(V,"1y");I e==""?"1":e}G(D.14.2G&&l=="18"){J d=V.50;V.50="0 7Y 7W";V.50=d}G(l.1I(/4i/i))l=y;G(!k&&V&&V[l])e=V[l];N G(3P.54){G(l.1I(/4i/i))l="4i";l=l.1o(/([A-Z])/g,"-$1").3y();J c=3P.54(f,U);G(c&&!3E(f))e=c.52(l);N{J g=[],2E=[],a=f,i=0;R(;a&&3E(a);a=a.1d)2E.6h(a);R(;i<2E.K;i++)G(3E(2E[i])){g[i]=2E[i].V.18;2E[i].V.18="3I"}e=l=="18"&&g[2E.K-1]!=U?"2F":(c&&c.52(l))||"";R(i=0;i<g.K;i++)G(g[i]!=U)2E[i].V.18=g[i]}G(l=="1y"&&e=="")e="1"}N G(f.4g){J h=l.1o(/\\-(\\w)/g,H(a,b){I b.2r()});e=f.4g[l]||f.4g[h];G(!/^\\d+(2X)?$/i.11(e)&&/^\\d/.11(e)){J j=V.1A,66=f.65.1A;f.65.1A=f.4g.1A;V.1A=e||0;e=V.aM+"2X";V.1A=j;f.65.1A=66}}I e},4h:H(l,h){J k=[];h=h||S;G(1j h.3h==\'12\')h=h.2z||h[0]&&h[0].2z||S;D.P(l,H(i,d){G(!d)I;G(d.1q==4L)d+=\'\';G(1j d=="23"){d=d.1o(/(<(\\w+)[^>]*?)\\/>/g,H(b,a,c){I c.1I(/^(aK|4f|7E|aG|4T|7A|aB|3n|az|ay|av)$/i)?b:a+"></"+c+">"});J f=D.3k(d).3y(),1v=h.3h("1v");J e=!f.1h("<au")&&[1,"<2A 7w=\'7w\'>","</2A>"]||!f.1h("<ar")&&[1,"<7v>","</7v>"]||f.1I(/^<(aq|22|am|ak|ai)/)&&[1,"<1T>","</1T>"]||!f.1h("<4F")&&[2,"<1T><22>","</22></1T>"]||(!f.1h("<af")||!f.1h("<ad"))&&[3,"<1T><22><4F>","</4F></22></1T>"]||!f.1h("<7E")&&[2,"<1T><22></22><7q>","</7q></1T>"]||D.14.1f&&[1,"1v<1v>","</1v>"]||[0,"",""];1v.4H=e[1]+d+e[2];1B(e[0]--)1v=1v.5T;G(D.14.1f){J g=!f.1h("<1T")&&f.1h("<22")<0?1v.1x&&1v.1x.3t:e[1]=="<1T>"&&f.1h("<22")<0?1v.3t:[];R(J j=g.K-1;j>=0;--j)G(D.Y(g[j],"22")&&!g[j].3t.K)g[j].1d.37(g[j]);G(/^\\s/.11(d))1v.39(h.5F(d.1I(/^\\s*/)[0]),1v.1x)}d=D.2d(1v.3t)}G(d.K===0&&(!D.Y(d,"3V")&&!D.Y(d,"2A")))I;G(d[0]==12||D.Y(d,"3V")||d.15)k.1p(d);N k=D.2R(k,d)});I k},1K:H(d,f,c){G(!d||d.16==3||d.16==8)I 12;J e=!D.4n(d),40=c!==12,1f=D.14.1f;f=e&&D.3X[f]||f;G(d.2j){J g=/5Q|4d|V/.11(f);G(f=="2W"&&D.14.2k)d.1d.64;G(f 1n d&&e&&!g){G(40){G(f=="O"&&D.Y(d,"4T")&&d.1d)7p"O a3 a1\'t 9V 9U";d[f]=c}G(D.Y(d,"3V")&&d.7i(f))I d.7i(f).76;I d[f]}G(1f&&e&&f=="V")I D.1K(d.V,"9T",c);G(40)d.9Q(f,""+c);J h=1f&&e&&g?d.4G(f,2):d.4G(f);I h===U?12:h}G(1f&&f=="1y"){G(40){d.6B=1;d.1E=(d.1E||"").1o(/7f\\([^)]*\\)/,"")+(3r(c)+\'\'=="9L"?"":"7f(1y="+c*7a+")")}I d.1E&&d.1E.1h("1y=")>=0?(3d(d.1E.1I(/1y=([^)]*)/)[1])/7a)+\'\':""}f=f.1o(/-([a-z])/9H,H(a,b){I b.2r()});G(40)d[f]=c;I d[f]},3k:H(a){I(a||"").1o(/^\\s+|\\s+$/g,"")},2d:H(b){J a=[];G(b!=U){J i=b.K;G(i==U||b.1R||b.4I||b.1k)a[0]=b;N 1B(i)a[--i]=b[i]}I a},2L:H(b,a){R(J i=0,K=a.K;i<K;i++)G(a[i]===b)I i;I-1},2R:H(a,b){J i=0,T,2S=a.K;G(D.14.1f){1B(T=b[i++])G(T.16!=8)a[2S++]=T}N 1B(T=b[i++])a[2S++]=T;I a},4r:H(a){J c=[],2o={};1U{R(J i=0,K=a.K;i<K;i++){J b=D.L(a[i]);G(!2o[b]){2o[b]=M;c.1p(a[i])}}}1V(e){c=a}I c},3C:H(c,a,d){J b=[];R(J i=0,K=c.K;i<K;i++)G(!d!=!a(c[i],i))b.1p(c[i]);I b},2l:H(d,a){J c=[];R(J i=0,K=d.K;i<K;i++){J b=a(d[i],i);G(b!=U)c[c.K]=b}I c.7d.1w([],c)}});J v=9B.9A.3y();D.14={5B:(v.1I(/.+(?:9y|9x|9w|9v)[\\/: ]([\\d.]+)/)||[])[1],2k:/75/.11(v),2G:/2G/.11(v),1f:/1f/.11(v)&&!/2G/.11(v),42:/42/.11(v)&&!/(9s|75)/.11(v)};J y=D.14.1f?"7o":"72";D.1l({71:!D.14.1f||S.70=="6Z",3X:{"R":"9n","9k":"1F","4i":y,72:y,7o:y,9h:"9f",9e:"9d",9b:"99"}});D.P({6W:H(a){I a.1d},97:H(a){I D.4S(a,"1d")},95:H(a){I D.3a(a,2,"2H")},91:H(a){I D.3a(a,2,"4l")},8Z:H(a){I D.4S(a,"2H")},8X:H(a){I D.4S(a,"4l")},8W:H(a){I D.5v(a.1d.1x,a)},8V:H(a){I D.5v(a.1x)},6Q:H(a){I D.Y(a,"8U")?a.8T||a.8S.S:D.2d(a.3t)}},H(c,d){D.17[c]=H(b){J a=D.2l(7,d);G(b&&1j b=="23")a=D.3g(b,a);I 7.2I(D.4r(a))}});D.P({6P:"3v",8Q:"6F",39:"6E",8P:"5q",8O:"7b"},H(c,b){D.17[c]=H(){J a=19;I 7.P(H(){R(J i=0,K=a.K;i<K;i++)D(a[i])[b](7)})}});D.P({8N:H(a){D.1K(7,a,"");G(7.16==1)7.5l(a)},8M:H(a){D.1F.1e(7,a)},8L:H(a){D.1F.21(7,a)},8K:H(a){D.1F[D.1F.3T(7,a)?"21":"1e"](7,a)},21:H(a){G(!a||D.1E(a,[7]).r.K){D("*",7).1e(7).P(H(){D.W.21(7);D.3b(7)});G(7.1d)7.1d.37(7)}},4E:H(){D(">*",7).21();1B(7.1x)7.37(7.1x)}},H(a,b){D.17[a]=H(){I 7.P(b,19)}});D.P(["6N","4b"],H(i,c){J b=c.3y();D.17[b]=H(a){I 7[0]==1b?D.14.2G&&S.1c["5t"+c]||D.14.2k&&1b["5s"+c]||S.70=="6Z"&&S.1C["5t"+c]||S.1c["5t"+c]:7[0]==S?29.2f(29.2f(S.1c["4y"+c],S.1C["4y"+c]),29.2f(S.1c["2i"+c],S.1C["2i"+c])):a==12?(7.K?D.1g(7[0],b):U):7.1g(b,a.1q==56?a:a+"2X")}});H 25(a,b){I a[0]&&3r(D.2a(a[0],b,M),10)||0}J C=D.14.2k&&3r(D.14.5B)<8H?"(?:[\\\\w*3m-]|\\\\\\\\.)":"(?:[\\\\w\\8F-\\8E*3m-]|\\\\\\\\.)",6L=2B 4v("^>\\\\s*("+C+"+)"),6J=2B 4v("^("+C+"+)(#)("+C+"+)"),6I=2B 4v("^([#.]?)("+C+"*)");D.1l({6H:{"":H(a,i,m){I m[2]=="*"||D.Y(a,m[2])},"#":H(a,i,m){I a.4G("2v")==m[2]},":":{8D:H(a,i,m){I i<m[3]-0},8C:H(a,i,m){I i>m[3]-0},3a:H(a,i,m){I m[3]-0==i},79:H(a,i,m){I m[3]-0==i},3o:H(a,i){I i==0},3S:H(a,i,m,r){I i==r.K-1},6D:H(a,i){I i%2==0},6C:H(a,i){I i%2},"3o-4u":H(a){I a.1d.3H("*")[0]==a},"3S-4u":H(a){I D.3a(a.1d.5T,1,"4l")==a},"8z-4u":H(a){I!D.3a(a.1d.5T,2,"4l")},6W:H(a){I a.1x},4E:H(a){I!a.1x},8y:H(a,i,m){I(a.6O||a.8x||D(a).1r()||"").1h(m[3])>=0},4j:H(a){I"1G"!=a.O&&D.1g(a,"18")!="2F"&&D.1g(a,"5g")!="1G"},1G:H(a){I"1G"==a.O||D.1g(a,"18")=="2F"||D.1g(a,"5g")=="1G"},8w:H(a){I!a.3R},3R:H(a){I a.3R},4J:H(a){I a.4J},2W:H(a){I a.2W||D.1K(a,"2W")},1r:H(a){I"1r"==a.O},5O:H(a){I"5O"==a.O},5L:H(a){I"5L"==a.O},5p:H(a){I"5p"==a.O},3Q:H(a){I"3Q"==a.O},5o:H(a){I"5o"==a.O},6A:H(a){I"6A"==a.O},6z:H(a){I"6z"==a.O},2s:H(a){I"2s"==a.O||D.Y(a,"2s")},4T:H(a){I/4T|2A|6y|2s/i.11(a.Y)},3T:H(a,i,m){I D.2q(m[3],a).K},8t:H(a){I/h\\d/i.11(a.Y)},8s:H(a){I D.3C(D.3O,H(b){I a==b.T}).K}}},6x:[/^(\\[) *@?([\\w-]+) *([!*$^~=]*) *(\'?"?)(.*?)\\4 *\\]/,/^(:)([\\w-]+)\\("?\'?(.*?(\\(.*?\\))?[^(]*?)"?\'?\\)/,2B 4v("^([:.#]*)("+C+"+)")],3g:H(a,c,b){J d,1t=[];1B(a&&a!=d){d=a;J f=D.1E(a,c,b);a=f.t.1o(/^\\s*,\\s*/,"");1t=b?c=f.r:D.2R(1t,f.r)}I 1t},2q:H(t,o){G(1j t!="23")I[t];G(o&&o.16!=1&&o.16!=9)I[];o=o||S;J d=[o],2o=[],3S,Y;1B(t&&3S!=t){J r=[];3S=t;t=D.3k(t);J l=Q,3j=6L,m=3j.2D(t);G(m){Y=m[1].2r();R(J i=0;d[i];i++)R(J c=d[i].1x;c;c=c.2H)G(c.16==1&&(Y=="*"||c.Y.2r()==Y))r.1p(c);d=r;t=t.1o(3j,"");G(t.1h(" ")==0)6M;l=M}N{3j=/^([>+~])\\s*(\\w*)/i;G((m=3j.2D(t))!=U){r=[];J k={};Y=m[2].2r();m=m[1];R(J j=0,3i=d.K;j<3i;j++){J n=m=="~"||m=="+"?d[j].2H:d[j].1x;R(;n;n=n.2H)G(n.16==1){J g=D.L(n);G(m=="~"&&k[g])1X;G(!Y||n.Y.2r()==Y){G(m=="~")k[g]=M;r.1p(n)}G(m=="+")1X}}d=r;t=D.3k(t.1o(3j,""));l=M}}G(t&&!l){G(!t.1h(",")){G(o==d[0])d.4s();2o=D.2R(2o,d);r=d=[o];t=" "+t.6v(1,t.K)}N{J h=6J;J m=h.2D(t);G(m){m=[0,m[2],m[3],m[1]]}N{h=6I;m=h.2D(t)}m[2]=m[2].1o(/\\\\/g,"");J f=d[d.K-1];G(m[1]=="#"&&f&&f.61&&!D.4n(f)){J p=f.61(m[2]);G((D.14.1f||D.14.2G)&&p&&1j p.2v=="23"&&p.2v!=m[2])p=D(\'[@2v="\'+m[2]+\'"]\',f)[0];d=r=p&&(!m[3]||D.Y(p,m[3]))?[p]:[]}N{R(J i=0;d[i];i++){J a=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];G(a=="*"&&d[i].Y.3y()=="49")a="3n";r=D.2R(r,d[i].3H(a))}G(m[1]==".")r=D.5m(r,m[2]);G(m[1]=="#"){J e=[];R(J i=0;r[i];i++)G(r[i].4G("2v")==m[2]){e=[r[i]];1X}r=e}d=r}t=t.1o(h,"")}}G(t){J b=D.1E(t,r);d=r=b.r;t=D.3k(b.t)}}G(t)d=[];G(d&&o==d[0])d.4s();2o=D.2R(2o,d);I 2o},5m:H(r,m,a){m=" "+m+" ";J c=[];R(J i=0;r[i];i++){J b=(" "+r[i].1F+" ").1h(m)>=0;G(!a&&b||a&&!b)c.1p(r[i])}I c},1E:H(t,r,h){J d;1B(t&&t!=d){d=t;J p=D.6x,m;R(J i=0;p[i];i++){m=p[i].2D(t);G(m){t=t.8r(m[0].K);m[2]=m[2].1o(/\\\\/g,"");1X}}G(!m)1X;G(m[1]==":"&&m[2]=="4Y")r=62.11(m[3])?D.1E(m[3],r,M).r:D(r).4Y(m[3]);N G(m[1]==".")r=D.5m(r,m[2],h);N G(m[1]=="["){J g=[],O=m[3];R(J i=0,3i=r.K;i<3i;i++){J a=r[i],z=a[D.3X[m[2]]||m[2]];G(z==U||/5Q|4d|2W/.11(m[2]))z=D.1K(a,m[2])||\'\';G((O==""&&!!z||O=="="&&z==m[5]||O=="!="&&z!=m[5]||O=="^="&&z&&!z.1h(m[5])||O=="$="&&z.6v(z.K-m[5].K)==m[5]||(O=="*="||O=="~=")&&z.1h(m[5])>=0)^h)g.1p(a)}r=g}N G(m[1]==":"&&m[2]=="3a-4u"){J e={},g=[],11=/(-?)(\\d*)n((?:\\+|-)?\\d*)/.2D(m[3]=="6D"&&"2n"||m[3]=="6C"&&"2n+1"||!/\\D/.11(m[3])&&"8q+"+m[3]||m[3]),3o=(11[1]+(11[2]||1))-0,d=11[3]-0;R(J i=0,3i=r.K;i<3i;i++){J j=r[i],1d=j.1d,2v=D.L(1d);G(!e[2v]){J c=1;R(J n=1d.1x;n;n=n.2H)G(n.16==1)n.4q=c++;e[2v]=M}J b=Q;G(3o==0){G(j.4q==d)b=M}N G((j.4q-d)%3o==0&&(j.4q-d)/3o>=0)b=M;G(b^h)g.1p(j)}r=g}N{J f=D.6H[m[1]];G(1j f=="49")f=f[m[2]];G(1j f=="23")f=6u("Q||H(a,i){I "+f+";}");r=D.3C(r,H(a,i){I f(a,i,m,r)},h)}}I{r:r,t:t}},4S:H(b,c){J a=[],1t=b[c];1B(1t&&1t!=S){G(1t.16==1)a.1p(1t);1t=1t[c]}I a},3a:H(a,e,c,b){e=e||1;J d=0;R(;a;a=a[c])G(a.16==1&&++d==e)1X;I a},5v:H(n,a){J r=[];R(;n;n=n.2H){G(n.16==1&&n!=a)r.1p(n)}I r}});D.W={1e:H(f,i,g,e){G(f.16==3||f.16==8)I;G(D.14.1f&&f.4I)f=1b;G(!g.24)g.24=7.24++;G(e!=12){J h=g;g=7.3M(h,H(){I h.1w(7,19)});g.L=e}J j=D.L(f,"3w")||D.L(f,"3w",{}),1H=D.L(f,"1H")||D.L(f,"1H",H(){G(1j D!="12"&&!D.W.5k)I D.W.1H.1w(19.3L.T,19)});1H.T=f;D.P(i.1R(/\\s+/),H(c,b){J a=b.1R(".");b=a[0];g.O=a[1];J d=j[b];G(!d){d=j[b]={};G(!D.W.2t[b]||D.W.2t[b].4p.1k(f)===Q){G(f.3K)f.3K(b,1H,Q);N G(f.6t)f.6t("4o"+b,1H)}}d[g.24]=g;D.W.26[b]=M});f=U},24:1,26:{},21:H(e,h,f){G(e.16==3||e.16==8)I;J i=D.L(e,"3w"),1L,5i;G(i){G(h==12||(1j h=="23"&&h.8p(0)=="."))R(J g 1n i)7.21(e,g+(h||""));N{G(h.O){f=h.2y;h=h.O}D.P(h.1R(/\\s+/),H(b,a){J c=a.1R(".");a=c[0];G(i[a]){G(f)2U i[a][f.24];N R(f 1n i[a])G(!c[1]||i[a][f].O==c[1])2U i[a][f];R(1L 1n i[a])1X;G(!1L){G(!D.W.2t[a]||D.W.2t[a].4A.1k(e)===Q){G(e.6p)e.6p(a,D.L(e,"1H"),Q);N G(e.6n)e.6n("4o"+a,D.L(e,"1H"))}1L=U;2U i[a]}}})}R(1L 1n i)1X;G(!1L){J d=D.L(e,"1H");G(d)d.T=U;D.3b(e,"3w");D.3b(e,"1H")}}},1P:H(h,c,f,g,i){c=D.2d(c);G(h.1h("!")>=0){h=h.3s(0,-1);J a=M}G(!f){G(7.26[h])D("*").1e([1b,S]).1P(h,c)}N{G(f.16==3||f.16==8)I 12;J b,1L,17=D.1D(f[h]||U),W=!c[0]||!c[0].32;G(W){c.6h({O:h,2J:f,32:H(){},3J:H(){},4C:1z()});c[0][E]=M}c[0].O=h;G(a)c[0].6m=M;J d=D.L(f,"1H");G(d)b=d.1w(f,c);G((!17||(D.Y(f,\'a\')&&h=="4V"))&&f["4o"+h]&&f["4o"+h].1w(f,c)===Q)b=Q;G(W)c.4s();G(i&&D.1D(i)){1L=i.1w(f,b==U?c:c.7d(b));G(1L!==12)b=1L}G(17&&g!==Q&&b!==Q&&!(D.Y(f,\'a\')&&h=="4V")){7.5k=M;1U{f[h]()}1V(e){}}7.5k=Q}I b},1H:H(b){J a,1L,38,5f,4m;b=19[0]=D.W.6l(b||1b.W);38=b.O.1R(".");b.O=38[0];38=38[1];5f=!38&&!b.6m;4m=(D.L(7,"3w")||{})[b.O];R(J j 1n 4m){J c=4m[j];G(5f||c.O==38){b.2y=c;b.L=c.L;1L=c.1w(7,19);G(a!==Q)a=1L;G(1L===Q){b.32();b.3J()}}}I a},6l:H(b){G(b[E]==M)I b;J d=b;b={8o:d};J c="8n 8m 8l 8k 2s 8j 47 5d 6j 5E 8i L 8h 8g 4K 2y 5a 59 8e 8b 58 6f 8a 88 4k 87 86 84 6d 2J 4C 6c O 82 81 35".1R(" ");R(J i=c.K;i;i--)b[c[i]]=d[c[i]];b[E]=M;b.32=H(){G(d.32)d.32();d.80=Q};b.3J=H(){G(d.3J)d.3J();d.7Z=M};b.4C=b.4C||1z();G(!b.2J)b.2J=b.6d||S;G(b.2J.16==3)b.2J=b.2J.1d;G(!b.4k&&b.4K)b.4k=b.4K==b.2J?b.6c:b.4K;G(b.58==U&&b.5d!=U){J a=S.1C,1c=S.1c;b.58=b.5d+(a&&a.2e||1c&&1c.2e||0)-(a.6b||0);b.6f=b.6j+(a&&a.2c||1c&&1c.2c||0)-(a.6a||0)}G(!b.35&&((b.47||b.47===0)?b.47:b.5a))b.35=b.47||b.5a;G(!b.59&&b.5E)b.59=b.5E;G(!b.35&&b.2s)b.35=(b.2s&1?1:(b.2s&2?3:(b.2s&4?2:0)));I b},3M:H(a,b){b.24=a.24=a.24||b.24||7.24++;I b},2t:{27:{4p:H(){55();I},4A:H(){I}},3D:{4p:H(){G(D.14.1f)I Q;D(7).2O("53",D.W.2t.3D.2y);I M},4A:H(){G(D.14.1f)I Q;D(7).4e("53",D.W.2t.3D.2y);I M},2y:H(a){G(F(a,7))I M;a.O="3D";I D.W.1H.1w(7,19)}},3N:{4p:H(){G(D.14.1f)I Q;D(7).2O("51",D.W.2t.3N.2y);I M},4A:H(){G(D.14.1f)I Q;D(7).4e("51",D.W.2t.3N.2y);I M},2y:H(a){G(F(a,7))I M;a.O="3N";I D.W.1H.1w(7,19)}}}};D.17.1l({2O:H(c,a,b){I c=="4X"?7.2V(c,a,b):7.P(H(){D.W.1e(7,c,b||a,b&&a)})},2V:H(d,b,c){J e=D.W.3M(c||b,H(a){D(7).4e(a,e);I(c||b).1w(7,19)});I 7.P(H(){D.W.1e(7,d,e,c&&b)})},4e:H(a,b){I 7.P(H(){D.W.21(7,a,b)})},1P:H(c,a,b){I 7.P(H(){D.W.1P(c,a,7,M,b)})},5C:H(c,a,b){I 7[0]&&D.W.1P(c,a,7[0],Q,b)},2m:H(b){J c=19,i=1;1B(i<c.K)D.W.3M(b,c[i++]);I 7.4V(D.W.3M(b,H(a){7.4Z=(7.4Z||0)%i;a.32();I c[7.4Z++].1w(7,19)||Q}))},7X:H(a,b){I 7.2O(\'3D\',a).2O(\'3N\',b)},27:H(a){55();G(D.2Q)a.1k(S,D);N D.3A.1p(H(){I a.1k(7,D)});I 7}});D.1l({2Q:Q,3A:[],27:H(){G(!D.2Q){D.2Q=M;G(D.3A){D.P(D.3A,H(){7.1k(S)});D.3A=U}D(S).5C("27")}}});J x=Q;H 55(){G(x)I;x=M;G(S.3K&&!D.14.2G)S.3K("69",D.27,Q);G(D.14.1f&&1b==1S)(H(){G(D.2Q)I;1U{S.1C.7V("1A")}1V(3e){3B(19.3L,0);I}D.27()})();G(D.14.2G)S.3K("69",H(){G(D.2Q)I;R(J i=0;i<S.4W.K;i++)G(S.4W[i].3R){3B(19.3L,0);I}D.27()},Q);G(D.14.2k){J a;(H(){G(D.2Q)I;G(S.3f!="68"&&S.3f!="1J"){3B(19.3L,0);I}G(a===12)a=D("V, 7A[7U=7S]").K;G(S.4W.K!=a){3B(19.3L,0);I}D.27()})()}D.W.1e(1b,"43",D.27)}D.P(("7R,7Q,43,85,4y,4X,4V,7P,"+"7O,7N,89,53,51,7M,2A,"+"5o,7L,7K,8d,3e").1R(","),H(i,b){D.17[b]=H(a){I a?7.2O(b,a):7.1P(b)}});J F=H(a,c){J b=a.4k;1B(b&&b!=c)1U{b=b.1d}1V(3e){b=c}I b==c};D(1b).2O("4X",H(){D("*").1e(S).4e()});D.17.1l({67:D.17.43,43:H(g,d,c){G(1j g!=\'23\')I 7.67(g);J e=g.1h(" ");G(e>=0){J i=g.3s(e,g.K);g=g.3s(0,e)}c=c||H(){};J f="2P";G(d)G(D.1D(d)){c=d;d=U}N{d=D.3n(d);f="6g"}J h=7;D.3Y({1a:g,O:f,1O:"2K",L:d,1J:H(a,b){G(b=="1W"||b=="7J")h.2K(i?D("<1v/>").3v(a.4U.1o(/<1m(.|\\s)*?\\/1m>/g,"")).2q(i):a.4U);h.P(c,[a.4U,b,a])}});I 7},aL:H(){I D.3n(7.7I())},7I:H(){I 7.2l(H(){I D.Y(7,"3V")?D.2d(7.aH):7}).1E(H(){I 7.34&&!7.3R&&(7.4J||/2A|6y/i.11(7.Y)||/1r|1G|3Q/i.11(7.O))}).2l(H(i,c){J b=D(7).6e();I b==U?U:b.1q==2p?D.2l(b,H(a,i){I{34:c.34,2x:a}}):{34:c.34,2x:b}}).3p()}});D.P("7H,7G,7F,7D,7C,7B".1R(","),H(i,o){D.17[o]=H(f){I 7.2O(o,f)}});J B=1z();D.1l({3p:H(d,b,a,c){G(D.1D(b)){a=b;b=U}I D.3Y({O:"2P",1a:d,L:b,1W:a,1O:c})},aE:H(b,a){I D.3p(b,U,a,"1m")},aD:H(c,b,a){I D.3p(c,b,a,"3z")},aC:H(d,b,a,c){G(D.1D(b)){a=b;b={}}I D.3Y({O:"6g",1a:d,L:b,1W:a,1O:c})},aA:H(a){D.1l(D.60,a)},60:{1a:5Z.5Q,26:M,O:"2P",2T:0,7z:"4R/x-ax-3V-aw",7x:M,31:M,L:U,5Y:U,3Q:U,4Q:{2N:"4R/2N, 1r/2N",2K:"1r/2K",1m:"1r/4t, 4R/4t",3z:"4R/3z, 1r/4t",1r:"1r/as",4w:"*/*"}},4z:{},3Y:H(s){s=D.1l(M,s,D.1l(M,{},D.60,s));J g,2Z=/=\\?(&|$)/g,1u,L,O=s.O.2r();G(s.L&&s.7x&&1j s.L!="23")s.L=D.3n(s.L);G(s.1O=="4P"){G(O=="2P"){G(!s.1a.1I(2Z))s.1a+=(s.1a.1I(/\\?/)?"&":"?")+(s.4P||"7u")+"=?"}N G(!s.L||!s.L.1I(2Z))s.L=(s.L?s.L+"&":"")+(s.4P||"7u")+"=?";s.1O="3z"}G(s.1O=="3z"&&(s.L&&s.L.1I(2Z)||s.1a.1I(2Z))){g="4P"+B++;G(s.L)s.L=(s.L+"").1o(2Z,"="+g+"$1");s.1a=s.1a.1o(2Z,"="+g+"$1");s.1O="1m";1b[g]=H(a){L=a;1W();1J();1b[g]=12;1U{2U 1b[g]}1V(e){}G(i)i.37(h)}}G(s.1O=="1m"&&s.1Y==U)s.1Y=Q;G(s.1Y===Q&&O=="2P"){J j=1z();J k=s.1a.1o(/(\\?|&)3m=.*?(&|$)/,"$ap="+j+"$2");s.1a=k+((k==s.1a)?(s.1a.1I(/\\?/)?"&":"?")+"3m="+j:"")}G(s.L&&O=="2P"){s.1a+=(s.1a.1I(/\\?/)?"&":"?")+s.L;s.L=U}G(s.26&&!D.4O++)D.W.1P("7H");J n=/^(?:\\w+:)?\\/\\/([^\\/?#]+)/;G(s.1O=="1m"&&O=="2P"&&n.11(s.1a)&&n.2D(s.1a)[1]!=5Z.al){J i=S.3H("6w")[0];J h=S.3h("1m");h.4d=s.1a;G(s.7t)h.aj=s.7t;G(!g){J l=Q;h.ah=h.ag=H(){G(!l&&(!7.3f||7.3f=="68"||7.3f=="1J")){l=M;1W();1J();i.37(h)}}}i.3U(h);I 12}J m=Q;J c=1b.7s?2B 7s("ae.ac"):2B 7r();G(s.5Y)c.6R(O,s.1a,s.31,s.5Y,s.3Q);N c.6R(O,s.1a,s.31);1U{G(s.L)c.4B("ab-aa",s.7z);G(s.5S)c.4B("a9-5R-a8",D.4z[s.1a]||"a7, a6 a5 a4 5N:5N:5N a2");c.4B("X-9Z-9Y","7r");c.4B("9W",s.1O&&s.4Q[s.1O]?s.4Q[s.1O]+", */*":s.4Q.4w)}1V(e){}G(s.7m&&s.7m(c,s)===Q){s.26&&D.4O--;c.7l();I Q}G(s.26)D.W.1P("7B",[c,s]);J d=H(a){G(!m&&c&&(c.3f==4||a=="2T")){m=M;G(f){7k(f);f=U}1u=a=="2T"&&"2T"||!D.7j(c)&&"3e"||s.5S&&D.7h(c,s.1a)&&"7J"||"1W";G(1u=="1W"){1U{L=D.6X(c,s.1O,s.9S)}1V(e){1u="5J"}}G(1u=="1W"){J b;1U{b=c.5I("7g-5R")}1V(e){}G(s.5S&&b)D.4z[s.1a]=b;G(!g)1W()}N D.5H(s,c,1u);1J();G(s.31)c=U}};G(s.31){J f=4I(d,13);G(s.2T>0)3B(H(){G(c){c.7l();G(!m)d("2T")}},s.2T)}1U{c.9P(s.L)}1V(e){D.5H(s,c,U,e)}G(!s.31)d();H 1W(){G(s.1W)s.1W(L,1u);G(s.26)D.W.1P("7C",[c,s])}H 1J(){G(s.1J)s.1J(c,1u);G(s.26)D.W.1P("7F",[c,s]);G(s.26&&!--D.4O)D.W.1P("7G")}I c},5H:H(s,a,b,e){G(s.3e)s.3e(a,b,e);G(s.26)D.W.1P("7D",[a,s,e])},4O:0,7j:H(a){1U{I!a.1u&&5Z.9O=="5p:"||(a.1u>=7e&&a.1u<9N)||a.1u==7c||a.1u==9K||D.14.2k&&a.1u==12}1V(e){}I Q},7h:H(a,c){1U{J b=a.5I("7g-5R");I a.1u==7c||b==D.4z[c]||D.14.2k&&a.1u==12}1V(e){}I Q},6X:H(a,c,b){J d=a.5I("9J-O"),2N=c=="2N"||!c&&d&&d.1h("2N")>=0,L=2N?a.9I:a.4U;G(2N&&L.1C.2j=="5J")7p"5J";G(b)L=b(L,c);G(c=="1m")D.5u(L);G(c=="3z")L=6u("("+L+")");I L},3n:H(a){J s=[];G(a.1q==2p||a.5w)D.P(a,H(){s.1p(3u(7.34)+"="+3u(7.2x))});N R(J j 1n a)G(a[j]&&a[j].1q==2p)D.P(a[j],H(){s.1p(3u(j)+"="+3u(7))});N s.1p(3u(j)+"="+3u(D.1D(a[j])?a[j]():a[j]));I s.6s("&").1o(/%20/g,"+")}});D.17.1l({1N:H(c,b){I c?7.2g({1Z:"1N",2h:"1N",1y:"1N"},c,b):7.1E(":1G").P(H(){7.V.18=7.5D||"";G(D.1g(7,"18")=="2F"){J a=D("<"+7.2j+" />").6P("1c");7.V.18=a.1g("18");G(7.V.18=="2F")7.V.18="3I";a.21()}}).3l()},1M:H(b,a){I b?7.2g({1Z:"1M",2h:"1M",1y:"1M"},b,a):7.1E(":4j").P(H(){7.5D=7.5D||D.1g(7,"18");7.V.18="2F"}).3l()},78:D.17.2m,2m:H(a,b){I D.1D(a)&&D.1D(b)?7.78.1w(7,19):a?7.2g({1Z:"2m",2h:"2m",1y:"2m"},a,b):7.P(H(){D(7)[D(7).3F(":1G")?"1N":"1M"]()})},9G:H(b,a){I 7.2g({1Z:"1N"},b,a)},9F:H(b,a){I 7.2g({1Z:"1M"},b,a)},9E:H(b,a){I 7.2g({1Z:"2m"},b,a)},9D:H(b,a){I 7.2g({1y:"1N"},b,a)},9M:H(b,a){I 7.2g({1y:"1M"},b,a)},9C:H(c,a,b){I 7.2g({1y:a},c,b)},2g:H(k,j,i,g){J h=D.77(j,i,g);I 7[h.36===Q?"P":"36"](H(){G(7.16!=1)I Q;J f=D.1l({},h),p,1G=D(7).3F(":1G"),46=7;R(p 1n k){G(k[p]=="1M"&&1G||k[p]=="1N"&&!1G)I f.1J.1k(7);G(p=="1Z"||p=="2h"){f.18=D.1g(7,"18");f.33=7.V.33}}G(f.33!=U)7.V.33="1G";f.45=D.1l({},k);D.P(k,H(c,a){J e=2B D.28(46,f,c);G(/2m|1N|1M/.11(a))e[a=="2m"?1G?"1N":"1M":a](k);N{J b=a.6r().1I(/^([+-]=)?([\\d+-.]+)(.*)$/),2b=e.1t(M)||0;G(b){J d=3d(b[2]),2M=b[3]||"2X";G(2M!="2X"){46.V[c]=(d||1)+2M;2b=((d||1)/e.1t(M))*2b;46.V[c]=2b+2M}G(b[1])d=((b[1]=="-="?-1:1)*d)+2b;e.3G(2b,d,2M)}N e.3G(2b,a,"")}});I M})},36:H(a,b){G(D.1D(a)||(a&&a.1q==2p)){b=a;a="28"}G(!a||(1j a=="23"&&!b))I A(7[0],a);I 7.P(H(){G(b.1q==2p)A(7,a,b);N{A(7,a).1p(b);G(A(7,a).K==1)b.1k(7)}})},9X:H(b,c){J a=D.3O;G(b)7.36([]);7.P(H(){R(J i=a.K-1;i>=0;i--)G(a[i].T==7){G(c)a[i](M);a.7n(i,1)}});G(!c)7.5A();I 7}});J A=H(b,c,a){G(b){c=c||"28";J q=D.L(b,c+"36");G(!q||a)q=D.L(b,c+"36",D.2d(a))}I q};D.17.5A=H(a){a=a||"28";I 7.P(H(){J q=A(7,a);q.4s();G(q.K)q[0].1k(7)})};D.1l({77:H(b,a,c){J d=b&&b.1q==a0?b:{1J:c||!c&&a||D.1D(b)&&b,2u:b,41:c&&a||a&&a.1q!=9t&&a};d.2u=(d.2u&&d.2u.1q==4L?d.2u:D.28.5K[d.2u])||D.28.5K.74;d.5M=d.1J;d.1J=H(){G(d.36!==Q)D(7).5A();G(D.1D(d.5M))d.5M.1k(7)};I d},41:{73:H(p,n,b,a){I b+a*p},5P:H(p,n,b,a){I((-29.9r(p*29.9q)/2)+0.5)*a+b}},3O:[],48:U,28:H(b,c,a){7.15=c;7.T=b;7.1i=a;G(!c.3Z)c.3Z={}}});D.28.44={4D:H(){G(7.15.2Y)7.15.2Y.1k(7.T,7.1z,7);(D.28.2Y[7.1i]||D.28.2Y.4w)(7);G(7.1i=="1Z"||7.1i=="2h")7.T.V.18="3I"},1t:H(a){G(7.T[7.1i]!=U&&7.T.V[7.1i]==U)I 7.T[7.1i];J r=3d(D.1g(7.T,7.1i,a));I r&&r>-9p?r:3d(D.2a(7.T,7.1i))||0},3G:H(c,b,d){7.5V=1z();7.2b=c;7.3l=b;7.2M=d||7.2M||"2X";7.1z=7.2b;7.2S=7.4N=0;7.4D();J e=7;H t(a){I e.2Y(a)}t.T=7.T;D.3O.1p(t);G(D.48==U){D.48=4I(H(){J a=D.3O;R(J i=0;i<a.K;i++)G(!a[i]())a.7n(i--,1);G(!a.K){7k(D.48);D.48=U}},13)}},1N:H(){7.15.3Z[7.1i]=D.1K(7.T.V,7.1i);7.15.1N=M;7.3G(0,7.1t());G(7.1i=="2h"||7.1i=="1Z")7.T.V[7.1i]="9m";D(7.T).1N()},1M:H(){7.15.3Z[7.1i]=D.1K(7.T.V,7.1i);7.15.1M=M;7.3G(7.1t(),0)},2Y:H(a){J t=1z();G(a||t>7.15.2u+7.5V){7.1z=7.3l;7.2S=7.4N=1;7.4D();7.15.45[7.1i]=M;J b=M;R(J i 1n 7.15.45)G(7.15.45[i]!==M)b=Q;G(b){G(7.15.18!=U){7.T.V.33=7.15.33;7.T.V.18=7.15.18;G(D.1g(7.T,"18")=="2F")7.T.V.18="3I"}G(7.15.1M)7.T.V.18="2F";G(7.15.1M||7.15.1N)R(J p 1n 7.15.45)D.1K(7.T.V,p,7.15.3Z[p])}G(b)7.15.1J.1k(7.T);I Q}N{J n=t-7.5V;7.4N=n/7.15.2u;7.2S=D.41[7.15.41||(D.41.5P?"5P":"73")](7.4N,n,0,1,7.15.2u);7.1z=7.2b+((7.3l-7.2b)*7.2S);7.4D()}I M}};D.1l(D.28,{5K:{9l:9j,9i:7e,74:9g},2Y:{2e:H(a){a.T.2e=a.1z},2c:H(a){a.T.2c=a.1z},1y:H(a){D.1K(a.T.V,"1y",a.1z)},4w:H(a){a.T.V[a.1i]=a.1z+a.2M}}});D.17.2i=H(){J b=0,1S=0,T=7[0],3q;G(T)ao(D.14){J d=T.1d,4a=T,1s=T.1s,1Q=T.2z,5U=2k&&3r(5B)<9c&&!/9a/i.11(v),1g=D.2a,3c=1g(T,"30")=="3c";G(T.7y){J c=T.7y();1e(c.1A+29.2f(1Q.1C.2e,1Q.1c.2e),c.1S+29.2f(1Q.1C.2c,1Q.1c.2c));1e(-1Q.1C.6b,-1Q.1C.6a)}N{1e(T.5X,T.5W);1B(1s){1e(1s.5X,1s.5W);G(42&&!/^t(98|d|h)$/i.11(1s.2j)||2k&&!5U)2C(1s);G(!3c&&1g(1s,"30")=="3c")3c=M;4a=/^1c$/i.11(1s.2j)?4a:1s;1s=1s.1s}1B(d&&d.2j&&!/^1c|2K$/i.11(d.2j)){G(!/^96|1T.*$/i.11(1g(d,"18")))1e(-d.2e,-d.2c);G(42&&1g(d,"33")!="4j")2C(d);d=d.1d}G((5U&&(3c||1g(4a,"30")=="5x"))||(42&&1g(4a,"30")!="5x"))1e(-1Q.1c.5X,-1Q.1c.5W);G(3c)1e(29.2f(1Q.1C.2e,1Q.1c.2e),29.2f(1Q.1C.2c,1Q.1c.2c))}3q={1S:1S,1A:b}}H 2C(a){1e(D.2a(a,"6V",M),D.2a(a,"6U",M))}H 1e(l,t){b+=3r(l,10)||0;1S+=3r(t,10)||0}I 3q};D.17.1l({30:H(){J a=0,1S=0,3q;G(7[0]){J b=7.1s(),2i=7.2i(),4c=/^1c|2K$/i.11(b[0].2j)?{1S:0,1A:0}:b.2i();2i.1S-=25(7,\'94\');2i.1A-=25(7,\'aF\');4c.1S+=25(b,\'6U\');4c.1A+=25(b,\'6V\');3q={1S:2i.1S-4c.1S,1A:2i.1A-4c.1A}}I 3q},1s:H(){J a=7[0].1s;1B(a&&(!/^1c|2K$/i.11(a.2j)&&D.1g(a,\'30\')==\'93\'))a=a.1s;I D(a)}});D.P([\'5e\',\'5G\'],H(i,b){J c=\'4y\'+b;D.17[c]=H(a){G(!7[0])I;I a!=12?7.P(H(){7==1b||7==S?1b.92(!i?a:D(1b).2e(),i?a:D(1b).2c()):7[c]=a}):7[0]==1b||7[0]==S?46[i?\'aI\':\'aJ\']||D.71&&S.1C[c]||S.1c[c]:7[0][c]}});D.P(["6N","4b"],H(i,b){J c=i?"5e":"5G",4f=i?"6k":"6i";D.17["5s"+b]=H(){I 7[b.3y()]()+25(7,"57"+c)+25(7,"57"+4f)};D.17["90"+b]=H(a){I 7["5s"+b]()+25(7,"2C"+c+"4b")+25(7,"2C"+4f+"4b")+(a?25(7,"6S"+c)+25(7,"6S"+4f):0)}})})();',62,669,'|||||||this|||||||||||||||||||||||||||||||||||if|function|return|var|length|data|true|else|type|each|false|for|document|elem|null|style|event||nodeName|||test|undefined||browser|options|nodeType|fn|display|arguments|url|window|body|parentNode|add|msie|css|indexOf|prop|typeof|call|extend|script|in|replace|push|constructor|text|offsetParent|cur|status|div|apply|firstChild|opacity|now|left|while|documentElement|isFunction|filter|className|hidden|handle|match|complete|attr|ret|hide|show|dataType|trigger|doc|split|top|table|try|catch|success|break|cache|height||remove|tbody|string|guid|num|global|ready|fx|Math|curCSS|start|scrollTop|makeArray|scrollLeft|max|animate|width|offset|tagName|safari|map|toggle||done|Array|find|toUpperCase|button|special|duration|id|copy|value|handler|ownerDocument|select|new|border|exec|stack|none|opera|nextSibling|pushStack|target|html|inArray|unit|xml|bind|GET|isReady|merge|pos|timeout|delete|one|selected|px|step|jsre|position|async|preventDefault|overflow|name|which|queue|removeChild|namespace|insertBefore|nth|removeData|fixed|parseFloat|error|readyState|multiFilter|createElement|rl|re|trim|end|_|param|first|get|results|parseInt|slice|childNodes|encodeURIComponent|append|events|elems|toLowerCase|json|readyList|setTimeout|grep|mouseenter|color|is|custom|getElementsByTagName|block|stopPropagation|addEventListener|callee|proxy|mouseleave|timers|defaultView|password|disabled|last|has|appendChild|form|domManip|props|ajax|orig|set|easing|mozilla|load|prototype|curAnim|self|charCode|timerId|object|offsetChild|Width|parentOffset|src|unbind|br|currentStyle|clean|float|visible|relatedTarget|previousSibling|handlers|isXMLDoc|on|setup|nodeIndex|unique|shift|javascript|child|RegExp|_default|deep|scroll|lastModified|teardown|setRequestHeader|timeStamp|update|empty|tr|getAttribute|innerHTML|setInterval|checked|fromElement|Number|jQuery|state|active|jsonp|accepts|application|dir|input|responseText|click|styleSheets|unload|not|lastToggle|outline|mouseout|getPropertyValue|mouseover|getComputedStyle|bindReady|String|padding|pageX|metaKey|keyCode|getWH|andSelf|clientX|Left|all|visibility|container|index|init|triggered|removeAttribute|classFilter|prevObject|submit|file|after|windowData|inner|client|globalEval|sibling|jquery|absolute|clone|wrapAll|dequeue|version|triggerHandler|oldblock|ctrlKey|createTextNode|Top|handleError|getResponseHeader|parsererror|speeds|checkbox|old|00|radio|swing|href|Modified|ifModified|lastChild|safari2|startTime|offsetTop|offsetLeft|username|location|ajaxSettings|getElementById|isSimple|values|selectedIndex|runtimeStyle|rsLeft|_load|loaded|DOMContentLoaded|clientTop|clientLeft|toElement|srcElement|val|pageY|POST|unshift|Bottom|clientY|Right|fix|exclusive|detachEvent|cloneNode|removeEventListener|swap|toString|join|attachEvent|eval|substr|head|parse|textarea|reset|image|zoom|odd|even|before|prepend|exclude|expr|quickClass|quickID|uuid|quickChild|continue|Height|textContent|appendTo|contents|open|margin|evalScript|borderTopWidth|borderLeftWidth|parent|httpData|setArray|CSS1Compat|compatMode|boxModel|cssFloat|linear|def|webkit|nodeValue|speed|_toggle|eq|100|replaceWith|304|concat|200|alpha|Last|httpNotModified|getAttributeNode|httpSuccess|clearInterval|abort|beforeSend|splice|styleFloat|throw|colgroup|XMLHttpRequest|ActiveXObject|scriptCharset|callback|fieldset|multiple|processData|getBoundingClientRect|contentType|link|ajaxSend|ajaxSuccess|ajaxError|col|ajaxComplete|ajaxStop|ajaxStart|serializeArray|notmodified|keypress|keydown|change|mouseup|mousedown|dblclick|focus|blur|stylesheet|hasClass|rel|doScroll|black|hover|solid|cancelBubble|returnValue|wheelDelta|view|round|shiftKey|resize|screenY|screenX|relatedNode|mousemove|prevValue|originalTarget|offsetHeight|keyup|newValue|offsetWidth|eventPhase|detail|currentTarget|cancelable|bubbles|attrName|attrChange|altKey|originalEvent|charAt|0n|substring|animated|header|noConflict|line|enabled|innerText|contains|only|weight|font|gt|lt|uFFFF|u0128|size|417|Boolean|Date|toggleClass|removeClass|addClass|removeAttr|replaceAll|insertAfter|prependTo|wrap|contentWindow|contentDocument|iframe|children|siblings|prevAll|wrapInner|nextAll|outer|prev|scrollTo|static|marginTop|next|inline|parents|able|cellSpacing|adobeair|cellspacing|522|maxLength|maxlength|readOnly|400|readonly|fast|600|class|slow|1px|htmlFor|reverse|10000|PI|cos|compatible|Function|setData|ie|ra|it|rv|getData|userAgent|navigator|fadeTo|fadeIn|slideToggle|slideUp|slideDown|ig|responseXML|content|1223|NaN|fadeOut|300|protocol|send|setAttribute|option|dataFilter|cssText|changed|be|Accept|stop|With|Requested|Object|can|GMT|property|1970|Jan|01|Thu|Since|If|Type|Content|XMLHTTP|th|Microsoft|td|onreadystatechange|onload|cap|charset|colg|host|tfoot|specified|with|1_|thead|leg|plain|attributes|opt|embed|urlencoded|www|area|hr|ajaxSetup|meta|post|getJSON|getScript|marginLeft|img|elements|pageYOffset|pageXOffset|abbr|serialize|pixelLeft'.split('|'),0,{}))
@@ -0,0 +1,35 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html>
4
+ <head>
5
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
6
+ <link rel="stylesheet" href="style.css" type="text/css" charset="utf-8" />
7
+ <link rel="stylesheet" href="syntax_highlight.css" type="text/css" charset="utf-8" />
8
+
9
+ <title>README</title>
10
+ </head>
11
+ <body>
12
+ <div id="content">
13
+ <div class="section docstring readme">
14
+ <p>
15
+ Copyright 2006 Suraj N. Kurapati &lt;sunaku@gmail.com&gt;
16
+ </p>
17
+ <p>
18
+ Permission to use, copy, modify, and/or distribute this software for any
19
+ purpose with or without fee is hereby granted, provided that the above
20
+ copyright notice and this permission notice appear in all copies.
21
+ </p>
22
+ <p>
23
+ THE SOFTWARE IS PROVIDED &quot;AS IS&quot; AND THE AUTHOR DISCLAIMS ALL
24
+ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
25
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
26
+ SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
27
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
28
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
29
+ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
30
+ </p>
31
+
32
+ </div>
33
+ </div>
34
+ </body>
35
+ </html>
data/doc/api/style.css ADDED
@@ -0,0 +1,68 @@
1
+ body { font-family: Myriad, Helvetica, Arial, Verdana, sans-serif; font-size: 10pt; }
2
+ #nav ul { list-style: none; padding: 0; margin: 0; }
3
+ #nav ul li { white-space: nowrap; }
4
+ #nav li em { font-size: 0.9em; color: #999; }
5
+ #nav h1 { font-size: 1.2em; }
6
+ h1 { font-size: 1.5em; background: #eee; color: #000; padding: 3px; text-decoration: none; }
7
+ h2 { font-size: 1.2em; background: #eef; color: #000; padding: 3px; text-decoration: none; }
8
+ h3 { font-size: 1.0em; }
9
+ .clear { clear: both; }
10
+ .section.module h1.title, .section.class h1.title, .section.readme h1 { color: #000; background: #ddd; border: 1px solid #ccc; padding: 7px; margin: 0; margin-bottom: 7px; }
11
+ .section.class h1.title { border-bottom: 0; margin-bottom: 0; }
12
+ .section.class > .section.docstring, .section.module > .section.docstring { padding: 0; }
13
+ #initialize-instance_method .methodsignature .return_types { display: none; }
14
+ .methodsignature .visibility { display: none; }
15
+ .methodsignature .name { font-weight: bold; }
16
+ .methoddetails .method_header h3 { display: none; }
17
+ .section.method { background: #eee; margin-bottom: 0.8em; }
18
+ .section.tags,.section.docstring,.section.source { padding: 5px 12px; }
19
+ .section.method .details_title { font-size: 1.1em; background: #dde; padding: 7px; }
20
+ .section.method .details_title p.aliases { padding: 0; margin: 0; font-style: italic; font-size: 0.9em; }
21
+ .section.method .details_title p.aliases tt { font-weight: bold; font-style: normal; font-size: 1.1em; }
22
+ .section.constants dl { font-family: monospace; }
23
+ .section.constants dt { font-weight: bold; font-size: 1.1em; }
24
+ .section.constants dt:after { content: " = "; }
25
+ .section.constants dd { margin-bottom: 1em; }
26
+ .section.source .source_link { font-size: 0.9em; }
27
+ .section.source .source_code { display: none; }
28
+ /*.section.source .source_code pre { float: left; }*/
29
+ .section.attributes table { padding: 0; width: 100%; }
30
+ .section.attributes .readwrite { width: 5%; }
31
+ .section.attributes .name { font-weight: bold; width: 10%; }
32
+ .section.attributes .visibility { font-style: italic; color: #666; width: 5%; }
33
+ .section.attributes td, .section.attributes th { vertical-align: top; padding: 5px; }
34
+ .section.attributes th { padding-left: 0; text-align: left; }
35
+ .section.attributes .docstring p.returns { color: #555; font-style: italic; }
36
+ .section.attributes .docstring .return_types { font-style: normal; }
37
+ .section.attributes .docstring { width: 80%; }
38
+ .section.attributes .docstring * { display: inline; }
39
+ .section.inheritance { background: #ddd; padding: 5px; border: 1px solid #ccc; border-top: 0; }
40
+ .section.inheritance ul { list-style: none; padding-left: 2.2em; margin: 0; }
41
+ .section.inheritance ul li { line-height: 1.2em; }
42
+ .section.inheritance ul li:before { content: "↳ "; }
43
+ .section.inheritance > ul { padding-left: 5px; }
44
+ .section.inheritance > ul > li:before { content: ""; }
45
+ .section.inheritance > ul > ul { padding-left: 1em; }
46
+ .section.methodsummary table { width: 100%; }
47
+ .section.methodsummary td, .section.methodsummary th { background: #eee; vertical-align: top; padding: 5px; }
48
+ .section.methodsummary th { background: #dde; text-align: left; white-space: nowrap; padding-right: 12px; }
49
+ .section.methodsummary .signature { font-family: monospace; font-weight: normal; }
50
+ .section.methodsummary .signature .name { font-weight: bold; }
51
+ .section.methodsummary .signature .alias { display: block; }
52
+ .section.methodsummary .docstring { width: 80%; }
53
+ .section.methodsummary .docstring * { display: inline; }
54
+ .section.methodsummary .docstring p.returns { color: #555; font-style: italic; }
55
+ .section.methodsummary .docstring .return_types { font-style: normal; }
56
+ .section.tags div { clear: both; }
57
+ .section.tags h2 { display: none; }
58
+ .section.tags h3 { font-size: 1.0em; margin-top: 3px; }
59
+ .section.tags dl { margin-left: 2em; }
60
+ .section.tags .option table { width: 100%; border: 0; padding: 0; }
61
+ .section.tags .option th { text-align: left; background: #e5e5e5; padding: 3px; }
62
+ .section.tags .option td.name { font-family: monospace; }
63
+ .section.methodmissing p.note { font-style: italic; }
64
+ .section.constructor p.inherited_msg { font-style: italic; }
65
+ .included h1, .inherited h1 { font-size: 1em !important; border: 0; margin: 0; padding: 5px; border-bottom: 1px solid #ccc; }
66
+ .included div, .inherited div { color: #444; margin: 1.5em 0; width: 47%; border: 1px solid #ccc; float: left; margin-right: 12px; }
67
+ .included p .name, .inherited p .name { font-family: monospace; }
68
+ .included p, .inherited p { margin: 5px; }
@@ -0,0 +1,21 @@
1
+ /* Canvas */
2
+ .source_code pre.lines { margin-right: 20px; text-align: right; color: #888; }
3
+ .docstring pre { padding: 12px; padding-left: 0; }
4
+ .docstring pre, .source_code { background: #222; padding: 12px; margin-top: 8px; border: 1px dashed #ccc; font-size: 0.9em; overflow-x: auto; }
5
+
6
+ /* Token colours. Borrowed from pastie.org's "Blackboard" theme */
7
+ pre.code, pre.lines { font-family: Monaco, Courier, monospace; }
8
+ pre.code { color: #fff; }
9
+ pre.code .info.file { color: #888; }
10
+ pre.code .val { color: #61CE3C; }
11
+ pre.code .dstring { color: #61DE3C; }
12
+ pre.code .fid, pre.code .id.new, pre.code .id.to_s,
13
+ pre.code .id.to_sym, pre.code .id.to_f,
14
+ pre.code .dot + pre.code .id,
15
+ pre.code .id.to_i pre.code .id.each { color: #FF6400; }
16
+ pre.code .comment { color: #AEAEAE; }
17
+ pre.code .constant, pre.code .symbol { color: #D8FA3C; }
18
+ pre.code .kw { color: #FBDE2D; }
19
+ pre.code .ivar { color: #AACEFB; }
20
+ pre.code .gvar, pre.code .id.nth_ref { color: #BADEFF; }
21
+ pre.code .regexp, .dregexp { color: #EA5EFB; }
data/doc/history.erb ADDED
@@ -0,0 +1,17 @@
1
+ <% chapter "History" do %>
2
+ <% project_history do %>
3
+ <% section "Version 2.0.1 (2009-01-20)" do %>
4
+ This release simplifies project administrivia using [<%= Inochi::PROJECT %>](<%= Inochi::WEBSITE %>), improves the unit tests, and revises the user manual.
5
+
6
+ <% paragraph "Bug fixes" do %>
7
+ * The <tt>lib/rumai/ixp/message.rb</tt> library's unit test would fail if <tt>/rbar/status</tt> did not already exist in wmii.
8
+ <% end %>
9
+
10
+ <% paragraph "Housekeeping" do %>
11
+ * Store IXP socket address in `Rumai::IXP_SOCK_ADDR`.
12
+
13
+ * Added missing test cases for (TR)create and (TR)remove messages in the unit test for the <tt>lib/rumai/ixp/message.rb</tt> library.
14
+ <% end %>
15
+ <% end %>
16
+ <% end %>
17
+ <% end %>
data/doc/index.erb ADDED
@@ -0,0 +1,13 @@
1
+ <%
2
+ Inochi.book :Rumai, self
3
+
4
+ ruby_url = 'http://ruby-lang.org'
5
+ wmii_url = 'http://www.suckless.org/wiki/wmii'
6
+ wmii_ixp_url = 'http://www.suckless.org/wiki/libs/libixp'
7
+ p9p_url = 'http://cm.bell-labs.com/magic/man2html/5/intro'
8
+ %>
9
+
10
+ <%# include intro.erb #%>
11
+ <%# include setup.erb #%>
12
+ <%# include usage.erb #%>
13
+ <%# include history.erb #%>
data/doc/index.xhtml ADDED
@@ -0,0 +1,1235 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
4
+ <!ENTITY icon_caution "data:image/png;base64,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">
5
+ <!ENTITY icon_tip "data:image/png;base64,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">
6
+ <!ENTITY icon_important "data:image/png;base64,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">
7
+ <!ENTITY icon_note "data:image/png;base64,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">
8
+ <!ENTITY icon_warning "data:image/png;base64,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">
9
+ <!ENTITY icon_quote "data:image/png;base64,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">
10
+ <!ENTITY icon_link "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAFVBMVEVmmcwzmcyZzP8AZswAZv////////9E6giVAAAAB3RSTlP///////8AGksDRgAAADhJREFUGFcly0ESAEAEA0Ei6/9P3sEcVB8kmrwFyni0bOeyyDpy9JTLEaOhQq7Ongf5FeMhHS/4AVnsAZubxDVmAAAAAElFTkSuQmCC">
11
+ ]>
12
+ <html xmlns="http://www.w3.org/1999/xhtml">
13
+ <head>
14
+ <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
15
+ <meta name="generator" content="ERBook 6.0.1"/>
16
+
17
+ <title>Rumai 2.0.1</title>
18
+
19
+ <meta name="author" content="Suraj N. Kurapati"/>
20
+
21
+ <meta name="date" content="25 January 2009"/>
22
+
23
+ <link rel="alternate" type="application/rss+xml" href="http://snk.tuxfamily.org/lib/rumai/ann.xml"/>
24
+
25
+ <style type="text/css" media="all">
26
+ <![CDATA[/* general */
27
+ body
28
+ {
29
+ color : #000000;
30
+ background-color : #FFFFFF;
31
+ line-height : 1.5em;
32
+ font-family : Calibri, Verdana, sans-serif;
33
+ }
34
+
35
+ /* emphasis */
36
+ blockquote
37
+ {
38
+ color : #333;
39
+ font-style : italic;
40
+ }
41
+
42
+ em
43
+ {
44
+ font-family : Constantia, "Book Antiqua", "URW Bookman L", serif;
45
+ font-size : 105%;
46
+ }
47
+
48
+ hr
49
+ {
50
+ height : 0;
51
+ border : 0;
52
+ border-top : 2px solid #FF0000;
53
+ }
54
+
55
+ /* source code */
56
+ tt,
57
+ code,
58
+ pre
59
+ {
60
+ font-family : Monaco, Consolas, "Lucida Console", monospace;
61
+ font-size : 100%; /* appears like "size: small" otherwise */
62
+ }
63
+
64
+ /* hyperlinks */
65
+ a > img
66
+ {
67
+ border : none;
68
+ }
69
+
70
+ a img
71
+ {
72
+ _border : none; /* for IE6 */
73
+ }
74
+
75
+ /* headings */
76
+ h1,
77
+ h2,
78
+ h3,
79
+ h4,
80
+ h5,
81
+ h6,
82
+ .title
83
+ {
84
+ font-weight : lighter;
85
+ font-family : Constantia, "Book Antiqua", "URW Bookman L", serif;
86
+ }
87
+
88
+ #lof h1,
89
+ #lof h2,
90
+ #lof h3,
91
+ #lof h4,
92
+ #lof h5,
93
+ #lof h6
94
+ {
95
+ margin-top : 1.25em;
96
+ }
97
+
98
+ #content h1,
99
+ #content h2,
100
+ #content h3,
101
+ #content h4,
102
+ #content h5,
103
+ #content h6
104
+ {
105
+ margin-top : 2.5em;
106
+ line-height : 1.25em;
107
+ }
108
+
109
+ #content h1
110
+ {
111
+ font-size : 2.0em;
112
+ }
113
+
114
+ #content h2
115
+ {
116
+ font-size : 1.8em;
117
+ }
118
+
119
+ #content h3
120
+ {
121
+ font-size : 1.6em;
122
+ }
123
+
124
+ #content h4
125
+ {
126
+ font-size : 1.4em;
127
+ }
128
+
129
+ #content h5
130
+ {
131
+ font-size : 1.2em;
132
+ }
133
+
134
+ #content h6
135
+ {
136
+ font-size : 1.0em;
137
+ }
138
+
139
+ /* tables */
140
+ table
141
+ {
142
+ border-collapse : collapse; /* no spacing between cell borders */
143
+ margin : auto; /* center horizontally */
144
+ margin-top : 1em;
145
+ }
146
+
147
+ th,
148
+ td
149
+ {
150
+ padding : 1em;
151
+ border : 1px solid #bbb;
152
+ vertical-align : top;
153
+ background-color : #FFFFFF;
154
+ _background-color : #FFFFFF; /* for IE6 */
155
+ }
156
+
157
+ th
158
+ {
159
+ background-color : #F5F5F5;
160
+ }
161
+
162
+ /* document structure */
163
+ #header
164
+ {
165
+ text-align : center;
166
+ }
167
+
168
+ .logo,
169
+ .header_outside_above,
170
+ #header,
171
+ .header_outside_below
172
+ {
173
+ margin-bottom : 5em;
174
+ }
175
+
176
+ .footer_outside_above,
177
+ #footer,
178
+ .footer_outside_below
179
+ {
180
+ margin-top : 5em;
181
+ }
182
+
183
+ #header .header_inside_above,
184
+ #footer .footer_inside_above
185
+ {
186
+ margin-bottom : 4em;
187
+ }
188
+
189
+ #header .header_inside_below,
190
+ #footer .footer_inside_below
191
+ {
192
+ margin-top : 4em;
193
+ }
194
+
195
+ #Abstract
196
+ {
197
+ margin-bottom : 5em;
198
+ }
199
+
200
+ #toc li
201
+ {
202
+ list-style-type : none;
203
+ }
204
+
205
+ #toc li ul
206
+ {
207
+ padding-bottom : 1em;
208
+ border-left : thick solid #F5F5F5;
209
+ _border-left : none; /* for IE6 */
210
+ }
211
+
212
+ #toc li ul:hover
213
+ {
214
+ border-color : #DCDCDC;
215
+ }
216
+
217
+ #toc > ul
218
+ {
219
+ padding-left : 1em;
220
+ }
221
+
222
+ #bib
223
+ {
224
+ margin-top : 5em;
225
+ }
226
+
227
+ #footer
228
+ {
229
+ border-top : thick dotted #DCDCDC;
230
+ padding-top : 1em;
231
+ text-align : center;
232
+ }
233
+
234
+ #footer-credits
235
+ {
236
+ margin-top : 2em;
237
+ margin-bottom : 2em;
238
+ }
239
+
240
+ /* document nodes */
241
+ .part > .title,
242
+ .chapter > .title
243
+ {
244
+ padding-bottom : 0.5em;
245
+ }
246
+
247
+ .part > .title > big,
248
+ .chapter > .title > big
249
+ {
250
+ display : block;
251
+ margin-top : 0.25em;
252
+ }
253
+
254
+ .part .title big,
255
+ .chapter .title big
256
+ {
257
+ _display : block; /* for IE6 */
258
+ _margin-top : 0.25em; /* for IE6 */
259
+ _margin-bottom : 0.75em; /* for IE6 */
260
+ }
261
+
262
+ .paragraph > .title,
263
+ .tip > .title,
264
+ .note > .title,
265
+ .caution > .title,
266
+ .warning > .title,
267
+ .important > .title,
268
+ .figure > .title,
269
+ .table > .title,
270
+ .example > .title,
271
+ .equation > .title,
272
+ .procedure > .title
273
+ {
274
+ font-size : large;
275
+ margin-top : 2em;
276
+ }
277
+
278
+ .paragraph .title,
279
+ .tip .title,
280
+ .note .title,
281
+ .caution .title,
282
+ .warning .title,
283
+ .important .title,
284
+ .figure .title,
285
+ .table .title,
286
+ .example .title,
287
+ .equation .title,
288
+ .procedure .title
289
+ {
290
+ _font-size : large; /* for IE6 */
291
+ _font-weight : bold; /* large is not bold in IE6 */
292
+ _margin-top : 2em; /* for IE6 */
293
+ }
294
+
295
+ .tip ,
296
+ .note ,
297
+ .caution ,
298
+ .warning ,
299
+ .important,
300
+ .figure ,
301
+ .table ,
302
+ .example ,
303
+ .equation ,
304
+ .procedure
305
+ {
306
+ margin : 3em;
307
+ }
308
+
309
+ .tip .nav,
310
+ .note .nav,
311
+ .caution .nav,
312
+ .warning .nav,
313
+ .important .nav,
314
+ .figure .nav,
315
+ .table .nav,
316
+ .example .nav,
317
+ .equation .nav,
318
+ .procedure .nav
319
+ {
320
+ margin-left : -7.65em;
321
+ }
322
+
323
+ .tip > .content,
324
+ .note > .content,
325
+ .caution > .content,
326
+ .warning > .content,
327
+ .important > .content,
328
+ .figure > .content,
329
+ .table > .content,
330
+ .example > .content,
331
+ .equation > .content,
332
+ .procedure > .content
333
+ {
334
+ min-height : 48px; /* 48px is height of icon */
335
+ }
336
+
337
+ .tip > .content > .icon,
338
+ .note > .content > .icon,
339
+ .caution > .content > .icon,
340
+ .warning > .content > .icon,
341
+ .important > .content > .icon
342
+ {
343
+ float : left;
344
+ margin : 0 1em 1em 0; /* top right bottom left */
345
+ }
346
+
347
+ .tip .content .icon,
348
+ .note .content .icon,
349
+ .caution .content .icon,
350
+ .warning .content .icon,
351
+ .important .content .icon
352
+ {
353
+ _display : none; /* IE6 cannot display embedded images */
354
+ }
355
+
356
+ .figure > .title
357
+ {
358
+ text-align : center;
359
+ }
360
+
361
+ .figure .title
362
+ {
363
+ _text-align : center; /* for IE6 */
364
+ }
365
+
366
+ .figure > .content img
367
+ {
368
+ display : block;
369
+ margin : auto;
370
+ }
371
+
372
+ .figure .content img
373
+ {
374
+ _display : block; /* for IE6 */
375
+ _margin : auto; /* for IE6 */
376
+ }
377
+ ]]>
378
+ </style>
379
+ <style type="text/css" media="screen">
380
+ <![CDATA[/* general */
381
+ body
382
+ {
383
+ margin : 0;
384
+ padding : 0;
385
+ padding-left : 10em; /* room for local navigation menus */
386
+ padding-right : 10em; /* keep #body visually centered */
387
+ background-color : #808080;
388
+ }
389
+
390
+ /* the actual content of the <body> element */
391
+ #body
392
+ {
393
+ margin : auto;
394
+ max-width : 38em;
395
+
396
+ background-color : #FFFFFF;
397
+ border-left : 0.35em solid #696969;
398
+ border-right : 0.35em solid #696969;
399
+ padding : 2em;
400
+ }
401
+
402
+ /* source code */
403
+ tt
404
+ {
405
+ background-color : #F0F8FF;
406
+ }
407
+
408
+ pre
409
+ {
410
+ cursor : text;
411
+ line-height : normal;
412
+ border : 1px solid #b1d827;
413
+ background-color : #F5FFDF;
414
+ padding : 1em;
415
+
416
+ /* fit container to content; no overflow! */
417
+ display : inline-block;
418
+ margin : 0;
419
+ min-width : 92.5%;
420
+ }
421
+
422
+ /* output of the syntax coloring library */
423
+ pre.code
424
+ {
425
+ background-color : #FFFFE8;
426
+ border-color : #EEDD88;
427
+ }
428
+
429
+ /* hyperlinks */
430
+ a
431
+ {
432
+ text-decoration : none;
433
+ }
434
+
435
+ a:hover
436
+ {
437
+ text-decoration : underline;
438
+ }
439
+
440
+ a:link
441
+ {
442
+ color : #0038E1; /* maximum saturation of RoyalBlue */
443
+ }
444
+
445
+ a:visited
446
+ {
447
+ color : #800080;
448
+ }
449
+
450
+ #toc a:target:after,
451
+ #lof a:target:after,
452
+ #nav a:target:after
453
+ {
454
+ content : "★"; /* &#x2605; */
455
+ color : #FF0000;
456
+ font-size : x-large;
457
+ padding-left : 0.125em;
458
+ }
459
+
460
+ /* document structure */
461
+ /* mini navigation menu beside every block node */
462
+ .nav
463
+ {
464
+ width : 4em;
465
+ float : left; /* detach from main content */
466
+ margin-left : -6.075em;
467
+
468
+ font-size : 1.9em;
469
+ letter-spacing : 0.25em;
470
+ text-align : center;
471
+
472
+ color : #696969; /* same colors to hide non-links */
473
+ background-color : #696969;
474
+ padding : 0.5em;
475
+ margin-top : -0.5em;
476
+ }
477
+
478
+ .nav:target,
479
+ .nav:hover
480
+ {
481
+ color : #333; /* same colors to hide non-links */
482
+ background-color : #333;
483
+ }
484
+
485
+ .nav a:link,
486
+ .nav a:visited
487
+ {
488
+ color : #D3D3D3;
489
+ }
490
+
491
+ .nav a:hover,
492
+ #nav a:target:after {
493
+ color : #9ACD32;
494
+ text-decoration : none;
495
+ }
496
+
497
+ /* global navigation menu at the top of the page */
498
+ #nav
499
+ {
500
+ font-size : 1em;
501
+ letter-spacing : 0;
502
+ width : 8.5em;
503
+ margin-left : -11.5em;
504
+ }
505
+
506
+ #nav li
507
+ {
508
+ list-style-type : none;
509
+ }
510
+ ]]>
511
+ </style>
512
+ <style type="text/css" media="print">
513
+ <![CDATA[/* source code */
514
+ tt
515
+ {
516
+ font-weight : normal;
517
+ }
518
+
519
+ pre
520
+ {
521
+ border : none;
522
+ }
523
+
524
+ /* headings */
525
+ h1,
526
+ h2,
527
+ h3,
528
+ h4,
529
+ h5,
530
+ h6
531
+ {
532
+ font-weight : normal;
533
+ clear : both;
534
+ }
535
+
536
+ /* hyperlinks */
537
+ /* blend all hyperlinks with normal text */
538
+ a:link,
539
+ a:visited
540
+ {
541
+ color : #000000;
542
+ text-decoration : none;
543
+ }
544
+
545
+ /* emphasize external and cross-reference hyperlinks */
546
+ a[href]:not([href^="#"]):link,
547
+ a[href]:not([href^="#"]):visited,
548
+ a.xref[title]:link,
549
+ a.xref[title]:visited
550
+ {
551
+ color : #0000FF;
552
+ text-decoration : underline;
553
+ font-weight : bolder;
554
+ }
555
+
556
+ /* show URL of destination for external hyperlinks */
557
+ a[href]:not([href^="#"]):after
558
+ {
559
+ content : " " attr(href);
560
+ font-family : Monaco, Consolas, "Lucida Console", monospace;
561
+ }
562
+
563
+ /* show name of destination for cross-references */
564
+ a.xref[title]:after
565
+ {
566
+ content : " " attr(title);
567
+ }
568
+
569
+ a:after
570
+ {
571
+ font-weight : normal;
572
+ font-size : smaller;
573
+ }
574
+
575
+ /* document structure */
576
+ #nav,
577
+ .nav,
578
+ #lof
579
+ {
580
+ display : none;
581
+ }
582
+
583
+ #toc,
584
+ .part,
585
+ .chapter,
586
+ #bib
587
+ {
588
+ page-break-before : always;
589
+ }
590
+
591
+ /* document nodes */
592
+ .part > .title > big,
593
+ .chapter > .title > big
594
+ {
595
+ padding-bottom : 0.5em;
596
+ }
597
+
598
+ .part .title big,
599
+ .chapter .title big
600
+ {
601
+ _padding-bottom : 0.5em; /* for IE6 */
602
+ }
603
+ ]]>
604
+ </style>
605
+
606
+ <style type="text/css" media="screen">
607
+ <![CDATA[
608
+ /* decorate external hyperlinks with a visual indicator */
609
+ a[href]:not([href^="#"])
610
+ {
611
+ background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAFVBMVEVmmcwzmcyZzP8AZswAZv////////9E6giVAAAAB3RSTlP///////8AGksDRgAAADhJREFUGFcly0ESAEAEA0Ei6/9P3sEcVB8kmrwFyni0bOeyyDpy9JTLEaOhQq7Ongf5FeMhHS/4AVnsAZubxDVmAAAAAElFTkSuQmCC");
612
+ background-position : center right;
613
+ background-repeat : no-repeat;
614
+ padding-right : 13px;
615
+ }
616
+
617
+ /* display icon for blockquote elements */
618
+ blockquote
619
+ {
620
+ background-image : url("data:image/png;base64,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");
621
+ background-repeat : no-repeat;
622
+ margin-left : 0;
623
+ padding-left : 65px;
624
+ min-height : 50px;
625
+ }
626
+ ]]>
627
+ </style>
628
+ </head>
629
+ <body>
630
+ <div id="body">
631
+
632
+ <br style="display: none"/>
633
+ <hr style="display: none"/>
634
+ <br style="display: none"/>
635
+
636
+
637
+ <div id="header">
638
+
639
+
640
+ <h1 class="title">Rumai 2.0.1</h1>
641
+
642
+ <h2 class="subtitle">Ruby interface to the wmii window manager</h2>
643
+
644
+ <h3 class="authors"><a href="mailto:sunaku@gmail.com">Suraj N. Kurapati</a></h3>
645
+
646
+ <h3 class="date">25 January 2009</h3>
647
+
648
+ </div>
649
+
650
+
651
+
652
+
653
+ <br style="display: none"/>
654
+ <hr style="display: none"/>
655
+ <br style="display: none"/>
656
+
657
+ <div id="toc">
658
+ <a name="Contents"/><div class="nav" id="Contents"><a title="Reverse jump to listing" href="#rev:Contents">&equiv;</a>&#x25B3;&#x25BD;<a title="Jump to this segment" href="#Contents">&#x25CE;</a></div>
659
+ <h1 class="title">Contents</h1>
660
+ <ul>
661
+ <li>1&nbsp;&nbsp;<a id="rev:Introduction" href="#Introduction">Introduction</a><ul><li><a id="rev:Etymology" href="#Etymology">Etymology</a></li><li>1.1&nbsp;&nbsp;<a id="rev:Logistics" href="#Logistics">Logistics</a><ul><li><a id="rev:Version-numbers" href="#Version-numbers">Version numbers</a></li></ul></li><li>1.2&nbsp;&nbsp;<a id="rev:License" href="#License">License</a></li><li>1.3&nbsp;&nbsp;<a id="rev:Credits" href="#Credits">Credits</a></li></ul></li><li>2&nbsp;&nbsp;<a id="rev:Setup" href="#Setup">Setup</a><ul><li>2.1&nbsp;&nbsp;<a id="rev:Requirements" href="#Requirements">Requirements</a></li><li>2.2&nbsp;&nbsp;<a id="rev:Installation" href="#Installation">Installation</a></li><li>2.3&nbsp;&nbsp;<a id="rev:Manifest" href="#Manifest">Manifest</a></li></ul></li><li>3&nbsp;&nbsp;<a id="rev:Usage" href="#Usage">Usage</a><ul><li>3.1&nbsp;&nbsp;<a id="rev:Concepts" href="#Concepts">Concepts</a></li><li>3.2&nbsp;&nbsp;<a id="rev:Command-line-interface" href="#Command-line-interface">Command-line interface</a><ul><li><a id="rev:shell" href="#shell">Interactive shell</a></li></ul></li><li>3.3&nbsp;&nbsp;<a id="rev:Tutorial" href="#Tutorial">Tutorial</a><ul><li>3.3.1&nbsp;&nbsp;<a id="rev:Automated-client-arrangement" href="#Automated-client-arrangement">Automated client arrangement</a></li><li>3.3.2&nbsp;&nbsp;<a id="rev:Multiple-client-grouping" href="#Multiple-client-grouping">Multiple client grouping</a></li><li>3.3.3&nbsp;&nbsp;<a id="rev:Easy-column-manipulation" href="#Easy-column-manipulation">Easy column manipulation</a></li><li>3.3.4&nbsp;&nbsp;<a id="rev:Easy-client-manipulation" href="#Easy-client-manipulation">Easy client manipulation</a></li><li>3.3.5&nbsp;&nbsp;<a id="rev:Traversing-the-file-system" href="#Traversing-the-file-system">Traversing the file system</a></li><li>3.3.6&nbsp;&nbsp;<a id="rev:Available-commands" href="#Available-commands">Available commands</a></li></ul></li><li>3.4&nbsp;&nbsp;<a id="rev:wmiirc" href="#wmiirc">Scripting your wmiirc</a></li></ul></li><li>4&nbsp;&nbsp;<a id="rev:History" href="#History">History</a><ul><li>4.1&nbsp;&nbsp;<a id="rev:Version-2.0.1-2009-01-20" href="#Version-2.0.1-2009-01-20">Version 2.0.1 (2009-01-20)</a><ul><li><a id="rev:Bug-fixes" href="#Bug-fixes">Bug fixes</a></li><li><a id="rev:Housekeeping" href="#Housekeeping">Housekeeping</a></li></ul></li></ul></li>
662
+
663
+ </ul>
664
+ </div>
665
+
666
+
667
+ <br style="display: none"/>
668
+ <hr style="display: none"/>
669
+ <br style="display: none"/>
670
+
671
+ <div id="content">
672
+ <div class="chapter">
673
+ <a name="Introduction"/><div class="nav" id="Introduction"><a title="Reverse jump to listing" href="#rev:Introduction">&equiv;</a>&#x25B3;<a title="Jump to next segment" href="#Etymology">&#x25BD;</a><a title="Jump to this segment" href="#Introduction">&#x25CE;</a></div>
674
+ <h1 class="title">
675
+ Chapter&nbsp;1
676
+ <br/>
677
+ <big>Introduction</big>
678
+ </h1>
679
+ <div class="content"><p><p><strong>Rumai</strong> is a <a href='http://ruby-lang.org'>Ruby</a> interface to the <a href='http://www.suckless.org/wiki/wmii'>wmii</a> window manager.</p> <strong>Rumai</strong> is exciting because:</p>
680
+
681
+ <ul>
682
+ <li>It excels at <em>dynamic arrangement</em> of clients, columns, views, and tags.</li>
683
+
684
+ <li>It provides an <a class="xref" href="#shell" title="Paragraph. Interactive shell">interactive shell</a> for live entertainment.</li>
685
+
686
+ <li>It contains a <em>pure Ruby client</em> for the <a href='http://cm.bell-labs.com/magic/man2html/5/intro'>9P2000 protocol</a> on which wmii&#8217;s <a href='http://www.suckless.org/wiki/libs/libixp'>IXP file-system interface</a> is built.</li>
687
+ </ul>
688
+
689
+ <p>These features distinguish <strong>Rumai</strong> from the competition:</p>
690
+
691
+ <ul>
692
+ <li><a href='http://eigenclass.org/hiki.rb?wmii+ruby'>ruby-wmii</a></li>
693
+
694
+ <li><a href='http://'>Rii</a></li>
695
+
696
+ <li><a href='http://'>Ruby-IXP</a></li>
697
+ </ul>
698
+
699
+ <p><div class="paragraph">
700
+ <a name="Etymology"/><div class="nav" id="Etymology"><a title="Reverse jump to listing" href="#rev:Etymology">&equiv;</a><a title="Jump to previous segment" href="#Introduction">&#x25B3;</a><a title="Jump to next segment" href="#Logistics">&#x25BD;</a><a title="Jump to this segment" href="#Etymology">&#x25CE;</a></div>
701
+ <p class="title">Etymology</p>
702
+ <div class="content"><p>The word &#8220;wmii&#8221; is incredibly difficult to pronounce because it is an abbreviation, not an acronym. If we were to treat it as an acronym, the closest pronounciation would be, in my mind, something like &#8220;vim-eye&#8221;.</p>
703
+
704
+ <p>Since this is a Ruby library, I added a &#8220;roo&#8221; and worked it through:</p>
705
+
706
+ <pre>vim-eye
707
+ roo-vim-eye
708
+ roovm-eye
709
+ roo-mai</pre>
710
+
711
+ <p>And thus we get &#8220;Rumai&#8221;.</p></div>
712
+ </div> <div class="section">
713
+ <a name="Logistics"/><div class="nav" id="Logistics"><a title="Reverse jump to listing" href="#rev:Logistics">&equiv;</a><a title="Jump to previous segment" href="#Etymology">&#x25B3;</a><a title="Jump to next segment" href="#Version-numbers">&#x25BD;</a><a title="Jump to this segment" href="#Logistics">&#x25CE;</a></div>
714
+ <h2 class="title">
715
+ 1.1&nbsp;&nbsp;Logistics
716
+ </h2>
717
+ <div class="content"><ul>
718
+ <li><a class="xref" href="#History" title="Chapter 4. History">Release notes</a> &#8212; history of project releases.</li>
719
+
720
+ <li><a href='http://github.com/sunaku/rumai'>Source code</a> &#8212; obtain via <a href='http://git.or.cz'>Git</a> or browse online.</li>
721
+
722
+ <li><a href='api/index.html'>API reference</a> &#8212; documentation for source code.</li>
723
+ </ul>
724
+
725
+ <p>To get help or provide feedback, simply <a class="xref" href="#License" title="Section 1.2. License">contact the author(s)</a>.</p>
726
+
727
+ <p><div class="paragraph">
728
+ <a name="Version-numbers"/><div class="nav" id="Version-numbers"><a title="Reverse jump to listing" href="#rev:Version-numbers">&equiv;</a><a title="Jump to previous segment" href="#Logistics">&#x25B3;</a><a title="Jump to next segment" href="#License">&#x25BD;</a><a title="Jump to this segment" href="#Version-numbers">&#x25CE;</a></div>
729
+ <p class="title">Version numbers</p>
730
+ <div class="content"><p><strong>Rumai</strong> releases are numbered in <em>major.minor.patch</em> form according to the <a href='http://www.rubygems.org/read/chapter/7'>RubyGems rational versioning policy</a>, which can be summarized thus:</p>
731
+ <table border="1">
732
+ <thead>
733
+ <tr>
734
+ <td rowspan='2'>What increased in the version number?</td>
735
+ <td colspan='3'>The increase indicates that the release:</td>
736
+ </tr>
737
+ <tr>
738
+ <th>Is backward compatible?</th>
739
+ <th>Has new features?</th>
740
+ <th>Has bug fixes?</th>
741
+ </tr>
742
+ </thead>
743
+ <tbody>
744
+ <tr>
745
+ <th>major</th>
746
+ <td style='background-color: #FFE4E1;'>No</td>
747
+ <td>Yes</td>
748
+ <td>Yes</td>
749
+ </tr>
750
+ <tr>
751
+ <th>minor</th>
752
+ <td>Yes</td>
753
+ <td>Yes</td>
754
+ <td>Yes</td>
755
+ </tr>
756
+ <tr>
757
+ <th>patch</th>
758
+ <td>Yes</td>
759
+ <td style='background-color: #FFE4E1;'>No</td>
760
+ <td>Yes</td>
761
+ </tr>
762
+ </tbody>
763
+ </table></div>
764
+ </div></p></div>
765
+ </div> <div class="section">
766
+ <a name="License"/><div class="nav" id="License"><a title="Reverse jump to listing" href="#rev:License">&equiv;</a><a title="Jump to previous segment" href="#Version-numbers">&#x25B3;</a><a title="Jump to next segment" href="#Credits">&#x25BD;</a><a title="Jump to this segment" href="#License">&#x25CE;</a></div>
767
+ <h2 class="title">
768
+ 1.2&nbsp;&nbsp;License
769
+ </h2>
770
+ <div class="content"><p>Copyright 2006 Suraj N. Kurapati <a href='mailto:sunaku@gmail.com'>&#115;&#117;&#110;&#097;&#107;&#117;&#064;&#103;&#109;&#097;&#105;&#108;&#046;&#099;&#111;&#109;</a></p>
771
+
772
+ <p>Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.</p>
773
+
774
+ <p>THE SOFTWARE IS PROVIDED &#8220;AS IS&#8221; AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 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 TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</p></div>
775
+ </div> <div class="section">
776
+ <a name="Credits"/><div class="nav" id="Credits"><a title="Reverse jump to listing" href="#rev:Credits">&equiv;</a><a title="Jump to previous segment" href="#License">&#x25B3;</a><a title="Jump to next segment" href="#Setup">&#x25BD;</a><a title="Jump to this segment" href="#Credits">&#x25CE;</a></div>
777
+ <h2 class="title">
778
+ 1.3&nbsp;&nbsp;Credits
779
+ </h2>
780
+ <div class="content"><blockquote>
781
+ <p>TODO: give attribution to your predecessors and contributors</p>
782
+ </blockquote></div>
783
+ </div></p></div>
784
+ </div><div class="chapter">
785
+ <a name="Setup"/><div class="nav" id="Setup"><a title="Reverse jump to listing" href="#rev:Setup">&equiv;</a><a title="Jump to previous segment" href="#Credits">&#x25B3;</a><a title="Jump to next segment" href="#Requirements">&#x25BD;</a><a title="Jump to this segment" href="#Setup">&#x25CE;</a></div>
786
+ <h1 class="title">
787
+ Chapter&nbsp;2
788
+ <br/>
789
+ <big>Setup</big>
790
+ </h1>
791
+ <div class="content"><p><div class="section">
792
+ <a name="Requirements"/><div class="nav" id="Requirements"><a title="Reverse jump to listing" href="#rev:Requirements">&equiv;</a><a title="Jump to previous segment" href="#Setup">&#x25B3;</a><a title="Jump to next segment" href="#Installation">&#x25BD;</a><a title="Jump to this segment" href="#Requirements">&#x25CE;</a></div>
793
+ <h2 class="title">
794
+ 2.1&nbsp;&nbsp;Requirements
795
+ </h2>
796
+ <div class="content"><p>Your system needs the following software to run <strong>Rumai</strong>.</p>
797
+ <table border="1"><thead><tr><th>Software</th><th>Description</th><th>Notes</th></tr></thead><tbody><tr><td style='text-align: left;'><a href='http://ruby-lang.org'>Ruby</a></td><td style='text-align: left;'>Ruby language interpreter</td><td style='text-align: left;'>Version 1.8.6 or newer is required.</td>
798
+ </tr><tr><td style='text-align: left;'><a href='http://rubygems.org'>RubyGems</a></td><td style='text-align: left;'>Ruby packaging system</td><td style='text-align: left;'>Version 1.3.1 or newer is required.</td>
799
+ </tr><tr><td style='text-align: left;'><a href='http://www.suckless.org/wiki/wmii'>wmii</a></td><td style='text-align: left;'>Window manager</td><td style='text-align: left;'>Version 3.6 or newer is required.</td>
800
+ </tr></tbody></table></div>
801
+ </div> <div class="section">
802
+ <a name="Installation"/><div class="nav" id="Installation"><a title="Reverse jump to listing" href="#rev:Installation">&equiv;</a><a title="Jump to previous segment" href="#Requirements">&#x25B3;</a><a title="Jump to next segment" href="#Manifest">&#x25BD;</a><a title="Jump to this segment" href="#Installation">&#x25CE;</a></div>
803
+ <h2 class="title">
804
+ 2.2&nbsp;&nbsp;Installation
805
+ </h2>
806
+ <div class="content"><p>You can install <strong>Rumai</strong> by running this command:</p>
807
+
808
+ <pre>gem install rumai</pre>
809
+
810
+ <p>To check whether the installation was sucessful, run this command:</p>
811
+
812
+ <pre>rumai --version</pre>
813
+
814
+ <p>If the installation was successful, you will see output like this:</p>
815
+
816
+ <p><pre>project: Rumai
817
+ version: 2.0.1
818
+ release: 2009-01-25
819
+ website: http://snk.tuxfamily.org/lib/rumai
820
+ install: /home/sun/src/rumai</pre></p>
821
+
822
+ <p>If you do not see such output, you may <a class="xref" href="#License" title="Section 1.2. License">ask the author(s)</a> for help.</p></div>
823
+ </div> <div class="section">
824
+ <a name="Manifest"/><div class="nav" id="Manifest"><a title="Reverse jump to listing" href="#rev:Manifest">&equiv;</a><a title="Jump to previous segment" href="#Installation">&#x25B3;</a><a title="Jump to next segment" href="#Usage">&#x25BD;</a><a title="Jump to this segment" href="#Manifest">&#x25CE;</a></div>
825
+ <h2 class="title">
826
+ 2.3&nbsp;&nbsp;Manifest
827
+ </h2>
828
+ <div class="content"><p>You will see the following items inside <strong>Rumai</strong>&#8217;s installation directory, whose path you can determine by running this command:</p>
829
+
830
+ <pre>rumai --version</pre>
831
+
832
+ <ul>
833
+ <li>
834
+ <p><tt>bin/</tt></p>
835
+
836
+ <ul>
837
+ <li><tt>rumai</tt> &#8212; the main <strong>Rumai</strong> executable.</li>
838
+ </ul>
839
+ </li>
840
+
841
+ <li>
842
+ <p><tt>lib/</tt></p>
843
+
844
+ <ul>
845
+ <li>
846
+ <p><tt>rumai.rb</tt> &#8212; the main <strong>Rumai</strong> library.</p>
847
+ </li>
848
+
849
+ <li>
850
+ <p><tt>rumai/</tt></p>
851
+
852
+ <ul>
853
+ <li><tt>ixp.rb</tt> - pure Ruby client for the <a href='http://cm.bell-labs.com/magic/man2html/5/intro'>9P2000 protocol</a></li>
854
+ </ul>
855
+ </li>
856
+ </ul>
857
+ </li>
858
+
859
+ <li>
860
+ <p><tt>doc/</tt></p>
861
+
862
+ <ul>
863
+ <li>
864
+ <p><tt>api/</tt> &#8212; API reference documentation.</p>
865
+ </li>
866
+
867
+ <li>
868
+ <p><tt>index.erb</tt> &#8212; source of this user manual.</p>
869
+ </li>
870
+ </ul>
871
+ </li>
872
+
873
+ <li>
874
+ <p><tt>LICENSE</tt> &#8212; copyright notice and legal conditions.</p>
875
+ </li>
876
+ </ul></div>
877
+ </div></p></div>
878
+ </div><div class="chapter">
879
+ <a name="Usage"/><div class="nav" id="Usage"><a title="Reverse jump to listing" href="#rev:Usage">&equiv;</a><a title="Jump to previous segment" href="#Manifest">&#x25B3;</a><a title="Jump to next segment" href="#Concepts">&#x25BD;</a><a title="Jump to this segment" href="#Usage">&#x25CE;</a></div>
880
+ <h1 class="title">
881
+ Chapter&nbsp;3
882
+ <br/>
883
+ <big>Usage</big>
884
+ </h1>
885
+ <div class="content"><p><div class="section">
886
+ <a name="Concepts"/><div class="nav" id="Concepts"><a title="Reverse jump to listing" href="#rev:Concepts">&equiv;</a><a title="Jump to previous segment" href="#Usage">&#x25B3;</a><a title="Jump to next segment" href="#Command-line-interface">&#x25BD;</a><a title="Jump to this segment" href="#Concepts">&#x25CE;</a></div>
887
+ <h2 class="title">
888
+ 3.1&nbsp;&nbsp;Concepts
889
+ </h2>
890
+ <div class="content"><p>If you wish to wield the power of <strong>Rumai</strong> more effectively, you should understand the following basic concepts:</p>
891
+
892
+ <ul>
893
+ <li>
894
+ <p>A <em>client</em> is any graphical program that is running in your X session. In other words, any <em>window</em> in your wmii session is a <em>client</em>.</p>
895
+ </li>
896
+
897
+ <li>
898
+ <p>A <em>tag</em> is an arbitrary string (a label) that can be associated with one or more clients.</p>
899
+ </li>
900
+
901
+ <li>
902
+ <p>A <em>view</em> is a graphical representation of a <em>tag</em>. It shows all clients associated with a particular tag.</p>
903
+ </li>
904
+
905
+ <li>
906
+ <p>An <em>area</em> is a region inside a <em>view</em>. It contains clients.</p>
907
+
908
+ <ul>
909
+ <li>
910
+ <p>A <em>managed area</em> or <em>column</em> is a region where clients cannot overlap each other.</p>
911
+ </li>
912
+
913
+ <li>
914
+ <p>The <em>floating area</em> is an area whose clients (1) can overlap each other and (2) <em>float above</em> the managed areas.</p>
915
+ </li>
916
+ </ul>
917
+ </li>
918
+ </ul></div>
919
+ </div> <div class="section">
920
+ <a name="Command-line-interface"/><div class="nav" id="Command-line-interface"><a title="Reverse jump to listing" href="#rev:Command-line-interface">&equiv;</a><a title="Jump to previous segment" href="#Concepts">&#x25B3;</a><a title="Jump to next segment" href="#shell">&#x25BD;</a><a title="Jump to this segment" href="#Command-line-interface">&#x25CE;</a></div>
921
+ <h2 class="title">
922
+ 3.2&nbsp;&nbsp;Command-line interface
923
+ </h2>
924
+ <div class="content"><p>When you run this command:</p>
925
+
926
+ <pre>rumai --help</pre>
927
+
928
+ <p>You will see this output:</p>
929
+
930
+ <p><pre>Rumai - Ruby interface to the wmii window manager
931
+
932
+ This program is an interactive shell for Rumai.
933
+
934
+ Usage:
935
+
936
+ rumai [Options]
937
+ rumai [Options] -- irb_args
938
+
939
+ irb_args: Command-line options and arguments that should
940
+ be passed to `irb`, the interactive Ruby shell.
941
+
942
+ Options:
943
+
944
+ --manual, -m: Show the user manual
945
+ --version, -v: Print version and exit
946
+ --help, -h: Show this message</pre></p>
947
+
948
+ <p><div class="paragraph">
949
+ <a name="shell"/><div class="nav" id="shell"><a title="Reverse jump to listing" href="#rev:shell">&equiv;</a><a title="Jump to previous segment" href="#Command-line-interface">&#x25B3;</a><a title="Jump to next segment" href="#Tutorial">&#x25BD;</a><a title="Jump to this segment" href="#shell">&#x25CE;</a></div>
950
+ <p class="title">Interactive shell</p>
951
+ <div class="content"><p>When you run this command:</p>
952
+
953
+ <pre>rumai</pre>
954
+
955
+ <p>An IRB session will begin, showing you a command prompt like this:</p>
956
+
957
+ <pre>irb(Rumai):001:0&gt;</pre>
958
+
959
+ <p>The <tt>irb(Rumai)</tt> token in the command prompt indicates that commands will be evaluated <em>inside</em> the <code class="code"><span style="color:#036;font-weight:bold">Rumai</span></code> module. As a result, you can omit the &#8220;Rumai&#8221; prefix from your commands if you wish.</p>
960
+
961
+ <p>For example, to get the current client object, you can type <code class="code">curr_client</code> instead of having to type <code class="code"><span style="color:#036;font-weight:bold">Rumai</span>.curr_client</code> at the prompt. Both commands achieve the same effect.</p>
962
+
963
+ <p>The next thing to note is that <strong>tab completion</strong> is enabled by default. So you can type part of a command and press the TAB key to see a list of possible completions.</p></div>
964
+ </div></p></div>
965
+ </div> <div class="section">
966
+ <a name="Tutorial"/><div class="nav" id="Tutorial"><a title="Reverse jump to listing" href="#rev:Tutorial">&equiv;</a><a title="Jump to previous segment" href="#shell">&#x25B3;</a><a title="Jump to next segment" href="#Automated-client-arrangement">&#x25BD;</a><a title="Jump to this segment" href="#Tutorial">&#x25CE;</a></div>
967
+ <h2 class="title">
968
+ 3.3&nbsp;&nbsp;Tutorial
969
+ </h2>
970
+ <div class="content"><p>Now that you know <a class="xref" href="#shell" title="Paragraph. Interactive shell">how to start the interactive shell</a>, let us walk through a quick demonstration that highlights the main features of <strong>Rumai</strong>. You can follow along by copying &amp; pasting the presented commands into the interactive shell.</p>
971
+
972
+ <p><div class="section">
973
+ <a name="Automated-client-arrangement"/><div class="nav" id="Automated-client-arrangement"><a title="Reverse jump to listing" href="#rev:Automated-client-arrangement">&equiv;</a><a title="Jump to previous segment" href="#Tutorial">&#x25B3;</a><a title="Jump to next segment" href="#Multiple-client-grouping">&#x25BD;</a><a title="Jump to this segment" href="#Automated-client-arrangement">&#x25CE;</a></div>
974
+ <h3 class="title">
975
+ 3.3.1&nbsp;&nbsp;Automated client arrangement
976
+ </h3>
977
+ <div class="content"><p>Launch a few terminals so that we have something to work with: <pre class="code">colors = <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">%w[</span><span style=""> red green blue black orange brown gray navy gold </span><span style="color:#710">]</span></span>
978
+ colors.each {|c| system <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">xterm -bg </span><span style="background:#eee"><span style="font-weight:bold;color:#888">#{</span>c<span style="font-weight:bold;color:#888">}</span></span><span style=""> -title </span><span style="background:#eee"><span style="font-weight:bold;color:#888">#{</span>c<span style="font-weight:bold;color:#888">}</span></span><span style=""> -e read &amp;</span><span style="color:#710">&quot;</span></span> }
979
+ </pre></p>
980
+
981
+ <p>Arrange all clients in a grid: <pre class="code">curr_view.arrange_in_grid
982
+ </pre></p>
983
+
984
+ <p>Arrange all clients in a diamond shape: <pre class="code">curr_view.arrange_in_diamond
985
+ </pre></p>
986
+
987
+ <p>Arrange all clients like LarsWM does: <pre class="code">curr_view.arrange_as_larswm
988
+ </pre></p>
989
+
990
+ <p>Close the terminals we launched earlier: <pre class="code">terms = curr_view.clients.select {|c| colors.include? c.label.read }
991
+ terms.each {|c| c.kill }
992
+ </pre></p></div>
993
+ </div> <div class="section">
994
+ <a name="Multiple-client-grouping"/><div class="nav" id="Multiple-client-grouping"><a title="Reverse jump to listing" href="#rev:Multiple-client-grouping">&equiv;</a><a title="Jump to previous segment" href="#Automated-client-arrangement">&#x25B3;</a><a title="Jump to next segment" href="#Easy-column-manipulation">&#x25BD;</a><a title="Jump to this segment" href="#Multiple-client-grouping">&#x25CE;</a></div>
995
+ <h3 class="title">
996
+ 3.3.2&nbsp;&nbsp;Multiple client grouping
997
+ </h3>
998
+ <div class="content"><p>Launch a few terminals so that we have something to work with: <pre class="code">colors = <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">%w[</span><span style=""> red green blue black orange brown gray navy gold </span><span style="color:#710">]</span></span>
999
+ colors.each {|c| system <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">xterm -bg </span><span style="background:#eee"><span style="font-weight:bold;color:#888">#{</span>c<span style="font-weight:bold;color:#888">}</span></span><span style=""> -title </span><span style="background:#eee"><span style="font-weight:bold;color:#888">#{</span>c<span style="font-weight:bold;color:#888">}</span></span><span style=""> -e read &amp;</span><span style="color:#710">&quot;</span></span> }
1000
+ </pre></p>
1001
+
1002
+ <p>Add the red, green, and blue terminals into the &#8220;grouping&#8221;: <pre class="code">terms = curr_view.clients.select {|c| <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">%w[</span><span style="">red green blue</span><span style="color:#710">]</span></span>.include? c.label.read }
1003
+ terms.each {|c| c.group }
1004
+ </pre></p>
1005
+
1006
+ <p>You should now see a new button labelled as &#8221;<notextile>@</notextile>&#8221; on the left-hand side of wmii&#8217;s bar, indicating that there is now a new view labelled &#8221;<notextile>@</notextile>&#8221; in wmii. Let us inspect what clients this mysterious view contains: <pre class="code">v = <span style="color:#036;font-weight:bold">View</span>.new <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">@</span><span style="color:#710">&quot;</span></span>
1007
+ puts v.clients.map {|c| c.label.read }
1008
+ </pre></p>
1009
+
1010
+ <p>Aha! The mysterious view contains the red, green, and blue clients we recently &#8220;grouped&#8221;. Thus, by adding a client to the &#8220;grouping&#8221;, we are simply tagging the client with the &#8221;@&#8221; token.</p>
1011
+
1012
+ <p>Now that we have put some clients into the &#8220;grouping&#8221;, let us move all clients in the grouping to the floating area in the current view: <pre class="code">grouping.each {|c| c.send <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">toggle</span><span style="color:#710">&quot;</span></span> }
1013
+ </pre></p>
1014
+
1015
+ <p>Neat! Let us bring them back into the managed area: <pre class="code">grouping.each {|c| c.send <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">toggle</span><span style="color:#710">&quot;</span></span> }
1016
+ </pre></p>
1017
+
1018
+ <p>Close the terminals we launched earlier: <pre class="code">terms = curr_view.clients.select {|c| colors.include? c.label.read }
1019
+ terms.each {|c| c.kill }
1020
+ </pre></p>
1021
+
1022
+ <p>In summary, you can select multiple clients (by adding them to the &#8220;grouping&#8221;) and perform operations on them. This is useful when you want to do something with a group of clients but do not want to manually focus one, perform the action, focus the next one, and so on.</p>
1023
+
1024
+ <p>Another important aspect is that selected clients stay selected until they are unselected. This allows you to continue performing tasks on the selection without having to reselect the same clients after every operation.</p></div>
1025
+ </div> <div class="section">
1026
+ <a name="Easy-column-manipulation"/><div class="nav" id="Easy-column-manipulation"><a title="Reverse jump to listing" href="#rev:Easy-column-manipulation">&equiv;</a><a title="Jump to previous segment" href="#Multiple-client-grouping">&#x25B3;</a><a title="Jump to next segment" href="#Easy-client-manipulation">&#x25BD;</a><a title="Jump to this segment" href="#Easy-column-manipulation">&#x25CE;</a></div>
1027
+ <h3 class="title">
1028
+ 3.3.3&nbsp;&nbsp;Easy column manipulation
1029
+ </h3>
1030
+ <div class="content"><p>Launch a few terminals so that we have something to work with: <pre class="code">colors = <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">%w[</span><span style=""> red green blue black orange brown gray navy gold </span><span style="color:#710">]</span></span>
1031
+ colors.each {|c| system <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">xterm -bg </span><span style="background:#eee"><span style="font-weight:bold;color:#888">#{</span>c<span style="font-weight:bold;color:#888">}</span></span><span style=""> -title </span><span style="background:#eee"><span style="font-weight:bold;color:#888">#{</span>c<span style="font-weight:bold;color:#888">}</span></span><span style=""> -e read &amp;</span><span style="color:#710">&quot;</span></span> }
1032
+ </pre></p>
1033
+
1034
+ <p>You can insert a group of clients to the top, bottom, or after the currently focused client of <em>any</em> column using Array-like methods.</p>
1035
+
1036
+ <p>Give each client its own column (one client per column): <pre class="code">curr_view.each_column {|c| c.length = <span style="color:#00D;font-weight:bold">1</span> }
1037
+ </pre></p>
1038
+
1039
+ <p>Put (at most) three clients in every column: <pre class="code">curr_view.each_column {|c| c.length = <span style="color:#00D;font-weight:bold">3</span> }
1040
+ </pre></p>
1041
+
1042
+ <p>Move the red, green, and blue clients into the floating area: <pre class="code">rgb = <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">%w[</span><span style="">red green blue</span><span style="color:#710">]</span></span>
1043
+ terms = curr_view.clients.select {|c| rgb.include? c.label.read }
1044
+ curr_view.areas[<span style="color:#00D;font-weight:bold">0</span>].push terms
1045
+ </pre></p>
1046
+
1047
+ <p>Slurp all floating clients into the last column: <pre class="code">list = curr_view.areas
1048
+ a, b = list.first, list.last
1049
+ b.concat a
1050
+ </pre></p>
1051
+
1052
+ <p>Set the last column&#8217;s layout to stacking mode: <pre class="code">b.layout = <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">stack</span><span style="color:#710">'</span></span>
1053
+ </pre></p>
1054
+
1055
+ <p>Move the red, green, and blue clients to the top of the second column: <pre class="code">curr_view.areas[<span style="color:#00D;font-weight:bold">2</span>].unshift terms
1056
+ </pre></p>
1057
+
1058
+ <p>Move the red, green, and blue clients to the bottom of the third column: <pre class="code">curr_view.areas[<span style="color:#00D;font-weight:bold">3</span>].push terms
1059
+ </pre></p>
1060
+
1061
+ <p>Close the terminals we launched earlier: <pre class="code">terms = curr_view.clients.select {|c| colors.include? c.label.read }
1062
+ terms.each {|c| c.kill }
1063
+ </pre></p></div>
1064
+ </div> <div class="section">
1065
+ <a name="Easy-client-manipulation"/><div class="nav" id="Easy-client-manipulation"><a title="Reverse jump to listing" href="#rev:Easy-client-manipulation">&equiv;</a><a title="Jump to previous segment" href="#Easy-column-manipulation">&#x25B3;</a><a title="Jump to next segment" href="#Traversing-the-file-system">&#x25BD;</a><a title="Jump to this segment" href="#Easy-client-manipulation">&#x25CE;</a></div>
1066
+ <h3 class="title">
1067
+ 3.3.4&nbsp;&nbsp;Easy client manipulation
1068
+ </h3>
1069
+ <div class="content"><p>Launch a few terminals so that we have something to work with: <pre class="code">colors = <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">%w[</span><span style=""> red green blue black orange brown gray navy gold </span><span style="color:#710">]</span></span>
1070
+ colors.each {|c| system <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">xterm -bg </span><span style="background:#eee"><span style="font-weight:bold;color:#888">#{</span>c<span style="font-weight:bold;color:#888">}</span></span><span style=""> -title </span><span style="background:#eee"><span style="font-weight:bold;color:#888">#{</span>c<span style="font-weight:bold;color:#888">}</span></span><span style=""> -e read &amp;</span><span style="color:#710">&quot;</span></span> }
1071
+ </pre></p>
1072
+
1073
+ <p>Obtain a reference to the red client: <pre class="code">red = curr_view.clients.find {|c| c.label.read == <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">red</span><span style="color:#710">&quot;</span></span> }
1074
+ </pre></p>
1075
+
1076
+ <p>Show the red client&#8217;s current tags: <pre class="code">red.tags
1077
+ </pre></p>
1078
+
1079
+ <p>Add the &#8220;foo&#8221; and &#8220;bar&#8221; tags to the red client: <pre class="code">red.tag <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">foo</span><span style="color:#710">&quot;</span></span>, <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">bar</span><span style="color:#710">&quot;</span></span>
1080
+ </pre></p>
1081
+
1082
+ <p>Remove the &#8220;bar&#8221; tag from the red client: <pre class="code">red.untag <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">bar</span><span style="color:#710">&quot;</span></span>
1083
+ </pre></p>
1084
+
1085
+ <p>Do complex operations on the red client&#8217;s tags: <pre class="code">red.with_tags { concat <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">%w[</span><span style="">a b c</span><span style="color:#710">]</span></span>; push <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">z</span><span style="color:#710">'</span></span>; delete <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">c</span><span style="color:#710">'</span></span> }
1086
+ </pre></p>
1087
+
1088
+ <p>Focus the next client after the red client: <pre class="code">red.next.focus ; curr_client == red.next <span style="color:#666">#=&gt; true</span>
1089
+ </pre></p>
1090
+
1091
+ <p>Notice that by focusing a client, we make it the current client.</p>
1092
+
1093
+ <p>Focus the red client on a different view: <pre class="code">orig = curr_view
1094
+ v = red.views.last
1095
+ red.focus v
1096
+ </pre></p>
1097
+
1098
+ <p>Return to the original view: <pre class="code">orig.focus
1099
+ </pre></p>
1100
+
1101
+ <p>Send the red client to the last column: <pre class="code">red.send curr_view.areas.last
1102
+ </pre></p>
1103
+
1104
+ <p>Close the terminals we launched earlier: <pre class="code">terms = curr_view.clients.select {|c| colors.include? c.label.read }
1105
+ terms.each {|c| c.kill }
1106
+ </pre></p></div>
1107
+ </div> <div class="section">
1108
+ <a name="Traversing-the-file-system"/><div class="nav" id="Traversing-the-file-system"><a title="Reverse jump to listing" href="#rev:Traversing-the-file-system">&equiv;</a><a title="Jump to previous segment" href="#Easy-client-manipulation">&#x25B3;</a><a title="Jump to next segment" href="#Available-commands">&#x25BD;</a><a title="Jump to this segment" href="#Traversing-the-file-system">&#x25CE;</a></div>
1109
+ <h3 class="title">
1110
+ 3.3.5&nbsp;&nbsp;Traversing the file system
1111
+ </h3>
1112
+ <div class="content"><p>Show the root node of wmii&#8217;s IXP file system: <pre class="code">fs
1113
+ </pre></p>
1114
+
1115
+ <p>Show the names of all files at the root level: <pre class="code">fs.entries
1116
+ </pre></p>
1117
+
1118
+ <p>Show the parent of the root node: <pre class="code">fs.parent
1119
+ </pre></p>
1120
+
1121
+ <p>Show the children of the root node: <pre class="code">fs.children
1122
+ </pre></p>
1123
+
1124
+ <p>Navigate into to the <tt>/lbar/</tt> directory: <pre class="code">n1 = fs.lbar
1125
+ n2 = fs[<span style="background-color:#fff0f0;color:#D20"><span style="color:#710">'</span><span style="">lbar</span><span style="color:#710">'</span></span>]
1126
+ n1 == n2 <span style="color:#666">#=&gt; true</span>
1127
+ left_bar = n1
1128
+ </pre></p>
1129
+
1130
+ <p>Notice that you can traverse the file system hierarchy by simply calling methods on node objects. Alternatively, you can traverse by specifying an arbitrary sub-path (relative path) using the <code class="code">[]</code> operator on a node.</p>
1131
+
1132
+ <p>Create a new temporary button: <pre class="code">b = left_bar.rumai_example <span style="color:#666"># path of new button</span>
1133
+ b.exist? <span style="color:#666">#=&gt; false</span>
1134
+ b.create
1135
+ b.exist? <span style="color:#666">#=&gt; true</span>
1136
+ </pre></p>
1137
+
1138
+ <p>You should now see an empty button on the left-hand side of the wmii bar.</p>
1139
+
1140
+ <p>Color the button black-on-white and label it as &#8220;hello world&#8221;: <pre class="code">content = <span style="background-color:#fff0f0;color:#D20"><span style="color:#710">&quot;</span><span style="">#000000 #ffffff #000000 hello world</span><span style="color:#710">&quot;</span></span>
1141
+ b.write content
1142
+ b.read == content <span style="color:#666">#=&gt; true</span>
1143
+ </pre></p>
1144
+
1145
+ <p>Remove the temporary button: <pre class="code">b.remove
1146
+ b.exist? <span style="color:#666">#=&gt; false</span>
1147
+ </pre></p></div>
1148
+ </div> <div class="section">
1149
+ <a name="Available-commands"/><div class="nav" id="Available-commands"><a title="Reverse jump to listing" href="#rev:Available-commands">&equiv;</a><a title="Jump to previous segment" href="#Traversing-the-file-system">&#x25B3;</a><a title="Jump to next segment" href="#wmiirc">&#x25BD;</a><a title="Jump to this segment" href="#Available-commands">&#x25CE;</a></div>
1150
+ <h3 class="title">
1151
+ 3.3.6&nbsp;&nbsp;Available commands
1152
+ </h3>
1153
+ <div class="content"><p>Refer to the <code class="code"><span style="color:#036;font-weight:bold">Rumai</span></code> module in the <a href='api/index.html'>API documentation</a> for a complete list of commands (method calls, really) and their documentation.</p></div>
1154
+ </div></p></div>
1155
+ </div> <div class="section">
1156
+ <a name="wmiirc"/><div class="nav" id="wmiirc"><a title="Reverse jump to listing" href="#rev:wmiirc">&equiv;</a><a title="Jump to previous segment" href="#Available-commands">&#x25B3;</a><a title="Jump to next segment" href="#History">&#x25BD;</a><a title="Jump to this segment" href="#wmiirc">&#x25CE;</a></div>
1157
+ <h2 class="title">
1158
+ 3.4&nbsp;&nbsp;Scripting your wmiirc
1159
+ </h2>
1160
+ <div class="content"><p>One important application of <strong>Rumai</strong> is the support of Ruby-based <tt>wmiirc</tt> configuration files. For a solid example of such application, take a look at <a href='http://github.com/sunaku/wmiirc/tree/master'>my personal <tt>wmiirc</tt></a>.</p></div>
1161
+ </div></p></div>
1162
+ </div><div class="chapter">
1163
+ <a name="History"/><div class="nav" id="History"><a title="Reverse jump to listing" href="#rev:History">&equiv;</a><a title="Jump to previous segment" href="#wmiirc">&#x25B3;</a><a title="Jump to next segment" href="#Version-2.0.1-2009-01-20">&#x25BD;</a><a title="Jump to this segment" href="#History">&#x25CE;</a></div>
1164
+ <h1 class="title">
1165
+ Chapter&nbsp;4
1166
+ <br/>
1167
+ <big>History</big>
1168
+ </h1>
1169
+ <div class="content"><p><p><div class="section">
1170
+ <a name="Version-2.0.1-2009-01-20"/><div class="nav" id="Version-2.0.1-2009-01-20"><a title="Reverse jump to listing" href="#rev:Version-2.0.1-2009-01-20">&equiv;</a><a title="Jump to previous segment" href="#History">&#x25B3;</a><a title="Jump to next segment" href="#Bug-fixes">&#x25BD;</a><a title="Jump to this segment" href="#Version-2.0.1-2009-01-20">&#x25CE;</a></div>
1171
+ <h2 class="title">
1172
+ 4.1&nbsp;&nbsp;Version 2.0.1 (2009-01-20)
1173
+ </h2>
1174
+ <div class="content"><p>This release simplifies project administrivia using <a href='http://snk.tuxfamily.org/lib/inochi'>Inochi</a>, improves the unit tests, and revises the user manual.</p>
1175
+
1176
+ <p><div class="paragraph">
1177
+ <a name="Bug-fixes"/><div class="nav" id="Bug-fixes"><a title="Reverse jump to listing" href="#rev:Bug-fixes">&equiv;</a><a title="Jump to previous segment" href="#Version-2.0.1-2009-01-20">&#x25B3;</a><a title="Jump to next segment" href="#Housekeeping">&#x25BD;</a><a title="Jump to this segment" href="#Bug-fixes">&#x25CE;</a></div>
1178
+ <p class="title">Bug fixes</p>
1179
+ <div class="content"><ul>
1180
+ <li>The <tt>lib/rumai/ixp/message.rb</tt> library&#8217;s unit test would fail if <tt>/rbar/status</tt> did not already exist in wmii.</li>
1181
+ </ul></div>
1182
+ </div> <div class="paragraph">
1183
+ <a name="Housekeeping"/><div class="nav" id="Housekeeping"><a title="Reverse jump to listing" href="#rev:Housekeeping">&equiv;</a><a title="Jump to previous segment" href="#Bug-fixes">&#x25B3;</a>&#x25BD;<a title="Jump to this segment" href="#Housekeeping">&#x25CE;</a></div>
1184
+ <p class="title">Housekeeping</p>
1185
+ <div class="content"><ul>
1186
+ <li>
1187
+ <p>Store IXP socket address in <code class="code"><span style="color:#036;font-weight:bold">Rumai</span>::<span style="color:#036;font-weight:bold">IXP_SOCK_ADDR</span></code>.</p>
1188
+ </li>
1189
+
1190
+ <li>
1191
+ <p>Added missing test cases for (TR)create and (TR)remove messages in the unit test for the <tt>lib/rumai/ixp/message.rb</tt> library.</p>
1192
+ </li>
1193
+ </ul></div>
1194
+ </div></p></div>
1195
+ </div></p></p></div>
1196
+ </div></div>
1197
+
1198
+
1199
+ <br style="display: none"/>
1200
+ <hr style="display: none"/>
1201
+ <br style="display: none"/>
1202
+
1203
+
1204
+ <div id="footer">
1205
+
1206
+ Generated by <a href="http://snk.tuxfamily.org/lib/erbook/">ERBook 6.0.1</a> on Sun Jan 25 11:09:42 -0800 2009.
1207
+
1208
+ <div id="footer-credits">
1209
+ <p>
1210
+ <img class="icon" alt="caution" src="&icon_caution;"/>
1211
+ <img class="icon" alt="tip" src="&icon_tip;"/>
1212
+ <img class="icon" alt="important" src="&icon_important;"/>
1213
+ <img class="icon" alt="note" src="&icon_note;"/>
1214
+ <img class="icon" alt="warning" src="&icon_warning;"/>
1215
+ <img class="icon" alt="quote" src="&icon_quote;"/>
1216
+
1217
+ <br/>
1218
+
1219
+ The icons shown above are &copy; 2005 <a href="http://tango.freedesktop.org">Tango Desktop Project</a>. They are part of the <a href="http://tango.freedesktop.org/Tango_Icon_Library">Tango Icon Theme</a> set, which is distributed under the <a href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License Agreement</a>.
1220
+ </p>
1221
+
1222
+ <p>
1223
+ <img class="icon" alt="link" src="&icon_link;"/>
1224
+
1225
+ <br/>
1226
+
1227
+ The icons shown above are &copy; 2007 <a href="https://www.ohloh.net/projects/mediawiki/contributors">MediaWiki contributors</a>. They are part of the <a href="http://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a> software, which is distributed under the <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, version 2</a>.
1228
+ </p>
1229
+ </div>
1230
+
1231
+ </div>
1232
+
1233
+ </div>
1234
+ </body>
1235
+ </html>