<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hi,<br>
    <meta http-equiv="Content-Type" content="text/html;
      charset=ISO-8859-15">
    <meta name="ProgId" content="Word.Document">
    <meta name="Generator" content="Microsoft Word 14">
    <meta name="Originator" content="Microsoft Word 14">
    <link rel="File-List"
href="file:///C:%5CUsers%5CAUERSW%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml">
    <!--[if gte mso 9]><xml>
 <o:OfficeDocumentSettings>
  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]-->
    <link rel="themeData"
href="file:///C:%5CUsers%5CAUERSW%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx">
    <link rel="colorSchemeMapping"
href="file:///C:%5CUsers%5CAUERSW%7E1%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml">
    <!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:HyphenationZone>21</w:HyphenationZone>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>DE</w:LidThemeOther>
  <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:EnableOpenTypeKerning/>
   <w:DontFlipMirrorIndents/>
   <w:OverrideTableStyleHps/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="--"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->
    <style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;
        mso-font-charset:0;
        mso-generic-font-family:swiss;
        mso-font-pitch:variable;
        mso-font-signature:-536870145 1073786111 1 0 415 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {mso-style-unhide:no;
        mso-style-qformat:yes;
        mso-style-parent:"";
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:10.0pt;
        margin-left:0cm;
        line-height:115%;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-ascii-font-family:Calibri;
        mso-ascii-theme-font:minor-latin;
        mso-fareast-font-family:Calibri;
        mso-fareast-theme-font:minor-latin;
        mso-hansi-font-family:Calibri;
        mso-hansi-theme-font:minor-latin;
        mso-bidi-font-family:"Times New Roman";
        mso-bidi-theme-font:minor-bidi;
        mso-fareast-language:EN-US;}
.MsoChpDefault
        {mso-style-type:export-only;
        mso-default-props:yes;
        font-family:"Calibri","sans-serif";
        mso-ascii-font-family:Calibri;
        mso-ascii-theme-font:minor-latin;
        mso-fareast-font-family:Calibri;
        mso-fareast-theme-font:minor-latin;
        mso-hansi-font-family:Calibri;
        mso-hansi-theme-font:minor-latin;
        mso-bidi-font-family:"Times New Roman";
        mso-bidi-theme-font:minor-bidi;
        mso-fareast-language:EN-US;}
.MsoPapDefault
        {mso-style-type:export-only;
        margin-bottom:10.0pt;
        line-height:115%;}
@page WordSection1
        {size:595.3pt 841.9pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;
        mso-header-margin:35.4pt;
        mso-footer-margin:35.4pt;
        mso-paper-source:0;}
div.WordSection1
        {page:WordSection1;}
-->
</style><!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
        {mso-style-name:"Normale Tabelle";
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-priority:99;
        mso-style-parent:"";
        mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
        mso-para-margin-top:0cm;
        mso-para-margin-right:0cm;
        mso-para-margin-bottom:10.0pt;
        mso-para-margin-left:0cm;
        line-height:115%;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-ascii-font-family:Calibri;
        mso-ascii-theme-font:minor-latin;
        mso-hansi-font-family:Calibri;
        mso-hansi-theme-font:minor-latin;
        mso-fareast-language:EN-US;}
