<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>DomTool/LanguageReference</title><revhistory><revision><revnumber>162</revnumber><date>2010-01-27 11:43:02</date><authorinitials>AdamChlipala</authorinitials><revremark>Address DanielWagner's comment</revremark></revision><revision><revnumber>161</revnumber><date>2010-01-26 20:27:53</date><authorinitials>LVN513-10.cis.UPENN.EDU</authorinitials><revremark>whine about domtool a bit</revremark></revision><revision><revnumber>160</revnumber><date>2008-07-07 04:27:50</date><authorinitials>localhost</authorinitials><revremark>converted to 1.6 markup</revremark></revision><revision><revnumber>159</revnumber><date>2008-04-30 15:04:27</date><authorinitials>AdamChlipala</authorinitials><revremark>deleuze -&gt; hcoop</revremark></revision><revision><revnumber>158</revnumber><date>2008-04-02 00:47:09</date><authorinitials>MichaelOlson</authorinitials><revremark>Make this writable only by people who have usernames on the wiki to avoid vandalism</revremark></revision><revision><revnumber>157</revnumber><date>2008-04-01 15:03:54</date><authorinitials>AdamChlipala</authorinitials><revremark>Revert to revision 154.</revremark></revision><revision><revnumber>156</revnumber><date>2008-04-01 12:46:30</date><authorinitials>202.28.27.4</authorinitials><revremark>. - http://65yhe789ohi3.cn/aforcemorepowerful.html a force more powerful - http://65yhe789ohi3.cn/colliedogpictures.html collie dog pictures - http://65yhe789ohi3.cn/legalmalpracticelawyerflorida.html</revremark></revision><revision><revnumber>155</revnumber><date>2008-04-01 10:26:32</date><authorinitials>202.28.27.3</authorinitials><revremark>. - http://4hyp34u3434y.cn/floodwatch.html flood watch - http://4hyp34u3434y.cn/werewolfimages.html werewolf images - http://4hyp34u3434y.cn/sheetzgas.html sheetz gas - http://4hyp34u3434y.cn/airforce</revremark></revision><revision><revnumber>154</revnumber><date>2008-03-28 11:35:58</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 149.</revremark></revision><revision><revnumber>153</revnumber><date>2008-03-28 09:39:11</date><authorinitials>133.10.236.3</authorinitials><revremark>. - http://wgb8g9f3wb.cn/penilefitness.html penile fitness - http://wgb8g9f3wb.cn/marketingmixarticle.html marketing mix article - http://wgb8g9f3wb.cn/prozzaksuckstobeyou.html prozzak sucks to be you</revremark></revision><revision><revnumber>152</revnumber><date>2008-03-28 05:37:24</date><authorinitials>97-81-19-227.static.gwnt.ga.charter.com</authorinitials><revremark>. - http://vyiuweg43.cn/gasolinecomposition.html gasoline composition - http://vyiuweg43.cn/buyingplanetickets.html buying plane tickets - http://vyiuweg43.cn/famousarchaeologists.html famous archaeol</revremark></revision><revision><revnumber>151</revnumber><date>2008-03-28 01:22:11</date><authorinitials>202.28.27.4</authorinitials><revremark>. - http://vu65f8vt7.cn/alcoholicpunchdrinks.html alcoholic punch drinks - http://vu65f8vt7.cn/romamaffianude.html roma maffia nude - http://vu65f8vt7.cn/libertytexashighschool.html liberty texas high</revremark></revision><revision><revnumber>150</revnumber><date>2008-03-27 23:16:01</date><authorinitials>202.28.27.4</authorinitials><revremark>. - http://kityiktg.cn/gunsandrosestour.html guns and roses tour - http://kityiktg.cn/individualcareerplan.html individual career plan - http://kityiktg.cn/kelseybriggs.html kelsey briggs - http://kit</revremark></revision><revision><revnumber>149</revnumber><date>2008-03-27 21:38:49</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 132.</revremark></revision><revision><revnumber>148</revnumber><date>2008-03-27 18:51:00</date><authorinitials>202.28.27.4</authorinitials><revremark>. - http://ihjgpagbofg.cn/corrymorrow.html corry morrow - http://ihjgpagbofg.cn/rcavictorbakeliteradio.html rca victor bakelite radio - http://ihjgpagbofg.cn/bussecombatknives.html busse combat knives</revremark></revision><revision><revnumber>147</revnumber><date>2008-03-27 07:39:57</date><authorinitials>ip-72-55-137-212.static.privatedns.com</authorinitials><revremark>. - http://gwentgwl.cn/northwestairlinescreditcard.html northwest airlines credit card - http://gwentgwl.cn/bubblegumfacts.html bubblegum facts - http://gwentgwl.cn/floridarealestatetest.html florida</revremark></revision><revision><revnumber>146</revnumber><date>2008-03-27 00:25:57</date><authorinitials>133.10.236.3</authorinitials><revremark>. - http://gdhnpsgge.cn/ecclectic.html ecclectic - http://gdhnpsgge.cn/wolstenholme.html wolstenholme - http://gdhnpsgge.cn/exhibitionistflasher.html exhibitionist flasher - http://gdhnpsgge.cn/mapofl</revremark></revision><revision><revnumber>145</revnumber><date>2008-03-26 17:43:34</date><authorinitials>86.96.226.15</authorinitials><revremark>. - http://gabdgpiab.cn/lyricadrug.html lyrica drug - http://gabdgpiab.cn/powerpointaudio.html powerpoint audio - http://gabdgpiab.cn/poolsafetyequipment.html pool safety equipment - http://gabdgpiab.</revremark></revision><revision><revnumber>144</revnumber><date>2008-03-26 15:19:43</date><authorinitials>adsl196-190-249-217-196.adsl196-16.iam.net.ma</authorinitials><revremark>. - http://f8cpbivoou.cn/19446.html 19446 - http://f8cpbivoou.cn/columbuscommunityhospital.html columbus community hospital - http://f8cpbivoou.cn/slayerraining.html slayer raining - http://f8cpbivoou</revremark></revision><revision><revnumber>143</revnumber><date>2008-03-26 12:40:11</date><authorinitials>133.10.236.3</authorinitials><revremark>. - http://bv89ft3o.cn/defineempirical.html define empirical - http://bv89ft3o.cn/debtsettlementamerica.html debt settlement america - http://bv89ft3o.cn/houstontransit.html houston transit - http://b</revremark></revision><revision><revnumber>142</revnumber><date>2008-03-26 10:17:16</date><authorinitials>91.74.160.18</authorinitials><revremark>. - http://buo7879.cn/2003populationinunitedstates.html 2003 population in united states - http://buo7879.cn/chinatraintravel.html china train travel - http://buo7879.cn/staceystorey.html stacey store</revremark></revision><revision><revnumber>141</revnumber><date>2008-03-25 17:55:21</date><authorinitials>133.10.236.3</authorinitials><revremark>. - http://3wn7g803whg.cn/planningmanagementofficerelocation.html planning management office relocation - http://3wn7g803whg.cn/pulmonaryedemasymptoms.html pulmonary edema symptoms - http://3wn7g803wh</revremark></revision><revision><revnumber>140</revnumber><date>2008-03-24 21:55:17</date><authorinitials>222.127.228.6</authorinitials><revremark>. - http://wethw9ethhwe.cn/diaperpailfriends.html diaper pail friends - http://wethw9ethhwe.cn/capitalletters.html capital letters - http://wethw9ethhwe.cn/mcsparkyd.html mc sparky d - http://wethw9et</revremark></revision><revision><revnumber>139</revnumber><date>2008-03-24 19:27:48</date><authorinitials>212.35.107.52</authorinitials><revremark>. - http://wegh8ewghlwe.cn/innie.html innie - http://wegh8ewghlwe.cn/markturner.html mark turner - http://wegh8ewghlwe.cn/commentcard.html comment card - http://wegh8ewghlwe.cn/readingtruckbodies.html</revremark></revision><revision><revnumber>138</revnumber><date>2008-03-24 11:57:12</date><authorinitials>softbank218125012129.bbtec.net</authorinitials><revremark>. - http://herherher.cn/mapofkauaihawaii.html map of kauai hawaii - http://herherher.cn/minigardenflags.html mini garden flags - http://herherher.cn/manudibango.html manu dibango - http://herherher.cn</revremark></revision><revision><revnumber>137</revnumber><date>2008-03-24 07:09:56</date><authorinitials>222.127.228.6</authorinitials><revremark>. - http://h43yhrheyh.cn/newyeargreetings.html new year greetings - http://h43yhrheyh.cn/cleansingenema.html cleansing enema - http://h43yhrheyh.cn/nhlrumours.html nhl rumours - http://h43yhrheyh.cn/l</revremark></revision><revision><revnumber>136</revnumber><date>2008-03-24 02:21:30</date><authorinitials>82.198.250.80</authorinitials><revremark>. - http://gw3780gb.cn/whitedeerrun.html white deer run - http://gw3780gb.cn/championcrossplugreferencespark.html champion cross plug reference spark - http://gw3780gb.cn/japanesesauces.html japanese</revremark></revision><revision><revnumber>135</revnumber><date>2008-03-23 23:46:47</date><authorinitials>222.127.228.6</authorinitials><revremark>. - http://gjwev762f.cn/pianoweddingmusic.html piano wedding music - http://gjwev762f.cn/selfincrimination.html self incrimination - http://gjwev762f.cn/sitefurnishings.html site furnishings - http://</revremark></revision><revision><revnumber>134</revnumber><date>2008-03-23 21:26:24</date><authorinitials>222.127.228.6</authorinitials><revremark>. - http://ghwe986g9w.cn/101waysto.html 101 ways to - http://ghwe986g9w.cn/marianasoane.html mariana soane - http://ghwe986g9w.cn/caseykotchman.html casey kotchman - http://ghwe986g9w.cn/giantesscomic</revremark></revision><revision><revnumber>133</revnumber><date>2008-03-23 19:02:55</date><authorinitials>69-217-73-52.ded.ameritech.net</authorinitials><revremark>. - http://ghwe807ghlg.cn/2005malibu.html 2005 malibu - http://ghwe807ghlg.cn/didomp3.html dido mp3 - http://ghwe807ghlg.cn/sharksweeper.html shark sweeper - http://ghwe807ghlg.cn/westpharmaceutical.h</revremark></revision><revision><revnumber>132</revnumber><date>2008-03-23 17:14:25</date><authorinitials>AdamChlipala</authorinitials><revremark>Revert to revision 125.</revremark></revision><revision><revnumber>131</revnumber><date>2008-03-23 16:33:35</date><authorinitials>212.35.107.52</authorinitials><revremark>. - http://ghe8ghwelgh.cn/celebritypiercing.html celebrity piercing - http://ghe8ghwelgh.cn/cryptographyhistory.html cryptography history - http://ghe8ghwelgh.cn/stalagmite.html stalagmite - http://gh</revremark></revision><revision><revnumber>130</revnumber><date>2008-03-23 12:00:09</date><authorinitials>133.10.236.3</authorinitials><revremark>. - http://gewhg0eygieh.cn/sandiegoprintingcompany.html san diego printing company - http://gewhg0eygieh.cn/inkcartridgesfordell720printer.html ink cartridges for dell 720 printer - http://gewhg0eygie</revremark></revision><revision><revnumber>129</revnumber><date>2008-03-23 06:46:47</date><authorinitials>82.198.250.80</authorinitials><revremark>. - http://geh90thwep.cn/diablo2expansioncdkey.html diablo 2 expansion cd key - http://geh90thwep.cn/asianfantasy.html asian fantasy - http://geh90thwep.cn/marshallfieldscoupons.html marshall fields c</revremark></revision><revision><revnumber>128</revnumber><date>2008-03-23 04:07:07</date><authorinitials>212.35.107.52</authorinitials><revremark>. - http://gegj5w5yy4.cn/blackrebelmotorcycleclublyrics.html black rebel motorcycle club lyrics - http://gegj5w5yy4.cn/gamberjohnson.html gamber johnson - http://gegj5w5yy4.cn/kiroromp3.html kiroro mp</revremark></revision><revision><revnumber>127</revnumber><date>2008-03-22 22:26:32</date><authorinitials>222.127.228.6</authorinitials><revremark>. - http://gbw89gw3bew.cn/pathtrainschedule.html path train schedule - http://gbw89gw3bew.cn/wacs.html wacs - http://gbw89gw3bew.cn/boschfuelinjectors.html bosch fuel injectors - http://gbw89gw3bew.cn</revremark></revision><revision><revnumber>126</revnumber><date>2008-03-22 22:26:18</date><authorinitials>61.144.35.46</authorinitials><revremark>. - http://gbw89gw3bew.cn/pathtrainschedule.html path train schedule - http://gbw89gw3bew.cn/wacs.html wacs - http://gbw89gw3bew.cn/boschfuelinjectors.html bosch fuel injectors - http://gbw89gw3bew.cn</revremark></revision><revision><revnumber>125</revnumber><date>2008-03-22 22:04:10</date><authorinitials>tools.cernio.com</authorinitials><revremark>Revert to revision 110.</revremark></revision><revision><revnumber>124</revnumber><date>2008-03-22 19:54:24</date><authorinitials>222.127.228.6</authorinitials><revremark>. - http://gbw837tgowilg.cn/suvbodykits.html suv body kits - http://gbw837tgowilg.cn/foodserving.html food serving - http://gbw837tgowilg.cn/discounthobby.html discount hobby - http://gbw837tgowilg.cn</revremark></revision><revision><revnumber>123</revnumber><date>2008-03-22 17:42:44</date><authorinitials>212.35.107.52</authorinitials><revremark>. - http://g45h9gh4hgpo.cn/guadalcanaldiary.html guadalcanal diary - http://g45h9gh4hgpo.cn/carshipment.html car shipment - http://g45h9gh4hgpo.cn/babyeinsteinvideos.html baby einstein videos - http:/</revremark></revision><revision><revnumber>122</revnumber><date>2008-03-22 13:07:47</date><authorinitials>222.127.228.6</authorinitials><revremark>. - http://fv379fviw.cn/salu.html salu - http://fv379fviw.cn/stainlesssteelprices.html stainless steel prices - http://fv379fviw.cn/spidermangallery.html spider man gallery - http://fv379fviw.cn/bradl</revremark></revision><revision><revnumber>121</revnumber><date>2008-03-22 06:21:34</date><authorinitials>212.35.107.52</authorinitials><revremark>. - http://bwgt89tge.cn/accessvirus.html access virus - http://bwgt89tge.cn/elpasoimports.html el paso imports - http://bwgt89tge.cn/usedprintingmachines.html used printing machines - http://bwgt89tge</revremark></revision><revision><revnumber>120</revnumber><date>2008-03-22 04:04:51</date><authorinitials>58.56.7.164</authorinitials><revremark>. - http://bgw8egog343.cn/greenmagazine.html green magazine - http://bgw8egog343.cn/laketahoewebcam.html lake tahoe webcam - http://bgw8egog343.cn/hotelsnearfoxwoods.html hotels near foxwoods - http:/</revremark></revision><revision><revnumber>119</revnumber><date>2008-03-21 23:41:50</date><authorinitials>212.35.107.52</authorinitials><revremark>. - http://4hyyhhehehe.cn/cinchshirts.html cinch shirts - http://4hyyhhehehe.cn/vealstew.html veal stew - http://4hyyhhehehe.cn/flashscript.html flash script - http://4hyyhhehehe.cn/killmuslims.html k</revremark></revision><revision><revnumber>118</revnumber><date>2008-03-21 23:09:01</date><authorinitials>hilbert.informatik.uni-freiburg.de</authorinitials><revremark>., http://b3gik3f334.cn/wagaero.html wag aero  8-PP, http://b3gik3f334.cn/reggioemiliaapproach.html reggio emilia approach  dwe, http://b3gik3f334.cn/teenscreen.html teenscreen  izdrtr, http://b3gik3f</revremark></revision><revision><revnumber>117</revnumber><date>2008-03-21 11:32:46</date><authorinitials>222.127.228.6</authorinitials><revremark>., http://terhhpt4h.cn/sparksdrink.html sparks drink  &gt;:-[[, http://terhhpt4h.cn/hotnaughtywives.html hot naughty wives  %-)), http://terhhpt4h.cn/kentuckyhousingcorporation.html kentucky housing corp</revremark></revision><revision><revnumber>116</revnumber><date>2008-03-21 08:38:35</date><authorinitials>69-217-73-52.ded.ameritech.net</authorinitials><revremark>., http://tehrthoeuh.cn/highschoolessays.html high school essays  13764, http://tehrthoeuh.cn/orangecountytollroads.html orange county toll roads  6335, http://tehrthoeuh.cn/wineandcheeseparty.html wi</revremark></revision><revision><revnumber>115</revnumber><date>2008-03-21 05:21:20</date><authorinitials>core_pool_1_75.emcali.net.co</authorinitials><revremark>., http://kjbvfsdlk73.cn/cityofthorntoncolorado.html city of thornton colorado  ldtt, http://kjbvfsdlk73.cn/orlandobloomfiles.html orlando bloom files  ppngkb, http://kjbvfsdlk73.cn/sicilytours.html s</revremark></revision><revision><revnumber>114</revnumber><date>2008-03-21 00:22:41</date><authorinitials>core_pool_1_75.emcali.net.co</authorinitials><revremark>. - http://coolbeast.webng.com/ninobacci.html nino bacci - http://coolbeast.webng.com/coronetbeddrape.html coronet bed drape - http://coolbeast.webng.com/hilleryduffnude.html hillery duff nude - http:</revremark></revision><revision><revnumber>113</revnumber><date>2008-03-20 23:08:25</date><authorinitials>222.127.228.6</authorinitials><revremark>., http://jkbnelkbg.cn/newyorkcitymedicalmalpracticeattorneys.html new york city medical malpractice attorneys  qpe, http://jkbnelkbg.cn/crappedpants.html crapped pants  %-), http://jkbnelkbg.cn/tenth</revremark></revision><revision><revnumber>112</revnumber><date>2008-03-20 22:34:40</date><authorinitials>222.127.228.6</authorinitials><revremark>. - http://coolbeast.summerhost.info/lindalusardi.html linda lusardi - http://coolbeast.summerhost.info/melindastolp.html melinda stolp - http://coolbeast.summerhost.info/zettaikareshi.html zettai kar</revremark></revision><revision><revnumber>111</revnumber><date>2008-03-20 18:49:19</date><authorinitials>222.127.228.6</authorinitials><revremark>. - http://coolbeas.angelcities.com/frillyknickers.html frilly knickers - http://coolbeas.angelcities.com/tittes.html tittes - http://coolbeas.angelcities.com/jenniferconnelynude.html jennifer connely</revremark></revision><revision><revnumber>110</revnumber><date>2008-03-20 12:04:20</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 106.</revremark></revision><revision><revnumber>109</revnumber><date>2008-03-20 08:18:24</date><authorinitials>core_pool_1_75.emcali.net.co</authorinitials><revremark>., http://h5897go45i.cn/canopytours.html canopy tours  lnorjm, http://h5897go45i.cn/abortionquotes.html abortion quotes  %)), http://h5897go45i.cn/rollingdufflebag.html rolling duffle bag  &gt;:OO, http:</revremark></revision><revision><revnumber>108</revnumber><date>2008-03-20 05:08:49</date><authorinitials>222.127.228.6</authorinitials><revremark>., http://giwugf74.cn/dynamicip.html dynamic ip  eahfrz, http://giwugf74.cn/rcgascars.html r c gas cars  qmvk, http://giwugf74.cn/liberatorpillow.html liberator pillow  xdjido, http://giwugf74.cn/sand</revremark></revision><revision><revnumber>107</revnumber><date>2008-03-19 23:30:43</date><authorinitials>222.127.228.6</authorinitials><revremark>., http://gh83705tg.cn/focusfilms.html focus films  727645, http://gh83705tg.cn/thorlabs.html thorlabs  8-))), http://gh83705tg.cn/californiastatepolytechnicuniversity.html california state polytechni</revremark></revision><revision><revnumber>106</revnumber><date>2008-03-19 22:10:00</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 104.</revremark></revision><revision><revnumber>105</revnumber><date>2008-03-19 13:14:27</date><authorinitials>adsl196-190-249-217-196.adsl196-16.iam.net.ma</authorinitials><revremark>., http://gh49hg.cn/toole.html toole  =-[[[, http://gh49hg.cn/revolutionfootballhelmet.html revolution football helmet  732379, http://gh49hg.cn/buckheadhotels.html buckhead hotels  &gt;:), http://gh49hg</revremark></revision><revision><revnumber>104</revnumber><date>2008-03-19 11:57:33</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 101.</revremark></revision><revision><revnumber>103</revnumber><date>2008-03-19 10:32:04</date><authorinitials>91.74.160.18</authorinitials><revremark>., http://gh49700945.cn/automechanic.html automechanic  :)), http://gh49700945.cn/freepeoplefinderservices.html free people finder services  gyujd, http://gh49700945.cn/writingchemicalformulas.html wr</revremark></revision><revision><revnumber>102</revnumber><date>2008-03-19 05:35:58</date><authorinitials>core_pool_1_75.emcali.net.co</authorinitials><revremark>., http://gh37y3p.cn/newreleaseddvd.html new released dvd  tbrj, http://gh37y3p.cn/falo.html falo  npnhkx, http://gh37y3p.cn/romanticvalentinesgifts.html romantic valentines gifts  %)), http://gh37y3p</revremark></revision><revision><revnumber>101</revnumber><date>2008-03-18 23:14:45</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 96.</revremark></revision><revision><revnumber>100</revnumber><date>2008-03-18 21:50:49</date><authorinitials>core_pool_1_75.emcali.net.co</authorinitials><revremark>., http://gb8ke.cn/treeline.html tree line  :-P, http://gb8ke.cn/duvalcountyclerk.html duval county clerk  &gt;:-DDD, http://gb8ke.cn/picturesofjohnwaynegacy.html pictures of john wayne gacy  861853, htt</revremark></revision><revision><revnumber>99</revnumber><date>2008-03-18 19:19:56</date><authorinitials>nla58-2-88-163-28-1.fbx.proxad.net</authorinitials><revremark>., http://gb8e7g.cn/raymondcobb.html raymond cobb  :DDD, http://gb8e7g.cn/communicationinbusiness.html communication in business  =[, http://gb8e7g.cn/dariofo.html dario fo  stn, http://gb8e7g.cn/nodr</revremark></revision><revision><revnumber>98</revnumber><date>2008-03-18 01:14:23</date><authorinitials>69-217-73-52.ded.ameritech.net</authorinitials><revremark>., http://fg346f7g934fg.cn/pioneerparts.html pioneer parts  70660, http://fg346f7g934fg.cn/trendenterprises.html trend enterprises  718, http://fg346f7g934fg.cn/benjaminfranklinpicture.html benjamin f</revremark></revision><revision><revnumber>97</revnumber><date>2008-03-17 22:30:44</date><authorinitials>61.28.1.91</authorinitials><revremark>., http://fg3469t.cn/warsawmo.html warsaw mo  uta, http://fg3469t.cn/earbleeding.html ear bleeding  =-]]], http://fg3469t.cn/wowdruid.html wow druid  =[[[, http://fg3469t.cn/tularerealestate.html tula</revremark></revision><revision><revnumber>96</revnumber><date>2008-03-17 13:27:23</date><authorinitials>c-24-4-1-236.hsd1.ca.comcast.net</authorinitials><revremark>revert to rev 93</revremark></revision><revision><revnumber>95</revnumber><date>2008-03-17 12:51:58</date><authorinitials>91.74.160.18</authorinitials><revremark>., http://khvzi76e.cn/poetryclubs.html poetry clubs 8-PP, http://khvzi76e.cn/edithjones.html edith jones 008, http://khvzi76e.cn/iloveyousong.html i love you song :-))), http://khvzi76e.cn/venous.html</revremark></revision><revision><revnumber>94</revnumber><date>2008-03-17 11:58:41</date><authorinitials>222.127.228.6</authorinitials><revremark>., http://f3g7fg63o.cn/peerreviewedjournals.html peer reviewed journals  8-)), http://f3g7fg63o.cn/truckwrap.html truck wrap  =OO, http://f3g7fg63o.cn/emersonprocess.html emerson process  516836, http</revremark></revision><revision><revnumber>93</revnumber><date>2008-03-17 09:37:22</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 90.</revremark></revision><revision><revnumber>92</revnumber><date>2008-03-17 09:28:45</date><authorinitials>222.127.228.6</authorinitials><revremark>., http://f3g67tg39iofg.cn/betsyfieldsdesign.html betsy fields design  &gt;:), http://f3g67tg39iofg.cn/bangersandmash.html bangers and mash  :-(((, http://f3g67tg39iofg.cn/lafawnduh.html lafawnduh  45719</revremark></revision><revision><revnumber>91</revnumber><date>2008-03-17 06:59:20</date><authorinitials>222.127.228.6</authorinitials><revremark>., http://hgeo8wo7.cn/arkansasemployment.html arkansas employment 8-]], http://hgeo8wo7.cn/lgdishwashers.html lg dishwashers %-]], http://hgeo8wo7.cn/regionfree.html region free kfnv, http://hgeo8wo7.</revremark></revision><revision><revnumber>90</revnumber><date>2008-03-17 02:04:14</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 88.</revremark></revision><revision><revnumber>89</revnumber><date>2008-03-17 01:43:15</date><authorinitials>222.127.228.6</authorinitials><revremark>., http://bnvg8o3g.cn/oldfarmhouse.html old farm house  7743, http://bnvg8o3g.cn/obliviontrailer.html oblivion trailer  cdf, http://bnvg8o3g.cn/euthanasiafact.html euthanasia fact  6258, http://bnvg8o</revremark></revision><revision><revnumber>88</revnumber><date>2008-03-16 23:13:43</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 86.</revremark></revision><revision><revnumber>87</revnumber><date>2008-03-16 22:50:43</date><authorinitials>218.63.252.219</authorinitials><revremark>., http://gw3h879gt3o.cn/mainerealestatelisting.html maine real estate listing %OOO, http://gw3h879gt3o.cn/weavervillenorthcarolinarealestate.html weaverville north carolina real estate zsqrcg, http:/</revremark></revision><revision><revnumber>86</revnumber><date>2008-03-16 21:49:00</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 84.</revremark></revision><revision><revnumber>85</revnumber><date>2008-03-16 20:56:23</date><authorinitials>58.56.7.164</authorinitials><revremark>., http://gnewjp98h43.cn/shrekfiona.html shrek fiona 943, http://gnewjp98h43.cn/oceancitymdboardwalkhotels.html ocean city md boardwalk hotels 74258, http://gnewjp98h43.cn/newhomebasedbusinessopportun</revremark></revision><revision><revnumber>84</revnumber><date>2008-03-16 14:25:58</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 82.</revremark></revision><revision><revnumber>83</revnumber><date>2008-03-16 13:25:39</date><authorinitials>69-217-73-52.ded.ameritech.net</authorinitials><revremark>., http://ghew874.cn/sportsillistratedswimsuit.html sports illistrated swimsuit zmhfhc, http://ghew874.cn/trailerramp.html trailer ramp &gt;:), http://ghew874.cn/mattressdiscounter.html mattress discount</revremark></revision><revision><revnumber>82</revnumber><date>2008-03-16 12:48:29</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>81</revnumber><date>2008-03-16 11:36:02</date><authorinitials>panaceq.homedsl.net1.cc</authorinitials><revremark>., http://gheoygwo3.cn/koy.html koy 726, http://gheoygwo3.cn/watkinsmotor.html watkins motor %))), http://gheoygwo3.cn/gaelicwords.html gaelic words =-PPP, http://gheoygwo3.cn/alexanderthegreathistory</revremark></revision><revision><revnumber>80</revnumber><date>2008-03-16 09:28:07</date><authorinitials>222.127.228.7</authorinitials><revremark>., http://gheoyg.cn/usedgardentractors.html used garden tractors :((, http://gheoyg.cn/keystonelight.html keystone light ikzn, http://gheoyg.cn/moscowpictures.html moscow pictures ftbwl, http://gheoyg</revremark></revision><revision><revnumber>79</revnumber><date>2008-03-16 08:03:34</date><authorinitials>DavidCrawshaw</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>78</revnumber><date>2008-03-16 07:19:23</date><authorinitials>193.194.94.15</authorinitials><revremark>., http://ghbew873o.cn/restaurantforlease.html restaurant for lease 507715, http://ghbew873o.cn/replacementlaptopbattery.html replacement laptop battery cmw, http://ghbew873o.cn/triax.html triax rgik,</revremark></revision><revision><revnumber>77</revnumber><date>2008-03-16 04:16:10</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>76</revnumber><date>2008-03-16 02:57:36</date><authorinitials>220.160.127.221</authorinitials><revremark>., http://gh873g3o.cn/blackunicorns.html black unicorns swhv, http://gh873g3o.cn/treeimages.html tree images &gt;:-))), http://gh873g3o.cn/theblackunicorn.html the black unicorn 3974, http://gh873g3o.cn/</revremark></revision><revision><revnumber>75</revnumber><date>2008-03-15 18:57:56</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>74</revnumber><date>2008-03-15 18:53:11</date><authorinitials>222.127.228.8</authorinitials><revremark>., http://gewh790y4h.cn/fyimusic.html fyi music dmrd, http://gewh790y4h.cn/heatsink.html heatsink 019860, http://gewh790y4h.cn/teenswinger.html teen swinger axphqt, http://gewh790y4h.cn/hurricanedrink</revremark></revision><revision><revnumber>73</revnumber><date>2008-03-15 16:54:12</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>72</revnumber><date>2008-03-15 16:48:42</date><authorinitials>222.127.228.8</authorinitials><revremark>., http://geh9y34h.cn/stresa.html stresa 001554, http://geh9y34h.cn/swedishmeatballrecipe.html swedish meatball recipe 686526, http://geh9y34h.cn/blondewig.html blonde wig 8OO, http://geh9y34h.cn/bras</revremark></revision><revision><revnumber>71</revnumber><date>2008-03-15 13:30:29</date><authorinitials>AdamChlipala</authorinitials><revremark>Revert to revision 69.</revremark></revision><revision><revnumber>70</revnumber><date>2008-03-15 12:24:07</date><authorinitials>222.127.228.7</authorinitials><revremark>., http://geh70y4o.cn/catsillnesssymptoms.html cats illness symptoms 899, http://geh70y4o.cn/caldecottwinners.html caldecott winners 560370, http://geh70y4o.cn/australianblueheeler.html australian blu</revremark></revision><revision><revnumber>69</revnumber><date>2008-03-15 10:38:43</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>68</revnumber><date>2008-03-15 10:27:18</date><authorinitials>222.127.228.5</authorinitials><revremark>., http://gbyero7to.cn/paginasamarillasmexico.html paginas amarillas mexico ncdanf, http://gbyero7to.cn/spousalvisas.html spousal visas 06450, http://gbyero7to.cn/harbourstation.html harbour station 3</revremark></revision><revision><revnumber>67</revnumber><date>2008-03-15 06:23:15</date><authorinitials>69-217-73-52.ded.ameritech.net</authorinitials><revremark>., http://g80totto.cn/howtokillsomeone.html how to kill someone &gt;:P, http://g80totto.cn/dysondc15.html dyson dc15 bqtsfv, http://g80totto.cn/obesegirls.html obese girls %-((, http://g80totto.cn/brosis</revremark></revision><revision><revnumber>66</revnumber><date>2008-03-15 04:20:50</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>65</revnumber><date>2008-03-15 04:14:17</date><authorinitials>adsl196-190-249-217-196.adsl196-16.iam.net.ma</authorinitials><revremark>., http://g3h879g3to.cn/ktvk.html ktvk ssw, http://g3h879g3to.cn/hsbcukinternetbanking.html hsbc uk internet banking jcz, http://g3h879g3to.cn/thomasthetrainrides.html thomas the train rides tswv, htt</revremark></revision><revision><revnumber>64</revnumber><date>2008-03-15 02:40:39</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>63</revnumber><date>2008-03-15 01:51:19</date><authorinitials>222.127.228.5</authorinitials><revremark>., http://fvkjfgdjf.cn/consultantjob.html consultant job =)), http://fvkjfgdjf.cn/bernardmalamud.html bernard malamud 36092, http://fvkjfgdjf.cn/circleofdust.html circle of dust cfcen, http://fvkjfgdj</revremark></revision><revision><revnumber>62</revnumber><date>2008-03-15 01:34:39</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>61</revnumber><date>2008-03-14 23:56:30</date><authorinitials>222.127.228.5</authorinitials><revremark>., http://fvb76w3g.cn/usopentennistickets.html us open tennis tickets 46427, http://fvb76w3g.cn/krisfreeman.html kris freeman 51887, http://fvb76w3g.cn/servicestationequipment.html service station equ</revremark></revision><revision><revnumber>60</revnumber><date>2008-03-14 14:16:07</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>59</revnumber><date>2008-03-14 13:50:36</date><authorinitials>222.127.228.23</authorinitials><revremark>., http://sgdfui6e8.cn/christianfundraisers.html christian fund raisers olhhka, http://sgdfui6e8.cn/moldingmachines.html molding machines 421, http://sgdfui6e8.cn/manpiss.html man piss hxhep, http://s</revremark></revision><revision><revnumber>58</revnumber><date>2008-03-14 11:52:03</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>57</revnumber><date>2008-03-14 08:45:54</date><authorinitials>121.15.200.148</authorinitials><revremark>., http://sadpjfpah.cn/laserhair.html laser hair =-)), http://sadpjfpah.cn/drugrecalls.html drug recalls %-PP, http://sadpjfpah.cn/amarrgaragedoor.html amarr garage door %]]], http://sadpjfpah.cn/fuga</revremark></revision><revision><revnumber>56</revnumber><date>2008-03-14 06:37:23</date><authorinitials>222.127.228.23</authorinitials><revremark>., http://potpro.cn/firebirdparts.html firebird parts %((, http://potpro.cn/adobeillustratortutorials.html adobe illustrator tutorials pttzqi, http://potpro.cn/skintight.html skintight wgq, http://pot</revremark></revision><revision><revnumber>55</revnumber><date>2008-03-13 23:23:54</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 41.</revremark></revision><revision><revnumber>54</revnumber><date>2008-03-13 22:19:01</date><authorinitials>222.127.228.23</authorinitials><revremark>., http://ohhhmygood.cn/herpessymptomspictures.html herpes symptoms pictures 2007, http://ohhhmygood.cn/perrier.html perrier 5401, http://ohhhmygood.cn/caradvertising.html car advertising jafnx, http:</revremark></revision><revision><revnumber>53</revnumber><date>2008-03-13 21:51:17</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 51.</revremark></revision><revision><revnumber>52</revnumber><date>2008-03-13 20:01:17</date><authorinitials>69-217-73-52.ded.ameritech.net</authorinitials><revremark>., http://nuvotsnovaprobuju.cn/playboygirl.html play boy girl hopu, http://nuvotsnovaprobuju.cn/jamesnaismith.html james naismith hrevx, http://nuvotsnovaprobuju.cn/ringbearergifts.html ring bearer gi</revremark></revision><revision><revnumber>51</revnumber><date>2008-03-13 16:31:21</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 49.</revremark></revision><revision><revnumber>50</revnumber><date>2008-03-13 16:18:13</date><authorinitials>222.127.228.23</authorinitials><revremark>., http://ergh307y.cn/kansasgovernor.html kansas governor nha, http://ergh307y.cn/charmedpiper.html charmed piper 6510, http://ergh307y.cn/hotbird.html hot bird 914, http://ergh307y.cn/discountpetmedi</revremark></revision><revision><revnumber>49</revnumber><date>2008-03-13 13:23:43</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 47.</revremark></revision><revision><revnumber>48</revnumber><date>2008-03-13 12:35:16</date><authorinitials>220.160.127.221</authorinitials><revremark>., http://kologod.cn/shootingcum.html shooting cum 647, http://kologod.cn/wbztv.html wbz tv tosrj, http://kologod.cn/staircasesdesign.html staircases design 857858, http://kologod.cn/happytreefriendsg</revremark></revision><revision><revnumber>47</revnumber><date>2008-03-13 10:41:31</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 45.</revremark></revision><revision><revnumber>46</revnumber><date>2008-03-13 10:16:06</date><authorinitials>222.127.228.23</authorinitials><revremark>., http://egh93w0y.cn/saturdaylyrics.html saturday lyrics 9598, http://egh93w0y.cn/bicyclepartsandaccessories.html bicycle parts and accessories dgkpl, http://egh93w0y.cn/aircraftboneyards.html aircra</revremark></revision><revision><revnumber>45</revnumber><date>2008-03-13 04:48:13</date><authorinitials>dsl093-056-003.blt1.dsl.speakeasy.net</authorinitials><revremark>Revert to version 43.</revremark></revision><revision><revnumber>44</revnumber><date>2008-03-13 04:16:15</date><authorinitials>69-217-73-52.ded.ameritech.net</authorinitials><revremark>., http://dcyu58789.cn/freshwaterturtles.html freshwater turtles %(((, http://dcyu58789.cn/bankofthailand.html bank of thailand 4508, http://dcyu58789.cn/toplessness.html toplessness &gt;:-]]], http://dc</revremark></revision><revision><revnumber>43</revnumber><date>2008-03-13 00:19:58</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 41.</revremark></revision><revision><revnumber>42</revnumber><date>2008-03-13 00:17:14</date><authorinitials>69-217-73-52.ded.ameritech.net</authorinitials><revremark>., http://jgshdisah.cn/aeawnings.html a e awnings &gt;:-]]], http://jgshdisah.cn/bowlingastrike.html bowling a strike vjyras, http://jgshdisah.cn/earlsrestaurants.html earls restaurants ezabw, http://jgs</revremark></revision><revision><revnumber>41</revnumber><date>2008-03-12 22:42:06</date><authorinitials>ClintonEbadi</authorinitials><revremark>Revert to revision 39.</revremark></revision><revision><revnumber>40</revnumber><date>2008-03-12 22:30:52</date><authorinitials>222.127.228.7</authorinitials><revremark>., http://bauishdgbaoib.cn/rabbittoy.html rabbit toy 7434, http://bauishdgbaoib.cn/fixing.html fixing %DDD, http://bauishdgbaoib.cn/dirtyjokeswithpictures.html dirty jokes with pictures 388901, http:/</revremark></revision><revision><revnumber>39</revnumber><date>2008-03-12 21:32:52</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 36.</revremark></revision><revision><revnumber>38</revnumber><date>2008-03-12 20:36:28</date><authorinitials>222.127.228.8</authorinitials><revremark>., http://bauiogbaobg.cn/hemifacialspasm.html hemifacial spasm 8452, http://bauiogbaobg.cn/albertaemploymentstandards.html alberta employment standards =-OO, http://bauiogbaobg.cn/theworldiknow.html t</revremark></revision><revision><revnumber>37</revnumber><date>2008-03-12 19:40:48</date><authorinitials>222.127.228.8</authorinitials><revremark>., http://hudinarjiii.cn/heraldtimesbloomington.html herald times bloomington wzmhkq, http://hudinarjiii.cn/firstaidkitsupplies.html first aid kit supplies 0840, http://hudinarjiii.cn/hiphopmix.html h</revremark></revision><revision><revnumber>36</revnumber><date>2008-03-12 18:28:27</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>35</revnumber><date>2008-03-12 18:17:03</date><authorinitials>222.127.228.7</authorinitials><revremark>., http://bas634.cn/noletemasael.html no le temas a el :DD, http://bas634.cn/escapade2001.html escapade 2001 170, http://bas634.cn/bedmart.html bedmart xjcjl, http://bas634.cn/tiramasu.html tiramasu a</revremark></revision><revision><revnumber>34</revnumber><date>2008-03-12 16:37:10</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>33</revnumber><date>2008-03-12 15:01:46</date><authorinitials>softbank220033204136.bbtec.net</authorinitials></revision><revision><revnumber>32</revnumber><date>2008-03-12 14:14:53</date><authorinitials>218.63.252.219</authorinitials><revremark>., http://agbshugiabo.cn/skateboardinglogo.html skateboarding logo =], http://agbshugiabo.cn/oceansidehighschool.html oceanside high school qitct, http://agbshugiabo.cn/houseshoes.html house shoes zft</revremark></revision><revision><revnumber>31</revnumber><date>2008-03-12 14:13:53</date><authorinitials>220.160.127.221</authorinitials><revremark>., http://agbshugiabo.cn/skateboardinglogo.html skateboarding logo =], http://agbshugiabo.cn/oceansidehighschool.html oceanside high school qitct, http://agbshugiabo.cn/houseshoes.html house shoes zft</revremark></revision><revision><revnumber>30</revnumber><date>2008-03-12 12:33:20</date><authorinitials>panaceq.homedsl.net1.cc</authorinitials><revremark>., http://highqual.cn/fabricpatterns.html fabric patterns :P, http://highqual.cn/varios.html varios &gt;:-[, http://highqual.cn/freenetgames.html free net games 977, http://highqual.cn/epco.html epco 366</revremark></revision><revision><revnumber>29</revnumber><date>2008-03-12 10:52:02</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>28</revnumber><date>2008-03-12 07:57:50</date><authorinitials>218.63.252.219</authorinitials><revremark>., http://hgiwpiufhl.cn/giftsformotherofthebride.html gifts for mother of the bride jqp, http://hgiwpiufhl.cn/mapoflosangelescounty.html map of los angeles county qzvtnr, http://hgiwpiufhl.cn/palabras</revremark></revision><revision><revnumber>27</revnumber><date>2008-03-12 05:31:03</date><authorinitials>RyanMikulovsky</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>26</revnumber><date>2008-03-12 00:46:32</date><authorinitials>222.127.228.8</authorinitials><revremark>., http://herityr.cn/combined.html combined 8(((, http://herityr.cn/dressupanime.html dress up anime hfg, http://herityr.cn/amywesson.html amy wesson amspuk, http://herityr.cn/listofdeathmetalbands.ht</revremark></revision><revision><revnumber>25</revnumber><date>2008-03-11 22:39:20</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>24</revnumber><date>2008-03-11 22:33:01</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 22.</revremark></revision><revision><revnumber>23</revnumber><date>2008-03-11 22:18:45</date><authorinitials>200.21.103.16</authorinitials><revremark>., http://hellomynewdom.cn/businesstelephoneservice.html business telephone service 82152, http://hellomynewdom.cn/discoverychannelkids.html discovery channel kids hgrps, http://hellomynewdom.cn/fixed</revremark></revision><revision><revnumber>22</revnumber><date>2008-03-11 21:22:58</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 20.</revremark></revision><revision><revnumber>21</revnumber><date>2008-03-11 18:48:38</date><authorinitials>218.63.252.219</authorinitials><revremark>., http://hellodomination.cn/livetvonlinefree.html live tv online free seppn, http://hellodomination.cn/laurawright.html laura wright 589, http://hellodomination.cn/ghostwebsites.html ghost websites 0</revremark></revision><revision><revnumber>20</revnumber><date>2008-03-11 14:55:09</date><authorinitials>222.127.228.5</authorinitials><revremark>., http://hasoiw.cn/hatcheries.html hatcheries qel, http://hasoiw.cn/ponyparty.html pony party bjb, http://hasoiw.cn/wholesalebodyoils.html wholesale body oils &gt;:]], http://hasoiw.cn/howtoupholster.ht</revremark></revision><revision><revnumber>19</revnumber><date>2008-03-11 07:55:42</date><authorinitials>69-217-73-52.ded.ameritech.net</authorinitials><revremark>., http://gogogojn.cn/fauxrolex.html faux rolex %(((, http://gogogojn.cn/arabicradio.html arabic radio vnjnkr, http://gogogojn.cn/molotovcocktail.html molotov cocktail %-[, http://gogogojn.cn/arizonah</revremark></revision><revision><revnumber>18</revnumber><date>2008-03-11 05:58:44</date><authorinitials>217.141.251.202</authorinitials><revremark>., http://gbsafg.cn/alaskamls.html alaska mls raikpy, http://gbsafg.cn/heartagramtattoo.html heartagram tattoo pywxl, http://gbsafg.cn/rockmonddunbar.html rockmond dunbar 8-[, http://gbsafg.cn/bluecro</revremark></revision><revision><revnumber>17</revnumber><date>2008-03-11 01:26:46</date><authorinitials>222.127.228.6</authorinitials><revremark>., http://fpbaspifpia.cn/cosmeticlasersurgery.html cosmetic laser surgery 303, http://fpbaspifpia.cn/ideasforshortstories.html ideas for short stories 050185, http://fpbaspifpia.cn/mapoffloridapanhand</revremark></revision><revision><revnumber>16</revnumber><date>2008-03-10 23:26:47</date><authorinitials>ce-ca1-1-primary.opb.interbusiness.it</authorinitials><revremark>., http://fasfavvfasda.cn/arrestwarrantsearchforfree.html arrest warrant search for free ngk, http://fasfavvfasda.cn/gustavmahler.html gustav mahler 8-[, http://fasfavvfasda.cn/demfranchizeboyzleanwit</revremark></revision><revision><revnumber>15</revnumber><date>2008-03-10 12:05:31</date><authorinitials>ce-bg1-1-primary.opb.interbusiness.it</authorinitials><revremark>., http://absuid6wds.cn/lsuwomensbasketball.html lsu womens basketball 423, http://absuid6wds.cn/picturesofclownfish.html pictures of clown fish 24786, http://absuid6wds.cn/noterdame.html noter dame 7</revremark></revision><revision><revnumber>14</revnumber><date>2008-02-19 17:09:22</date><authorinitials>StephenTaylor</authorinitials><revremark>Revert to revision 12.</revremark></revision><revision><revnumber>13</revnumber><date>2008-02-19 14:21:52</date><authorinitials>80.227.1.101</authorinitials><revremark>rdqfcq &lt;a href=&quot;http://bwrwhashnlmh.com/&quot;&gt;bwrwhashnlmh&lt;/a&gt;, [url=http://imftzjrgbxkl.com/]imftzjrgbxkl[/url], [link=http://uidbyutuctjx.com/]uidbyutuctjx[/link], http://jyzbkxlpowin.com/</revremark></revision><revision><revnumber>12</revnumber><date>2007-12-16 20:34:09</date><authorinitials>AdamChlipala</authorinitials><revremark>Wrong [if] syntax</revremark></revision><revision><revnumber>11</revnumber><date>2007-12-16 20:28:25</date><authorinitials>AdamChlipala</authorinitials><revremark>if..then..else</revremark></revision><revision><revnumber>10</revnumber><date>2007-11-13 02:03:44</date><authorinitials>RyanMikulovsky</authorinitials><revremark>use InterWiki link instead.</revremark></revision><revision><revnumber>9</revnumber><date>2007-10-27 18:30:46</date><authorinitials>AdamChlipala</authorinitials><revremark>Fix section nesting</revremark></revision><revision><revnumber>8</revnumber><date>2006-12-17 21:00:06</date><authorinitials>AdamChlipala</authorinitials><revremark>Fix nested abstraction function calls</revremark></revision><revision><revnumber>7</revnumber><date>2006-12-17 18:09:26</date><authorinitials>AdamChlipala</authorinitials><revremark>Source files</revremark></revision><revision><revnumber>6</revnumber><date>2006-12-17 18:02:26</date><authorinitials>AdamChlipala</authorinitials><revremark>Extern types; declarations</revremark></revision><revision><revnumber>5</revnumber><date>2006-12-17 17:45:58</date><authorinitials>AdamChlipala</authorinitials><revremark>Nested action functions</revremark></revision><revision><revnumber>4</revnumber><date>2006-12-17 17:36:57</date><authorinitials>AdamChlipala</authorinitials><revremark>Effect table</revremark></revision><revision><revnumber>3</revnumber><date>2006-12-17 17:18:17</date><authorinitials>AdamChlipala</authorinitials><revremark>Expressions</revremark></revision><revision><revnumber>2</revnumber><date>2006-12-17 16:59:10</date><authorinitials>AdamChlipala</authorinitials><revremark>Types</revremark></revision><revision><revnumber>1</revnumber><date>2006-12-17 16:47:06</date><authorinitials>AdamChlipala</authorinitials></revision></revhistory></articleinfo><para>This page gives an in-depth specification of the <ulink url="https://wiki.hcoop.net/DomTool/LanguageReference/DomTool#">DomTool</ulink> language. Most members would probably prefer the more informal presentation in <ulink url="https://wiki.hcoop.net/DomTool/LanguageReference/DomTool/UserGuide#">DomTool/UserGuide</ulink>. </para><section><title>Source code</title><para>For a complete, precise, and accurate grammatical specification, see the lexer and parser specifications <code>src/domtool.lex</code> and <code>src/domtool.grm</code> in the <ulink url="https://wiki.hcoop.net/DomTool/LanguageReference/DomTool#">DomTool</ulink> source code. See <code>src/tycheck.sml</code> for the type-checker implementation. <ulink url="https://wiki.hcoop.net/DomTool/LanguageReference/DomTool/Building#">DomTool/Building</ulink> has information on obtaining the source. </para></section><section><title>Token conventions</title><para>In the grammars that follow, we use these lexical token class names: </para><informaltable><tgroup cols="2"><colspec colname="col_0"/><colspec colname="col_1"/><tbody><row rowsep="1"><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Name</emphasis> </para></entry><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Description</emphasis> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>Int</code> </para></entry><entry colsep="1" rowsep="1"><para> Integer constant </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>String</code> </para></entry><entry colsep="1" rowsep="1"><para> String constant (enclosed in double quotes) </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>Symbol</code> </para></entry><entry colsep="1" rowsep="1"><para> Identifier starting with a lowercase letter </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>CSymbol</code> </para></entry><entry colsep="1" rowsep="1"><para> Identifier starting with a capital letter </para></entry></row></tbody></tgroup></informaltable></section><section><title>Predicates</title><para><ulink url="https://wiki.hcoop.net/DomTool/LanguageReference/DomTool#">DomTool</ulink> uses <emphasis role="strong">predicates</emphasis> to describe in what contexts an action may occur. For instance, web-related actions should only occur inside the scope of a virtual host directive. Predicates are built up following the grammar in the table below, using the letter <code>P</code> as the non-terminal for predicates. </para><para>Meanings are given as statements that must hold about the context where an action is found. The context is represented as a stack of <emphasis role="strong">context IDs</emphasis> which have been declared with <code>context</code> declarations. </para><informaltable><tgroup cols="3"><colspec colname="col_0"/><colspec colname="col_1"/><colspec colname="col_2"/><tbody><row rowsep="1"><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Syntax</emphasis> </para></entry><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Description</emphasis> </para></entry><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Meaning</emphasis> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>Root</code> </para></entry><entry colsep="1" rowsep="1"><para> Root </para></entry><entry colsep="1" rowsep="1"><para> The stack is empty. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>CSymbol</code> </para></entry><entry colsep="1" rowsep="1"><para> Context ID </para></entry><entry colsep="1" rowsep="1"><para> <code>CSymbol</code> is on the top of the stack. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>^P</code> </para></entry><entry colsep="1" rowsep="1"><para> Suffixes </para></entry><entry colsep="1" rowsep="1"><para> Some (not necessarily strict) suffix of the stack matches <code>P</code>. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>!P</code> </para></entry><entry colsep="1" rowsep="1"><para> Not </para></entry><entry colsep="1" rowsep="1"><para> The stack <emphasis>doesn't</emphasis> match <code>P</code>. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>P1 &amp; P2</code> </para></entry><entry colsep="1" rowsep="1"><para> And </para></entry><entry colsep="1" rowsep="1"><para> The stack matches both <code>P1</code> and <code>P2</code>. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>(P)</code> </para></entry><entry colsep="1" rowsep="1"><para> Grouping </para></entry><entry colsep="1" rowsep="1"><para> Identical to <code>P</code> </para></entry></row></tbody></tgroup></informaltable></section><section><title>Types</title><para>Types describe expressions. As is standard in statically-typed programming languages, they are used only for validation purposes and have no real effect on the &quot;output&quot; of a program. The following table gives the grammar of types <code>T</code>. The section on expressions will give the meanings of types in terms of which expressions have which types. </para><informaltable><tgroup cols="2"><colspec colname="col_0"/><colspec colname="col_1"/><tbody><row rowsep="1"><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Syntax</emphasis> </para></entry><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Description</emphasis> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>Symbol</code> </para></entry><entry colsep="1" rowsep="1"><para> Extern type </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>[T]</code> </para></entry><entry colsep="1" rowsep="1"><para> List of <code>T</code>s </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>T1 -&gt; T2</code> </para></entry><entry colsep="1" rowsep="1"><para> Function from <code>T1</code> to <code>T2</code> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>[P]</code> </para></entry><entry colsep="1" rowsep="1"><para> Action allowed only when <code>P</code> is satisified; requires no environment variables on input and writes none of its own </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>[P] {CSymbol1 : T1, ..., CSymbolN : TN}</code> </para></entry><entry colsep="1" rowsep="1"><para> Action that requires environment variables <code>CSymbol1</code>, ..., <code>CSymbolN</code> to have the given types when run </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>[P] {CSymbol1_1 : T1_1, ..., CSymbol1_N : T1_N} =&gt; {CSymbol2_1 : T2_1, ..., CSymbol2_M : T2_M}</code> </para></entry><entry colsep="1" rowsep="1"><para> Like the last case, but the second set of typed environment variables describes what the action will write </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>P =&gt; T</code> </para></entry><entry colsep="1" rowsep="1"><para> A nested action that requires that its nested configuration satisfy <code>P</code>; <code>T</code> should be some action type </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>(T)</code> </para></entry><entry colsep="1" rowsep="1"><para> Grouping </para></entry></row></tbody></tgroup></informaltable></section><section><title>Expressions</title><para>Here is the grammar of expressions <code>E</code>. As is standard in ML-family languages and Haskell, juxtaposition is used to represent function application, with application associating to the left. </para><informaltable><tgroup cols="3"><colspec colname="col_0"/><colspec colname="col_1"/><colspec colname="col_2"/><tbody><row rowsep="1"><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Syntax</emphasis> </para></entry><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Description</emphasis> </para></entry><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Typing</emphasis> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>Int</code> </para></entry><entry colsep="1" rowsep="1"><para> Integer constant </para></entry><entry colsep="1" rowsep="1"><para> <code>G |- Int : int</code> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>String</code> </para></entry><entry colsep="1" rowsep="1"><para> String constant </para></entry><entry colsep="1" rowsep="1"><para> <code>G |- String : string</code> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>[E1, ..., EN]</code> </para></entry><entry colsep="1" rowsep="1"><para> List </para></entry><entry colsep="1" rowsep="1"><para> If <code>G |- Ei : T</code> for each <code>Ei</code>, then <code>G |- [E1, ..., EN] : [T]</code>. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>Symbol</code> </para></entry><entry colsep="1" rowsep="1"><para> Variable </para></entry><entry colsep="1" rowsep="1"><para> <code>G1, Symbol : T, G2 |- Symbol : T</code>. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>E1 E2</code> </para></entry><entry colsep="1" rowsep="1"><para> Application </para></entry><entry colsep="1" rowsep="1"><para> If <code>G |- E1 : T1 -&gt; T2</code> and <code>G |- E2 : T1</code>, then <code>G |- E1 E2 : T2</code>. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>\ Symbol -&gt; E</code> </para></entry><entry colsep="1" rowsep="1"><para> Abstraction (inferred domain type) </para></entry><entry colsep="1" rowsep="1"><para> If <code>G, Symbol : T1 |- E : T2</code>, then <code>G |- \ Symbol -&gt; E : T1 -&gt; T2</code>. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>\ Symbol : (T1) -&gt; E</code> </para></entry><entry colsep="1" rowsep="1"><para> Abstraction (explicit domain type) </para></entry><entry colsep="1" rowsep="1"><para> If <code>G, Symbol : T1 |- E : T2</code>, then <code>G |- \ Symbol : (T1) -&gt; E : T1 -&gt; T2</code>. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>CSymbol = E</code> </para></entry><entry colsep="1" rowsep="1"><para> Environment variable set </para></entry><entry colsep="1" rowsep="1"><para> See subsection on actions </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>Symbol &lt;- CSymbol; E</code> </para></entry><entry colsep="1" rowsep="1"><para> Environment variable get </para></entry><entry colsep="1" rowsep="1"><para> See subsection on actions </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>E1; E2</code> </para></entry><entry colsep="1" rowsep="1"><para> Sequencing </para></entry><entry colsep="1" rowsep="1"><para> See subsection on actions </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>E1 where E2 end</code> </para></entry><entry colsep="1" rowsep="1"><para> Local bindings </para></entry><entry colsep="1" rowsep="1"><para> See subsection on actions </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>let E1 in E2 end</code> </para></entry><entry colsep="1" rowsep="1"><para> Local bindings </para></entry><entry colsep="1" rowsep="1"><para> See subsection on actions </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>E1 with E2 end</code> </para></entry><entry colsep="1" rowsep="1"><para> Nested action </para></entry><entry colsep="1" rowsep="1"><para> See subsection on actions </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>E1 with end</code> </para></entry><entry colsep="1" rowsep="1"><para> Empty nested action </para></entry><entry colsep="1" rowsep="1"><para> See subsection on actions </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>E1 where E2 with E3 end</code> </para></entry><entry colsep="1" rowsep="1"><para> Nested action with local bindings </para></entry><entry colsep="1" rowsep="1"><para> See subsection on actions </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>E1 where E2 with end</code> </para></entry><entry colsep="1" rowsep="1"><para> Empty nested action with local bindings </para></entry><entry colsep="1" rowsep="1"><para> See subsection on actions </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>\\ Symbol : P -&gt; E</code> </para></entry><entry colsep="1" rowsep="1"><para> Nested action abstraction </para></entry><entry colsep="1" rowsep="1"><para> See subsection on actions </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>(E)</code> </para></entry><entry colsep="1" rowsep="1"><para> Grouping </para></entry><entry colsep="1" rowsep="1"><para> Same as <code>E</code> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>if E then E1 else E2 end</code> </para></entry><entry colsep="1" rowsep="1"><para> Conditional </para></entry><entry colsep="1" rowsep="1"><para> <code>G |- E : bool</code>; <code>G |- E1 : T1</code>; <code>G |- E2 : T2</code>; <code>T1</code> is a subtype of <code>T2</code> or vice-versa </para></entry></row></tbody></tgroup></informaltable><section><title>Actions</title><para>The <ulink url="https://wiki.hcoop.net/DomTool/LanguageReference/DomTool#">DomTool</ulink> language is <ulink url="http://en.wikipedia.org/wiki/Purely_functional#">purely functional</ulink>. Like <ulink url="http://haskell.org/">Haskell</ulink>, it uses a monad to inject effectful operations into its pure core. For <ulink url="https://wiki.hcoop.net/DomTool/LanguageReference/DomTool#">DomTool</ulink>, this is the <emphasis role="strong">action monad</emphasis>. This monad merges two potentially separate features that tend to occur together. </para><para>First, actions are used to run code that will affect the outside world and lead to changes in the configuration of real daemons. <emphasis role="strong">Primitive actions</emphasis> like <code>domain</code> and <code>vhost</code> are the building-blocks here. They are defined by plugins. The other action forms in the table above are there just to allow the proper composition and sequencing of applications of primitive actions, which do the real work. See <ulink url="https://wiki.hcoop.net/DomTool/LanguageReference/DomTool/Implementation#">DomTool/Implementation</ulink> for how the code to run for a particular primitive action is registered with the implementation. </para><para>Second, the action monad provides the functionality of <emphasis role="strong">environment variables</emphasis>. These are similar to UNIX environment variables, but <ulink url="https://wiki.hcoop.net/DomTool/LanguageReference/DomTool#">DomTool</ulink> maintains its own environment where each variable has a static type. The rationale for including environment variables in the language is that, while many actions are highly configurable, you usually only want to tweak a few of their options at a time. <ulink url="https://wiki.hcoop.net/DomTool/LanguageReference/DomTool#">DomTool</ulink> allows an ambient environment of default variable settings, and it provides language constructs for modifying certain variables both globally and locally. </para><section><title>Effects of the action expressions on the environment</title><informaltable><tgroup cols="2"><colspec colname="col_0"/><colspec colname="col_1"/><tbody><row rowsep="1"><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Syntax</emphasis> </para></entry><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Effect</emphasis> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>CSymbol = E</code> </para></entry><entry colsep="1" rowsep="1"><para> Environment variable <code>CSymbol</code> is set to the value of <code>E</code>, with <code>E</code>'s type. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>Symbol &lt;- CSymbol; E</code> </para></entry><entry colsep="1" rowsep="1"><para> Environment variable <code>CSymbol</code> is read into normal variable <code>Symbol</code>, which inherits its type/value. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>E1; E2</code> </para></entry><entry colsep="1" rowsep="1"><para> The effect of <code>E1</code> followed by the effect of <code>E2</code> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>E1 where E2 end</code> </para></entry><entry colsep="1" rowsep="1"><para> The effect of <code>E2</code> followed by <code>E1</code>, afterward <emphasis role="strong">erasing</emphasis> any environment variable alterations by <code>E2</code> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>let E1 in E2 end</code> </para></entry><entry colsep="1" rowsep="1"><para> Same as <code>E2 where E1 end</code> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>E1 with E2 end</code> </para></entry><entry colsep="1" rowsep="1"><para> The effect of <code>E1</code> followed by <code>E2</code> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>E1 with end</code> </para></entry><entry colsep="1" rowsep="1"><para> Same as <code>E1</code> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>E1 where E2 with E3 end</code> </para></entry><entry colsep="1" rowsep="1"><para> The effect of <code>E2</code> followed by <code>E1</code> followed by <code>E3</code>, afterward <emphasis role="strong">erasing</emphasis> any environment variable alterations by <code>E2</code> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>E1 where E2 with end</code> </para></entry><entry colsep="1" rowsep="1"><para> The effect of <code>E2</code> followed by <code>E1</code>, afterward <emphasis role="strong">erasing</emphasis> any environment variable alterations by <code>E2</code> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>\\ Symbol : P -&gt; E</code> </para></entry><entry colsep="1" rowsep="1"><para> No effect until called </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>E1 with E2 end</code>, when <code>E1</code> is a nested abstraction function </para></entry><entry colsep="1" rowsep="1"><para> The effect of <code>E1</code> followed by <code>E2</code> followed by the effect of the action obtained by substituting the value of <code>E2</code> in the body of the abstraction to which <code>E1</code> evaluates. </para></entry></row></tbody></tgroup></informaltable></section><section><title>Nested action functions</title><para>Sometimes it is convenient to be able to write new nested actions that call primitive nested actions as subroutines. For instance, the <ulink url="http://hcoop.net/domtool/easy_domain.html#V_dom">dom</ulink> helper function uses <ulink url="http://hcoop.net/domtool/domain.html#V_domain">domain</ulink> as a subroutine. Standard functions aren't good enough for these purposes, since they don't allow us to take into account the different environment effects that different nested action arguments might have. The nested function type <code>P =&gt; T</code> is the solution to this problem. </para><para>You can define a nested action function with the <code>\\ Symbol : P -&gt; E</code> form. Such a function has type <code>P =&gt; T</code> when assuming that <code>Symbol</code> has type <code>[P]</code> implies that <code>E</code> has type <code>T</code>. Any call to this function will be typed taking into account that we play the argument action's effect before playing the effect of the function's body. </para></section></section><section><title>Extern types</title><para>Extern types (which are also used to implement &quot;primitive types&quot; like <code>int</code> and <code>string</code>) have something of the flavor of dependent types or refinement types. Registering appropriate handlers from a plugin can create an extern type whose values are controlled by an arbitrary predicate. Plugin implementers are supposed to maintain the invariant that the predicate controlling an extern type is never observably inconsistent in the course of a single type-checking session. That is, it never once declares a value to belong to type <code>T</code> and also declares it not to belong to <code>T</code> in the same type-checker invocation. A good example is the <ulink url="http://hcoop.net/domtool/domain.html#T_your_domain">your_domain</ulink> type, which consists of those strings naming domains that the current user is allowed to configure. Within a single type-checking, the user remains constant, and so <code>your_domain</code>'s predicate returns consistent decisions. On the other hand, across different sessions by different users, the predicate will of course make different decisions. This approach allows extern types to be used for flexible type-level enforcement of security policies. </para><para>It would be a pain for users to have to mark exactly which extern type a certain expression is meant to belong to. Instead, the <ulink url="https://wiki.hcoop.net/DomTool/LanguageReference/DomTool#">DomTool</ulink> language implementation uses slightly non-compositional type-checking to make use of rich extern types more convenient. By &quot;non-compositional&quot;, I mean that the value of an expression, not just its type, may matter in type-checking a larger expression that it is found within. This non-compositionality is only used to infer when a value was given a base type like <code>string</code> when it really ought to have been given some rich extern type. For instance, when a function is called that expects an argument of type <code>your_domain</code>, the argument is first type-checked. If its inferred type is <code>your_domain</code>, then all is well. If not, then we try again, passing the actual argument expression to <code>your_domain</code>'s controlling predicate. Only if that predicate also rejects the expression do we signal a type error.  No simplifications are performed on an expression before checking its form; for instance, a global variable's definition won't be unfolded to check if the value satisfies a required predicate. </para></section></section><section><title>Declarations</title><para>Declarations <code>D</code> add new symbols to the typing environment. </para><informaltable><tgroup cols="3"><colspec colname="col_0"/><colspec colname="col_1"/><colspec colname="col_2"/><tbody><row rowsep="1"><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Syntax</emphasis> </para></entry><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Description</emphasis> </para></entry><entry colsep="1" rowsep="1"><para> <emphasis role="strong">Effect on typing environment</emphasis> </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>extern type Symbol</code> </para></entry><entry colsep="1" rowsep="1"><para> Extern type </para></entry><entry colsep="1" rowsep="1"><para> Register <code>Symbol</code> as a new extern type that is either defined in a plugin or treated purely syntactically. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>extern val Symbol : T</code> </para></entry><entry colsep="1" rowsep="1"><para> Extern value </para></entry><entry colsep="1" rowsep="1"><para> Register <code>Symbol</code> as a new variable that is either defined in a plugin or treated purely syntactically. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>val Symbol = E</code> </para></entry><entry colsep="1" rowsep="1"><para> Expression synonym </para></entry><entry colsep="1" rowsep="1"><para> Define <code>Symbol</code> as an abbreviation for <code>E</code>; a specific type for the binding is inferred and used at future occurrences. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>val Symbol : T = E</code> </para></entry><entry colsep="1" rowsep="1"><para> Expression synonym </para></entry><entry colsep="1" rowsep="1"><para> Define <code>Symbol</code> as an abbreviation for <code>E</code> of type <code>T</code>. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para> <code>context CSymbol</code> </para></entry><entry colsep="1" rowsep="1"><para> Context ID </para></entry><entry colsep="1" rowsep="1"><para> Declare a new context ID <code>CSymbol</code>. </para></entry></row></tbody></tgroup></informaltable></section><section><title>Source files</title><para>A source file is an optional documentation string, followed by a sequence of semicolon-terminated declarations with optional trailing documentation strings, followed by an optional expression. A documentation string is any text between <code>{{</code> and <code>}}</code> delimiters and may contain HTML. </para><para>Documentation strings are used in automatic HTML documentation generation. A documentation string that starts a file is used to describe that file in the module index, and it's also included at the start of that file's page. A documentation string after a declaration is used to describe it in the detail section of its file's page. <ulink url="http://hcoop.net/domtool/">The standard library documentation</ulink> shows an example output. </para></section></article>