</style>
<![endif]-->I have implemented the serialization of the TimeZoneInfo
    class. It is compatible to the serialization in .Net so cross
    serialization shouldn't be a problem. I hope it will be included in
    the next releases of Mono.<br>
    <br>
    The patch:<br>
    <br>
    diff --git
    a/mcs/class/System.Core/System/TimeZoneInfo.AdjustmentRule.cs
    b/mcs/class/System.Core/System/TimeZoneInfo.AdjustmentRule.cs<br>
    index d3c16f4..4c413a8 100644<br>
    --- a/mcs/class/System.Core/System/TimeZoneInfo.AdjustmentRule.cs<br>
    +++ b/mcs/class/System.Core/System/TimeZoneInfo.AdjustmentRule.cs<br>
    @@ -74,6 +74,17 @@ namespace System<br>
                     return new AdjustmentRule (dateStart, dateEnd,
    daylightDelta, daylightTransitionStart, daylightTransitionEnd);<br>
                 }<br>
     <br>
    +            private AdjustmentRule (SerializationInfo info,
    StreamingContext context)<br>
    +            {<br>
    +                if (info == null)<br>
    +                    throw new ArgumentNullException ("info");<br>
    +                dateStart = (DateTime) info.GetValue ("DateStart",
    typeof (DateTime));<br>
    +                dateEnd = (DateTime) info.GetValue ("DateEnd",
    typeof (DateTime));<br>
    +                daylightDelta = (TimeSpan) info.GetValue
    ("DaylightDelta", typeof (TimeSpan));<br>
    +                daylightTransitionStart =
    (TimeZoneInfo.TransitionTime) info.GetValue
    ("DaylightTransitionStart", typeof (TimeZoneInfo.TransitionTime));<br>
    +                daylightTransitionEnd =
    (TimeZoneInfo.TransitionTime) info.GetValue
    ("DaylightTransitionEnd", typeof (TimeZoneInfo.TransitionTime));<br>
    +            }<br>
    +<br>
                 private AdjustmentRule (<br>
                     DateTime dateStart,<br>
                     DateTime dateEnd,<br>
    @@ -130,7 +141,13 @@ namespace System<br>
                 public void GetObjectData (SerializationInfo info,
    StreamingContext context)<br>
     #endif<br>
                 {<br>
    -                throw new NotImplementedException ();<br>
    +                if (info == null)<br>
    +                    throw new ArgumentNullException ("info");<br>
    +                info.AddValue ("DateStart", DateStart);<br>
    +                info.AddValue ("DateEnd", DateEnd);<br>
    +                info.AddValue ("DaylightDelta", DaylightDelta);<br>
    +                info.AddValue ("DaylightTransitionStart",
    DaylightTransitionStart);<br>
    +                info.AddValue ("DaylightTransitionEnd",
    DaylightTransitionEnd);<br>
                 }<br>
     #if NET_4_0<br>
                 void IDeserializationCallback.OnDeserialization (object
    sender)<br>
    @@ -138,7 +155,38 @@ namespace System<br>
                 public void OnDeserialization (object sender)<br>
     #endif<br>
                 {<br>
    -                throw new NotImplementedException ();<br>
    +                try {<br>
    +                    TimeZoneInfo.AdjustmentRule.Validate
    (dateStart, dateEnd, daylightDelta, <br>
    +                                                         
    daylightTransitionStart, daylightTransitionEnd);<br>
    +                } catch (ArgumentException ex) {<br>
    +                    throw new SerializationException ("invalid
    serialization data", (Exception) ex);<br>
    +                }<br>
    +            }<br>
    +<br>
    +            private static void Validate (<br>
    +                DateTime dateStart,<br>
    +                DateTime dateEnd,<br>
    +                TimeSpan daylightDelta,<br>
    +                TransitionTime daylightTransitionStart,<br>
    +                TransitionTime daylightTransitionEnd)<br>
    +            {<br>
    +                if (dateStart.Kind != DateTimeKind.Unspecified ||
    dateEnd.Kind != DateTimeKind.Unspecified)<br>
    +                    throw new ArgumentException ("the Kind property
    of dateStart or dateEnd parameter does not equal
    DateTimeKind.Unspecified");<br>
    +<br>
    +                if (daylightTransitionStart ==
    daylightTransitionEnd)<br>
    +                    throw new ArgumentException
    ("daylightTransitionStart parameter cannot equal
    daylightTransitionEnd parameter");<br>
    +<br>
    +                if (dateStart.Ticks % TimeSpan.TicksPerDay != 0 ||
    dateEnd.Ticks % TimeSpan.TicksPerDay != 0)<br>
    +                    throw new ArgumentException ("dateStart or
    dateEnd parameter includes a time of day value");<br>
    +<br>
    +                if (dateEnd < dateStart)<br>
    +                    throw new ArgumentOutOfRangeException ("dateEnd
    is earlier than dateStart");<br>
    +<br>
    +                if (daylightDelta > new TimeSpan (14, 0, 0) ||
    daylightDelta < new TimeSpan (-14, 0, 0))<br>
    +                    throw new ArgumentOutOfRangeException
    ("daylightDelta is less than -14 or greater than 14 hours");<br>
    +<br>
    +                if (daylightDelta.Ticks % TimeSpan.TicksPerSecond
    != 0)<br>
    +                    throw new ArgumentOutOfRangeException
    ("daylightDelta parameter does not represent a whole number of
    seconds");<br>
                 }<br>
             }<br>
         }<br>
    diff --git
    a/mcs/class/System.Core/System/TimeZoneInfo.TransitionTime.cs
    b/mcs/class/System.Core/System/TimeZoneInfo.TransitionTime.cs<br>
    index a914ed1..0a72ce2 100644<br>
    --- a/mcs/class/System.Core/System/TimeZoneInfo.TransitionTime.cs<br>
    +++ b/mcs/class/System.Core/System/TimeZoneInfo.TransitionTime.cs<br>
    @@ -108,6 +108,26 @@ namespace System<br>
                     return new TransitionTime (timeOfDay, month, week,
    dayOfWeek);<br>
                 }<br>
     <br>
    +            private TransitionTime (SerializationInfo info,
    StreamingContext context)<br>
    +            {<br>
    +                if (info == null)<br>
    +                    throw new ArgumentNullException ("info");<br>
    +                timeOfDay = (DateTime) info.GetValue ("TimeOfDay",
    typeof (DateTime));<br>
    +                month = (byte) info.GetValue ("Month", typeof
    (byte));<br>
    +                week = (byte) info.GetValue ("Week", typeof
    (byte));<br>
    +                day = (byte) info.GetValue ("Day", typeof (byte));<br>
    +                dayOfWeek = (DayOfWeek) info.GetValue ("DayOfWeek",
    typeof (DayOfWeek));<br>
    +                isFixedDateRule = (bool) info.GetValue
    ("IsFixedDateRule", typeof (bool));<br>
    +<br>
    +                if (isFixedDateRule)<br>
    +                {<br>
    +                    week = -1;<br>
    +                    dayOfWeek = (DayOfWeek) (-1);<br>
    +                }<br>
    +                if (!isFixedDateRule)            <br>
    +                    day = -1;<br>
    +            }<br>
    +<br>
                 private TransitionTime (<br>
                     DateTime timeOfDay,<br>
                     int month,<br>
    @@ -190,9 +210,25 @@ namespace System<br>
                 public void GetObjectData (SerializationInfo info,
    StreamingContext context)<br>
     #endif<br>
                 {<br>
    -                throw new NotImplementedException ();<br>
    -            }<br>
    -    <br>
    +                if (info == null)<br>
    +                    throw new ArgumentNullException ("info");<br>
    +                info.AddValue ("TimeOfDay", TimeOfDay);<br>
    +                info.AddValue ("Month",
    System.Convert.ToByte(Month));<br>
    +                if (week > -1)<br>
    +                    info.AddValue ("Week",
    System.Convert.ToByte(week));<br>
    +                else <br>
    +                    info.AddValue ("Week", (byte) 1);<br>
    +                if (day > -1)<br>
    +                    info.AddValue ("Day",
    System.Convert.ToByte(day));<br>
    +                else<br>
    +                    info.AddValue ("Day", (byte) 1);<br>
    +                if (dayOfWeek !=  ((System.DayOfWeek) (-1)))<br>
    +                    info.AddValue ("DayOfWeek", dayOfWeek);<br>
    +                else<br>
    +                    info.AddValue ("DayOfWeek", DayOfWeek.Sunday);<br>
    +                info.AddValue ("IsFixedDateRule", IsFixedDateRule);<br>
    +            }    <br>
    +<br>
                 public override bool Equals (object obj)<br>
                 {<br>
                     if (obj is TransitionTime)<br>
    @@ -216,7 +252,50 @@ namespace System<br>
                 public void OnDeserialization (object sender)<br>
     #endif<br>
                 {<br>
    -                throw new NotImplementedException ();<br>
    +                try {<br>
    +                    TimeZoneInfo.TransitionTime.Validate
    (timeOfDay, month, week, day, dayOfWeek, isFixedDateRule);<br>
    +                } catch (ArgumentException ex) {<br>
    +                    throw new SerializationException ("invalid
    serialization data", (Exception) ex);<br>
    +                }<br>
    +            }<br>
    +<br>
    +            private static void Validate (DateTime timeOfDay, int
    month,int week, int day, DayOfWeek dayOfWeek, bool isFixedDateRule)<br>
    +            {<br>
    +                if (timeOfDay.Year != 1 || timeOfDay.Month != 1 ||
    timeOfDay.Day != 1)<br>
    +                    throw new ArgumentException ("timeOfDay
    parameter has a non-default date component");<br>
    +<br>
    +                if (timeOfDay.Kind != DateTimeKind.Unspecified)<br>
    +                    throw new ArgumentException ("timeOfDay
    parameter Kind's property is not DateTimeKind.Unspecified");<br>
    +<br>
    +                if (timeOfDay.Ticks % TimeSpan.TicksPerMillisecond
    != 0)<br>
    +                    throw new ArgumentException ("timeOfDay
    parameter does not represent a whole number of milliseconds");<br>
    +<br>
    +                if (day < 1 || day > 31)<br>
    +                {<br>
    +                    if (!(!isFixedDateRule && day == -1))<br>
    +                        throw new ArgumentOutOfRangeException ("day
    parameter is less than 1 or greater than 31");<br>
    +                }<br>
    +<br>
    +                if (week < 1 || week > 5)<br>
    +                {<br>
    +                    if (!(isFixedDateRule && week == -1))<br>
    +                        throw new ArgumentOutOfRangeException
    ("week parameter is less than 1 or greater than 5");<br>
    +                }<br>
    +<br>
    +                if (month < 1 || month > 12)<br>
    +                    throw new ArgumentOutOfRangeException ("month
    parameter is less than 1 or greater than 12");<br>
    +<br>
    +                if (dayOfWeek != DayOfWeek.Sunday &&<br>
    +                        dayOfWeek != DayOfWeek.Monday &&<br>
    +                        dayOfWeek != DayOfWeek.Tuesday &&<br>
    +                        dayOfWeek != DayOfWeek.Wednesday &&<br>
    +                        dayOfWeek != DayOfWeek.Thursday &&<br>
    +                        dayOfWeek != DayOfWeek.Friday &&<br>
    +                        dayOfWeek != DayOfWeek.Saturday)<br>
    +                {<br>
    +                    if (!(isFixedDateRule && dayOfWeek ==
    (DayOfWeek) (-1)))<br>
    +                        throw new ArgumentOutOfRangeException
    ("dayOfWeek parameter is not a member od DayOfWeek enumeration");<br>
    +                }<br>
                 }<br>
             }<br>
         }<br>
    diff --git a/mcs/class/System.Core/System/TimeZoneInfo.cs
    b/mcs/class/System.Core/System/TimeZoneInfo.cs<br>
    index ee440a4..dd3c656 100644<br>
    --- a/mcs/class/System.Core/System/TimeZoneInfo.cs<br>
    +++ b/mcs/class/System.Core/System/TimeZoneInfo.cs<br>
    @@ -598,11 +531,19 @@ namespace System<br>
             public void GetObjectData (SerializationInfo info,
    StreamingContext context)<br>
     #endif<br>
             {<br>
    -            throw new NotImplementedException ();<br>
    +            if (info == null)<br>
    +                throw new ArgumentNullException ("info");<br>
    +            info.AddValue ("Id", id);<br>
    +            info.AddValue ("DisplayName", displayName);<br>
    +            info.AddValue ("StandardName", standardDisplayName);<br>
    +            info.AddValue ("DaylightName", daylightDisplayName);<br>
    +            info.AddValue ("BaseUtcOffset", baseUtcOffset);<br>
    +            info.AddValue ("AdjustmentRules", adjustmentRules);<br>
    +            info.AddValue ("SupportsDaylightSavingTime",
    SupportsDaylightSavingTime);<br>
             }<br>
     <br>
             //FIXME: change this to a generic Dictionary and allow
    caching for FindSystemTimeZoneById<br>
    @@ -786,9 +725,56 @@ namespace System<br>
             public void OnDeserialization (object sender)<br>
     #endif<br>
             {<br>
    -            throw new NotImplementedException ();<br>
    +                try {<br>
    +                    TimeZoneInfo.Validate (id, baseUtcOffset,
    adjustmentRules);<br>
    +                } catch (ArgumentException ex) {<br>
    +                    throw new SerializationException ("invalid
    serialization data", (Exception) ex);<br>
    +                }<br>
             }<br>
    -        <br>
    +<br>
    +        private static void Validate (string id, TimeSpan
    baseUtcOffset, AdjustmentRule [] adjustmentRules)<br>
    +        {<br>
    +            if (id == null)<br>
    +                throw new ArgumentNullException ("id");<br>
    +<br>
    +            if (id == String.Empty)<br>
    +                throw new ArgumentException ("id parameter is an
    empty string");<br>
    +<br>
    +            if (baseUtcOffset.Ticks % TimeSpan.TicksPerMinute != 0)<br>
    +                throw new ArgumentException ("baseUtcOffset
    parameter does not represent a whole number of minutes");<br>
    +<br>
    +            if (baseUtcOffset > new TimeSpan (14, 0, 0) ||
    baseUtcOffset < new TimeSpan (-14, 0, 0))<br>
    +                throw new ArgumentOutOfRangeException
    ("baseUtcOffset parameter is greater than 14 hours or less than -14
    hours");<br>
    +<br>
    +#if STRICT<br>
    +            if (id.Length > 32)<br>
    +                throw new ArgumentException ("id parameter
    shouldn't be longer than 32 characters");<br>
    +#endif<br>
    +<br>
    +            if (adjustmentRules != null &&
    adjustmentRules.Length != 0) {<br>
    +                AdjustmentRule prev = null;<br>
    +                foreach (AdjustmentRule current in adjustmentRules)
    {<br>
    +                    if (current == null)<br>
    +                        throw new InvalidTimeZoneException ("one or
    more elements in adjustmentRules are null");<br>
    +<br>
    +                    if ((baseUtcOffset + current.DaylightDelta <
    new TimeSpan (-14, 0, 0)) ||<br>
    +                            (baseUtcOffset + current.DaylightDelta
    > new TimeSpan (14, 0, 0)))<br>
    +                        throw new InvalidTimeZoneException ("Sum of
    baseUtcOffset and DaylightDelta of one or more object in
    adjustmentRules array is greater than 14 or less than -14 hours;");<br>
    +<br>
    +                    if (prev != null && prev.DateStart >
    current.DateStart)<br>
    +                        throw new InvalidTimeZoneException
    ("adjustment rules specified in adjustmentRules parameter are not in
    chronological order");<br>
    +                    <br>
    +                    if (prev != null && prev.DateEnd >
    current.DateStart)<br>
    +                        throw new InvalidTimeZoneException ("some
    adjustment rules in the adjustmentRules parameter overlap");<br>
    +<br>
    +                    if (prev != null && prev.DateEnd ==
    current.DateStart)<br>
    +                        throw new InvalidTimeZoneException ("a date
    can have multiple adjustment rules applied to it");<br>
    +<br>
    +                    prev = current;<br>
    +                }<br>
    +            }<br>
    +        }<br>
    +<br>
             public string ToSerializedString ()<br>
             {<br>
                 throw new NotImplementedException ();<br>
    @@ -850,10 +832,24 @@ namespace System<br>
                 this.adjustmentRules = adjustmentRules;<br>
             }<br>
     <br>
    +        private TimeZoneInfo (SerializationInfo info,
    StreamingContext context)<br>
    +        {<br>
    +            if (info == null)<br>
    +                throw new ArgumentNullException ("info");<br>
    +            id = (string) info.GetValue ("Id", typeof (string));<br>
    +            displayName = (string) info.GetValue ("DisplayName",
    typeof (string));<br>
    +            standardDisplayName = (string) info.GetValue
    ("StandardName", typeof (string));<br>
    +            daylightDisplayName = (string) info.GetValue
    ("DaylightName", typeof (string));<br>
    +            baseUtcOffset = (TimeSpan) info.GetValue
    ("BaseUtcOffset", typeof (TimeSpan));<br>
    +            adjustmentRules = (TimeZoneInfo.AdjustmentRule [])
    info.GetValue ("AdjustmentRules", typeof
    (TimeZoneInfo.AdjustmentRule []));<br>
    +            supportsDaylightSavingTime = (bool) info.GetValue
    ("SupportsDaylightSavingTime", typeof (bool));<br>
    +        }<br>
    +<br>
             private AdjustmentRule GetApplicableRule (DateTime
    dateTime)<br>
             {<br>
                 //Transitions are always in standard time<br>
    diff --git
    a/mcs/class/System.Core/Test/System/TimeZoneInfo.AdjustmentRuleTest.cs
b/mcs/class/System.Core/Test/System/TimeZoneInfo.AdjustmentRuleTest.cs<br>
    index 6fd2412..e20c37d 100644<br>
    ---
    "a/mcs/class/System.Core/Test/System/TimeZoneInfo.AdjustmentRuleTest.cs"<br>
    +++
    "b/mcs/class/System.Core/Test/System/TimeZoneInfo.AdjustmentRuleTest.cs"<br>
    @@ -1,4 +1,6 @@<br>
     using System;<br>
    +using System.IO;<br>
    +using System.Runtime.Serialization.Formatters;<br>
     using NUnit.Framework;<br>
     <br>
     #if NET_2_0<br>
    @@ -89,7 +91,33 @@ public void DeltaNotInSeconds ()<br>
                     TimeZoneInfo.TransitionTime daylightTransitionEnd =
    TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime
    (1,1,1,2,0,0), 10, 11);<br>
                     TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule
    (dateStart, dateEnd, new TimeSpan (55), daylightTransitionStart,
    daylightTransitionEnd);<br>
                 }<br>
    -        }    <br>
    +        }<br>
    +    <br>
    +       [TestFixture]<br>
    +        public class SerializationTests<br>
    +        {<br>
    +            TimeZoneInfo.AdjustmentRule rule;<br>
    +<br>
    +            [SetUp]<br>
    +            public void CreateRule () <br>
    +            {<br>
    +                TimeZoneInfo.TransitionTime start =
    TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime
    (1,1,1,1,0,0), 3, 5, DayOfWeek.Sunday);<br>
    +                TimeZoneInfo.TransitionTime end =
    TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime
    (1,1,1,2,0,0), 10, 5, DayOfWeek.Sunday);<br>
    +                rule =
    TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule
    (DateTime.MinValue.Date, DateTime.MaxValue.Date, new TimeSpan
    (1,0,0), start, end);<br>
    +            }<br>
    +<br>
    +            [Test]<br>
    +            public void Serialization_Deserialization ()<br>
    +            {<br>
    +                MemoryStream stream = new MemoryStream ();<br>
    +                BinaryFormatter formatter = new BinaryFormatter ();<br>
    +                formatter.Serialize (stream, rule);<br>
    +                stream.Position = 0;<br>
    +                TimeZoneInfo.AdjustmentRule deserialized =
    (TimeZoneInfo.AdjustmentRule) formatter.Deserialize (stream);<br>
    +                stream.Close ();<br>
    +                stream.Dispose ();<br>
    +                Assert.AreEqual (rule, deserialized);<br>
    +            }<br>
    +        }<br>
         }    <br>
     }<br>
    #endif<br>
    diff --git
    a/mcs/class/System.Core/Test/System/TimeZoneInfo.TransitionTimeTest.cs
b/mcs/class/System.Core/Test/System/TimeZoneInfo.TransitionTimeTest.cs<br>
    index 8dd8263..2fd2e70 100644<br>
    ---
    "a/mcs/class/System.Core/Test/System/TimeZoneInfo.TransitionTimeTest.cs"<br>
    +++
    "b/mcs/class/System.Core/Test/System/TimeZoneInfo.TransitionTimeTest.cs"<br>
    @@ -1,5 +1,7 @@<br>
     <br>
     using System;<br>
    +using System.IO;<br>
    +using System.Runtime.Serialization.Formatters;<br>
     using NUnit.Framework;<br>
     <br>
     #if NET_2_0<br>
    @@ -107,6 +109,46 @@ public void EqualsObject ()<br>
                     Assert.IsFalse (tt1.Equals (tt2), "2!=1");<br>
                 }<br>
             }<br>
    +<br>
    +       [TestFixture]<br>
    +        public class SerializationTests<br>
    +        {<br>
    +            TimeZoneInfo.TransitionTime floatingDateRule;<br>
    +            TimeZoneInfo.TransitionTime fixedDateRule;<br>
    +<br>
    +            [SetUp]<br>
    +            public void CreateDateRules ()<br>
    +            {<br>
    +                floatingDateRule =
    TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1,
    1, 1, 1, 0, 0), 3, 5, DayOfWeek.Sunday);<br>
    +                fixedDateRule =
    TimeZoneInfo.TransitionTime.CreateFixedDateRule(new DateTime(1, 1,
    1, 1, 0, 0), 3, 12);<br>
    +            }<br>
    +<br>
    +            [Test]<br>
    +            public void Serialize_Deserialize_FloatingDateRule ()<br>
    +            {<br>
    +                MemoryStream stream = new MemoryStream ();<br>
    +                BinaryFormatter formatter = new BinaryFormatter ();<br>
    +                formatter.Serialize (stream, floatingDateRule);<br>
    +                stream.Position = 0;<br>
    +                TimeZoneInfo.TransitionTime deserialized =
    (TimeZoneInfo.TransitionTime) formatter.Deserialize (stream);<br>
    +                stream.Close ();<br>
    +                stream.Dispose ();<br>
    +                Assert.AreEqual (floatingDateRule, deserialized);<br>
    +            }<br>
    +<br>
    +            [Test]<br>
    +            public void Serialize_Deserialize_FixedDateRule ()<br>
    +            {<br>
    +                MemoryStream stream = new MemoryStream ();<br>
    +                BinaryFormatter formatter = new BinaryFormatter ();<br>
    +                formatter.Serialize (stream, fixedDateRule);<br>
    +                stream.Position = 0;<br>
    +                TimeZoneInfo.TransitionTime deserialized =
    (TimeZoneInfo.TransitionTime) formatter.Deserialize (stream);<br>
    +                stream.Close ();<br>
    +                stream.Dispose ();<br>
    +                Assert.AreEqual (fixedDateRule, deserialized);<br>
    +            }<br>
    +        }<br>
         }<br>
     }<br>
     #endif<br>
    diff --git a/mcs/class/System.Core/Test/System/TimeZoneInfoTest.cs
    b/mcs/class/System.Core/Test/System/TimeZoneInfoTest.cs<br>
    index 06de33e..f678acf 100644<br>
    --- "a/mcs/class/System.Core/Test/System/TimeZoneInfoTest.cs"<br>
    +++ "b/mcs/class/System.Core/Test/System/TimeZoneInfoTest.cs"<br>
    @@ -28,6 +28,8 @@<br>
     <br>
     using System;<br>
     using System.Collections;<br>
    +using System.IO;<br>
    +using System.Runtime.Serialization.Formatters;<br>
     <br>
     using NUnit.Framework;<br>
     #if NET_2_0<br>
    @@ -657,6 +659,34 @@ public class HasSameRulesTests<br>
                     Assert.IsTrue (utc.HasSameRules (custom));<br>
                 }<br>
             }<br>
    +<br>
    +       [TestFixture]<br>
    +        public class SerializationTests<br>
    +        {<br>
    +            TimeZoneInfo london;<br>
    +        <br>
    +            [SetUp]<br>
    +            public void CreateTimeZones ()<br>
    +            {<br>
    +                TimeZoneInfo.TransitionTime start =
    TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime
    (1,1,1,1,0,0), 3, 5, DayOfWeek.Sunday);<br>
    +                TimeZoneInfo.TransitionTime end =
    TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime
    (1,1,1,2,0,0), 10, 5, DayOfWeek.Sunday);<br>
    +                TimeZoneInfo.AdjustmentRule rule =
    TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule
    (DateTime.MinValue.Date, DateTime.MaxValue.Date, new TimeSpan
    (1,0,0), start, end);<br>
    +                london = TimeZoneInfo.CreateCustomTimeZone
    ("Europe/London", new TimeSpan (0), "Europe/London", "British
    Standard Time", "British Summer Time", new
    TimeZoneInfo.AdjustmentRule [] {rule});<br>
    +            }<br>
    +<br>
    +            [Test]<br>
    +            public void Serialization_Deserialization ()<br>
    +            {<br>
    +                MemoryStream stream = new MemoryStream ();<br>
    +                BinaryFormatter formatter = new BinaryFormatter ();<br>
    +                formatter.Serialize (stream, london);<br>
    +                stream.Position = 0;<br>
    +                TimeZoneInfo deserialized = (TimeZoneInfo)
    formatter.Deserialize (stream);<br>
    +                stream.Close ();<br>
    +                stream.Dispose ();<br>
    +                Assert.AreEqual (london, deserialized);<br>
    +            }<br>
    +        }<br>
         }<br>
     }<br>
     #endif<br>
    <br>
  </body>
</html>