[Pkg-cli-apps-commits] [SCM] keepass2 branch, upstream, updated. upstream/2.19-2-g6c6de0e

Julian Taylor jtaylor.debian at googlemail.com
Sat Oct 6 12:44:14 UTC 2012


The following commit has been merged in the upstream branch:
commit d9fe452bfb8e18fb8844160cfc8dfe3b18149ae9
Author: Julian Taylor <jtaylor.debian at googlemail.com>
Date:   Sat Sep 15 16:28:24 2012 +0200

    Imported Upstream version 2.20

diff --git a/Build/KeePassLibSD_Distrib/KeePassLibSD.dll b/Build/KeePassLibSD_Distrib/KeePassLibSD.dll
index e122702..b4eb0bd 100644
Binary files a/Build/KeePassLibSD_Distrib/KeePassLibSD.dll and b/Build/KeePassLibSD_Distrib/KeePassLibSD.dll differ
diff --git a/Build/KeePassLib_Distrib/KeePassLib.dll b/Build/KeePassLib_Distrib/KeePassLib.dll
index ad1ae13..0b8797d 100644
Binary files a/Build/KeePassLib_Distrib/KeePassLib.dll and b/Build/KeePassLib_Distrib/KeePassLib.dll differ
diff --git a/Build/KeePassLib_Distrib/KeePassLib.xml b/Build/KeePassLib_Distrib/KeePassLib.xml
index ead4795..2aef260 100644
--- a/Build/KeePassLib_Distrib/KeePassLib.xml
+++ b/Build/KeePassLib_Distrib/KeePassLib.xml
@@ -36,57 +36,40 @@
             Custom icon. <c>PwCustomIcon</c> objects are immutable.
             </summary>
         </member>
-        <member name="T:KeePassLib.Serialization.Kdb4File">
+        <member name="T:KeePassLib.Serialization.KdbxFile">
             <summary>
-            Serialization to KeePass KDB files.
+            Serialization to KeePass KDBX files.
             </summary>
             <summary>
             Serialization to KeePass KDBX files.
             </summary>
             <summary>
-            Serialization to KeePass KDB files.
+            Serialization to KeePass KDBX files.
+            </summary>
+            <summary>
+            Serialization to KeePass KDBX files.
             </summary>
         </member>
-        <member name="F:KeePassLib.Serialization.Kdb4File.FileSignature1">
+        <member name="F:KeePassLib.Serialization.KdbxFile.FileSignature1">
             <summary>
             File identifier, first 32-bit value.
             </summary>
         </member>
-        <member name="F:KeePassLib.Serialization.Kdb4File.FileSignature2">
+        <member name="F:KeePassLib.Serialization.KdbxFile.FileSignature2">
             <summary>
             File identifier, second 32-bit value.
             </summary>
         </member>
-        <member name="F:KeePassLib.Serialization.Kdb4File.FileVersion32">
+        <member name="F:KeePassLib.Serialization.KdbxFile.FileVersion32">
             <summary>
-            File version of files saved by the current <c>Kdb4File</c> class.
+            File version of files saved by the current <c>KdbxFile</c> class.
             KeePass 2.07 has version 1.01, 2.08 has 1.02, 2.09 has 2.00,
-            2.10 has 2.02, 2.11 has 2.04, 2.15 has 3.00.
+            2.10 has 2.02, 2.11 has 2.04, 2.15 has 3.00, 2.20 has 3.01.
             The first 2 bytes are critical (i.e. loading will fail, if the
             file version is too high), the last 2 bytes are informational.
             </summary>
         </member>
-        <member name="M:KeePassLib.Serialization.Kdb4File.Save(System.IO.Stream,KeePassLib.PwGroup,KeePassLib.Serialization.Kdb4Format,KeePassLib.Interfaces.IStatusLogger)">
-            <summary>
-            Save the contents of the current <c>PwDatabase</c> to a KDBX file.
-            </summary>
-            <param name="sSaveTo">Stream to write the KDBX file into.</param>
-            <param name="pgDataSource">Group containing all groups and
-            entries to write. If <c>null</c>, the complete database will
-            be written.</param>
-            <param name="format">Format of the file to create.</param>
-            <param name="slLogger">Logger that recieves status information.</param>
-        </member>
-        <member name="M:KeePassLib.Serialization.Kdb4File.WriteEntries(System.IO.Stream,KeePassLib.PwEntry[])">
-            <summary>
-            Write entries to a stream.
-            </summary>
-            <param name="msOutput">Output stream to which the entries will be written.</param>
-            <param name="vEntries">Entries to serialize.</param>
-            <returns>Returns <c>true</c>, if the entries were written successfully
-            to the stream.</returns>
-        </member>
-        <member name="M:KeePassLib.Serialization.Kdb4File.Load(System.String,KeePassLib.Serialization.Kdb4Format,KeePassLib.Interfaces.IStatusLogger)">
+        <member name="M:KeePassLib.Serialization.KdbxFile.Load(System.String,KeePassLib.Serialization.KdbxFormat,KeePassLib.Interfaces.IStatusLogger)">
             <summary>
             Load a KDB file from a file.
             </summary>
@@ -94,35 +77,55 @@
             <param name="kdbFormat">Format specifier.</param>
             <param name="slLogger">Status logger (optional).</param>
         </member>
-        <member name="M:KeePassLib.Serialization.Kdb4File.Load(System.IO.Stream,KeePassLib.Serialization.Kdb4Format,KeePassLib.Interfaces.IStatusLogger)">
+        <member name="M:KeePassLib.Serialization.KdbxFile.Load(System.IO.Stream,KeePassLib.Serialization.KdbxFormat,KeePassLib.Interfaces.IStatusLogger)">
             <summary>
             Load a KDB file from a stream.
             </summary>
             <param name="sSource">Stream to read the data from. Must contain
-            a KDB4 stream.</param>
+            a KDBX stream.</param>
             <param name="kdbFormat">Format specifier.</param>
             <param name="slLogger">Status logger (optional).</param>
         </member>
-        <member name="M:KeePassLib.Serialization.Kdb4File.ReadEntries(System.IO.Stream)">
+        <member name="M:KeePassLib.Serialization.KdbxFile.ReadEntries(System.IO.Stream)">
             <summary>
             Read entries from a stream.
             </summary>
             <param name="msData">Input stream to read the entries from.</param>
             <returns>Extracted entries.</returns>
         </member>
-        <member name="M:KeePassLib.Serialization.Kdb4File.#ctor(KeePassLib.PwDatabase)">
+        <member name="M:KeePassLib.Serialization.KdbxFile.Save(System.IO.Stream,KeePassLib.PwGroup,KeePassLib.Serialization.KdbxFormat,KeePassLib.Interfaces.IStatusLogger)">
+            <summary>
+            Save the contents of the current <c>PwDatabase</c> to a KDBX file.
+            </summary>
+            <param name="sSaveTo">Stream to write the KDBX file into.</param>
+            <param name="pgDataSource">Group containing all groups and
+            entries to write. If <c>null</c>, the complete database will
+            be written.</param>
+            <param name="format">Format of the file to create.</param>
+            <param name="slLogger">Logger that recieves status information.</param>
+        </member>
+        <member name="M:KeePassLib.Serialization.KdbxFile.WriteEntries(System.IO.Stream,KeePassLib.PwEntry[])">
+            <summary>
+            Write entries to a stream.
+            </summary>
+            <param name="msOutput">Output stream to which the entries will be written.</param>
+            <param name="vEntries">Entries to serialize.</param>
+            <returns>Returns <c>true</c>, if the entries were written successfully
+            to the stream.</returns>
+        </member>
+        <member name="M:KeePassLib.Serialization.KdbxFile.#ctor(KeePassLib.PwDatabase)">
             <summary>
             Default constructor.
             </summary>
             <param name="pwDataStore">The <c>PwDatabase</c> instance that the
             class will load file data into or use to create a KDBX file.</param>
         </member>
-        <member name="M:KeePassLib.Serialization.Kdb4File.DetermineLanguageId">
+        <member name="M:KeePassLib.Serialization.KdbxFile.DetermineLanguageId">
             <summary>
             Call this once to determine the current localization settings.
             </summary>
         </member>
-        <member name="P:KeePassLib.Serialization.Kdb4File.DetachBinaries">
+        <member name="P:KeePassLib.Serialization.KdbxFile.DetachBinaries">
             <summary>
             Detach binaries when opening a file. If this isn't <c>null</c>,
             all binaries are saved to the specified path and are removed
@@ -250,6 +253,22 @@
             The fully qualified name of the form.
             </summary>
         </member>
+        <member name="T:KeePassLib.Serialization.KdbxFormat">
+            <summary>
+            The <c>KdbxFile</c> class supports saving the data to various
+            formats.
+            </summary>
+        </member>
+        <member name="F:KeePassLib.Serialization.KdbxFormat.Default">
+            <summary>
+            The default, encrypted file format.
+            </summary>
+        </member>
+        <member name="F:KeePassLib.Serialization.KdbxFormat.PlainXml">
+            <summary>
+            Use this flag when exporting data to a plain-text XML file.
+            </summary>
+        </member>
         <member name="P:KeePassLib.Keys.KeyProvider.Name">
             <summary>
             Name of your key provider (should be unique).
@@ -696,7 +715,7 @@
         <member name="P:KeePassLib.Resources.KLRes.FileSaveCorruptionWarning">
             <summary>
             Look up a localized string similar to
-            'The target file might be in a corrupted state. Please try saving again, and if that fails, save the database to a different location.'.
+            'The target file might be corrupted. Please try saving again. If that fails, save the database to a different location.'.
             </summary>
         </member>
         <member name="P:KeePassLib.Resources.KLRes.FileSaveFailed">
@@ -983,6 +1002,13 @@
             <param name="uValue">64-bit input word.</param>
             <returns>Eight bytes representing the 64-bit value.</returns>
         </member>
+        <member name="P:KeePassLib.Serialization.BinaryReaderEx.CopyDataTo">
+            <summary>
+            If this property is set to a non-null stream, all data that
+            is read from the input stream is automatically written to
+            the copy stream (before returning the read data).
+            </summary>
+        </member>
         <member name="T:KeePassLib.PwGroup">
             <summary>
             A group containing several password entries.
@@ -2389,22 +2415,6 @@
             This doesn't remove environment variables (wrapped in '%').
             </summary>
         </member>
-        <member name="T:KeePassLib.Serialization.Kdb4Format">
-            <summary>
-            The <c>Kdb4File</c> class supports saving the data to various
-            formats.
-            </summary>
-        </member>
-        <member name="F:KeePassLib.Serialization.Kdb4Format.Default">
-            <summary>
-            The default, encrypted file format.
-            </summary>
-        </member>
-        <member name="F:KeePassLib.Serialization.Kdb4Format.PlainXml">
-            <summary>
-            Use this flag when exporting data to a plain-text XML file.
-            </summary>
-        </member>
         <member name="T:KeePassLib.PwDatabase">
             <summary>
             The core password manager class. It contains a number of groups, which
diff --git a/Build/PrepMonoDev.sh b/Build/PrepMonoDev.sh
index 8401e59..bdb6be2 100644
--- a/Build/PrepMonoDev.sh
+++ b/Build/PrepMonoDev.sh
@@ -2,7 +2,8 @@ cp -f ../Ext/Icons/Finals2/plockb.ico ../KeePass/KeePass.ico
 cp -f ../Ext/Icons/Finals2/plockb.ico ../KeePass/Resources/Images/KeePass.ico
 
 sed 's!<SignAssembly>true</SignAssembly>!<SignAssembly>false</SignAssembly>!g' ../KeePass/KeePass.csproj > ../KeePass/KeePass.csproj.new
-mv -f ../KeePass/KeePass.csproj.new ../KeePass/KeePass.csproj
+cat ../KeePass/KeePass.csproj.new | grep -v 'sgen\.exe' > ../KeePass/KeePass.csproj
+rm -f ../KeePass/KeePass.csproj.new
 
 sed 's!<SignAssembly>true</SignAssembly>!<SignAssembly>false</SignAssembly>!g' ../KeePassLib/KeePassLib.csproj > ../KeePassLib/KeePassLib.csproj.new
 mv -f ../KeePassLib/KeePassLib.csproj.new ../KeePassLib/KeePassLib.csproj
diff --git a/Docs/Chm/KeePassContents.hhc b/Docs/Chm/KeePassContents.hhc
index 58d0c56..20f0445 100644
--- a/Docs/Chm/KeePassContents.hhc
+++ b/Docs/Chm/KeePassContents.hhc
@@ -174,7 +174,7 @@
 		</OBJECT>
 	<UL>
 		<LI> <OBJECT type="text/sitemap">
-			<param name="Name" value="Customize">
+			<param name="Name" value="Customization">
 			<param name="Local" value="help\v2_dev\customize.html">
 			</OBJECT>
 		<LI> <OBJECT type="text/sitemap">
diff --git a/Docs/Chm/help/base/autotype.html b/Docs/Chm/help/base/autotype.html
index 26fba39..f1b0714 100644
--- a/Docs/Chm/help/base/autotype.html
+++ b/Docs/Chm/help/base/autotype.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
@@ -400,7 +396,7 @@ simple wildcards:</p>
 
 
 
-In KeePass ≥ 2.06, wildcards may also appear in the middle of patterns.
+Wildcards may also appear in the middle of patterns.
 For example, <code>*Windows*Explorer*</code> would match
 <code>Windows Explorer</code>.<br />
 <br />
@@ -452,7 +448,7 @@ Example</h2>
 
 <p>Now let's have a look at a real-world example: logging into a website. In this example,
 will we use the global auto-type hot key to fill out the login webpage.
-First open the <a href="http://keepass.info/help/kb/kb090406_testform.html"
+First open the <a href="http://keepass.info/help/kb/testform.html"
 target="_blank">test page</a>, and afterwards create a new entry
 in KeePass with title <i>Test Form</i> and a user name and password
 of your choice.</p>
diff --git a/Docs/Chm/help/base/autourl.html b/Docs/Chm/help/base/autourl.html
index 2fa0079..6acf69b 100644
--- a/Docs/Chm/help/base/autourl.html
+++ b/Docs/Chm/help/base/autourl.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/cmdline.html b/Docs/Chm/help/base/cmdline.html
index 00b30cf..1c16d89 100644
--- a/Docs/Chm/help/base/cmdline.html
+++ b/Docs/Chm/help/base/cmdline.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
@@ -58,12 +54,19 @@ The database file location is passed as argument. Only one database file is allo
 If the path contains a space, it must be enclosed in quotes (").</p>
 
 <p><b>Password.</b>
-Passwords are passed using the <code>-pw:</code> option. In order to
+Passwords can be passed using the <code>-pw:</code> option. In order to
 pass 'abc' as password, you would add the following argument to the command line:
 <code>-pw:abc</code>. Note that there must be no space between the ':' and the
 password. If your password contains a space, you must enclose it in quotes. For
 example: <code>-pw:"my secret password"</code>.</p>
 
+<p>Using the <code>-pw:</code> option is not recommended, because of
+security reasons (the operating system allows reading the command line
+options of other applications).</p>
+
+<p>When passing the <code>-pw-stdin</code> option, KeePass ≥ 1.24 and ≥ 2.20
+read the password from the StdIn stream.</p>
+
 <p><b>Key file.</b>
 For supplying the key file location, the <code>-keyfile:</code> switch
 exists. The same rules as above apply, just that you specify the key file location:
@@ -88,7 +91,8 @@ sets the focus to the password edit window.</p>
 for you and displays the login prompt. In contrast, the <code>keyfile</code> switch
 doesn't prompt you for the (maybe missing) password.</p>
 
-<p>The <code>-minimize</code> command line argument makes KeePass start up minimized.</p>
+<p><b>Other.</b>
+The <code>-minimize</code> command line argument makes KeePass start up minimized.</p>
 
 <p>The <code>-auto-type</code> command line argument makes all previous KeePass
 instances perform a global auto-type.</p>
@@ -202,8 +206,8 @@ in <i>'Tools' - 'Options...' - 'Advanced'</i>.</p>
 it does not show a main window) and will immediately terminate after sending close
 requests to the other instances.</p>
 
-<p>KeePass ≥ 1.17 and ≥ 2.10 support the <code>--lock-all</code> and
-<code>--unlock-all</code> command line options to lock/unlock the workspaces
+<p>The <code>--lock-all</code> and
+<code>--unlock-all</code> command line options lock/unlock the workspaces
 of all other KeePass instances.</p>
 
 </body></html>
diff --git a/Docs/Chm/help/base/configuration.html b/Docs/Chm/help/base/configuration.html
index 346a73c..ea5c702 100644
--- a/Docs/Chm/help/base/configuration.html
+++ b/Docs/Chm/help/base/configuration.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
@@ -65,22 +61,22 @@ Configuration files are stored in XML format.<br /><br />
 <tr>
 <td>Global</td>
 <td>Application Directory</td>
-<td>C:\Program Files\KeePass Password Safe\KeePass.config.xml</td>
+<td>C:\Program Files\KeePass Password Safe 2\KeePass.config.xml</td>
 </tr>
 <tr>
 <td>Global (Virtualized)</td>
 <td>Windows Vista/7/8 Virtual Store</td>
-<td>C:\Users\<i>User Name</i>\AppData\Local\VirtualStore\Program Files\KeePass Password Safe\KeePass.config.xml</td>
+<td>C:\Users\<i>User Name</i>\AppData\Local\VirtualStore\Program Files\KeePass Password Safe 2\KeePass.config.xml</td>
 </tr>
 <tr>
 <td>Local</td>
 <td>User Application Data</td>
-<td>C:\Documents and Settings\<i>User Name</i>\Application Data\KeePass\KeePass.config.xml</td>
+<td>C:\Users\<i>User Name</i>\AppData\Roaming\KeePass\KeePass.config.xml</td>
 </tr>
 <tr>
 <td>Enforced</td>
 <td>Application Directory</td>
-<td>C:\Program Files\KeePass Password Safe\KeePass.config.enforced.xml</td>
+<td>C:\Program Files\KeePass Password Safe 2\KeePass.config.enforced.xml</td>
 </tr>
 </table>
 
@@ -143,6 +139,47 @@ stored).</p>
 <p>Configuration items that are not present in the enforced configuration file are
 loaded normally from global/local configuration files.</p>
 
+<table border="0px" width="100%" cellpadding="0px" cellspacing="0px">
+<tr><td align="left" valign="top">
+<b>Example (2.x).</b>
+The following <code>KeePass.config.enforced.xml</code> file enforces the
+values/states of the settings 'Clipboard auto-clear time (seconds)',
+'Lock workspace when minimizing main window' and
+'Lock workspace when locking the computer or switching the user'.
+All other settings can be configured by the user.
+
+<pre><?xml version="1.0" encoding="utf-8"?>
+<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+	<Security>
+		<WorkspaceLocking>
+			<LockOnWindowMinimize>true</LockOnWindowMinimize>
+			<LockOnSessionSwitch>true</LockOnSessionSwitch>
+		</WorkspaceLocking>
+		<ClipboardClearAfterSeconds>20</ClipboardClearAfterSeconds>
+	</Security>
+</Configuration></pre></td>
+<td width="210px" align="right" valign="top">
+<a href="../images/options_enf_big.png"><img
+src="../images/options_enf.png" align="right" border="0px" alt="Enforced Options" /></a>
+</td></tr></table>
+
+<p><b>UI disabled.</b>
+KeePass 2.x disables most user interface items that are enforced.
+This can be seen in the screenshot for the example above:
+the enforced settings are drawn using
+gray text and clicking on them has no effect.</p>
+
+<p><b>Security.</b>
+Users must not have write access to the enforced configuration file
+(otherwise they could modify it, e.g. using a text editor).</p>
+
+<p>Furthermore, this method only is effective as long as your users run the KeePass
+installation on the network drive. If they copy KeePass to their hard drives and
+run it from there, the options you set are not enforced (the local KeePass
+installation doesn't know anything of the enforced configuration file on the network drive
+in this case).</p>
+
 <!-- Configuration items that are not present in the enforced configuration file are
 set to their default values. -->
 
@@ -155,7 +192,7 @@ the enforced configuration file would look like the following:
 
 <pre><?xml version="1.0" encoding="utf-8"?>
 <Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 	<MainWindow>
 		<EntryListColumns>
 			<b><Column /></b>
@@ -177,13 +214,7 @@ has the same tag name as the following sibling nodes ("Column"),
 and therefore is required.
 
 
-<p>This method of course only is effective as long as your users run the KeePass
-installation on the network drive. If they copy KeePass to their hard drives and
-run it from there, the options you set are not enforced (the local KeePass
-installation doesn't know anything of the enforced configuration file on the network drive
-in this case).</p>
-
-<br />
+<br /><br />
 
 <a name="tech"></a>
 <h2 class="sectiontitle">
diff --git a/Docs/Chm/help/base/credits.html b/Docs/Chm/help/base/credits.html
index e7c20f4..bbc6b7e 100644
--- a/Docs/Chm/help/base/credits.html
+++ b/Docs/Chm/help/base/credits.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/credits_icons_license.html b/Docs/Chm/help/base/credits_icons_license.html
index b51d2ae..813d455 100644
--- a/Docs/Chm/help/base/credits_icons_license.html
+++ b/Docs/Chm/help/base/credits_icons_license.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/disclaimer.html b/Docs/Chm/help/base/disclaimer.html
index 42bc029..9b4fb2e 100644
--- a/Docs/Chm/help/base/disclaimer.html
+++ b/Docs/Chm/help/base/disclaimer.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/faq.html b/Docs/Chm/help/base/faq.html
index 97064c7..bb3b84f 100644
--- a/Docs/Chm/help/base/faq.html
+++ b/Docs/Chm/help/base/faq.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
@@ -36,6 +32,7 @@
 
 
 
+
 <table class="sectionsummary"><tr><td width="68px">
 <img src="../images/b64x64_help.png" width="64px" height="64px"
 class="singleimg" align="left" alt="Help" />
@@ -103,6 +100,13 @@ are always greatly appreciated.</p>
 
 
 
+
+You might be interested in this page:
+<a href="../v2_dev/customize.html">Customization (2.x)</a>.
+
+
+
+
 <br />
 
 <a name="kpserver"></a>
@@ -156,7 +160,7 @@ application (of course respect the Open Source terms).</p>
 <p>But what can and probably will be done later is a local intranet KeePass server (for
 companies for example).
 Employees could log in to the company's password server and use it. But a centralized Internet
-server -- no chance.</p>
+server — no chance.</p>
 
 </body></html>
 
diff --git a/Docs/Chm/help/base/faq_tech.html b/Docs/Chm/help/base/faq_tech.html
index a840fb8..7344eea 100644
--- a/Docs/Chm/help/base/faq_tech.html
+++ b/Docs/Chm/help/base/faq_tech.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/fieldrefs.html b/Docs/Chm/help/base/fieldrefs.html
index 700c361..8809e3c 100644
--- a/Docs/Chm/help/base/fieldrefs.html
+++ b/Docs/Chm/help/base/fieldrefs.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/firststeps.html b/Docs/Chm/help/base/firststeps.html
index 053f7e3..dff607c 100644
--- a/Docs/Chm/help/base/firststeps.html
+++ b/Docs/Chm/help/base/firststeps.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/importexport.html b/Docs/Chm/help/base/importexport.html
index bb16f6a..aac79c0 100644
--- a/Docs/Chm/help/base/importexport.html
+++ b/Docs/Chm/help/base/importexport.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/index.html b/Docs/Chm/help/base/index.html
index 0d75efd..4d05096 100644
--- a/Docs/Chm/help/base/index.html
+++ b/Docs/Chm/help/base/index.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
@@ -94,7 +90,7 @@ Windows, Internet, My Website, etc.).
 You can drag&drop passwords into other windows. The powerful auto-type
 feature will type user names and passwords for you into other windows.
 The program can export the database to various formats.
-It can also import data from various other formats (more than 20 different
+It can also import data from various other formats (more than 35 different
 formats of other password managers, a generic CSV importer, ...).</p>
 
 <p>Of course, you can also print the password list or current view.
diff --git a/Docs/Chm/help/base/integration.html b/Docs/Chm/help/base/integration.html
index f7972d1..e5f5789 100644
--- a/Docs/Chm/help/base/integration.html
+++ b/Docs/Chm/help/base/integration.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/keys.html b/Docs/Chm/help/base/keys.html
index 80d98e1..aff3f80 100644
--- a/Docs/Chm/help/base/keys.html
+++ b/Docs/Chm/help/base/keys.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
@@ -116,7 +112,8 @@ between backing up the key file and the database, see the
 <a href="http://abp-keepass.sourceforge.net/FAQ.html" target="_blank">ABP FAQ</a>.</li>
 </ul>
 
-<p>The point of a key file is that you <i>have</i> something to
+<p><b>Location.</b>
+The point of a key file is that you <i>have</i> something to
 authenticate with (in contrast to master passwords, where you
 <i>know</i> something), for example a file on a USB stick.
 The key file content (i.e. the key data contained within the key file)
@@ -124,14 +121,14 @@ needs to be kept secret.
 The point is <i>not</i> to keep the location of the key file
 secret — selecting a file out of thousands existing on your hard disk
 basically doesn't increase
-security at all (it's very easy for malware/attackers to find out the
-correct file, for example by observing the last access times of files).
+security at all, because it's very easy for malware/attackers to find out the
+correct file (for example by observing the last access times of files,
+the recently used files list of Windows, malware scanner logs, etc.).
 Trying to keep the key file location secret is security by obscurity,
 i.e. not really effective.</p>
 
-
-
-<p>KeePass can generate key files for you, however you can also use any other,
+<p><b>File Type and Existing Files.</b>
+KeePass can generate key files for you, however you can also use any other,
 already existing file (like JPG image, DOC document, etc.).</p>
 
 
diff --git a/Docs/Chm/help/base/license_lgpl.html b/Docs/Chm/help/base/license_lgpl.html
index cd54dfa..d8d3abb 100644
--- a/Docs/Chm/help/base/license_lgpl.html
+++ b/Docs/Chm/help/base/license_lgpl.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/multiuser.html b/Docs/Chm/help/base/multiuser.html
index 9c0fd6d..b56135b 100644
--- a/Docs/Chm/help/base/multiuser.html
+++ b/Docs/Chm/help/base/multiuser.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/placeholders.html b/Docs/Chm/help/base/placeholders.html
index 9b409e1..dc4004c 100644
--- a/Docs/Chm/help/base/placeholders.html
+++ b/Docs/Chm/help/base/placeholders.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
@@ -76,12 +72,12 @@ class="singleimg" alt="Placeholder" />  Entry Field Placeholders</h2>
 <br />
 
 <table class="tablebox75">
-<tr><th width="50%">Field</th><th width="50%">Placeholder</th></tr>
-<tr><td width="50%">Title</td><td width="50%">{TITLE}</td></tr>
-<tr><td width="50%">User Name</td><td width="50%">{USERNAME}</td></tr>
-<tr><td width="50%">URL</td><td width="50%">{URL}</td></tr>
-<tr><td width="50%">Password</td><td width="50%">{PASSWORD}</td></tr>
-<tr><td width="50%">Notes</td><td width="50%">{NOTES}</td></tr>
+<tr><th width="50%">Placeholder</th><th width="50%">Field</th></tr>
+<tr><td width="50%">{TITLE}</td><td width="50%">Title</td></tr>
+<tr><td width="50%">{USERNAME}</td><td width="50%">User name</td></tr>
+<tr><td width="50%">{URL}</td><td width="50%">URL</td></tr>
+<tr><td width="50%">{PASSWORD}</td><td width="50%">Password</td></tr>
+<tr><td width="50%">{NOTES}</td><td width="50%">Notes</td></tr>
 </table>
 
 <br />
@@ -99,7 +95,12 @@ you can use the placeholder <code>{S:eMail}</code>.
 
 <table class="tablebox75">
 <tr><th width="50%">Placeholder</th><th width="50%">Is Replaced By</th></tr>
-<tr><td width="50%">{URL:RMVSCM}</td><td width="50%">Entry URL without scheme specifier.</td></tr>
+<tr><td width="50%">{URL:RMVSCM}</td><td width="50%">Entry URL without scheme name.</td></tr>
+<tr><td width="50%">{URL:SCM}</td><td width="50%">Scheme name of the entry URL.</td></tr>
+<tr><td width="50%">{URL:HOST}</td><td width="50%">Host component of the entry URL.</td></tr>
+<tr><td width="50%">{URL:PORT}</td><td width="50%">Port number of the entry URL.</td></tr>
+<tr><td width="50%">{URL:PATH}</td><td width="50%">Path component of the entry URL.</td></tr>
+<tr><td width="50%">{URL:QUERY}</td><td width="50%">Query information of the entry URL.</td></tr>
 </table>
 
 
@@ -152,7 +153,15 @@ on Unix-like systems), if installed.</td></tr>
 <tr><td width="50%">{ENV_DIRSEP}</td><td width="50%">Directory separator ('\' on Windows, '/' on Unix).</td></tr>
 <tr><td width="50%">{ENV_PROGRAMFILES_X86}</td><td width="50%">This is
 <code>%ProgramFiles(x86)%</code>, if it exists, otherwise <code>%ProgramFiles%</code>.</td></tr>
-<tr><td width="50%">{DT_SIMPLE}</td><td width="50%">Current local date/time as a simple, sortable string.</td></tr>
+</table>
+
+
+<br />
+
+<table class="tablebox75">
+<tr><th width="50%">Placeholder</th><th width="50%">Is Replaced By</th></tr>
+<tr><td width="50%">{DT_SIMPLE}</td><td width="50%">Current local date/time as a simple, sortable string.
+For example, for 2012-07-25 17:05:34 the value is 20120725170534.</td></tr>
 <tr><td width="50%">{DT_YEAR}</td><td width="50%">Year component of the current local date/time.</td></tr>
 <tr><td width="50%">{DT_MONTH}</td><td width="50%">Month component of the current local date/time.</td></tr>
 <tr><td width="50%">{DT_DAY}</td><td width="50%">Day component of the current local date/time.</td></tr>
@@ -168,7 +177,6 @@ on Unix-like systems), if installed.</td></tr>
 <tr><td width="50%">{DT_UTC_SECOND}</td><td width="50%">Seconds component of the current UTC date/time.</td></tr>
 </table>
 
-
 <br /><br />
 
 <a name="envvars"></a>
diff --git a/Docs/Chm/help/base/pwgenerator.html b/Docs/Chm/help/base/pwgenerator.html
index a5ebca8..dd3223e 100644
--- a/Docs/Chm/help/base/pwgenerator.html
+++ b/Docs/Chm/help/base/pwgenerator.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/repair.html b/Docs/Chm/help/base/repair.html
index 75c5846..ecf1d9a 100644
--- a/Docs/Chm/help/base/repair.html
+++ b/Docs/Chm/help/base/repair.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/secedits.html b/Docs/Chm/help/base/secedits.html
index cfa5592..d1a97d5 100644
--- a/Docs/Chm/help/base/secedits.html
+++ b/Docs/Chm/help/base/secedits.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/security.html b/Docs/Chm/help/base/security.html
index 39b1b68..2fdc700 100644
--- a/Docs/Chm/help/base/security.html
+++ b/Docs/Chm/help/base/security.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
@@ -271,7 +267,7 @@ Master Key on Secure Desktop (Protection against Keyloggers)</h2>
 <p><i>Note: KeePass was one of the first (maybe even the first) password
 manager that allows entering the master key on a secure desktop!</i></p>
 
-<p>KeePass ≥ 2.15 has an option (in 'Tools' -> 'Options' -> tab 'Security')
+<p>KeePass 2.x has an option (in 'Tools' -> 'Options' -> tab 'Security')
 to show the master key dialog on a secure desktop
 (supported on Windows ≥ 2000), similar to Windows'
 User Account Control (UAC). Almost no keylogger works on a secure desktop.</p>
diff --git a/Docs/Chm/help/base/tans.html b/Docs/Chm/help/base/tans.html
index 128ee48..65bcbb3 100644
--- a/Docs/Chm/help/base/tans.html
+++ b/Docs/Chm/help/base/tans.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/base/usingpws.html b/Docs/Chm/help/base/usingpws.html
index 404a0a5..d12e42d 100644
--- a/Docs/Chm/help/base/usingpws.html
+++ b/Docs/Chm/help/base/usingpws.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/images/options_enf.png b/Docs/Chm/help/images/options_enf.png
new file mode 100644
index 0000000..f33c474
Binary files /dev/null and b/Docs/Chm/help/images/options_enf.png differ
diff --git a/Docs/Chm/help/images/options_enf_big.png b/Docs/Chm/help/images/options_enf_big.png
new file mode 100644
index 0000000..9180865
Binary files /dev/null and b/Docs/Chm/help/images/options_enf_big.png differ
diff --git a/Docs/Chm/help/v2/autotype_obfuscation.html b/Docs/Chm/help/v2/autotype_obfuscation.html
index a23c77c..4aea58b 100644
--- a/Docs/Chm/help/v2/autotype_obfuscation.html
+++ b/Docs/Chm/help/v2/autotype_obfuscation.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/v2/dbsettings.html b/Docs/Chm/help/v2/dbsettings.html
index 6b93201..9fce21b 100644
--- a/Docs/Chm/help/v2/dbsettings.html
+++ b/Docs/Chm/help/v2/dbsettings.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/v2/entry.html b/Docs/Chm/help/v2/entry.html
index 9835ecd..ca38e15 100644
--- a/Docs/Chm/help/v2/entry.html
+++ b/Docs/Chm/help/v2/entry.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/v2/guioptions.html b/Docs/Chm/help/v2/guioptions.html
index 60794ac..b141bb8 100644
--- a/Docs/Chm/help/v2/guioptions.html
+++ b/Docs/Chm/help/v2/guioptions.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/v2/ioconnect.html b/Docs/Chm/help/v2/ioconnect.html
index 3c66a9d..8f9f7de 100644
--- a/Docs/Chm/help/v2/ioconnect.html
+++ b/Docs/Chm/help/v2/ioconnect.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/v2/license.html b/Docs/Chm/help/v2/license.html
index a4f1685..ee8e041 100644
--- a/Docs/Chm/help/v2/license.html
+++ b/Docs/Chm/help/v2/license.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/v2/plugins.html b/Docs/Chm/help/v2/plugins.html
index ba1f751..3737731 100644
--- a/Docs/Chm/help/v2/plugins.html
+++ b/Docs/Chm/help/v2/plugins.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/v2/policy.html b/Docs/Chm/help/v2/policy.html
index a7f9f34..5a58781 100644
--- a/Docs/Chm/help/v2/policy.html
+++ b/Docs/Chm/help/v2/policy.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/v2/setup.html b/Docs/Chm/help/v2/setup.html
index 8be268d..26f7399 100644
--- a/Docs/Chm/help/v2/setup.html
+++ b/Docs/Chm/help/v2/setup.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
@@ -236,6 +232,11 @@ or shell script file with this command line (use an absolute path to
 <code>KeePass.exe</code>, if the shortcut / shell script file is in a
 different location).</p>
 
+<p><b>Clipboard:</b><br />
+On some systems, Mono's clipboard routines don't work properly.
+In this case, install the <code>xsel</code> package. If <code>xsel</code>
+is installed, KeePass ≥ 2.20 uses this utility for clipboard operations.</p>
+
 <p><b>Global Auto-Type:</b><br />
 In order to use <a href="../base/autotype.html#autoglobal">global auto-type</a>,
 you need to create an appropriate system-wide hot key. This only needs to be done
diff --git a/Docs/Chm/help/v2/sync.html b/Docs/Chm/help/v2/sync.html
index 02df7c3..d6d05a8 100644
--- a/Docs/Chm/help/v2/sync.html
+++ b/Docs/Chm/help/v2/sync.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/v2/translation.html b/Docs/Chm/help/v2/translation.html
index 2e780a1..a1f58ed 100644
--- a/Docs/Chm/help/v2/translation.html
+++ b/Docs/Chm/help/v2/translation.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/v2/triggers.html b/Docs/Chm/help/v2/triggers.html
index 5278a81..aedae43 100644
--- a/Docs/Chm/help/v2/triggers.html
+++ b/Docs/Chm/help/v2/triggers.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
@@ -333,7 +329,7 @@ Remove a custom button from the toolbar in the main window.
 <h2 class="sectiontitle">
 <img src="../images/b16x16_make_kdevelop.png" class="singleimg" alt="Triggers" />  Examples</h2>
 
-<p>See the <a href="http://keepass.info/help/kb/kb091127_trigger_examples.html"
+<p>See the <a href="http://keepass.info/help/kb/trigger_examples.html"
 target="_blank">Trigger Examples</a> page.</p>
 
 </body></html>
diff --git a/Docs/Chm/help/v2/version.html b/Docs/Chm/help/v2/version.html
index 11ed683..b19a294 100644
--- a/Docs/Chm/help/v2/version.html
+++ b/Docs/Chm/help/v2/version.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/v2_dev/customize.html b/Docs/Chm/help/v2_dev/customize.html
index f63147e..841679e 100644
--- a/Docs/Chm/help/v2_dev/customize.html
+++ b/Docs/Chm/help/v2_dev/customize.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
@@ -26,7 +22,7 @@
 	<meta name="DC.Language" content="en" />
 	<meta name="DC.Rights" content="Copyright (c) 2003-2012 Dominik Reichl" />
 
-	<title>Customize - KeePass</title>
+	<title>Customization (2.x) - KeePass</title>
 	<base target="_self" />
 	<link rel="stylesheet" type="text/css" href="../../default.css" />
 	
@@ -38,8 +34,8 @@
 
 <table class="sectionsummary"><tr><td width="68px">
 <img src="../images/b64x64_package_system.png" class="singleimg" align="left" alt="Help" />
-</td><td valign="middle"><h1>Customize</h1><br />
-KeePass features various options for network administrators to
+</td><td valign="middle"><h1>Customization (2.x)</h1><br />
+KeePass 2.x features various options for network administrators to
 customize the program's appearance and behavior.
 </td></tr></table>
 
diff --git a/Docs/Chm/help/v2_dev/plg_index.html b/Docs/Chm/help/v2_dev/plg_index.html
index e5a590f..1c87e66 100644
--- a/Docs/Chm/help/v2_dev/plg_index.html
+++ b/Docs/Chm/help/v2_dev/plg_index.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
@@ -127,7 +123,7 @@ already, which must be followed by all plugins:</p>
 <li>The namespace must be named like the DLL file without extension. Our DLL
 file is named <code>SamplePlugin.dll</code>, therefore the namespace must
 be called <code>SamplePlugin</code>.</li>
-<li>The main plugin class (which KeePass will instanciate when it loads your
+<li>The main plugin class (which KeePass will instantiate when it loads your
 plugin) must be called exactly the same as the namespace plus "Ext".
 In this case: "SamplePlugin" + "Ext" = "SamplePluginExt".</li>
 <li>The main plugin class must be derived from the <code>KeePass.Plugins.Plugin</code>
diff --git a/Docs/Chm/help/v2_dev/scr_index.html b/Docs/Chm/help/v2_dev/scr_index.html
index d24e840..0ccebf0 100644
--- a/Docs/Chm/help/v2_dev/scr_index.html
+++ b/Docs/Chm/help/v2_dev/scr_index.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/v2_dev/scr_kps_index.html b/Docs/Chm/help/v2_dev/scr_kps_index.html
index d859b6e..234d34a 100644
--- a/Docs/Chm/help/v2_dev/scr_kps_index.html
+++ b/Docs/Chm/help/v2_dev/scr_kps_index.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/help/v2_dev/scr_sc_index.html b/Docs/Chm/help/v2_dev/scr_sc_index.html
index dced094..4bdb3fc 100644
--- a/Docs/Chm/help/v2_dev/scr_sc_index.html
+++ b/Docs/Chm/help/v2_dev/scr_sc_index.html
@@ -10,10 +10,6 @@
 
 	<meta name="robots" content="index" />
 
-	<meta http-equiv="expires" content="0" />
-	<meta http-equiv="cache-control" content="no-cache" />
-	<meta http-equiv="pragma" content="no-cache" />
-
 	<meta name="DC.Title" content="KeePass - The Open Source Password Manager" />
 	<meta name="DC.Creator" content="Dominik Reichl" />
 	<meta name="DC.Subject" content="Open-Source Password Safe" />
diff --git a/Docs/Chm/screenshots/keepass_2x/gencsvimp.png b/Docs/Chm/screenshots/keepass_2x/gencsvimp.png
index b427c17..dea4c9e 100644
Binary files a/Docs/Chm/screenshots/keepass_2x/gencsvimp.png and b/Docs/Chm/screenshots/keepass_2x/gencsvimp.png differ
diff --git a/Docs/History.txt b/Docs/History.txt
index 8c46690..56e5a9d 100644
--- a/Docs/History.txt
+++ b/Docs/History.txt
@@ -1,3 +1,70 @@
+2012-09-08: 2.20
+- Header data in KDBX files is now authenticated (to prevent
+  silent data corruption attacks; thanks to P. Gasti and K. B.
+  Rasmussen)
+- Added management of working directories (a separate working
+  directory is remembered for each file dialog context; working
+  directories are remembered relatively to KeePass.exe; the
+  management can be deactivated by turning off the new option
+  'Remember working directories')
+- Added option to cancel auto-type when the target window title
+  changes
+- Added quick search box in the toolbar of the internal text
+  editor
+- Files can now be attached to entries by using drag&drop from
+  Windows Explorer to the attachments list in the entry editing
+  dialog
+- Added '-pw-stdin' command line option to make KeePass read
+  the master password from the StdIn stream
+- Added placeholders to get parts of the entry URL: {URL:SCM},
+  {URL:HOST}, {URL:PORT}, {URL:PATH} and {URL:QUERY}
+- Added a 'Details' button in the plugin load failure message
+  box (when clicked, detailed error information for developers
+  is shown)
+- Added warning icon left of the Windows user account option
+  description in the master key creation dialog
+- Added support for more image file formats (e.g. when
+  importing custom client icons)
+- Added support for importing DesktopKnox 3.2 XML files
+- The generic CSV importer now guesses whether the option to
+  ignore the first row should be enabled or not (the user of
+  course can still specify it manually, too)
+- Added support for exporting to KeePass 1.x CSV files
+- Added support for moving the PLGX cache to a different remote
+  drive
+- The Spr engine is now extensible, i.e. plugins can provide
+  additional transformations/placeholders
+- On Unix-like systems, KeePass now uses the 'xsel' utility for
+  clipboard operations, if 'xsel' is installed (in order to
+  work around Mono clipboard bugs)
+- Added Mono workaround to set the WM_CLASS property
+- Added workaround for Mono splitter bug
+- The 'PrepMonoDev.sh' script now removes the serialization
+  assembly generating post build event
+- TrlUtil: added support for importing PO files
+
+- Improved FTP file existence checking
+- High DPI UI improvements
+- The database is not marked as modified anymore when using in-
+  place label editing to fake-edit a group's name (i.e. when
+  the final new name is the same as the previous one)
+- Password is not auto-repeated anymore when trying to unhide
+  it fails due to the policy 'Unhide Passwords' being disabled
+- Improved menu accelerator and shortcut keys
+- Changed IO connection name display format
+- Improved browser detection on Mac OS X
+- Task dialog thread safety improvements
+- Added UI check during import for KPScript
+- Upgraded and improved installer (now uses Unicode, LZMA2
+  compression, ...)
+- Various UI improvements
+- Various code optimizations
+- Minor other improvements
+
+- On Windows systems, new line sequences in text to be shown in
+  a standard multiline text box are now converted to Windows
+  format
+
 2012-05-01: 2.19
 - New generic CSV importer (now supports multi-line fields, '\'
   as escape character, field & record separators and the text
diff --git a/Ext/KeePass.exe.config b/Ext/KeePass.exe.config
index 9635f44..5f6aca9 100644
--- a/Ext/KeePass.exe.config
+++ b/Ext/KeePass.exe.config
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="utf-8" ?>
 <configuration>
 	<startup>
 		<supportedRuntime version="v4.0" />
@@ -9,10 +10,11 @@
 				<assemblyIdentity name="KeePass"
 					publicKeyToken="fed2ed7716aecf5c"
 					culture="neutral" />
-				<bindingRedirect oldVersion="2.0.9.0-2.19.0.0"
-					newVersion="2.19.0.18206" />
+				<bindingRedirect oldVersion="2.0.9.0-2.20.0.0"
+					newVersion="2.20.0.18622" />
 			</dependentAssembly>
 		</assemblyBinding>
 		<enforceFIPSPolicy enabled="false" />
+		<loadFromRemoteSources enabled="true" />
 	</runtime>
 </configuration>
diff --git a/Ext/KeePass.iss b/Ext/KeePass.iss
index a2c3407..63fc529 100644
--- a/Ext/KeePass.iss
+++ b/Ext/KeePass.iss
@@ -8,10 +8,10 @@
 #define MyAppNameEx "KeePass Password Safe 2"
 #define MyAppPublisher "Dominik Reichl"
 
-#define KeeVersionStr "2.19"
-#define KeeVersionStrWithMinor "2.19"
-#define KeeVersionStrWithMinorPath "2.19"
-#define KeeVersionWin "2.19.0.0"
+#define KeeVersionStr "2.20"
+#define KeeVersionStrWithMinor "2.20"
+#define KeeVersionStrWithMinorPath "2.20"
+#define KeeVersionWin "2.20.0.0"
 
 #define MyAppURL "http://keepass.info/"
 #define MyAppExeName "KeePass.exe"
@@ -29,14 +29,14 @@ AppPublisherURL={#MyAppURL}
 AppSupportURL={#MyAppURL}
 AppUpdatesURL={#MyAppURL}
 AppCopyright=Copyright (c) {#KeeDevPeriod} {#MyAppPublisher}
-MinVersion=4.1,5.0
+MinVersion=5.0
 DefaultDirName={pf}\{#MyAppNameEx}
 DefaultGroupName={#MyAppNameEx}
 AllowNoIcons=yes
 LicenseFile=..\Docs\License_Install.txt
 OutputDir=..\Build\KeePass_Distrib
 OutputBaseFilename={#MyAppNameShort}-{#KeeVersionStrWithMinorPath}-Setup
-Compression=lzma/ultra
+Compression=lzma2/ultra
 SolidCompression=yes
 InternalCompressLevel=ultra
 UninstallDisplayIcon={app}\{#MyAppExeName}
@@ -68,7 +68,7 @@ Name: norwegian; MessagesFile: compiler:Languages\Norwegian.isl
 Name: polish; MessagesFile: compiler:Languages\Polish.isl
 Name: portuguese; MessagesFile: compiler:Languages\Portuguese.isl
 Name: russian; MessagesFile: compiler:Languages\Russian.isl
-Name: slovak; MessagesFile: compiler:Languages\Slovak.isl
+; Name: slovak; MessagesFile: compiler:Languages\Slovak.isl
 Name: slovenian; MessagesFile: compiler:Languages\Slovenian.isl
 Name: spanish; MessagesFile: compiler:Languages\Spanish.isl
 
@@ -82,7 +82,7 @@ Name: Core; Description: Core KeePass Application Files; Flags: fixed; Types: fu
 Name: UserDoc; Description: Help Manual; Types: full custom
 Name: KeePassLibC; Description: Native Support Library (KeePass 1.x); Types: full custom
 ; Name: NativeLib; Description: Native Crypto Library (Fast Key Transformations); Types: full custom
-Name: XSL; Description: XSL Stylesheets for KDB4 XML Files; Types: full custom
+Name: XSL; Description: XSL Stylesheets for KDBX XML Files; Types: full custom
 Name: NGen; Description: Optimize KeePass Performance; Types: full custom; ExtraDiskSpaceRequired: 1048576
 Name: PreLoad; Description: Optimize KeePass On-Demand Start-Up Performance; Types: full custom; ExtraDiskSpaceRequired: 2048
 ; Name: FileAssoc; Description: {cm:AssocFileExtension,{#MyAppNameShort},.kdbx}; Types: full custom
@@ -99,11 +99,11 @@ Source: ..\Build\KeePass_Distrib\KeePassLibC32.dll; DestDir: {app}; Components:
 Source: ..\Build\KeePass_Distrib\KeePassLibC64.dll; DestDir: {app}; Components: KeePassLibC
 ; Source: ..\Build\KeePass_Distrib\KeePassNtv32.dll; DestDir: {app}; Components: NativeLib
 ; Source: ..\Build\KeePass_Distrib\KeePassNtv64.dll; DestDir: {app}; Components: NativeLib
-Source: ..\Build\KeePass_Distrib\XSL\KDB4_DetailsFull.xsl; DestDir: {app}\XSL; Components: XSL
-Source: ..\Build\KeePass_Distrib\XSL\KDB4_DetailsLite.xsl; DestDir: {app}\XSL; Components: XSL
-Source: ..\Build\KeePass_Distrib\XSL\KDB4_PasswordsOnly.xsl; DestDir: {app}\XSL; Components: XSL
-Source: ..\Build\KeePass_Distrib\XSL\KDB4_Styles.css; DestDir: {app}\XSL; Components: XSL
-Source: ..\Build\KeePass_Distrib\XSL\KDB4_Tabular.xsl; DestDir: {app}\XSL; Components: XSL
+Source: ..\Build\KeePass_Distrib\XSL\KDBX_DetailsFull.xsl; DestDir: {app}\XSL; Components: XSL
+Source: ..\Build\KeePass_Distrib\XSL\KDBX_DetailsLite.xsl; DestDir: {app}\XSL; Components: XSL
+Source: ..\Build\KeePass_Distrib\XSL\KDBX_PasswordsOnly.xsl; DestDir: {app}\XSL; Components: XSL
+Source: ..\Build\KeePass_Distrib\XSL\KDBX_Styles.css; DestDir: {app}\XSL; Components: XSL
+Source: ..\Build\KeePass_Distrib\XSL\KDBX_Tabular.xsl; DestDir: {app}\XSL; Components: XSL
 Source: ..\Build\KeePass_Distrib\XSL\TableHeader.gif; DestDir: {app}\XSL; Components: XSL
 
 [Registry]
diff --git a/Ext/KeePassMsi/KeePassMsi.vdproj b/Ext/KeePassMsi/KeePassMsi.vdproj
index 9f4db7d..54e1cdb 100644
--- a/Ext/KeePassMsi/KeePassMsi.vdproj
+++ b/Ext/KeePassMsi/KeePassMsi.vdproj
@@ -1,4 +1,4 @@
-"DeployProject"
+"DeployProject"
 {
 "VSVersion" = "3:800"
 "ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"
@@ -240,8 +240,8 @@
         {
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0B55F2ABEF9A41A9ABAD006DCEA05841"
             {
-            "SourcePath" = "8:..\\..\\Build\\KeePass_Distrib\\XSL\\KDB4_DetailsLite.xsl"
-            "TargetName" = "8:KDB4_DetailsLite.xsl"
+            "SourcePath" = "8:..\\..\\Build\\KeePass_Distrib\\XSL\\KDBX_DetailsLite.xsl"
+            "TargetName" = "8:KDBX_DetailsLite.xsl"
             "Tag" = "8:"
             "Folder" = "8:_76A04227854C4619BBADCC3E5C2829AE"
             "Condition" = "8:"
@@ -360,8 +360,8 @@
             }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_81BBF30CE4CC438194FC340A84A065C1"
             {
-            "SourcePath" = "8:..\\..\\Build\\KeePass_Distrib\\XSL\\KDB4_Styles.css"
-            "TargetName" = "8:KDB4_Styles.css"
+            "SourcePath" = "8:..\\..\\Build\\KeePass_Distrib\\XSL\\KDBX_Styles.css"
+            "TargetName" = "8:KDBX_Styles.css"
             "Tag" = "8:"
             "Folder" = "8:_76A04227854C4619BBADCC3E5C2829AE"
             "Condition" = "8:"
@@ -382,7 +382,7 @@
             {
             "AssemblyRegister" = "3:1"
             "AssemblyIsInGAC" = "11:FALSE"
-            "AssemblyAsmDisplayName" = "8:KeePass, Version=2.19.0.18206, Culture=neutral, PublicKeyToken=fed2ed7716aecf5c, processorArchitecture=MSIL"
+            "AssemblyAsmDisplayName" = "8:KeePass, Version=2.20.0.18622, Culture=neutral, PublicKeyToken=fed2ed7716aecf5c, processorArchitecture=MSIL"
                 "ScatterAssemblies"
                 {
                     "_838987B3C51D42C3C7B9BDA1339A5500"
@@ -413,7 +413,7 @@
             {
             "AssemblyRegister" = "3:1"
             "AssemblyIsInGAC" = "11:FALSE"
-            "AssemblyAsmDisplayName" = "8:KeePass.XmlSerializers, Version=2.19.0.18206, Culture=neutral, PublicKeyToken=fed2ed7716aecf5c, processorArchitecture=MSIL"
+            "AssemblyAsmDisplayName" = "8:KeePass.XmlSerializers, Version=2.20.0.18622, Culture=neutral, PublicKeyToken=fed2ed7716aecf5c, processorArchitecture=MSIL"
                 "ScatterAssemblies"
                 {
                     "_8C05ADB649434D7892E36709EBDED4CC"
@@ -442,8 +442,8 @@
             }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_990FF777EF5740B3B48CB2D0A3D147A3"
             {
-            "SourcePath" = "8:..\\..\\Build\\KeePass_Distrib\\XSL\\KDB4_DetailsFull.xsl"
-            "TargetName" = "8:KDB4_DetailsFull.xsl"
+            "SourcePath" = "8:..\\..\\Build\\KeePass_Distrib\\XSL\\KDBX_DetailsFull.xsl"
+            "TargetName" = "8:KDBX_DetailsFull.xsl"
             "Tag" = "8:"
             "Folder" = "8:_76A04227854C4619BBADCC3E5C2829AE"
             "Condition" = "8:"
@@ -502,8 +502,8 @@
             }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_ABF4952D5353474AA85E1471C19D822F"
             {
-            "SourcePath" = "8:..\\..\\Build\\KeePass_Distrib\\XSL\\KDB4_PasswordsOnly.xsl"
-            "TargetName" = "8:KDB4_PasswordsOnly.xsl"
+            "SourcePath" = "8:..\\..\\Build\\KeePass_Distrib\\XSL\\KDBX_PasswordsOnly.xsl"
+            "TargetName" = "8:KDBX_PasswordsOnly.xsl"
             "Tag" = "8:"
             "Folder" = "8:_76A04227854C4619BBADCC3E5C2829AE"
             "Condition" = "8:"
@@ -564,7 +564,7 @@
             {
             "AssemblyRegister" = "3:1"
             "AssemblyIsInGAC" = "11:FALSE"
-            "AssemblyAsmDisplayName" = "8:KeePass, Version=2.19.0.18206, Culture=neutral, PublicKeyToken=fed2ed7716aecf5c, processorArchitecture=MSIL"
+            "AssemblyAsmDisplayName" = "8:KeePass, Version=2.20.0.18622, Culture=neutral, PublicKeyToken=fed2ed7716aecf5c, processorArchitecture=MSIL"
                 "ScatterAssemblies"
                 {
                     "_C4F8814F844C43EE8C9F5B662182B11A"
@@ -593,8 +593,8 @@
             }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F99D264600A54E439A43BDD0AD42280C"
             {
-            "SourcePath" = "8:..\\..\\Build\\KeePass_Distrib\\XSL\\KDB4_Tabular.xsl"
-            "TargetName" = "8:KDB4_Tabular.xsl"
+            "SourcePath" = "8:..\\..\\Build\\KeePass_Distrib\\XSL\\KDBX_Tabular.xsl"
+            "TargetName" = "8:KDBX_Tabular.xsl"
             "Tag" = "8:"
             "Folder" = "8:_76A04227854C4619BBADCC3E5C2829AE"
             "Condition" = "8:"
@@ -712,14 +712,14 @@
         {
         "Name" = "8:Microsoft Visual Studio"
         "ProductName" = "8:KeePass"
-        "ProductCode" = "8:{E75AF9CE-09D4-46F2-BF44-9E7D2B4763D9}"
-        "PackageCode" = "8:{3707808B-0F74-4AD0-B136-D80EB2DE377C}"
+        "ProductCode" = "8:{F6B49374-09A3-4B84-BA45-1CA2CD1C793F}"
+        "PackageCode" = "8:{72EA3387-C9B6-433D-B670-E84AEC1CF35C}"
         "UpgradeCode" = "8:{F2F19898-4F86-4940-9BFA-426574CE03E1}"
         "RestartWWWService" = "11:FALSE"
         "RemovePreviousVersions" = "11:TRUE"
         "DetectNewerInstalledVersion" = "11:TRUE"
         "InstallAllUsers" = "11:TRUE"
-        "ProductVersion" = "8:2.19.0"
+        "ProductVersion" = "8:2.20.0"
         "Manufacturer" = "8:Dominik Reichl"
         "ARPHELPTELEPHONE" = "8:"
         "ARPHELPLINK" = "8:http://keepass.info/"
diff --git a/Ext/XSL/KDB4_DetailsFull.xsl b/Ext/XSL/KDBX_DetailsFull.xsl
similarity index 94%
rename from Ext/XSL/KDB4_DetailsFull.xsl
rename to Ext/XSL/KDBX_DetailsFull.xsl
index 115be08..fa7bdc6 100644
--- a/Ext/XSL/KDB4_DetailsFull.xsl
+++ b/Ext/XSL/KDBX_DetailsFull.xsl
@@ -9,7 +9,7 @@
 <html>
 <head>
 <xsl:apply-templates select="Meta" />
-<link rel="stylesheet" type="text/css" href="KDB4_Styles.css" />
+<link rel="stylesheet" type="text/css" href="KDBX_Styles.css" />
 </head>
 <body>
 <xsl:apply-templates select="Root" />
diff --git a/Ext/XSL/KDB4_DetailsLite.xsl b/Ext/XSL/KDBX_DetailsLite.xsl
similarity index 93%
rename from Ext/XSL/KDB4_DetailsLite.xsl
rename to Ext/XSL/KDBX_DetailsLite.xsl
index ad58527..7405cc3 100644
--- a/Ext/XSL/KDB4_DetailsLite.xsl
+++ b/Ext/XSL/KDBX_DetailsLite.xsl
@@ -9,7 +9,7 @@
 <html>
 <head>
 <xsl:apply-templates select="Meta" />
-<link rel="stylesheet" type="text/css" href="KDB4_Styles.css" />
+<link rel="stylesheet" type="text/css" href="KDBX_Styles.css" />
 </head>
 <body>
 <xsl:apply-templates select="Root" />
diff --git a/Ext/XSL/KDB4_PasswordsOnly.xsl b/Ext/XSL/KDBX_PasswordsOnly.xsl
similarity index 100%
rename from Ext/XSL/KDB4_PasswordsOnly.xsl
rename to Ext/XSL/KDBX_PasswordsOnly.xsl
diff --git a/Ext/XSL/KDB4_Styles.css b/Ext/XSL/KDBX_Styles.css
similarity index 100%
rename from Ext/XSL/KDB4_Styles.css
rename to Ext/XSL/KDBX_Styles.css
diff --git a/Ext/XSL/KDB4_Tabular.xsl b/Ext/XSL/KDBX_Tabular.xsl
similarity index 94%
rename from Ext/XSL/KDB4_Tabular.xsl
rename to Ext/XSL/KDBX_Tabular.xsl
index 372a1dc..8651a4d 100644
--- a/Ext/XSL/KDB4_Tabular.xsl
+++ b/Ext/XSL/KDBX_Tabular.xsl
@@ -9,7 +9,7 @@
 <html>
 <head>
 <xsl:apply-templates select="Meta" />
-<link rel="stylesheet" type="text/css" href="KDB4_Styles.css" />
+<link rel="stylesheet" type="text/css" href="KDBX_Styles.css" />
 </head>
 <body>
 <xsl:apply-templates select="Root" />
diff --git a/KeePass/App/AppDefs.cs b/KeePass/App/AppDefs.cs
index 2cbabbf..ee2b336 100644
--- a/KeePass/App/AppDefs.cs
+++ b/KeePass/App/AppDefs.cs
@@ -37,9 +37,9 @@ namespace KeePass.App
 		public static readonly Color ColorEditError = Color.FromArgb(255, 192, 192);
 
 		public const string XslFilesDir = "XSL";
-		public const string XslFileHtmlLite = "KDB4_DetailsLite.xsl";
-		public const string XslFileHtmlFull = "KDB4_DetailsFull.xsl";
-		public const string XslFileHtmlTabular = "KDB4_Tabular.xsl";
+		public const string XslFileHtmlLite = "KDBX_DetailsLite.xsl";
+		public const string XslFileHtmlFull = "KDBX_DetailsFull.xsl";
+		public const string XslFileHtmlTabular = "KDBX_Tabular.xsl";
 
 		public const string ShInstUtil = "ShInstUtil.exe";
 
@@ -111,6 +111,7 @@ namespace KeePass.App
 			public const string UserAccount = "useraccount";
 
 			public const string PasswordEncrypted = "pw-enc";
+			public const string PasswordStdIn = "pw-stdin";
 
 			public const string PreSelect = "preselect";
 
@@ -190,6 +191,19 @@ namespace KeePass.App
 			public static readonly Color LightYellow = Color.FromArgb(255, 255, 153);
 		}
 
+		public static class FileDialogContext
+		{
+			// Values must not contain '@'
+
+			public const string Database = "Database";
+			public const string Sync = "Sync";
+			public const string KeyFile = "KeyFile";
+			public const string Import = "Import";
+			public const string Export = "Export";
+			public const string Attachments = "Attachments";
+			public const string Xsl = "Xsl";
+		}
+
 		public const string DefaultTrlAuthor = "Dominik Reichl";
 		public const string DefaultTrlContact = @"http://www.dominik-reichl.de/";
 
diff --git a/KeePass/App/Configuration/AceApplication.cs b/KeePass/App/Configuration/AceApplication.cs
index 0a672cc..3b9f341 100644
--- a/KeePass/App/Configuration/AceApplication.cs
+++ b/KeePass/App/Configuration/AceApplication.cs
@@ -22,6 +22,7 @@ using System.Collections.Generic;
 using System.Text;
 using System.Xml.Serialization;
 using System.ComponentModel;
+using System.Diagnostics;
 
 using KeePass.Ecas;
 
@@ -98,6 +99,33 @@ namespace KeePass.App.Configuration
 			}
 		}
 
+		private bool m_bRememberWorkDirs = true;
+		[DefaultValue(true)]
+		public bool RememberWorkingDirectories
+		{
+			get { return m_bRememberWorkDirs; }
+			set { m_bRememberWorkDirs = value; }
+		}
+
+		private Dictionary<string, string> m_dictWorkingDirs =
+			new Dictionary<string, string>();
+
+		/// <summary>
+		/// For serialization only; use the <c>*WorkingDirectory</c>
+		/// methods instead.
+		/// </summary>
+		[XmlArray("WorkingDirectories")]
+		[XmlArrayItem("Item")]
+		public string[] WorkingDirectoriesSerialized
+		{
+			get { return SerializeWorkingDirectories(); }
+			set
+			{
+				if(value == null) throw new ArgumentNullException("value");
+				DeserializeWorkingDirectories(value);
+			}
+		}
+
 		private AceStartUp m_su = null;
 		public AceStartUp Start
 		{
@@ -185,6 +213,62 @@ namespace KeePass.App.Configuration
 				m_strPluginCachePath = value;
 			}
 		}
+
+		public string GetWorkingDirectory(string strContext)
+		{
+			// strContext may be null
+
+			if(!m_bRememberWorkDirs) return null;
+
+			string str;
+			m_dictWorkingDirs.TryGetValue(strContext ?? string.Empty, out str);
+			return str;
+		}
+
+		public void SetWorkingDirectory(string strContext, string strDir)
+		{
+			// Both parameters may be null
+
+			// if(!m_bRememberWorkDirs) return;
+
+			if(string.IsNullOrEmpty(strContext)) return;
+			m_dictWorkingDirs[strContext] = (strDir ?? string.Empty);
+		}
+
+		internal List<string> GetWorkingDirectoryContexts()
+		{
+			if(!m_bRememberWorkDirs) return new List<string>();
+
+			return new List<string>(m_dictWorkingDirs.Keys);
+		}
+
+		private string[] SerializeWorkingDirectories()
+		{
+			if(!m_bRememberWorkDirs) return new string[0];
+
+			List<string> l = new List<string>();
+			foreach(KeyValuePair<string, string> kvp in m_dictWorkingDirs)
+				l.Add(kvp.Key + @"@" + kvp.Value);
+			return l.ToArray();
+		}
+
+		private void DeserializeWorkingDirectories(string[] v)
+		{
+			// Do not check m_bRememberWorkDirs, because it might not
+			// have been deserialized yet
+
+			m_dictWorkingDirs.Clear();
+
+			foreach(string str in v)
+			{
+				if(str == null) { Debug.Assert(false); continue; }
+
+				int iSep = str.IndexOf('@');
+				if(iSep <= 0) { Debug.Assert(false); continue; }
+
+				m_dictWorkingDirs[str.Substring(0, iSep)] = str.Substring(iSep + 1);
+			}
+		}
 	}
 
 	public sealed class AceStartUp
diff --git a/KeePass/App/Configuration/AceIntegration.cs b/KeePass/App/Configuration/AceIntegration.cs
index 83f1134..637840e 100644
--- a/KeePass/App/Configuration/AceIntegration.cs
+++ b/KeePass/App/Configuration/AceIntegration.cs
@@ -172,6 +172,14 @@ namespace KeePass.App.Configuration
 			set { m_bCancelOnWindowChange = value; }
 		}
 
+		private bool m_bCancelOnTitleChange = false;
+		[DefaultValue(false)]
+		public bool AutoTypeCancelOnTitleChange
+		{
+			get { return m_bCancelOnTitleChange; }
+			set { m_bCancelOnTitleChange = value; }
+		}
+
 		private ProxyServerType m_pstProxyType = ProxyServerType.System;
 		public ProxyServerType ProxyType
 		{
diff --git a/KeePass/App/Configuration/AppConfigEx.cs b/KeePass/App/Configuration/AppConfigEx.cs
index cd49ef7..59d7c58 100644
--- a/KeePass/App/Configuration/AppConfigEx.cs
+++ b/KeePass/App/Configuration/AppConfigEx.cs
@@ -259,13 +259,15 @@ namespace KeePass.App.Configuration
 			foreach(IOConnectionInfo iocMru in m_aceApp.MostRecentlyUsed.Items)
 				ChangePathRelAbs(iocMru, bMakeAbsolute);
 
+			List<string> lWDKeys = m_aceApp.GetWorkingDirectoryContexts();
+			foreach(string strWDKey in lWDKeys)
+				m_aceApp.SetWorkingDirectory(strWDKey, ChangePathRelAbsStr(
+					m_aceApp.GetWorkingDirectory(strWDKey), bMakeAbsolute));
+
 			foreach(AceKeyAssoc kfp in m_def.KeySources)
 			{
-				if(kfp.DatabasePath.Length > 0)
-					kfp.DatabasePath = ChangePathRelAbsStr(kfp.DatabasePath, bMakeAbsolute);
-
-				if(kfp.KeyFilePath.Length > 0)
-					kfp.KeyFilePath = ChangePathRelAbsStr(kfp.KeyFilePath, bMakeAbsolute);
+				kfp.DatabasePath = ChangePathRelAbsStr(kfp.DatabasePath, bMakeAbsolute);
+				kfp.KeyFilePath = ChangePathRelAbsStr(kfp.KeyFilePath, bMakeAbsolute);
 			}
 		}
 
@@ -291,6 +293,7 @@ namespace KeePass.App.Configuration
 		private static string ChangePathRelAbsStr(string strPath, bool bMakeAbsolute)
 		{
 			if(strPath == null) { Debug.Assert(false); return string.Empty; }
+			if(strPath.Length == 0) return strPath;
 
 			IOConnectionInfo ioc = IOConnectionInfo.FromPath(strPath);
 			ChangePathRelAbs(ioc, bMakeAbsolute);
diff --git a/KeePass/DataExchange/FileFormatPool.cs b/KeePass/DataExchange/FileFormatPool.cs
index 83ebfb5..e083529 100644
--- a/KeePass/DataExchange/FileFormatPool.cs
+++ b/KeePass/DataExchange/FileFormatPool.cs
@@ -98,7 +98,7 @@ namespace KeePass.DataExchange
 			Debug.Assert(m_vFormats == null);
 			m_vFormats = new List<FileFormatProvider>();
 
-			// m_vFormats.Add(new KeePassCsv1x());
+			m_vFormats.Add(new KeePassCsv1x());
 			m_vFormats.Add(new KeePassKdb1x());
 			m_vFormats.Add(new KeePassKdb2x());
 			m_vFormats.Add(new KeePassKdb2xRepair());
@@ -112,6 +112,7 @@ namespace KeePass.DataExchange
 			m_vFormats.Add(new AnyPwCsv144());
 			m_vFormats.Add(new CodeWalletTxt605());
 			m_vFormats.Add(new DataVaultCsv47());
+			m_vFormats.Add(new DesktopKnox32());
 			m_vFormats.Add(new FlexWalletXml17());
 			m_vFormats.Add(new HandySafeTxt512());
 			m_vFormats.Add(new HandySafeProXml12());
diff --git a/KeePass/DataExchange/Formats/AmpXml250.cs b/KeePass/DataExchange/Formats/AmpXml250.cs
index 73d73ef..9502ff7 100644
--- a/KeePass/DataExchange/Formats/AmpXml250.cs
+++ b/KeePass/DataExchange/Formats/AmpXml250.cs
@@ -22,8 +22,8 @@ using System.Collections.Generic;
 using System.Text;
 using System.Xml;
 using System.IO;
-using System.Diagnostics;
 using System.Drawing;
+using System.Diagnostics;
 
 using KeePass.Resources;
 using KeePass.Util;
diff --git a/KeePass/DataExchange/Formats/DesktopKnox32.cs b/KeePass/DataExchange/Formats/DesktopKnox32.cs
new file mode 100644
index 0000000..475fcec
--- /dev/null
+++ b/KeePass/DataExchange/Formats/DesktopKnox32.cs
@@ -0,0 +1,117 @@
+/*
+  KeePass Password Safe - The Open-Source Password Manager
+  Copyright (C) 2003-2012 Dominik Reichl <dominik.reichl at t-online.de>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Drawing;
+using System.Xml;
+using System.Diagnostics;
+
+using KeePass.Resources;
+using KeePass.Util;
+
+using KeePassLib;
+using KeePassLib.Interfaces;
+using KeePassLib.Security;
+using KeePassLib.Utility;
+
+namespace KeePass.DataExchange.Formats
+{
+	// 3.2+
+	internal sealed class DesktopKnox32 : FileFormatProvider
+	{
+		private const string ElemRoot = "SafeCatalog";
+
+		private const string ElemEntry = "SafeElement";
+
+		private const string ElemCategory = "Category";
+		private const string ElemTitle = "Title";
+		private const string ElemNotes = "Content";
+
+		public override bool SupportsImport { get { return true; } }
+		public override bool SupportsExport { get { return false; } }
+
+		public override string FormatName { get { return "DesktopKnox XML"; } }
+		public override string DefaultExtension { get { return "xml"; } }
+		public override string ApplicationGroup { get { return KPRes.PasswordManagers; } }
+
+		public override Image SmallIcon
+		{
+			get { return KeePass.Properties.Resources.B16x16_Imp_DesktopKnox; }
+		}
+
+		public override void Import(PwDatabase pwStorage, Stream sInput,
+			IStatusLogger slLogger)
+		{
+			StreamReader sr = new StreamReader(sInput, StrUtil.Utf8);
+			string strDoc = sr.ReadToEnd();
+			sr.Close();
+
+			XmlDocument doc = new XmlDocument();
+			doc.LoadXml(strDoc);
+
+			XmlElement xmlRoot = doc.DocumentElement;
+			Debug.Assert(xmlRoot.Name == ElemRoot);
+
+			Dictionary<string, PwGroup> dictGroups = new Dictionary<string, PwGroup>();
+			dictGroups[string.Empty] = pwStorage.RootGroup;
+
+			foreach(XmlNode xmlChild in xmlRoot.ChildNodes)
+			{
+				if(xmlChild.Name == ElemEntry)
+					ImportEntry(xmlChild, pwStorage, dictGroups);
+				else { Debug.Assert(false); }
+			}
+		}
+
+		private static void ImportEntry(XmlNode xmlNode, PwDatabase pwStorage,
+			Dictionary<string, PwGroup> dGroups)
+		{
+			PwEntry pe = new PwEntry(true, true);
+			string strGroup = string.Empty;
+
+			foreach(XmlNode xmlChild in xmlNode)
+			{
+				string strInner = XmlUtil.SafeInnerText(xmlChild);
+
+				if(xmlChild.Name == ElemCategory)
+					strGroup = strInner;
+				else if(xmlChild.Name == ElemTitle)
+					pe.Strings.Set(PwDefs.TitleField, new ProtectedString(
+						pwStorage.MemoryProtection.ProtectTitle, strInner));
+				else if(xmlChild.Name == ElemNotes)
+					pe.Strings.Set(PwDefs.NotesField, new ProtectedString(
+						pwStorage.MemoryProtection.ProtectNotes, strInner));
+			}
+
+			PwGroup pg;
+			dGroups.TryGetValue(strGroup, out pg);
+			if(pg == null)
+			{
+				pg = new PwGroup(true, true);
+				pg.Name = strGroup;
+				dGroups[string.Empty].AddGroup(pg, true);
+				dGroups[strGroup] = pg;
+			}
+			pg.AddEntry(pe, true);
+		}
+	}
+}
diff --git a/Ext/DeprecatedSources/KeePassCsv1x_120221.cs b/KeePass/DataExchange/Formats/KeePassCsv1x.cs
similarity index 88%
copy from Ext/DeprecatedSources/KeePassCsv1x_120221.cs
copy to KeePass/DataExchange/Formats/KeePassCsv1x.cs
index 1cbde91..ae71efd 100644
--- a/Ext/DeprecatedSources/KeePassCsv1x_120221.cs
+++ b/KeePass/DataExchange/Formats/KeePassCsv1x.cs
@@ -1,4 +1,4 @@
-/*
+/*
   KeePass Password Safe - The Open-Source Password Manager
   Copyright (C) 2003-2012 Dominik Reichl <dominik.reichl at t-online.de>
 
@@ -34,21 +34,21 @@ namespace KeePass.DataExchange.Formats
 {
 	internal sealed class KeePassCsv1x : FileFormatProvider
 	{
-		public override bool SupportsImport { get { return true; } }
+		public override bool SupportsImport { get { return false; } }
 		public override bool SupportsExport { get { return true; } }
 
 		public override string FormatName { get { return "KeePass CSV (1.x)"; } }
 		public override string DefaultExtension { get { return "csv"; } }
 		public override string ApplicationGroup { get { return PwDefs.ShortProductName; } }
 
-		public override bool ImportAppendsToRootGroupOnly { get { return true; } }
+		// public override bool ImportAppendsToRootGroupOnly { get { return true; } }
 
 		public override Image SmallIcon
 		{
 			get { return KeePass.Properties.Resources.B16x16_KeePass; }
 		}
 
-		public override void Import(PwDatabase pwStorage, Stream sInput,
+		/* public override void Import(PwDatabase pwStorage, Stream sInput,
 			IStatusLogger slLogger)
 		{
 			StreamReader sr = new StreamReader(sInput, Encoding.UTF8);
@@ -133,7 +133,7 @@ namespace KeePass.DataExchange.Formats
 			}
 
 			return sb.ToString();
-		}
+		} */
 
 		public override bool Export(PwExportInfo pwExportInfo, Stream sOutput,
 			IStatusLogger slLogger)
@@ -141,7 +141,7 @@ namespace KeePass.DataExchange.Formats
 			PwGroup pg = (pwExportInfo.DataGroup ?? ((pwExportInfo.ContextDatabase !=
 				null) ? pwExportInfo.ContextDatabase.RootGroup : null));
 
-			StreamWriter sw = new StreamWriter(sOutput, new UTF8Encoding(false));
+			StreamWriter sw = new StreamWriter(sOutput, StrUtil.Utf8);
 			sw.Write("\"Account\",\"Login Name\",\"Password\",\"Web Site\",\"Comments\"\r\n");
 
 			EntryHandler eh = delegate(PwEntry pe)
@@ -175,13 +175,15 @@ namespace KeePass.DataExchange.Formats
 			string strAppend)
 		{
 			string str = strText;
+			if(!string.IsNullOrEmpty(str))
+			{
+				str = str.Replace("\\", "\\\\");
+				str = str.Replace("\"", "\\\"");
 
-			str = str.Replace("\\", "\\\\");
-			str = str.Replace("\"", "\\\"");
-
-			sw.Write(str);
+				sw.Write(str);
+			}
 
-			if((strAppend != null) && (strAppend.Length > 0)) sw.Write(strAppend);
+			if(!string.IsNullOrEmpty(strAppend)) sw.Write(strAppend);
 		}
 	}
 }
diff --git a/KeePass/DataExchange/Formats/KeePassKdb1x.cs b/KeePass/DataExchange/Formats/KeePassKdb1x.cs
index de1f642..dfaa8e2 100644
--- a/KeePass/DataExchange/Formats/KeePassKdb1x.cs
+++ b/KeePass/DataExchange/Formats/KeePassKdb1x.cs
@@ -60,10 +60,10 @@ namespace KeePass.DataExchange.Formats
 			}
 
 			Exception exLib;
-			if(!Kdb3File.IsLibraryInstalled(out exLib))
+			if(!KdbFile.IsLibraryInstalled(out exLib))
 			{
 				MessageService.ShowWarning(KPRes.KeePassLibCNotFound,
-					KPRes.Kdb3KeePassLibC, exLib);
+					KPRes.KdbKeePassLibC, exLib);
 				return false;
 			}
 
@@ -85,8 +85,8 @@ namespace KeePass.DataExchange.Formats
 			br.Close();
 			File.WriteAllBytes(strTempFile, pb);
 
-			Kdb3File kdb3 = new Kdb3File(pwStorage, slLogger);
-			kdb3.Load(strTempFile);
+			KdbFile kdb = new KdbFile(pwStorage, slLogger);
+			kdb.Load(strTempFile);
 
 			Program.TempFilesPool.Delete(strTempFile);
 		}
@@ -100,7 +100,7 @@ namespace KeePass.DataExchange.Formats
 
 			try
 			{
-				Kdb3File kdb = new Kdb3File(pd, slLogger);
+				KdbFile kdb = new KdbFile(pd, slLogger);
 				kdb.Save(strTempFile, pwExportInfo.DataGroup);
 
 				byte[] pbKdb = File.ReadAllBytes(strTempFile);
diff --git a/KeePass/DataExchange/Formats/KeePassKdb2x.cs b/KeePass/DataExchange/Formats/KeePassKdb2x.cs
index cc944f2..6a99a35 100644
--- a/KeePass/DataExchange/Formats/KeePassKdb2x.cs
+++ b/KeePass/DataExchange/Formats/KeePassKdb2x.cs
@@ -52,15 +52,15 @@ namespace KeePass.DataExchange.Formats
 		public override void Import(PwDatabase pwStorage, Stream sInput,
 			IStatusLogger slLogger)
 		{
-			Kdb4File kdb4 = new Kdb4File(pwStorage);
-			kdb4.Load(sInput, Kdb4Format.Default, slLogger);
+			KdbxFile kdbx = new KdbxFile(pwStorage);
+			kdbx.Load(sInput, KdbxFormat.Default, slLogger);
 		}
 
 		public override bool Export(PwExportInfo pwExportInfo, Stream sOutput,
 			IStatusLogger slLogger)
 		{
-			Kdb4File kdb4 = new Kdb4File(pwExportInfo.ContextDatabase);
-			kdb4.Save(sOutput, pwExportInfo.DataGroup, Kdb4Format.Default, slLogger);
+			KdbxFile kdbx = new KdbxFile(pwExportInfo.ContextDatabase);
+			kdbx.Save(sOutput, pwExportInfo.DataGroup, KdbxFormat.Default, slLogger);
 			return true;
 		}
 	}
diff --git a/KeePass/DataExchange/Formats/KeePassKdb2xRepair.cs b/KeePass/DataExchange/Formats/KeePassKdb2xRepair.cs
index b5380bd..27796e4 100644
--- a/KeePass/DataExchange/Formats/KeePassKdb2xRepair.cs
+++ b/KeePass/DataExchange/Formats/KeePassKdb2xRepair.cs
@@ -55,12 +55,12 @@ namespace KeePass.DataExchange.Formats
 		public override void Import(PwDatabase pwStorage, Stream sInput,
 			IStatusLogger slLogger)
 		{
-			Kdb4File kdb4 = new Kdb4File(pwStorage);
+			KdbxFile kdbx = new KdbxFile(pwStorage);
 			// CappedByteStream s = new CappedByteStream(sInput, 64);
 
-			kdb4.RepairMode = true;
+			kdbx.RepairMode = true;
 
-			try { kdb4.Load(sInput, Kdb4Format.Default, slLogger); }
+			try { kdbx.Load(sInput, KdbxFormat.Default, slLogger); }
 			catch(Exception) { }
 		}
 
diff --git a/KeePass/DataExchange/Formats/KeePassXml2x.cs b/KeePass/DataExchange/Formats/KeePassXml2x.cs
index 9311afb..fe2f9b9 100644
--- a/KeePass/DataExchange/Formats/KeePassXml2x.cs
+++ b/KeePass/DataExchange/Formats/KeePassXml2x.cs
@@ -51,8 +51,8 @@ namespace KeePass.DataExchange.Formats
 		public override void Import(PwDatabase pwStorage, Stream sInput,
 			IStatusLogger slLogger)
 		{
-			Kdb4File kdb4 = new Kdb4File(pwStorage);
-			kdb4.Load(sInput, Kdb4Format.PlainXml, slLogger);
+			KdbxFile kdbx = new KdbxFile(pwStorage);
+			kdbx.Load(sInput, KdbxFormat.PlainXml, slLogger);
 		}
 
 		public override bool Export(PwExportInfo pwExportInfo, Stream sOutput,
@@ -67,8 +67,8 @@ namespace KeePass.DataExchange.Formats
 				pd.DeletedObjects.Clear();
 			}
 
-			Kdb4File kdb = new Kdb4File(pd);
-			kdb.Save(sOutput, pwExportInfo.DataGroup, Kdb4Format.PlainXml, slLogger);
+			KdbxFile kdb = new KdbxFile(pd);
+			kdb.Save(sOutput, pwExportInfo.DataGroup, KdbxFormat.PlainXml, slLogger);
 
 			// Restore deleted objects list
 			if(vDel != null) pd.DeletedObjects.Add(vDel);
diff --git a/KeePass/DataExchange/Formats/MozillaBookmarksJson100.cs b/KeePass/DataExchange/Formats/MozillaBookmarksJson100.cs
index e3bba93..c26969b 100644
--- a/KeePass/DataExchange/Formats/MozillaBookmarksJson100.cs
+++ b/KeePass/DataExchange/Formats/MozillaBookmarksJson100.cs
@@ -71,7 +71,7 @@ namespace KeePass.DataExchange.Formats
 		{
 			if(jObject.Items.ContainsKey(m_strGroup))
 			{
-				JsonArray jArray = jObject.Items[m_strGroup].Value as JsonArray;
+				JsonArray jArray = (jObject.Items[m_strGroup].Value as JsonArray);
 				if(jArray == null) { Debug.Assert(false); return; }
 
 				PwGroup pgNew;
@@ -88,7 +88,7 @@ namespace KeePass.DataExchange.Formats
 
 				foreach(JsonValue jValue in jArray.Values)
 				{
-					JsonObject objSub = jValue.Value as JsonObject;
+					JsonObject objSub = (jValue.Value as JsonObject);
 					if(objSub != null) AddObject(pgNew, objSub, pwContext, true);
 					else { Debug.Assert(false); }
 				}
diff --git a/KeePass/DataExchange/Formats/XslTransform2x.cs b/KeePass/DataExchange/Formats/XslTransform2x.cs
index 90133b5..8bd34b2 100644
--- a/KeePass/DataExchange/Formats/XslTransform2x.cs
+++ b/KeePass/DataExchange/Formats/XslTransform2x.cs
@@ -27,6 +27,7 @@ using System.Windows.Forms;
 using System.Diagnostics;
 using System.Drawing;
 
+using KeePass.App;
 using KeePass.Resources;
 using KeePass.UI;
 
@@ -54,8 +55,8 @@ namespace KeePass.DataExchange.Formats
 			IStatusLogger slLogger)
 		{
 			string strFilter = UIUtil.CreateFileTypeFilter("xsl", KPRes.XslFileType, true);
-			OpenFileDialog dlgXsl = UIUtil.CreateOpenFileDialog(KPRes.XslSelectFile,
-				strFilter, 1, "xsl", false, false);
+			OpenFileDialogEx dlgXsl = UIUtil.CreateOpenFileDialog(KPRes.XslSelectFile,
+				strFilter, 1, "xsl", false, AppDefs.FileDialogContext.Xsl);
 
 			if(dlgXsl.ShowDialog() != DialogResult.OK) return false;
 
@@ -72,8 +73,8 @@ namespace KeePass.DataExchange.Formats
 			MemoryStream msDataXml = new MemoryStream();
 
 			PwDatabase pd = (pwExportInfo.ContextDatabase ?? new PwDatabase());
-			Kdb4File kdb = new Kdb4File(pd);
-			kdb.Save(msDataXml, pwExportInfo.DataGroup, Kdb4Format.PlainXml, slLogger);
+			KdbxFile kdb = new KdbxFile(pd);
+			kdb.Save(msDataXml, pwExportInfo.DataGroup, KdbxFormat.PlainXml, slLogger);
 
 			byte[] pbData = msDataXml.ToArray();
 			msDataXml.Close();
diff --git a/KeePass/DataExchange/ImportUtil.cs b/KeePass/DataExchange/ImportUtil.cs
index 61e5128..6a13777 100644
--- a/KeePass/DataExchange/ImportUtil.cs
+++ b/KeePass/DataExchange/ImportUtil.cs
@@ -90,8 +90,9 @@ namespace KeePass.DataExchange
 			List<IOConnectionInfo> vConnections = new List<IOConnectionInfo>();
 			if(bOpenFromUrl == false)
 			{
-				OpenFileDialog ofd = UIUtil.CreateOpenFileDialog(KPRes.Synchronize,
-					UIUtil.CreateFileTypeFilter(null, null, true), 1, null, true, true);
+				OpenFileDialogEx ofd = UIUtil.CreateOpenFileDialog(KPRes.Synchronize,
+					UIUtil.CreateFileTypeFilter(null, null, true), 1, null, true,
+					AppDefs.FileDialogContext.Sync);
 
 				if(ofd.ShowDialog() != DialogResult.OK) return null;
 
@@ -278,8 +279,9 @@ namespace KeePass.DataExchange
 							}
 							else { } // No assert (sync on save)
 
-							Program.MainForm.FileMruList.AddItem(ioc.GetDisplayName(),
-								ioc.CloneDeep(), true);
+							if(Program.MainForm != null) // Null for KPScript
+								Program.MainForm.FileMruList.AddItem(
+									ioc.GetDisplayName(), ioc.CloneDeep(), true);
 						}
 						catch(Exception exSync)
 						{
diff --git a/KeePass/DataExchange/Kdb3File.cs b/KeePass/DataExchange/KdbFile.cs
similarity index 88%
rename from KeePass/DataExchange/Kdb3File.cs
rename to KeePass/DataExchange/KdbFile.cs
index d3e41f2..8043053 100644
--- a/KeePass/DataExchange/Kdb3File.cs
+++ b/KeePass/DataExchange/KdbFile.cs
@@ -39,12 +39,12 @@ namespace KeePass.DataExchange
 	/// <summary>
 	/// Serialization to KeePass KDB files.
 	/// </summary>
-	public sealed class Kdb3File
+	public sealed class KdbFile
 	{
 		private PwDatabase m_pwDatabase = null;
 		private IStatusLogger m_slLogger = null;
 
-		private const string Kdb3Prefix = "KDB3: ";
+		private const string KdbPrefix = "KDB: ";
 
 		private const string AutoTypePrefix = "Auto-Type";
 		private const string AutoTypeWindowPrefix = "Auto-Type-Window";
@@ -61,7 +61,7 @@ namespace KeePass.DataExchange
 		{
 			try
 			{
-				Kdb3Manager mgr = new Kdb3Manager();
+				KdbManager mgr = new KdbManager();
 				mgr.Unload();
 			}
 			catch(Exception exMgr)
@@ -81,7 +81,7 @@ namespace KeePass.DataExchange
 		/// will load file data into or use to create a KDB file. Must not be <c>null</c>.</param>
 		/// <exception cref="System.ArgumentNullException">Thrown if the database
 		/// reference is <c>null</c>.</exception>
-		public Kdb3File(PwDatabase pwDataStore, IStatusLogger slLogger)
+		public KdbFile(PwDatabase pwDataStore, IStatusLogger slLogger)
 		{
 			Debug.Assert(pwDataStore != null);
 			if(pwDataStore == null) throw new ArgumentNullException("pwDataStore");
@@ -90,9 +90,9 @@ namespace KeePass.DataExchange
 			m_slLogger = slLogger;
 		}
 
-		private static Kdb3ErrorCode SetDatabaseKey(Kdb3Manager mgr, CompositeKey pwKey)
+		private static KdbErrorCode SetDatabaseKey(KdbManager mgr, CompositeKey pwKey)
 		{
-			Kdb3ErrorCode e;
+			KdbErrorCode e;
 
 			bool bPassword = pwKey.ContainsType(typeof(KcpPassword));
 			bool bKeyFile = pwKey.ContainsType(typeof(KcpKeyFile));
@@ -123,14 +123,14 @@ namespace KeePass.DataExchange
 			Debug.Assert(strFilePath != null);
 			if(strFilePath == null) throw new ArgumentNullException("strFilePath");
 
-			Kdb3Manager mgr = new Kdb3Manager();
-			Kdb3ErrorCode e;
+			KdbManager mgr = new KdbManager();
+			KdbErrorCode e;
 
-			e = Kdb3File.SetDatabaseKey(mgr, m_pwDatabase.MasterKey);
-			if(e != Kdb3ErrorCode.Success) throw new Exception(KLRes.InvalidCompositeKey);
+			e = KdbFile.SetDatabaseKey(mgr, m_pwDatabase.MasterKey);
+			if(e != KdbErrorCode.Success) throw new Exception(KLRes.InvalidCompositeKey);
 
 			e = mgr.OpenDatabase(strFilePath, IntPtr.Zero);
-			if(e != Kdb3ErrorCode.Success)
+			if(e != KdbErrorCode.Success)
 			{
 				mgr.Unload();
 				throw new Exception(KLRes.FileLoadFailed);
@@ -146,7 +146,7 @@ namespace KeePass.DataExchange
 			mgr.Unload();
 		}
 
-		private Dictionary<UInt32, PwGroup> ReadGroups(Kdb3Manager mgr)
+		private Dictionary<UInt32, PwGroup> ReadGroups(KdbManager mgr)
 		{
 			uint uGroupCount = mgr.GroupCount;
 			Dictionary<UInt32, PwGroup> dictGroups = new Dictionary<uint, PwGroup>();
@@ -154,11 +154,11 @@ namespace KeePass.DataExchange
 			Stack<PwGroup> vGroupStack = new Stack<PwGroup>();
 			vGroupStack.Push(m_pwDatabase.RootGroup);
 
-			DateTime dtNeverExpire = Kdb3Manager.GetNeverExpireTime();
+			DateTime dtNeverExpire = KdbManager.GetNeverExpireTime();
 
 			for(uint uGroup = 0; uGroup < uGroupCount; ++uGroup)
 			{
-				Kdb3Group g = mgr.GetGroup(uGroup);
+				KdbGroup g = mgr.GetGroup(uGroup);
 
 				PwGroup pg = new PwGroup(true, false);
 
@@ -172,7 +172,7 @@ namespace KeePass.DataExchange
 
 				pg.Expires = (pg.ExpiryTime != dtNeverExpire);
 
-				pg.IsExpanded = ((g.Flags & (uint)Kdb3GroupFlags.Expanded) != 0);
+				pg.IsExpanded = ((g.Flags & (uint)KdbGroupFlags.Expanded) != 0);
 
 				while(g.Level < (vGroupStack.Count - 1))
 					vGroupStack.Pop();
@@ -188,14 +188,14 @@ namespace KeePass.DataExchange
 			return dictGroups;
 		}
 
-		private void ReadEntries(Kdb3Manager mgr, Dictionary<UInt32, PwGroup> dictGroups)
+		private void ReadEntries(KdbManager mgr, Dictionary<UInt32, PwGroup> dictGroups)
 		{
-			DateTime dtNeverExpire = Kdb3Manager.GetNeverExpireTime();
+			DateTime dtNeverExpire = KdbManager.GetNeverExpireTime();
 			uint uEntryCount = mgr.EntryCount;
 
 			for(uint uEntry = 0; uEntry < uEntryCount; ++uEntry)
 			{
-				Kdb3Entry e = mgr.GetEntry(uEntry);
+				KdbEntry e = mgr.GetEntry(uEntry);
 
 				PwGroup pgContainer;
 				if(!dictGroups.TryGetValue(e.GroupId, out pgContainer))
@@ -235,7 +235,7 @@ namespace KeePass.DataExchange
 
 				if((e.BinaryDataLength > 0) && (e.BinaryData != IntPtr.Zero))
 				{
-					byte[] pbData = Kdb3Manager.ReadBinary(e.BinaryData, e.BinaryDataLength);
+					byte[] pbData = KdbManager.ReadBinary(e.BinaryData, e.BinaryDataLength);
 					Debug.Assert(pbData.Length == e.BinaryDataLength);
 
 					string strDesc = e.BinaryDescription;
@@ -261,10 +261,10 @@ namespace KeePass.DataExchange
 			Debug.Assert(strSaveToFile != null);
 			if(strSaveToFile == null) throw new ArgumentNullException("strSaveToFile");
 
-			Kdb3Manager mgr = new Kdb3Manager();
+			KdbManager mgr = new KdbManager();
 
-			Kdb3ErrorCode e = Kdb3File.SetDatabaseKey(mgr, m_pwDatabase.MasterKey);
-			if(e != Kdb3ErrorCode.Success)
+			KdbErrorCode e = KdbFile.SetDatabaseKey(mgr, m_pwDatabase.MasterKey);
+			if(e != KdbErrorCode.Success)
 			{
 				Debug.Assert(false);
 				throw new Exception(KLRes.InvalidCompositeKey);
@@ -273,9 +273,9 @@ namespace KeePass.DataExchange
 			if(m_slLogger != null)
 			{
 				if(m_pwDatabase.Name.Length != 0)
-					m_slLogger.SetText(Kdb3Prefix + KPRes.FormatNoDatabaseName, LogStatusType.Warning);
+					m_slLogger.SetText(KdbPrefix + KPRes.FormatNoDatabaseName, LogStatusType.Warning);
 				if(m_pwDatabase.Description.Length != 0)
-					m_slLogger.SetText(Kdb3Prefix + KPRes.FormatNoDatabaseDesc, LogStatusType.Warning);
+					m_slLogger.SetText(KdbPrefix + KPRes.FormatNoDatabaseDesc, LogStatusType.Warning);
 			}
 
 			// Set properties
@@ -290,18 +290,18 @@ namespace KeePass.DataExchange
 			WriteEntries(mgr, dictGroups, pgRoot);
 
 			e = mgr.SaveDatabase(strSaveToFile);
-			if(e != Kdb3ErrorCode.Success) throw new Exception(KLRes.FileSaveFailed);
+			if(e != KdbErrorCode.Success) throw new Exception(KLRes.FileSaveFailed);
 
 			mgr.Unload();
 		}
 
-		private static Dictionary<PwGroup, UInt32> WriteGroups(Kdb3Manager mgr,
+		private static Dictionary<PwGroup, UInt32> WriteGroups(KdbManager mgr,
 			PwGroup pgRoot)
 		{
 			Dictionary<PwGroup, UInt32> dictGroups = new Dictionary<PwGroup, uint>();
 
 			uint uGroupIndex = 1;
-			DateTime dtNeverExpire = Kdb3Manager.GetNeverExpireTime();
+			DateTime dtNeverExpire = KdbManager.GetNeverExpireTime();
 
 			GroupHandler gh = delegate(PwGroup pg)
 			{
@@ -320,11 +320,11 @@ namespace KeePass.DataExchange
 
 		private static void WriteGroup(PwGroup pg, PwGroup pgRoot, ref uint uGroupIndex,
 			Dictionary<PwGroup, UInt32> dictGroups, DateTime dtNeverExpire,
-			Kdb3Manager mgr, bool bForceLevel0)
+			KdbManager mgr, bool bForceLevel0)
 		{
 			if(pg == pgRoot) return;
 
-			Kdb3Group grp = new Kdb3Group();
+			KdbGroup grp = new KdbGroup();
 
 			grp.GroupId = uGroupIndex;
 			dictGroups[pg] = grp.GroupId;
@@ -341,7 +341,7 @@ namespace KeePass.DataExchange
 
 			grp.Level = (bForceLevel0 ? (ushort)0 : (ushort)(pg.GetLevel() - 1));
 
-			if(pg.IsExpanded) grp.Flags |= (uint)Kdb3GroupFlags.Expanded;
+			if(pg.IsExpanded) grp.Flags |= (uint)KdbGroupFlags.Expanded;
 
 			if(!mgr.AddGroup(ref grp))
 			{
@@ -354,7 +354,7 @@ namespace KeePass.DataExchange
 
 		private static void EnsureParentGroupsExported(PwGroup pgRoot, ref uint uGroupIndex,
 			Dictionary<PwGroup, UInt32> dictGroups, DateTime dtNeverExpires,
-			Kdb3Manager mgr)
+			KdbManager mgr)
 		{
 			bool bHasAtLeastOneGroup = (dictGroups.Count > 0);
 			uint uLocalIndex = uGroupIndex; // Local copy, can't use ref in delegate
@@ -376,18 +376,18 @@ namespace KeePass.DataExchange
 			uGroupIndex = uLocalIndex;
 		}
 
-		private void WriteEntries(Kdb3Manager mgr, Dictionary<PwGroup, uint> dictGroups,
+		private void WriteEntries(KdbManager mgr, Dictionary<PwGroup, uint> dictGroups,
 			PwGroup pgRoot)
 		{
 			bool bWarnedOnce = false;
 			uint uGroupCount, uEntryCount, uEntriesSaved = 0;
 			pgRoot.GetCounts(true, out uGroupCount, out uEntryCount);
 
-			DateTime dtNeverExpire = Kdb3Manager.GetNeverExpireTime();
+			DateTime dtNeverExpire = KdbManager.GetNeverExpireTime();
 
 			EntryHandler eh = delegate(PwEntry pe)
 			{
-				Kdb3Entry e = new Kdb3Entry();
+				KdbEntry e = new KdbEntry();
 
 				e.Uuid.Set(pe.Uuid.UuidBytes);
 
@@ -398,7 +398,7 @@ namespace KeePass.DataExchange
 					e.GroupId = 1;
 					if((m_slLogger != null) && !bWarnedOnce)
 					{
-						m_slLogger.SetText(Kdb3Prefix +
+						m_slLogger.SetText(KdbPrefix +
 							KPRes.FormatNoRootEntries, LogStatusType.Warning);
 						bWarnedOnce = true;
 					}
@@ -452,7 +452,7 @@ namespace KeePass.DataExchange
 					}
 
 					if((pe.Binaries.UCount > 1) && (m_slLogger != null))
-						m_slLogger.SetText(Kdb3Prefix + KPRes.FormatOnlyOneAttachment + "\r\n\r\n" +
+						m_slLogger.SetText(KdbPrefix + KPRes.FormatOnlyOneAttachment + "\r\n\r\n" +
 							KPRes.Entry + ":\r\n" + KPRes.Title + ": " + e.Title + "\r\n" +
 							KPRes.UserName + ": " + e.UserName, LogStatusType.Warning);
 				}
diff --git a/KeePass/DataExchange/Kdb3Manager.cs b/KeePass/DataExchange/KdbManager.cs
similarity index 80%
rename from KeePass/DataExchange/Kdb3Manager.cs
rename to KeePass/DataExchange/KdbManager.cs
index 408ea0c..266d293 100644
--- a/KeePass/DataExchange/Kdb3Manager.cs
+++ b/KeePass/DataExchange/KdbManager.cs
@@ -18,11 +18,11 @@
 */
 
 #if PocketPC || Smartphone || WindowsCE
-#undef KDB3_ANSI
+#undef KDB_ANSI
 #else
-// If compiling for the ANSI version of KeePassLibC, define KDB3_ANSI.
-// If compiling for the Unicode version of KeePassLibC, do not define KDB3_ANSI.
-#define KDB3_ANSI
+// If compiling for the ANSI version of KeePassLibC, define KDB_ANSI.
+// If compiling for the Unicode version of KeePassLibC, do not define KDB_ANSI.
+#define KDB_ANSI
 #endif
 
 using System;
@@ -41,7 +41,7 @@ namespace KeePass.DataExchange
 #else
 	[StructLayout(LayoutKind.Sequential, Pack = 1)]
 #endif
-	public struct Kdb3Group
+	public struct KdbGroup
 	{
 		/// <summary>
 		/// The GroupID of the group.
@@ -58,7 +58,7 @@ namespace KeePass.DataExchange
 		/// <summary>
 		/// The Name of the group.
 		/// </summary>
-#if KDB3_ANSI
+#if KDB_ANSI
 		[MarshalAs(UnmanagedType.LPStr)]
 		public string Name;
 #else
@@ -69,22 +69,22 @@ namespace KeePass.DataExchange
 		/// <summary>
 		/// The creation time of the group.
 		/// </summary>
-		public Kdb3Time CreationTime;
+		public KdbTime CreationTime;
 
 		/// <summary>
 		/// The last modification time of the group.
 		/// </summary>
-		public Kdb3Time LastModificationTime;
+		public KdbTime LastModificationTime;
 
 		/// <summary>
 		/// The last access time of the group.
 		/// </summary>
-		public Kdb3Time LastAccessTime;
+		public KdbTime LastAccessTime;
 
 		/// <summary>
 		/// The expiry time of the group.
 		/// </summary>
-		public Kdb3Time ExpirationTime;
+		public KdbTime ExpirationTime;
 
 		/// <summary>
 		/// Indentation level of the group.
@@ -101,7 +101,7 @@ namespace KeePass.DataExchange
 #endif
 
 		/// <summary>
-		/// Flags of the group (see <c>Kdb3GroupFlags</c>).
+		/// Flags of the group (see <c>KdbGroupFlags</c>).
 		/// </summary>
 		[MarshalAs(UnmanagedType.U4)]
 		public UInt32 Flags;
@@ -111,7 +111,7 @@ namespace KeePass.DataExchange
 	/// Password group flags.
 	/// </summary>
 	[Flags]
-	public enum Kdb3GroupFlags
+	public enum KdbGroupFlags
 	{
 		/// <summary>
 		/// No special flags.
@@ -132,12 +132,12 @@ namespace KeePass.DataExchange
 #else
 	[StructLayout(LayoutKind.Sequential, Pack = 1)]
 #endif
-	public struct Kdb3Entry
+	public struct KdbEntry
 	{
 		/// <summary>
 		/// The UUID of the entry.
 		/// </summary>
-		public Kdb3Uuid Uuid;
+		public KdbUuid Uuid;
 
 		/// <summary>
 		/// The group ID of the enty.
@@ -151,7 +151,7 @@ namespace KeePass.DataExchange
 		[MarshalAs(UnmanagedType.U4)]
 		public UInt32 ImageId;
 
-#if KDB3_ANSI
+#if KDB_ANSI
 		/// <summary>
 		/// The title of the entry.
 		/// </summary>
@@ -228,27 +228,27 @@ namespace KeePass.DataExchange
 		/// <summary>
 		/// The creation time of the entry.
 		/// </summary>
-		public Kdb3Time CreationTime;
+		public KdbTime CreationTime;
 
 		/// <summary>
 		/// The last modification time of the entry.
 		/// </summary>
-		public Kdb3Time LastModificationTime;
+		public KdbTime LastModificationTime;
 
 		/// <summary>
 		/// The last access time of the entry.
 		/// </summary>
-		public Kdb3Time LastAccessTime;
+		public KdbTime LastAccessTime;
 
 		/// <summary>
 		/// The expiration time of the entry.
 		/// </summary>
-		public Kdb3Time ExpirationTime;
+		public KdbTime ExpirationTime;
 
 		/// <summary>
 		/// The description of the binary attachment.
 		/// </summary>
-#if KDB3_ANSI
+#if KDB_ANSI
 		[MarshalAs(UnmanagedType.LPStr)]
 		public string BinaryDescription;
 #else
@@ -276,7 +276,7 @@ namespace KeePass.DataExchange
 #else
 	[StructLayout(LayoutKind.Sequential, Pack = 1)]
 #endif
-	public struct Kdb3Uuid
+	public struct KdbUuid
 	{
 #pragma warning disable 1591 // Missing XML comments warning
 		public Byte V0; public Byte V1; public Byte V2; public Byte V3;
@@ -322,7 +322,7 @@ namespace KeePass.DataExchange
 #else
 	[StructLayout(LayoutKind.Sequential, Pack = 1)]
 #endif
-	public struct Kdb3Time
+	public struct KdbTime
 	{
 #pragma warning disable 1591 // Missing XML comments warning
 		[MarshalAs(UnmanagedType.U2)]
@@ -348,7 +348,7 @@ namespace KeePass.DataExchange
 #endif
 
 		/// <summary>
-		/// Construct a <c>Kdb3Time</c> with initial values.
+		/// Construct a <c>KdbTime</c> with initial values.
 		/// </summary>
 		/// <param name="uYear">Year.</param>
 		/// <param name="uMonth">Month.</param>
@@ -356,7 +356,7 @@ namespace KeePass.DataExchange
 		/// <param name="uHour">Hour.</param>
 		/// <param name="uMinute">Minute.</param>
 		/// <param name="uSecond">Second.</param>
-		public Kdb3Time(UInt16 uYear, Byte uMonth, Byte uDay, Byte uHour,
+		public KdbTime(UInt16 uYear, Byte uMonth, Byte uDay, Byte uHour,
 			Byte uMinute, Byte uSecond)
 		{
 			this.Year = uYear;
@@ -372,7 +372,7 @@ namespace KeePass.DataExchange
 		}
 
 		/// <summary>
-		/// Convert the current <c>Kdb3Time</c> object to a <c>DateTime</c> object.
+		/// Convert the current <c>KdbTime</c> object to a <c>DateTime</c> object.
 		/// </summary>
 		/// <returns></returns>
 		public DateTime ToDateTime()
@@ -385,7 +385,7 @@ namespace KeePass.DataExchange
 		}
 
 		/// <summary>
-		/// Copy data from a <c>DateTime object</c> to the current <c>Kdb3Time</c> object.
+		/// Copy data from a <c>DateTime object</c> to the current <c>KdbTime</c> object.
 		/// </summary>
 		/// <param name="dt">Data source.</param>
 		public void Set(DateTime dt)
@@ -399,16 +399,16 @@ namespace KeePass.DataExchange
 		}
 
 		/// <summary>
-		/// A Kdb3Time element that is used to indicate the never expire time.
+		/// A KdbTime element that is used to indicate the never expire time.
 		/// </summary>
-		public static readonly Kdb3Time NeverExpireTime =
-			new Kdb3Time(2999, 12, 28, 23, 59, 59);
+		public static readonly KdbTime NeverExpireTime =
+			new KdbTime(2999, 12, 28, 23, 59, 59);
 	}
 
 	/// <summary>
 	/// Error codes for various functions (<c>OpenDatabase</c>, etc.).
 	/// </summary>
-	public enum Kdb3ErrorCode
+	public enum KdbErrorCode
 	{
 		/// <summary>
 		/// Unknown error occurred.
@@ -492,10 +492,10 @@ namespace KeePass.DataExchange
 	}
 
 	/// <summary>
-	/// Manager class for KDB3 files. It can load/save databases, add/change/delete
+	/// Manager class for KDB files. It can load/save databases, add/change/delete
 	/// groups and entries, check for KeePassLibC library existence and version, etc.
 	/// </summary>
-	public sealed class Kdb3Manager
+	public sealed class KdbManager
 	{
 		private const string DllFile32 = "KeePassLibC32.dll";
 		private const string DllFile64 = "KeePassLibC64.dll";
@@ -503,7 +503,7 @@ namespace KeePass.DataExchange
 		private static readonly bool m_bX64 =
 			(Marshal.SizeOf(typeof(IntPtr)) == 8);
 
-#if KDB3_ANSI
+#if KDB_ANSI
 		private const CharSet DllCharSet = CharSet.Ansi;
 #else
 		private const CharSet DllCharSet = CharSet.Unicode;
@@ -539,7 +539,7 @@ namespace KeePass.DataExchange
 		/// </summary>
 		public static string KeePassVersionString
 		{
-#if KDB3_ANSI
+#if KDB_ANSI
 			get
 			{
 				if(m_bX64) return Marshal.PtrToStringAnsi(GetKeePassVersionString64());
@@ -641,9 +641,9 @@ namespace KeePass.DataExchange
 		[DllImport(DllFile64, EntryPoint = "NewDatabase")]
 		private static extern void NewDatabase64(IntPtr pMgr);
 		/// <summary>
-		/// Construct a new Kdb3 manager instance.
+		/// Construct a new KDB manager instance.
 		/// </summary>
-		public Kdb3Manager()
+		public KdbManager()
 		{
 			if(m_bX64 == false) // Only check 32-bit structures
 			{
@@ -655,45 +655,45 @@ namespace KeePass.DataExchange
 
 				// Static structure layout assertions
 				int nExpectedSize = (bAligned ? 52 : 46);
-				Kdb3Group g = new Kdb3Group();
+				KdbGroup g = new KdbGroup();
 				Debug.Assert(Marshal.SizeOf(g) == nExpectedSize);
 				if(Marshal.SizeOf(g) != nExpectedSize)
-					throw new FormatException("SizeOf(Kdb3Group) invalid!");
+					throw new FormatException("SizeOf(KdbGroup) invalid!");
 
 				nExpectedSize = (bAligned ? 92 : 88);
-				Kdb3Entry e = new Kdb3Entry();
+				KdbEntry e = new KdbEntry();
 				Debug.Assert(Marshal.SizeOf(e) == nExpectedSize);
 				if(Marshal.SizeOf(e) != nExpectedSize)
-					throw new FormatException("SizeOf(Kdb3Entry) invalid!");
+					throw new FormatException("SizeOf(KdbEntry) invalid!");
 
-				Kdb3Uuid u = new Kdb3Uuid();
+				KdbUuid u = new KdbUuid();
 				Debug.Assert(Marshal.SizeOf(u) == 16);
 				if(Marshal.SizeOf(u) != 16)
-					throw new FormatException("SizeOf(Kdb3Uuid) invalid!");
+					throw new FormatException("SizeOf(KdbUuid) invalid!");
 
 				nExpectedSize = (bAligned ? 8 : 7);
-				Kdb3Time t = new Kdb3Time();
+				KdbTime t = new KdbTime();
 				Debug.Assert(Marshal.SizeOf(t) == nExpectedSize);
 				if(Marshal.SizeOf(t) != nExpectedSize)
-					throw new FormatException("SizeOf(Kdb3Time) invalid!");
+					throw new FormatException("SizeOf(KdbTime) invalid!");
 			}
 
-			if(m_bX64) Kdb3Manager.InitManager64(out m_pManager, m_bFirstInstance);
-			else Kdb3Manager.InitManager32(out m_pManager, m_bFirstInstance);
+			if(m_bX64) KdbManager.InitManager64(out m_pManager, m_bFirstInstance);
+			else KdbManager.InitManager32(out m_pManager, m_bFirstInstance);
 
 			m_bFirstInstance = false;
 
 			if(m_pManager == IntPtr.Zero)
 				throw new InvalidOperationException("Failed to initialize manager! DLL installed?");
 
-			if(m_bX64) Kdb3Manager.NewDatabase64(m_pManager);
-			else Kdb3Manager.NewDatabase32(m_pManager);
+			if(m_bX64) KdbManager.NewDatabase64(m_pManager);
+			else KdbManager.NewDatabase32(m_pManager);
 		}
 
 		/// <summary>
-		/// Destructor for Kdb3Manager instance.
+		/// Destructor for KdbManager instance.
 		/// </summary>
-		~Kdb3Manager()
+		~KdbManager()
 		{
 			this.Unload();
 		}
@@ -711,8 +711,8 @@ namespace KeePass.DataExchange
 		{
 			if(m_pManager != IntPtr.Zero)
 			{
-				if(m_bX64) Kdb3Manager.DeleteManager64(m_pManager);
-				else Kdb3Manager.DeleteManager32(m_pManager);
+				if(m_bX64) KdbManager.DeleteManager64(m_pManager);
+				else KdbManager.DeleteManager32(m_pManager);
 
 				m_pManager = IntPtr.Zero;
 			}
@@ -741,18 +741,18 @@ namespace KeePass.DataExchange
 		/// source code).</param>
 		/// <param name="bOverwrite">Indicates if the target file should be overwritten when
 		/// creating a new key file.</param>
-		/// <returns>Error code (see <c>Kdb3ErrorCode</c>).</returns>
-		public Kdb3ErrorCode SetMasterKey(string strMasterKey, bool bDiskDrive,
+		/// <returns>Error code (see <c>KdbErrorCode</c>).</returns>
+		public KdbErrorCode SetMasterKey(string strMasterKey, bool bDiskDrive,
 			string strSecondKey, IntPtr pARI, bool bOverwrite)
 		{
 			Debug.Assert(strMasterKey != null);
 			if(strMasterKey == null) throw new ArgumentNullException("strMasterKey");
 
 			if(m_bX64)
-				return (Kdb3ErrorCode)Kdb3Manager.SetMasterKey64(m_pManager,
+				return (KdbErrorCode)KdbManager.SetMasterKey64(m_pManager,
 					strMasterKey, bDiskDrive, strSecondKey, pARI, bOverwrite);
 			else
-				return (Kdb3ErrorCode)Kdb3Manager.SetMasterKey32(m_pManager,
+				return (KdbErrorCode)KdbManager.SetMasterKey32(m_pManager,
 					strMasterKey, bDiskDrive, strSecondKey, pARI, bOverwrite);
 		}
 
@@ -772,8 +772,8 @@ namespace KeePass.DataExchange
 			Debug.Assert(strGroupName != null);
 			if(strGroupName == null) throw new ArgumentNullException("strGroupName");
 
-			if(m_bX64) return Kdb3Manager.GetNumberOfItemsInGroup64(m_pManager, strGroupName);
-			else return Kdb3Manager.GetNumberOfItemsInGroup32(m_pManager, strGroupName);
+			if(m_bX64) return KdbManager.GetNumberOfItemsInGroup64(m_pManager, strGroupName);
+			else return KdbManager.GetNumberOfItemsInGroup32(m_pManager, strGroupName);
 		}
 
 		[DllImport(DllFile32, EntryPoint = "GetNumberOfItemsInGroupN")]
@@ -791,8 +791,8 @@ namespace KeePass.DataExchange
 			if((uGroupId == 0) || (uGroupId == UInt32.MaxValue))
 				throw new ArgumentException("Invalid group ID!");
 
-			if(m_bX64) return Kdb3Manager.GetNumberOfItemsInGroupN64(m_pManager, uGroupId);
-			else return Kdb3Manager.GetNumberOfItemsInGroupN32(m_pManager, uGroupId);
+			if(m_bX64) return KdbManager.GetNumberOfItemsInGroupN64(m_pManager, uGroupId);
+			else return KdbManager.GetNumberOfItemsInGroupN32(m_pManager, uGroupId);
 		}
 
 		[DllImport(DllFile32, EntryPoint = "LockEntryPassword")]
@@ -815,23 +815,23 @@ namespace KeePass.DataExchange
 		/// an <c>ArgumentOutOfRangeException</c> is thrown.</param>
 		/// <returns>The requested entry. Note that any modifications to this
 		/// structure won't affect the internal data structures of the manager.</returns>
-		public Kdb3Entry GetEntry(uint uIndex)
+		public KdbEntry GetEntry(uint uIndex)
 		{
 			Debug.Assert(uIndex < this.EntryCount);
 
 			IntPtr p;
-			if(m_bX64) p = Kdb3Manager.GetEntry64(m_pManager, uIndex);
-			else p = Kdb3Manager.GetEntry32(m_pManager, uIndex);
+			if(m_bX64) p = KdbManager.GetEntry64(m_pManager, uIndex);
+			else p = KdbManager.GetEntry32(m_pManager, uIndex);
 
 			if(p == IntPtr.Zero) throw new ArgumentOutOfRangeException("uIndex");
 
-			if(m_bX64) Kdb3Manager.UnlockEntryPassword64(m_pManager, p);
-			else Kdb3Manager.UnlockEntryPassword32(m_pManager, p);
+			if(m_bX64) KdbManager.UnlockEntryPassword64(m_pManager, p);
+			else KdbManager.UnlockEntryPassword32(m_pManager, p);
 
-			Kdb3Entry kdbEntry = (Kdb3Entry)Marshal.PtrToStructure(p, typeof(Kdb3Entry));
+			KdbEntry kdbEntry = (KdbEntry)Marshal.PtrToStructure(p, typeof(KdbEntry));
 			
-			if(m_bX64) Kdb3Manager.LockEntryPassword64(m_pManager, p);
-			else Kdb3Manager.LockEntryPassword32(m_pManager, p);
+			if(m_bX64) KdbManager.LockEntryPassword64(m_pManager, p);
+			else KdbManager.LockEntryPassword32(m_pManager, p);
 			
 			return kdbEntry;
 		}
@@ -848,7 +848,7 @@ namespace KeePass.DataExchange
 		/// <param name="uGroupId">ID of the group containing the entry.</param>
 		/// <returns>The requested entry. Note that any modifications to this
 		/// structure won't affect the internal data structures of the manager.</returns>
-		public Kdb3Entry GetEntryByGroup(UInt32 uGroupId, UInt32 uIndex)
+		public KdbEntry GetEntryByGroup(UInt32 uGroupId, UInt32 uIndex)
 		{
 			Debug.Assert((uGroupId != 0) && (uGroupId != UInt32.MaxValue));
 			if((uGroupId == 0) || (uGroupId == UInt32.MaxValue))
@@ -862,13 +862,13 @@ namespace KeePass.DataExchange
 
 			if(p == IntPtr.Zero) throw new ArgumentOutOfRangeException();
 
-			if(m_bX64) Kdb3Manager.UnlockEntryPassword64(m_pManager, p);
-			else Kdb3Manager.UnlockEntryPassword32(m_pManager, p);
+			if(m_bX64) KdbManager.UnlockEntryPassword64(m_pManager, p);
+			else KdbManager.UnlockEntryPassword32(m_pManager, p);
 
-			Kdb3Entry kdbEntry = (Kdb3Entry)Marshal.PtrToStructure(p, typeof(Kdb3Entry));
+			KdbEntry kdbEntry = (KdbEntry)Marshal.PtrToStructure(p, typeof(KdbEntry));
 
-			if(m_bX64) Kdb3Manager.LockEntryPassword64(m_pManager, p);
-			else Kdb3Manager.LockEntryPassword32(m_pManager, p);
+			if(m_bX64) KdbManager.LockEntryPassword64(m_pManager, p);
+			else KdbManager.LockEntryPassword32(m_pManager, p);
 
 			return kdbEntry;
 		}
@@ -883,17 +883,17 @@ namespace KeePass.DataExchange
 		/// <param name="uIndex">Index of the group. Must be valid, otherwise an
 		/// <c>ArgumentOutOfRangeException</c> is thrown.</param>
 		/// <returns>Group structure.</returns>
-		public Kdb3Group GetGroup(UInt32 uIndex)
+		public KdbGroup GetGroup(UInt32 uIndex)
 		{
 			Debug.Assert(uIndex < this.GroupCount);
 
 			IntPtr p;
-			if(m_bX64) p = Kdb3Manager.GetGroup64(m_pManager, uIndex);
-			else p = Kdb3Manager.GetGroup32(m_pManager, uIndex);
+			if(m_bX64) p = KdbManager.GetGroup64(m_pManager, uIndex);
+			else p = KdbManager.GetGroup32(m_pManager, uIndex);
 
 			if(p == IntPtr.Zero) throw new ArgumentOutOfRangeException("uIndex");
 
-			return (Kdb3Group)Marshal.PtrToStructure(p, typeof(Kdb3Group));
+			return (KdbGroup)Marshal.PtrToStructure(p, typeof(KdbGroup));
 		}
 
 		[DllImport(DllFile32, EntryPoint = "GetGroupById")]
@@ -905,19 +905,19 @@ namespace KeePass.DataExchange
 		/// </summary>
 		/// <param name="uGroupId">ID of the group.</param>
 		/// <returns>Group structure.</returns>
-		public Kdb3Group GetGroupById(UInt32 uGroupId)
+		public KdbGroup GetGroupById(UInt32 uGroupId)
 		{
 			Debug.Assert((uGroupId != 0) && (uGroupId != UInt32.MaxValue));
 			if((uGroupId == 0) || (uGroupId == UInt32.MaxValue))
 				throw new ArgumentException("Invalid group ID!");
 
 			IntPtr p;
-			if(m_bX64) p = Kdb3Manager.GetGroupById64(m_pManager, uGroupId);
-			else p = Kdb3Manager.GetGroupById32(m_pManager, uGroupId);
+			if(m_bX64) p = KdbManager.GetGroupById64(m_pManager, uGroupId);
+			else p = KdbManager.GetGroupById32(m_pManager, uGroupId);
 
 			if(p == IntPtr.Zero) throw new ArgumentOutOfRangeException("uGroupId");
 
-			return (Kdb3Group)Marshal.PtrToStructure(p, typeof(Kdb3Group));
+			return (KdbGroup)Marshal.PtrToStructure(p, typeof(KdbGroup));
 		}
 
 		[DllImport(DllFile32, EntryPoint = "GetGroupByIdN")]
@@ -935,8 +935,8 @@ namespace KeePass.DataExchange
 			if((uGroupId == 0) || (uGroupId == UInt32.MaxValue))
 				throw new ArgumentException("Invalid group ID!");
 
-			if(m_bX64) return Kdb3Manager.GetGroupByIdN64(m_pManager, uGroupId);
-			else return Kdb3Manager.GetGroupByIdN32(m_pManager, uGroupId);
+			if(m_bX64) return KdbManager.GetGroupByIdN64(m_pManager, uGroupId);
+			else return KdbManager.GetGroupByIdN32(m_pManager, uGroupId);
 		}
 
 		[DllImport(DllFile32, CharSet = DllCharSet, EntryPoint = "OpenDatabase")]
@@ -944,20 +944,20 @@ namespace KeePass.DataExchange
 		[DllImport(DllFile64, CharSet = DllCharSet, EntryPoint = "OpenDatabase")]
 		private static extern Int32 OpenDatabase64(IntPtr pMgr, string pszFile, IntPtr pRepair);
 		/// <summary>
-		/// Open a KDB3 database.
+		/// Open a KDB database.
 		/// </summary>
 		/// <param name="strFile">File path of the database.</param>
 		/// <param name="pRepairInfo">Pointer to a repair information structure. If
-		/// you want to open a KDB3 file normally, set this parameter to
+		/// you want to open a Kdb file normally, set this parameter to
 		/// <c>IntPtr.Zero</c>.</param>
-		/// <returns>Error code (see <c>Kdb3ErrorCode</c>).</returns>
-		public Kdb3ErrorCode OpenDatabase(string strFile, IntPtr pRepairInfo)
+		/// <returns>Error code (see <c>KdbErrorCode</c>).</returns>
+		public KdbErrorCode OpenDatabase(string strFile, IntPtr pRepairInfo)
 		{
 			Debug.Assert(strFile != null);
 			if(strFile == null) throw new ArgumentNullException("strFile");
 
-			if(m_bX64) return (Kdb3ErrorCode)Kdb3Manager.OpenDatabase64(m_pManager, strFile, pRepairInfo);
-			else return (Kdb3ErrorCode)Kdb3Manager.OpenDatabase32(m_pManager, strFile, pRepairInfo);
+			if(m_bX64) return (KdbErrorCode)KdbManager.OpenDatabase64(m_pManager, strFile, pRepairInfo);
+			else return (KdbErrorCode)KdbManager.OpenDatabase32(m_pManager, strFile, pRepairInfo);
 		}
 
 		[DllImport(DllFile32, CharSet = DllCharSet, EntryPoint = "SaveDatabase")]
@@ -965,17 +965,17 @@ namespace KeePass.DataExchange
 		[DllImport(DllFile64, CharSet = DllCharSet, EntryPoint = "SaveDatabase")]
 		private static extern Int32 SaveDatabase64(IntPtr pMgr, string pszFile);
 		/// <summary>
-		/// Save the current contents of the manager to a KDB3 file on disk.
+		/// Save the current contents of the manager to a KDB file on disk.
 		/// </summary>
 		/// <param name="strFile">File to create.</param>
-		/// <returns>Error code (see <c>Kdb3ErrorCode</c>).</returns>
-		public Kdb3ErrorCode SaveDatabase(string strFile)
+		/// <returns>Error code (see <c>KdbErrorCode</c>).</returns>
+		public KdbErrorCode SaveDatabase(string strFile)
 		{
 			Debug.Assert(strFile != null);
 			if(strFile == null) throw new ArgumentNullException("strFile");
 
-			if(m_bX64) return (Kdb3ErrorCode)Kdb3Manager.SaveDatabase64(m_pManager, strFile);
-			else return (Kdb3ErrorCode)Kdb3Manager.SaveDatabase32(m_pManager, strFile);
+			if(m_bX64) return (KdbErrorCode)KdbManager.SaveDatabase64(m_pManager, strFile);
+			else return (KdbErrorCode)KdbManager.SaveDatabase32(m_pManager, strFile);
 		}
 
 		/// <summary>
@@ -983,8 +983,8 @@ namespace KeePass.DataExchange
 		/// </summary>
 		public void NewDatabase()
 		{
-			if(m_bX64) Kdb3Manager.NewDatabase64(m_pManager);
-			else Kdb3Manager.NewDatabase32(m_pManager);
+			if(m_bX64) KdbManager.NewDatabase64(m_pManager);
+			else KdbManager.NewDatabase32(m_pManager);
 		}
 
 		/// <summary>
@@ -993,44 +993,44 @@ namespace KeePass.DataExchange
 		/// <returns><c>DateTime</c> object.</returns>
 		public static DateTime GetNeverExpireTime()
 		{
-			return Kdb3Time.NeverExpireTime.ToDateTime();
+			return KdbTime.NeverExpireTime.ToDateTime();
 		}
 
 		[DllImport(DllFile32, CharSet = DllCharSet, EntryPoint = "AddGroup")]
 		[return: MarshalAs(UnmanagedType.Bool)]
-		private static extern bool AddGroup32(IntPtr pMgr, ref Kdb3Group pTemplate);
+		private static extern bool AddGroup32(IntPtr pMgr, ref KdbGroup pTemplate);
 		[DllImport(DllFile64, CharSet = DllCharSet, EntryPoint = "AddGroup")]
 		[return: MarshalAs(UnmanagedType.Bool)]
-		private static extern bool AddGroup64(IntPtr pMgr, ref Kdb3Group pTemplate);
+		private static extern bool AddGroup64(IntPtr pMgr, ref KdbGroup pTemplate);
 		/// <summary>
 		/// Add a new password group.
 		/// </summary>
 		/// <param name="pNewGroup">Template containing new group information.</param>
 		/// <returns>Returns <c>true</c> if the group was created successfully.</returns>
-		public bool AddGroup(ref Kdb3Group pNewGroup)
+		public bool AddGroup(ref KdbGroup pNewGroup)
 		{
-			if(m_bX64) return Kdb3Manager.AddGroup64(m_pManager, ref pNewGroup);
-			else return Kdb3Manager.AddGroup32(m_pManager, ref pNewGroup);
+			if(m_bX64) return KdbManager.AddGroup64(m_pManager, ref pNewGroup);
+			else return KdbManager.AddGroup32(m_pManager, ref pNewGroup);
 		}
 
 		[DllImport(DllFile32, CharSet = DllCharSet, EntryPoint = "SetGroup")]
 		[return: MarshalAs(UnmanagedType.Bool)]
-		private static extern bool SetGroup32(IntPtr pMgr, UInt32 dwIndex, ref Kdb3Group pTemplate);
+		private static extern bool SetGroup32(IntPtr pMgr, UInt32 dwIndex, ref KdbGroup pTemplate);
 		[DllImport(DllFile64, CharSet = DllCharSet, EntryPoint = "SetGroup")]
 		[return: MarshalAs(UnmanagedType.Bool)]
-		private static extern bool SetGroup64(IntPtr pMgr, UInt32 dwIndex, ref Kdb3Group pTemplate);
+		private static extern bool SetGroup64(IntPtr pMgr, UInt32 dwIndex, ref KdbGroup pTemplate);
 		/// <summary>
 		/// Set/change a password group.
 		/// </summary>
 		/// <param name="uIndex">Index of the group to be changed.</param>
 		/// <param name="pNewGroup">Template containing new group information.</param>
 		/// <returns>Returns <c>true</c> if the group was created successfully.</returns>
-		public bool SetGroup(UInt32 uIndex, ref Kdb3Group pNewGroup)
+		public bool SetGroup(UInt32 uIndex, ref KdbGroup pNewGroup)
 		{
 			Debug.Assert(uIndex < this.GroupCount);
 
-			if(m_bX64) return Kdb3Manager.SetGroup64(m_pManager, uIndex, ref pNewGroup);
-			else return Kdb3Manager.SetGroup32(m_pManager, uIndex, ref pNewGroup);
+			if(m_bX64) return KdbManager.SetGroup64(m_pManager, uIndex, ref pNewGroup);
+			else return KdbManager.SetGroup32(m_pManager, uIndex, ref pNewGroup);
 		}
 
 		[DllImport(DllFile32, EntryPoint = "DeleteGroupById")]
@@ -1050,45 +1050,45 @@ namespace KeePass.DataExchange
 			if((uGroupID == 0) || (uGroupID == UInt32.MaxValue))
 				throw new ArgumentException("Invalid group ID!");
 
-			if(m_bX64) return Kdb3Manager.DeleteGroupById64(m_pManager, uGroupID);
-			else return Kdb3Manager.DeleteGroupById32(m_pManager, uGroupID);
+			if(m_bX64) return KdbManager.DeleteGroupById64(m_pManager, uGroupID);
+			else return KdbManager.DeleteGroupById32(m_pManager, uGroupID);
 		}
 
 		[DllImport(DllFile32, CharSet = DllCharSet, EntryPoint = "AddEntry")]
 		[return: MarshalAs(UnmanagedType.Bool)]
-		private static extern bool AddEntry32(IntPtr pMgr, ref Kdb3Entry pTemplate);
+		private static extern bool AddEntry32(IntPtr pMgr, ref KdbEntry pTemplate);
 		[DllImport(DllFile64, CharSet = DllCharSet, EntryPoint = "AddEntry")]
 		[return: MarshalAs(UnmanagedType.Bool)]
-		private static extern bool AddEntry64(IntPtr pMgr, ref Kdb3Entry pTemplate);
+		private static extern bool AddEntry64(IntPtr pMgr, ref KdbEntry pTemplate);
 		/// <summary>
 		/// Add a new password entry.
 		/// </summary>
 		/// <param name="peNew">Template containing new entry information.</param>
 		/// <returns>Returns <c>true</c> if the entry was created successfully.</returns>
-		public bool AddEntry(ref Kdb3Entry peNew)
+		public bool AddEntry(ref KdbEntry peNew)
 		{
-			if(m_bX64) return Kdb3Manager.AddEntry64(m_pManager, ref peNew);
-			else return Kdb3Manager.AddEntry32(m_pManager, ref peNew);
+			if(m_bX64) return KdbManager.AddEntry64(m_pManager, ref peNew);
+			else return KdbManager.AddEntry32(m_pManager, ref peNew);
 		}
 
 		[DllImport(DllFile32, CharSet = DllCharSet, EntryPoint = "SetEntry")]
 		[return: MarshalAs(UnmanagedType.Bool)]
-		private static extern bool SetEntry32(IntPtr pMgr, UInt32 dwIndex, ref Kdb3Entry pTemplate);
+		private static extern bool SetEntry32(IntPtr pMgr, UInt32 dwIndex, ref KdbEntry pTemplate);
 		[DllImport(DllFile64, CharSet = DllCharSet, EntryPoint = "SetEntry")]
 		[return: MarshalAs(UnmanagedType.Bool)]
-		private static extern bool SetEntry64(IntPtr pMgr, UInt32 dwIndex, ref Kdb3Entry pTemplate);
+		private static extern bool SetEntry64(IntPtr pMgr, UInt32 dwIndex, ref KdbEntry pTemplate);
 		/// <summary>
 		/// Set/change a password entry.
 		/// </summary>
 		/// <param name="uIndex">Index of the entry to be changed.</param>
 		/// <param name="peNew">Template containing new entry information.</param>
 		/// <returns>Returns <c>true</c> if the entry was created successfully.</returns>
-		public bool SetEntry(UInt32 uIndex, ref Kdb3Entry peNew)
+		public bool SetEntry(UInt32 uIndex, ref KdbEntry peNew)
 		{
 			Debug.Assert(uIndex < this.EntryCount);
 
-			if(m_bX64) return Kdb3Manager.SetEntry64(m_pManager, uIndex, ref peNew);
-			else return Kdb3Manager.SetEntry32(m_pManager, uIndex, ref peNew);
+			if(m_bX64) return KdbManager.SetEntry64(m_pManager, uIndex, ref peNew);
+			else return KdbManager.SetEntry32(m_pManager, uIndex, ref peNew);
 		}
 
 		[DllImport(DllFile32, EntryPoint = "DeleteEntry")]
@@ -1106,15 +1106,15 @@ namespace KeePass.DataExchange
 		{
 			Debug.Assert(uIndex < this.EntryCount);
 
-			if(m_bX64) return Kdb3Manager.DeleteEntry64(m_pManager, uIndex);
-			else return Kdb3Manager.DeleteEntry32(m_pManager, uIndex);
+			if(m_bX64) return KdbManager.DeleteEntry64(m_pManager, uIndex);
+			else return KdbManager.DeleteEntry32(m_pManager, uIndex);
 		}
 
 		/// <summary>
 		/// Helper function to extract file attachments.
 		/// </summary>
 		/// <param name="pMemory">Native memory pointer (as stored in the
-		/// <c>BinaryData</c> member of <c>Kdb3Entry</c>.</param>
+		/// <c>BinaryData</c> member of <c>KdbEntry</c>.</param>
 		/// <param name="uSize">Size in bytes of the memory block.</param>
 		/// <returns>Managed byte array.</returns>
 		public static byte[] ReadBinary(IntPtr pMemory, uint uSize)
diff --git a/KeePass/Ecas/EcasTriggerSystem.cs b/KeePass/Ecas/EcasTriggerSystem.cs
index 730fba9..8ce1f44 100644
--- a/KeePass/Ecas/EcasTriggerSystem.cs
+++ b/KeePass/Ecas/EcasTriggerSystem.cs
@@ -149,9 +149,8 @@ namespace KeePass.Ecas
 			}
 			catch(Exception ex)
 			{
-				if(VistaTaskDialog.ShowMessageBox(ex.Message, KPRes.TriggerExecutionFailed,
-					PwDefs.ShortProductName, VtdIcon.Warning,
-					Program.GetSafeMainWindowHandle()) == false)
+				if(!VistaTaskDialog.ShowMessageBox(ex.Message, KPRes.TriggerExecutionFailed,
+					PwDefs.ShortProductName, VtdIcon.Warning, null))
 				{
 					MessageService.ShowWarning(KPRes.TriggerExecutionFailed + ".", ex);
 				}
diff --git a/KeePass/Forms/AboutForm.cs b/KeePass/Forms/AboutForm.cs
index 67ba82f..8a04c87 100644
--- a/KeePass/Forms/AboutForm.cs
+++ b/KeePass/Forms/AboutForm.cs
@@ -84,14 +84,14 @@ namespace KeePass.Forms
 		private void GetAppComponents()
 		{
 			ListViewItem lvi = new ListViewItem(KPRes.KeePassLibCLong);
-			if(!Kdb3File.IsLibraryInstalled())
+			if(!KdbFile.IsLibraryInstalled())
 				lvi.SubItems.Add(KPRes.NotInstalled);
-			else lvi.SubItems.Add(Kdb3Manager.KeePassVersionString + " (0x" +
-				Kdb3Manager.LibraryBuild.ToString("X4") + ")");
+			else lvi.SubItems.Add(KdbManager.KeePassVersionString + " (0x" +
+				KdbManager.LibraryBuild.ToString("X4") + ")");
 
 			m_lvComponents.Items.Add(lvi);
 
-			lvi = new ListViewItem(KPRes.XslStylesheets);
+			lvi = new ListViewItem(KPRes.XslStylesheetsKdbx);
 			string strPath = WinUtil.GetExecutable();
 			strPath = UrlUtil.GetFileDirectory(strPath, true, false);
 			strPath += AppDefs.XslFilesDir;
diff --git a/KeePass/Forms/CsvImportForm.cs b/KeePass/Forms/CsvImportForm.cs
index e73ff20..4cb16d6 100644
--- a/KeePass/Forms/CsvImportForm.cs
+++ b/KeePass/Forms/CsvImportForm.cs
@@ -169,7 +169,7 @@ namespace KeePass.Forms
 
 			UpdateTextPreview();
 			UpdateImportPreview();
-			GuessFieldTypes();
+			GuessCsvStructure();
 
 			ProcessResize();
 			EnableControlsEx();
@@ -483,7 +483,7 @@ namespace KeePass.Forms
 			if(bCreatePreview) m_lvImportPreview.BeginUpdate();
 
 			DateTime dtNow = DateTime.Now;
-			DateTime dtNoExpire = Kdb3Time.NeverExpireTime.ToDateTime();
+			DateTime dtNoExpire = KdbTime.NeverExpireTime.ToDateTime();
 			bool bIgnoreFirstRow = m_cbIgnoreFirst.Checked;
 			bool bIsFirstRow = true;
 
@@ -663,24 +663,30 @@ namespace KeePass.Forms
 			EnableControlsEx();
 		}
 
-		private void GuessFieldTypes()
+		private void GuessCsvStructure()
+		{
+			bool bFieldsGuessed = GuessFieldTypes();
+			m_cbIgnoreFirst.Checked = bFieldsGuessed;
+		}
+
+		private bool GuessFieldTypes()
 		{
 			CsvOptions opt = GetCsvOptions();
-			if(opt == null) { Debug.Assert(false); return; }
+			if(opt == null) { Debug.Assert(false); return false; }
 
-			string str = GetDecodedText();
-			CsvStreamReaderEx csv = new CsvStreamReaderEx(str, opt);
+			string strData = GetDecodedText();
+			CsvStreamReaderEx csv = new CsvStreamReaderEx(strData, opt);
 
 			string[] v;
 			while(true)
 			{
 				v = csv.ReadLine();
-				if(v == null) return;
+				if(v == null) return false;
 				if(v.Length == 0) continue;
 				if((v.Length == 1) && (v[0].Length == 0)) continue;
 				break;
 			}
-			if(v.Length <= 3) return;
+			if(v.Length <= 3) return false;
 
 			CsvFieldInfo[] vFields = new CsvFieldInfo[v.Length];
 			int nDetermined = 0;
@@ -695,11 +701,13 @@ namespace KeePass.Forms
 
 			// Accept the guesses only if at least half of them are
 			// probably correct
-			if(nDetermined < (v.Length + 1) / 2) return;
+			if(nDetermined < (v.Length + 1) / 2) return false;
 
 			m_lvFields.Items.Clear();
 			foreach(CsvFieldInfo fi in vFields)
 				AddCsvField(fi.Type, fi.Name, fi.Format);
+
+			return true;
 		}
 
 		private static CsvFieldInfo GuessFieldType(string strRawName)
diff --git a/KeePass/Forms/DataEditorForm.Designer.cs b/KeePass/Forms/DataEditorForm.Designer.cs
index 0706c14..8f44c2a 100644
--- a/KeePass/Forms/DataEditorForm.Designer.cs
+++ b/KeePass/Forms/DataEditorForm.Designer.cs
@@ -29,7 +29,6 @@
 		private void InitializeComponent()
 		{
 			System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DataEditorForm));
-			this.m_rtbText = new KeePass.UI.CustomRichTextBoxEx();
 			this.m_menuMain = new System.Windows.Forms.MenuStrip();
 			this.m_menuFile = new System.Windows.Forms.ToolStripMenuItem();
 			this.m_menuFileSave = new System.Windows.Forms.ToolStripMenuItem();
@@ -65,25 +64,15 @@
 			this.m_tbAlignRight = new System.Windows.Forms.ToolStripButton();
 			this.m_statusMain = new System.Windows.Forms.StatusStrip();
 			this.m_tssStatusMain = new System.Windows.Forms.ToolStripStatusLabel();
+			this.m_tbFileSep2 = new System.Windows.Forms.ToolStripSeparator();
+			this.m_tbFind = new System.Windows.Forms.ToolStripTextBox();
+			this.m_rtbText = new KeePass.UI.CustomRichTextBoxEx();
 			this.m_menuMain.SuspendLayout();
 			this.m_toolFile.SuspendLayout();
 			this.m_toolFormat.SuspendLayout();
 			this.m_statusMain.SuspendLayout();
 			this.SuspendLayout();
 			// 
-			// m_rtbText
-			// 
-			this.m_rtbText.AcceptsTab = true;
-			this.m_rtbText.HideSelection = false;
-			this.m_rtbText.Location = new System.Drawing.Point(25, 102);
-			this.m_rtbText.Name = "m_rtbText";
-			this.m_rtbText.Size = new System.Drawing.Size(100, 96);
-			this.m_rtbText.TabIndex = 0;
-			this.m_rtbText.Text = "";
-			this.m_rtbText.SelectionChanged += new System.EventHandler(this.OnTextSelectionChanged);
-			this.m_rtbText.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.OnTextLinkClicked);
-			this.m_rtbText.TextChanged += new System.EventHandler(this.OnTextTextChanged);
-			// 
 			// m_menuMain
 			// 
 			this.m_menuMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -108,20 +97,20 @@
 			// 
 			this.m_menuFileSave.Image = global::KeePass.Properties.Resources.B16x16_FileSave;
 			this.m_menuFileSave.Name = "m_menuFileSave";
-			this.m_menuFileSave.Size = new System.Drawing.Size(152, 22);
+			this.m_menuFileSave.Size = new System.Drawing.Size(105, 22);
 			this.m_menuFileSave.Text = "&Save";
 			this.m_menuFileSave.Click += new System.EventHandler(this.OnFileSave);
 			// 
 			// m_menuFileSep0
 			// 
 			this.m_menuFileSep0.Name = "m_menuFileSep0";
-			this.m_menuFileSep0.Size = new System.Drawing.Size(149, 6);
+			this.m_menuFileSep0.Size = new System.Drawing.Size(102, 6);
 			// 
 			// m_menuFileExit
 			// 
 			this.m_menuFileExit.Image = global::KeePass.Properties.Resources.B16x16_Exit;
 			this.m_menuFileExit.Name = "m_menuFileExit";
-			this.m_menuFileExit.Size = new System.Drawing.Size(152, 22);
+			this.m_menuFileExit.Size = new System.Drawing.Size(105, 22);
 			this.m_menuFileExit.Text = "&Close";
 			this.m_menuFileExit.Click += new System.EventHandler(this.OnFileExit);
 			// 
@@ -164,7 +153,9 @@
             this.m_tbEditPaste,
             this.m_tbFileSep1,
             this.m_tbEditUndo,
-            this.m_tbEditRedo});
+            this.m_tbEditRedo,
+            this.m_tbFileSep2,
+            this.m_tbFind});
 			this.m_toolFile.Location = new System.Drawing.Point(0, 24);
 			this.m_toolFile.Name = "m_toolFile";
 			this.m_toolFile.Size = new System.Drawing.Size(608, 25);
@@ -382,6 +373,32 @@
 			this.m_tssStatusMain.Spring = true;
 			this.m_tssStatusMain.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
 			// 
+			// m_tbFileSep2
+			// 
+			this.m_tbFileSep2.Name = "m_tbFileSep2";
+			this.m_tbFileSep2.Size = new System.Drawing.Size(6, 25);
+			// 
+			// m_tbFind
+			// 
+			this.m_tbFind.AcceptsReturn = true;
+			this.m_tbFind.Name = "m_tbFind";
+			this.m_tbFind.Size = new System.Drawing.Size(121, 25);
+			this.m_tbFind.KeyDown += new System.Windows.Forms.KeyEventHandler(this.OnTextFindKeyDown);
+			this.m_tbFind.KeyUp += new System.Windows.Forms.KeyEventHandler(this.OnTextFindKeyUp);
+			// 
+			// m_rtbText
+			// 
+			this.m_rtbText.AcceptsTab = true;
+			this.m_rtbText.HideSelection = false;
+			this.m_rtbText.Location = new System.Drawing.Point(25, 102);
+			this.m_rtbText.Name = "m_rtbText";
+			this.m_rtbText.Size = new System.Drawing.Size(100, 96);
+			this.m_rtbText.TabIndex = 0;
+			this.m_rtbText.Text = "";
+			this.m_rtbText.SelectionChanged += new System.EventHandler(this.OnTextSelectionChanged);
+			this.m_rtbText.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.OnTextLinkClicked);
+			this.m_rtbText.TextChanged += new System.EventHandler(this.OnTextTextChanged);
+			// 
 			// DataEditorForm
 			// 
 			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -451,5 +468,7 @@
 		private System.Windows.Forms.ToolStripSeparator m_menuViewSep0;
 		private System.Windows.Forms.ToolStripMenuItem m_menuViewWordWrap;
 		private System.Windows.Forms.ToolStripStatusLabel m_tssStatusMain;
+		private System.Windows.Forms.ToolStripSeparator m_tbFileSep2;
+		private System.Windows.Forms.ToolStripTextBox m_tbFind;
 	}
 }
\ No newline at end of file
diff --git a/KeePass/Forms/DataEditorForm.cs b/KeePass/Forms/DataEditorForm.cs
index a2f880f..6e191ad 100644
--- a/KeePass/Forms/DataEditorForm.cs
+++ b/KeePass/Forms/DataEditorForm.cs
@@ -132,6 +132,10 @@ namespace KeePass.Forms
 			UIUtil.ConfigureTbButton(m_tbAlignLeft, KPRes.AlignLeft, null);
 			UIUtil.ConfigureTbButton(m_tbAlignRight, KPRes.AlignRight, null);
 
+			string strSearchTr = ((WinUtil.IsAtLeastWindowsVista ?
+				string.Empty : " ") + KPRes.Search);
+			UIUtil.SetCueBanner(m_tbFind, strSearchTr);
+
 			UIUtil.EnableAutoCompletion(m_tbFontCombo, true);
 			UIUtil.EnableAutoCompletion(m_tbFontSizeCombo, true);
 
@@ -561,5 +565,38 @@ namespace KeePass.Forms
 
 			return pbData;
 		}
+
+		private void OnTextFindKeyDown(object sender, KeyEventArgs e)
+		{
+			if((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
+			{
+				e.SuppressKeyPress = true;
+				e.Handled = true;
+
+				OnTextFind();
+			}
+		}
+
+		private void OnTextFindKeyUp(object sender, KeyEventArgs e)
+		{
+			if((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
+			{
+				e.SuppressKeyPress = true;
+				e.Handled = true;
+			}
+		}
+
+		private void OnTextFind()
+		{
+			string strNeedle = m_tbFind.Text;
+			if(string.IsNullOrEmpty(strNeedle)) return;
+
+			int iStart = m_rtbText.SelectionStart + m_rtbText.SelectionLength;
+			if(iStart < 0) { Debug.Assert(false); iStart = 0; }
+			if(iStart >= m_rtbText.TextLength) iStart = 0;
+
+			int p = m_rtbText.Find(strNeedle, iStart, -1, RichTextBoxFinds.None);
+			if(p < 0) m_rtbText.Find(strNeedle, 0, -1, RichTextBoxFinds.None);
+		}
 	}
 }
diff --git a/KeePass/Forms/DataViewerForm.cs b/KeePass/Forms/DataViewerForm.cs
index e95ab06..56b2940 100644
--- a/KeePass/Forms/DataViewerForm.cs
+++ b/KeePass/Forms/DataViewerForm.cs
@@ -198,7 +198,7 @@ namespace KeePass.Forms
 				}
 				else if(strViewer == KPRes.ImageViewer)
 				{
-					if(m_img == null) m_img = UIUtil.LoadImage(m_pbData);
+					if(m_img == null) m_img = GfxUtil.LoadImage(m_pbData);
 					// m_picBox.Image = m_img;
 
 					m_pnlImageViewer.Visible = true;
diff --git a/KeePass/Forms/DatabaseSettingsForm.cs b/KeePass/Forms/DatabaseSettingsForm.cs
index a890b26..4a809b0 100644
--- a/KeePass/Forms/DatabaseSettingsForm.cs
+++ b/KeePass/Forms/DatabaseSettingsForm.cs
@@ -35,6 +35,7 @@ using KeePassLib.Delegates;
 using KeePassLib.Cryptography.Cipher;
 using KeePassLib.Keys;
 using KeePassLib.Security;
+using KeePassLib.Utility;
 
 namespace KeePass.Forms
 {
@@ -98,7 +99,7 @@ namespace KeePass.Forms
 			else this.Text = KPRes.DatabaseSettings;
 
 			m_tbDbName.Text = m_pwDatabase.Name;
-			m_tbDbDesc.Text = m_pwDatabase.Description;
+			UIUtil.SetMultilineText(m_tbDbDesc, m_pwDatabase.Description);
 			m_tbDefaultUser.Text = m_pwDatabase.DefaultUserName;
 
 			m_clr = m_pwDatabase.Color;
@@ -219,9 +220,12 @@ namespace KeePass.Forms
 				m_pwDatabase.NameChanged = DateTime.Now;
 			}
 
-			if(!m_tbDbDesc.Text.Equals(m_pwDatabase.Description))
+			string strNew = m_tbDbDesc.Text;
+			string strOrgFlt = StrUtil.NormalizeNewLines(m_pwDatabase.Description, false);
+			string strNewFlt = StrUtil.NormalizeNewLines(strNew, false);
+			if(!strNewFlt.Equals(strOrgFlt))
 			{
-				m_pwDatabase.Description = m_tbDbDesc.Text;
+				m_pwDatabase.Description = strNew;
 				m_pwDatabase.DescriptionChanged = DateTime.Now;
 			}
 
diff --git a/KeePass/Forms/EcasTriggerForm.cs b/KeePass/Forms/EcasTriggerForm.cs
index cc2dd6f..98cc3fd 100644
--- a/KeePass/Forms/EcasTriggerForm.cs
+++ b/KeePass/Forms/EcasTriggerForm.cs
@@ -82,7 +82,7 @@ namespace KeePass.Forms
 			m_lvActions.Columns.Add(string.Empty, nColWidth);
 
 			m_tbName.Text = m_trigger.Name;
-			m_tbComments.Text = StrUtil.NormalizeNewLines(m_trigger.Comments, true);
+			UIUtil.SetMultilineText(m_tbComments, m_trigger.Comments);
 			m_cbEnabled.Checked = m_trigger.Enabled;
 			m_cbInitiallyOn.Checked = m_trigger.InitiallyOn;
 			m_cbTurnOffAfterAction.Checked = m_trigger.TurnOffAfterAction;
diff --git a/KeePass/Forms/EditAutoTypeItemForm.cs b/KeePass/Forms/EditAutoTypeItemForm.cs
index 453e5fd..53320a0 100644
--- a/KeePass/Forms/EditAutoTypeItemForm.cs
+++ b/KeePass/Forms/EditAutoTypeItemForm.cs
@@ -162,7 +162,9 @@ namespace KeePass.Forms
 			};
 
 			string[] vSpecialPlaceholders = new string[] {
-				"GROUP", "GROUPPATH", "PASSWORD_ENC", "URL:RMVSCM",
+				"GROUP", "GROUPPATH", "PASSWORD_ENC",
+				"URL:RMVSCM", "URL:SCM", "URL:HOST", "URL:PORT", "URL:PATH",
+				"URL:QUERY",
 				"C:Comment", VkcBreak,
 				"DELAY 1000", "DELAY=200", "VKEY 65",
 				"PICKCHARS", "PICKCHARS:Password:C=3",
diff --git a/KeePass/Forms/EntropyForm.Designer.cs b/KeePass/Forms/EntropyForm.Designer.cs
index 42c0f7b..4b74ef3 100644
--- a/KeePass/Forms/EntropyForm.Designer.cs
+++ b/KeePass/Forms/EntropyForm.Designer.cs
@@ -33,7 +33,6 @@
 			this.m_picRandom = new System.Windows.Forms.PictureBox();
 			this.m_lblHint = new System.Windows.Forms.Label();
 			this.m_lblGeneratedHint = new System.Windows.Forms.Label();
-			this.m_pbGenerated = new KeePass.UI.QualityProgressBar();
 			this.m_lblStatus = new System.Windows.Forms.Label();
 			this.m_bannerImage = new System.Windows.Forms.PictureBox();
 			this.m_grpMouse = new System.Windows.Forms.GroupBox();
@@ -41,6 +40,7 @@
 			this.m_lblKeysDesc = new System.Windows.Forms.Label();
 			this.m_lblKeysIntro = new System.Windows.Forms.Label();
 			this.m_tbEdit = new System.Windows.Forms.TextBox();
+			this.m_pbGenerated = new KeePass.UI.QualityProgressBar();
 			((System.ComponentModel.ISupportInitialize)(this.m_picRandom)).BeginInit();
 			((System.ComponentModel.ISupportInitialize)(this.m_bannerImage)).BeginInit();
 			this.m_grpMouse.SuspendLayout();
@@ -50,7 +50,7 @@
 			// m_btnOK
 			// 
 			this.m_btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
-			this.m_btnOK.Location = new System.Drawing.Point(462, 383);
+			this.m_btnOK.Location = new System.Drawing.Point(462, 388);
 			this.m_btnOK.Name = "m_btnOK";
 			this.m_btnOK.Size = new System.Drawing.Size(75, 23);
 			this.m_btnOK.TabIndex = 1;
@@ -61,7 +61,7 @@
 			// m_btnCancel
 			// 
 			this.m_btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-			this.m_btnCancel.Location = new System.Drawing.Point(543, 383);
+			this.m_btnCancel.Location = new System.Drawing.Point(543, 388);
 			this.m_btnCancel.Name = "m_btnCancel";
 			this.m_btnCancel.Size = new System.Drawing.Size(75, 23);
 			this.m_btnCancel.TabIndex = 2;
@@ -76,6 +76,7 @@
 			this.m_picRandom.Location = new System.Drawing.Point(9, 47);
 			this.m_picRandom.Name = "m_picRandom";
 			this.m_picRandom.Size = new System.Drawing.Size(286, 233);
+			this.m_picRandom.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
 			this.m_picRandom.TabIndex = 2;
 			this.m_picRandom.TabStop = false;
 			this.m_picRandom.MouseMove += new System.Windows.Forms.MouseEventHandler(this.OnRandomMouseMove);
@@ -91,28 +92,16 @@
 			// m_lblGeneratedHint
 			// 
 			this.m_lblGeneratedHint.AutoSize = true;
-			this.m_lblGeneratedHint.Location = new System.Drawing.Point(6, 286);
+			this.m_lblGeneratedHint.Location = new System.Drawing.Point(6, 288);
 			this.m_lblGeneratedHint.Name = "m_lblGeneratedHint";
 			this.m_lblGeneratedHint.Size = new System.Drawing.Size(79, 13);
 			this.m_lblGeneratedHint.TabIndex = 1;
 			this.m_lblGeneratedHint.Text = "Generated bits:";
 			// 
-			// m_pbGenerated
-			// 
-			this.m_pbGenerated.Location = new System.Drawing.Point(91, 286);
-			this.m_pbGenerated.Maximum = 100;
-			this.m_pbGenerated.Minimum = 0;
-			this.m_pbGenerated.Name = "m_pbGenerated";
-			this.m_pbGenerated.Size = new System.Drawing.Size(148, 13);
-			this.m_pbGenerated.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
-			this.m_pbGenerated.TabIndex = 2;
-			this.m_pbGenerated.TabStop = false;
-			this.m_pbGenerated.Value = 0;
-			// 
 			// m_lblStatus
 			// 
 			this.m_lblStatus.AutoSize = true;
-			this.m_lblStatus.Location = new System.Drawing.Point(245, 286);
+			this.m_lblStatus.Location = new System.Drawing.Point(245, 288);
 			this.m_lblStatus.Name = "m_lblStatus";
 			this.m_lblStatus.Size = new System.Drawing.Size(50, 13);
 			this.m_lblStatus.TabIndex = 3;
@@ -137,7 +126,7 @@
 			this.m_grpMouse.Controls.Add(this.m_lblStatus);
 			this.m_grpMouse.Location = new System.Drawing.Point(12, 66);
 			this.m_grpMouse.Name = "m_grpMouse";
-			this.m_grpMouse.Size = new System.Drawing.Size(301, 311);
+			this.m_grpMouse.Size = new System.Drawing.Size(302, 316);
 			this.m_grpMouse.TabIndex = 3;
 			this.m_grpMouse.TabStop = false;
 			this.m_grpMouse.Text = "Random mouse input";
@@ -147,9 +136,9 @@
 			this.m_grpKeyboard.Controls.Add(this.m_lblKeysDesc);
 			this.m_grpKeyboard.Controls.Add(this.m_lblKeysIntro);
 			this.m_grpKeyboard.Controls.Add(this.m_tbEdit);
-			this.m_grpKeyboard.Location = new System.Drawing.Point(319, 66);
+			this.m_grpKeyboard.Location = new System.Drawing.Point(320, 66);
 			this.m_grpKeyboard.Name = "m_grpKeyboard";
-			this.m_grpKeyboard.Size = new System.Drawing.Size(299, 311);
+			this.m_grpKeyboard.Size = new System.Drawing.Size(298, 316);
 			this.m_grpKeyboard.TabIndex = 0;
 			this.m_grpKeyboard.TabStop = false;
 			this.m_grpKeyboard.Text = "Random keyboard input";
@@ -158,7 +147,7 @@
 			// 
 			this.m_lblKeysDesc.Location = new System.Drawing.Point(6, 254);
 			this.m_lblKeysDesc.Name = "m_lblKeysDesc";
-			this.m_lblKeysDesc.Size = new System.Drawing.Size(287, 54);
+			this.m_lblKeysDesc.Size = new System.Drawing.Size(286, 56);
 			this.m_lblKeysDesc.TabIndex = 2;
 			this.m_lblKeysDesc.Text = "Just hack some random keys into the box above. You do not need to remember them. " +
 				"They are only used as a random seed for a cryptographically strong random number" +
@@ -176,20 +165,32 @@
 			// m_tbEdit
 			// 
 			this.m_tbEdit.AcceptsReturn = true;
-			this.m_tbEdit.Location = new System.Drawing.Point(6, 47);
+			this.m_tbEdit.Location = new System.Drawing.Point(7, 47);
 			this.m_tbEdit.Multiline = true;
 			this.m_tbEdit.Name = "m_tbEdit";
 			this.m_tbEdit.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
-			this.m_tbEdit.Size = new System.Drawing.Size(287, 204);
+			this.m_tbEdit.Size = new System.Drawing.Size(284, 204);
 			this.m_tbEdit.TabIndex = 0;
 			// 
+			// m_pbGenerated
+			// 
+			this.m_pbGenerated.Location = new System.Drawing.Point(91, 288);
+			this.m_pbGenerated.Maximum = 100;
+			this.m_pbGenerated.Minimum = 0;
+			this.m_pbGenerated.Name = "m_pbGenerated";
+			this.m_pbGenerated.Size = new System.Drawing.Size(148, 13);
+			this.m_pbGenerated.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
+			this.m_pbGenerated.TabIndex = 2;
+			this.m_pbGenerated.TabStop = false;
+			this.m_pbGenerated.Value = 0;
+			// 
 			// EntropyForm
 			// 
 			this.AcceptButton = this.m_btnOK;
 			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
 			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
 			this.CancelButton = this.m_btnCancel;
-			this.ClientSize = new System.Drawing.Size(630, 418);
+			this.ClientSize = new System.Drawing.Size(630, 423);
 			this.Controls.Add(this.m_grpKeyboard);
 			this.Controls.Add(this.m_grpMouse);
 			this.Controls.Add(this.m_bannerImage);
diff --git a/KeePass/Forms/ExchangeDataForm.Designer.cs b/KeePass/Forms/ExchangeDataForm.Designer.cs
index 8dbed93..530787d 100644
--- a/KeePass/Forms/ExchangeDataForm.Designer.cs
+++ b/KeePass/Forms/ExchangeDataForm.Designer.cs
@@ -55,10 +55,10 @@
 			// m_btnOK
 			// 
 			this.m_btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
-			this.m_btnOK.Location = new System.Drawing.Point(210, 452);
+			this.m_btnOK.Location = new System.Drawing.Point(210, 449);
 			this.m_btnOK.Name = "m_btnOK";
 			this.m_btnOK.Size = new System.Drawing.Size(75, 23);
-			this.m_btnOK.TabIndex = 1;
+			this.m_btnOK.TabIndex = 0;
 			this.m_btnOK.Text = "&OK";
 			this.m_btnOK.UseVisualStyleBackColor = true;
 			this.m_btnOK.Click += new System.EventHandler(this.OnBtnOK);
@@ -66,10 +66,10 @@
 			// m_btnCancel
 			// 
 			this.m_btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-			this.m_btnCancel.Location = new System.Drawing.Point(291, 452);
+			this.m_btnCancel.Location = new System.Drawing.Point(291, 449);
 			this.m_btnCancel.Name = "m_btnCancel";
 			this.m_btnCancel.Size = new System.Drawing.Size(75, 23);
-			this.m_btnCancel.TabIndex = 2;
+			this.m_btnCancel.TabIndex = 1;
 			this.m_btnCancel.Text = "&Cancel";
 			this.m_btnCancel.UseVisualStyleBackColor = true;
 			this.m_btnCancel.Click += new System.EventHandler(this.OnBtnCancel);
@@ -77,10 +77,10 @@
 			// m_grpFormat
 			// 
 			this.m_grpFormat.Controls.Add(this.m_lvFormats);
-			this.m_grpFormat.Location = new System.Drawing.Point(12, 75);
+			this.m_grpFormat.Location = new System.Drawing.Point(12, 72);
 			this.m_grpFormat.Name = "m_grpFormat";
 			this.m_grpFormat.Size = new System.Drawing.Size(354, 297);
-			this.m_grpFormat.TabIndex = 3;
+			this.m_grpFormat.TabIndex = 2;
 			this.m_grpFormat.TabStop = false;
 			this.m_grpFormat.Text = "Format";
 			// 
@@ -93,7 +93,7 @@
 			this.m_lvFormats.MultiSelect = false;
 			this.m_lvFormats.Name = "m_lvFormats";
 			this.m_lvFormats.Size = new System.Drawing.Size(336, 268);
-			this.m_lvFormats.TabIndex = 1;
+			this.m_lvFormats.TabIndex = 0;
 			this.m_lvFormats.UseCompatibleStateImageBehavior = false;
 			this.m_lvFormats.View = System.Windows.Forms.View.Details;
 			this.m_lvFormats.ItemActivate += new System.EventHandler(this.OnFormatsItemActivate);
@@ -105,10 +105,10 @@
 			this.m_grpFile.Controls.Add(this.m_btnSelFile);
 			this.m_grpFile.Controls.Add(this.m_tbFile);
 			this.m_grpFile.Controls.Add(this.m_lblFile);
-			this.m_grpFile.Location = new System.Drawing.Point(12, 378);
+			this.m_grpFile.Location = new System.Drawing.Point(12, 375);
 			this.m_grpFile.Name = "m_grpFile";
 			this.m_grpFile.Size = new System.Drawing.Size(354, 68);
-			this.m_grpFile.TabIndex = 4;
+			this.m_grpFile.TabIndex = 3;
 			this.m_grpFile.TabStop = false;
 			this.m_grpFile.Text = "File";
 			// 
@@ -118,7 +118,7 @@
 			this.m_lnkFileFormats.Location = new System.Drawing.Point(110, 45);
 			this.m_lnkFileFormats.Name = "m_lnkFileFormats";
 			this.m_lnkFileFormats.Size = new System.Drawing.Size(182, 13);
-			this.m_lnkFileFormats.TabIndex = 4;
+			this.m_lnkFileFormats.TabIndex = 3;
 			this.m_lnkFileFormats.TabStop = true;
 			this.m_lnkFileFormats.Text = "Help: Configuring source applications";
 			this.m_lnkFileFormats.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.OnLinkFileFormats);
@@ -155,7 +155,7 @@
 			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
 			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
 			this.CancelButton = this.m_btnCancel;
-			this.ClientSize = new System.Drawing.Size(378, 487);
+			this.ClientSize = new System.Drawing.Size(378, 484);
 			this.Controls.Add(this.m_grpFile);
 			this.Controls.Add(this.m_grpFormat);
 			this.Controls.Add(this.m_btnCancel);
diff --git a/KeePass/Forms/ExchangeDataForm.cs b/KeePass/Forms/ExchangeDataForm.cs
index 1b9fd84..b45d810 100644
--- a/KeePass/Forms/ExchangeDataForm.cs
+++ b/KeePass/Forms/ExchangeDataForm.cs
@@ -206,8 +206,9 @@ namespace KeePass.Forms
 
 			if(m_bExport == false) // Import
 			{
-				OpenFileDialog ofd = UIUtil.CreateOpenFileDialog(KPRes.Import + ": " +
-					strFormat, strFilter, 1, strPriExt, true, true);
+				OpenFileDialogEx ofd = UIUtil.CreateOpenFileDialog(KPRes.Import +
+					": " + strFormat, strFilter, 1, strPriExt, true,
+					AppDefs.FileDialogContext.Import);
 
 				if(ofd.ShowDialog() != DialogResult.OK) return;
 
@@ -229,8 +230,9 @@ namespace KeePass.Forms
 			}
 			else // Export
 			{
-				SaveFileDialog sfd = UIUtil.CreateSaveFileDialog(KPRes.Export + ": " +
-					strFormat, null, strFilter, 1, strPriExt, false);
+				SaveFileDialogEx sfd = UIUtil.CreateSaveFileDialog(KPRes.Export +
+					": " + strFormat, null, strFilter, 1, strPriExt,
+					AppDefs.FileDialogContext.Export);
 
 				string strSuggestion;
 				if((m_pwDatabaseInfo != null) &&
diff --git a/KeePass/Forms/FileBrowserForm.cs b/KeePass/Forms/FileBrowserForm.cs
index c1a8be4..ab7c88b 100644
--- a/KeePass/Forms/FileBrowserForm.cs
+++ b/KeePass/Forms/FileBrowserForm.cs
@@ -31,6 +31,7 @@ using System.Diagnostics;
 using KeePass.Native;
 using KeePass.Resources;
 using KeePass.UI;
+using KeePass.Util;
 
 using KeePassLib;
 using KeePassLib.Utility;
@@ -42,6 +43,7 @@ namespace KeePass.Forms
 		private bool m_bSaveMode = false;
 		private string m_strTitle = PwDefs.ShortProductName;
 		private string m_strHint = string.Empty;
+		private string m_strContext = null;
 
 		private ImageList m_ilFolders = null;
 		private List<Image> m_vFolderImages = new List<Image>();
@@ -76,11 +78,13 @@ namespace KeePass.Forms
 			get { return m_strSelectedFile; }
 		}
 
-		public void InitEx(bool bSaveMode, string strTitle, string strHint)
+		public void InitEx(bool bSaveMode, string strTitle, string strHint,
+			string strContext)
 		{
 			m_bSaveMode = bSaveMode;
 			if(strTitle != null) m_strTitle = strTitle;
 			if(strHint != null) m_strHint = strHint;
+			m_strContext = strContext;
 		}
 
 		public FileBrowserForm()
@@ -117,7 +121,11 @@ namespace KeePass.Forms
 			m_lvFiles.Columns.Add(KPRes.Size, nWidth / 4, HorizontalAlignment.Right);
 
 			InitialPopulateFolders();
-			BrowseToFolder(Environment.CurrentDirectory);
+
+			string strWorkDir = Program.Config.Application.GetWorkingDirectory(m_strContext);
+			if(string.IsNullOrEmpty(strWorkDir))
+				strWorkDir = WinUtil.GetHomeDirectory();
+			BrowseToFolder(strWorkDir);
 
 			EnableControlsEx();
 		}
@@ -465,6 +473,10 @@ namespace KeePass.Forms
 				else if(File.Exists(str))
 				{
 					m_strSelectedFile = str;
+
+					Program.Config.Application.SetWorkingDirectory(m_strContext,
+						UrlUtil.GetFileDirectory(str, false, true));
+
 					return true;
 				}
 				else { Debug.Assert(false); }
diff --git a/KeePass/Forms/GroupForm.cs b/KeePass/Forms/GroupForm.cs
index 3a0f7b5..a79121c 100644
--- a/KeePass/Forms/GroupForm.cs
+++ b/KeePass/Forms/GroupForm.cs
@@ -77,7 +77,7 @@ namespace KeePass.Forms
 			m_pwCustomIconID = m_pwGroup.CustomIconUuid;
 			
 			m_tbName.Text = m_pwGroup.Name;
-			m_tbNotes.Text = m_pwGroup.Notes;
+			UIUtil.SetMultilineText(m_tbNotes, m_pwGroup.Notes);
 
 			if(m_pwCustomIconID != PwUuid.Zero)
 				UIUtil.SetButtonImage(m_btnIcon, m_pwDatabase.GetCustomIcon(
diff --git a/KeePass/Forms/IconPickerForm.cs b/KeePass/Forms/IconPickerForm.cs
index 50a0469..8052bc4 100644
--- a/KeePass/Forms/IconPickerForm.cs
+++ b/KeePass/Forms/IconPickerForm.cs
@@ -27,6 +27,7 @@ using System.Windows.Forms;
 using System.Diagnostics;
 using System.IO;
 
+using KeePass.App;
 using KeePass.Resources;
 using KeePass.UI;
 
@@ -228,8 +229,8 @@ namespace KeePass.Forms
 			AddFileType(sbFilter, "*.wmf", "Windows Metafile (*.wmf)");
 			sbFilter.Append(@"|" + KPRes.AllFiles + @" (*.*)|*.*");
 
-			OpenFileDialog ofd = UIUtil.CreateOpenFileDialog(KPRes.ImportFileTitle,
-				sbFilter.ToString(), 1, null, true, true);
+			OpenFileDialogEx ofd = UIUtil.CreateOpenFileDialog(KPRes.ImportFileTitle,
+				sbFilter.ToString(), 1, null, true, AppDefs.FileDialogContext.Import);
 
 			if(ofd.ShowDialog() == DialogResult.OK)
 			{
@@ -249,17 +250,23 @@ namespace KeePass.Forms
 						// Bitmap img = new Bitmap(strFile);
 						// Image img = Image.FromFile(strFile);
 						byte[] pb = File.ReadAllBytes(strFile);
-						
+
 						// MemoryStream msSource = new MemoryStream(pb, false);
 						// Image img = Image.FromStream(msSource);
 						// msSource.Close();
 
-						Image img = UIUtil.LoadImage(pb);
-
-						Image imgNew = new Bitmap(img, new Size(16, 16));
-
+						Image img = GfxUtil.LoadImage(pb);
 						MemoryStream ms = new MemoryStream();
-						imgNew.Save(ms, ImageFormat.Png);
+						if((img.Width == 16) && (img.Height == 16))
+							img.Save(ms, ImageFormat.Png);
+						else
+						{
+							// Image imgNew = new Bitmap(img, new Size(16, 16));
+							Bitmap imgSc = UIUtil.CreateScaledImage(img, 16, 16);
+							imgSc.Save(ms, ImageFormat.Png);
+							imgSc.Dispose();
+						}
+						img.Dispose();
 
 						PwCustomIcon pwci = new PwCustomIcon(new PwUuid(true),
 							ms.ToArray());
@@ -363,8 +370,9 @@ namespace KeePass.Forms
 				// AddFileType(sbFilter, "*.ico", "Windows Icon (*.ico)");
 				sbFilter.Append(@"|" + KPRes.AllFiles + @" (*.*)|*.*");
 
-				SaveFileDialog sfd = UIUtil.CreateSaveFileDialog(KPRes.ExportFileTitle,
-					KPRes.Export + ".png", sbFilter.ToString(), 1, null, true);
+				SaveFileDialogEx sfd = UIUtil.CreateSaveFileDialog(KPRes.ExportFileTitle,
+					KPRes.Export + ".png", sbFilter.ToString(), 1, null,
+					AppDefs.FileDialogContext.Export);
 				if(sfd.ShowDialog() == DialogResult.OK)
 					SaveImageFile(lvsic[0], sfd.FileName);
 			}
diff --git a/KeePass/Forms/KeyCreationForm.Designer.cs b/KeePass/Forms/KeyCreationForm.Designer.cs
index 819afb9..bdde0d5 100644
--- a/KeePass/Forms/KeyCreationForm.Designer.cs
+++ b/KeePass/Forms/KeyCreationForm.Designer.cs
@@ -54,7 +54,9 @@
 			this.m_bannerImage = new System.Windows.Forms.PictureBox();
 			this.m_cmbKeyFile = new System.Windows.Forms.ComboBox();
 			this.m_lblWindowsAccDesc2 = new System.Windows.Forms.Label();
+			this.m_picAccWarning = new System.Windows.Forms.PictureBox();
 			((System.ComponentModel.ISupportInitialize)(this.m_bannerImage)).BeginInit();
+			((System.ComponentModel.ISupportInitialize)(this.m_picAccWarning)).BeginInit();
 			this.SuspendLayout();
 			// 
 			// m_lblIntro
@@ -284,12 +286,21 @@
 			// 
 			// m_lblWindowsAccDesc2
 			// 
-			this.m_lblWindowsAccDesc2.Location = new System.Drawing.Point(28, 359);
+			this.m_lblWindowsAccDesc2.Location = new System.Drawing.Point(53, 359);
 			this.m_lblWindowsAccDesc2.Name = "m_lblWindowsAccDesc2";
-			this.m_lblWindowsAccDesc2.Size = new System.Drawing.Size(476, 55);
+			this.m_lblWindowsAccDesc2.Size = new System.Drawing.Size(451, 55);
 			this.m_lblWindowsAccDesc2.TabIndex = 14;
 			this.m_lblWindowsAccDesc2.Text = resources.GetString("m_lblWindowsAccDesc2.Text");
 			// 
+			// m_picAccWarning
+			// 
+			this.m_picAccWarning.Location = new System.Drawing.Point(31, 359);
+			this.m_picAccWarning.Name = "m_picAccWarning";
+			this.m_picAccWarning.Size = new System.Drawing.Size(16, 16);
+			this.m_picAccWarning.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+			this.m_picAccWarning.TabIndex = 22;
+			this.m_picAccWarning.TabStop = false;
+			// 
 			// KeyCreationForm
 			// 
 			this.AcceptButton = this.m_btnCreate;
@@ -297,6 +308,7 @@
 			this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
 			this.CancelButton = this.m_btnCancel;
 			this.ClientSize = new System.Drawing.Size(519, 464);
+			this.Controls.Add(this.m_picAccWarning);
 			this.Controls.Add(this.m_lblWindowsAccDesc2);
 			this.Controls.Add(this.m_cmbKeyFile);
 			this.Controls.Add(this.m_lblQualityBits);
@@ -332,6 +344,7 @@
 			this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.OnFormClosed);
 			this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OnFormClosing);
 			((System.ComponentModel.ISupportInitialize)(this.m_bannerImage)).EndInit();
+			((System.ComponentModel.ISupportInitialize)(this.m_picAccWarning)).EndInit();
 			this.ResumeLayout(false);
 			this.PerformLayout();
 
@@ -363,5 +376,6 @@
 		private System.Windows.Forms.Label m_lblQualityBits;
 		private System.Windows.Forms.ComboBox m_cmbKeyFile;
 		private System.Windows.Forms.Label m_lblWindowsAccDesc2;
+		private System.Windows.Forms.PictureBox m_picAccWarning;
 	}
 }
\ No newline at end of file
diff --git a/KeePass/Forms/KeyCreationForm.cs b/KeePass/Forms/KeyCreationForm.cs
index acd5b4c..ef29feb 100644
--- a/KeePass/Forms/KeyCreationForm.cs
+++ b/KeePass/Forms/KeyCreationForm.cs
@@ -21,6 +21,8 @@ using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Drawing.Imaging;
 using System.Text;
 using System.Windows.Forms;
 using System.Diagnostics;
@@ -48,6 +50,7 @@ namespace KeePass.Forms
 		private IOConnectionInfo m_ioInfo = new IOConnectionInfo();
 
 		private PwInputControlGroup m_icgPassword = new PwInputControlGroup();
+		private Image m_imgAccWarning = null;
 
 		public CompositeKey CompositeKey
 		{
@@ -85,6 +88,11 @@ namespace KeePass.Forms
 			FontUtil.AssignDefaultBold(m_cbKeyFile);
 			FontUtil.AssignDefaultBold(m_cbUserAccount);
 
+			Bitmap bmpBig = SystemIcons.Warning.ToBitmap();
+			m_imgAccWarning = UIUtil.CreateScaledImage(bmpBig, 16, 16);
+			bmpBig.Dispose();
+			m_picAccWarning.Image = m_imgAccWarning;
+
 			m_ttRect.SetToolTip(m_cbHidePassword, KPRes.TogglePasswordAsterisks);
 			m_ttRect.SetToolTip(m_btnSaveKeyFile, KPRes.KeyFileCreate);
 			m_ttRect.SetToolTip(m_btnOpenKeyFile, KPRes.KeyFileUseExisting);
@@ -128,6 +136,13 @@ namespace KeePass.Forms
 
 		private void CleanUpEx()
 		{
+			if(m_imgAccWarning != null)
+			{
+				m_picAccWarning.Image = null;
+				m_imgAccWarning.Dispose();
+				m_imgAccWarning = null;
+			}
+
 			m_icgPassword.Release();
 		}
 
@@ -276,10 +291,10 @@ namespace KeePass.Forms
 
 		private void OnClickKeyFileCreate(object sender, EventArgs e)
 		{
-			SaveFileDialog sfd = UIUtil.CreateSaveFileDialog(KPRes.KeyFileCreate,
+			SaveFileDialogEx sfd = UIUtil.CreateSaveFileDialog(KPRes.KeyFileCreate,
 				UrlUtil.StripExtension(UrlUtil.GetFileName(m_ioInfo.Path)) + "." +
 				AppDefs.FileExtension.KeyFile, UIUtil.CreateFileTypeFilter("key",
-				KPRes.KeyFiles, true), 1, "key", true);
+				KPRes.KeyFiles, true), 1, "key", AppDefs.FileDialogContext.KeyFile);
 
 			if(sfd.ShowDialog() == DialogResult.OK)
 			{
@@ -309,9 +324,9 @@ namespace KeePass.Forms
 
 		private void OnClickKeyFileBrowse(object sender, EventArgs e)
 		{
-			OpenFileDialog ofd = UIUtil.CreateOpenFileDialog(KPRes.KeyFileUseExisting,
+			OpenFileDialogEx ofd = UIUtil.CreateOpenFileDialog(KPRes.KeyFileUseExisting,
 				UIUtil.CreateFileTypeFilter("key", KPRes.KeyFiles, true), 2, null,
-				false, true);
+				false, AppDefs.FileDialogContext.KeyFile);
 
 			if(ofd.ShowDialog() == DialogResult.OK)
 			{
diff --git a/KeePass/Forms/KeyPromptForm.cs b/KeePass/Forms/KeyPromptForm.cs
index 1510269..7a01a04 100644
--- a/KeePass/Forms/KeyPromptForm.cs
+++ b/KeePass/Forms/KeyPromptForm.cs
@@ -157,6 +157,17 @@ namespace KeePass.Forms
 					m_tbPassword.Text = StrUtil.DecryptString(str);
 				}
 
+				str = Program.CommandLineArgs[AppDefs.CommandLineOptions.PasswordStdIn];
+				if(str != null)
+				{
+					KcpPassword kcpPw = KeyUtil.ReadPasswordStdIn(true);
+					if(kcpPw != null)
+					{
+						m_cbPassword.Checked = true;
+						m_tbPassword.Text = kcpPw.Password.ReadString();
+					}
+				}
+
 				str = Program.CommandLineArgs[AppDefs.CommandLineOptions.KeyFile];
 				if(str != null)
 				{
@@ -417,7 +428,8 @@ namespace KeePass.Forms
 			if(m_bSecureDesktop)
 			{
 				FileBrowserForm dlg = new FileBrowserForm();
-				dlg.InitEx(false, KPRes.KeyFileSelect, KPRes.SecDeskFileDialogHint);
+				dlg.InitEx(false, KPRes.KeyFileSelect, KPRes.SecDeskFileDialogHint,
+					AppDefs.FileDialogContext.KeyFile);
 				if(dlg.ShowDialog() == DialogResult.OK)
 					strFile = dlg.SelectedFile;
 				UIUtil.DestroyForm(dlg);
@@ -425,8 +437,8 @@ namespace KeePass.Forms
 			else
 			{
 				string strFilter = UIUtil.CreateFileTypeFilter("key", KPRes.KeyFiles, true);
-				OpenFileDialog ofd = UIUtil.CreateOpenFileDialog(KPRes.KeyFileSelect,
-					strFilter, 2, null, false, true);
+				OpenFileDialogEx ofd = UIUtil.CreateOpenFileDialog(KPRes.KeyFileSelect,
+					strFilter, 2, null, false, AppDefs.FileDialogContext.KeyFile);
 
 				if(ofd.ShowDialog() == DialogResult.OK)
 					strFile = ofd.FileName;
diff --git a/KeePass/Forms/MainForm.Designer.cs b/KeePass/Forms/MainForm.Designer.cs
index ae47290..7a6f590 100644
--- a/KeePass/Forms/MainForm.Designer.cs
+++ b/KeePass/Forms/MainForm.Designer.cs
@@ -285,7 +285,7 @@
 			this.m_ctxGroupEmpty.Image = global::KeePass.Properties.Resources.B16x16_Trashcan_Full;
 			this.m_ctxGroupEmpty.Name = "m_ctxGroupEmpty";
 			this.m_ctxGroupEmpty.Size = new System.Drawing.Size(179, 22);
-			this.m_ctxGroupEmpty.Text = "&Empty Recycle Bin";
+			this.m_ctxGroupEmpty.Text = "Empty Recycle &Bin";
 			this.m_ctxGroupEmpty.Click += new System.EventHandler(this.OnGroupsEmpty);
 			// 
 			// m_ctxGroupSep1
@@ -319,7 +319,7 @@
 			this.m_ctxGroupExport.Image = global::KeePass.Properties.Resources.B16x16_Folder_Outbox;
 			this.m_ctxGroupExport.Name = "m_ctxGroupExport";
 			this.m_ctxGroupExport.Size = new System.Drawing.Size(179, 22);
-			this.m_ctxGroupExport.Text = "E&xport...";
+			this.m_ctxGroupExport.Text = "&Export...";
 			this.m_ctxGroupExport.Click += new System.EventHandler(this.OnGroupsExport);
 			// 
 			// m_ctxGroupSep3
@@ -490,7 +490,7 @@
             this.m_ctxEntryClipboard,
             this.m_ctxEntryRearrangePopup});
 			this.m_ctxPwList.Name = "m_ctxPwList";
-			this.m_ctxPwList.Size = new System.Drawing.Size(215, 352);
+			this.m_ctxPwList.Size = new System.Drawing.Size(215, 374);
 			this.m_ctxPwList.Opening += new System.ComponentModel.CancelEventHandler(this.OnCtxPwListOpening);
 			// 
 			// m_ctxEntryCopyUserName
@@ -581,7 +581,7 @@
 			this.m_ctxEntryPerformAutoType.Image = global::KeePass.Properties.Resources.B16x16_KRec_Record;
 			this.m_ctxEntryPerformAutoType.Name = "m_ctxEntryPerformAutoType";
 			this.m_ctxEntryPerformAutoType.Size = new System.Drawing.Size(214, 22);
-			this.m_ctxEntryPerformAutoType.Text = "&Perform Auto-Type";
+			this.m_ctxEntryPerformAutoType.Text = "Perform Auto-&Type";
 			this.m_ctxEntryPerformAutoType.Click += new System.EventHandler(this.OnEntryPerformAutoType);
 			// 
 			// m_ctxEntrySep1
@@ -648,7 +648,7 @@
             this.m_ctxEntryColorSep1,
             this.m_ctxEntryColorCustom});
 			this.m_ctxEntrySetColor.Name = "m_ctxEntrySetColor";
-			this.m_ctxEntrySetColor.Size = new System.Drawing.Size(144, 22);
+			this.m_ctxEntrySetColor.Size = new System.Drawing.Size(152, 22);
 			this.m_ctxEntrySetColor.Text = "Set &Color";
 			// 
 			// m_ctxEntryColorStandard
@@ -707,21 +707,21 @@
 			// 
 			this.m_ctxEntryMassSetIcon.Image = global::KeePass.Properties.Resources.B16x16_Spreadsheet;
 			this.m_ctxEntryMassSetIcon.Name = "m_ctxEntryMassSetIcon";
-			this.m_ctxEntryMassSetIcon.Size = new System.Drawing.Size(144, 22);
+			this.m_ctxEntryMassSetIcon.Size = new System.Drawing.Size(152, 22);
 			this.m_ctxEntryMassSetIcon.Text = "Set &Icons...";
 			this.m_ctxEntryMassSetIcon.Click += new System.EventHandler(this.OnEntryMassSetIcon);
 			// 
 			// m_ctxEntrySelectedSep0
 			// 
 			this.m_ctxEntrySelectedSep0.Name = "m_ctxEntrySelectedSep0";
-			this.m_ctxEntrySelectedSep0.Size = new System.Drawing.Size(141, 6);
+			this.m_ctxEntrySelectedSep0.Size = new System.Drawing.Size(149, 6);
 			// 
 			// m_ctxEntrySelectedAddTag
 			// 
 			this.m_ctxEntrySelectedAddTag.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.m_ctxEntrySelectedNewTag});
 			this.m_ctxEntrySelectedAddTag.Name = "m_ctxEntrySelectedAddTag";
-			this.m_ctxEntrySelectedAddTag.Size = new System.Drawing.Size(144, 22);
+			this.m_ctxEntrySelectedAddTag.Size = new System.Drawing.Size(152, 22);
 			this.m_ctxEntrySelectedAddTag.Text = "Add &Tag";
 			this.m_ctxEntrySelectedAddTag.DropDownOpening += new System.EventHandler(this.OnEntrySelectedAddTagOpening);
 			// 
@@ -736,20 +736,20 @@
 			// m_ctxEntrySelectedRemoveTag
 			// 
 			this.m_ctxEntrySelectedRemoveTag.Name = "m_ctxEntrySelectedRemoveTag";
-			this.m_ctxEntrySelectedRemoveTag.Size = new System.Drawing.Size(144, 22);
+			this.m_ctxEntrySelectedRemoveTag.Size = new System.Drawing.Size(152, 22);
 			this.m_ctxEntrySelectedRemoveTag.Text = "&Remove Tag";
 			this.m_ctxEntrySelectedRemoveTag.DropDownOpening += new System.EventHandler(this.OnEntrySelectedRemoveTagOpening);
 			// 
 			// m_ctxEntrySelectedSep1
 			// 
 			this.m_ctxEntrySelectedSep1.Name = "m_ctxEntrySelectedSep1";
-			this.m_ctxEntrySelectedSep1.Size = new System.Drawing.Size(141, 6);
+			this.m_ctxEntrySelectedSep1.Size = new System.Drawing.Size(149, 6);
 			// 
 			// m_ctxEntrySelectedPrint
 			// 
 			this.m_ctxEntrySelectedPrint.Image = global::KeePass.Properties.Resources.B16x16_FilePrint;
 			this.m_ctxEntrySelectedPrint.Name = "m_ctxEntrySelectedPrint";
-			this.m_ctxEntrySelectedPrint.Size = new System.Drawing.Size(144, 22);
+			this.m_ctxEntrySelectedPrint.Size = new System.Drawing.Size(152, 22);
 			this.m_ctxEntrySelectedPrint.Text = "&Print...";
 			this.m_ctxEntrySelectedPrint.Click += new System.EventHandler(this.OnEntrySelectedPrint);
 			// 
@@ -757,8 +757,8 @@
 			// 
 			this.m_ctxEntrySelectedExport.Image = global::KeePass.Properties.Resources.B16x16_Folder_Outbox;
 			this.m_ctxEntrySelectedExport.Name = "m_ctxEntrySelectedExport";
-			this.m_ctxEntrySelectedExport.Size = new System.Drawing.Size(144, 22);
-			this.m_ctxEntrySelectedExport.Text = "E&xport...";
+			this.m_ctxEntrySelectedExport.Size = new System.Drawing.Size(152, 22);
+			this.m_ctxEntrySelectedExport.Text = "&Export...";
 			this.m_ctxEntrySelectedExport.Click += new System.EventHandler(this.OnEntrySelectedExport);
 			// 
 			// m_ctxEntrySelectAll
@@ -903,7 +903,7 @@
 			this.m_menuFileOpenLocal.Image = global::KeePass.Properties.Resources.B16x16_Folder_Yellow_Open;
 			this.m_menuFileOpenLocal.Name = "m_menuFileOpenLocal";
 			this.m_menuFileOpenLocal.Size = new System.Drawing.Size(141, 22);
-			this.m_menuFileOpenLocal.Text = "Open File...";
+			this.m_menuFileOpenLocal.Text = "Open &File...";
 			this.m_menuFileOpenLocal.Click += new System.EventHandler(this.OnFileOpen);
 			// 
 			// m_menuFileOpenUrl
@@ -911,7 +911,7 @@
 			this.m_menuFileOpenUrl.Image = global::KeePass.Properties.Resources.B16x16_Browser;
 			this.m_menuFileOpenUrl.Name = "m_menuFileOpenUrl";
 			this.m_menuFileOpenUrl.Size = new System.Drawing.Size(141, 22);
-			this.m_menuFileOpenUrl.Text = "Open URL...";
+			this.m_menuFileOpenUrl.Text = "Open &URL...";
 			this.m_menuFileOpenUrl.Click += new System.EventHandler(this.OnFileOpenUrl);
 			// 
 			// m_menuFileRecent
@@ -1190,7 +1190,7 @@
 			this.m_menuViewShowEntryView.CheckOnClick = true;
 			this.m_menuViewShowEntryView.Name = "m_menuViewShowEntryView";
 			this.m_menuViewShowEntryView.Size = new System.Drawing.Size(222, 22);
-			this.m_menuViewShowEntryView.Text = "&Show Entry View";
+			this.m_menuViewShowEntryView.Text = "Show &Entry View";
 			this.m_menuViewShowEntryView.Click += new System.EventHandler(this.OnViewShowEntryView);
 			// 
 			// m_menuViewWindowLayout
@@ -1207,7 +1207,7 @@
 			this.m_menuViewWindowsStacked.Image = global::KeePass.Properties.Resources.B16x16_Window_2Horz1Vert;
 			this.m_menuViewWindowsStacked.Name = "m_menuViewWindowsStacked";
 			this.m_menuViewWindowsStacked.Size = new System.Drawing.Size(142, 22);
-			this.m_menuViewWindowsStacked.Text = "Stacked";
+			this.m_menuViewWindowsStacked.Text = "&Stacked";
 			this.m_menuViewWindowsStacked.Click += new System.EventHandler(this.OnViewWindowsStacked);
 			// 
 			// m_menuViewWindowsSideBySide
@@ -1215,7 +1215,7 @@
 			this.m_menuViewWindowsSideBySide.Image = global::KeePass.Properties.Resources.B16x16_Window_3Horz;
 			this.m_menuViewWindowsSideBySide.Name = "m_menuViewWindowsSideBySide";
 			this.m_menuViewWindowsSideBySide.Size = new System.Drawing.Size(142, 22);
-			this.m_menuViewWindowsSideBySide.Text = "Side by Side";
+			this.m_menuViewWindowsSideBySide.Text = "Side &by Side";
 			this.m_menuViewWindowsSideBySide.Click += new System.EventHandler(this.OnViewWindowsSideBySide);
 			// 
 			// m_menuViewSep1
@@ -1241,14 +1241,14 @@
 			this.m_menuViewConfigColumns.Image = global::KeePass.Properties.Resources.B16x16_View_Detailed;
 			this.m_menuViewConfigColumns.Name = "m_menuViewConfigColumns";
 			this.m_menuViewConfigColumns.Size = new System.Drawing.Size(222, 22);
-			this.m_menuViewConfigColumns.Text = "Configure &Columns...";
+			this.m_menuViewConfigColumns.Text = "&Configure Columns...";
 			this.m_menuViewConfigColumns.Click += new System.EventHandler(this.OnViewConfigColumns);
 			// 
 			// m_menuViewSortBy
 			// 
 			this.m_menuViewSortBy.Name = "m_menuViewSortBy";
 			this.m_menuViewSortBy.Size = new System.Drawing.Size(222, 22);
-			this.m_menuViewSortBy.Text = "S&ort By";
+			this.m_menuViewSortBy.Text = "&Sort By";
 			// 
 			// m_menuViewTanOptions
 			// 
diff --git a/KeePass/Forms/MainForm.cs b/KeePass/Forms/MainForm.cs
index c85db50..56e3f8e 100644
--- a/KeePass/Forms/MainForm.cs
+++ b/KeePass/Forms/MainForm.cs
@@ -122,7 +122,7 @@ namespace KeePass.Forms
 
 			AssignMenuShortcuts();
 
-			if(NativeLib.IsUnix())
+			if(MonoWorkarounds.IsRequired)
 			{
 				// Workaround for tab bar height bug in Mono
 				// https://sourceforge.net/projects/keepass/forums/forum/329221/topic/4519750
@@ -239,7 +239,17 @@ namespace KeePass.Forms
 
 			if((sizeX != AppDefs.InvalidWindowValue) &&
 				(sizeY != AppDefs.InvalidWindowValue) && bWndValid)
+			{
+				if(MonoWorkarounds.IsRequired) // Debian 686017
+				{
+					sizeX = Math.Max(250, sizeX);
+					sizeY = Math.Max(250, sizeY);
+				}
+
 				this.Size = new Size(sizeX, sizeY);
+			}
+			if(MonoWorkarounds.IsRequired) // Debian 686017
+				this.MinimumSize = new Size(250, 250);
 
 			Rectangle rectRestWindow = new Rectangle(wndX, wndY,
 				this.Size.Width, this.Size.Height);
@@ -323,8 +333,14 @@ namespace KeePass.Forms
 			{
 				float fSplitPos = mw.SplitterHorizontalFrac;
 				if(fSplitPos == float.Epsilon) fSplitPos = 0.8333f;
-				m_splitHorizontal.SplitterDistance = (int)Math.Round(fSplitPos *
+				// m_splitHorizontal.SplitterDistance = (int)Math.Round(fSplitPos *
+				//	(double)m_splitHorizontal.Height);
+				int iSplitDist = (int)Math.Round(fSplitPos *
 					(double)m_splitHorizontal.Height);
+				if(MonoWorkarounds.IsRequired) // Debian 686017
+					m_splitHorizontal.SplitterDistance = Math.Max(35, iSplitDist);
+				else
+					m_splitHorizontal.SplitterDistance = iSplitDist;
 
 				fSplitPos = mw.SplitterVerticalFrac;
 				if(fSplitPos == float.Epsilon) fSplitPos = 0.25f;
@@ -387,6 +403,7 @@ namespace KeePass.Forms
 			UpdateTagsMenu(m_dynRemoveTag, false, false, false, false);
 			UpdateUIState(false);
 			ApplyUICustomizations();
+			MonoWorkarounds.ApplyTo(this);
 
 			ThreadPool.QueueUserWorkItem(new WaitCallback(OnFormLoadParallelAsync));
 
@@ -433,14 +450,14 @@ namespace KeePass.Forms
 			if(!AppPolicy.Try(AppPolicyId.NewFile)) return;
 			if(!AppPolicy.Try(AppPolicyId.SaveFile)) return;
 
-			SaveFileDialog sfd = UIUtil.CreateSaveFileDialog(KPRes.CreateNewDatabase,
+			SaveFileDialogEx sfd = UIUtil.CreateSaveFileDialog(KPRes.CreateNewDatabase,
 				KPRes.NewDatabaseFileName, UIUtil.CreateFileTypeFilter(
 				AppDefs.FileExtension.FileExt, KPRes.KdbxFiles, true), 1,
-				AppDefs.FileExtension.FileExt, false, true);
+				AppDefs.FileExtension.FileExt, AppDefs.FileDialogContext.Database);
 
-			GlobalWindowManager.AddDialog(sfd);
+			GlobalWindowManager.AddDialog(sfd.FileDialog);
 			DialogResult dr = sfd.ShowDialog();
-			GlobalWindowManager.RemoveDialog(sfd);
+			GlobalWindowManager.RemoveDialog(sfd.FileDialog);
 
 			string strPath = sfd.FileName;
 
@@ -1392,12 +1409,13 @@ namespace KeePass.Forms
 
 		private void OnGroupsAfterLabelEdit(object sender, NodeLabelEditEventArgs e)
 		{
-			if(e.Node == null) return;
-			PwGroup pg = (e.Node.Tag as PwGroup);
+			if((e == null) || (e.Node == null)) return;
 
-			if((pg != null) && (e.Label != null))
+			PwGroup pg = (e.Node.Tag as PwGroup);
+			string strNew = e.Label;
+			if((pg != null) && (strNew != null) && (pg.Name != strNew))
 			{
-				pg.Name = e.Label;
+				pg.Name = strNew;
 				pg.Touch(true, false);
 				UpdateUIState(true);
 			}
diff --git a/KeePass/Forms/MainForm.resx b/KeePass/Forms/MainForm.resx
index 695b671..637d560 100644
--- a/KeePass/Forms/MainForm.resx
+++ b/KeePass/Forms/MainForm.resx
@@ -127,1437 +127,1429 @@
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
-        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAQ
-        TwEAAk1TRnQBSQFMAgEBRQEAAWwBAAEkAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
-        AwABIAEBAgABAQEAASAGAAEgAQEhAAGFAVIBRgH/AUUBEgEBAf8BRQESAQEB/wFFARIBAQH/AUUBEgEB
-        Af8BRQESAQEB/wGFAVIBRgH/4AABlgFqAWAB/wFfAT8BNAH/AWABSwFFAf8BYgFRAUwB/wOHAf8BawFd
-        AVgB/wFrAVoBVAH/AWEBQAE2Af8BnAFwAWYB/9wAAWsBSAE9Af8BQwEnAR8B/wFBASABFgH/AUEBIAEW
-        Af8BTAEvASUB/wFMAS8BJQH/AUwBLwElAf8BTAEvASUB/wFrAUgBPQH/3AABawFIAT0B/wFcAT0BMwH/
-        AWIBQwE5Af8BYgFDATkB/wFiAUUBOwH/AWIBRQE7Af8BYgFFATsB/wFiAUQBOwH/AWsBSAE9Af/cAAFr
-        AUgBPQH/AVwBPQE0Af8BYgFDATkB/wFmAUYBPQH/AY4BXgFUAf8BZgFIAT4B/wFiAUUBOwH/AWIBRQE7
-        Af8BawFIAT0B/9wAAWsBSAE9Af8BRwFDARYB/wFlAZEBQwH/AW4BTQE6Af8B6wH1AfgB/wGBAkUB/wFN
-        AS8BkAH/AUMBHQFIAf8BawFIAT0B/9wAAWsBSAE9Af8CZAFFAf8BmQGyAZQB/wHGAb0BugH/AcgBtgGx
-        Af8BxgG9AboB/wGZAZQBxgH/AWQBTAFuAf8BawFIAT0B/9wAAWsBSAE9Af8BLAESAQ0B/wEkAhQB/wE1
-        ARoBNAH/ATsCLwH/AUYCOgH/ASgCGAH/ASwBEgENAf8BawFIAT0B/9wAAWsBSAE9Af8BxwG8AbgB/wHw
-        AeEB3QH/AfgB+QH6Af8B8AHiAd8B/wP4Af8B8AHkAeEB/wG+AbMBrwH/AWsBSAE9Af/cAAFrAUgBPQH/
-        AccBuQG1Af8B2AG2Aa0B/wH1AvMB/wHZAbsBswH/AfIB7gHtAf8B4AHBAbgB/wG5Aa4BqgH/AWsBSAE9
-        Af/cAAFrAUgBPQH/AcABtAG5Af8BXQFOAdwB/wHsAfsC/wGBAd0C/wHjAfIB3wH/AYABuwFjAf8BuQGu
-        AaoB/wFrAUgBPQH/3AABawFIAT0B/wG/AboBuwH/AWYBwAL/AfUC8wH/AdkBuwGzAf8B+AHvAe0B/wHg
-        AcEBuQH/AbkBrgGqAf8BawFIAT0B/9wAAWsBSAE9Af8BxAG8AbsB/wG5AeIC/wHzAfgB+gH/AewB4QHf
-        Af8B9QH3AfgB/wHuAeMB4QH/Ab8BswGvAf8BawFIAT0B/9wAAWsBSAE9Af8BLAESAQ0B/wEjAhIB/wE7
-        Ai4B/wFFAjkB/wFAAjMB/wEjAhIB/wEsARIBDQH/AWsBSAE9Af/cAAGEAVIBRwH/AUcBFgEFAf8BgAFQ
-        AUYB/wG2Aa0BqgH/A8wB/wG2Aa0BqgH/AYABUAFGAf8BRwEWAQUB/wGKAVkBTQH/3AAB0gHFAcEB/wFF
-        ARIBAQH/AUUBEgEBAf8BRQESAQEB/wFFARIBAQH/AUUBEgEBAf8BOgEYAVsB/wFCAREBCQH/AdIBxQHB
-        Af/kAAPHAf8DRQH/A14B/wOwAf8DbAH/Az8B/wOJAf9sAAGFAb4BhQH/AS0BlwEtAf9sAAOuAf8DSgH/
-        A0oB/wNJAf8DSQH/A0kB/wNJAf8DSQH/A04B/2gAAYUBvgGFAf8BLQGXAS0B/2wAA1YB/wNYAf8DVgH/
-        A1MB/wNOAf8DSgH/A0kB/wNJAf8DSQH/A1sB/xwAA+8B/wPhAf8MAAPXAf8D/AH/HAABvwHdAb8B/wFl
-        AbUBZQH/AS0BlwEtAf8BFgGLARYB/wEWAYsBFgH/AQABaQEAAf8BFgGLARYB/wEtAZcBLQH/AbEB1QGx
-        Af9cAANvAf8DYwH/A2MB/wNiAf8DXgH/A1kB/wNTAf8DTAH/A0kB/wNJAf8DSQH/A8oB/xgAA04B/wMD
-        Af8D8gH/BAADwQH/AwAB/wOvAf8cAAEtAZcBLQH/AQABaQEAAf8BhQG+AYUB/wHmAfEB5gH/AYUBvgGF
-        Af8BLQGXAS0B/wG/Ad0BvwH/ARYBiwEWAf8BAAFpAQAB/wGUAcYBlAH/DAABxQHrAcUB/wG2AecBtgH/
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAO
+        TQEAAk1TRnQBSQFMAgEBRQEAAVQBAAFUAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
+        AwABIAEBAgABAQEAASAGAAEgAQEhAAGFAUwBQAH/AT8BDAEAAf8BPwEMAQAB/wE/AQwBAAH/AT8BDAEA
+        Af8BPwEMAQAB/wGFAUwBQAH/4AABlgFkAVoB/wFZATkBLgH/AVoBRQE/Af8BXAFLAUYB/wOHAf8BZQFX
+        AVIB/wFlAVQBTgH/AVsBOgEwAf8BnAFqAWAB/9wAAWUBQgE3Af8BPQEhARkB/wE7ARoBEAH/ATsBGgEQ
+        Af8BRgEpAR8B/wFGASkBHwH/AUYBKQEfAf8BRgEpAR8B/wFlAUIBNwH/3AABZQFCATcB/wFWATcBLQH/
+        AVwBPQEzAf8BXAE9ATMB/wFcAT8BNQH/AVwBPwE1Af8BXAE/ATUB/wFcAT4BNQH/AWUBQgE3Af/cAAFl
+        AUIBNwH/AVYBNwEuAf8BXAE9ATMB/wFgAUABNwH/AY4BWAFOAf8BYAFCATgB/wFcAT8BNQH/AVwBPwE1
+        Af8BZQFCATcB/9wAAWUBQgE3Af8BQQE9ARAB/wFfAZEBPQH/AWgBRwE0Af8B6wH1AfgB/wGBAj8B/wFH
+        ASkBkAH/AT0BFwFCAf8BZQFCATcB/9wAAWUBQgE3Af8CXgE/Af8BmQGyAZQB/wHGAb0BugH/AcgBtgGx
+        Af8BxgG9AboB/wGZAZQBxgH/AV4BRgFoAf8BZQFCATcB/9wAAWUBQgE3Af8BJgEMAQcB/wEeAg4B/wEv
+        ARQBLgH/ATUCKQH/AUACNAH/ASICEgH/ASYBDAEHAf8BZQFCATcB/9wAAWUBQgE3Af8BxwG8AbgB/wHw
+        AeEB3QH/AfgB+QH6Af8B8AHiAd8B/wP4Af8B8AHkAeEB/wG+AbMBrwH/AWUBQgE3Af/cAAFlAUIBNwH/
+        AccBuQG1Af8B2AG2Aa0B/wH1AvMB/wHZAbsBswH/AfIB7gHtAf8B4AHBAbgB/wG5Aa4BqgH/AWUBQgE3
+        Af/cAAFlAUIBNwH/AcABtAG5Af8BVwFIAdwB/wHsAfsC/wGBAd0C/wHjAfIB3wH/AYABuwFdAf8BuQGu
+        AaoB/wFlAUIBNwH/3AABZQFCATcB/wG/AboBuwH/AWABwAL/AfUC8wH/AdkBuwGzAf8B+AHvAe0B/wHg
+        AcEBuQH/AbkBrgGqAf8BZQFCATcB/9wAAWUBQgE3Af8BxAG8AbsB/wG5AeIC/wHzAfgB+gH/AewB4QHf
+        Af8B9QH3AfgB/wHuAeMB4QH/Ab8BswGvAf8BZQFCATcB/9wAAWUBQgE3Af8BJgEMAQcB/wEdAgwB/wE1
+        AigB/wE/AjMB/wE6Ai0B/wEdAgwB/wEmAQwBBwH/AWUBQgE3Af/cAAGEAUwBQQH/AUEBEAEAAf8BgAFK
+        AUAB/wG2Aa0BqgH/A8wB/wG2Aa0BqgH/AYABSgFAAf8BQQEQAQAB/wGKAVMBRwH/3AAB0gHFAcEB/wE/
+        AQwBAAH/AT8BDAEAAf8BPwEMAQAB/wE/AQwBAAH/AT8BDAEAAf8BNAESAVUB/wE8AQsBAwH/AdIBxQHB
+        Af/kAAPHAf8DPwH/A1gB/wOwAf8DZgH/AzkB/wOJAf9sAAGFAb4BhQH/AScBlwEnAf9sAAOuAf8DRAH/
+        A0QB/wNDAf8DQwH/A0MB/wNDAf8DQwH/A0gB/2gAAYUBvgGFAf8BJwGXAScB/2wAA1AB/wNSAf8DUAH/
+        A00B/wNIAf8DRAH/A0MB/wNDAf8DQwH/A1UB/xwAA+8B/wPhAf8MAAPXAf8D/AH/HAABvwHdAb8B/wFf
+        AbUBXwH/AScBlwEnAf8BEAGLARAB/wEQAYsBEAH/AQABYwEAAf8BEAGLARAB/wEnAZcBJwH/AbEB1QGx
+        Af9cAANpAf8DXQH/A10B/wNcAf8DWAH/A1MB/wNNAf8DRgH/A0MB/wNDAf8DQwH/A8oB/xgAA0gB/wMA
+        Af8D8gH/BAADwQH/AwAB/wOvAf8cAAEnAZcBJwH/AQABYwEAAf8BhQG+AYUB/wHmAfEB5gH/AYUBvgGF
+        Af8BJwGXAScB/wG/Ad0BvwH/ARABiwEQAf8BAAFjAQAB/wGUAcYBlAH/DAABxQHrAcUB/wG2AecBtgH/
         AbQB5gG0Af8BtAHlAbQB/wG1AeYBswH/AbMB5QGyAf8BsQHlAbIB/wGxAeUBsgH/AbAB5AGvAf8BrwHj
-        Aa4B/wGxAeQBrgH/AawB4gGqAf8BqgHiAacB/wGpAeEBpgH/AacB4AGmAf8B2AHuAdcB/wwAA20B/wOA
-        Af8DgAH/A20B/wNqAf8DYwH/A10B/wNUAf8DTAH/A0kB/wNJAf8DSgH/FAAD3wH/AwAB/wMAAf8DiAH/
-        BAADNwH/AwAB/wM8Af8cAAEtAZcBLQH/AUIBogFCAf8IAAGFAb4BhQH/AS0BlwEtAf8EAAGFAb4BhQH/
-        AQABaQEAAf8BFgGLARYB/wwAAZoB4QGbAf8BogHkAaYB/wG4AesBvAH/AboB6wG9Af8BuQHsAbwB/wG7
+        Aa4B/wGxAeQBrgH/AawB4gGqAf8BqgHiAacB/wGpAeEBpgH/AacB4AGmAf8B2AHuAdcB/wwAA2cB/wOA
+        Af8DgAH/A2cB/wNkAf8DXQH/A1cB/wNOAf8DRgH/A0MB/wNDAf8DRAH/FAAD3wH/AwAB/wMAAf8DiAH/
+        BAADMQH/AwAB/wM2Af8cAAEnAZcBJwH/ATwBogE8Af8IAAGFAb4BhQH/AScBlwEnAf8EAAGFAb4BhQH/
+        AQABYwEAAf8BEAGLARAB/wwAAZoB4QGbAf8BogHkAaYB/wG4AesBvAH/AboB6wG9Af8BuQHsAbwB/wG7
         AewBwAH/AboB6wG/Af8BugHrAb0B/wG7AesBvgH/AbkB6gG8Af8BuQHqAbwB/wG4AeoBvAH/AbcB6gG5
-        Af8BtAHpAbcB/wFtAdsBggH/AcUB5gHEAf8IAAO1Af8DiQH/A4sB/wOLAf8DiAH/A4MB/wNtAf8DZQH/
-        A10B/wNTAf8DSgH/A0kB/wNJAf8UAANdAf8DAAH/AzUB/wMlAf8DvAH/AwAB/wMAAf8DJgH/A+EB/xgA
-        AZQBxgGUAf8BvwHdAb8B/wgAAYUBvgGFAf8BLQGXAS0B/wQAAUIBogFCAf8BAAFpAQAB/wEAAWkBAAH/
+        Af8BtAHpAbcB/wFnAdsBggH/AcUB5gHEAf8IAAO1Af8DiQH/A4sB/wOLAf8DiAH/A4MB/wNnAf8DXwH/
+        A1cB/wNNAf8DRAH/A0MB/wNDAf8UAANXAf8DAAH/Ay8B/wMfAf8DvAH/AwAB/wMAAf8DIAH/A+EB/xgA
+        AZQBxgGUAf8BvwHdAb8B/wgAAYUBvgGFAf8BJwGXAScB/wQAATwBogE8Af8BAAFjAQAB/wEAAWMBAAH/
         AdkB6gHZAf8IAAGYAeABmwH/AcoB7wHRAf8B+gL+Af8B+gL+Af8B+gL+Af8B/QH/Af4F/wHLAc4B7gH/
-        AWoBhAHQAf8BvQHCAd4B/wFvAYoB1wH/AagBrAHXAf8B+AH+AfwB/wH1Af4B+gH/AY8B3wGVAf8BwwHl
-        AcMB/wgAA4YB/wOTAf8DmAH/A5gB/wOTAf8DjQH/A4UB/wNsAf8DYgH/A1gB/wNOAf8DSQH/A0kB/wOn
-        Af8MAAPoAf8DAAH/AwAB/wPFAf8DkQH/AwIB/wMAAf8DUAH/A6wB/wNwAf8oAAFlAbUBZQH/ARYBiwEW
-        Af8BLQGXAS0B/wEAAWkBAAH/AQABaQEAAf8BFgGLARYB/wwAAZwB4gGfAf8BxwHvAdAB/wHxAf4B/AH/
-        AfEB/gH8Af8B8QH+AfwB/wH6Af8B/gX/AeoB7QH8Af8BAAE1AfgB/wGbAasB3QH/AQ0BRAH4Af8BZAGL
+        AWQBhAHQAf8BvQHCAd4B/wFpAYoB1wH/AagBrAHXAf8B+AH+AfwB/wH1Af4B+gH/AY8B3wGVAf8BwwHl
+        AcMB/wgAA4YB/wOTAf8DmAH/A5gB/wOTAf8DjQH/A4UB/wNmAf8DXAH/A1IB/wNIAf8DQwH/A0MB/wOn
+        Af8MAAPoAf8DAAH/AwAB/wPFAf8DkQH/AwAB/wMAAf8DSgH/A6wB/wNqAf8oAAFfAbUBXwH/ARABiwEQ
+        Af8BJwGXAScB/wEAAWMBAAH/AQABYwEAAf8BEAGLARAB/wwAAZwB4gGfAf8BxwHvAdAB/wHxAf4B/AH/
+        AfEB/gH8Af8B8QH+AfwB/wH6Af8B/gX/AeoB7QH8Af8BAAEvAfgB/wGbAasB3QH/AQcBPgH4Af8BXgGL
         AeMB/wHrAf0B9wH/AecB/QH0Af8BjgHfAZcB/wHBAeYBwgH/CAADlQH/A58B/wOkAf8DpAH/A50B/wOV
-        Af8DiwH/A4EB/wNnAf8DXQH/A1EB/wNJAf8DSQH/A2IB/wwAA2cB/wMAAf8DLgH/BAADywH/AwAB/wMA
-        Af8D2AH/BAADJgH/A/wB/xgAAeYB8QHmAf8BVAGsAVQB/wEWAYsBFgH/AQABaQEAAf8BAAFpAQAB/wEA
-        AWkBAAH/AQABaQEAAf8BAAFpAQAB/wFCAaIBQgH/DAABnAHiAZ8B/wHFAe4BzgH/Ae0B+wH4Af8B7QH7
-        AfkB/wHsAfsB+QH/AfUB/gH9Af8B9wH+Af0B/wH8Av4B/wFTAW8B9AH/AQoBKgHXAf8BAAEfAdEB/wHh
+        Af8DiwH/A4EB/wNhAf8DVwH/A0sB/wNDAf8DQwH/A1wB/wwAA2EB/wMAAf8DKAH/BAADywH/AwAB/wMA
+        Af8D2AH/BAADIAH/A/wB/xgAAeYB8QHmAf8BTgGsAU4B/wEQAYsBEAH/AQABYwEAAf8BAAFjAQAB/wEA
+        AWMBAAH/AQABYwEAAf8BAAFjAQAB/wE8AaIBPAH/DAABnAHiAZ8B/wHFAe4BzgH/Ae0B+wH4Af8B7QH7
+        AfkB/wHsAfsB+QH/AfUB/gH9Af8B9wH+Af0B/wH8Av4B/wFNAWkB9AH/AQQBJAHXAf8BAAEZAdEB/wHh
         AeMB7QH/Af0C/gH/AfwB/gH9Af8BjwHgAZgB/wG/AeUBwAH/CAADmgH/A6YB/wOuAf8DrgH/A6QB/wOa
-        Af8DjgH/A4MB/wNoAf8DXgH/A1MB/wNJAf8DSQH/A1EB/wgAA/AB/wMBAf8DAAH/A7YB/wQAA04B/wMA
-        Af8DRQH/CAADZgH/A7IB/xQAAdkB6gHZAf8BFgGLARYB/wEAAWkBAAH/AQABaQEAAf8BAAFpAQAB/wEA
-        AWkBAAH/AQABaQEAAf8BAAFpAQAB/wFCAaIBQgH/EAABnAHiAaAB/wG1Ad8BvgH/AdAB2wHZAf8BzgHa
-        AdgB/wHKAdYB1AH/Ad4B6wHoAf8B8QH+AfwB/wH7Av4B/wEkAVEB8wH/AQABGAHGAf8BAAETAc0B/wG3
-        AbkB3QX/A/4B/wGTAeABnAH/AbwB4wG9Af8IAAOVAf8DpAH/A6wB/wOsAf8DogH/A40B/wNtAf8DgAH/
-        A2gB/wNdAf8DUwH/A0kB/wNJAf8DhQH/CAADhQH/AwAB/wMjAf8EAAPiAf8DAAH/AwAB/wMeAf8D+wH/
-        BAAD1gH/A0EB/xQAAVQBrAFUAf8BAAFpAQAB/wEAAWkBAAH/AQABaQEAAf8BFgGLARYB/wEWAYsBFgH/
+        Af8DjgH/A4MB/wNiAf8DWAH/A00B/wNDAf8DQwH/A0sB/wgAA/AB/wMAAf8DAAH/A7YB/wQAA0gB/wMA
+        Af8DPwH/CAADYAH/A7IB/xQAAdkB6gHZAf8BEAGLARAB/wEAAWMBAAH/AQABYwEAAf8BAAFjAQAB/wEA
+        AWMBAAH/AQABYwEAAf8BAAFjAQAB/wE8AaIBPAH/EAABnAHiAaAB/wG1Ad8BvgH/AdAB2wHZAf8BzgHa
+        AdgB/wHKAdYB1AH/Ad4B6wHoAf8B8QH+AfwB/wH7Av4B/wEeAUsB8wH/AQABEgHGAf8BAAENAc0B/wG3
+        AbkB3QX/A/4B/wGTAeABnAH/AbwB4wG9Af8IAAOVAf8DpAH/A6wB/wOsAf8DogH/A40B/wNnAf8DgAH/
+        A2IB/wNXAf8DTQH/A0MB/wNDAf8DhQH/CAADhQH/AwAB/wMdAf8EAAPiAf8DAAH/AwAB/wMYAf8D+wH/
+        BAAD1gH/AzsB/xQAAU4BrAFOAf8BAAFjAQAB/wEAAWMBAAH/AQABYwEAAf8BEAGLARAB/wEQAYsBEAH/
         AYUBvgGFAf8B2QHqAdkB/xQAAZ8B4wGiAf8BswHeAb0B/wHNAdoB1wH/AcwB2QHXAf8ByQHUAdMB/wHS
-        Ad4B3QH/AfEB/gH8Af8B+QL+Af8BhAGsAfoB/wERAUEB4AH/ATMBTwHjAf8B+AH7AfoB/wH7Af4B/QH/
-        AfoB/gH8Af8BkwHhAZwB/wG7AeQBvAH/CAADsQH/A5wB/wOhAf8DkwH/A4gB/wOYAf8DVAH/A4gB/wNe
-        Af8DVAH/A08B/wNJAf8DRwH/CAAD9AH/AwYB/wMAAf8DqAH/BAADYAH/AwAB/wM2Af8DgQH/A5sB/wgA
-        AzIB/wPlAf8QAAEtAZcBLQH/AQABaQEAAf8BAAFpAQAB/wGUAcYBlAH/AWUBtQFlAf8BLQGXAS0B/wgA
+        Ad4B3QH/AfEB/gH8Af8B+QL+Af8BhAGsAfoB/wELATsB4AH/AS0BSQHjAf8B+AH7AfoB/wH7Af4B/QH/
+        AfoB/gH8Af8BkwHhAZwB/wG7AeQBvAH/CAADsQH/A5wB/wOhAf8DkwH/A4gB/wOYAf8DTgH/A4gB/wNY
+        Af8DTgH/A0kB/wNDAf8DQQH/CAAD9AH/AwAB/wMAAf8DqAH/BAADWgH/AwAB/wMwAf8DgQH/A5sB/wgA
+        AywB/wPlAf8QAAEnAZcBJwH/AQABYwEAAf8BAAFjAQAB/wGUAcYBlAH/AV8BtQFfAf8BJwGXAScB/wgA
         AdkB6gHZAf8QAAGfAeMBowH/AcAB7gHKAf8B4wHyAe8B/wHSAeAB3QH/Ac8B3gHbAf8B0wHhAd0B/wHV
         AeEB3gH/AdQB4AHdAf8B0AHdAdoB/wHRAd4B2wH/Ac4B3AHYAf8BzQHcAdQB/wHLAd8B1QH/AdkB9AHn
-        Af8BjwHgAZgB/wG8AeQBvQH/DAADygH/A5gB/wOGAf8DjgH/A4EB/wNAAf8DbAH/A2IB/wNWAf8DTAH/
-        A1MB/wwAA5AB/wMAAf8DCgH/BAAD6AH/AwAB/wMAAf8DuAH/A+4B/wMdAf8D8wH/BAADiwH/A2UB/xAA
-        AUIBogFCAf8BAAFpAQAB/wEtAZcBLQH/BAABhQG+AYUB/wEtAZcBLQH/CAABLQGXAS0B/wGFAb4BhQH/
+        Af8BjwHgAZgB/wG8AeQBvQH/DAADygH/A5gB/wOGAf8DjgH/A4EB/wM6Af8DZgH/A1wB/wNQAf8DRgH/
+        A00B/wwAA5AB/wMAAf8DBAH/BAAD6AH/AwAB/wMAAf8DuAH/A+4B/wMXAf8D8wH/BAADiwH/A18B/xAA
+        ATwBogE8Af8BAAFjAQAB/wEnAZcBJwH/BAABhQG+AYUB/wEnAZcBJwH/CAABJwGXAScB/wGFAb4BhQH/
         DAABnQHhAaEB/wG+Ae0ByAH/AeoB/AH4Af8B1wHnAeIB/wHJAdkB0wH/AcgB2AHTAf8ByQHYAdMB/wHT
         AeIB3QH/AckB2AHUAf8BwAHTAcwB/wHEAdQBzgH/AcIB1AHKAf8B3AH1AekB/wHgAfwB7wH/AYsB3gGX
-        Af8BugHiAbsB/xgAA5MB/wNbAf8DRwH/A9MB/wPJAf8D2QH/EAADXwH/AwAB/wMAAf8DAAH/A8UB/wMd
-        Af8DAAH/AwAB/wM6Af8DRQH/AwAB/wMfAf8DxAH/AxAB/wMAAf8DVAH/DAABvwHdAb8B/wEAAWkBAAH/
-        ARYBiwEWAf8BzAHkAcwB/wGFAb4BhQH/AS0BlwEtAf8EAAGUAcYBlAH/AQABaQEAAf8BhQG+AYUB/wwA
+        Af8BugHiAbsB/xgAA5MB/wNVAf8DQQH/A9MB/wPJAf8D2QH/EAADWQH/AwAB/wMAAf8DAAH/A8UB/wMX
+        Af8DAAH/AwAB/wM0Af8DPwH/AwAB/wMZAf8DxAH/AwoB/wMAAf8DTgH/DAABvwHdAb8B/wEAAWMBAAH/
+        ARABiwEQAf8BzAHkAcwB/wGFAb4BhQH/AScBlwEnAf8EAAGUAcYBlAH/AQABYwEAAf8BhQG+AYUB/wwA
         AaAB4wGjAf8BnQHkAaIB/wG0AesBuwH/AaUB3QGrAf8BnwHWAaQB/wGeAdUBogH/AaIB2wGnAf8BowHa
-        AagB/wGgAdoBpQH/AZsB1wGiAf8BnAHaAaEB/wGcAdoBoQH/AaIB5AGpAf8BnQHjAaQB/wFlAdcBbQH/
-        AbcB4QG4Af8IAAPAAf8DjgH/A6IB/wOQAf8DkAH/A9EB/wPZAf9sAAGxAdUBsQH/AS0BlwEtAf8BFgGL
-        ARYB/wEWAYsBFgH/ARYBiwEWAf8BFgGLARYB/wEWAYsBFgH/AUIBogFCAf8BvwHdAb8B/wwAAcgB6wHI
+        AagB/wGgAdoBpQH/AZsB1wGiAf8BnAHaAaEB/wGcAdoBoQH/AaIB5AGpAf8BnQHjAaQB/wFfAdcBZwH/
+        AbcB4QG4Af8IAAPAAf8DjgH/A6IB/wOQAf8DkAH/A9EB/wPZAf9sAAGxAdUBsQH/AScBlwEnAf8BEAGL
+        ARAB/wEQAYsBEAH/ARABiwEQAf8BEAGLARAB/wEQAYsBEAH/ATwBogE8Af8BvwHdAb8B/wwAAcgB6wHI
         Af8BtAHmAbMB/wG1AeYBtAH/AbYB5wG2Af8BtQHnAbYB/wG1AeYBtAH/AbcB5wG4Af8BtwHmAbUB/wG1
         AeUBtAH/AbYB5QG1Af8BtwHmAbYB/wG1AeMBtAH/AbIB4wGyAf8BtAHjAbQB/wGyAeEBsQH/AdkB7gHZ
-        Af8EAANeAf8DWwH/A20B/wNqAf8DjgH/DAAD2QH/cAAB5gHxAeYB/wFlAbUBZQH/AS0BlwEtAf8B2QHq
-        AdkB/2AAA+UB/wPqAf8UAAPwAf90AAGFAb4BhQH/AS0BlwEtAf9wAAMgAS4DTgGZA1MBqgM8AWgDGAEh
-        IAADGAEhA1QBqwNFAX8YAAM5AV8DVgG2AykBPxQAAY8BygHkAf8BYAG5AdkB/wFaAbYB2AH/AWIBuQHZ
-        Af8BlgHNAeUB/wGYAdAB6AH/AWIBugHZAf8BWgG2AdgB/wFgAbkB2QH/AY0BxwHgAf8MAALsAfMB/0gA
-        AycBOgNVAbEBPwFIAWIB9gGWAa8B1QH/AZgBpQHMAf8BQgFJAYwB/QNUAe4DVwHCA0QBegMhATEDAQEC
-        EAADQAFxASQBZgHjAf8BIgFAAZYB/QNUAa4DEAEWDAADTAGTAScBXwGRAfsBGwFHAakB/wM8AWcQAAHH
-        AeoB+gH/AS0BtQHpAf8BKwG2AewB/wErAbYB7AH/ASsBtgHsAf8BKAGtAeEB/wEnAasB3gH/ASsBtgHs
-        Af8BKwG2AewB/wErAbYB7AH/ASwBswHnAf8BxQHpAfgB/wgAAukB8wH/Ao0BxwH/PAADEQEXA1UBtAE6
-        AlwB+AEAAW4BJQH/AVYBrQFsAf8B8wf/AfwD/wHVAdsB8gH/AZoBqQHPAf8BVwFjAX8B/gFFAUgBUgH0
-        A1sB0AMvAUoMAAIhASIBMQFUAWIBqgH7AY0B7wL/ARYBVAG/Af8DXgHaAycBOgMWAR8DWQHMATQBkAHW
-        Af8BlAHwAv8CTAFoAfMDFgEfFAABCQEaASIB/wELAUIBWgH/ASQBZgGSAf8BKQFdAYMB/wEXASMBKQH/
-        ARcBIwEoAf8BKQFdAYMB/wEiAWQBkAH/AQsBQgFaAf8BBwEZASAB/xAAAtMB7AH/AlAByAH/AtQB/gH/
-        NAADPwFtAXwBgwG7Af4BQAHVAYkB/wEAAakBBQH/AUkBmwFaAf8B1QH0Av8B8gH9Af4B/wHdAfMB+QH/
-        AesD/wHvA/8B0QH7Av8BogHiAfsB/wE3AV0BtwH/A0wBkxAAAloBXQHTAY8B6QH+Af8BiAHxAv8BKQGR
-        Ad8B/wFJAUwBWQHyAU8BUwFkAfEBQAG1AfMB/wGXAf0C/wFmAb0B7gH/A1kBwxAAA2sB/wOCAf8DAAH/
-        A4cB/wP+Ef8D/QH/A2sB/wMAAf8DZgH/A4IB/wgAAvgB/gH/AisB1wH/AkcB2AH/ApoC/wLlAv8sAANA
-        AXEBfwGXAcQB/gFAAdABhgH/AQABnwEaAf8BQAGPAWEB/wHLAe8C/wHbAfEB+AH/AaEBoAGMAf8BwAHS
-        AcYB/wHIAfYC/wGYAc0B9AH/AYkB0gH+Af8BOwGCAcoB/wNMAZMQAAJLAUwBjwFJAbMB8QH/AV4B4gL/
-        AVwB4gL/ATMBtAH4Af8BPgHFAfwB/wFfAeEC/wFdAeMC/wFCAX8BpgH+A0EBcxMAAf8DAAH/AwMB/wP8
-        Gf8D9wH/AwAB/wMAAf8DAAH/DAACjwH6Af8CUAHjAf8CSAHaAf8CggL/AsEC/ygAA0ABcAF7AYkBvwH+
-        ATcBywGKAf8BAAGxAQYB/wExAZEBRAH/Ab8B5AL/AdMB7gH5Af8BzAGyAYsB/wHMAcsBqQH/AZoB3QL/
-        AZsBqgGuAf8BrgG6AbQB/wEbAV0ByQH/A0wBkxAAAyMBMwFBAWoBlgH5ATEB2AL/ASsBygL/ATIB1QL/
-        ATAB0QL/ASkBywL/ATcB0QH+Af8BTgFXAWcB8gMSARkQAAMQAf8DAAH/Aych/wMYAf8DAAH/AygB/wwA
-        As4B/AH/Ak8B9AH/AlUB5gH/AkEB1AH/AoAC/wKnAv8kAANAAnABhQHDAf4BOgG8AYAB/wELAZABEQH/
-        AUwBmQGSAf8BrwHiAv8B1gHxAfoB/wHBAY4BQQH/AbsBsAGLAf8BgAHTAv8BpQGeAYMB/wHKAaUBRwH/
-        AQ8BVwHHAf8DTQGWEAADQAFxASMBXwGWAfsBCwHRAv8BAQHEAv8BAwHEAv8BAwHEAv8BAAHHAv8BFQHH
-        Af0B/wEpAUMBZgH6A0gBhAMBAQIMAANOAf8DAAH/AyYh/wMXAf8DAAH/A2cB/xAAAoUB8wH/AoAC/wJe
-        Ae4B/wI7AdAB/wJwAf4B/wKWAv8C7gL/HAADPAFnAWABgAHHAf4BZwHGAesB/wFoAbwB5gH/AYMByAH8
-        Af8BlAHWAv8BiwHZAfwB/wFNAaYB0AH/AUYBpgHgAf8BRwG5Av8BSQGOAcAB/wFVAYgBoQH/AQoBVAHF
-        Af8DTgGUAwEBAggAAlABUgGkASsBVgGyAf0BHQHQAfkB/wEeAdQC/wEgAdEC/wEhAdEC/wEhAdEC/wEg
-        AdEC/wEeAdcC/wEbAcAB7gH/ARMBSwF/Af4DVgG7AxQBGwgAA7QB/wMAAf8DBh3/A/sB/wMAAf8DAAH/
-        A80B/xQAApkC/wKAAv8CZQH1Af8COwHSAf8CbwH9Af8CigL/AuEC/xQAAzIBUANXAb8BRwGWAdoB/wFh
-        AcQC/wFfAb0C/wFrAckC/wFVAZ8B+AH/ARcBNQHcAf8BHQFMAeQB/wESAUoB4wH/ARABTwHjAf8BCgFa
-        AfIB/wEAAV8B/AH/AQEBPwHIAf8CTQFXAe8DVAGvAiEBIgExAlsBXgHZAS0BqQHqAf8BWAH2Av8BZQHr
-        Av8BZwHmAv8BZQHlAv8BYgHkAv8BYgHkAv8BZgHlAv8BZgHnAv8BYgHwAv8BTwHsAv8BHQGDAbUB/wNY
-        AeMDNQFXCAADFwH/AwAB/wPNGf8DvwH/AwAB/wMuAf8cAAKUAv8CgAL/AmoB+QH/Aj0B1wH/Am0B/AH/
-        AoQC/wLXAv8QAAJYAWAB6wIAAaEB/wE2AYYB6AH/AVABuwL/AVMBtwL/AVgBuwH+Af8BKwFEAe0B/wEQ
-        ARIB1gH/ARUBGgHTAf8BFAEYAdIB/wEUARgB0gH/ARoBIAHVAf8BHgEnAdkB/wEeASsB2QH/ASEBJgHO
-        Af8DXAHcAlkBaAHsAVoB2wL/AYoD/wGZAfUC/wGWAfMB/gH/AZMB9QL/AZkB8gL/AacB8AL/AaQB7wL/
-        AZQB8gL/AZUB9AL/AZcB8gH+Af8BlwH4Av8BgwP/AUoBsgHdAf8DXAHnCAADugH/AwAB/wM6Af8B+wL8
-        Af8BzwHtAfoB/wGkAd0B9gH/AagB3wH3Af8B2wHyAfsB/wP5Af8DLgH/AwAB/wPOAf8gAAKVAv8CgAL/
-        Am4B/AH/AkEB2wH/AmwB+wH/AoIC/wLWAv8MAANOAZQBAgEAAb0B/wEfAVYB6AH/AUQBuAL/AUcBtgL/
-        ATcBgAH2Af8BFwEgAeIB/wEXASoB3QH/ARYBKAHeAf8BFgEpAd8B/wEUAScB3gH/ARQBJQHeAf8BEwEk
-        Ad4B/wEVASMB5wH/AS0BLwF6AfkDKwFDA1kBxwFYAWEBZwHmAlsBYQHhAlsBYQHhAlcBXgHfAVUBWQF5
-        AfIBkwHbAfQB/wHSAf0C/wHJAf4C/wFkAbIB2gH/AlQBYwHuAl8BYQHgAlsBYQHhAl0BYQHiAl4BZQHl
-        A1EBogwAA28B/wMAAf8BKwGLAa8B/wEhAaUB2AH/AR8BoQHTAf8BHwGiAdQB/wEjAagB2wH/ASkBZwGR
-        Af8DAAH/A7kB/ygAApoC/wKAAv8CcAH+Af8CRgHhAf8CawH7Af8ChwL/AuUC/wgAAwQBBgJcAWEB3AEH
-        ARQBuQH/AS4BmQH1Af8BNQGjAv8BHwEyAeIB/wEYASUB2AH/ARgBKAHaAf8BFwEnAdsB/wEWASUB2gH/
-        ARYBJQHbAf8BFQElAdkB/wEXAScB5AH/AQ4BFwG8Af8DTgGZGAACMAExAU0BcAF/Ab8B/gHvA/8B2gH8
-        Av8BTAFNAXcB+gMkATUgAAPOAf8DAAH/AR8BagGZAf8BIwGRAbsB/wEsAbQB6QH/ASoBrgHhAf8BLAGa
-        AcMB/wEPAUkBYgH/AwAB/wPzAf8sAAKpAv8CgAL/AoAC/wJNAeUB/wKFAfoB/wKuAv8C+AL/CAADLQFG
-        AiEBcAH7AQkBNgG9Af8BJAFbAfAB/wEdASIB1gH/ARsBJwHTAf8BGwEnAdUB/wEZAScB2QH/ARkBJAHU
-        Af8BGAEkAdQB/wEYASUB2AH/ARgBIgHcAf8BXgJfAeADBwEKGAADCgEOAVUBXAFlAeoB9AP/Ac4B5QH8
-        Af8DXAHcAwQBBicAAf8DMgH/AygB/wNKAf8CUgFTAf8DSgH/AwcB/wMhAf80AALGAv8ChQL/AoAC/wJV
-        AesB/wKDAfoB/wK+Av8MAAJSAVQBpgINAaAB/wEoATUB5gH/ASABMAHkAf8BHQEsAeAB/wEdAS8B6AH/
-        ARoBLQHoAf8BGgEpAeEB/wEYASkB4wH/ARoBKwHsAf8BJAEoAXUB/AMtAUUgAAJVAVYBtAHcAeoB/AH/
-        AakBuwHiAf8DUAGdKAADKwH/AwAB/wOkAf8DEwH/Ay4B/wOSAf8DAAH/A5AB/zgAAu8C/wKsAv8CgQL/
-        AmcB9wH/ApEC/wLkAv8IAAMMARACXgFlAeUBKQEtAZEB/gIrAX0B/AIrAXwB/AEhASMBjQH7ASEBIwGN
-        AfsCKQF7AfoCIQGNAfsBKAEpAXoB+gNOAZckAAM6AWIBrAGyAe4B/wF1AXsBkwH+Ay8BSigAA8sB/wMA
-        Af8DAAH/AwAB/wMAAf8DAAH/AywB/wP5Af9AAALqAv8CsAL/AoQC/wKiAv9YAAMMARACWwFhAeECXAFe
-        Ac4DBAEGLAAD2wH/A1kB/wMVAf8DIwH/A4IB/wP1Af9MAAL1Av8C1gL/DAADFAEbA1EBoQNMAZMDJAE1
-        AwMBBGgAAxABFgNbAdADWAHGAwkBDAQAAxkBIwMoATwDLQFGAy0BRgMpAT4DHwEsAwYBCDQAAw8BFANR
-        AaIDVgG+AzEBTxAAA1kByQE+Aa0BOAH/AToBhAEyAf8BQgFKAUIB9QNcAc4DRQF9Ax8BLBgAAV4CWAHd
-        AZQBXAEhAfsBkgFNASYB+gGTAU0BJgH6AZMBTQElAfoBkwFNASQB+gGTAU0BJAH6AZMBTQEjAfoBkwFN
-        ASIB+gGVAU0BIQH6AZUBTQEhAfoBlQFNASEB+gGVAU0BIQH6AZUBTQEhAfoBlAFIAR4B+wFhAlsB4QQA
-        AxIBGQNcAdQBAAGkAeIB/wEIAVQBmAH/A1kBwwNXAcIBZAJTAfEBdAE+AT0B+AF4AU0BKQH6AXgBTQEp
-        AfoBcwE+AT0B+AFfAUwBSgHzA1sB2QM8AWcwAANWAbkBCgE9AZYB/wEOATsBkgH/AVECUwHxAzYBWQgA
-        A0oBjAEjAZABQwH/AVgBsQGnAf8B3wHzAc8B/wG1AeEBqQH/AV0BqwFRAf8BMAF1ATIB/gFRAlMB8QNX
-        Ab8DLwFKEAABeAFfAUwB8wHuAaMBXAH/AewBsAGHAf8B7AGtAYEB/wHrAaoBbwH/AeoBqQFsAf8B6gGn
-        AWoB/wHqAaQBZwH/AekBogFkAf8B6QGgAWEB/wHpAZ4BXQH/AegBnAFaAf8B5wGaAVgB/wHkAZsBXAH/
-        Ae0BiwE4Af8BewFMAUQB8wQAAisBLAFDAQ8BUQGoAf0BAAH3Av8BEAHBAeoB/wFoATUBOwH/AfIBkQE0
-        Av8BtQFVAv8BvgFdAf8B7QGtAWUB/wH0AbQBXgL/Ab0BXAL/AbMBVAH/AegBiAE5Af8BaQE1ASoB+QM5
-        AV8oAAM/AW0BPQFLAaEB/QE/AZgB3wH/AQYBXgHeAf8BBgFHAb4B/wNWAb4EAAMzAVIBLQFxAUkB+gGL
-        AWoBuwH/Ae0BywH7Av8B+wHtAv8B+QH2Af8B+AH3AecB/wHaAeIBsgH/AZ4BxgFmAf8BQAGcATgB/wFN
-        AVQBTQHvAykBPgwAAXIBWAFTAfEB7AHEAawN/wH2AfkC/wH3AfsC/wH9A/8B+wH+Av8B9wH6Av8B9AH2
-        Af0B/wHwAfIB+QH/Ae8B7QH1Af8B5gHuAf0B/wHmAbwBqAH/AXQBUwFPAfEEAAMBAQICWAFiAekBAAHb
-        Af4B/wERAcQB5wH/AZ4BhQFrAv8BzAFpAv8BzQGDAf8B2wGwAZYB/wEcARkB1gH/ATwBLgGrAf8B8wHC
-        AYYC/wHIAYYC/wHSAYQB/wHdAW8BOgH/A1YBuyQAAw0BEgJeAWUB5QFNAaIB4wH/AbYB3wH9Af8BvgHf
-        Av8BSwFzAZwB/gNFAX8DDwEUAVgBYQFYAeYBKQHJAVoB/wGxAekB5wL/Ae8B5AH/AfEB5QHYAf8B8wHj
-        AdQB/wH2AeEBzQL/AeMByAH/AfsB0QGtAf8B0QG8AYEB/wFSAZMBOwH/A1gBywMEAQYIAAFyAVgBUwHx
-        AfUBzQGyAf8BxwHIAcwB/wGGAYABgQH/AbsCtwX/Ad8C3QH/AZICjAH/AY8BhwGIAf8BkQGJAYoB/wGP
-        AogB/wGOAYYBhwH/AYYCbwH/Aq8BtgH/Ae8BwgGmAf8BcgFTAU8B8QQAAzYBWQEeAV8BjwH7AQAB4wL/
-        ARABvwHiAf8BlQGEAYYC/wHUAZcC/wHZAaIB/wHYAbwBsAH/AR0BIQHoAf8BNAEwAdQB/wHwAdIBqAH/
-        AfgByQGKAv8BxQGGAf8B8QGnAWMB/wNbAcgkAANGAYEBKgFnAb0B/wGXAdAB/QH/Ad0B/AL/AbQBvgHP
-        Af8DVAGrBAADWAHGAU8BngFYAf8B0AHaAaoB/wH9AfEB4QH/AfEB5AHWAf8B8AHkAdUB/wHxAeABzAH/
-        AfQB1wG4Af8B8gHPAakB/wHVAbMBigH/AfcBxwGcAf8ByQHVAZsB/wE2AWoBKwH+A0oBiwgAAXIBWAFT
-        AfEB8gHKAa8B/wHmAekB7AH/AckByAHJAf8B4ALfAf8D/gH/Ae8C7QH/Ac4CzAH/AcwCyQH/AcwCxwH/
-        AcoCxQH/AckCwwH/AcQCvQH/AdIB0wHaAf8B7gG/AaMB/wFyAVMBTwHxBAADNAFUAQ8BUgGoAf0BAAHl
-        Av8BDwG/AeEB/wGTAYQBjwL/AeEBtQL/AeoBxwH/AeYB1gHMAf8CPAHgAf8BXwFXAdUB/wH8AewBxQH/
-        Ad4B1AGfAf8B/QHVAaUB/wHvAagBggH/A1YBtiAAAxIBGQJZAWQB7AFrAb4B9wH/AccB8wL/AZUBuQHY
-        Af8DVgG7CAABXgFlAV4B5QFFAYMBnAH/AfAB6wH7Av8B/gH7Af8B+wHsAeQB/wHzAeQB1AH/AfIB2wHC
-        Af8B9wHYAbcB/wHcAcABnQH/AeQBvQGRAf8B+gHOAaEB/wH+AegBzAH/AZkBzAGLAf8BQwFQAUEB9AMt
-        AUUEAAFyAVcBUwHxAe8ByAGtDf8B/AL6Hf8B+AH5Av8B6wG+AaIB/wFyAVMBTwHxBAADLQFFAQ8BUwF+
-        AfwBAAHhAv8BDwHAAeEB/wGYAY8BogL/AekBzAL/AfsB7AH/AvIB7QH/AUIBQAHZAf8BZQFhAdUD/wHw
-        Av8B9wHtAv8B6wHTAf8BtQF/AW0B/gM8AWggAANWAb4BQwGYAdsB/wGtAecC/wFjAagB1wH/A1kBwwMB
-        AQIIAAMQARYBPAE9ATwBaAFZAVwBWQHPAXABlAFzAfsB0QHpAdEB/wH2AfQB5gL/AekB0gH/AeIBxwGr
-        Af8B2wG9AZkB/wH3AdEBpgH/AfMB0gGtAf8B/QHgAckB/wHzAfoB5wH/AVgBqQFTAf8DWgHTAw8BFAFw
-        AVgBUwHxAfQBzgG0Af8C0wHWAf8BoAKcAf8ByQLHAf8D/gH/AegC5QH/AaoCpQH/AagCoQH/AagCogH/
-        AacCoAH/AaUCnwH/AZ8ClgH/AcEBwwHJAf8B9AHIAawB/wFyAVMBTwHxBAADUQGgAQABkwHTAf8BAAHr
-        Av8BDwG9AeAB/wGNAVkBawL/Ad8BygL/AfEB3gH/AeEBzQG8Af8BIgEmAbsB/wFFAUIBsAH/AfoB2AGv
-        Av8B6gHZAv8B1QHJAf8BXQJZAdIDBgEIBAADFAEbAy4BSAMJAQwMAANOAZgBKgFvAZsB/gGbAeEC/wFt
-        AbUB4wH/A1kBzAMGAQgYAAMYASEDSwGOAl4BWgHYAXcBjAFrAfoB2AHKAagB/wH4AdQBsQH/AfIB0wGx
-        Af8B8wHcAcIB/wHxAd4ByAL/AfQB7wH/AdcB9AHYAf8BNwF4ATEB/gNOAZcBcAFXAVMB8QHzAc4BtAH/
-        Ad4B4QHlAf8BuAG2AbcB/wHYAtYF/wHuAu0B/wHAAr4B/wG+ArsB/wG/ArwB/wG+ArkB/wG9ArkB/wG3
-        ArIB/wHPAdMB2QH/AfMByQGtAf8BcgFTAU8B8QMSARkBUgFWAV4B7QEAAckB/QH/AQAB4gH9Af8BFgHJ
-        AeoB/wFBATEBQQH5AZEBQQE1AfwBswKiAf8BVQGdAcAB/wE8AZYBxgH/AS4BjAG+Af8BTAGIAZ8B/wHD
-        AY4BbgH/AWUCXgHlAxsBJgQAAyABLgNYAeMCOQE4AfwDTwGcCAADTgGXASQBZgGSAf4BbwHNAv8BnwHb
-        Af4B/wFQAVgBYgHvAx0BKigAASsBLAErAUMBYQFpAV0B8AH+AfAB2AH/AfUB2wHEAf8B8gHhAdAB/wHz
-        AeYB2AL/AfAB7QH/Aa0B2gGtAf8BJgGkASsB/wNRAacBcAFWAVMB8QHwAcwBsw7/Av4h/wHwAccBrAH/
-        AXABUwFPAfEDUgGoAQABXQHCAf8BAAHiAv8BAAHZAfUB/wEaAd0B9wH/ARoBlwHHAf8BNQFIAXcB/gFc
-        AZ4BxwH/AYgB1wH9Af8BjQHUAfUB/wFvAcsB7gH/AUQBsQHiAf8BJgFgAZ8B/wNSAagIAANZAdcB1gHP
-        Ac0B/wG4AbQBsgH/Az4B+AM6AWEDTgGXAR8BZwGXAf4BWwHCAv8BqAHmAv8BTQF8AY8B/gNCAXYwAAM6
-        AWIBjwGvAYUB/AH/AfgB8AH/AfIB4wHUAv8B7wHrAf8BywHiAccB/wExAboBQQH/A1gB4wMVAR0BbwFW
-        AVMB8QH0AdABuAH/At0B3gH/AbYCsgH/AdYC0wX/Ae4C7QH/Ab4CuwH/Ab0CuQH/Ab8CugH/Ab4CuQH/
-        Ab0CuAH/AbkCsgH/AdQB1gHaAf8B9gHMAbAB/wFwAVMBTwHxAVkBWgFhAeQBAAG9Av8BAAHlAv8BAAHr
-        AfgB/wEtAfsB/QH/AYYD/wFLAZsBzAH/AYQBuQHiAf8BpQHjAv8BnAHaAf4B/wGWAdcB+gH/AY4B0gHz
-        Af8BTQG3AekB/wFYAVkBYAHrAxQBGwQAA2QB7AHXAdIB0wH/AcsByQHKAf8BjgGPAY4B/wFEAUEBMgH7
-        AW4BbwF1Af4BRAGVAckB/wGAAdMC/wFnAbIB4AH/A1kBxDgAAVUBVgFVAbEB5AH0AeUC/wH0AfEB/wHp
-        AegB2wH/AVcB1gFrAf8BQQFqAUEB+QMwAU0EAAFvAVYBUwHxAfYB0wG8Af8B0wHXAdsB/wGgAZ8BoAH/
-        A8kF/wPqAf8BqwKqAf8BqQGnAagB/wGrAakBqgH/AaoCqQH/AasCqAH/AaMBoQGiAf8ByQHPAdUB/wH5
-        AdEBtAH/AXABUwFRAfEBRAFMAW8B8wEAAcUC/wEAAeIC/wEAAf0C/wEtA/8BlAP/AWcBsAHQAf8BhQGm
-        Ac4B/wHCAe0C/wG3AeUC/wGmAd4C/wGYAdgB+gH/AYUB0wH9Af8BOwFaAWIB9gMdASoEAAMnAToDWAHL
-        A4gB/QKsAasB/wGqAakBpwH/Ab4BtwGxAf8BtgGwAaoB/wFjAZ0BvQH/AlUBXAHqAxgBITgAAw8BFANk
-        AecB8wH6AfUB/wGQAeUBnwH/ATEBtAE/Af8DSAGHCAABbwFVAVMB8QHtAccBrgH/AfgB8QHuAf8B+AHw
-        Ae0B/wH3AfEB7gH/AfcB8gHvAf8B+AHxAe8B/wH4AfEB7gH/AfgB8QHuAf8B+AHxAe8B/wH4AfEB7wH/
-        AfgB8QHvAf8B9wHxAe8B/wH3AfMB8QH/AfEBxgGqAf8BcAFTAVEB8QEeAVEBkAH7AQABxwL/AQAB4gL/
-        AQAB+wL/AS4D/wGPA/8BZwGzAdQB/wGeAbEB0AH/AecB+wL/AdYB7wL/AboB5AL/AaIB4AL/AYwB2QL/
-        AlsBYQHhAwYBCAwAA1MBrQGkAaMBoAH/AcwBygHHAf8BxQHBAb8B/wHNAcYBwwH/AWsBYwFhAf8DUAGj
-        CAADAwEEAw8BFAMJAQwsAAM1AVcBXwG2AYgB/QFUAeYBggH/A1gBxgwAAW8BYQFTAfEB7AGdAVEB/wHk
-        AY0BQwH/AeQBjwFGAf8B5AGNAUQB/wHkAYwBQwH/AeQBjAFCAf8B5AGMAUEB/wHkAYsBQAH/AeQBigE/
-        Af8B5AGJAT0B/wHkAYkBPAH/AeQBiAE8Af8B4wGIAT0B/wHsAYsBMgH/AXACUwHxAVIBWQFmAe0BAAHK
-        Av8BAAHFAfAB/wEiAUsBXwH7ATABfwGhAf4BcAP/AT4BhgG3Af8BoAGxAc4F/wHxA/8BzAH0Av8BrgHu
-        Av8BWwF/AaYB/gNAAXAQAAMdASoDZAHxAdEBzwHNAf8B5gHjAeEB/wGzAbEBsAH/AWABXwFdAf8CRQFE
-        AfkDWgHkA1oB2wNXAegDXgHlAy4BSDAAAVIBUwFSAagBVwFcAVcB3wMYASEMAAFxAl8B8wH/AeEBoQL/
-        AccBggL/AcQBbwL/AcEBaQL/Ab4BYwL/AboBXQL/AbYBVwL/AbIBUQL/Aa4BSgL/AaoBQwL/AaYBPgL/
-        AaMBOAL/AZ4BMAL/AakBNgH/AXIBWQFOAfICWQFcAckBAAHBAf0B/wEAAc8B9gH/AQ8BQAFPAf0BBQGJ
-        AbUB/wFeA/8BQQFHAWoB+QNWAcEBgQGIAZAB+QG9AdUB4QH/AZ8ByQHdAf8BSQFiAXMB9gNLAY8YAAMt
-        AUYDXAHnAcIBwAG9Af8B1gHTAdEB/wGsAqkB/wGoAacBpgH/Aa8BrQGsAf8BuwG5AbgB/wN/Af4DVgG4
-        AwkBDEgAAV0CWQHXAYoBXAFTAfsBeQJNAfoBeQJNAfoBeQJNAfoBeQJNAfoBeQJNAfoBeQFNAUoB+gF5
-        AU0BRgH6AXkBTQFDAfoBeQFNATEB+gF5AU0BLgH6AXkBTQErAfoBeQFNASkB+gGKAUQBJQH7AWACWgHe
-        AkYBRwGBASIBTQGAAfoBIgFcAYwB+gEnAWUBiAH5ATgBXAGCAfgBPgFkAYMB9wNUAa8EAAMpAT8CSAFJ
-        AYcCRQFGAX8BIQIiATEgAAMSARkDTgGYA2UB5QGDAoIB+QF7AnkB/AFlAmIB9gNeAdkDQAFxEAADOgFh
+        Af8EAANYAf8DVQH/A2cB/wNkAf8DjgH/DAAD2QH/cAAB5gHxAeYB/wFfAbUBXwH/AScBlwEnAf8B2QHq
+        AdkB/2AAA+UB/wPqAf8UAAPwAf90AAGFAb4BhQH/AScBlwEnAf9wAAMgAS4DTgGZA1MBqgM8AWgDGAEh
+        IAADGAEhA1QBqwNFAX8YAAM5AV8DVgG2AykBPxQAAY8BygHkAf8BWgG5AdkB/wFUAbYB2AH/AVwBuQHZ
+        Af8BlgHNAeUB/wGYAdAB6AH/AVwBugHZAf8BVAG2AdgB/wFaAbkB2QH/AY0BxwHgAf8MAALsAfMB/0gA
+        AycBOgNVAbECSAFiAfYBlgGvAdUB/wGYAaUBzAH/AUABQwGMAf0DVAHuA1cBwgNEAXoDIQExAwEBAhAA
+        A0ABcQEeAWAB4wH/ASgBQAGWAf0DVAGuAxABFgwAA0wBkwEnAV8BiwH7ARUBQQGpAf8DPAFnEAABxwHq
+        AfoB/wEnAbUB6QH/ASUBtgHsAf8BJQG2AewB/wElAbYB7AH/ASIBrQHhAf8BIQGrAd4B/wElAbYB7AH/
+        ASUBtgHsAf8BJQG2AewB/wEmAbMB5wH/AcUB6QH4Af8IAALpAfMB/wKNAccB/zwAAxEBFwNVAbQBPgJc
+        AfgBAAFoAR8B/wFQAa0BZgH/AfMH/wH8A/8B1QHbAfIB/wGaAakBzwH/AVcBYwF/Af4BUAJSAfQDWwHQ
+        Ay8BSgwAAiEBIgExAVQBXwGYAfsBjQHvAv8BEAFOAb8B/wNeAdoDJwE6AxYBHwNZAcwBLgGQAdYB/wGU
+        AfAC/wJMAV8B8wMWAR8UAAEDARQBHAH/AQUBPAFUAf8BHgFgAZIB/wEjAVcBgwH/AREBHQEjAf8BEQEd
+        ASIB/wEjAVcBgwH/ARwBXgGQAf8BBQE8AVQB/wEBARMBGgH/EAAC0wHsAf8CSgHIAf8C1AH+Af80AAM/
+        AW0BfAF/Aa8B/gE6AdUBiQH/AQABqQEAAf8BQwGbAVQB/wHVAfQC/wHyAf0B/gH/Ad0B8wH5Af8B6wP/
+        Ae8D/wHRAfsC/wGiAeIB+wH/ATEBVwG3Af8DTAGTEAACWgFdAdMBjwHpAf4B/wGIAfEC/wEjAZEB3wH/
+        AU8BVQFZAfICUwFkAfEBOgG1AfMB/wGXAf0C/wFgAb0B7gH/A1kBwxAAA2UB/wOCAf8DAAH/A4cB/wP+
+        Ef8D/QH/A2UB/wMAAf8DYAH/A4IB/wgAAvgB/gH/AiUB1wH/AkEB2AH/ApoC/wLlAv8sAANAAXEBfwGL
+        AbgB/gE6AdABhgH/AQABnwEUAf8BOgGPAVsB/wHLAe8C/wHbAfEB+AH/AaEBoAGMAf8BwAHSAcYB/wHI
+        AfYC/wGYAc0B9AH/AYkB0gH+Af8BNQGCAcoB/wNMAZMQAAJLAUwBjwFDAbMB8QH/AVgB4gL/AVYB4gL/
+        AS0BtAH4Af8BOAHFAfwB/wFZAeEC/wFXAeMC/wFCAX8BmgH+A0EBcxMAAf8DAAH/AwAB/wP8Gf8D9wH/
+        AwAB/wMAAf8DAAH/DAACjwH6Af8CSgHjAf8CQgHaAf8CggL/AsEC/ygAA0ABcAF7AX8BswH+ATEBywGK
+        Af8BAAGxAQAB/wErAZEBPgH/Ab8B5AL/AdMB7gH5Af8BzAGyAYsB/wHMAcsBqQH/AZoB3QL/AZsBqgGu
+        Af8BrgG6AbQB/wEVAVcByQH/A0wBkxAAAyMBMwFBAWoBiwH5ASsB2AL/ASUBygL/ASwB1QL/ASoB0QL/
+        ASMBywL/ATEB0QH+Af8BVwFZAWcB8gMSARkQAAMKAf8DAAH/AyEh/wMSAf8DAAH/AyIB/wwAAs4B/AH/
+        AkkB9AH/Ak8B5gH/AjsB1AH/AoAC/wKnAv8kAANAAnABfwG3Af4BNAG8AYAB/wEFAZABCwH/AUYBmQGS
+        Af8BrwHiAv8B1gHxAfoB/wHBAY4BOwH/AbsBsAGLAf8BgAHTAv8BpQGeAYMB/wHKAaUBQQH/AQkBUQHH
+        Af8DTQGWEAADQAFxASMBXwGQAfsBBQHRAv8BAAHEAv8BAAHEAv8BAAHEAv8BAAHHAv8BDwHHAf0B/wEp
+        AUkBWgH6A0gBhAMBAQIMAANIAf8DAAH/AyAh/wMRAf8DAAH/A2EB/xAAAoUB8wH/AoAC/wJYAe4B/wI1
+        AdAB/wJqAf4B/wKWAv8C7gL/HAADPAFnAWABfwG7Af4BYQHGAesB/wFiAbwB5gH/AYMByAH8Af8BlAHW
+        Av8BiwHZAfwB/wFHAaYB0AH/AUABpgHgAf8BQQG5Av8BQwGOAcAB/wFPAYgBoQH/AQQBTgHFAf8DTgGU
+        AwEBAggAAlABUgGkATEBTwGsAf0BFwHQAfkB/wEYAdQC/wEaAdEC/wEbAdEC/wEbAdEC/wEaAdEC/wEY
+        AdcC/wEVAcAB7gH/ARMBSwF/Af4DVgG7AxQBGwgAA7QB/wMAAf8DAB3/A/sB/wMAAf8DAAH/A80B/xQA
+        ApkC/wKAAv8CXwH1Af8CNQHSAf8CaQH9Af8CigL/AuEC/xQAAzIBUANXAb8BQQGWAdoB/wFbAcQC/wFZ
+        Ab0C/wFlAckC/wFPAZ8B+AH/AREBLwHcAf8BFwFGAeQB/wEMAUQB4wH/AQoBSQHjAf8BBAFUAfIB/wEA
+        AVkB/AH/AQABOQHIAf8CVQFYAe8DVAGvAiEBIgExAlsBXgHZAScBqQHqAf8BUgH2Av8BXwHrAv8BYQHm
+        Av8BXwHlAv8BXAHkAv8BXAHkAv8BYAHlAv8BYAHnAv8BXAHwAv8BSQHsAv8BFwGDAbUB/wNYAeMDNQFX
+        CAADEQH/AwAB/wPNGf8DvwH/AwAB/wMoAf8cAAKUAv8CgAL/AmQB+QH/AjcB1wH/AmcB/AH/AoQC/wLX
+        Av8QAAJZAWAB6wIAAaEB/wEwAYYB6AH/AUoBuwL/AU0BtwL/AVIBuwH+Af8BJQE+Ae0B/wEKAQwB1gH/
+        AQ8BFAHTAf8BDgESAdIB/wEOARIB0gH/ARQBGgHVAf8BGAEhAdkB/wEYASUB2QH/ARsBIAHOAf8DXAHc
+        AlkBZAHsAVQB2wL/AYoD/wGZAfUC/wGWAfMB/gH/AZMB9QL/AZkB8gL/AacB8AL/AaQB7wL/AZQB8gL/
+        AZUB9AL/AZcB8gH+Af8BlwH4Av8BgwP/AUQBsgHdAf8DXAHnCAADugH/AwAB/wM0Af8B+wL8Af8BzwHt
+        AfoB/wGkAd0B9gH/AagB3wH3Af8B2wHyAfsB/wP5Af8DKAH/AwAB/wPOAf8gAAKVAv8CgAL/AmgB/AH/
+        AjsB2wH/AmYB+wH/AoIC/wLWAv8MAANOAZQCAAG9Af8BGQFQAegB/wE+AbgC/wFBAbYC/wExAYAB9gH/
+        AREBGgHiAf8BEQEkAd0B/wEQASIB3gH/ARABIwHfAf8BDgEhAd4B/wEOAR8B3gH/AQ0BHgHeAf8BDwEd
+        AecB/wE5ATsBagH5AysBQwNZAccBWAJhAeYCWwFhAeECWwFhAeECVwFcAd8CWQFqAfIBkwHbAfQB/wHS
+        Af0C/wHJAf4C/wFeAbIB2gH/AlQBYQHuA18B4AJbAWEB4QJdAWEB4gJeAWUB5QNRAaIMAANpAf8DAAH/
+        ASUBiwGvAf8BGwGlAdgB/wEZAaEB0wH/ARkBogHUAf8BHQGoAdsB/wEjAWEBkQH/AwAB/wO5Af8oAAKa
+        Av8CgAL/AmoB/gH/AkAB4QH/AmUB+wH/AocC/wLlAv8IAAMEAQYCXAFhAdwBAQEOAbkB/wEoAZkB9QH/
+        AS8BowL/ARkBLAHiAf8BEgEfAdgB/wESASIB2gH/AREBIQHbAf8BEAEfAdoB/wEQAR8B2wH/AQ8BHwHZ
+        Af8BEQEhAeQB/wEIAREBvAH/A04BmRgAAjABMQFNAXABfwGzAf4B7wP/AdoB/AL/Ak0BcQH6AyQBNSAA
+        A84B/wMAAf8BGQFkAZkB/wEdAZEBuwH/ASYBtAHpAf8BJAGuAeEB/wEmAZoBwwH/AQkBQwFcAf8DAAH/
+        A/MB/ywAAqkC/wKAAv8CgAL/AkcB5QH/AoUB+gH/Aq4C/wL4Av8IAAMtAUYCIQFgAfsBAwEwAb0B/wEe
+        AVUB8AH/ARcBHAHWAf8BFQEhAdMB/wEVASEB1QH/ARMBIQHZAf8BEwEeAdQB/wESAR4B1AH/ARIBHwHY
+        Af8BEgEcAdwB/wNfAeADBwEKGAADCgEOAVUBXAFeAeoB9AP/Ac4B5QH8Af8DXAHcAwQBBicAAf8DLAH/
+        AyIB/wNEAf8CTAFNAf8DRAH/AwEB/wMbAf80AALGAv8ChQL/AoAC/wJPAesB/wKDAfoB/wK+Av8MAAJS
+        AVQBpgIHAaAB/wEiAS8B5gH/ARoBKgHkAf8BFwEmAeAB/wEXASkB6AH/ARQBJwHoAf8BFAEjAeEB/wES
+        ASMB4wH/ARQBJQHsAf8BKgErAW8B/AMtAUUgAAJVAVYBtAHcAeoB/AH/AakBuwHiAf8DUAGdKAADJQH/
+        AwAB/wOkAf8DDQH/AygB/wOSAf8DAAH/A5AB/zgAAu8C/wKsAv8CgQL/AmEB9wH/ApEC/wLkAv8IAAMM
+        ARACXgFlAeUBKQEtAYUB/gIrAXcB/AIrAXYB/AEhASMBhwH7ASEBIwGHAfsCKQF1AfoCIQGHAfsCKQF0
+        AfoDTgGXJAADOgFiAawBsgHuAf8BdQF7AYcB/gMvAUooAAPLAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMm
+        Af8D+QH/QAAC6gL/ArAC/wKEAv8CogL/WAADDAEQAlsBYQHhAlwBXgHOAwQBBiwAA9sB/wNTAf8DDwH/
+        Ax0B/wOCAf8D9QH/TAAC9QL/AtYC/wwAAxQBGwNRAaEDTAGTAyQBNQMDAQRoAAMQARYDWwHQA1gBxgMJ
+        AQwEAAMZASMDKAE8Ay0BRgMtAUYDKQE+Ax8BLAMGAQg0AAMPARQDUQGiA1YBvgMxAU8QAANZAckBOAGt
+        ATIB/wE0AYQBLAH/AUIBSgFCAfUDXAHOA0UBfQMfASwYAAFeAlgB3QGOAVwBIQH7AYABTQEpAfoBgQFN
+        ASkB+gGBAU0BKQH6AYEBTQEpAfoBgQFNASkB+gGBAU0BKQH6AYEBTQEoAfoBgwFNAScB+gGDAU0BJwH6
+        AYMBTQEnAfoBgwFNAScB+gGDAU0BJwH6AY4BSAEhAfsBYQJbAeEEAAMSARkDXAHUAQABpAHiAf8BAgFO
+        AZgB/wNZAcMDVwHCAWQCUwHxAW4CPgH4AXIBTQEpAfoBcgFNASkB+gFtAj4B+AFfAkwB8wNbAdkDPAFn
+        MAADVgG5AQQBNwGWAf8BCAE1AZIB/wNTAfEDNgFZCAADSgGMAR0BkAE9Af8BUgGxAacB/wHfAfMBzwH/
+        AbUB4QGpAf8BVwGrAUsB/wEwAXUBMgH+A1MB8QNXAb8DLwFKEAABbQFfAUwB8wHuAaMBVgH/AewBsAGH
+        Af8B7AGtAYEB/wHrAaoBaQH/AeoBqQFmAf8B6gGnAWQB/wHqAaQBYQH/AekBogFeAf8B6QGgAVsB/wHp
+        AZ4BVwH/AegBnAFUAf8B5wGaAVIB/wHkAZsBVgH/Ae0BiwEyAf8BbgJMAfMEAAIrASwBQwEVAUsBqAH9
+        AQAB9wL/AQoBwQHqAf8BYgEvATUB/wHyAZEBLgL/AbUBTwL/Ab4BVwH/Ae0BrQFfAf8B9AG0AVgC/wG9
+        AVYC/wGzAU4B/wHoAYgBMwH/AWkBQQE1AfkDOQFfKAADPwFtAUABRQGhAf0BOQGYAd8B/wEAAVgB3gH/
+        AQABQQG+Af8DVgG+BAADMwFSAS0BawFNAfoBiwFkAbsB/wHtAcsB+wL/AfsB7QL/AfkB9gH/AfgB9wHn
+        Af8B2gHiAbIB/wGeAcYBYAH/AToBnAEyAf8BVQFYAVUB7wMpAT4MAAFpAVgBUwHxAewBxAGsDf8B9gH5
+        Av8B9wH7Av8B/QP/AfsB/gL/AfcB+gL/AfQB9gH9Af8B8AHyAfkB/wHvAe0B9QH/AeYB7gH9Af8B5gG8
+        AagB/wFrAlMB8QQAAwEBAgJYAWIB6QEAAdsB/gH/AQsBxAHnAf8BngGFAWUC/wHMAWMC/wHNAYMB/wHb
+        AbABlgH/ARYBEwHWAf8BNgEoAasB/wHzAcIBhgL/AcgBhgL/AdIBhAH/Ad0BaQE0Af8DVgG7JAADDQES
+        Al4BZQHlAUcBogHjAf8BtgHfAf0B/wG+Ad8C/wFLAXMBkAH+A0UBfwMPARQBWAFhAVgB5gEjAckBVAH/
+        AbEB6QHnAv8B7wHkAf8B8QHlAdgB/wHzAeMB1AH/AfYB4QHNAv8B4wHIAf8B+wHRAa0B/wHRAbwBgQH/
+        AUwBkwE1Af8DWAHLAwQBBggAAWkBWAFTAfEB9QHNAbIB/wHHAcgBzAH/AYYBgAGBAf8BuwK3Bf8B3wLd
+        Af8BkgKMAf8BjwGHAYgB/wGRAYkBigH/AY8CiAH/AY4BhgGHAf8BhgJpAf8CrwG2Af8B7wHCAaYB/wFp
+        AlMB8QQAAzYBWQEhAV8BiQH7AQAB4wL/AQoBvwHiAf8BlQGEAYYC/wHUAZcC/wHZAaIB/wHYAbwBsAH/
+        ARcBGwHoAf8BLgEqAdQB/wHwAdIBqAH/AfgByQGKAv8BxQGGAf8B8QGnAV0B/wNbAcgkAANGAYEBJAFh
+        Ab0B/wGXAdAB/QH/Ad0B/AL/AbQBvgHPAf8DVAGrBAADWAHGAUkBngFSAf8B0AHaAaoB/wH9AfEB4QH/
+        AfEB5AHWAf8B8AHkAdUB/wHxAeABzAH/AfQB1wG4Af8B8gHPAakB/wHVAbMBigH/AfcBxwGcAf8ByQHV
+        AZsB/wE2AWoBKwH+A0oBiwgAAWkBWAFTAfEB8gHKAa8B/wHmAekB7AH/AckByAHJAf8B4ALfAf8D/gH/
+        Ae8C7QH/Ac4CzAH/AcwCyQH/AcwCxwH/AcoCxQH/AckCwwH/AcQCvQH/AdIB0wHaAf8B7gG/AaMB/wFp
+        AlMB8QQAAzQBVAEVAUwBqAH9AQAB5QL/AQkBvwHhAf8BkwGEAY8C/wHhAbUC/wHqAccB/wHmAdYBzAH/
+        AjYB4AH/AVkBUQHVAf8B/AHsAcUB/wHeAdQBnwH/Af0B1QGlAf8B7wGoAYIB/wNWAbYgAAMSARkCWQFk
+        AewBZQG+AfcB/wHHAfMC/wGVAbkB2AH/A1YBuwgAAV4BZQFeAeUBPwGDAZwB/wHwAesB+wL/Af4B+wH/
+        AfsB7AHkAf8B8wHkAdQB/wHyAdsBwgH/AfcB2AG3Af8B3AHAAZ0B/wHkAb0BkQH/AfoBzgGhAf8B/gHo
+        AcwB/wGZAcwBiwH/AUwBUgFIAfQDLQFFBAABaQFXAVMB8QHvAcgBrQ3/AfwC+h3/AfgB+QL/AesBvgGi
+        Af8BaQJTAfEEAAMtAUUBFQFHAXgB/AEAAeEC/wEJAcAB4QH/AZgBjwGiAv8B6QHMAv8B+wHsAf8C8gHt
+        Af8BPAE6AdkB/wFfAVsB1QP/AfAC/wH3Ae0C/wHrAdMB/wGpAX8BbQH+AzwBaCAAA1YBvgE9AZgB2wH/
+        Aa0B5wL/AV0BqAHXAf8DWQHDAwEBAggAAxABFgE8AT0BPAFoAVkBXAFZAc8BYAGOAWIB+wHRAekB0QH/
+        AfYB9AHmAv8B6QHSAf8B4gHHAasB/wHbAb0BmQH/AfcB0QGmAf8B8wHSAa0B/wH9AeAByQH/AfMB+gHn
+        Af8BUgGpAU0B/wNaAdMDDwEUAWcBWAFTAfEB9AHOAbQB/wLTAdYB/wGgApwB/wHJAscB/wP+Af8B6ALl
+        Af8BqgKlAf8BqAKhAf8BqAKiAf8BpwKgAf8BpQKfAf8BnwKWAf8BwQHDAckB/wH0AcgBrAH/AWkCUwHx
+        BAADUQGgAQABkwHTAf8BAAHrAv8BCQG9AeAB/wGNAVMBZQL/Ad8BygL/AfEB3gH/AeEBzQG8Af8BHAEg
+        AbsB/wE/ATwBsAH/AfoB2AGvAv8B6gHZAv8B1QHJAf8BXQJZAdIDBgEIBAADFAEbAy4BSAMJAQwMAANO
+        AZgBKgFvAY8B/gGbAeEC/wFnAbUB4wH/A1kBzAMGAQgYAAMYASEDSwGOAl4BWgHYAXEBfQFkAfoB2AHK
+        AagB/wH4AdQBsQH/AfIB0wGxAf8B8wHcAcIB/wHxAd4ByAL/AfQB7wH/AdcB9AHYAf8BNwF4ATEB/gNO
+        AZcBZwFXAVMB8QHzAc4BtAH/Ad4B4QHlAf8BuAG2AbcB/wHYAtYF/wHuAu0B/wHAAr4B/wG+ArsB/wG/
+        ArwB/wG+ArkB/wG9ArkB/wG3ArIB/wHPAdMB2QH/AfMByQGtAf8BaQJTAfEDEgEZAVgBXAFdAe0BAAHJ
+        Af0B/wEAAeIB/QH/ARAByQHqAf8BQQE9AUEB+QF/AToBLwH8AbMCogH/AU8BnQHAAf8BNgGWAcYB/wEo
+        AYwBvgH/AUYBiAGfAf8BwwGOAWgB/wFlAl4B5QMbASYEAAMgAS4DWAHjAjMBMgH8A08BnAgAA04BlwEk
+        AWYBhgH+AWkBzQL/AZ8B2wH+Af8CWAFiAe8DHQEqKAABKwEsASsBQwFdAWEBXQHwAf4B8AHYAf8B9QHb
+        AcQB/wHyAeEB0AH/AfMB5gHYAv8B8AHtAf8BrQHaAa0B/wEgAaQBJQH/A1EBpwFnAVYBUwHxAfABzAGz
+        Dv8C/iH/AfABxwGsAf8BZwJTAfEDUgGoAQABVwHCAf8BAAHiAv8BAAHZAfUB/wEUAd0B9wH/ARQBlwHH
+        Af8BNQFIAXcB/gFWAZ4BxwH/AYgB1wH9Af8BjQHUAfUB/wFpAcsB7gH/AT4BsQHiAf8BIAFaAZ8B/wNS
+        AagIAANZAdcB1gHPAc0B/wG4AbQBsgH/Az4B+AM6AWEDTgGXAR8BZwGLAf4BVQHCAv8BqAHmAv8BTQF8
+        AYMB/gNCAXYwAAM6AWIBfgGgAXsB/AH/AfgB8AH/AfIB4wHUAv8B7wHrAf8BywHiAccB/wErAboBOwH/
+        A1gB4wMVAR0BZQFWAVMB8QH0AdABuAH/At0B3gH/AbYCsgH/AdYC0wX/Ae4C7QH/Ab4CuwH/Ab0CuQH/
+        Ab8CugH/Ab4CuQH/Ab0CuAH/AbkCsgH/AdQB1gHaAf8B9gHMAbAB/wFnAlMB8QJaAWEB5AEAAb0C/wEA
+        AeUC/wEAAesB+AH/AScB+wH9Af8BhgP/AUUBmwHMAf8BhAG5AeIB/wGlAeMC/wGcAdoB/gH/AZYB1wH6
+        Af8BjgHSAfMB/wFHAbcB6QH/AlkBYAHrAxQBGwQAA2QB7AHXAdIB0wH/AcsByQHKAf8BjgGPAY4B/wFE
+        AUEBMgH7AW4BbwF1Af4BPgGVAckB/wGAAdMC/wFhAbIB4AH/A1kBxDgAAVUBVgFVAbEB5AH0AeUC/wH0
+        AfEB/wHpAegB2wH/AVEB1gFlAf8BQQFqAUEB+QMwAU0EAAFlAVYBUwHxAfYB0wG8Af8B0wHXAdsB/wGg
+        AZ8BoAH/A8kF/wPqAf8BqwKqAf8BqQGnAagB/wGrAakBqgH/AaoCqQH/AasCqAH/AaMBoQGiAf8ByQHP
+        AdUB/wH5AdEBtAH/AWcCUwHxAkwBaAHzAQABxQL/AQAB4gL/AQAB/QL/AScD/wGUA/8BYQGwAdAB/wGF
+        AaYBzgH/AcIB7QL/AbcB5QL/AaYB3gL/AZgB2AH6Af8BhQHTAf0B/wFHAVoBYgH2Ax0BKgQAAycBOgNY
+        AcsDiAH9AqwBqwH/AaoBqQGnAf8BvgG3AbEB/wG2AbABqgH/AV0BnQG9Af8CVQFcAeoDGAEhOAADDwEU
+        A2QB5wHzAfoB9QH/AZAB5QGfAf8BKwG0ATkB/wNIAYcIAAFlAVUBUwHxAe0BxwGuAf8B+AHxAe4B/wH4
+        AfAB7QH/AfcB8QHuAf8B9wHyAe8B/wH4AfEB7wH/AfgB8QHuAf8B+AHxAe4B/wH4AfEB7wH/AfgB8QHv
+        Af8B+AHxAe8B/wH3AfEB7wH/AfcB8wHxAf8B8QHGAaoB/wFnAlMB8QEhAVEBigH7AQABxwL/AQAB4gL/
+        AQAB+wL/ASgD/wGPA/8BYQGzAdQB/wGeAbEB0AH/AecB+wL/AdYB7wL/AboB5AL/AaIB4AL/AYwB2QL/
+        AlsBYQHhAwYBCAwAA1MBrQGkAaMBoAH/AcwBygHHAf8BxQHBAb8B/wHNAcYBwwH/AWUBXQFbAf8DUAGj
+        CAADAwEEAw8BFAMJAQwsAAM1AVcBVAGwAYgB/QFOAeYBggH/A1gBxgwAAWUBYQFTAfEB7AGdAUsB/wHk
+        AY0BPQH/AeQBjwFAAf8B5AGNAT4B/wHkAYwBPQH/AeQBjAE8Af8B5AGMATsB/wHkAYsBOgH/AeQBigE5
+        Af8B5AGJATcB/wHkAYkBNgH/AeQBiAE2Af8B4wGIATcB/wHsAYsBLAH/AWcCUwHxAVgBXQFgAe0BAAHK
+        Av8BAAHFAfAB/wEiAUsBXwH7ATABfwGVAf4BagP/ATgBhgG3Af8BoAGxAc4F/wHxA/8BzAH0Av8BrgHu
+        Av8BWwF/AZoB/gNAAXAQAAMdASoDZAHxAdEBzwHNAf8B5gHjAeEB/wGzAbEBsAH/AVoBWQFXAf8CRQFE
+        AfkDWgHkA1oB2wNXAegDXgHlAy4BSDAAAVIBUwFSAagBVwFcAVcB3wMYASEMAAFrAl8B8wH/AeEBoQL/
+        AccBggL/AcQBaQL/AcEBYwL/Ab4BXQL/AboBVwL/AbYBUQL/AbIBSwL/Aa4BRAL/AaoBPQL/AaYBOAL/
+        AaMBMgL/AZ4BKgL/AakBMAH/AWcBWQFXAfICWQFcAckBAAHBAf0B/wEAAc8B9gH/ARUBQAFJAf0BAAGJ
+        AbUB/wFYA/8BQQFHAWoB+QNWAcEBdAGCAYkB+QG9AdUB4QH/AZ8ByQHdAf8BSQJiAfYDSwGPGAADLQFG
+        A1wB5wHCAcABvQH/AdYB0wHRAf8BrAKpAf8BqAGnAaYB/wGvAa0BrAH/AbsBuQG4Af8DfwH+A1YBuAMJ
+        AQxIAAFdAlkB1wGEAVwBUwH7AXMCTQH6AXMCTQH6AXMCTQH6AXMCTQH6AXMCTQH6AXMCTQH6AXMBTQFM
+        AfoBcwFNAUkB+gFzAU0BMQH6AXMBTQEuAfoBcwFNASsB+gFzAU0BKQH6AYQBRAElAfsBYAJaAd4CRgFH
+        AYEBKAFNAXkB+gEoAVIBfQH6AS8BZQGCAfkBPgFcAXoB+AFIAWQBegH3A1QBrwQAAykBPwJIAUkBhwJF
+        AUYBfwEhAiIBMSAAAxIBGQNOAZgDZQHlAXoCdwH5AXUCcwH8A2IB9gNeAdkDQAFxEAADOgFhA1kBxwNZ
+        AcwDWgHKA1oBygNaAcoDWgHKA1oBygNaAcoDWgHKA1oBygNaAcoDWgHKA1wBzgNZAcMDNAFVRAADVwHC
+        A0QBezgAA2EB4gNnAfEDYQHuA2EB7gNhAe4DYQHuA2EB7gNhAe4DYQHuA2EB7gNhAe4DYQHuA18B8ANl
+        AeUEAANhAe4D4gH/A90B/wPaAf8C2wHaAf8D2QH/A9gB/wPYAf8D1wH/A9YB/wPVAf8D1AH/A9MB/wPg
+        Af8DmQH/A1cBvQwAA0gBhgJNATIB+gNDAXcsAANcAdQBAQEdATIB/wNJAYkDEwEaMAABogKjBf8B9gLw
+        Af8B9gLvAf8B9gLvAf8B9ALvAf8B9ALtAf8B9ALtAf8B9ALtAf8B8gLrAf8B8wLrAf8B8gLoAv8C+wH/
+        AaICoQH/BAADfQH3BP8C9AHzAf8B/QH4AfUC/wH2AfMB/wH9AfQB8QH/AfwB8wHwAf8B+wHwAe0B/wH5
+        AfAB7QH/AfgB7wHsAf8B9wHtAeoB/wHyAe0B6gH/AecB5gHnAf8D9QH/A8YB/wNZAcMIAAMOARMDXwHg
+        ASoBxAFFAf8BRwFqAUEB+QM4AV4oAAMpAT8BUAFSAWkB9wFbAZoBrgH/A1sB0ANCAXUDBgEIKAADnwH9
+        AfoC8wH/AeoC4gH/AekC4QH/AekC4QH/AegC3wH/AecC3gH/AeYC3gH/AeYC3QH/AeQC2wH/AeQC2gH/
+        AeIC1wH/AfUC6wH/AZ4CnAH9BAADYgH2AfwC+wH/Ae4B7AHqAf8BuwHMAdoB/wGTAbMBywH/AZgBtQHL
+        Af8BlgG1AcsB/wGVAbQBygH/AZUBswHJAf8BlAGzAckB/wGOAa4BxwH/AakBugHIAf8B3gLcAf8B7gLt
+        Af8DvQH/A1YBwQgAA0ABcQE1AZoBMAH/AUMB6QGSAf8BNwHSAV8B/wFMAV8BTAHzAy4BRygAA1EBogFo
+        AcQB3wH/AZsB5AHyAf8BHAGKAa0B/wNMAZEDAgEDJAABnwKeAv0C9gH/AfUC7QH/AfMC7AH/AfMC7AH/
+        AfIC6gH/AfEC6QH/AfEC6QH/AfAC6AH/Ae8C5gH/Ae8C5QH/Ae0C4wH/AfgC7gH/A5wB/QQAA2IB9gL/
+        Af4B/wHtAeQB5wH/AUMBswHYAf8BAAHLAesB/wEJAdAB7QH/AQwB0QHuAf8BDAHUAfEB/wENAdIB7gH/
+        AQ8B0gHuAf8BBgHPAe4B/wEwAaQBzAH/AdUBzwHTAf8B9gHyAfAB/wPAAf8DVgHBBAADBQEHAVYBWAFW
+        AbwBRgHPAWUB/wFnAegBqwH/AVgB6AGjAf8BPAHOAV8B/wFZAWABWQHrAyQBNSQAAzEBTgEIAWgBpQH/
+        AZcB5gH5Af8BhgHoAfUB/wFAAU8BjwH9AyIBMiQAA6AB/QH7AvcB/wHeAtoB/wHeAtkB/wHfAtoB/wHe
+        AtkB/wHdAtkB/wHdAtkB/wHdAtgB/wHcAtYB/wHbAtYB/wHaAtQB/wH4AvEB/wGeAp0B/QQAA2UB9gT/
+        AeoB5AHmAf8BSAG7AeEB/wEbAdwC/wEgAd0C/wEIAdMB/QH/AQMB0AH3Af8BBgHUAfwB/wEGAd0C/wEA
+        Ad0C/wEuAa4B2AH/AdUBzwHTAf8B9wHzAfEB/wPBAf8DVgHBBAADLgFIAUMBfwE8Af4BiQHuAbUB/wGW
+        AfMBxQH/AYoB6wG4Af8BZAHsAa8B/wE7AcwBXQH/AVcBXAFXAd8DGgEkIAADCAELA1MBrQEZAaEBzAH/
+        AZ0B0wHdAf8BqgHiAfAB/wNUAaskAAOoAf0B0gLRAf8BGQIYAf8CDQEMAf8BEQEQAQ8B/wENAQwBDQH/
+        ARACDwH/ARICDwH/AxIB/wEQAhEB/wEJAQwBDQH/AxUB/wHLAsoB/wOoAf0EAANlAfYE/wHpAecB6QH/
+        AVcBtwHhAf8BVgHQAf4B/wFWAdUC/wE1AakB3AH/AToBWAGHAf8BDQGfAdoB/wEAAcEC/wEAAbwC/wEr
+        AaUB1wH/AdgB1AHWAf8B+AH0AfIB/wLCAcMB/wNWAcEDAgEDA1ABmgFXAc4BggH/AaEB+gHRAf8BRwHN
+        AWEB/wFjAeYBpQH/AZUB8wHIAf8BZwHyAbgB/wE6AcgBWAH/AVsBXgFbAdADFAEcIAADEgEYA1YBswFb
+        AcYB4QH/AfAD/wGOAZoBogH/AzMBUgMPARQcAAOoAf0BxgLIAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA
+        Af8DAAH/AwAB/wMAAf8DAAH/AbwCvQH/A6gB/QQAA2UB9gT/AekB6AHrAf8BWgG5AeEB/wFkAdUB/gH/
+        AWYB3QL/AVwBrAHKAf8BVgFDAT8B/wEtAZ0ByQH/AQABuAL/AQABrwL/ASwBogHXAf8B2gHVAdYB/wH6
+        AfYB9AH/AcQCxQH/A1YBwQMcAScBUQFtAVEB9wGYAfwByQH/AV4BngFzAf4BWgFhAVoB5AFCAWYBQgH1
+        AVcB4wGYAf8BkQH5AcwB/wFnAfcBwQH/ATYBwwFPAf8BVQFXAVUBtwMKAQ0gAAMKAQ4DTwGlAY0BvgHP
+        Af8BmAHHAeAB/wFCAVkBaQH1AVgCXAHRAxoBJRgAA6gB/QHKAc8B0AH/AQEBCQEKAf8DAAH/AS4BMQEq
+        Af8BvQG2AZYB/wEMAR4BGgH/ARUBGwESAf8BHAEYAQ0B/wMAAf8BWAEmAQUB/wMAAf8BwgK/Af8DqAH9
+        BAADZQH2BP8B5gHnAesB/wFgAbsB4gH/AZcB5AL/AZYB6AL/AZABxwHdAf8BiwGSAZMB/wFXAbwB3gH/
+        ARIBxQL/AQoBwAL/ATIBpgHYAf8B1wHUAdcB/wH7AfcB9QH/A8YB/wNWAcEDRwGCAUUB0AFlAf8BSgHV
+        AWoB/wFYAVoBWAHAAwABAQMtAUUBXQFhAV0B4gE8AcsBWAH/AYEB+QHGAf8BZQH+AcoB/wEvAcABSAH/
+        A1IBqQMEAQUgAAMKAQ4DVwHFAT0BlAG7Af8BOwGYAbsB/wEcASEBJgH/A1ABnwMAAQEUAAOoAf0B0QLM
+        Af8BuAGYAVUB/wFbAVwBRgH/AbYCuAX/AUQCTgH/AVQBTQEyAf8BWgFZAUEB/wEtASEBDAH/Ac4BXQEc
+        Af8BOQERAQAB/wHJAb4BvQH/A6gB/QQAA2gB9gT/AfEB8AHxAf8BgwG5AdoB/wFYAbcB3gH/AVwBuAHe
+        Af8BXAG/AecB/wFqAcsB8wH/AU0BuwHoAf8BOAGuAeAB/wEuAaoB3AH/AVUBqgHRAf8B4QHfAeAB/wH6
+        AfcB9gH/A8gB/wNWAcEBWAFiAVgB6QEvAdABTQH/AVkBWwFZAcQDDQESCAADHAEoAVQBVgFUAasBJQG0
+        ATEB/wFZAfIBswH/AV0B/wHQAf8BKgG7AT4B/wNLAY4kAAI+AT8BbAGAAWoBZwH/AZMBEwEJAf8BDgIA
+        Af8BHQIAAf8DQAFwFAABpgKoAf0B0QHMAcoB/wHXAa8BYwH/AfwB4QGuAf8B9gL3Af8B+wH+Av8B5AHX
+        AcUB/wHLAa8BZwH/AY8BZQFDAf8BzAGSATcC/wGRASkB/wHJATcBAAH/AcoBvQG7Af8BpQKoAf0EAANo
+        AfYE/wH7AfoB+QH/AeYB6gHuAf8BnwGnAbEB/wGiAacBrgH/AZ8BpwGvAf8BwAHMAdcB/wGwAbUBvQH/
+        Aa4BrQGzAf8BnwGhAagB/wHeAd8B4wH/Ae4C7QH/A/UB/wPJAf8DVgHBAUgBYgFFAfYBWQFcAVkBzwMU
+        ARsQAAMEAQUBPQE+AT0BagFIAWIBRwH2AUQB6AGWAf8BVAH/AdIB/wEjAbgBNAH/AUUBRgFFAX4gAAMB
+        AQIDRwGCAb4BUQE3Af8BYwEKAQYB/wEJAgAB/wFHATcBLQH5ASwCKwFDEAABpwKoAf0B0AHKAckB/wHN
+        AaEBVQL/AdwBnQH/Af0B5QHBAf8B9gHjAc0B/wH+AeABrgL/AdoBmgH/AfkBwAFhAf8B/AGnAT4C/wGA
+        AR4B/wHQATQBAAH/AckBvAG6Af8BpAKoAf0EAANoAfYE/wP3A/8B/gH/AdsB1gHUAf8BuwG1AbIB/wHJ
+        AcIBwAH/AbsBtQGyAf8BzAHHAcQB/wG7AbUBsgH/AdABywHIAf8B9wH1AfQB/wLqAekB/wP2Af8DywH/
+        A1YBwQMYASEDEQEXHAADJAE2AVoBXgFaAdUBLQHUAVkB/wFQAfwBvgH/AR8BtwExAf8DPAFmIAADAgED
+        A1MBqgHGAWABRgH/AT8CAAH/ARACAAH/AV0CWQHXAxgBIQwAAacCqAH9Ac8BygHIAf8BzQGXAUMC/wHL
+        AYUC/wHOAY4C/wHPAZAC/wHNAY0C/wHEAWkC/wG2AU4B/wH8AZYBMQH/AfoBWgESAf8ByAElAQAB/wHI
+        AboBuQH/AaUCqAH9BAADaAH2BP8D+QH/A/oB/wH5AvoB/wPLAf8BuAK2Af8BwQK/Af8BuAK2Af8DxAH/
+        AfAC8QH/Ae4C7wH/A+sB/wP5Af8DzQH/A1YBwSgAAxABFQFPAVABTwGbARoBvgEyAf8BRgH1AaQB/wFA
+        AagBQAH9AzEBTiAAAxABFgFcAlkBzAG5AVMBNQH/ASACAAH/ASQCAAH/AVECUAGfDAABpwKoAf0BzQHF
+        AcQB/wHQAYIBJAL/AbkBSQL/Ab8BWgL/AcEBXQL/AbwBVAL/AbABQwL/AZgBLQH/Af0BYwEWAv8BPgEA
+        Af8BzQEQAQAB/wHGAbYBtQH/AaUCqAH9BAADawH2BP8D+wH/A/kB/wP6Af8B+gL7Af8D5QH/A9UB/wPh
+        Af8D9AH/A/EB/wPtAf8D6wH/A/cB/wPPAf8DVwHCMAABOQE6ATkBYAFYAV8BWAHjAS8B3QFUAf8BWgFi
+        AVsB7SQAAx0BKgFiAlgB6QGfAT4BHAH/AQsCAAH/AUACAAH/AzcBWwgAA6gB/QHUAssB/wGYAUgBIQH/
+        AbQBZwEwAf8BswGDATkB/wG0AYYBOgH/AbMBggE3Af8BswFjAS8B/wGzAVUBJwH/AbMBQwEbAf8BtQEu
+        AQsB/wGXARoBCQH/AcsBvwG+Af8BpwKoAf0EAAN8Afgg/wP9Af8D/AH/A/oB/wP5Bf8D0wH/A1cBwjQA
+        Ax0BKQFXAVoBVwHFAVUBYgFVAe8oAAMqAUABawFJAUgB9gGAASsBDgH/AQgCAAH/AWACWQHrCAABowKk
+        Bf8B2wHcAeAB/wLYAd4B/wLZAd0B/wHYAdkB3QH/AdgB2QHeAf8B2AHZAd4B/wHYAdoB3gH/AdgB2wHf
+        Af8B1wHcAeAB/wHZAdwB3wL/AvwB/wOiAf8EAANbAcsDmQH+A6sB/QOrAf0DqwH9A6sB/QOrAf0DqwH9
+        A6sB/QOrAf0DqwH9A6sB/QOsAf0DoQH+A2IB9QM7AWVsAAM7AWQBZQJIAfYBWQJCAfUBUgJRAacIAANe
+        Ad0DYgHvA2EB7QNhAe0DYQHtA2EB7QNhAe0BYAJhAe0DYAHtA2AB7QNgAe0DYQHuA2IB7wNfAeCTAAEB
+        AwQBBQMQARYDKQE/Az4BbANGAYADRAF7AzgBXAMgAS4DCgENAwEBAgwAAVoCXQHTAUwBawFwAfMBWAFi
+        AWMB7wFYAWIBYwHvAVgBYgFjAe8BWAFiAWMB7wFYAWIBYwHvAVgBYgFjAe8BWAFiAWMB7wFYAWIBYwHv
+        AVgBYgFjAe8BWAFiAWMB7wFZAWcBbAHyAVsCXgHZCwABAQMGAQgDCgENAwoBDQMKAQ0DCgENAwoBDQMK
+        AQ0DCgENAwoBDQMKAQ0DCgENAwcBCgMDAQQLAAEBAwYBCAMKAQ0DCgENAwoBDQMKAQ0DCgENAwoBDQMK
+        AQ0DCgENAwcBCgMDAQQTAAEBAwcBCQMVAR0DOQFfA1MBsAJYAWEB5gFfAYYBjgH7AU0BqAGrAf0BTgJd
+        AfADWQHSA1IBqQNGAYADJAE2AwQBBggAASkBoAHSAf8BHwH7Av8BFQHxAv8BGAHwAv8BGQHwAv8BGQHx
+        Av8BGQHxAv8BGQHxAv8BGQHxAv8BGQHwAv8BGQHwAv8BFwHwAv8BHQH7Av8BLQGsAdgB/wQAAwQBBQMk
+        ATYDRAF5A0oBiwNKAYsDSgGLA0oBiwNKAYsDSgGLA0oBiwNKAYsDSgGLA0oBiwNHAYIDMwFSAwsBDwME
+        AQUDJAE2A0QBeQNKAYsDSgGLA0oBiwNKAYsDSgGLA0oBiwNKAYsDSgGLA0UBfwMpAT8DAwEECAADBAEF
+        AyQBNgNEAXoCXgFhAdoBUQFwAXoB/AGvAdUB4wH/AcQB8gH9Af8BtwHwAv8BqgH+Av8BnwH9Af4B/wGI
+        AdoB5QH/AVoBfwGPAf4BUAFSAWUB9ANWAbkDNQFXAwsBDwQAASsBcwGaAfwBDwHiAv8BBgHZAv8BCAHY
+        Av8BBwHXAv8BCQHfAv8BCgHlAv8BCgHlAv8BCgHgAv8BCAHZAv8BCQHZAv8BBgHZAv8BDQHjAv8BKwF2
+        AaAB/AQAAx0BKgG1ATEBAAH/AbUBMQEAAf8BtQExAQAB/wG1ATEBAAH/AbUBMQEAAf8BtQExAQAB/wG1
+        ATEBAAH/AbUBMQEAAf8BtQExAQAB/wG1ATEBAAH/AbUBMQEAAf8BtQExAQAB/wG1ATEBAAH/A1IBqQM1
+        AVgDHQEqAbUBMQEAAf8BtQExAQAB/wG1ATEBAAH/AbUBMQEAAf8BtQExAQAB/wG1ATEBAAH/AbUBMQEA
+        Af8BtQExAQAB/wG1ATEBAAH/AbUBMQEAAf8BtQExAQAB/wNLAY4DFAEbAwABAQQAAx0BKgG1ATEBAAH/
+        AfMBSQEAAf8BlQG/AdMB/wHvA/8B1AH7Av8BqQHmAv8BkgHZAv8BjgHrAv8BjQHzAv8BnQH9Av8BqwP/
+        AV8BxAHXAf8BVQEUAQAB/wNTAa0DNQFYBAABKwFzAZoB/AEpAeAC/wEcAdUC/wEQAdMC/wEFAdAC/wEA
+        AZ4B9gH/AQABiQHmAf8BAAGKAeUB/wEAAZoB8wH/AQAByQL/AQABzAL/AQAByQL/AQMB1AL/ASsBdQGg
+        AfwEAAG1ATEBAAL/AV8BAAH/AbUBMQEAAv8BqAFJAv8BpwFIAv8BpgFGAv8BpAFDAv8BogE/Av8BoAE7
+        Av8BnQE2Av8BmwEyAv8BmwEyAf8B5QE4AQ4C/wGbATIB/wG1ATEBAAH/A0gBiAG1ATEBAAH/AbUBMQEA
+        Av8BZQECAv8BrwFVAv8BpQFEAv8BpAFCAv8BowFAAv8BoAE8Av8BnwE6Av8BnQE2Av8BmwEyAf8BtQEx
+        AQAB/wNUAa8DNgFZAxsBJgQAAbUBMQEAAv8BXwEAAf8B+wFjAQIB/wGYAcMB2AH/AdkD/wGrAeYC/wGG
+        AdMC/wFfAcoC/wFkAd0C/wFhAeIC/wGBAegC/wGRAfcC/wFXAcIB2wH/AWABMgEMAf8B6QFFAQAB/wNI
+        AYgEAAErAXIBmwH8ATsB4AL/AS4B1gL/AR8B1AL/AREB2wL/AQABgAHjAf8CAAFjAf8CAAFdAf8BAAFZ
+        AdwB/wEAAccC/wEAAb4C/wEAAbsC/wEAAcYC/wErAXQBoAH8BAABtQExAQAC/wFpAQsB/wG1ATEBAAL/
+        AbIBXAL/AbEBWwL/AbEBWgL/Aa8BVgL/AasBUAL/AagBSgL/AacBRwL/AaQBQgL/AaIBPgH/AeUBOwET
+        Av8BogE+Af8BtQExAQAB/wNLAZABtQExAQAC/wFgAQAB/wG1ATEBAAH/AbUBMQEAAv8BrwFVAv8BrgFT
+        Av8BrQFRAv8BqgFMAv8BqAFIAv8BpQFEAv8BowFAAf8B5QE8ARUB/wG1ATEBAAH/A0wBkQMUARsEAAG1
+        ATEBAAL/AWkBCwH/AfsBYwECAf8BiQG/AdsB/wG5AfAC/wGMAdYC/wFRAcQC/wFCAbwC/wFOAc8C/wFL
+        AdMC/wFWAdoC/wFlAecC/wFGAbgB3QH/AWABNQERAf8B6QFFAQAB/wNLAZAEAAErAXIBmwH8AUYB3wL/
+        AT4B2AL/AS0B0wL/ASEB3AL/AQIBrwHzAf8CAAFMAf8CAAFBAf8BAAGVAeoB/wEAAbsC/wEAAbAC/wEA
+        Aa4C/wEAAbkC/wErAXMBoAH8BAABtQExAQAC/wGIAR0B/wG1ATEBAAL/Ab4BhwL/Ab4BhgL/AbwBgwL/
+        AboBaQL/AbcBZAL/AbMBXQL/AbABVwL/Aa0BUgL/AaoBTQH/AeUBPwEaAv8BqQFKAf8BtQExAQAB/wNL
+        AZABtQExAQAC/wGSASUC/wFqAQgB/wG1ATEBAAL/AboBaQL/AbgBZAL/AbYBYgL/AbQBXgL/AbABVwL/
+        Aa8BVQL/Aa0BUQH/AeUBQQEeAf8BtQExAQAB/wNUAa8DNQFYAwMBBAG1ATEBAAL/AYgBHQH/AfsBYwEC
+        Af8BXwG3Ad4B/wGXAd8C/wFUAcUC/wEpAbAC/wEqAa8C/wFBAcQC/wEtAcAC/wE9AcoC/wFNAdcC/wE2
+        AbAB4AH/AWABOQEXAf8B6QFFAQAB/wNLAZAEAAErAXIBmwH8AVoB4wL/AVIB3AL/AUEB2QL/ATAB4AL/
+        AQABYQG3Af8CAAEKAf8CAAEGAf8BAAFOAaoB/wEAAb0C/wEAAbMC/wEAAbAC/wEAAbsC/wErAXQBoAH8
+        BAABtQExAQAC/wGVATEB/wG1ATEBAAL/AcgBmgL/AcgBmAL/AcYBlgL/AcQBkAL/AcABiwL/Ab0BhAL/
+        AbkBaAL/AbYBYQL/AbIBXAH/AeUBQwEhAv8BsAFXAf8BtQExAQAB/wNLAZABtQExAQAC/wGfAToC/wGf
+        AToC/wFhAQAB/wG1ATEBAAL/AcMBjgL/AcABiQL/Ab4BhAL/AboBaQL/AbgBZAL/AbUBYAH/AeUBQwEh
+        Av8BsAFXAf8BtQExAQAB/wNMAZEDEwEaAbUBMQEAAv8BlQExAf8B/AFkAQIB/wFIAa4B4AH/AV8BzQL/
+        AUIBvAL/AUMBvgL/AVEByAL/AWUB1QL/AVEBywL/AToBwgL/ATUBxgL/ASABpgHiAf8BZgFAAR8B/wHr
+        AUYBAAH/A0sBkAQAAS4BcwGdAfwBigHqAv8BgAHiAv8BWQHeAv8BSwHlAv8BDQGZAc8B/wEAAQUBGgH/
+        AgABFAH/AQABiQHDAf8BEQHFAv8BEgG7Av8BDgG5Av8BFQHDAv8BKwF1AaEB/AQAAbUBMQEAAv8BoQFG
+        Af8BtQExAQAC/wHTAawC/wHTAa0C/wHRAakC/wHOAaQC/wHLAZ4C/wHHAZUC/wHEAZAC/wHAAYoC/wG9
+        AYQB/wHlAUgBKQL/AboBaQH/AbUBMQEAAf8DSwGPAbUBMQEAAv8BqwFOAv8BqwFOAv8BkwEnAf8BtQEx
+        AQAC/wHOAaAC/wHMAZwC/wHJAZcC/wHFAZIC/wHCAYsC/wG/AYcB/wHlAUoBLgL/AboBaQH/AbUBMQEA
+        Af8DVAGvAzUBWAG1ATEBAAL/AaEBRgH/Af4BZQECAf8BQwGqAeEB/wGUAd4C/wGZAeMC/wGQAeIB/gH/
+        AVoByQH7Af8BYQHQAfsB/wGLAd0B/QH/AZoB4gL/AY0B3QL/ATUBqAHiAf8BpgFkAT0B/wHxAUgBAAH/
+        A0sBjwQAATkBoAHSAf8BowH4Av8BmQHuAv8BhgHqAv8BZAHoAv8BUQHnAv8BKgHGAe4B/wEeAcIB7AH/
+        ASsB3QL/ATQB0AL/AS0ByAL/AS0ByQL/AT0B2AL/ATYBpwHYAf8EAAG1ATEBAAL/Aa4BXAH/AbUBMQEA
+        Av8B3AG+Av8B3AG+Av8B2gG5Av8B2AG1Av8B1QGvAv8B0QGpAv8BzgGiAv8BygGaAv8ByAGXAf8B5QFN
+        ATQC/wHDAY4B/wG1ATEBAAH/A0QBfAG1ATEBAAL/AbgBZAL/AbgBZAL/AbgBZAL/AYgBFQH/AbUBMQEA
+        Av8B1QGtAv8B0gGoAv8B0AGjAv8BzQGeAv8BygGZAf8B5QFQATcC/wHFAZIC/wHFAZIB/wG1ATEBAAH/
+        A0IBdQG1ATEBAAL/Aa4BXAL/AWUBAgH/AWYBowG8Af8BOAGdAc4B/wFWAb0B6AH/AZcB2gH4Af8BjwHK
+        Ae0B/wGWAdMB9AH/AZEB1AH1Af8BUwG6AecB/wEuAZYBygH/ATgBUwGNAf8B7AG0AYMB/wH1AUoBAAH/
+        A0QBfAQAAVkCXAHMAVwBeAGHAfgBTwFoAW8B8wFMAWgBbwHzAUwBaAFvAfMBTQFoAW8B8wFPAWoBbwHz
+        AU0BagFvAfMBUwFkAW0B8QFRAXEBhQH3AUwBqgHUAf8BWAF/AakB/gFcAXcBhwH4AVkCXQHSBAABtQEx
+        AQAC/wG7AYgB/wG1ATEBAC3/AbUBMQEAAf8DJQE3AbUBMQEAAv8BxAGQAv8BxAGQAv8BxAGQAv8BqgFM
+        Af8BtQExAQAC/wH2Aewd/wG1ATEBAAH/Ay4BRwG1ATEBAAL/AbsBiAL/AWUBAgX/A/4B/wG+AdgB6wH/
+        AUsBpwHVAf8BTQGwAdwB/wFQAbQB3gH/AToBmAHHAf8BmQG5AdAB/wHwAfEB8gH/A/wB/wP+Af8B9gFK
+        AQAB/wMlATcEAAMQARUDHAEoAxoBJAMZASMDGgElAxsBJgMbASYDGwEmAxIBGANIAYUBuwGnAagB/wNl
+        AeUDLgFHAw0BEQQAAbUBMQEAAv8ByQGfAv8BsgFhAf8BtQExAQAB/wG1ATEBAAH/AbUBMQEAAf8BtQEx
+        AQAB/wG1ATEBAAH/AbUBMQEAAf8BtQExAQAB/wG1ATEBAAH/AbUBMQEAAf8BtQExAQAB/wG1ATEBAAH/
+        AyoBQAMEAQUBtQExAQAC/wHSAagC/wHOAaAC/wHSAagC/wHSAagC/wGZATAB/wG1ATEBAAH/AbUBMQEA
+        Af8BtQExAQAB/wG1ATEBAAH/AbUBMQEAAf8BtQExAQAB/wG1ATEBAAH/AbUBMQEAAf8DQAFxAwcBCgG1
+        ATEBAAL/AckBnwL/AbIBYQL/AWUBAgL/AWUBAgL/AWUBAgH/Af4BZQECAf8B/gFlAQIB/wH8AWQBAgH/
+        Af0BZAECAf8B/gFlAQIC/wFlAQIC/wFlAQIC/wFlAQIB/wMqAUADBAEFKAADSAGEAdMBwAG9Af8DYQHa
+        AxUBHQgAAbUBMQEAAv8B1QG1Av8B1QG1Av8B1QG0Av8B1gG1Av8B1QGzAv8B1QGzFf8BtQExAQAB/wMq
+        AUADBAEFBAABtQExAQAC/wHeAb4C/wHeAb4C/wHdAbsC/wHeAb4C/wHdAbsC/wHdAbsR/wG1ATEBAAH/
+        AysBQgMHAQoDAAEBBAABtQExAQAC/wHVAbUC/wHVAbUC/wHVAbQC/wHWAbUC/wHVAbMC/wHVAbMV/wG1
+        ATEBAAH/AyoBQAMEAQUQAANAAW4DWAG8A04BmAMTARoIAAMIAQsDWgHFAd8BzwHQAf8DWAG8DAABtQEx
+        AQAC/wHgAccC/wHgAccC/wHgAccC/wHgAccC/wHgAccF/wG1ATEBAAH/AbUBMQEAAf8BtQExAQAB/wG1
+        ATEBAAH/AbUBMQEAAf8DHQEqAwQBBQMCAQMEAAG1ATEBAAL/AeYBzQL/AeYBzQL/AeYBzQL/AeYBzQL/
+        AeYBzQX/AbUBMQEAAf8BtQExAQAB/wG1ATEBAAH/AbUBMQEAAf8DHQEqAwQBBQwAAbUBMQEAAv8B4AHH
+        Av8B4AHHAv8B4AHHAv8B4AHHAv8B4AHHBf8BtQExAQAB/wG1ATEBAAH/AbUBMQEAAf8BtQExAQAB/wG1
+        ATEBAAH/Ax0BKgMEAQUDAgEDEAADNgFYAYcCfwH7AbgCpAH/A1YBtgMgAS8DHQEqA1IBpwHOAb4BvwH/
+        AYACegH8AzcBWgwAAbUBMQEAFf8BtQExAQAB/wMrAUIDBwEKAwMBBAMDAQQDAgEDAwABAQwAAbUBMQEA
+        Ff8BtQExAQAB/wMrAUIDBwEKAwMBBAMCAQMDAAEBEAABtQExAQAV/wG1ATEBAAH/AysBQgMHAQoDAwEE
+        AwMBBAMCAQMDAAEBHAADRgF/AbICpQH/AccCtgH/A38B/gGkApYB/QHUAsQB/wHDArkB/wNMAY8QAAMB
+        AQIBtQExAQAB/wG1ATEBAAH/AbUBMQEAAf8BtQExAQAB/wG1ATEBAAH/Ax0BKgMEAQUDAgEDHAADAQEC
+        AbUBMQEAAf8BtQExAQAB/wG1ATEBAAH/AbUBMQEAAf8BtQExAQAB/wMdASoDBAEFIAADAQECAbUBMQEA
+        Af8BtQExAQAB/wG1ATEBAAH/AbUBMQEAAf8BtQExAQAB/wMdASoDBAEFAwIBAy8AAQEDNwFaA1sBywFn
+        AmQB8QNnAfIDXgHQAzsBZQMBAQIQAAMKAQ4DHwEsAyUBNwMtAUYDOQFfA0IBdANIAYgDTgGXA1IBpgNW
+        AbMDVwG9A0EBcxQAAx0BKQJaAVwBzQJBAYgB+QM9AWkYAAM3AVsCQgFvAfUCXgFhAdoDJQE3EAADCAEL
+        AzcBWgFcAlkByQFlAVIBSAH0AXwBTQEpAfoBewFLASkB+gFpAkIB9QFdAloB0wE/Aj4BbAMNARIoAAMK
+        AQ4DNgFZA1UBsQNUAa4DNAFVAwwBEAwAAlkBXQHSAUECYgH2AT4BXwF5AfgBIgFfAYwB+wEkAX8BnQH+
+        ARUBnQHTAf8BGgGmAd4B/wEdAbEB5wH/AR4BugHtAf8BHAHGAfUB/wEZAawB9AH/ASkBLAFzAfwDVAGv
+        AxEBFwgAAx4BKwJZAVwBzAIZAfEB/wIFAfsB/wIlAZEB+wM+AWsQAAM3AVsCSAFxAfYCOgH3Af8CTAH1
+        Af8CWQFdAdcDJgE4CAADGQEjA1YBswG9ATgBCwH/AdABTQELAf8BywE+AQAB/wHBATABAAH/Ab4BNQEA
+        Af8BwgE8AQAB/wHBATgBAAH/AbIBIwEAAf8DWwHIAyABLxwAAx0BKgNIAYgDWAHdAXcBLwE9AfwB5AFk
+        AY8B/wHMAWkBggH/AWYCTQH6A1MBqgwAAUEBhwGWAfkBoQP/AaUD/wGeA/8BmQP/AYwD/wFmA/8BVAP/
+        AUEB/AL/ASsB+QL/ASEB3wH9Af8BEgGrAv8BAAE+Ac4B/wNaAdgDKgFBBAACXAFgAdQCIQHzAf8CAAH6
+        Af8CAAHsAf8CAAHxAf8CIQGSAfsDPgFrCAADNgFZAkcBcQH2AiUB7wH/AiYB7AH/AjcB9gH/AlwB9wH/
+        AlcBXAHfBAADGAEiAWACWwHWAdcBVwEaAf8B2AFQAQUB/wHAATIBAAH/AcgBTgEUAf8B2AGQAU8B/wG6
+        ATwBAwH/AacBIwEAAf8BqgEqAQAB/wG4ATUBAAH/AcIBNgEAAf8BZQJeAeUDIwEzDAADBgEIAzsBZANX
+        AcIBXwJMAfMBuAE8AVMB/wHkAV8BjwH/Ae0BjwGpAf8B9wGJAaEC/wGgAaYB/wH3AaQBqAH/A1oB3gwA
+        AVQBYQFlAe4BxAP/AcQD/wGzA/8BqQP/AZwD/wGKAfsC/wFiAfYC/wFQAfEC/wE+AfAC/wErAdsB9wH/
+        ARABrgH7Af8BAAGpAv8BAAFnAecB/wNaAdMDCQEMAlkBZwHyAhsC/wIAAfgB/wIAAesB/wIAAecB/wIA
+        AesB/wI+AX8B+AI5AToBYAMyAVECSgFtAfQCFAHpAf8CGgHmAf8CJwHqAf8CMQH0Af8CYgL/AlEBhAH3
+        AwcBCgFVAlMBrQHcAV4BIAH/AdoBUAEBAf8BxAExAQAB/wHEATIBAAH/AesBywGzAf8B+AH/Af4B/wHj
+        Aa0BjAH/Aa4BHgEAAf8BrAEoAQAB/wGlASQBAAH/Aa8BLQEAAf8BwQE1AQAB/wFcAloBzQMPARQEAAMJ
+        AQwDWQHHAX8BRgFWAf4BzQFNAWEB/wHkAYMBmAH/AecBpwG1Af8B4AHHAcsB/wHaAckBzAH/AeoBhQGa
+        Av8BkwGaAf8B9wGcAaAB/wNbAdkMAAFcAmQB5wHCA/8BxwP/AbcD/wGuA/8BpAP/AZkB/gL/AYgB+wL/
+        AWAB9gL/AU4B8QL/ATwB7QL/ASkB5AL/ARYB7AL/ARYB3AL/AlkBZAHsAxYBHwMxAU4CWQFoAfICEAH6
+        Af8CAAHxAf8CAAHlAf8CAAHfAf8CAAHjAf8CHwGsAf0CIQGOAfsCAQHjAf8CDAHfAf8CGQHkAf8CJwHu
+        Af8CSwH5Af8CUgFvAfQDOAFeAy0BRQHEAUgBFwH/AegBYAERAf8BzwE6AQAB/wHLAToBAAH/AcYBMwEA
+        Af8B3wGfAWMB/wHvAd8B0AH/AdUBhQFBAf8BtAEmAQAB/wGxASwBAAH/AawBKQEAAf8BpQEkAQAB/wG3
+        ATQBAAH/AbIBIwEAAf8BPgI9AWoEAAMdASoBdAFRAVIB9wHmAZUBpAH/AeUBvwHFAf8B5QHaAdsB/wHk
+        AeMB4QH/AeUB5AHhAf8B4QHSAdUB/wHrAYUBmQL/AZUBmwH/AfUBlwGcAf8DWwHZDAABWgJgAd4ByAP/
+        AdID/wHBA/8BuAP/Aa4D/wGlA/8BmQP/AYgB+wL/AWAB9gL/AU4B8QL/AT0B7gL/ASoB7wL/AR0B4gL/
+        AkwBYgHzAyEBMQQAAy8BSgJTAWkB8QIJAfUB/wIAAeoB/wIAAd8B/wIAAdcB/wIAAdsB/wIAAdwB/wIA
+        AdcB/wINAd4B/wIaAecB/wI5AfQB/wJIAXEB9gM2AVkEAANUAa8B5gFoASUB/wHiAUsBAAH/AdUBPwEA
+        Af8B0gFAAQAB/wHIAS8BAAH/Ac4BUQEUAf8B5QGwAYkB/wG+AS0BAAH/AbkBLwEAAf8BtQEvAQAB/wGy
+        ASwBAAH/AawBKAEAAf8BqgEpAQAB/wHAATcBAAH/AV0CWQHSBAADGgElAWYBRwFZAfUB7QHTAdcB/wH0
+        AfoB9wH/AfUB9AHzAf8B+AL1Af8C+gH5Af8B8wHmAeoB/wHrAYQBmAH/Af4BlAGaAf8B9gGWAZsB/wNb
+        AdkMAAFZAl0B0gHMA/8B2gP/AckD/wHBA/8BuAP/Aa8D/wGkA/8BmQP/AYgB+wL/AWAB9gL/AU8B8QL/
+        ATwB8AL/AS0B7gL/AT4BXAF4AfgDLgFICAADMAFMAlgBaAHyAgMB8AH/AgAB4AH/AgAB1QH/AgABzAH/
+        AgABzAH/AgAB1AH/AgsB3wH/AigB7gH/AkgBcQH2AzcBWwgAAV8CVwHoAfMBgwEhAf8B4AFDAQAB/wHZ
+        AUIBAAH/AdUBPAEAAf8BzwEyAQAB/wHZAYUBQgH/AfQB7wHpAf8ByQFLAQ8B/wG+ASwBAAH/AbsBMQEA
+        Af8BtAEuAQAB/wGxASwBAAH/AaoBJwEAAf8BwAE6AQAB/wFiAUgBPQH2BAADGgElAWYBRwFZAvUB3AHg
+        Ef8B+QHrAfAB/wHpAYIBlgH/Af4BkwGZAf8B9gGVAZkB/wNbAdkMAAFZAlsBxAHOAfwB/gH/AeED/wHR
+        A/8BygP/AcED/wG3A/8BrgP/AaQD/wGYA/8BiAH7Av8BYQH1Av8BTwHzAv8BPAH3Av8BKwFjAX4B/AM6
+        AWEMAAMqAUACSgGBAfcCAAHnAf8CFQHoAf8CLQHqAf8CLQHqAf8CIgHnAf8CFAHnAf8CKQGDAfoCMAEx
+        AU0MAAFqAVIBUQH0AfgBhAEcAf8B4gFBAQAB/wHfAUQBAAH/AeEBYAEeAf8B4QFpAS4B/wHfAZkBWgH/
+        AfcB+AH2Af8B9AHuAegB/wHfAaYBgwH/AcsBQwEFAf8BxAE5AQAB/wG2ATABAAH/Aa0BKQEAAf8BvwE5
+        AQAB/wF8AUoBKQH6BAADGgElAWYBRwFZAfUB9wHeAeIR/wH5AewB8AH/AecBggGVAf8B/QGTAZkB/wH2
+        AZUBmQH/A1sB2QwAA1YBtgHRAfgC/wHyA/8B2gP/AdED/wHKA/8BwAP/AbgD/wGuA/8BpAP/AZgB/gL/
+        AYgB+wL/AWEB9wL/AU4B/gL/AScBfwGeAf4DRgGADAADMgFQAjsBhQH5Ai0B9AH/AoUC/wKPAv8CjgL/
+        AocB/gH/AkIB9QH/AisBkQH8AzgBXQwAAWoBUgFRAfQB+wGCARgB/wHoAUoBAAH/Ae4BlwFLAf8B7wGp
+        AWkB/wHrAZsBVwH/Ad4BjQFIAf8B4gGwAZMB/wHwAeMB3AH/AfwD/wHeAaYBhQH/Ac8BRAEHAf8BygFA
+        AQQB/wG1AS0BAAH/AcEBPAEAAf8BfAFNASkB+gQAAxoBJQFkAUUBTAH1AfYB3gHhEf8B9wHiAegB/wHr
+        AYEBkwL/AZgBngH/AfcBlQGZAf8DWgHYDAABUgJUAaYB2QH4AfsB/wH2AfoB8gH/Ae0B/wH9Af8B3gP/
+        AdAD/wHKA/8BwQP/AbcD/wGtA/8BpAP/AZgB/gL/AYgB+wL/AWED/wEbAagB2gH/A04BmAgAAzcBWwJI
+        AYEB9wI2AfoB/wKTAv8CoAL/ApYB/QH/ApUB/QH/Ap8C/wKWAf4B/wJVAfsB/wItAZEB+wM+AWsIAAFh
+        AlgB5gH8AZIBLwH/AfgBpgFZAf8B9gG7AZcB/wHyAa0BgQH/AeoBmwFWAf8B4wGJAUEB/wHgAWgBMAH/
+        AdYBagE5Af8B9QHtAecB/wHyAeQB2gH/Ac8BVAEeAf8B0wFLARAB/wHHAT4BAQH/Ac0BRwEBAf8BZQFS
+        AUgB9AQAAxoBJQFkAUYBTAH1AfYB3wHjBf8B/QH6AfsB/wH4AeAB4wH/Ae8BrgG2Af8B4AFmAY8B/wHg
+        AVwBhAH/Af0BkgGWAf8B9wGTAZgB/wNaAdUMAAJPAVEBnAEwAUUB2wH/ARsBHQHBAf8BUQFcAcEB/wHX
+        Au0B/wHeA/8B0gP/AcoD/wHAA/8BtwP/Aa4D/wGkA/8BmgP/AYwD/wEqAb8B5wH/A1QBqwQAAzYBWQJI
+        AW4B9gJHAfwB/wKqAv8CtAL/ArAB/QH/AigB7AH/AiEB6gH/AqsB/QH/ArMC/wKsAv8CgQH9Af8CMgGS
+        AfsDPgFrBAABUwJSAagB7wGpAWAC/wHVAbMB/wH7AcABmAH/AfEBrAGAAf8B3wGkAYIB/wHdAakBjAH/
+        AeUBlAFQAf8B3wGEAToB/wHsAdEBwgH/AfYB8AHsAf8B0gFiAS4B/wHSAVMBGQH/AdgBUAEUAf8B4wFQ
+        AQ4B/wFeAlwBzgQAAxoBJQFkAUcBWQH1Ae0BywHPAf8B7wHGAcgB/wHgAYsBkgH/Ac0BUgFhAf8BqgE+
+        AVoB/wFgATUBXwH/ATgBKQFZAf8BkwE4AVEB/wHoAVoBZgH/AWcBVwFZAfIDOQFfAwYBCAQAAlgBXwHj
+        AQsBCgHzAf8CAAHjAf8CAAHCAf8BXgFpAcQB/wHsAf0B+wH/Ad8D/wHXA/8B0QP/AckD/wHCA/8BuQP/
+        Aa4D/wGlA/8BPQHZAfIB/wNYAcADNwFaAlIBZwH0AlIB/QH/ArsC/wLIAv8CxAL/AjgB9AH/AiEBjAH7
+        Aj0BegH4AjcB8QH/AsEC/wLGAv8CvwL/ApQB/gH/AkQBgQH4Aj0BPgFqAykBPgHKAWMBNQL/AdkBtAL/
+        AcsBpgH/AekBpQFlAf8B6QHPAcEB/wH2AfUB9AH/AdYBiAFHAf8B2wGIAUYB/wH3AfEB7QH/AecBygG5
+        Af8B0wFcASUB/wHXAV8BKQH/Ae4BZQEjAf8BzwE8AQgB/wM7AWMEAAMaASUBZQJSAfQBzQFVAVsB/wGv
+        AUEBUQH/AYEBOQFbAf8BOAE3AYEB/wELATEBhQH/AQABLwGGAf8BAgFBAZYB/wEqAYYBtgH/AZgBqgG/
+        Af8BxwGHAZ4B/wFfAS8BRgH7A0ABcAQAAisBowH8AR0BHgHyAf8CLwHrAf8CAAHeAf8BNAE4AcoB/wH0
+        Af8B9AH/AewD/wHRA/8BuAP/AZkB9QL/AWUB6gH8Af8BSgHaAfYB/wFAAa0BuwH9ATIBjAGdAfsBRwFi
+        AXcB9gNKAYsCSAFiAfYCWQL/AtQC/wLfAv8C0wL/AkgB9wH/AkYBZwH0AzMBUwMtAUUCUQFoAfICTQH0
+        Af8C0gL/AtkC/wLWAv8CqgL/AkMBjwH7AwYBCAFSAlABowHoAagBZQL/AdwBuAH/AfUBvgGVAf8B3gGr
+        AY4B/wHwAeYB4wH/AeUBygG7Af8B7AHZAdEB/wHqAdoB0gH/AdQBhwFJAf8B3QGBATkB/wHtAYoBOwH/
+        AewBYQEhAf8BWwJZAcMDDQERBAADGgElAVkBRAFZAfUBPgE2AV4B/wEPAToBaAH/AQABRQGkAf8BAAFI
+        AaoB/wEIAWYBvAH/AS0BpwHaAf8BTgHTAfUB/wFkAfIC/wGBAfsC/wGPAe0C/wJcAXcB+AMvAUoEAAIp
+        AX4B+gICAe4B/wEZARgB+AH/AQQBAQHqAf8CQAGtAf0BZQFnAXUB9AFZAmQB7AFdAmEB4gFZAlwBzANW
+        AbMDUAGdA0UBfQM5AV8DMAFLAyABLgQAAlkBXAHJAkYB7QH/AskC/wLtAv8CVAH7Af8CPwFrAfYDNgFZ
+        CAADLwFKAlMBaQHxAl8B+AH/AusC/wLeAv8CiwHzAf8CWgFeAdUEAAMWAR4BWwJYAcsB6QGoAWYC/wHe
+        AbgB/wH2AcEBmgH/AeABpQGDAf8B5gG7AaQB/wHiAa8BlAH/AdoBjgFPAf8B7AGZAVIB/wH5AaABUwH/
+        AewBgQExAf8BYAJaAd4DHwEtCAADRQF9AVYBigHEAf4BHAGaAdcB/wEAAWABwQH/AQsBnAHgAf8BLAG+
+        Ae4B/wFLAeAB/gH/AV4B8AL/AWMB6QL/AWwBnQHGAf4BWAFiAWQB7wFWAlgBuQMvAUoIAAJPAVABmwIk
+        AX0B/AEnASUBrQH+AlwBYQHcATACMQFNAxgBIQMRARcDCQEMIAADFgEfAlkBWwHDAkUB6wH/AlMC/wJH
+        AWgB9gM3AVsQAAMwAUwCUwFpAfEChwH9Af8ChAHyAf8CWQFcAcwDHgErCAADFgEeAVUCUwGtAc4BaAE5
+        Af8B9AG8AZEC/wHIAZsB/wH9Ab0BjgH/Af0BtQGFAv8BswGAAf8B9AGdAVMB/wHQAVQBIwH/AVgCVgG8
+        AxwBKAwAAVkBYAFmAesBlgP/AYMB+gL/ATABWAGSAfoBPgFuAYsB+AFQAekC/wFIAcUB9gH/AUYBZgFz
+        AfUCWQFbAcQDQAFxAxEBF1QAAxYBHwJZAVsBwwJQAWUB9AI1ATYBWBgAAzABSwJXAWcB8gJZAVwBzwMd
+        ASkQAAMHAQkDLwFKA1YBtgFiAlgB7wGGAk0B+gGEAk0B+gFpAlMB8QFbAlkBxAM2AVkDCgEOEAADQwF3
+        AVkCXAHPAVIBdAGLAfcCSAFJAYcDOwFkAVkCXQHXA0sBjgMhATBQAAM4AV4CWQFkAesCVQFXAboDOgFh
         A1kBxwNZAcwDWgHKA1oBygNaAcoDWgHKA1oBygNaAcoDWgHKA1oBygNaAcoDWgHKA1wBzgNZAcMDNAFV
-        RAADVwHCA0QBezgAA2EB4gNwAfEDZwHuA2cB7gNnAe4DZQHuA2UB7gNlAe4DZQHuA2UB7gNlAe4DZQHu
-        A2gB8ANlAeUEAANhAe4D4gH/A90B/wPaAf8C2wHaAf8D2QH/A9gB/wPYAf8D1wH/A9YB/wPVAf8D1AH/
-        A9MB/wPgAf8DmQH/A1cBvQwAA0gBhgJNATIB+gNDAXcsAANcAdQBBwEjATgB/wNJAYkDEwEaMAABogKj
-        Bf8B9gLwAf8B9gLvAf8B9gLvAf8B9ALvAf8B9ALtAf8B9ALtAf8B9ALtAf8B8gLrAf8B8wLrAf8B8gLo
-        Av8C+wH/AaICoQH/BAADhAH3BP8C9AHzAf8B/QH4AfUC/wH2AfMB/wH9AfQB8QH/AfwB8wHwAf8B+wHw
-        Ae0B/wH5AfAB7QH/AfgB7wHsAf8B9wHtAeoB/wHyAe0B6gH/AecB5gHnAf8D9QH/A8YB/wNZAcMIAAMO
-        ARMDXwHgATABxAFLAf8BRwFqAUEB+QM4AV4oAAMpAT8BRAFSAWkB9wFhAZoBrgH/A1sB0ANCAXUDBgEI
-        KAADnwH9AfoC8wH/AeoC4gH/AekC4QH/AekC4QH/AegC3wH/AecC3gH/AeYC3gH/AeYC3QH/AeQC2wH/
-        AeQC2gH/AeIC1wH/AfUC6wH/AZ4CnAH9BAADcwH2AfwC+wH/Ae4B7AHqAf8BuwHMAdoB/wGTAbMBywH/
-        AZgBtQHLAf8BlgG1AcsB/wGVAbQBygH/AZUBswHJAf8BlAGzAckB/wGOAa4BxwH/AakBugHIAf8B3gLc
-        Af8B7gLtAf8DvQH/A1YBwQgAA0ABcQE7AZoBNgH/AUkB6QGSAf8BPQHSAWUB/wFMAV8BTAHzAy4BRygA
-        A1EBogFuAcQB3wH/AZsB5AHyAf8BIgGKAa0B/wNMAZEDAgEDJAABnwKeAv0C9gH/AfUC7QH/AfMC7AH/
-        AfMC7AH/AfIC6gH/AfEC6QH/AfEC6QH/AfAC6AH/Ae8C5gH/Ae8C5QH/Ae0C4wH/AfgC7gH/A5wB/QQA
-        A3MB9gL/Af4B/wHtAeQB5wH/AUkBswHYAf8BAQHLAesB/wEPAdAB7QH/ARIB0QHuAf8BEgHUAfEB/wET
-        AdIB7gH/ARUB0gHuAf8BDAHPAe4B/wE2AaQBzAH/AdUBzwHTAf8B9gHyAfAB/wPAAf8DVgHBBAADBQEH
-        AVYBWAFWAbwBTAHPAWsB/wFtAegBqwH/AV4B6AGjAf8BQgHOAWUB/wFZAWABWQHrAyQBNSQAAzEBTgEO
-        AW4BpQH/AZcB5gH5Af8BhgHoAfUB/wFAAVUBjwH9AyIBMiQAA6AB/QH7AvcB/wHeAtoB/wHeAtkB/wHf
-        AtoB/wHeAtkB/wHdAtkB/wHdAtkB/wHdAtgB/wHcAtYB/wHbAtYB/wHaAtQB/wH4AvEB/wGeAp0B/QQA
-        A3UB9gT/AeoB5AHmAf8BTgG7AeEB/wEhAdwC/wEmAd0C/wEOAdMB/QH/AQkB0AH3Af8BDAHUAfwB/wEM
-        Ad0C/wEFAd0C/wE0Aa4B2AH/AdUBzwHTAf8B9wHzAfEB/wPBAf8DVgHBBAADLgFIAUMBfwE8Af4BiQHu
-        AbUB/wGWAfMBxQH/AYoB6wG4Af8BagHsAa8B/wFBAcwBYwH/AVcBXAFXAd8DGgEkIAADCAELA1MBrQEf
-        AaEBzAH/AZ0B0wHdAf8BqgHiAfAB/wNUAaskAAOoAf0B0gLRAf8BHwIeAf8CEwESAf8BFwEWARUB/wET
-        ARIBEwH/ARYCFQH/ARgCFQH/AxgB/wEWAhcB/wEPARIBEwH/AxsB/wHLAsoB/wOoAf0EAAN1AfYE/wHp
-        AecB6QH/AV0BtwHhAf8BXAHQAf4B/wFcAdUC/wE7AakB3AH/AUABXgGHAf8BEwGfAdoB/wEAAcEC/wEA
-        AbwC/wExAaUB1wH/AdgB1AHWAf8B+AH0AfIB/wLCAcMB/wNWAcEDAgEDA1ABmgFdAc4BggH/AaEB+gHR
-        Af8BTQHNAWcB/wFpAeYBpQH/AZUB8wHIAf8BbQHyAbgB/wFAAcgBXgH/AVsBXgFbAdADFAEcIAADEgEY
-        A1YBswFhAcYB4QH/AfAD/wGOAZoBogH/AzMBUgMPARQcAAOoAf0BxgLIAf8DAAH/AwAB/wMAAf8DAAH/
-        AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AbwCvQH/A6gB/QQAA3UB9gT/AekB6AHrAf8BYAG5AeEB/wFq
-        AdUB/gH/AWwB3QL/AWIBrAHKAf8BXAFJAUUB/wEzAZ0ByQH/AQABuAL/AQABrwL/ATIBogHXAf8B2gHV
-        AdYB/wH6AfYB9AH/AcQCxQH/A1YBwQMcAScBUQF9AUYB9wGYAfwByQH/AV4BqgFzAf4BWgFhAVoB5AFC
-        AWwBQgH1AV0B4wGYAf8BkQH5AcwB/wFtAfcBwQH/ATwBwwFVAf8BVQFXAVUBtwMKAQ0gAAMKAQ4DTwGl
-        AY0BvgHPAf8BmAHHAeAB/wFCAVwBbwH1AVgCXAHRAxoBJRgAA6gB/QHKAc8B0AH/AQcBDwEQAf8DAAH/
-        ATQBNwEwAf8BvQG2AZYB/wESASQBIAH/ARsBIQEYAf8BIgEeARMB/wMAAf8BXgEsAQsB/wMAAf8BwgK/
-        Af8DqAH9BAADdQH2BP8B5gHnAesB/wFmAbsB4gH/AZcB5AL/AZYB6AL/AZABxwHdAf8BiwGSAZMB/wFd
-        AbwB3gH/ARgBxQL/ARABwAL/ATgBpgHYAf8B1wHUAdcB/wH7AfcB9QH/A8YB/wNWAcEDRwGCAUsB0AFr
-        Af8BUAHVAXAB/wFYAVoBWAHAAwABAQMtAUUBXQFhAV0B4gFCAcsBXgH/AYEB+QHGAf8BawH+AcoB/wE1
-        AcABTgH/A1IBqQMEAQUgAAMKAQ4DVwHFAUMBlAG7Af8BQQGYAbsB/wEiAScBLAH/A1ABnwMAAQEUAAOo
-        Af0B0QLMAf8BuAGYAVsB/wFhAWIBTAH/AbYCuAX/AUoCVAH/AVoBUwE4Af8BYAFfAUcB/wEzAScBEgH/
-        Ac4BYwEiAf8BPwEXAQMB/wHJAb4BvQH/A6gB/QQAA3cB9gT/AfEB8AHxAf8BgwG5AdoB/wFeAbcB3gH/
-        AWIBuAHeAf8BYgG/AecB/wFwAcsB8wH/AVMBuwHoAf8BPgGuAeAB/wE0AaoB3AH/AVsBqgHRAf8B4QHf
-        AeAB/wH6AfcB9gH/A8gB/wNWAcEBWAFiAVgB6QE1AdABUwH/AVkBWwFZAcQDDQESCAADHAEoAVQBVgFU
-        AasBKwG0ATcB/wFfAfIBswH/AWMB/wHQAf8BMAG7AUQB/wNLAY4kAAI+AT8BbAGAAXABbQH/AZMBGQEP
-        Af8BFAIAAf8BIwEBAQAB/wNAAXAUAAGmAqgB/QHRAcwBygH/AdcBrwFpAf8B/AHhAa4B/wH2AvcB/wH7
-        Af4C/wHkAdcBxQH/AcsBrwFtAf8BjwFrAUkB/wHMAZIBPQL/AZEBLwH/AckBPQEFAf8BygG9AbsB/wGl
-        AqgB/QQAA3cB9gT/AfsB+gH5Af8B5gHqAe4B/wGfAacBsQH/AaIBpwGuAf8BnwGnAa8B/wHAAcwB1wH/
-        AbABtQG9Af8BrgGtAbMB/wGfAaEBqAH/Ad4B3wHjAf8B7gLtAf8D9QH/A8kB/wNWAcEBPwFrATkB9gFZ
-        AVwBWQHPAxQBGxAAAwQBBQE9AT4BPQFqAT8BbgE7AfYBSgHoAZYB/wFaAf8B0gH/ASkBuAE6Af8BRQFG
-        AUUBfiAAAwEBAgNHAYIBvgFXAT0B/wFpARABDAH/AQ8CAAH/AUcBKwEmAfkBLAIrAUMQAAGnAqgB/QHQ
-        AcoByQH/Ac0BoQFbAv8B3AGdAf8B/QHlAcEB/wH2AeMBzQH/Af4B4AGuAv8B2gGaAf8B+QHAAWcB/wH8
-        AacBRAL/AYABJAH/AdABOgEAAf8ByQG8AboB/wGkAqgB/QQAA3cB9gT/A/cD/wH+Af8B2wHWAdQB/wG7
-        AbUBsgH/AckBwgHAAf8BuwG1AbIB/wHMAccBxAH/AbsBtQGyAf8B0AHLAcgB/wH3AfUB9AH/AuoB6QH/
-        A/YB/wPLAf8DVgHBAxgBIQMRARccAAMkATYBWgFeAVoB1QEzAdQBXwH/AVYB/AG+Af8BJQG3ATcB/wM8
-        AWYgAAMCAQMDUwGqAcYBZgFMAf8BRQEFAQIB/wEWAgAB/wFdAlkB1wMYASEMAAGnAqgB/QHPAcoByAH/
-        Ac0BlwFJAv8BywGFAv8BzgGOAv8BzwGQAv8BzQGNAv8BxAFvAv8BtgFUAf8B/AGWATcB/wH6AWABGAH/
-        AcgBKwEAAf8ByAG6AbkB/wGlAqgB/QQAA3cB9gT/A/kB/wP6Af8B+QL6Af8DywH/AbgCtgH/AcECvwH/
-        AbgCtgH/A8QB/wHwAvEB/wHuAu8B/wPrAf8D+QH/A80B/wNWAcEoAAMQARUBTwFQAU8BmwEgAb4BOAH/
-        AUwB9QGkAf8BOgGoAUAB/QMxAU4gAAMQARYBXAJZAcwBuQFZATsB/wEmAgAB/wEqAQMBAAH/AVECUAGf
-        DAABpwKoAf0BzQHFAcQB/wHQAYIBKgL/AbkBTwL/Ab8BYAL/AcEBYwL/AbwBWgL/AbABSQL/AZgBMwH/
-        Af0BaQEcAv8BRAEAAf8BzQEWAQAB/wHGAbYBtQH/AaUCqAH9BAADeQH2BP8D+wH/A/kB/wP6Af8B+gL7
-        Af8D5QH/A9UB/wPhAf8D9AH/A/EB/wPtAf8D6wH/A/cB/wPPAf8DVwHCMAABOQE6ATkBYAFYAV8BWAHj
-        ATUB3QFaAf8BVAFoAVUB7SQAAx0BKgFiAlgB6QGfAUQBIgH/ARECAAH/AUYBBAEAAf8DNwFbCAADqAH9
-        AdQCywH/AZgBTgEnAf8BtAFtATYB/wGzAYMBPwH/AbQBhgFAAf8BswGCAT0B/wGzAWkBNQH/AbMBWwEt
-        Af8BswFJASEB/wG1ATQBEQH/AZcBIAEPAf8BywG/Ab4B/wGnAqgB/QQAA4gB+CD/A/0B/wP8Af8D+gH/
-        A/kF/wPTAf8DVwHCNAADHQEpAVcBWgFXAcUBTQFmAU0B7ygAAyoBQAF5AUkBSAH2AYABMQEUAf8BDgIA
-        Af8BYAFYAVcB6wgAAaMCpAX/AdsB3AHgAf8C2AHeAf8C2QHdAf8B2AHZAd0B/wHYAdkB3gH/AdgB2QHe
-        Af8B2AHaAd4B/wHYAdsB3wH/AdcB3AHgAf8B2QHcAd8C/wL8Af8DogH/BAADWwHLA6UB/gOxAf0DsQH9
-        A7EB/QOxAf0DsQH9A7EB/QOxAf0DsQH9A7EB/QOxAf0DsgH9A60B/gNqAfUDOwFlbAADOwFkAXUBSAE/
-        AfYBWQFCAT4B9QFSAlEBpwgAA14B3QNlAe8DZwHtA2cB7QNnAe0DZwHtA2cB7QFmAmcB7QNmAe0DZgHt
-        A2YB7QNjAe4DZAHvA18B4JMAAQEDBAEFAxABFgMpAT8DPgFsA0YBgANEAXsDOAFcAyABLgMKAQ0DAQEC
-        DAABWgJdAdMBTAFyAYAB8wFXAWYBbgHvAVcBZgFuAe8BVwFmAW4B7wFXAWYBbgHvAVcBZgFuAe8BVwFm
-        AW4B7wFXAWYBbgHvAVcBZgFuAe8BVwFmAW4B7wFXAWYBbgHvAVcBcgF7AfIBWwJeAdkLAAEBAwYBCAMK
-        AQ0DCgENAwoBDQMKAQ0DCgENAwoBDQMKAQ0DCgENAwoBDQMKAQ0DBwEKAwMBBAsAAQEDBgEIAwoBDQMK
-        AQ0DCgENAwoBDQMKAQ0DCgENAwoBDQMKAQ0DBwEKAwMBBBMAAQEDBwEJAxUBHQM5AV8DUwGwAlgBYQHm
-        AV8BjAGUAfsBUwGoAbEB/QFOAV0BXwHwA1kB0gNSAakDRgGAAyQBNgMEAQYIAAEvAaAB0gH/ASUB+wL/
-        ARsB8QL/AR4B8AL/AR8B8AL/AR8B8QL/AR8B8QL/AR8B8QL/AR8B8QL/AR8B8AL/AR8B8AL/AR0B8AL/
-        ASMB+wL/ATMBrAHYAf8EAAMEAQUDJAE2A0QBeQNKAYsDSgGLA0oBiwNKAYsDSgGLA0oBiwNKAYsDSgGL
-        A0oBiwNKAYsDRwGCAzMBUgMLAQ8DBAEFAyQBNgNEAXkDSgGLA0oBiwNKAYsDSgGLA0oBiwNKAYsDSgGL
-        A0oBiwNFAX8DKQE/AwMBBAgAAwQBBQMkATYDRAF6Al4BYQHaAVkBdgGDAfwBrwHVAeMB/wHEAfIB/QH/
-        AbcB8AL/AaoB/gL/AZ8B/QH+Af8BiAHaAeUB/wFaAX8BmwH+AUUBUgFlAfQDVgG5AzUBVwMLAQ8EAAEs
-        AXkBqwH8ARUB4gL/AQwB2QL/AQ4B2AL/AQ0B1wL/AQ8B3wL/ARAB5QL/ARAB5QL/ARAB4AL/AQ4B2QL/
-        AQ8B2QL/AQwB2QL/ARMB4wL/AS4BfAGvAfwEAAMdASoBtQE3AQAB/wG1ATcBAAH/AbUBNwEAAf8BtQE3
-        AQAB/wG1ATcBAAH/AbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/AbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/
-        AbUBNwEAAf8BtQE3AQAB/wNSAakDNQFYAx0BKgG1ATcBAAH/AbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/
-        AbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/AbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/AbUBNwEAAf8DSwGO
-        AxQBGwMAAQEEAAMdASoBtQE3AQAB/wHzAU8BAAH/AZUBvwHTAf8B7wP/AdQB+wL/AakB5gL/AZIB2QL/
-        AY4B6wL/AY0B8wL/AZ0B/QL/AasD/wFlAcQB1wH/AVsBGgEAAf8DUwGtAzUBWAQAAS4BeQGrAfwBLwHg
-        Av8BIgHVAv8BFgHTAv8BCwHQAv8BAAGeAfYB/wEAAYkB5gH/AQABigHlAf8BAAGaAfMB/wEFAckC/wEG
-        AcwC/wEDAckC/wEJAdQC/wEsAXsBrwH8BAABtQE3AQAC/wFlAQMB/wG1ATcBAAL/AagBTwL/AacBTgL/
-        AaYBTAL/AaQBSQL/AaIBRQL/AaABQQL/AZ0BPAL/AZsBOAL/AZsBOAH/AeUBPgEUAv8BmwE4Af8BtQE3
-        AQAB/wNIAYgBtQE3AQAB/wG1ATcBAAL/AWsBCAL/Aa8BWwL/AaUBSgL/AaQBSAL/AaMBRgL/AaABQgL/
-        AZ8BQAL/AZ0BPAL/AZsBOAH/AbUBNwEAAf8DVAGvAzYBWQMbASYEAAG1ATcBAAL/AWUBAwH/AfsBaQEI
-        Af8BmAHDAdgB/wHZA/8BqwHmAv8BhgHTAv8BZQHKAv8BagHdAv8BZwHiAv8BgQHoAv8BkQH3Av8BXQHC
-        AdsB/wFmATgBEgH/AekBSwEAAf8DSAGIBAABLgF4AawB/AFBAeAC/wE0AdYC/wElAdQC/wEXAdsC/wEA
-        AYAB4wH/AgABaQH/AgABYwH/AQABXwHcAf8BAAHHAv8BAAG+Av8BAAG7Av8BAAHGAv8BKwF6Aa8B/AQA
-        AbUBNwEAAv8BbwERAf8BtQE3AQAC/wGyAWIC/wGxAWEC/wGxAWAC/wGvAVwC/wGrAVYC/wGoAVAC/wGn
-        AU0C/wGkAUgC/wGiAUQB/wHlAUEBGQL/AaIBRAH/AbUBNwEAAf8DSwGQAbUBNwEAAv8BZgEBAf8BtQE3
-        AQAB/wG1ATcBAAL/Aa8BWwL/Aa4BWQL/Aa0BVwL/AaoBUgL/AagBTgL/AaUBSgL/AaMBRgH/AeUBQgEb
-        Af8BtQE3AQAB/wNMAZEDFAEbBAABtQE3AQAC/wFvAREB/wH7AWkBCAH/AYkBvwHbAf8BuQHwAv8BjAHW
-        Av8BVwHEAv8BSAG8Av8BVAHPAv8BUQHTAv8BXAHaAv8BawHnAv8BTAG4Ad0B/wFmATsBFwH/AekBSwEA
-        Af8DSwGQBAABLgF4AawB/AFMAd8C/wFEAdgC/wEzAdMC/wEnAdwC/wEIAa8B8wH/AQABAwFSAf8CAAFH
-        Af8BAAGVAeoB/wEAAbsC/wEAAbAC/wEAAa4C/wEAAbkC/wErAXkBrwH8BAABtQE3AQAC/wGIASMB/wG1
-        ATcBAAL/Ab4BhwL/Ab4BhgL/AbwBgwL/AboBbwL/AbcBagL/AbMBYwL/AbABXQL/Aa0BWAL/AaoBUwH/
-        AeUBRQEgAv8BqQFQAf8BtQE3AQAB/wNLAZABtQE3AQAC/wGSASsC/wFwAQ4B/wG1ATcBAAL/AboBbwL/
-        AbgBagL/AbYBaAL/AbQBZAL/AbABXQL/Aa8BWwL/Aa0BVwH/AeUBRwEkAf8BtQE3AQAB/wNUAa8DNQFY
-        AwMBBAG1ATcBAAL/AYgBIwH/AfsBaQEIAf8BZQG3Ad4B/wGXAd8C/wFaAcUC/wEvAbAC/wEwAa8C/wFH
-        AcQC/wEzAcAC/wFDAcoC/wFTAdcC/wE8AbAB4AH/AWYBPwEdAf8B6QFLAQAB/wNLAZAEAAEwAXgBrAH8
-        AWAB4wL/AVgB3AL/AUcB2QL/ATYB4AL/AQABZwG3Af8CAAEQAf8CAAEMAf8BAAFUAaoB/wEAAb0C/wEA
-        AbMC/wEAAbAC/wECAbsC/wErAXoBrwH8BAABtQE3AQAC/wGVATcB/wG1ATcBAAL/AcgBmgL/AcgBmAL/
-        AcYBlgL/AcQBkAL/AcABiwL/Ab0BhAL/AbkBbgL/AbYBZwL/AbIBYgH/AeUBSQEnAv8BsAFdAf8BtQE3
-        AQAB/wNLAZABtQE3AQAC/wGfAUAC/wGfAUAC/wFnAQIB/wG1ATcBAAL/AcMBjgL/AcABiQL/Ab4BhAL/
-        AboBbwL/AbgBagL/AbUBZgH/AeUBSQEnAv8BsAFdAf8BtQE3AQAB/wNMAZEDEwEaAbUBNwEAAv8BlQE3
-        Af8B/AFqAQgB/wFOAa4B4AH/AWUBzQL/AUgBvAL/AUkBvgL/AVcByAL/AWsB1QL/AVcBywL/AUABwgL/
-        ATsBxgL/ASYBpgHiAf8BbAFGASUB/wHrAUwBAAH/A0sBkAQAATQBeQGtAfwBigHqAv8BgAHiAv8BXwHe
-        Av8BUQHlAv8BEwGZAc8B/wEAAQsBIAH/AQABBgEaAf8BAAGJAcMB/wEXAcUC/wEYAbsC/wEUAbkC/wEb
-        AcMC/wExAXsBsAH8BAABtQE3AQAC/wGhAUwB/wG1ATcBAAL/AdMBrAL/AdMBrQL/AdEBqQL/Ac4BpAL/
-        AcsBngL/AccBlQL/AcQBkAL/AcABigL/Ab0BhAH/AeUBTgEvAv8BugFvAf8BtQE3AQAB/wNLAY8BtQE3
-        AQAC/wGrAVQC/wGrAVQC/wGTAS0B/wG1ATcBAAL/Ac4BoAL/AcwBnAL/AckBlwL/AcUBkgL/AcIBiwL/
-        Ab8BhwH/AeUBUAE0Av8BugFvAf8BtQE3AQAB/wNUAa8DNQFYAbUBNwEAAv8BoQFMAf8B/gFrAQgB/wFJ
-        AaoB4QH/AZQB3gL/AZkB4wL/AZAB4gH+Af8BYAHJAfsB/wFnAdAB+wH/AYsB3QH9Af8BmgHiAv8BjQHd
-        Av8BOwGoAeIB/wGmAWoBQwH/AfEBTgEAAf8DSwGPBAABPwGgAdIB/wGjAfgC/wGZAe4C/wGGAeoC/wFq
-        AegC/wFXAecC/wEwAcYB7gH/ASQBwgHsAf8BMQHdAv8BOgHQAv8BMwHIAv8BMwHJAv8BQwHYAv8BPAGn
-        AdgB/wQAAbUBNwEAAv8BrgFiAf8BtQE3AQAC/wHcAb4C/wHcAb4C/wHaAbkC/wHYAbUC/wHVAa8C/wHR
-        AakC/wHOAaIC/wHKAZoC/wHIAZcB/wHlAVMBOgL/AcMBjgH/AbUBNwEAAf8DRAF8AbUBNwEAAv8BuAFq
-        Av8BuAFqAv8BuAFqAv8BiAEbAf8BtQE3AQAC/wHVAa0C/wHSAagC/wHQAaMC/wHNAZ4C/wHKAZkB/wHl
-        AVYBPQL/AcUBkgL/AcUBkgH/AbUBNwEAAf8DQgF1AbUBNwEAAv8BrgFiAv8BawEIAf8BbAGjAbwB/wE+
-        AZ0BzgH/AVwBvQHoAf8BlwHaAfgB/wGPAcoB7QH/AZYB0wH0Af8BkQHUAfUB/wFZAboB5wH/ATQBlgHK
-        Af8BPgFZAY0B/wHsAbQBgwH/AfUBUAEAAf8DRAF8BAABWQJcAcwBXAF+AZYB+AFPAW8BfgHzAUwBbwF+
-        AfMBTAFvAX4B8wFNAW8BfgHzAU8BcAF+AfMBTQFwAX4B8wFTAW4BdwHxAVEBgAGMAfcBUgGqAdQB/wFY
-        AYgBtQH+AVcBfQGWAfgBWQJdAdIEAAG1ATcBAAL/AbsBiAH/AbUBNwEALf8BtQE3AQAB/wMlATcBtQE3
-        AQAC/wHEAZAC/wHEAZAC/wHEAZAC/wGqAVIB/wG1ATcBAAL/AfYB7B3/AbUBNwEAAf8DLgFHAbUBNwEA
-        Av8BuwGIAv8BawEIBf8D/gH/Ab4B2AHrAf8BUQGnAdUB/wFTAbAB3AH/AVYBtAHeAf8BQAGYAccB/wGZ
-        AbkB0AH/AfAB8QHyAf8D/AH/A/4B/wH2AVABAAH/AyUBNwQAAxABFQMcASgDGgEkAxkBIwMaASUDGwEm
-        AxsBJgMbASYDEgEYA0gBhQG7AacBqAH/A2UB5QMuAUcDDQERBAABtQE3AQAC/wHJAZ8C/wGyAWcB/wG1
-        ATcBAAH/AbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/AbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/AbUBNwEA
-        Af8BtQE3AQAB/wG1ATcBAAH/AbUBNwEAAf8DKgFAAwQBBQG1ATcBAAL/AdIBqAL/Ac4BoAL/AdIBqAL/
-        AdIBqAL/AZkBNgH/AbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/AbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/
-        AbUBNwEAAf8BtQE3AQAB/wNAAXEDBwEKAbUBNwEAAv8ByQGfAv8BsgFnAv8BawEIAv8BawEIAv8BawEI
-        Af8B/gFrAQgB/wH+AWsBCAH/AfwBagEIAf8B/QFqAQgB/wH+AWsBCAL/AWsBCAL/AWsBCAL/AWsBCAH/
-        AyoBQAMEAQUoAANIAYQB0wHAAb0B/wNhAdoDFQEdCAABtQE3AQAC/wHVAbUC/wHVAbUC/wHVAbQC/wHW
-        AbUC/wHVAbMC/wHVAbMV/wG1ATcBAAH/AyoBQAMEAQUEAAG1ATcBAAL/Ad4BvgL/Ad4BvgL/Ad0BuwL/
-        Ad4BvgL/Ad0BuwL/Ad0BuxH/AbUBNwEAAf8DKwFCAwcBCgMAAQEEAAG1ATcBAAL/AdUBtQL/AdUBtQL/
-        AdUBtAL/AdYBtQL/AdUBswL/AdUBsxX/AbUBNwEAAf8DKgFAAwQBBRAAA0ABbgNYAbwDTgGYAxMBGggA
-        AwgBCwNaAcUB3wHPAdAB/wNYAbwMAAG1ATcBAAL/AeABxwL/AeABxwL/AeABxwL/AeABxwL/AeABxwX/
-        AbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/AbUBNwEAAf8BtQE3AQAB/wMdASoDBAEFAwIBAwQAAbUBNwEA
-        Av8B5gHNAv8B5gHNAv8B5gHNAv8B5gHNAv8B5gHNBf8BtQE3AQAB/wG1ATcBAAH/AbUBNwEAAf8BtQE3
-        AQAB/wMdASoDBAEFDAABtQE3AQAC/wHgAccC/wHgAccC/wHgAccC/wHgAccC/wHgAccF/wG1ATcBAAH/
-        AbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/AbUBNwEAAf8DHQEqAwQBBQMCAQMQAAM2AVgBjQKFAfsBuAKk
-        Af8DVgG2AyABLwMdASoDUgGnAc4BvgG/Af8BkgKDAfwDNwFaDAABtQE3AQAV/wG1ATcBAAH/AysBQgMH
-        AQoDAwEEAwMBBAMCAQMDAAEBDAABtQE3AQAV/wG1ATcBAAH/AysBQgMHAQoDAwEEAwIBAwMAAQEQAAG1
-        ATcBABX/AbUBNwEAAf8DKwFCAwcBCgMDAQQDAwEEAwIBAwMAAQEcAANGAX8BsgKlAf8BxwK2Af8BhwJ/
-        Af4BpAKWAf0B1ALEAf8BwwK5Af8DTAGPEAADAQECAbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/AbUBNwEA
-        Af8BtQE3AQAB/wMdASoDBAEFAwIBAxwAAwEBAgG1ATcBAAH/AbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/
-        AbUBNwEAAf8DHQEqAwQBBSAAAwEBAgG1ATcBAAH/AbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/AbUBNwEA
-        Af8DHQEqAwQBBQMCAQMvAAEBAzcBWgNbAcsBcAJuAfEBcgJvAfIDXgHQAzsBZQMBAQIQAAMKAQ4DHwEs
-        AyUBNwMtAUYDOQFfA0IBdANIAYgDTgGXA1IBpgNWAbMDVwG9A0EBcxQAAx0BKQJaAVwBzQJBAY4B+QM9
-        AWkYAAM3AVsCQgGAAfUCXgFhAdoDJQE3EAADCAELAzcBWgFcAlkByQFwAUoBQQH0AYkBSAEnAfoBhwFF
-        AScB+gFvAUIBQAH1AV0CWgHTAT8CPgFsAw0BEigAAwoBDgM2AVkDVQGxA1QBrgM0AVUDDAEQDAACWQFd
-        AdIBNwFiAXEB9gE9AWsBfwH4ASIBbQGSAfsBJAF/AakB/gEbAZ0B0wH/ASABpgHeAf8BIwGxAecB/wEk
-        AboB7QH/ASIBxgH1Af8BHwGsAfQB/wEjATIBeQH8A1QBrwMRARcIAAMeASsCWQFcAcwCHwHxAf8CCwH7
-        Af8CJQGXAfsDPgFrEAADNwFbAj8BfQH2AkAB9wH/AlIB9QH/AlkBXQHXAyYBOAgAAxkBIwNWAbMBvQE+
-        AREB/wHQAVMBEQH/AcsBRAEAAf8BwQE2AQAB/wG+ATsBAAH/AcIBQgEAAf8BwQE+AQAB/wGyASkBAAH/
-        A1sByAMgAS8cAAMdASoDSAGIA1gB3QF9ATUBRwH8AeQBagGPAf8BzAFvAYIB/wFsAk0B+gNTAaoMAAFB
-        AY0BrQH5AaED/wGlA/8BngP/AZkD/wGMA/8BbAP/AVoD/wFHAfwC/wExAfkC/wEnAd8B/QH/ARgBqwL/
-        AQABRAHOAf8DWgHYAyoBQQQAAlwBYAHUAicB8wH/AgAB+gH/AgAB7AH/AgEB8QH/AiEBmQH7Az4BawgA
-        AzYBWQI7AX0B9gIrAe8B/wIsAewB/wI9AfYB/wJiAfcB/wJXAV4B3wQAAxgBIgFgAlsB1gHXAV0BIAH/
-        AdgBVgELAf8BwAE4AQAB/wHIAVQBGgH/AdgBkAFVAf8BugFCAQkB/wGnASkBAAH/AaoBMAEAAf8BuAE7
-        AQAB/wHCATwBAAH/AWUBXgFdAeUDIwEzDAADBgEIAzsBZANXAcIBXwJMAfMBuAFCAVkB/wHkAWUBjwH/
-        Ae0BjwGpAf8B9wGJAaEC/wGgAaYB/wH3AaQBqAH/A1oB3gwAAVQBZwFyAe4BxAP/AcQD/wGzA/8BqQP/
-        AZwD/wGKAfsC/wFoAfYC/wFWAfEC/wFEAfAC/wExAdsB9wH/ARYBrgH7Af8BAAGpAv8BAAFtAecB/wNa
-        AdMDCQEMAlUBcgHyAiEC/wIAAfgB/wIAAesB/wIAAecB/wIAAesB/wI6AZEB+AI5AToBYAMyAVECQgF7
-        AfQCGgHpAf8CIAHmAf8CLQHqAf8CNwH0Af8CaAL/AlEBigH3AwcBCgFVAlMBrQHcAWQBJgH/AdoBVgEH
-        Af8BxAE3AQAB/wHEATgBAAH/AesBywGzAf8B+AH/Af4B/wHjAa0BjAH/Aa4BJAEAAf8BrAEuAQAB/wGl
-        ASoBAAH/Aa8BMwEAAf8BwQE7AQAB/wFcAloBzQMPARQEAAMJAQwDWQHHAYEBRgFWAf4BzQFTAWcB/wHk
-        AYMBmAH/AecBpwG1Af8B4AHHAcsB/wHaAckBzAH/AeoBhQGaAv8BkwGaAf8B9wGcAaAB/wNbAdkMAAFc
-        AWQBaQHnAcID/wHHA/8BtwP/Aa4D/wGkA/8BmQH+Av8BiAH7Av8BZgH2Av8BVAHxAv8BQgHtAv8BLwHk
-        Av8BHAHsAv8BHAHcAv8CWQFkAewDFgEfAzEBTgJVAXUB8gIWAfoB/wIAAfEB/wIAAeUB/wIAAd8B/wIA
-        AeMB/wIZAbIB/QIhAZQB+wIHAeMB/wISAd8B/wIfAeQB/wItAe4B/wJRAfkB/wJSAXwB9AM4AV4DLQFF
-        AcQBTgEdAf8B6AFmARcB/wHPAUABAAH/AcsBQAEAAf8BxgE5AQAB/wHfAZ8BaQH/Ae8B3wHQAf8B1QGF
-        AUcB/wG0ASwBAAH/AbEBMgEAAf8BrAEvAQAB/wGlASoBAAH/AbcBOgEAAf8BsgEpAQAB/wE+Aj0BagQA
-        Ax0BKgGBAVEBUgH3AeYBlQGkAf8B5QG/AcUB/wHlAdoB2wH/AeQB4wHhAf8B5QHkAeEB/wHhAdIB1QH/
-        AesBhQGZAv8BlQGbAf8B9QGXAZwB/wNbAdkMAAFaAmAB3gHIA/8B0gP/AcED/wG4A/8BrgP/AaUD/wGZ
-        A/8BiAH7Av8BZgH2Av8BVAHxAv8BQwHuAv8BMAHvAv8BIwHiAv8BSwFMAWwB8wMhATEEAAMvAUoCUwFy
-        AfECDwH1Af8CAAHqAf8CAAHfAf8CAAHXAf8CAAHbAf8CAAHcAf8CBAHXAf8CEwHeAf8CIAHnAf8CPwH0
-        Af8CSAF9AfYDNgFZBAADVAGvAeYBbgErAf8B4gFRAQAB/wHVAUUBAAH/AdIBRgEAAf8ByAE1AQAB/wHO
-        AVcBGgH/AeUBsAGJAf8BvgEzAQAB/wG5ATUBAAH/AbUBNQEAAf8BsgEyAQAB/wGsAS4BAAH/AaoBLwEA
-        Af8BwAE9AQAB/wFdAlkB0gQAAxoBJQFsAUcBWQH1Ae0B0wHXAf8B9AH6AfcB/wH1AfQB8wH/AfgC9QH/
-        AvoB+QH/AfMB5gHqAf8B6wGEAZgB/wH+AZQBmgH/AfYBlgGbAf8DWwHZDAABWQJdAdIBzAP/AdoD/wHJ
-        A/8BwQP/AbgD/wGvA/8BpAP/AZkD/wGIAfsC/wFmAfYC/wFVAfEC/wFCAfAC/wEzAe4C/wE8AVwBfgH4
-        Ay4BSAgAAzABTAJPAXUB8gIJAfAB/wIAAeAB/wIAAdUB/wIAAcwB/wIAAcwB/wIAAdQB/wIRAd8B/wIu
-        Ae4B/wJHAX0B9gM3AVsIAAFkAlcB6AHzAYMBJwH/AeABSQEAAf8B2QFIAQAB/wHVAUIBAAH/Ac8BOAEA
-        Af8B2QGFAUgB/wH0Ae8B6QH/AckBUQEVAf8BvgEyAQAB/wG7ATcBAAH/AbQBNAEAAf8BsQEyAQAB/wGq
-        AS0BAAH/AcABQAEAAf8BcQE/ATUB9gQAAxoBJQFsAUcBWQL1AdwB4BH/AfkB6wHwAf8B6QGCAZYB/wH+
-        AZMBmQH/AfYBlQGZAf8DWwHZDAABWQJbAcQBzgH8Af4B/wHhA/8B0QP/AcoD/wHBA/8BtwP/Aa4D/wGk
-        A/8BmAP/AYgB+wL/AWcB9QL/AVUB8wL/AUIB9wL/ASsBaQGOAfwDOgFhDAADKgFAAj8BhwH3AgAB5wH/
-        AhsB6AH/AjMB6gH/AjMB6gH/AigB5wH/AhoB5wH/AikBlQH6AjABMQFNDAABeQFSAUYB9AH4AYQBIgH/
-        AeIBRwEAAf8B3wFKAQAB/wHhAWYBJAH/AeEBbwE0Af8B3wGZAWAB/wH3AfgB9gH/AfQB7gHoAf8B3wGm
-        AYMB/wHLAUkBCwH/AcQBPwEAAf8BtgE2AQAB/wGtAS8BAAH/Ab8BPwEAAf8BiQFEASYB+gQAAxoBJQFs
-        AUcBWQH1AfcB3gHiEf8B+QHsAfAB/wHnAYIBlQH/Af0BkwGZAf8B9gGVAZkB/wNbAdkMAANWAbYB0QH4
-        Av8B8gP/AdoD/wHRA/8BygP/AcAD/wG4A/8BrgP/AaQD/wGYAf4C/wGIAfsC/wFnAfcC/wFUAf4C/wEn
-        AX8BqgH+A0YBgAwAAzIBUAIvAYsB+QIzAfQB/wKFAv8CjwL/Ao4C/wKHAf4B/wJIAfUB/wIrAaMB/AM4
-        AV0MAAF5AVIBRgH0AfsBggEeAf8B6AFQAQAB/wHuAZcBUQH/Ae8BqQFvAf8B6wGbAV0B/wHeAY0BTgH/
-        AeIBsAGTAf8B8AHjAdwB/wH8A/8B3gGmAYUB/wHPAUoBDQH/AcoBRgEKAf8BtQEzAQAB/wHBAUIBAAH/
-        AYkBRwEnAfoEAAMaASUBawFFAUwB9QH2Ad4B4RH/AfcB4gHoAf8B6wGBAZMC/wGYAZ4B/wH3AZUBmQH/
-        A1oB2AwAAVICVAGmAdkB+AH7Af8B9gH6AfIB/wHtAf8B/QH/Ad4D/wHQA/8BygP/AcED/wG3A/8BrQP/
-        AaQD/wGYAf4C/wGIAfsC/wFnA/8BIQGoAdoB/wNOAZgIAAM3AVsCPgGHAfcCPAH6Af8CkwL/AqAC/wKW
-        Af0B/wKVAf0B/wKfAv8ClgH+Af8CWwH7Af8CLQGXAfsDPgFrCAABZAJYAeYB/AGSATUB/wH4AaYBXwH/
-        AfYBuwGXAf8B8gGtAYEB/wHqAZsBXAH/AeMBiQFHAf8B4AFuATYB/wHWAXABPwH/AfUB7QHnAf8B8gHk
-        AdoB/wHPAVoBJAH/AdMBUQEWAf8BxwFEAQcB/wHNAU0BBwH/AXABSgFBAfQEAAMaASUBawFGAUwB9QH2
-        Ad8B4wX/Af0B+gH7Af8B+AHgAeMB/wHvAa4BtgH/AeABbAGPAf8B4AFiAYQB/wH9AZIBlgH/AfcBkwGY
-        Af8DWgHVDAACTwFRAZwBNgFLAdsB/wEhASMBwQH/AVcBYgHBAf8B1wLtAf8B3gP/AdID/wHKA/8BwAP/
-        AbcD/wGuA/8BpAP/AZoD/wGMA/8BMAG/AecB/wNUAasEAAM2AVkCQQF7AfYCTQH8Af8CqgL/ArQC/wKw
-        Af0B/wIuAewB/wInAeoB/wKrAf0B/wKzAv8CrAL/AoEB/QH/AjIBmQH7Az4BawQAAVMCUgGoAe8BqQFm
-        Av8B1QGzAf8B+wHAAZgB/wHxAawBgAH/Ad8BpAGCAf8B3QGpAYwB/wHlAZQBVgH/Ad8BhAFAAf8B7AHR
-        AcIB/wH2AfAB7AH/AdIBaAE0Af8B0gFZAR8B/wHYAVYBGgH/AeMBVgEUAf8BXgJcAc4EAAMaASUBawFH
-        AVkB9QHtAcsBzwH/Ae8BxgHIAf8B4AGLAZIB/wHNAVgBZwH/AaoBRAFgAf8BZgE7AWUB/wE+AS8BXwH/
-        AZMBPgFXAf8B6AFgAWwB/wFnAU4BUQHyAzkBXwMGAQgEAAJYAV8B4wERARAB8wH/AgAB4wH/AgABwgH/
-        AWQBbwHEAf8B7AH9AfsB/wHfA/8B1wP/AdED/wHJA/8BwgP/AbkD/wGuA/8BpQP/AUMB2QHyAf8DWAHA
-        AzcBWgJMAXcB9AJYAf0B/wK7Av8CyAL/AsQC/wI+AfQB/wIfAZIB+wI0AYQB+AI9AfEB/wLBAv8CxgL/
-        Ar8C/wKUAf4B/wJEAZIB+AI9AT4BagMpAT4BygFpATsC/wHZAbQC/wHLAaYB/wHpAaUBawH/AekBzwHB
-        Af8B9gH1AfQB/wHWAYgBTQH/AdsBiAFMAf8B9wHxAe0B/wHnAcoBuQH/AdMBYgErAf8B1wFlAS8B/wHu
-        AWsBKQH/Ac8BQgEOAf8DOwFjBAADGgElAWcCUgH0Ac0BWwFhAf8BrwFHAVcB/wGBAT8BYQH/AT4BPQGB
-        Af8BEQE3AYUB/wEAATUBhgH/AQgBRwGWAf8BMAGGAbYB/wGYAaoBvwH/AccBhwGeAf8BXwEvAUYB+wNA
-        AXAEAAIrAbEB/AEjASQB8gH/AjUB6wH/AgAB3gH/AToBPgHKAf8B9AH/AfQB/wHsA/8B0QP/AbgD/wGZ
-        AfUC/wFrAeoB/AH/AVAB2gH2Af8BQAGzAcUB/QEyAZIBswH7ATsBaAGJAfYDSgGLAkgBcwH2Al8C/wLU
-        Av8C3wL/AtMC/wJOAfcB/wJAAXcB9AMzAVMDLQFFAkoBdQHyAlMB9AH/AtIC/wLZAv8C1gL/AqoC/wJD
-        AZUB+wMGAQgBUgJQAaMB6AGoAWsC/wHcAbgB/wH1Ab4BlQH/Ad4BqwGOAf8B8AHmAeMB/wHlAcoBuwH/
-        AewB2QHRAf8B6gHaAdIB/wHUAYcBTwH/Ad0BgQE/Af8B7QGKAUEB/wHsAWcBJwH/AVsCWQHDAw0BEQQA
-        AxoBJQFZAUQBWQH1AUQBPAFkAf8BFQFAAW4B/wEAAUsBpAH/AQABTgGqAf8BDgFsAbwB/wEzAacB2gH/
-        AVQB0wH1Af8BagHyAv8BgQH7Av8BjwHtAv8CXAF9AfgDLwFKBAACJgGPAfoCCAHuAf8BHwEeAfgB/wEK
-        AQcB6gH/AUABQwGzAf0BZQF3AYMB9AFZAWYBcAHsAV0BYQFiAeIBWQJcAcwDVgGzA1ABnQNFAX0DOQFf
-        AzABSwMgAS4EAAJZAVwByQJMAe0B/wLJAv8C7QL/AloB+wH/AjYBeQH2AzYBWQgAAy8BSgJRAXIB8QJl
-        AfgB/wLrAv8C3gL/AosB8wH/AloBXgHVBAADFgEeAVsCWAHLAekBqAFsAv8B3gG4Af8B9gHBAZoB/wHg
-        AaUBgwH/AeYBuwGkAf8B4gGvAZQB/wHaAY4BVQH/AewBmQFYAf8B+QGgAVkB/wHsAYEBNwH/AWACWgHe
-        Ax8BLQgAA0UBfQFWAZYB0AH+ASIBmgHXAf8BAQFmAcEB/wERAZwB4AH/ATIBvgHuAf8BUQHgAf4B/wFk
-        AfAC/wFpAekC/wFsAakB0gH+AVgBZAFwAe8BVgJYAbkDLwFKCAACTwFQAZsCHgGMAfwBJwElAbkB/gJc
-        AWEB3AEwAjEBTQMYASEDEQEXAwkBDCAAAxYBHwJZAVsBwwJLAesB/wJZAv8COwF3AfYDNwFbEAADMAFM
-        AlMBcgHxAocB/QH/AoQB8gH/AlkBXAHMAx4BKwgAAxYBHgFVAlMBrQHOAW4BPwH/AfQBvAGRAv8ByAGb
-        Af8B/QG9AY4B/wH9AbUBhQL/AbMBgAH/AfQBnQFZAf8B0AFaASkB/wFYAlYBvAMcASgMAAFZAWABbQHr
-        AZYD/wGDAfoC/wEwAWQBoAH6AT4BdAGZAfgBVgHpAv8BTgHFAfYB/wFGAWwBhAH1AlkBWwHEA0ABcQMR
-        ARdUAAMWAR8CWQFbAcMCRQFzAfQCNQE2AVgYAAMwAUsCTgFyAfICWQFcAc8DHQEpEAADBwEJAy8BSgNW
-        AbYBaAFYAVIB7wGYAVEBSgH6AZYBTgFHAfoBcgJTAfEBWwJZAcQDNgFZAwoBDhAAA0MBdwFZAlwBzwFS
-        AYEBnwH3AkgBSQGHAzsBZAFZAl0B1wNLAY4DIQEwUAADOAFeAVgBWQFrAesCVQFXAboDOgFhA1kBxwNZ
-        AcwDWgHKA1oBygNaAcoDWgHKA1oBygNaAcoDWgHKA1oBygNaAcoDWgHKA1wBzgNZAcMDNAFVDAADHAEo
-        A1QBqwMzAVI0AAMRARcDOAFdA04BmQNWAbMDVgG8A1YBuwNVAbIDTgGUAzQBVAMMARA8AAM0AVQBTAFY
-        AW4B7wErAdEC/wFTAWsBewHxA2EB7gPiAf8D3QH/A9oB/wPaAf8D2AH/AtsB2gH/At8B2gH/At0B2gH/
-        AtgB1wH/A9UB/wPUAf8D0wH/A+AB/wOZAf8DVwG9CAADGAEhA1sB4QENAYABMgH/AVIBVwFUAe0DKwFD
-        KAADAQECA0MBdwFlAl4B5QGoAWEBRgH9AdEBZAEaAf8B4AFrARsB/wHoAW8BHQH/AegBbQEeAf8B2wFn
-        AR4B/wG6AVIBFAH/AW8BSQElAfoDWwHZAzgBXRQAAyMBMwNHAYIDIAEuAwEBAgMGAQgDDAEQAwMBBAQA
-        AzIBUQFMAVgBcAHvASkBzQL/AUEBhgGeAfkCPAE9AWgDhAH3BP8D9AH/A/MB/wLxAfMB/wL4AfMB/wLx
-        AegB/wLeAd8B/wPeAf8C6QHhAf8C8QHoAf8C7gHqAf8C5gHnAf8D9QH/A8YB/wNZAcMEAAMSARkDWwHh
-        ASEBSwEAAf8BIQGAAVEB/wEAAaYBqAH/AVIBVgFUAe0DLQFGJAABUAJPAZsBrwF/AVIC/gHjAcIC/wHS
-        AaUB/wHoAWQBAAH/AecBbgEbAf8B8AGGASgB/wH2AZIBPwH/AfUBmgFOAf8B8AGYAU8B/wHyAZUBQgH/
-        AdMBXAEMAf8BUgE/ATcB9wM7AWQMAAMEAQYDVwG6AegBuAG6Af8DYQHkA1QBrgNcAckDYAHeA1kBvgM/
-        AW8BWgJcAc0BbAHoAv8BPgF/AZwB+AM9AWkEAANzAfYD+wH/A+oB/wLqAesB/wLxAewB/wLUAdwB/wJE
-        AdQB/wIiAecB/wJAAeQB/wJlAdcB/wKkAc0B/wPQAf8C5QHfAf8D7QH/A70B/wNWAcEDFAEbA1sB2QEj
-        AVABAwH/ATgBTQEMAf8BKgE4AQAB/wETAWsBVAH/AQABngGnAf8BUQJUAe4DLQFGIAABngF2AU0B+gH4
-        AcgBkQH/AfYB2gG5Af8B7wHDAZgB/wHVAWUBEwH/AdYBkwFOAf8B3gGdAVwB/wHgAZoBWQH/AdIBjAFM
-        Af8B4AGTAU8B/wHtAaABWwH/AfUBjwEvAf8BzgFQAQAB/wNWAbsMAAMzAVIBowKNAfsB9gL6Af8BwAG5
-        AboB/wHIAb0BswH/AeoB4QHRAf8B8AHnAdYB/wHaAdIBwwH/AZUBkAGHAf8BoQGeAZAB/wNfAdsDOwFj
-        CAADdQH2A/wB/wLsAe0B/wPuAf8C+AHoAf8CbgHaAf8CAAH5Af8CAAL/AgAC/wISAv8CQQH2Af8CbwHY
-        Af8CxAHOAf8C9QHvAf8DwAH/A1YBwQNYAd0BEAE+AQAB/wE5AUQBCgH/ATwBSwEQAf8BOgFOASgB/wFV
-        AWEBKAH/ASABhQFaAf8BAAGbAawB/wFSAVYBVAHtAy0BRhwAAcUBkQF/Af4B8wHOAaoB/wH0AdsBvgH/
-        AewBxAGfAf8BzgFwAS0B/wHaAaEBYAH/AdwBqQGBAf8B3AGmAXAB/wHZAZcBVQH/Ad0BjQFCAf8B3wGT
-        AUkB/wHfAY0BNwH/AdEBWQEAAf8DWAHACAADAQECA1UBsAH1Ad4B4AH/AcQBxQHGAf8BzQHHAboC/wH2
-        AdwC/wHzAdsC/wHyAdsC/wH4AeEB/wH5Ae0B1gH/AZkBlAGBAf8DRAF6DAADdQH2A/0B/wLtAe4B/wL1
-        AfEB/wLrAeIB/wI/AeEB/wIAAf4B/wIAAv8CAAL/AgAC/wICAv8CNQH9Af8CcAHWAf8D5AH/AscBxAH/
-        A1YBwQNaAdsBIwFAAQAB/wE0ATkBAAH/AToBQAEjAf8CRQFOAf8BVwJlAf8BUQFiASQB/wETAW0BVQH/
-        AQABlAGqAf8BTAFSAU8B7wMuAUgYAAG/AYgBdQH+Af0B6wHZAf8B/QHuAd4B/wHyAdABrQH/AdsBlgFF
-        Af8B2wGmAWUB/wHWAaUBawH/AeIBrwGFAf8B4gGlAWAB/wHcAZABQAH/Ad4BlQFEAf8B2wGLASoB/wHN
-        AVUBAAH/A1YBvggAAzABTAGEAm8B9QHvAeIB5QH/AcIBugG1Af8B+QHnAcoC/wHoAckC/wHhAb8C/wHg
-        Ab8C/wHkAcUC/wH0AdcB/wHQAccBrgH/A1oB2AE2AjUBWAMQARUEAAN1AfYC/gH9Af8C8gHwAf8C+AHy
-        Af8C6AHjAf8CPgHkAf8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CMAHpAf8CywHfAf8CzgHEAf8DVgHB
-        AxABFgNbAdYBLAFNAQkB/wFlAWEBUQH/AU8BTAFPAf8CSQFOAf8BVAFiAWMB/wFKAWEBHwH/ASIBhgFg
-        Af8BAAGMAZ8B/wFRAVQBUwHuAysBQxQAAbsBpwFZAf0B/wHtAdgB/wH8AesB2wH/Af4B5AHJAf8B7wG7
-        AYgB/wHsAbYBgAH/AdQBowFjAf8B1gGsAYMB/wHnAbQBgQH/AfEBqgFVAf8B5gGgAUsB/wHbAY0BLQH/
-        Ac0BVgEAAf8DVgG+BAADBwEKA1UBrQH5AdYB0wH/AecB1QHWAf8B1AHGAbsC/wHfAbYC/wHTAaQC/wHQ
-        AZ4C/wHOAZ0C/wHPAaEC/wHhAbgB/wHkAdABsQH/AZMBhAFwAf8BzAGRAYkB/wFbAlgBywMpAT4DdQH2
-        A/0B/wLtAe8B/wL3AfMB/wLxAeoB/wJjAeUB/wIAAf0B/wIAAv8CAAL/AgAB+wH/AgAB+AH/AgAB9QH/
-        AkMB3wH/A+oB/wLKAcYB/wNWAcEEAAMPARQDWgHVATQBWgEVAf8BZwFoAVIB/wFfAVsBXwH/AVwBWgFk
-        Af8BVwFiAV0B/wEzAVsBAAH/ARYBgAEmAf8BAAGbAWYB/wFSAVcBVQHtAy4BSBAAAbsBpwFYAf0B/wHr
-        AdYB/wH9AewB2gH/Af0B5wHQAf8B4QG7AZMB/wHnAbwBjwH/Ad4BsQGDAf8B0gGyAZIB/wHYAa0BgAH/
-        AeQBmwFEAf8B4AGXAUEB/wHfAYYBHAH/Ac8BVwEAAf8DVgG+BAADLgFHAY4BgQGAAfcB/wHqAd4B/wHn
-        Ac8BzAH/AdIBvwG2Av8BzwGeAf8B/gHLAZgB/wH+Ac0BoAL/AdEBowL/Ac4BnAL/AdUBnwH/Ad0BtwGO
-        Af8BjwGNAYoB/wH6A/8B6gGoAaQB/wFAAj8BbwN3AfYC5wH8Af8CmwHdAf8C2AHpA/8B8QH/Ap0B5gH/
-        Ai8B/AH/AhMC/wIMAfIB/wJrAeEB/wKhAd8B/wKsAd4B/wLfAeEB/wL5AfQB/wPGAf8DVgHBCAADCgEO
-        A1sB1gEwAV0BDgH/AWwBbQFWAf8BaQFmAWgB/wEzAVYBFwH/ATUBYgEVAf8BVAGHASQB/wEkAaQBYQH/
-        AQABpwGrAf8BUgFXAVQB7QMtAUUMAAG7AagBWAH9Af8B6wHUAf8B/AHrAdsC/wHrAdMB/wHyAdYBtAH/
-        AeIBwgGfAf8B5wHCAZsB/wHYAbMBiwH/Ad0BqgFmAf8B4wGcAUUB/wHhAZoBRAH/AeABbgELAf8B0QFV
-        AQAB/wNWAb4EAANXAboB3AGwAagB/wHbAbIBqAH/AcsBoQGeAf8BtwGoAacB/wHzAcQBowL/AdIBqgH/
-        AfwB2AG8Av8B3gHBAv8B5AG/Av8B1wGkAf8BtAGPAWIB/wGgAaMBpQL/AfEB8AH/AWACXAHUAxgBIgN3
-        AfYC+QL/AsQB6AH/Ar4B2gH/AtgB6gH/AocB8AH/Ak4C/wIlAfsB/wKCAeIB/wL+AecB/wL9AesB/wL3
-        AeoB/wLrAegB/wP0Af8DyAH/A1YBwQwAAw8BFANZAdcBNAFjARIB/wE+AWEBGAH/ATMBXgEYAf8BWwJd
-        Af8BYQGAAYEB/wFPAYkBIwH/ARABmAFQAf8BAAGeAakB/wFSAVYBVQHtAysBQwgAAbQBfgFmAfwB/wHq
-        AdAB/wH9AesB2AL/AeYBywH/Af4B1QGpAf8B8QHDAZsB/wHpAbUBiQH/AeIBnAFOAf8B9AGmAU8B/wH4
-        AakBTgH/AecBnwFGAf8B3wFwAQ4B/wHQAVYBAAH/A1YBvgQAA2EB5AHHAZ4BmwH/AeQByAHHAf8B8wLm
-        Af8B1AHVAdcB/wHEAbQBrAH/AfIByQGtAv8B3wHIAv8B3gHLAf8B+wHaAbwB/wHMAaYBiwH/AY4BgwGB
-        Af8B5AHjAeUB/wG+AqgB/QNAAXAEAAN3AfYG/wH5Af8C2wHlAf8CjQHSAf8ChgH2Af8CWgL/AikB9gH/
-        AqsB5wH/AvwB7QH/AuwB7QH/AuoB6wH/A+gB/wP2Af8DyQH/A1YBwRAAAwoBDgNaAdgBHgFlAQAB/wFr
-        AYgBVAH/AWsBYgFsAf8BUAFOAVUB/wFSAWQBYQH/AUYBiAEeAf8BFAGZAVcB/wEAAZUBqwH/AVIBVwFV
-        Ae0DNAFVBAABtAGAAWkB/AH/AeoBzwH/AfkBzgGnAf8B+AHKAaQB/wHrAbwBmAH/AeUBuwGeAf8B6wHE
-        AaoB/wHuAcEBoQH/AeoBsgGLAf8B7wGoAWcB/wHvAZIBPQH/Ae0BgAEKAf8B0QFZAQAB/wNWAb4EAAMt
-        AUYDUwGqAZIBfQF3AfkB7wHDAcAC/wHpAecB/wHVAdQB1QH/Ab8BtAGvAf8BzgGyAaUB/wHQAa0BoAH/
-        AbYBlgGLAf8BnQGRAZAB/wHVAckBywL/Ae0B6wH/AV0BWgFZAdIDEgEYBAADdwH2BP8D+AP/AfsB/wLG
-        AeIB/wKKAdsB/wKOAfYB/wKSAfAB/wLiAe4B/wL0Ae8B/wPtAf8D6wH/A+oB/wP3Af8DywH/A1YBwRQA
-        AwoBDgNbAdYBNwGIARkB/wFsAYcBVgH/AVUBUQFUAf8BQwFAAUsB/wFLAlcB/wEyAYUBAgH/ARgBoAFD
-        Af8BCgGVATEB/wNTAaoEAAG1AYIBaAH8Af8BwQGJAf8BzwGJAUEB/wPfAf8BzwHVAdsB/wHBAcYByQH/
-        AeAB5AHoAf8B1QHcAeIB/wHBAcwB1QH/AdEB2wHgAf8B2AHAAbIB/wHZAWQBIwH/AeIBYgEHAf8DVwG/
-        CAADBwEJAyYBOQNQAZ4BawJiAe8B6wG3AbQB/wHrAdYB1QH/AdsB1wHWAf8B0gLXAf8BygGwAbMB/wHn
-        Ab8BugL/AfIB6wH/AeoBsAGrAf8DRAF6CAADdwH2BP8D+QH/AvkB+AH/Av0B+gH/AssB4AH/AscB3AH/
-        AvsB8gH/AvYB8wH/Au8B8AH/A+8B/wPtAf8D6wH/A/kB/wPNAf8DVgHBGAADEQEXAVkBXQFZAdcBNAGM
-        ARUB/wFhAW0BSgH/AUgBPwFKAf8BRAFaATcB/wFNAaUBJgH/ASEBnwEAAf8DWwHhAx0BKgQAAbcBfAFJ
-        AfwB7AGUATcB/wGtAWEBLgH/AcUBuwG0Af8BzwHLAcgB/wHeAeYB6gH/AdwB4wHoAf8BuwHAAcQB/wGe
-        AYIBZAH/AagBgAFfAf8BogFvAWMB/wGbATcBEwH/AekBZwEcAf8DVgG+FAADIwE0A0wBkwNfAdsB5gGw
-        Aa0B/wH6AeYB5AL/Ae0B7gH/AfwBwwG9Av8B3QHPAf8CXgFaAd0DEwEaCAADeQH2BP8D+wH/A/kB/wL6
-        AfkB/wL8AfsB/wKsAc8B/wK6AdQB/wL5AfYB/wPxAf8D7wH/A+0B/wPrAf8D9wH/A88B/wNXAcIcAAMH
-        AQoDWwHWATEBjQEUAf8BSgGAAScB/wFeAa0BPAH/AT0BsAEmAf8DWwHhAxUBHQgAAV8BXgFYAd0B9QGx
-        AWAB/wHeAYoBMgH/AdIBXwENAf8BvwFfASEB/wHKAbEBoAH/AcgBtQGoAf8BqwFnAUMB/wGfAS0BAAH/
-        AZsBHQEAAf8BlwEdAQAB/wHNAVEBGAH/AbEBbgEtAf4DQQFzHAADHQEpAUcCRgGAA2EB2gHgAagBpwH/
-        Af0BzgHMAf8B5wGdAZYB/wNAAXAMAAOIAfgU/wL4AfwB/wLzAfoD/wH+Af8D/QH/A/wB/wP6Af8D+QX/
-        A9MB/wNXAcIgAAMPARQBWgFeAVoB1QEjAZwBBQH/ASEBlgESAf8DWwHZAxYBHwwAAyUBNwFiAl8B4AHz
-        AaoBUgH/AfMBnwFDAf8B6QGJASkB/wHVAW0BJgH/AcsBYgEhAf8BywFVAQ4B/wHKAVgBGAH/AdEBXwEg
-        Af8B2wFrASgB/wGSAVwBPgH4A0wBkygAAxoBJAFAAj8BbwNeAdkBXAJZAcwDEwEaDAADWwHLA6UB/gOx
-        Af0DsQH9A7EB/QOxAf0DsQH9A7EB/QOxAf0DsQH9A7EB/QOxAf0DsgH9A60B/gNqAfUDOwFlJAADDQES
-        AVwBYQFcAdwDXAHcAxABFhQAAw0BEgNDAXcCWwFZAcQBZgFkAVwB5wF/AWUBUgH0AZkBdAFCAfgBhQFi
-        AUgB9gFuAWEBVAHuAmABWwHWAVECTwGcAycBOhAAAyMBMwNWAbkDVAGrAxEBFwMQARYDIAEuAwEBAiMA
-        AQEDBAQFAQcDDAEQAx0BKgMrAUMDLwFJAyUBNwMWAR4DEgEZAyABLgMtAUUDMgFQAzIBUQMuAUgDIgEy
-        DAADBgEIA1ABpANZAc8DXAHOAlcBYAHoAUsBWQFsAfIDWwHhA1kBzANbAdADSAGEGAADBAEGAzQBVANW
-        AbMBaQFkAVwB5wFzAWIBWAHvAXMBYgFYAe8BaAFfAVcB6AFXAlYBuAM2AVkDBwEJEAADXQHSAbUCmgH/
-        AW4CWQH/A1ABngNaAdsDXgHlAx8BLCAAAwMBBAMKAQ0DEQEXAUACPwFuAWECXAHcAWECWgHkA1kBwwNC
-        AXUDNQFWA0QBfAFdAlkB1wGOAW0BUQH3AZcBbgFBAfgBZQJeAeUDVAGrA0ABcQwAAxgBIQGGAoEB+gHe
-        Ac4ByAH/Aa0BsQHOAf8BUAHCAfkB/wFfAeAC/wGHAakB4AH/AeQBzgHDAf8ByQLCAf8DVQGyFAADEgEY
-        AVMCUgGoAfYBigFSAf8B8AG/AasB/wHjAcYBwAH/AdUBwAG+Af8B0wG/Ab0B/wHkAcYBwAH/Ae8BwAGt
-        Af8B9gGPAVcB/wNVAbIDGAEhDAADWQHHAcgBswGyAf8BoAGHAYYB/QFfAVYBVAH7AWgCZQH/AV8CWQH+
-        A1cB3wNZAckDWgHNA1oBzQNaAc0DWwHQA1kByQNFAX0DBgEIAyIBMQMwAUwDMQFNAlwBWgHNAf4BxgGm
-        Af8B7AHQAcUB/wHOAX8BSwH+A1IBqQNKAYwBbAFhAVQB7gH2AcIBpQH/AdcCxgH/AdUBxQHGAf8B7wHI
-        AbQB/wGiAW8BTQH6A04BmQgAAwQBBgMQARYDPgFrA0QBeQNCAXQBXwFvAXsB8wFtAaUBygH/A1cBxQM/
-        AW0DRQF9AyEBMAMJAQwDBgEICAADEgEYAVsCWQHDAfMBqQGFAf8BzQG2Aa4B/wHGAbwBvwH/AfIB6gHt
-        Af8BywHGAcgB/wHGAcIBwwH/AfQB7AHuAf8BxwG+AcIB/wHIAbIBrgH/AfQBsAGNAf8BWwJYAcsDFQEd
-        CAADDwEUA0gBhANWAbsBegF8AX8B/gFuAZMBoAH/AW8BowGvAf8BqAGfAa0B/wHBAY4BmgH/Ac4BbAGD
-        Af8B1gFiAWgB/wHhAW4BcAH/AeABawFvAf8B4AFrAYEB/wFXAkAB/QNEAXoDGgElAycBOwMnATsDSAGE
-        AekBmwFcAf8ByAHFAdAB/wHqAbsBpAH/AV4CXAHOAVYCVQGxAfEBrwGJAf8BxgHBAcoB/wHcAbwBrgH/
-        AeEBuwGpAf8BxAG8AcQB/wHrAb8BqgH/AVwCWAHRBAABSQJIAYgDXAHnAVsCWAHpAVwCVwHfAWECXAHc
-        A1sB2QGPAYkBiAH7AbgBogGeAf8DXQHtA1sB2QFeAlgB3QNaAeQDYAHrA1sB4QM6AWIDCAELAVQCUgGm
-        AfYBpQFlAf8B1gG9AcMB/wG0AbAB1gH/AtwB2QL/Af4B/AH/AfcC9QH/AvUB9AL/Af0B/AH/A90B/wHa
-        AdMB1wH/AeAByAHFAf8B8wGlAWwB/wNVAbIDCgENBAADUgGoAWACZAHsAYYBkAGTAfsBtAHiAesB/wG0
-        AfMC/wGrAf4C/wGUAfcB+gH/AZEB2wHkAf8BjgGzAcAB/wGGAYEBkwH/AWQBNAE3AfwBYgJXAe8B0AJS
-        Af8B3gFvAXAB/wNWAbMHAAEBAwcBCQMPARQBXAJaAc0B4gHDAbYB/wHSAcoB0QH/AaIBcAFNAfoBagFU
-        AVEB7gHhAcIBtQH/Ac8BxgHMAf8BxAF/AUwB/gG7AVQBPAH9AdcBxgHFAf8B2gHFAcIB/wF7AWcBTwHy
-        BAABjAKIAvkC+AH/AeEC3wH/AdwC2gH/AdkC1wH/AcoCxwH/Ad8C3gH/Ae0C6wH/AfcC9AH/AfUC8gH/
-        AfYB8wH0Af8B7gHwAewB/wHMAewB0AH/AdEBzwHLAf8DVgG7AzABSwG9AVMBQAH9Ac0BoQGKAf8B2AHU
-        AdUB/wLWAfsB/wLQAfoD/wH9Cf8B/gL9Av8C/gH/Af4C/AH/AdkB1gHaAf8BygGhAY4B/wHnAWgBNwH/
-        ATYCNQFYBAABdAGMAZsC+gP/AdoD/wGvAfMC/wGMAeAC/wGJAeoC/wGHAfYC/wGTAf0C/wGeA/8BkwHz
-        Af4B/wNXAd8DKQE+AZECWgH7Ad8BaQFoAf8DVQGyAwABAQMKAQ0DHAEoAzIBUAFMAksBkAHCAX8BWgH+
-        AdMBzgHWAf8B4AG6AaYB/wHhAV0BFQH/AdsBwQG3Af8B1wHLAc8B/wGBAWIBSAH2AXcBWwFTAfEB4AHI
-        AcMB/wHYAsgB/wGaAWoBQQH5BAABpgKdAfwB7ALvAf8B1QLWAf8D2QH/AdcC2AH/AcsCzAH/AeEC4gH/
-        AewC7QH/AuoB6wH/AeoC7AH/AewC7QH/AegB6gHpAf8B5gHvAegB/wHhAt4B/wNVAboDUgGpAesBkQFM
-        Af8BywG2AbMB/wHaAd0B3gL/Av4B/wHFAcYB/AH/AtIB+hL/Av4B/wHdAd8B4QH/AcoBuAG3Af8B7QGV
-        AVEB/wFYAlYBuQQAAW4BhwGMAfcB3AP/AaIB6wL/AYAB3AL/AVYB0QL/AV4B3QL/AVoB5AL/AWUB6AL/
-        AYUB9QL/AYwB+QL/A1sB4QMgAS4BjwJNAfoB3QFpAWoB/wNVAbEDBgEIAzcBWgFgAlwB1AF8AV8BTAHz
-        AXsBXwFMAfMBuQFhARkB/gHgAbkBpgH/AdQBzwHVAf8B7wGZAVUB/wHgAbsBqgH/AdYBzwHVAf8BxQF/
-        AUsB/gG5AVABNQH9Ad0BzAHKAf8B3gHLAcgB/wF+AV8BTAHzBAABjQKLAfkB7gLwAf8C5gHlAf8D5gH/
-        A+YB/wHoAukB/wHmAuUB/wHsAekB5gH/Ae8B7AHmAf8C6QHmAf8D4wH/AeMC4gH/Au8B8AH/AdkB1AHV
-        Af8DVAGvAWECWwHhAegBlgFVAf8B8wHsAe8B/wH+Af0E/wH+Af8C9wL/ArkB+wH/AtwO/wP+Av8C/gH/
-        AfQB7QHyAf8B5wGYAVsB/wFmAlcB6AQAAV8BcQF8AfMBsAH2Av8BawHaAv8BRAHMAv8BKwHBAv8BTAHT
-        Av8BOQHUAv8BQwHYAv8BVQHjAv8BXgHsAv8DXgHlAykBPgGPAk0B+gHdAmkB/wNVAbEDKgFAAYABWQFC
-        AfUB4wHEAbYB/wHeAdcB3AH/Ad4B1gHbAf8B4AG4AaEB/wHjAZgBWAH/AdYBzwHTAf8B5wG/Aa0B/wHv
-        AbUBlQH/AdMB0AHYAf8B5AHBAbEB/wHoAbwBpgH/AdQB0AHWAf8B6gHDAa8B/wFeAlwBzgQAA2UB5QT/
-        AfwD/wH5Af0B/gH/AfQB+wH9Af8B8wH8Af4B/wHrAekB6wH/AcABxwHaAf8BrAG0Ac8B/wHJAcQBzwH/
-        AuMB4AH/Ad0C3gH/AeYC6AH/AbMCrQH/A0gBhwFsAlQB7gHZAYUBRAH/AcUBwwHJAf8B8gHzAfQJ/wL0
-        Av8BsAGqAcgB/wGxAacBowH/AeYB4gHfAf8B+gL5Bf8B9gH1AfYB/wHHAcgBzgH/AdkBjAFQAf8BbgFY
-        AU4B7wQAAVkBbwF7AfIBiQHrAv8BTQHQAv8BQAHLAv8BRgHOAv8BYAHZAv8BVgHbAv8BQwHWAv8BQAHY
-        Av8BRAHlAv8BWAFZAWAB6wEsAisBQwGPAk0B+gHcAWkBagH/A1UBsQNVAbUB3wGzAZkB/wHaAdcB4AH/
-        AdsBsQGbAf8B3AG2AaEB/wHXAdYB3wH/AeoBtQGYAf8B6QG7AaUB/wHXAdMB2gH/AfMBqgGAAf8B6gG8
-        AaQB/wHeAdcB2wH/Ad4B2AHdAf8B6QHOAcIB/wGlAV8BQAH7AzgBXAQAA1cBugHrAeAB3AH/AeEBxwG+
-        Af8B1wHKAcgB/wHcAcIBugH/AdEBowGZAf8BXgGjAdwB/wE4AbYB7QH/ARwBxwHqAf8BFwGDAcwB/wGs
-        AagBvAH/AdkB0gHNAf8B2gLXAf8BcwJwAfwDLwFKAWsCVAHuAdsBhQFCAf8ByQHIAcwB/wH2AvcF/wHv
-        AuwB/wHNAcIBvgH/AbsBsAGrAf8BkwGKAasB/wG0AagBtgH/AcUBuQG1Af8B0gLLAf8D8QH/Ac4BzwHV
-        Af8B3AGMAU4B/wFrAVgBTwHvBAABVQFhAWUB6gGGAd0B/gH/AYkB4AL/AYUB2wH7Af8BaAHKAfEB/wFR
-        AbgB6wH/AW8B0AHyAf8BhgHbAv8BhQHjAv8BWQHgAv8CWgFfAdsDJAE1AY8BTQFOAfoB3AFpAWoB/wNV
-        AbEBYwJYAekB3gHJAcIB/wHhAdYB1wH/AbMBSwEwAf0BtwFUAUAB/QHgAdoB3QH/AeMBxgG6Af8B9wGe
-        AVoB/wHdAdYB2gH/AeYByAG7Af8BxgFvASsB/gF5AWcBVQHyAXsBZwFXAfIBXAJZAc8DNQFXAwcBCQQA
-        A0gBhgG8AaABnAH/AeMBcAEwAf8B3wGjAWoB/wHrAZ8BZQH/AdMBMgEIAf8BRwGEAbYB/wFXAd0C/wFS
-        A/8BHAHLAfsB/wFfAYABtwH/AeEBywHEAf8B2gHIAckB/wFiAlcB8QMVAR0BXQJXAd8B6QGQAUcB/wH0
-        AesB7gH/AvkB+gH/AdICygH/AboCrAH/AdYBzwHOAf8B+wH5AfgB/wHqAewC/wHsAe0B/QH/Ae8B6wHo
-        Af8B3wLZAf8B+QH4AfkB/wH1Ae4B8gH/AecBkgFOAf8BZQJXAegEAAM1AVcDVQG1AV0BZwFtAe0BhgGl
-        AbMB/wFrAYsBmAH/AWEBgwGUAf8BXAGTAakB/wFOAX8BlAH+AU4BZQFtAfQCWgFdAcoDLwFKAx8BLAGD
-        Ak0B+gHiAWwBbQH/A1UBtAF8AV8BTAHzAeMB0wHPAf8B5wHXAdUB/wF3AV0BTAHzAXsBYgFIAfQB5gLb
-        Af8B4wHRAcsB/wHgAWIBHwH/AeQBtwGfAf8B4AHhAeoB/wHEAX8BbQH+A1MBqgM2AVkDFQEdAwMBBAgA
-        AzQBVAGIAX8BgQH+AewBmQFQAv8BzAGOAv8B3QG3Af8B8wFZAScB/wGOAVkBYwH/AT8BxAH+Af8BRwH4
-        Af0B/wEZAeEB+gH/AS0BbQHXAf8B4AHKAc0B/wHMArgB/wNYAd0DBgEIAVICUAGjAeoBjAFBAf8BzwGv
-        AacB/wG6AbQBuAH/AcwCwgH/AfMC8Rn/AdsB3wHiAf8ByAGvAagB/wHrAY8BQgH/A1UBtQwAAzYBWQF/
-        AX4BdwH+AYIBbwFtAf8BnAGNAYYB/wHFAaYBoQH/AX8BdgF7Af4BYgJZAfUBZAJcAecDWgHYA1kB1wGd
-        AWoBaAH+AeECgQH/A1ABnQFnAWEBWAHmAecB1AHOAf8B5gHeAeAB/wG1AXABNwH+AbcBeQFCAf4B5gHg
-        AeQB/wHpAdMBygH/AWkBVAFTAe4BgQFiAUgB9gHmAeAB4gH/AekB1AHMAf8BZAJcAecDOgFhAyMBMwMI
-        AQsIAAMaASUBbAFqAWwB9QHVAaMBjAH/Af0BtgFbAv8B5QGsAf8B+QGDATQB/wHCAVoBQQH/AVoBrwHK
-        Af8BVgG1AZgB/wFTAbgBkAH/ATwBcAGLAf8BxQG3AbwB/wG4AqEB/wNWAbgEAAMtAUUBnQFfAUUB+wHT
-        AZEBXQH/AdQBygHQCf8B/gL9Cf8D/QL/Av0B/wH+AvwB/wHaAdYB3AH/AdABlQFkAf8B2QFvATsB/wMz
-        AVMMAAM1AVUBdAFzAXIB/gFaAlwB/wFoAmQB/wG7AZ0BlwH/AfcBxQG8Af8B+wHEAb0B/wH5AcIBuwH/
-        AfEBsQGrAf8B6gGfAZkB/wHqAZMBkAH/AWACWQHrAxwBKAFTAlIBqAHnAb8BpwH/AucB7gH/AecByQG6
-        Af8B5wHKAb0B/wHnAegB7wH/AegBvAGgAf8BUQJQAZ8DTgGYAecBvQGlAf8B5wHrAfUB/wHiAakBhwH/
-        AVICUAGkAygBPAMMARAIAAMGAQgDXgHdAbgBogGjAf8BawFTAZ8B/wGWAXABnwH/AZQBYgGbAf8BTwE1
-        Aa8B/wFUAYMBSQH/AUMBwwFUAf8BlgH2AbMB/wFWAckBWQH/AWwBiAFWAf8DfwH+Az8BbQQAAwcBCQNQ
-        AZ4B6wGjAWEB/wHnAbcBowH/AdcBzgHSAf8B1gHYAdoB/wH+AvwB/wH1AvQB/wH0AvMC/wH9Af4B/wHa
-        AdwB3QH/AdYBzwHSAf8B5QG3AaYB/wHsAaYBZAH/A1MBqgMJAQwMAAMfASwDagH5AWsCagH/AVEBUwFU
-        Af8DUgH0A1EBogNWAbQDXAHJA2AB3gFqAWUBZAHtAVsCWQHEAx0BKgQAAx0BKgFnAWEBWAHmAegBzgG8
-        Af8B6ALjAf8B6AHiAeMB/wHoAcoBuAH/AWQBXAFVAeoDJQE3AxgBIgF+AV8BTAHzAekB2AHPAf8B6gHO
-        AbsB/wFdAlkB0gMcAScDBwEKDAADKgFBAk8BTgGXAlcBZgHoAWcBagH5Af8BnQGmAf4B/wEoASkB9gH/
-        ASEBIwEyAfsBOgG9AU4B/wGiAf8BzgH/AYwB/wGwAf8BIQFgARkB/wNTAaoMAAMMARABVwJVAboB7AGw
-        AYAB/wHRAaUBkAH/AcgBsgGxAf8B8gHmAegB/wHKAcIBxAH/AcUBvQG/Af8B8wHoAeoB/wHKArYB/wHN
-        AaMBkQH/Ae4BtAGFAf8BWQJXAcIDEAEVFAADWwHLA9cB/wOTAf8DUAGjEAADBgEIEAADJAE2AVsCWQHE
-        AZABagFHAfkBkgFrAVgB+AFaAlcBxQMpAT4DBgEIAwABAQM9AWkBXAFaAVkBzAFcAlkBzAM7AWMDBwEK
-        AwEBAhQAA0MBdwFmAWgC/wHLAcwC/wFdAVsC/wEQARQBXAH9ASkBcQEqAfoBYwGaAX8B+QFhAXMBYwHu
-        AUABgAFGAfcDRwGDEAADDQESAlABTwGbAd8BnAFZAf8B7AG+AZwB/wHnAcIBrwH/AdkBtQGpAf8B1wGz
-        AagB/wHnAcIBrwH/AewBvgGdAf8B4QGgAV4B/wJSAVABowMTARoYAAMnAToDcAHxA14B2QMUARtwAAMQ
-        ARYCWgFgAd4CqAHRAf0CTQGvAfoCWgFeAdUDOwFkAyYBOAMSARkDKAE8AxYBHxgAAy0BRgNRAaIBXgFc
-        AVcB3wFuAWMBXgHuAW4BYwFfAe4CYQFbAeECUwFSAagDMAFMAwIBA7gAAyMBMwNZAewDVgG+AxIBGQgA
-        AxEBFwNTAaoBXwFcAVUB6gFqAWYBVwHyAWIBXQFaAe0DWQHHAyoBQQQAAwkBDBwAA0YBgQNWAbsDVQG1
-        A1UBtQNVAbUDVQG1A1UBtQNVAbUDVQG1A1UBtQNVAbUDVQG1A1YBtgNWAbsDPAFoDAACOQE6AWACQQFu
-        AfUCWQFdAdcDSgGLAy4BSAMYASEDBwEKQAADJgE5A1gB6QHyAucB/wHaAtAB/wNXAcIDEgEZAxEBFwJe
-        AVsB2QH3AdgBqwL/Ad4BrQL/Ad0BrgL/AewBwgH/AegBzgGqAf8BYgFYAVcB7wNZAdIDWwHhA1kBwwNQ
-        AZ0DPwFuAyABLgwAAbcBXQFAAf0B8AGKASUB/wHtAW8BGgH/Ae4BbgEZAf8B7gFrARUB/wHuAWgBEAH/
-        Ae0BYwEGAf8B7QFeAQAB/wHtAV8BAAH/Ae0BWwEAAf8B7QFYAQAB/wHtAVUBAAH/AfIBUwEAAf8B4wFR
-        AQAB/wNZAcQMAAJRAVIBpwImAd4B/wIbAdUB/wIKAboB/wIAAaMB/wJRAWEB7gJVAVYBtANAAXEDMgFR
-        AxQBHDAAAycBOwNcAecB6gLfAf8B7ALiAf8B5gLZAf8B3ALVAf8DWQHEA1QBrgH6AbwBgAL/AdsBoQL/
-        AcUBhgH/Af0BwgGEAf8B+AHCAYgC/wHdAakB/wHqAbUBhwH/Ab0BogGXAf8B4AHdAeAB/wHnAeIB4wH/
-        AdMBzAHNAf8BlAGMAY0B/gNlAfQDWQHHAzEBTwQAAb4BfwFGAf4B9gG3AYoB/wH0AboBlAH/AfIBtwGP
-        Af8B8gG2AY8B/wHyAbUBjQH/AfMBtAGIAf8B8wGxAYUB/wHxAa4BgAH/AfABqgFtAf8B8AGqAWwB/wHv
-        AakBawH/AfMBrAFuAf8B7wFtAR4B/wNWAcEIAAMKAQ0CXAFeAc4CNAHzAf8CJQHsAf8CGQHmAf8CDAHe
-        Af8CAAHPAf8BlwGRAcUB/wG0AasBsAH/AWYBYAGWAf8CWwFeAdkCVQFWAbEDQAFxJAADJAE2A1kB7AHp
-        AtwB/wH1Au0B/wHhAtgB/wHkAtkB/wH8AvcB/wFaAlgB7gFzAV8BTAHzAa4BVgEaAf8B5gGcAUMC/wG+
-        AVsB/wHtAaQBRwH/Aa4BUQETAf8B5QGhAU0B/wHeAZYBRgH/Ac0BnwFvAf8BzQHCAcEB/wHsAdwB2AH/
-        Ae8B2QHXAf8B8AHeAdwC/wH9AfwB/wHgAtQB/wNWAbgEAAGzAX0BSwH+Af8B8QHzAf8BmQHgAbAB/wE0
-        AccBTgH/ATMBwQFIAf8BIQG1ATAB/wGsAd0BuAH/Af0B7wH2Af8B+QG2AYcB/wH7AbMBgwH/AfoBqwFq
-        Af8B9QGsAYAB/wHpAecB7gH/AeMBjwFRAf8DWAHACAADLAFEAkMBfQH2AjwB9wH/AisB6gH/Ah8B5QH/
-        Ag4B4AH/ARkBGAHdAf8B3QHUAeAB/wH3Ae0B3gH/AekB3gHYAf8B3QHSAcwB/wHMAcIBvAH/Ak0BbwH6
-        IAADJAE1AVwCWQHsAesC5AH/AfUC7QH/AeoC4gH/AfsC+AH/AfYC9AH/AV8CWwHsAyYBOAF/AVgBKwH8
-        AYQBMQEAAf8B2wGWAUEB/wHyAbkBZQH/AbcBawEtAf8BZAEhAQAB/wGVAUABAgH/AckBiAE0Af8BzwGc
-        AWMB/wHkAcwBxAL/Ae0B3wL/AeIB0QH/AfkB1QHGAf8B2AHAAbsB/wFhAl8B6AMpAT8EAAG0AX8BTwH+
-        Af8B7wHwAf8BhQHdAZoB/wEXAc8BNQH/ARABwQEmAf8BAAGpAQAB/wGXAdMBmwL/AucB/wH9AbABZAL/
-        AbEBaAL/AaEBTwH/AfwBnAFNAf8B7QHgAd4B/wHkAZABTwH/A1gBwAgAAjwBPQFnAisB4QH/AjoB+QH/
-        Ai8B7QH/AicB6AH/AhAB4gH/AUcBRAHeAf8B8wHsAd8B/wHoAd8B2wH/AeIB2AHaAf8B6AHdAdsB/wHs
-        AeEB3AH/AloBXQHTHAADJAE2AV8CVwHoAesC5gX/AfgC9gH/AfoC9gH/AfIC7wH/AWQCYgHnAycBOwQA
-        AXkBZQFMAfQB4AGnAVgC/wHfAbMB/wHHAaYBhgH/AZ8BawFLAf8BngFqAUcB/wGEAUUBGgH/AW4BMgEA
-        Af8BqAFmAUMB/wNlAfQDYgHpAY4BfwF9AfgBZgFiAWEB7QFQAk8BmwMKAQ4IAAGyAX8BUwH+Af8B7wHu
-        Af8BhwHhAaEB/wEgAd4BTAH/ARoB0gE9Af8BAAG4AREB/wGXAdYBnwL/AeoB6QH/Af4BtgFuAv8BvAGJ
-        Af8B/gGsAWAB/wH8AaIBVgH/AfAB5AHiAf8B5AGTAVIB/wNYAcAEAAMEAQYDUQGiAoMB9AH/AVIBUQH5
-        Af8BLgEtAfIB/wEdAR4B7AH/AQoBCwHmAf8BkgGPAeIB/wH6AfEB4QH/AeQB2wHcAf8B4wHZAdoB/wHv
-        AeQB3gH/AcIBuAHGAf8DSAGFEAADGgElAyoBQQM4AVwDXgHlAe4C6A3/AfEC7gH/AWICYAHpAyYBOQgA
-        A1YBswHvAcoBoQL/AfsB9AH/AfkB9AHuAf8B7AHZAcYB/wHtAdgBwAH/AecB0gG6Af8BzQGRAU4B/wFy
-        AVABPAH+A0QBegMDAQQDEQEXFAABrwF/AVcB/gH/Ae8B6wH/AbwB7gHHAf8BigHmAZQB/wGJAeMBjwH/
-        AWkB2QFsAf8BxgHpAccC/wHxAfAC/wHPAZkC/wHRAZwC/wHKAZMB/wH9AccBlAH/AfQC6wH/AeMBkQFT
-        Af8DWAHABAADFAEbAV0BXAFhAeEC+QH4Af8B6AHkAfEB/wHGAcAB7wH/AZABjQHsAf8CQAHoAf8BywHF
-        AeUC/wH3AeIB/wHzAeoB4AH/Ae0B4wHdAf8B9wHsAeMB/wGYAZABsAH/AywBRAgAAxYBHwNUAasDZAHn
-        AWMCXwHwAWsCagH5AeAC1g3/Ae8C6wH/AWQCYwHsAyMBMwwAAxEBFwJhAVwB3AH4AeYB0wb/AfYB6wH/
-        AfsB7QHcAf8B9wHbAb4B/wHjAb8BpwH/AasBpwGvAf8CYgFmAfUDXAHqA1sB2QNZAcMDUgGmAzcBWgMD
-        AQQEAAGuAX8BWgH+Af8B9gHmAf8ByAHHAfMB/wGUAYsB3gH/AZcBjgHeAf8BlAGKAdkB/wHYAdMB7gH/
-        AfUB9gH7Af8BmAGtAf4B/wGPAacB+wH/AYwBoQH6Af8BlgGmAfoB/wHvAfAB9wH/AekBlQFOAf8DWAHA
-        BAADJgE5ApYBzwP/AfwB/wH5AfYB8gH/AfwB9wHvA/8B6wH/AdkB1AHoAf8BNgE1AeYB/wFcAVgB4gH/
-        AaABmgHgAf8ByQHCAdwB/wHvAekB4gH/AWIBXgFkAewDFgEfBAADFQEdA1oB0wHHArgB/wHxAuUB/wH5
-        AvEB/wH7AvQB/wHsAuUB/wHsAuUF/wHyAu0B/wNgAesDJQE3FAADCQEMA1ABngFmAWIBXQHqAeQBzQG/
-        Af8B4gG/AakB/wG+AVcBGgH/AcYBhAE9Af8B1QGsAW0B/wHLAawBiwH/AdEBuQGiAf8B3QHHAbgB/wHY
-        AckBwgH/AdEBwwHFAf8DXQHiAwwBEAQAAa8BfwFfAf4B/wH+AeoB/wFeAWMB3gH/AgABwwH/AgABtwH/
-        AgABnwH/AZkBmAHTAf8B7gHwAv8BFwFXAfwB/wEFAVQB/QH/AQABOAH8Af8BDQE5AfwB/wHpAesB+QH/
-        Ae4BnQFRAf8DWAHABAADQwF4AsgB5gP/Af0B/wH2AvMB/wHzAe4B8QL/AfsB7QH/AawBpwHsAf8BFgEX
-        AeoB/wIOAeQB/wEAAQEB3wH/AgkB3AH/AS0BKgHWAf8DVAGvAwcBCQQAA1ABmgG8Aq8B/wHpAtoB/wHp
-        At0B/wH0AuoB/wHzAu4B/wH2AvQB/wHuAucB/wHmAt8B/wNfAeADJwE7IAADLgFIAZEBiwGPAfwB1AG1
-        AagB/wGyAS0BAAH/AcwBTgEAAf8BzwFdAQAB/wHSAWgBAAH/Ac8BaAEDAf8BzQFgAQEB/wG+AVQBEQH/
-        AdABuAGvAf8DWgHVAwMBBAQAAa0BfwFkAf4B/wH+AegB/wFiAWcB6AH/AgAB3wH/AgAB0gH/AgABuAH/
-        AZwBmwHaAf8B7gHwAv8BKwGFAf0B/wEfAYwB/QH/ARMBXgH8Af8BHgFSAf0B/wHqAewB/AH/AewBnQFU
-        Af8DWAHABAADWQHHAvoB/QL/Af0B+wH/AfgB9AH1Af8B9wHzAfIC/wH8Ae8B/wFwAW4B8AH/AScBKAHu
-        Af8CKAHoAf8CFwHhAf8CBQHhAf8CAAHFAf8CPwFAAW4IAANhAe4B3ALJAf8B3QLNAf8BvQKvAf8BnwKV
-        Af8B3wLUAf8B8wLvAf8B+wL2Af8BZwJlAfQDNAFUJAABRwJGAYEB1wHaAd8B/wG/AY8BhAH/AawBHwEA
-        Af8BwAFEAQAB/wHIAVEBAAH/AcsBVgEAAf8BygFUAQAB/wHHAUgBAAH/Ab0BQgEAAf8BxAGsAaYB/wNV
-        AbIIAAGsAX8BaAH+Av8B7AH/AYgBjQHqAf8BDwERAdwB/wETARUB1gH/AQwBDgHDAf8BrAGtAeMB/wHx
-        AfUC/wFBAYoC/wE1AY4C/wEsAWwC/wE5AWYC/wHuAfIC/wHrAZ0BWAH/A1gBwAQAAlkBdQHyAu0B9wH/
-        AvkB/AP/Af4D/wH5Af8B8wHwAfUB/wFTAVIB9gH/Ai8B8QH/AioB6gH/Ah8B5AH/AhUB6AH/AiEBhQH8
-        AjABMQFNCAADbQH3Ae8C3AH/AcACsgH/A1UBtQM/AW8BogKZAf8B9ALrAf8B+ALxAf8BagJoAfIDKgFB
-        JAADVQGyAegB5wHoAf8BqQFOAT4B/wGyASYBAAH/AckBUQEAAf8B2gFhAQAB/wHeAWcBAAH/AdABVwEA
-        Af8BuwE1AQAB/wG1AUUBGwH/AbwCrgH/A0gBiAgAAacBfwFpAf4B+AHlAdgB/wHsAecB6wH/Ad8B1wHi
+        DAADHAEoA1QBqwMzAVI0AAMRARcDOAFdA04BmQNWAbMDVgG8A1YBuwNVAbIDTgGUAzQBVAMMARA8AAM0
+        AlQBWAFjAe8BJQHRAv8BUwFkAW4B8QNhAe4D4gH/A90B/wPaAf8D2gH/A9gB/wLbAdoB/wLfAdoB/wLd
+        AdoB/wLYAdcB/wPVAf8D1AH/A9MB/wPgAf8DmQH/A1cBvQgAAxgBIQNbAeEBBwGAASwB/wFYAV0BWgHt
+        AysBQygAAwEBAgNDAXcBZQJeAeUBqAFVAUAB/QHRAV4BFAH/AeABZQEVAf8B6AFpARcB/wHoAWcBGAH/
+        AdsBYQEYAf8BugFMAQ4B/wFpAU0BKQH6A1sB2QM4AV0UAAMjATMDRwGCAyABLgMBAQIDBgEIAwwBEAMD
+        AQQEAAMyAVEBVAFYAWQB7wEjAc0C/wFBAYABjQH5AjwBPQFoA30B9wT/A/QB/wPzAf8C8QHzAf8C+AHz
+        Af8C8QHoAf8C3gHfAf8D3gH/AukB4QH/AvEB6AH/Au4B6gH/AuYB5wH/A/UB/wPGAf8DWQHDBAADEgEZ
+        A1sB4QEbAUUBAAH/ARsBgAFLAf8BAAGmAagB/wFYAVwBWgHtAy0BRiQAAVACTwGbAaMBfwFSAv4B4wHC
+        Av8B0gGlAf8B6AFeAQAB/wHnAWgBFQH/AfABhgEiAf8B9gGSATkB/wH1AZoBSAH/AfABmAFJAf8B8gGV
+        ATwB/wHTAVYBBgH/AVIBSgE9AfcDOwFkDAADBAEGA1cBugHoAbgBugH/A2EB5ANUAa4DXAHJA2AB3gNZ
+        Ab4DPwFvAVoCXAHNAWYB6AL/AT4BeQGQAfgDPQFpBAADYgH2A/sB/wPqAf8C6gHrAf8C8QHsAf8C1AHc
+        Af8CPgHUAf8CHAHnAf8COgHkAf8CXwHXAf8CpAHNAf8D0AH/AuUB3wH/A+0B/wO9Af8DVgHBAxQBGwNb
+        AdkBHQFKAQAB/wEyAUcBBgH/ASQBMgEAAf8BDQFlAU4B/wEAAZ4BpwH/A1QB7gMtAUYgAAGPAXABTQH6
+        AfgByAGRAf8B9gHaAbkB/wHvAcMBmAH/AdUBXwENAf8B1gGTAUgB/wHeAZ0BVgH/AeABmgFTAf8B0gGM
+        AUYB/wHgAZMBSQH/Ae0BoAFVAf8B9QGPASkB/wHOAUoBAAH/A1YBuwwAAzMBUgGWAocB+wH2AvoB/wHA
+        AbkBugH/AcgBvQGzAf8B6gHhAdEB/wHwAecB1gH/AdoB0gHDAf8BlQGQAYcB/wGhAZ4BkAH/A18B2wM7
+        AWMIAANlAfYD/AH/AuwB7QH/A+4B/wL4AegB/wJoAdoB/wIAAfkB/wIAAv8CAAL/AgwC/wI7AfYB/wJp
+        AdgB/wLEAc4B/wL1Ae8B/wPAAf8DVgHBA1gB3QEKATgBAAH/ATMBPgEEAf8BNgFFAQoB/wE0AUgBIgH/
+        AU8BWwEiAf8BGgGFAVQB/wEAAZsBrAH/AVgBXAFaAe0DLQFGHAABuQGFAX8B/gHzAc4BqgH/AfQB2wG+
+        Af8B7AHEAZ8B/wHOAWoBJwH/AdoBoQFaAf8B3AGpAYEB/wHcAaYBagH/AdkBlwFPAf8B3QGNATwB/wHf
+        AZMBQwH/Ad8BjQExAf8B0QFTAQAB/wNYAcAIAAMBAQIDVQGwAfUB3gHgAf8BxAHFAcYB/wHNAccBugL/
+        AfYB3AL/AfMB2wL/AfIB2wL/AfgB4QH/AfkB7QHWAf8BmQGUAYEB/wNEAXoMAANlAfYD/QH/Au0B7gH/
+        AvUB8QH/AusB4gH/AjkB4QH/AgAB/gH/AgAC/wIAAv8CAAL/AgAC/wIvAf0B/wJqAdYB/wPkAf8CxwHE
+        Af8DVgHBA1oB2wEdAToBAAH/AS4BMwEAAf8BNAE6AR0B/wI/AUgB/wFRAl8B/wFLAVwBHgH/AQ0BZwFP
+        Af8BAAGUAaoB/wFUAVgBVwHvAy4BSBgAAbMBfwF1Af4B/QHrAdkB/wH9Ae4B3gH/AfIB0AGtAf8B2wGW
+        AT8B/wHbAaYBXwH/AdYBpQFlAf8B4gGvAYUB/wHiAaUBWgH/AdwBkAE6Af8B3gGVAT4B/wHbAYsBJAH/
+        Ac0BTwEAAf8DVgG+CAADMAFMAXMCaQH1Ae8B4gHlAf8BwgG6AbUB/wH5AecBygL/AegByQL/AeEBvwL/
+        AeABvwL/AeQBxQL/AfQB1wH/AdABxwGuAf8DWgHYATYCNQFYAxABFQQAA2UB9gL+Af0B/wLyAfAB/wL4
+        AfIB/wLoAeMB/wI4AeQB/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIqAekB/wLLAd8B/wLOAcQB/wNW
+        AcEDEAEWA1sB1gEmAUcBAwH/AV8BWwFLAf8BSQFGAUkB/wJDAUgB/wFOAVwBXQH/AUQBWwEZAf8BHAGG
+        AVoB/wEAAYwBnwH/A1QB7gMrAUMUAAG1AacBUQH9Af8B7QHYAf8B/AHrAdsB/wH+AeQByQH/Ae8BuwGI
+        Af8B7AG2AYAB/wHUAaMBXQH/AdYBrAGDAf8B5wG0AYEB/wHxAaoBTwH/AeYBoAFFAf8B2wGNAScB/wHN
+        AVABAAH/A1YBvgQAAwcBCgNVAa0B+QHWAdMB/wHnAdUB1gH/AdQBxgG7Av8B3wG2Av8B0wGkAv8B0AGe
+        Av8BzgGdAv8BzwGhAv8B4QG4Af8B5AHQAbEB/wGTAYQBagH/AcwBkQGJAf8BWwJYAcsDKQE+A2UB9gP9
+        Af8C7QHvAf8C9wHzAf8C8QHqAf8CXQHlAf8CAAH9Af8CAAL/AgAC/wIAAfsB/wIAAfgB/wIAAfUB/wI9
+        Ad8B/wPqAf8CygHGAf8DVgHBBAADDwEUA1oB1QEuAVQBDwH/AWEBYgFMAf8BWQFVAVkB/wFWAVQBXgH/
+        AVEBXAFXAf8BLQFVAQAB/wEQAYABIAH/AQABmwFgAf8BWAFdAVsB7QMuAUgQAAG1AacBUAH9Af8B6wHW
+        Af8B/QHsAdoB/wH9AecB0AH/AeEBuwGTAf8B5wG8AY8B/wHeAbEBgwH/AdIBsgGSAf8B2AGtAYAB/wHk
+        AZsBPgH/AeABlwE7Af8B3wGGARYB/wHPAVEBAAH/A1YBvgQAAy4BRwGGAXQBcQH3Af8B6gHeAf8B5wHP
+        AcwB/wHSAb8BtgL/Ac8BngH/Af4BywGYAf8B/gHNAaAC/wHRAaMC/wHOAZwC/wHVAZ8B/wHdAbcBjgH/
+        AY8BjQGKAf8B+gP/AeoBqAGkAf8BQAI/AW8DaAH2AucB/AH/ApsB3QH/AtgB6QP/AfEB/wKdAeYB/wIp
+        AfwB/wINAv8CBgHyAf8CZQHhAf8CoQHfAf8CrAHeAf8C3wHhAf8C+QH0Af8DxgH/A1YBwQgAAwoBDgNb
+        AdYBKgFXAQgB/wFmAWcBUAH/AWMBYAFiAf8BLQFQAREB/wEvAVwBDwH/AU4BhwEeAf8BHgGkAVsB/wEA
+        AacBqwH/AVgBXQFaAe0DLQFFDAABtQGoAVAB/QH/AesB1AH/AfwB6wHbAv8B6wHTAf8B8gHWAbQB/wHi
+        AcIBnwH/AecBwgGbAf8B2AGzAYsB/wHdAaoBYAH/AeMBnAE/Af8B4QGaAT4B/wHgAWgBBQH/AdEBTwEA
+        Af8DVgG+BAADVwG6AdwBsAGoAf8B2wGyAagB/wHLAaEBngH/AbcBqAGnAf8B8wHEAaMC/wHSAaoB/wH8
+        AdgBvAL/Ad4BwQL/AeQBvwL/AdcBpAH/AbQBjwFcAf8BoAGjAaUC/wHxAfAB/wFgAlwB1AMYASIDaAH2
+        AvkC/wLEAegB/wK+AdoB/wLYAeoB/wKHAfAB/wJIAv8CHwH7Af8CggHiAf8C/gHnAf8C/QHrAf8C9wHq
+        Af8C6wHoAf8D9AH/A8gB/wNWAcEMAAMPARQDWQHXAS4BXQEMAf8BOAFbARIB/wEtAVgBEgH/AVUCVwH/
+        AVsBgAGBAf8BSQGJAR0B/wEKAZgBSgH/AQABngGpAf8BWAFcAVsB7QMrAUMIAAGnAXgBYAH8Af8B6gHQ
+        Af8B/QHrAdgC/wHmAcsB/wH+AdUBqQH/AfEBwwGbAf8B6QG1AYkB/wHiAZwBSAH/AfQBpgFJAf8B+AGp
+        AUgB/wHnAZ8BQAH/Ad8BagEIAf8B0AFQAQAB/wNWAb4EAANhAeQBxwGeAZsB/wHkAcgBxwH/AfMC5gH/
+        AdQB1QHXAf8BxAG0AawB/wHyAckBrQL/Ad8ByAL/Ad4BywH/AfsB2gG8Af8BzAGmAYsB/wGOAYMBgQH/
+        AeQB4wHlAf8BuAKoAf0DQAFwBAADaAH2Bv8B+QH/AtsB5QH/Ao0B0gH/AoYB9gH/AlQC/wIjAfYB/wKr
+        AecB/wL8Ae0B/wLsAe0B/wLqAesB/wPoAf8D9gH/A8kB/wNWAcEQAAMKAQ4DWgHYARgBXwEAAf8BZQGI
+        AU4B/wFlAVwBZgH/AUoBSAFPAf8BTAFeAVsB/wFAAYgBGAH/AQ4BmQFRAf8BAAGVAasB/wFYAV0BWwHt
+        AzQBVQQAAacBeQFjAfwB/wHqAc8B/wH5Ac4BpwH/AfgBygGkAf8B6wG8AZgB/wHlAbsBngH/AesBxAGq
+        Af8B7gHBAaEB/wHqAbIBiwH/Ae8BqAFhAf8B7wGSATcB/wHtAYABBAH/AdEBUwEAAf8DVgG+BAADLQFG
+        A1MBqgGKAWsBagH5Ae8BwwHAAv8B6QHnAf8B1QHUAdUB/wG/AbQBrwH/Ac4BsgGlAf8B0AGtAaAB/wG2
+        AZYBiwH/AZ0BkQGQAf8B1QHJAcsC/wHtAesB/wFdAVoBWQHSAxIBGAQAA2gB9gT/A/gD/wH7Af8CxgHi
+        Af8CigHbAf8CjgH2Af8CkgHwAf8C4gHuAf8C9AHvAf8D7QH/A+sB/wPqAf8D9wH/A8sB/wNWAcEUAAMK
+        AQ4DWwHWATEBiAETAf8BZgGHAVAB/wFPAUsBTgH/AT0BOgFFAf8BRQJRAf8BLAGFAQAB/wESAaABPQH/
+        AQQBlQErAf8DUwGqBAABqQF6AWIB/AH/AcEBiQH/Ac8BiQE7Af8D3wH/Ac8B1QHbAf8BwQHGAckB/wHg
+        AeQB6AH/AdUB3AHiAf8BwQHMAdUB/wHRAdsB4AH/AdgBwAGyAf8B2QFeAR0B/wHiAVwBAQH/A1cBvwgA
+        AwcBCQMmATkDUAGeA2IB7wHrAbcBtAH/AesB1gHVAf8B2wHXAdYB/wHSAtcB/wHKAbABswH/AecBvwG6
+        Av8B8gHrAf8B6gGwAasB/wNEAXoIAANoAfYE/wP5Af8C+QH4Af8C/QH6Af8CywHgAf8CxwHcAf8C+wHy
+        Af8C9gHzAf8C7wHwAf8D7wH/A+0B/wPrAf8D+QH/A80B/wNWAcEYAAMRARcBWQFdAVkB1wEuAYwBDwH/
+        AVsBZwFEAf8BQgE5AUQB/wE+AVQBMQH/AUcBpQEgAf8BGwGfAQAB/wNbAeEDHQEqBAABqwF2AT4B/AHs
+        AZQBMQH/Aa0BWwEoAf8BxQG7AbQB/wHPAcsByAH/Ad4B5gHqAf8B3AHjAegB/wG7AcABxAH/AZ4BggFe
+        Af8BqAGAAVkB/wGiAWkBXQH/AZsBMQENAf8B6QFhARYB/wNWAb4UAAMjATQDTAGTA18B2wHmAbABrQH/
+        AfoB5gHkAv8B7QHuAf8B/AHDAb0C/wHdAc8B/wJeAVoB3QMTARoIAANrAfYE/wP7Af8D+QH/AvoB+QH/
+        AvwB+wH/AqwBzwH/AroB1AH/AvkB9gH/A/EB/wPvAf8D7QH/A+sB/wP3Af8DzwH/A1cBwhwAAwcBCgNb
+        AdYBKwGNAQ4B/wFEAYABIQH/AVgBrQE2Af8BNwGwASAB/wNbAeEDFQEdCAACXgFYAd0B9QGxAVoB/wHe
+        AYoBLAH/AdIBWQEHAf8BvwFZARsB/wHKAbEBoAH/AcgBtQGoAf8BqwFhAT0B/wGfAScBAAH/AZsBFwEA
+        Af8BlwEXAQAB/wHNAUsBEgH/AaUBbgEtAf4DQQFzHAADHQEpAUcCRgGAA2EB2gHgAagBpwH/Af0BzgHM
+        Af8B5wGdAZYB/wNAAXAMAAN8AfgU/wL4AfwB/wLzAfoD/wH+Af8D/QH/A/wB/wP6Af8D+QX/A9MB/wNX
+        AcIgAAMPARQBWgFeAVoB1QEdAZwBAAH/ARsBlgEMAf8DWwHZAxYBHwwAAyUBNwNfAeAB8wGqAUwB/wHz
+        AZ8BPQH/AekBiQEjAf8B1QFnASAB/wHLAVwBGwH/AcsBTwEIAf8BygFSARIB/wHRAVkBGgH/AdsBZQEi
+        Af8BgQFcAT4B+ANMAZMoAAMaASQBQAI/AW8DXgHZAVwCWQHMAxMBGgwAA1sBywOZAf4DqwH9A6sB/QOr
+        Af0DqwH9A6sB/QOrAf0DqwH9A6sB/QOrAf0DqwH9A6wB/QOhAf4DYgH1AzsBZSQAAw0BEgFcAWEBXAHc
+        A1wB3AMQARYUAAMNARIDQwF3AlsBWQHEAmQBXAHnAXMBZQFSAfQBiwFuAUIB+AF1AWIBSAH2AWMBYQFU
+        Ae4CYAFbAdYBUQJPAZwDJwE6EAADIwEzA1YBuQNUAasDEQEXAxABFgMgAS4DAQECIwABAQMEBAUBBwMM
+        ARADHQEqAysBQwMvAUkDJQE3AxYBHgMSARkDIAEuAy0BRQMyAVADMgFRAy4BSAMiATIMAAMGAQgDUAGk
+        A1kBzwNcAc4CVwFfAegBUwFZAWcB8gNbAeEDWQHMA1sB0ANIAYQYAAMEAQYDNAFUA1YBswJkAVwB5wFl
+        AWIBWAHvAWUBYgFYAe8BYQFfAVcB6AFXAlYBuAM2AVkDBwEJEAADXQHSAbUCmgH/AWgCUwH/A1ABngNa
+        AdsDXgHlAx8BLCAAAwMBBAMKAQ0DEQEXAUACPwFuAWECXAHcAWECWgHkA1kBwwNCAXUDNQFWA0QBfAFd
+        AlkB1wGGAW0BUQH3AYgBYwFBAfgBZQJeAeUDVAGrA0ABcQwAAxgBIQF7AnkB+gHeAc4ByAH/Aa0BsQHO
+        Af8BSgHCAfkB/wFZAeAC/wGHAakB4AH/AeQBzgHDAf8ByQLCAf8DVQGyFAADEgEYAVMCUgGoAfYBigFM
+        Af8B8AG/AasB/wHjAcYBwAH/AdUBwAG+Af8B0wG/Ab0B/wHkAcYBwAH/Ae8BwAGtAf8B9gGPAVEB/wNV
+        AbIDGAEhDAADWQHHAcgBswGyAf8BoAGHAYYB/QFfAVYBVAH7AWICXwH/AV8CWQH+A1cB3wNZAckDWgHN
+        A1oBzQNaAc0DWwHQA1kByQNFAX0DBgEIAyIBMQMwAUwDMQFNAlwBWgHNAf4BxgGmAf8B7AHQAcUB/wHC
+        AX8BSwH+A1IBqQNKAYwCYQFUAe4B9gHCAaUB/wHXAsYB/wHVAcUBxgH/Ae8ByAG0Af8BlQFpAU0B+gNO
+        AZkIAAMEAQYDEAEWAz4BawNEAXkDQgF0AV8BaAFuAfMBZwGlAcoB/wNXAcUDPwFtA0UBfQMhATADCQEM
+        AwYBCAgAAxIBGAFbAlkBwwHzAakBhQH/Ac0BtgGuAf8BxgG8Ab8B/wHyAeoB7QH/AcsBxgHIAf8BxgHC
+        AcMB/wH0AewB7gH/AccBvgHCAf8ByAGyAa4B/wH0AbABjQH/AVsCWAHLAxUBHQgAAw8BFANIAYQDVgG7
+        AXoBfAF/Af4BaAGTAaAB/wFpAaMBrwH/AagBnwGtAf8BwQGOAZoB/wHOAWYBgwH/AdYBXAFiAf8B4QFo
+        AWoB/wHgAWUBaQH/AeABZQGBAf8BUAJAAf0DRAF6AxoBJQMnATsDJwE7A0gBhAHpAZsBVgH/AcgBxQHQ
+        Af8B6gG7AaQB/wFeAlwBzgFWAlUBsQHxAa8BiQH/AcYBwQHKAf8B3AG8Aa4B/wHhAbsBqQH/AcQBvAHE
+        Af8B6wG/AaoB/wFcAlgB0QQAAUkCSAGIA1wB5wFbAlgB6QFcAlcB3wFhAlwB3ANbAdkBiQGDAYIB+wG4
+        AaIBngH/A10B7QNbAdkBXgJYAd0DWgHkA2AB6wNbAeEDOgFiAwgBCwFUAlIBpgH2AaUBXwH/AdYBvQHD
+        Af8BtAGwAdYB/wLcAdkC/wH+AfwB/wH3AvUB/wL1AfQC/wH9AfwB/wPdAf8B2gHTAdcB/wHgAcgBxQH/
+        AfMBpQFmAf8DVQGyAwoBDQQAA1IBqAFgAmQB7AGAAYoBjQH7AbQB4gHrAf8BtAHzAv8BqwH+Av8BlAH3
+        AfoB/wGRAdsB5AH/AY4BswHAAf8BhgGBAZMB/wFeAS4BMQH8AWICWAHvAdACTAH/Ad4BaQFqAf8DVgGz
+        BwABAQMHAQkDDwEUAVwCWgHNAeIBwwG2Af8B0gHKAdEB/wGVAWoBTQH6AWECVAHuAeEBwgG1Af8BzwHG
+        AcwB/wG4AX8BTAH+AbUBTgFAAf0B1wHGAcUB/wHaAcUBwgH/AWwBZwFYAfIEAAGGAoIC+QL4Af8B4QLf
+        Af8B3ALaAf8B2QLXAf8BygLHAf8B3wLeAf8B7QLrAf8B9wL0Af8B9QLyAf8B9gHzAfQB/wHuAfAB7AH/
+        AcwB7AHQAf8B0QHPAcsB/wNWAbsDMAFLAbcBTQFAAf0BzQGhAYoB/wHYAdQB1QH/AtYB+wH/AtAB+gP/
+        Af0J/wH+Av0C/wL+Af8B/gL8Af8B2QHWAdoB/wHKAaEBjgH/AecBYgExAf8BNgI1AVgEAAFuAX0BigL6
+        A/8B2gP/Aa8B8wL/AYwB4AL/AYkB6gL/AYcB9gL/AZMB/QL/AZ4D/wGTAfMB/gH/A1cB3wMpAT4BiwJa
+        AfsB3wFjAWIB/wNVAbIDAAEBAwoBDQMcASgDMgFQAUwCSwGQAbYBfwFaAf4B0wHOAdYB/wHgAboBpgH/
+        AeEBVwEPAf8B2wHBAbcB/wHXAcsBzwH/AXMBYgFIAfYBbQFbAVMB8QHgAcgBwwH/AdgCyAH/AYwBagFB
+        AfkEAAGUAosB/AHsAu8B/wHVAtYB/wPZAf8B1wLYAf8BywLMAf8B4QLiAf8B7ALtAf8C6gHrAf8B6gLs
+        Af8B7ALtAf8B6AHqAekB/wHmAe8B6AH/AeEC3gH/A1UBugNSAakB6wGRAUYB/wHLAbYBswH/AdoB3QHe
+        Av8C/gH/AcUBxgH8Af8C0gH6Ev8C/gH/Ad0B3wHhAf8BygG4AbcB/wHtAZUBSwH/AVgCVgG5BAABbQGB
+        AYUB9wHcA/8BogHrAv8BgAHcAv8BUAHRAv8BWAHdAv8BVAHkAv8BXwHoAv8BhQH1Av8BjAH5Av8DWwHh
+        AyABLgF+Ak0B+gHdAWMBZAH/A1UBsQMGAQgDNwFaAWACXAHUAW4BXwFMAfMBbgFfAUwB8wGtAWEBGQH+
+        AeABuQGmAf8B1AHPAdUB/wHvAZkBTwH/AeABuwGqAf8B1gHPAdUB/wG5AX8BSwH+AbMBSgE7Af0B3QHM
+        AcoB/wHeAcsByAH/AW8BXwFMAfMEAAGHAoUB+QHuAvAB/wLmAeUB/wPmAf8D5gH/AegC6QH/AeYC5QH/
+        AewB6QHmAf8B7wHsAeYB/wLpAeYB/wPjAf8B4wLiAf8C7wHwAf8B2QHUAdUB/wNUAa8BYQJbAeEB6AGW
+        AU8B/wHzAewB7wH/Af4B/QT/Af4B/wL3Av8CuQH7Af8C3A7/A/4C/wL+Af8B9AHtAfIB/wHnAZgBVQH/
+        AV8CVwHoBAABXwFrAW4B8wGwAfYC/wFlAdoC/wE+AcwC/wElAcEC/wFGAdMC/wEzAdQC/wE9AdgC/wFP
+        AeMC/wFYAewC/wNeAeUDKQE+AX4CTQH6Ad0CYwH/A1UBsQMqAUABbwFZAUIB9QHjAcQBtgH/Ad4B1wHc
+        Af8B3gHWAdsB/wHgAbgBoQH/AeMBmAFSAf8B1gHPAdMB/wHnAb8BrQH/Ae8BtQGVAf8B0wHQAdgB/wHk
+        AcEBsQH/AegBvAGmAf8B1AHQAdYB/wHqAcMBrwH/AV4CXAHOBAADZQHlBP8B/AP/AfkB/QH+Af8B9AH7
+        Af0B/wHzAfwB/gH/AesB6QHrAf8BwAHHAdoB/wGsAbQBzwH/AckBxAHPAf8C4wHgAf8B3QLeAf8B5gLo
+        Af8BswKtAf8DSAGHAWECVAHuAdkBhQE+Af8BxQHDAckB/wHyAfMB9An/AvQC/wGwAaoByAH/AbEBpwGj
+        Af8B5gHiAd8B/wH6AvkF/wH2AfUB9gH/AccByAHOAf8B2QGMAUoB/wFjAVgBVgHvBAABWQFnAWwB8gGJ
+        AesC/wFHAdAC/wE6AcsC/wFAAc4C/wFaAdkC/wFQAdsC/wE9AdYC/wE6AdgC/wE+AeUC/wJZAWAB6wEs
+        AisBQwF+Ak0B+gHcAWMBZAH/A1UBsQNVAbUB3wGzAZkB/wHaAdcB4AH/AdsBsQGbAf8B3AG2AaEB/wHX
+        AdYB3wH/AeoBtQGYAf8B6QG7AaUB/wHXAdMB2gH/AfMBqgGAAf8B6gG8AaQB/wHeAdcB2wH/Ad4B2AHd
+        Af8B6QHOAcIB/wGWAV8BQAH7AzgBXAQAA1cBugHrAeAB3AH/AeEBxwG+Af8B1wHKAcgB/wHcAcIBugH/
+        AdEBowGZAf8BWAGjAdwB/wEyAbYB7QH/ARYBxwHqAf8BEQGDAcwB/wGsAagBvAH/AdkB0gHNAf8B2gLX
+        Af8BbQJqAfwDLwFKAWECVAHuAdsBhQE8Af8ByQHIAcwB/wH2AvcF/wHvAuwB/wHNAcIBvgH/AbsBsAGr
+        Af8BkwGKAasB/wG0AagBtgH/AcUBuQG1Af8B0gLLAf8D8QH/Ac4BzwHVAf8B3AGMAUgB/wFiAVgBVwHv
+        BAABVQFcAV4B6gGGAd0B/gH/AYkB4AL/AYUB2wH7Af8BYgHKAfEB/wFLAbgB6wH/AWkB0AHyAf8BhgHb
+        Av8BhQHjAv8BUwHgAv8CWgFfAdsDJAE1AX4CTQH6AdwBYwFkAf8DVQGxAWICWAHpAd4ByQHCAf8B4QHW
+        AdcB/wGtAUUBNgH9AbEBTgFAAf0B4AHaAd0B/wHjAcYBugH/AfcBngFUAf8B3QHWAdoB/wHmAcgBuwH/
+        AboBbwErAf4BagFnAVkB8gFsAWcBWQHyAVwCWQHPAzUBVwMHAQkEAANIAYYBvAGgAZwB/wHjAWoBKgH/
+        Ad8BowFkAf8B6wGfAV8B/wHTASwBAgH/AUEBhAG2Af8BUQHdAv8BTAP/ARYBywH7Af8BWQGAAbcB/wHh
+        AcsBxAH/AdoByAHJAf8BYgJXAfEDFQEdAVwCVwHfAekBkAFBAf8B9AHrAe4B/wL5AfoB/wHSAsoB/wG6
+        AqwB/wHWAc8BzgH/AfsB+QH4Af8B6gHsAv8B7AHtAf0B/wHvAesB6AH/Ad8C2QH/AfkB+AH5Af8B9QHu
+        AfIB/wHnAZIBSAH/AV8CVwHoBAADNQFXA1UBtQFdAWEBZQHtAYYBpQGzAf8BZQGLAZgB/wFbAYMBlAH/
+        AVYBkwGpAf8BTgF/AYgB/gFSAmUB9AJaAV0BygMvAUoDHwEsAXoCTQH6AeIBZgFnAf8DVQG0AW4BXwFM
+        AfMB4wHTAc8B/wHnAdcB1QH/AW0BXQFMAfMBbQFiAVIB9AHmAtsB/wHjAdEBywH/AeABXAEZAf8B5AG3
+        AZ8B/wHgAeEB6gH/AbgBfwFtAf4DUwGqAzYBWQMVAR0DAwEECAADNAFUA38B/gHsAZkBSgL/AcwBjgL/
+        Ad0BtwH/AfMBUwEhAf8BjgFTAV0B/wE5AcQB/gH/AUEB+AH9Af8BEwHhAfoB/wEnAWcB1wH/AeABygHN
+        Af8BzAK4Af8DWAHdAwYBCAFSAlABowHqAYwBOwH/Ac8BrwGnAf8BugG0AbgB/wHMAsIB/wHzAvEZ/wHb
+        Ad8B4gH/AcgBrwGoAf8B6wGPATwB/wNVAbUMAAM2AVkBfwF+AXcB/gGCAWkBZwH/AZwBjQGGAf8BxQGm
+        AaEB/wF/AXYBewH+A1kB9QFkAlwB5wNaAdgDWQHXAZEBagFoAf4B4QKBAf8DUAGdAmEBWAHmAecB1AHO
+        Af8B5gHeAeAB/wGpAXABNwH+AasBeQFCAf4B5gHgAeQB/wHpAdMBygH/AWECVAHuAXMBYgFIAfYB5gHg
+        AeIB/wHpAdQBzAH/AWQCXAHnAzoBYQMjATMDCAELCAADGgElAWYBYgFmAfUB1QGjAYwB/wH9AbYBVQL/
+        AeUBrAH/AfkBgwEuAf8BwgFUATsB/wFUAa8BygH/AVABtQGYAf8BTQG4AZAB/wE2AWoBiwH/AcUBtwG8
+        Af8BuAKhAf8DVgG4BAADLQFFAZQBXwFFAfsB0wGRAVcB/wHUAcoB0An/Af4C/Qn/A/0C/wL9Af8B/gL8
+        Af8B2gHWAdwB/wHQAZUBXgH/AdkBaQE1Af8DMwFTDAADNQFVAXQBcwFyAf4BVAJWAf8BYgJeAf8BuwGd
+        AZcB/wH3AcUBvAH/AfsBxAG9Af8B+QHCAbsB/wHxAbEBqwH/AeoBnwGZAf8B6gGTAZAB/wFgAlkB6wMc
+        ASgBUwJSAagB5wG/AacB/wLnAe4B/wHnAckBugH/AecBygG9Af8B5wHoAe8B/wHoAbwBoAH/AVECUAGf
+        A04BmAHnAb0BpQH/AecB6wH1Af8B4gGpAYcB/wFSAlABpAMoATwDDAEQCAADBgEIA14B3QG4AaIBowH/
+        AWUBTQGfAf8BlgFqAZ8B/wGUAVwBmwH/AUkBLwGvAf8BTgGDAUMB/wE9AcMBTgH/AZYB9gGzAf8BUAHJ
+        AVMB/wFmAYgBUAH/A38B/gM/AW0EAAMHAQkDUAGeAesBowFbAf8B5wG3AaMB/wHXAc4B0gH/AdYB2AHa
+        Af8B/gL8Af8B9QL0Af8B9ALzAv8B/QH+Af8B2gHcAd0B/wHWAc8B0gH/AeUBtwGmAf8B7AGmAV4B/wNT
+        AaoDCQEMDAADHwEsA2oB+QFlAmQB/wFLAU0BTgH/A1IB9ANRAaIDVgG0A1wByQNgAd4BZAFfAV4B7QFb
+        AlkBxAMdASoEAAMdASoCYQFYAeYB6AHOAbwB/wHoAuMB/wHoAeIB4wH/AegBygG4Af8BXQFcAVUB6gMl
+        ATcDGAEiAW8BXwFMAfMB6QHYAc8B/wHqAc4BuwH/AV0CWQHSAxwBJwMHAQoMAAMqAUECTwFOAZcCVwFf
+        AegBYQFkAfkB/wGdAaYB/gH/ASIBIwH2Af8BIQEjATIB+wE0Ab0BSAH/AaIB/wHOAf8BjAH/AbAB/wEb
+        AVoBEwH/A1MBqgwAAwwBEAFXAlUBugHsAbABgAH/AdEBpQGQAf8ByAGyAbEB/wHyAeYB6AH/AcoBwgHE
+        Af8BxQG9Ab8B/wHzAegB6gH/AcoCtgH/Ac0BowGRAf8B7gG0AYUB/wFZAlcBwgMQARUUAANbAcsD1wH/
+        A5MB/wNQAaMQAAMGAQgQAAMkATYBWwJZAcQBiQFqAUcB+QGBAV8BXAH4AVoCVwHFAykBPgMGAQgDAAEB
+        Az0BaQFcAVoBWQHMAVwCWQHMAzsBYwMHAQoDAQECFAADQwF3AWABYgL/AcsBzAL/AVcBVQL/ARYBGgFS
+        Af0BKQFrASoB+gFjAYwBbgH5AWEBZQFhAe4BTAFxAVEB9wNHAYMQAAMNARICUAFPAZsB3wGcAVMB/wHs
+        Ab4BnAH/AecBwgGvAf8B2QG1AakB/wHXAbMBqAH/AecBwgGvAf8B7AG+AZ0B/wHhAaABWAH/AlIBUAGj
+        AxMBGhgAAycBOgNnAfEDXgHZAxQBG3AAAxABFgJaAWAB3gKoAb8B/QJNAaAB+gJaAV4B1QM7AWQDJgE4
+        AxIBGQMoATwDFgEfGAADLQFGA1EBogJcAVcB3wFjAWEBXgHuAWMBYQFfAe4CYQFbAeECUwFSAagDMAFM
+        AwIBA7gAAyMBMwNZAewDVgG+AxIBGQgAAxEBFwNTAaoCXAFVAeoBZwFmAVkB8gNdAe0DWQHHAyoBQQQA
+        AwkBDBwAA0YBgQNWAbsDVQG1A1UBtQNVAbUDVQG1A1UBtQNVAbUDVQG1A1UBtQNVAbUDVQG1A1YBtgNW
+        AbsDPAFoDAACOQE6AWACQgFoAfUCWQFdAdcDSgGLAy4BSAMYASEDBwEKQAADJgE5A1gB6QHyAucB/wHa
+        AtAB/wNXAcIDEgEZAxEBFwJeAVsB2QH3AdgBqwL/Ad4BrQL/Ad0BrgL/AewBwgH/AegBzgGqAf8BYgJY
+        Ae8DWQHSA1sB4QNZAcMDUAGdAz8BbgMgAS4MAAGxAVMBQAH9AfABigEfAf8B7QFpARQB/wHuAWgBEwH/
+        Ae4BZQEPAf8B7gFiAQoB/wHtAV0BAAH/Ae0BWAEAAf8B7QFZAQAB/wHtAVUBAAH/Ae0BUgEAAf8B7QFP
+        AQAB/wHyAU0BAAH/AeMBSwEAAf8DWQHEDAACUQFSAacCIAHeAf8CFQHVAf8CBAG6Af8CAAGjAf8CVAFh
+        Ae4CVQFWAbQDQAFxAzIBUQMUARwwAAMnATsDXAHnAeoC3wH/AewC4gH/AeYC2QH/AdwC1QH/A1kBxANU
+        Aa4B+gG8AYAC/wHbAaEC/wHFAYYB/wH9AcIBhAH/AfgBwgGIAv8B3QGpAf8B6gG1AYcB/wG9AaIBlwH/
+        AeAB3QHgAf8B5wHiAeMB/wHTAcwBzQH/AYgBgAGBAf4DZQH0A1kBxwMxAU8EAAGyAX8BRgH+AfYBtwGK
+        Af8B9AG6AZQB/wHyAbcBjwH/AfIBtgGPAf8B8gG1AY0B/wHzAbQBiAH/AfMBsQGFAf8B8QGuAYAB/wHw
+        AaoBZwH/AfABqgFmAf8B7wGpAWUB/wHzAawBaAH/Ae8BZwEYAf8DVgHBCAADCgENAlwBXgHOAi4B8wH/
+        Ah8B7AH/AhMB5gH/AgYB3gH/AgABzwH/AZcBkQHFAf8BtAGrAbAB/wFgAVoBlgH/AlsBXgHZAlUBVgGx
+        A0ABcSQAAyQBNgNZAewB6QLcAf8B9QLtAf8B4QLYAf8B5ALZAf8B/AL3Af8BWgJYAe4BbAFfAUwB8wGu
+        AVABFAH/AeYBnAE9Av8BvgFVAf8B7QGkAUEB/wGuAUsBDQH/AeUBoQFHAf8B3gGWAUAB/wHNAZ8BaQH/
+        Ac0BwgHBAf8B7AHcAdgB/wHvAdkB1wH/AfAB3gHcAv8B/QH8Af8B4ALUAf8DVgG4BAABpwF9AUsB/gH/
+        AfEB8wH/AZkB4AGwAf8BLgHHAUgB/wEtAcEBQgH/ARsBtQEqAf8BrAHdAbgB/wH9Ae8B9gH/AfkBtgGH
+        Af8B+wGzAYMB/wH6AasBZAH/AfUBrAGAAf8B6QHnAe4B/wHjAY8BSwH/A1gBwAgAAywBRAJIAXEB9gI2
+        AfcB/wIlAeoB/wIZAeUB/wIIAeAB/wETARIB3QH/Ad0B1AHgAf8B9wHtAd4B/wHpAd4B2AH/Ad0B0gHM
+        Af8BzAHCAbwB/wJNAWkB+iAAAyQBNQFcAlkB7AHrAuQB/wH1Au0B/wHqAuIB/wH7AvgB/wH2AvQB/wFf
+        AlsB7AMmATgBeQFPASsB/AGEASsBAAH/AdsBlgE7Af8B8gG5AV8B/wG3AWUBJwH/AV4BGwEAAf8BlQE6
+        AQAB/wHJAYgBLgH/Ac8BnAFdAf8B5AHMAcQC/wHtAd8C/wHiAdEB/wH5AdUBxgH/AdgBwAG7Af8DXwHo
+        AykBPwQAAagBfwFPAf4B/wHvAfAB/wGFAd0BmgH/AREBzwEvAf8BCgHBASAB/wEAAakBAAH/AZcB0wGb
+        Av8C5wH/Af0BsAFeAv8BsQFiAv8BoQFJAf8B/AGcAUcB/wHtAeAB3gH/AeQBkAFJAf8DWAHACAACPAE9
+        AWcCJQHhAf8CNAH5Af8CKQHtAf8CIQHoAf8CCgHiAf8BQQE+Ad4B/wHzAewB3wH/AegB3wHbAf8B4gHY
+        AdoB/wHoAd0B2wH/AewB4QHcAf8CWgFdAdMcAAMkATYBXwJXAegB6wLmBf8B+AL2Af8B+gL2Af8B8gLv
+        Af8BZAJiAecDJwE7BAABagFlAVIB9AHgAacBUgL/Ad8BswH/AccBpgGGAf8BnwFlAUUB/wGeAWQBQQH/
+        AYQBPwEUAf8BaAEsAQAB/wGoAWABPQH/A2UB9ANiAekBfgF5AXcB+AFgAl0B7QFQAk8BmwMKAQ4IAAGm
+        AX8BUwH+Af8B7wHuAf8BhwHhAaEB/wEaAd4BRgH/ARQB0gE3Af8BAAG4AQsB/wGXAdYBnwL/AeoB6QH/
+        Af4BtgFoAv8BvAGJAf8B/gGsAVoB/wH8AaIBUAH/AfAB5AHiAf8B5AGTAUwB/wNYAcAEAAMEAQYDUQGi
+        AoMB9AH/AUwBSwH5Af8BKAEnAfIB/wEXARgB7AH/AQQBBQHmAf8BkgGPAeIB/wH6AfEB4QH/AeQB2wHc
+        Af8B4wHZAdoB/wHvAeQB3gH/AcIBuAHGAf8DSAGFEAADGgElAyoBQQM4AVwDXgHlAe4C6A3/AfEC7gH/
+        AWICYAHpAyYBOQgAA1YBswHvAcoBoQL/AfsB9AH/AfkB9AHuAf8B7AHZAcYB/wHtAdgBwAH/AecB0gG6
+        Af8BzQGRAUgB/wFyAVABPAH+A0QBegMDAQQDEQEXFAABowF/AVcB/gH/Ae8B6wH/AbwB7gHHAf8BigHm
+        AZQB/wGJAeMBjwH/AWMB2QFmAf8BxgHpAccC/wHxAfAC/wHPAZkC/wHRAZwC/wHKAZMB/wH9AccBlAH/
+        AfQC6wH/AeMBkQFNAf8DWAHABAADFAEbAV0BXAFhAeEC+QH4Af8B6AHkAfEB/wHGAcAB7wH/AZABjQHs
+        Af8COgHoAf8BywHFAeUC/wH3AeIB/wHzAeoB4AH/Ae0B4wHdAf8B9wHsAeMB/wGYAZABsAH/AywBRAgA
+        AxYBHwNUAasDZAHnA10B8ANqAfkB4ALWDf8B7wLrAf8BZAJjAewDIwEzDAADEQEXAmEBXAHcAfgB5gHT
+        Bv8B9gHrAf8B+wHtAdwB/wH3AdsBvgH/AeMBvwGnAf8BqwGnAa8B/wJZAVoB9QNcAeoDWwHZA1kBwwNS
+        AaYDNwFaAwMBBAQAAaIBfwFaAf4B/wH2AeYB/wHIAccB8wH/AZQBiwHeAf8BlwGOAd4B/wGUAYoB2QH/
+        AdgB0wHuAf8B9QH2AfsB/wGYAa0B/gH/AY8BpwH7Af8BjAGhAfoB/wGWAaYB+gH/Ae8B8AH3Af8B6QGV
+        AUgB/wNYAcAEAAMmATkClgHPA/8B/AH/AfkB9gHyAf8B/AH3Ae8D/wHrAf8B2QHUAegB/wEwAS8B5gH/
+        AVYBUgHiAf8BoAGaAeAB/wHJAcIB3AH/Ae8B6QHiAf8BYgFeAWQB7AMWAR8EAAMVAR0DWgHTAccCuAH/
+        AfEC5QH/AfkC8QH/AfsC9AH/AewC5QH/AewC5QX/AfIC7QH/A2AB6wMlATcUAAMJAQwDUAGeAV8CXAHq
+        AeQBzQG/Af8B4gG/AakB/wG+AVEBFAH/AcYBhAE3Af8B1QGsAWcB/wHLAawBiwH/AdEBuQGiAf8B3QHH
+        AbgB/wHYAckBwgH/AdEBwwHFAf8DXQHiAwwBEAQAAaMBfwFfAf4B/wH+AeoB/wFYAV0B3gH/AgABwwH/
+        AgABtwH/AgABnwH/AZkBmAHTAf8B7gHwAv8BEQFRAfwB/wEAAU4B/QH/AQABMgH8Af8BBwEzAfwB/wHp
+        AesB+QH/Ae4BnQFLAf8DWAHABAADQwF4AsgB5gP/Af0B/wH2AvMB/wHzAe4B8QL/AfsB7QH/AawBpwHs
+        Af8BEAERAeoB/wIIAeQB/wIAAd8B/wIDAdwB/wEnASQB1gH/A1QBrwMHAQkEAANQAZoBvAKvAf8B6QLa
+        Af8B6QLdAf8B9ALqAf8B8wLuAf8B9gL0Af8B7gLnAf8B5gLfAf8DXwHgAycBOyAAAy4BSAF/AX0BfgH8
+        AdQBtQGoAf8BsgEnAQAB/wHMAUgBAAH/Ac8BVwEAAf8B0gFiAQAB/wHPAWIBAAH/Ac0BWgEAAf8BvgFO
+        AQsB/wHQAbgBrwH/A1oB1QMDAQQEAAGhAX8BZAH+Af8B/gHoAf8BXAFhAegB/wIAAd8B/wIAAdIB/wIA
+        AbgB/wGcAZsB2gH/Ae4B8AL/ASUBhQH9Af8BGQGMAf0B/wENAVgB/AH/ARgBTAH9Af8B6gHsAfwB/wHs
+        AZ0BTgH/A1gBwAQAA1kBxwL6Af0C/wH9AfsB/wH4AfQB9QH/AfcB8wHyAv8B/AHvAf8BagFoAfAB/wEh
+        ASIB7gH/AiIB6AH/AhEB4QH/AgAB4QH/AgABxQH/Aj8BQAFuCAADYQHuAdwCyQH/Ad0CzQH/Ab0CrwH/
+        AZ8ClQH/Ad8C1AH/AfMC7wH/AfsC9gH/A2UB9AM0AVQkAAFHAkYBgQHXAdoB3wH/Ab8BjwGEAf8BrAEZ
+        AQAB/wHAAT4BAAH/AcgBSwEAAf8BywFQAQAB/wHKAU4BAAH/AccBQgEAAf8BvQE8AQAB/wHEAawBpgH/
+        A1UBsggAAaABfwFoAf4C/wHsAf8BiAGNAeoB/wEJAQsB3AH/AQ0BDwHWAf8BBgEIAcMB/wGsAa0B4wH/
+        AfEB9QL/ATsBigL/AS8BjgL/ASYBZgL/ATMBYAL/Ae4B8gL/AesBnQFSAf8DWAHABAACWQFoAfIC7QH3
+        Af8C+QH8A/8B/gP/AfkB/wHzAfAB9QH/AU0BTAH2Af8CKQHxAf8CJAHqAf8CGQHkAf8CDwHoAf8CJwF7
+        AfwCMAExAU0IAANtAfcB7wLcAf8BwAKyAf8DVQG1Az8BbwGiApkB/wH0AusB/wH4AvEB/wNnAfIDKgFB
+        JAADVQGyAegB5wHoAf8BqQFIATgB/wGyASABAAH/AckBSwEAAf8B2gFbAQAB/wHeAWEBAAH/AdABUQEA
+        Af8BuwEvAQAB/wG1AT8BFQH/AbwCrgH/A0gBiAgAAZsBfwFpAf4B+AHlAdgB/wHsAecB6wH/Ad8B1wHi
         Af8B3wHZAeQB/wHfAdgB5AH/Ae8B6QHrAf8B9gHuAewB/wHiAdoB7QH/AeAB2QHtAf8B4AHaAe4B/wHj
-        Ad8B8AH/AfoB9AHyAf8B4gGTAVYB/wNWAcEEAAM4AVwCUAFSAaQCWgFdAcoBagFrAXsB8wLDAd4B/wLO
-        AfQB/wJrAv8CUQH+Af8COAH3Af8CIgHrAf8CFgHqAf8CXAFgAdQDEAEVCAADZAHsAcgCugH/A1UBsAMW
-        AR4DVQGyAcACtAH/AegC3AH/AfAC5wH/AWMCYQHrAxwBJyAAAwMBBANeAdkB3gHZAdwB/wGhATEBFgH/
-        AcABPAEAAf8BzwFbAQAB/wHfAWsBAAH/AecBggEAAf8B4AFuAQAB/wHJAUkBAAH/AboBWQE7Af8BoQGZ
-        AZ4B/QM3AVoIAAHRAZ8BgwH/Af4BzgGYAf8B/QHIAZIC/wHMAZEC/wHJAYwC/wHHAYkB/wH8Ab4BggH/
-        AfkBtwFtAv8BvAFpAv8BuQFlAv8BtwFiAf8B/gGzAV0C/wGxAVwB/wHvAZABNwH/A1kBxAwAAwcBCgMq
-        AUEDOwFkAk8BUQGcAloBYAHeAlABxQH/Al8B3wH/AlwB9AH/AkEB7gH/A1QBrwwAA0IBdANRAZwDHwEt
-        A1UBsgHAArAB/wHeAswB/wHoAtoB/wHOAsEB/wNTAaokAAMRARcBbQJrAfMB0AG6Ab0B/wGRAQMBAAH/
-        Aa8BHgEAAf8BugE2AQAB/wHEAUUBAAH/AckBSgEAAf8ByAFKAQAB/wG7AS8BAAH/Ab4BaAFVAf8BdAFt
-        AXQB9wMhATAIAAFuAWQBYAHxAaEBdgFmAfwBlAJfAfsBlAJfAfsBlAFfAVkB+wGUAV8BVAH7AZQBXwFO
-        AfsBlAFfAUkB+wGUAV8BRAH7AZQBXwEyAfsBlAFfATIB+wGUAV8BMgH7AZYBXwExAfsBjwFDASsB/ANI
-        AYYcAAMUARsDIgEyA0IBdQJXAVkBwgJTAWoB8gM+AWsUAANRAZwBxQK3Af8B7wLdAf8B3gLLAf8BxAK3
-        Af8DYAHUAxUBHSQAAzABTQGdApQB/gHcAc4BzwH/AZ0CRwH/Aa0BUAFDAf8BrgFTAT4B/wGuAVMBOgH/
-        Aa4BUwE2Af8BrAFOATIB/wGhAToBLQH/AcIBmgGYAf8DYgHpAwcBCowAA0IBdgNkAecBcQJtAfcDZAHs
-        A04BmAMUARwoAAMiATEDXgHZA2UB7gFlAmcB7gJvAXAB8QNxAfMBdwFzAXcB9QGHAYYBhwH3AYsBiQGL
-        AfkBkwGRAZIB+wG0Aa8BsAH9A1YBuQgAAzoBYQNZAccDWQHMA1oBygNaAcoDWgHKA1oBygNaAcoDWgHK
-        A1oBygNaAcoDWgHKA1oBygNcAc4DWQHDAzQBVUAAA04BmANZAcMDVgG+A1YBvgNWAb4DVgG+A1YBvgNW
-        Ab4DVgG+A1YBvgNWAb4DVgG+A1YBvgNWAb4DWQHEA0QBfAgAA0gBhAF/An4B8wFyAnAB8AFyAnAB8AFy
-        AnAB8AFyAnAB8AFyAm4B8AFwAm4B8AFwAm4B8AFwAm4B8AGAAn8B8wNRAZwIAANhAe4D4gH/A90B/wPa
-        Af8D2gH/A9gB/wHYAtcB/wPXAf8D1gH/A9UB/wPVAf8D1AH/A9MB/wPgAf8DmQH/A1cBvQwAAy4BRwJe
-        AWEB2gMlATcoAAGZAZ0BnwH9AcoBzQHPAf8BywHNAdAB/wHLAc4B0AH/AcoBzQHQAf8BygHNAc8B/wHJ
-        Ac0BzwH/AcgBzAHOAf8ByAHMAc4B/wHIAcsBzQH/AcgBywHNAf8ByAHLAc0B/wHIAcsBzQH/AckBywHO
-        Af8BsQG1AbcB/wNbAdADAwEEAy8BSQNSAaQB6ALjBf8B+wL5Af8B+gL3Af8B+AL0Af8B9gLwAf8B8wLs
-        Af8B8ALoAf8B8gLrAf8B7ALlAf8DVgG2AzEBTQMEAQYDhAH3BP8D9AH/A/MB/wHzAvIB/wHxAvAB/wHw
-        AfEB8gH/Ae8B8AHxAf8B7QHuAe8B/wHrAewB6wH/AesC7AH/AekB6gHsAf8B5QLmAf8D9QH/A8YB/wNZ
-        AcMIAAMbASYBTAFiAWsB7wEAAeQC/wJcAWAB1CgAAa4BsAGyAf0B7QLwAf8B2QHbAdoB/wHbAd0B3gH/
-        AdsB3QHeAf8B2wHeAd8B/wHbAd4B3wH/AdsB3gHgAf8B2wHeAeAB/wHbAd4B4AH/AdwB3gHgAf8B2wHd
-        Ad4B/wHaAdsB3AH/AeYB6AHpAf8B4QHmAekB/wNYAcsDPgFrAYACfgH1Ad0C1QH/Ad4C1Qb/Av0B/wH8
-        AvgB/wH6AvUB/wH4AvEB/wH1Au0B/wHxAukB/wH2Au8B/wHhAtYB/wHdAtYB/wN9AfYDRAF6A3MB9gP7
-        Af8D6gH/AesC6gH/AeoB6wHqAf8B6wHwAfEB/wHmAekB6gH/AeEB4AHiAf8B4wHlAecB/wHnAewB7wH/
-        AeEB4gHlAf8B3gHfAeEB/wHeAt8B/wLsAesB/wO9Af8DVgHBCAADDgETAVcBXwFlAegBAAHxAv8BMgF3
-        AZUB+gJMAU0BkQNJAYcDSQGHA0kBhwNJAYcDSQGHA0kBhwNJAYcDRwGABAABqAGqAa4B/QFcAV4BWwH/
-        AhsBBgH/AicBBwH/AjUBEgH/AkoBKgH/AlABNAH/AlIBNwH/AU8BTgEzAf8BRAFFAScB/wE3ATgBFwH/
-        ASsBLAERAf8BIQEgAQsB/wI1AS8B/wG/AcYBywH/A1oBygNeAc4B9QLpAf8B0QLIAf8BaQJnAf8CtQG0
-        Af8BwgLBAf8BvAK7Af8BvAG7AboB/wG6ArkB/wG5AbgBtwH/AbsCuQH/AbUCtAH/AWkCaAH/AckCwgH/
-        AfgC7AH/A14B2QN1AfYD/AH/Ae0C7AH/Ae4B8AHyAf8B6QHsAe4B/wHaAcgBvwH/AdYBtwGnAf8B2QG+
-        Aa4B/wHSAbYBpwH/AdABuQGwAf8B1QG1AaMB/wHOAaoBlAH/AdYBzQHKAf8B7wHxAfMB/wPAAf8DVgHB
-        CAADGwEmAVcBYAFqAesBAAHoAv8BLQGbAcgB/wG7AbgBuQH/Ac0B2AHRAf8BywHVAdIB/wHJAdIB0AH/
-        AcYB0QHOAf8BxAHPAc0B/wHBAc0BywH/AckB1QHXAf8BnQGkAagB/wQAAqgBqwH9AUMBRgE9Af8DAAH/
-        AjkBGAH/AkABGwH/ASIBIQEAAf8CNgEEAf8CNwEGAf8CNAEDAf8CKgEAAf8CHQEAAf8CFQEAAf8CCgEA
-        Af8BGQEYAQsB/wG2Ab0BwgH/A1oBygNhAeYB4gLQAf8BwgKyAf8BUwFQAVEB/wFXAVsBYgH/AV4BYwFq
-        Af8BXQFjAWsB/wFeAWMBawH/AV4BYwFrAf8BXQFkAWwB/wFeAWQBawH/AVkBXgFlAf8BUAFOAU8B/wG5
-        AawBqwH/AeIC0AH/AWcCZgHrA3UB9gP8Af8B8ALyAf8B6wHpAeoB/wHXAbMBoAH/AegBvgGVAf8B9QHR
-        AaIB/wHyAdIBpwH/AfMB0AGgAf8B6wHCAZkB/wH1Ac0BoQH/Ad4BqAFsAf8B0wHDAbsB/wHwAfQB9wH/
-        A8EB/wNWAcEIAAMpAT4BDwF4AbEB/AEAAeoC/wEcAZEBtwH/AVIBaQFEAf8BTgGIATYB/wE1AXABFAH/
-        ATYBgwETAf8BOwGFARkB/wEzAW4BFgH/ASABXgEHAf8BbAGeAWEB/wGpAawBtAH/BAACqAGpAf0BPQFA
-        ATsB/wItAR4B/wLbAdUB/wK9AbcB/wIiAQMB/wIgAQAB/wIeAQAB/wIWAQAB/wIdAQAB/wIdAQAB/wIZ
-        AQAB/wIOAQAB/wIeARAB/wG0AbsBwQH/A1oBygFkAmIB7wHOArkB/wHOAb8BwQH/AdgBwwG8Af8B4AGn
-        AYoB/wHmAaUBgAH/AekBogFnAf8B6QGdAV8B/wHpAZ0BXwH/AekBoQFmAf8B5gGmAW8B/wHgAagBiwH/
-        AdkBwQG6Af8BzgHAAcIB/wHOArkB/wFoAmYB8AN1AfYD/gH/AfAB9AH3Af8B3QG7AasB/wHuAbcBgwH/
-        AfIBwAGHAf8B3wGzAZEB/wHeAb8BqgH/Ad4BsgGOAf8B8wHBAYkB/wH3AcgBlQH/AdQBowGGAf8B3gHc
-        Ad4B/wHyAfQB9QH/A8IB/wNWAcEIAAMcASgBIQFzAZwB+gEAAegC/wEZAZABtQH/AVIBbwFJAf8BgwGl
-        AWYB/wFXAZABRgH/AVgBkAFGAf8BGgFiAQAB/wEYAV4BAAH/AQIBTAEAAf8BWwGSAVIB/wGqAasBtQH/
-        BAADqAH9ATgCOQH/ATcBNgEmAf8CgQFsAf8CqgGnAf8CkQGHAf8CFwEAAf8CkwGCAf8CSQE2Af8CDQEA
-        Af8CFAEAAf8CEQEAAf8CBgEAAf8CGQEQAf8BsAG3Ab0B/wNaAcoBbwJuAfEB7QLkAf8C6wHxAf8B5QHR
-        AcAB/wH5AYcBEwL/AWYBAAL/AWYBAAL/AWcBAAL/AWcBAAL/AWgBAAL/AWgBAAH/AfoBZgEAAf8B5wHE
-        AaoB/wHsAfAB+AH/AeoC4AH/AWkCaAHwA3UB9gT/AeoC5QH/AeUBqwGDAf8B9QGvAWAB/wHYAaoBjQH/
-        AegB5gHoAf8C7QHrAf8B5AHnAewB/wHbAa8BkgH/AfUBtQFsAf8B2QGiAW0B/wHbAdcB2AH/AfMB9wH4
-        Af8CxQHEAf8DVgHBCAADQgF1AQABuAHvAf8BAAHoAv8BGgGUAbYB/wGHAaEBgQH/ATkBgwEtAf8BNQGD
-        ASoB/wEvAW0BIAH/AQsBUgEAAf8BCgFNAQAB/wEAAUABAAH/AVoBkAFTAf8BqgGsAbQB/wQAAaUCqAH9
-        AT4BQQE/Af8DAAH/AwAB/wKoAaUB/wKlAZ0B/wIBAQAB/wJRAUYB/wK9AboB/wKRAYkB/wIOAQAB/wIH
-        AQAB/wIBAQAB/wEUARMBDwH/Aa0BtAG5Af8DWgHKA2kB8AT/AfEB7gHyAf8B3QHVAc8B/wHwAcABZAL/
-        AbcBOgL/AaYBFgH/Af4BogEJAf8B/gGhAQcB/wH+AaEBBwL/AZ8BAgH/AfABnAESAf8B2wHNAb0B/wHk
-        AeMB6AH/AfIC6wH/AXIBcAFyAfEDdQH2BP8B5wHaAdYB/wHqAakBZwH/AesBpwFbAf8B2gHDAbcB/wHw
-        Ae0B5gH/AeYBuAGJAf8B7QHnAdoB/wHbAcABswH/AfABwgGZAf8B5gG4AZUB/wHaAc0ByAH/AfQB+AH6
-        Af8DxgH/A1YBwQQAAwoBDQJcAWAB1AEAAeEC/wEAAeAC/wEVAZUBwAH/ASgBVQFLAf8BLwGQATEB/wEG
-        AYEBBQH/AQkBgQEIAf8BEQGCAQ8B/wEQAWQBDAH/AQABMwEAAf8BUwGJAU4B/wGsAa0BtQH/BAABogKo
-        Af0BNAE3ATkB/wEIAQcBBgH/AqwBpQH/Ar0BugH/AiQBFQH/AgEBAAH/AkEBOQH/Ar4BuwH/ApwBmAH/
-        AgkBAAH/AgEBAAH/AwAB/wEPARABDgH/AaoBsgG3Af8DWgHKA18B4AH/AfsB+gH/AfgB9AH1Af8B3wLb
-        Af8B4AHLAasB/wH9AeUBuwH/AfwB4AGzAf8B+wHZAaMB/wH8AdMBlgH/AfsB0AGQAf8B/gHPAYgB/wHk
-        AcABiAH/AdQBywHKAf8BzQHMAbsB/wHiAdsBzwH/A2EB6AN3AfYE/wHuAuoB/wHnAasBgAH/AfYBtAFm
-        Af8B1AGfAW8B/wHjAeIB4wH/AesB4gHQAf8B4QG6AZMB/wHbAa0BiwH/AfcB0wG0Af8B3gGtAY4B/wHf
-        AdkB1wH/AfUB+QH6Af8DyAH/A1YBwQQAA1EBoAEAAZkB6gH/AQAB5gL/AQAB2wH2Af8BMgHmAfwB/wE7
-        AaUB3QH/AUgBggFkAf8BggHEAW8B/wFuAbwBcAH/AW4BvQFvAf8BgQHCAYIB/wFBAZEBQQH/AVYBjAFS
-        Af8BqgGsAbMB/wQAAZ8BpgGoAf0BLAEvATEB/wFrAWoBaQH/A7gB/wICAQEB/wMAAf8CEgEGAf8ClQGN
-        Af8CRQFBAf8DAAH/AwAB/wMAAf8DAAH/AQwCDgH/AagBsAG1Af8DWgHKA0kBhwHIAsIB/wH2Ae8B7gH/
-        AeoC5QH/AcMBtAGrAf8B7gHcAcwB/wHvAeIB1AH/AewB4gHWAf8B6wHjAdcB/wHqAeMB1gH/AeoB3wHQ
-        Af8BxQG2Aa0B/wHgAdcB2QH/Ae4B5AHjAf8BxwHAAb8B/wNOAZgDdwH2BP8B9wH9Af4B/wHkAcABrAH/
-        Ae8BrAFmAf8B8QG6AYUB/wHYAaQBgAH/AdsBtAGbAf8B3QGoAYIB/wHlAcYBpwH/AeYBsQGNAf8B3QG7
-        AagB/wHoAe4B8QH/AfYC9wH/A8kB/wNWAcEEAAJaAV4B1QEAAcgC/wEAAecC/wEAAf0B/gH/AVMD/wGK
-        Ae4B/gH/AWABhgGfAf8BuwHSAbAB/wG3Ac8BsAH/AbgBzwGxAf8BuQHQAbIB/wG2AdABsAH/AacBvgGh
-        Af8BpAGnAawB/wQAAZsBogGnAf0BLQExATIB/wJZAVgB/wO9Af8CigGJAf8CMAErAf8DAAH/AwAB/wMA
-        Af8DAAH/AwAB/wMAAf8DAAH/AQsBDAENAf8BpgGuAbMB/wNaAcoDBwEJAz0BaANYAbkDYAHeAagBpQGm
-        Af0B+QH3AfYB/wH1AfoB+QH/AfAB+gH4Af8B7AH6AfkB/wHoAfsB+QH/Ae8C+QH/AZcBjwGQAf4DYQHi
-        A1oBvQNAAW8DCQEMA3cB9gT/AfkB+gH7Af8B9QL2Af8B4wG5AaIB/wHsAa8BgQH/AfYBwAGRAf8B9gHB
-        AZcB/wH1AcsBpwH/AegBsgGPAf8B3gG4AaQB/wHrAe4B8AH/AesB7QHuAf8B9wL2Af8DywH/A1YBwQQA
-        ATMBWAF7AfYBAAHHAv8BAAHqAv8BAAP/AU0D/wGUAfcC/wFdAYQBqgH/AtIBzQH/AdEB1gHRAf8BzwHU
-        AdAB/wHNAdMBzwH/AcwB0gHPAf8B2QLgAf8BnAGfAaIB/wQAAZYBnQGjAf0BPgFBAUIB/wIMAQsB/wOy
-        Af8D0QH/Ai8BMAH/AwgB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wEJAQoBCwH/AaUBrQGyAf8DWgHK
-        DAADDgETA1gBwQT/AfoD/wH1A/8B8gP/Ae4D/wH5A/8DXAHMAxQBHAwAA3cB9gT/A/kB/wH5AvsB/wH3
-        AvsB/wHrAdsB0wH/AecBwQGuAf8B5QG8AaUB/wHlAcEBrgH/AegB1wHQAf8B8AH0AfcB/wHuAvAB/wHr
-        AuoB/wP5Af8DzQH/A1YBwQQAAlcBZQHoAQABywL/ARgBoAG5AfwBWAJfAeMBQwHpAfcB/wGIAfIC/wJW
-        AVgBuwNDAXgDQwF4A0MBeANDAXgDQwF4A0MBeANBAXIEAAGRAZkBngH9AU0BUAFRAf8BJwImAf8DRgH/
-        A0QB/wMwAf8DOwH/AzUB/wMpAf8CHAEdAf8DEgH/AwoB/wECAgEB/wEWAhcB/wGiAaoBrwH/A1oByhAA
-        A1MBpQP9Af8B/gP/AfgD/wH1A/8B8QP/AfgD/wNVAbIQAAN5AfYE/wP7Af8D+QH/AfgC+QH/AfgB/QH+
-        Af8B9QH6Af0B/wHyAfUB+AH/AfIB9gH6Af8B8wH3AfoB/wHvAfAB8QH/A+0B/wPrAf8D9wH/A88B/wNX
-        AcIEAANTAaoBAAHJAv8BOAGCAZIB9wJSAVMBqAEqAcsB7QH/AVkBzQHsAf8DKwFCIAABjwGXAZ0B/QFL
-        AU0BTgH/ATcCNAH/AjoBOQH/ATgCNwH/Aj8BPgH/AUACPwH/AUECQAH/AkIBQQH/AUMCQgH/AkEBQAH/
-        Aj4BPQH/ATsCOQH/ATQCMwH/AZwBpAGqAf8DWQHMEAADVgGrA/0F/wH7A/8B+AP/AfUD/wH6A/8DVwG3
-        AwMBBAwAA4gB+Bz/A/4B/wP9Af8D/AH/A/oB/wP5Bf8D0wH/A1cBwgQAAzsBZQE3AWcBiAH3ATQBYgF7
-        AfYBIgFUAYwB+gFUAWEBagHuAloBXgHVAw0BESAAA38B/gGPAZcBmgH/AV8BYwFmAf8BZgFrAW4B/wFl
-        AWoBbQH/AWUBagFtAf8BZQFqAW0B/wFlAWoBbAH/AWUBagFsAf8BZQFqAW0B/wFmAWkBbQH/AWYBawFu
-        Af8BZAFpAWwB/wFtAYEBhQH/AasBtgG8Af8DWQHHEAADVAGvGP8DWAG7AwQBBQwAA1sBywOlAf4DsQH9
-        A7EB/QOxAf0DsQH9A7EB/QOxAf0DsQH9A7EB/QOxAf0DsQH9A7IB/QOtAf4DagH1AzsBZUAAAlkBWgHP
-        AYoBjQGOAfsBegF8AX4B+gF5AXsBfQH6AXoBfAF+AfoBegF9AYAB+gF7AX0BgQH6AXwBfgGDAfoBfAF+
-        AYMB+gF9AYEBhAH6AX0BgwGGAfoBfgGDAYYB+gF+AYQBhwH6AYMBjgGSAfwCZwFoAfIDOgFiEAADUQGc
-        AX4CfAHzA24B7wNuAe8DbgHvA24B7wF+AnwB8wNSAacDAQECMAADPwFtATkBSAGJAfYCIQEiATEgAAMF
-        AQcDIwEzAzQBVAMmATgDDAEQAwIBA2QAAyABLgM6AWEDNgFZA0UBfwNWAbsDVgGzA0ABcAM3AVoDOQFf
-        AxwBKDAAAzgBXgE2AaIB+AH/AloBXQHKAxcBIBMAAQEDBgEIAwsBDwNBAXIBawJiAe8BXgJbAdkDVQGy
-        A0gBhgMyAVEDGQEjAw0BEQMKAQ4DBwEKAwMBBAgAAVkCVwHCAaIBcAFZAfsBmwFrAU0B+gGNAnIB+gGQ
-        AXUBdgH6AY8CdAH6AY8CcwH6AY8CcwH6AY8CdAH6AY8BcgFwAfoBnwF0AVgB+gGgAW8BTQH6AaIBXwFF
-        AfsBXgJbAdAMAAMDAQQDYAHeAn8BfgH+AYYBWQFYAf0BNwFlAbgB/wEzAbkB8wH/AS4BiAHPAf8BdwFw
-        AX4B/gGOAYMBYwH9AVECTgH9A04BlxwAAzkBYANKAY0BSQJIAYcDNwFbBAADIAEuAVQBYQFyAe4BPgG5
-        AfQB/wNbAcgDFgEeCAADBAEFAyQBNgNEAXkDTAGSAWUCYQHuAf8B/AH9Af8B/ALrAf8BtwGmAacB/QFn
-        AlcB8gNXAd8DWgHKA1UBsgNQAZoDSAGFAzMBUwMLAQ8EAAHSAWwBRQL/AcQBWAH/Ae8BmgFPAf8B0AHE
-        AccB/wHSAssB/wHTAcoBywH/AdcCzgH/AdYCzgH/AdUB0AHTAf8B1AHCAb0B/wH9AbkBjAL/AZ0BNwL/
-        AZcBGAH/AdwBcAE5Af8QAANcAd8BrwGrAaoB/AGcAZYBlQH6AVQBqAG+Af0BagHkAv8BVAG2AfEB/wKR
-        AZUB+wGnAZ0BnAH7AX8CfQH4A0ABcBgAA0gBiAF1AnMB+gGqAqMB/wGKAmYB/wFqAmkB+QJbAVkBwwMo
-        ATwDVAGvAVMB8AL/ASQBbQHEAf8CRQFGAX4IAAMdASoBtQE3AQAB/wH0AU8BAAH/AbsBQAEMAf8B8QHM
-        Ac0C/wLzAv8B9wH2Bv8B9AH1Af8B5wG9AbwB/wGgAUwBRAH/AVoBGQEEAf8BUAEFAQAB/wGSASoBAAH/
-        A1MBsAM2AVkEAAGtAWsBOwH8Af8BtgFSAf8B7QGUAU8B/wHUAcIBxAH/AdoBUQE2Af8B1wGgAZYB/wHb
-        AdcB2gH/AdwBzgHNAf8B2wHTAdQB/wHYAb4BugH/AfMBlAFaAf8B/gGOAS8C/wGPARsB/wG6AV0BQAH9
-        CAADEQEXAxUBHQMpAT8DMwFSAygBPAFTAlUBsAGmAcIB3wH/AkwBXQHzAzoBYgMtAUYDLwFKAxgBIQMV
-        AR0DDwEUDAADKQE+A2cB8gG/AbsBsQH/AawBrQGmAf8BxgK6Af8BrgKUAf8BrwGaAZcB/wNeAdACVQFX
-        AboBVAG3AeEB/gFQAeoB/AH/A1sByAMJAQwEAAG1ATcBAAL/AWUBAwH/Ae8BYwEIAf8BuwFvAWQC/wHo
-        AeYC/wHnAegC/wLvAv8C9gL/AvoG/wL7Af8B8gLPAf8BswFeAVsB/wFuAS4BHAH/AbIBNgEAAf8DSQGJ
-        BAABrAFnATkB/AH/AbsBWAH/Ae8BmwFXAf8B3QHRAdIB/wHmATEBDgH/AeEBnQGRAf8B5QHtAe8B/wHl
-        Ad8B3QH/AuYB6AH/AeABygHFAf8B8gGCAUUB/wH9AY0BLwL/AZgBJAH/AbkBWwFAAf0EAANLAZADXAHn
-        AVwCVQHqAVsCWAHjA1sB4QNaAd4DXQHwAc0BuQG1Af8BcQFhAV4B/ANaAeQDXwHgA10B4gNcAecDYAHr
-        A1gB4wNAAXADFgEfAzcBWwNVAbUBhwFvAaEB/wFZAVQBjAH/AVUBVwGBAf8BugG4AbYB/wG+AawBqwH/
-        AbsBpgGlAf8BwgGsAaIB/wFEAUIBYgH1ATIBjgGtAfsBWQP/AUEBxgH1Af8CRgFHAYAEAAG1ATcBAAH/
-        Af4BbwERAf8BygFVAR4B/wHxAcMBuwH/AfwB0wHKAf8B9wHRAc8B/wHaAaIBpQH/AdkBngGhAf8BqwFQ
-        AVoC/wL0Av8C9QL/Af4B/QP/Af0B/wG5AWABVwH/AbUBNwEAAf8DTAGRBAABrAFnATkB/AH/AbwBWwH/
-        AfABoAFeAf8C5gHqAf8B5QGWAYcB/wHnAcsBxwH/Ae0B+gH+Af8B7QHxAfUB/wHuAfoB/gH/AeYB2AHU
-        Af8B8AFeAS8B/wH9AYoBLQL/AZwBLAH/AbkBWgFAAf0EAAGNAokB+QHyAvAB/wHiAuAB/wHdAtsB/wHc
-        AtkB/wHOAswB/wHTAtIB/wHnAuYB/wHuAuwB/wHyAvEB/wHyAu8B/wH0AvEB/wHkAekB4gH/AccB5gHK
-        Af8B0AHLAcoB/wNXAcUDVgGzAQsBlgHiAf8BAwGQAegB/wEAAYEB6gH/AQABYwHoAf8BIAFQAbwB/wGv
-        AaUBnwH/Ac4BwAG+Af8BzAG4AbIB/wGnAZoBtgH/AS8BbgHNAf8BQQHQAfIB/wFVAfkC/wFdA/8BUQF6
-        AZIB9wMsAUQBtQE3AQAB/wH+AYcBIwH/AcIBZQFSAf8B1QKZAf8B1gGdAZ4B/wHXAaEBowH/AfMC3gH/
-        AfgC7AH/AbYBYAFoAf8B/QHlAeQC/wLsAv8C8wH/AfUBzwHNAf8BjQE7ASYB/wHeAUcBAAH/A0sBkAQA
-        AawBZAE4AfwB/wHAAWIB/wHzAZwBWQH/AegB0gHQAf8B6gHpAecB/wHrAd8B3AH/AesB2QHVAf8B6wHZ
-        AdYB/wHsAeEB2gH/AecBwQG1Af8B7wFEARIB/wH8AYYBKAL/AaABMQH/AbkBWQFAAf0EAAG2ArMB/QHu
-        AvAB/wHSAtMB/wHVAtYB/wHVAtYB/wHDAsQB/wHPAtAB/wH0AfUB9AH/AfEC8gH/AfEC8gH/AfEC8gH/
-        A/MB/wHpAe4B6gH/AdwB7gHgAf8B4gHgAd8B/wNZAccBWwJhAeEBRAF/AYsB9AEvAa8BwAH9ARIBsQHv
-        Af8BCwGhAe8B/wFVAYYBqAH/AakBngGWAf8B0QLGAf8B2wHLAcYB/wG9AacBvgH/AUMBpgHgAf8BVgH9
-        Av8BVwH8Av8BVQH1AfwB/wFLAdsB8wH/AlcBWQHCAbUBNwEAAv8BlQE3Af8B2wFeASIB/wHLAYwBhAH/
-        AfABwgG/Av8B7gHrAv8B/QH8Bf8B+QLmAf8BuAFfAWcC/wHjAeIC/wHpAegB/wGzAVkBVQH/AbMBawE8
-        Af8B8gFPAQAB/wNLAZAEAAGsAWMBNgH8Af8BxQFsAf8B/QGjAVAB/wH3AZkBTAH/AfgBmgFMAf8B+AGX
-        AUgB/wH4AZcBRAH/AfgBlAFBAf8B+AGUAUAB/wH5AY8BOAH/AfwBgQEmAv8BkQEuAv8BoAE1Af8BuQFX
-        AUAB/QQAAacCngH8AeUC5gH/AdsC3AH/A98B/wPfAf8D4AH/AeEC4AH/A+AB/wPfAf8D4AH/A+AB/wPg
-        Af8B4QHgAeEB/wHvAewB7wH/AeEC3QH/A1kBwwMMARADLwFJA10B4gGbAY8BngH/AW4BZgGIAf8BbgFo
-        AW8B/wGfAp0B/wHWAs0B/wHkAdsB2QH/AfsB4gHYAf8BjwGUAckB/wFGAdMB8AH/AYAD/wFbAeAB9AH/
-        AlgBZAHmAjQBNQFVAbUBNwEAAv8BoQFMAv8BawEIAf8B/AHPAakB/wHgAagBjgH/AcoBhgFsAf8B5QGs
-        AakB/wH+AeAB3gL/AfwB+wH/AbkBZAFrAv8B1gHNAf8B8gHBAbwB/wGCASUBGgH/AekBqgFkAf8B9gFQ
-        AQAB/wNLAY8EAAGtAV8BMwH8Af8BzgGTAf8B+AHYAb4B/wH4AdcBugH/AfcB1AG1Af8B9QHSAbMB/wHy
-        Ac8BsAH/AfEBzQGuAf8B8QHJAasB/wHvAckBqQH/AewBzAGtAf8B6AHEAakB/wH7Aa8BVwH/AboBVAFA
-        Af0EAAF5AncB9AH3AvgB/wPxAf8D8AH/Ae4C7wH/A+4B/wHsAu0B/wHqAusB/wPpAf8D6AH/A+cB/wPl
-        Af8D4wH/AesC7AH/Ac8CygH/A1UBsQE9Aj4BagEmAU0BmAH6AQsBWgHCAf8BEAFjAdMB/wEFAVIBzgH/
-        ARwBSgG8Af8BqAGgAaIB/wHkAdkB1AH/AfEB6QHqAf8BsAG2AdkB/wFSAWEBvgH/AScBmgHZAf8BiAH+
-        Av8BnQP/AVgBYgFuAe8CIQEiATEBtQE3AQAC/wGuAWIC/wFrAQgC/wHcAb4C/wHcAb4B/wH+AdkBuAH/
-        AeoBuQGdAf8BzQGJAWsB/wHbAZ0BmQH/AfoB0wHSAf8BvAFjAWcB/wG2AWMBWgH/Aa0BOwEoAf8B/AHB
-        AYwB/wH2AVABAAH/A0QBfAQAAa0BXQEwAfwB/gHTAZ4B/wH1AvgB/wH8A/8B/AP/AfwD/wH6Af0C/wH6
-        AfsB/QH/AfoB9wH5Af8B+QL0Af8B+QHyAfMB/wHpAeYB6gH/AfIBswFlAf8BugFTAUAB/QQAAV0CXAHf
-        CP8B+QL6Af8B9gL3Af8D8wH/Ae4C7wH/AeoC6wH/A+cB/wHiAuMB/wPeAf8B2QLbAf8D1gH/Ad0C3gH/
-        AagCogH/A0gBiAFYAV4BYQHdARQB3gL/AQkB1QL/AQABugL/AQABogL/AUsBmgHfAf8ByAG0Aa4B/wHp
-        AeAB3QH/Ae4B6QHwAf8BQgGMAdQB/wFUAcwB7wH/AYsB5wH3Af8BlwH9Av8BowP/AZgD/wJZAVwBzAG1
-        ATcBAAL/AbsBiAL/AWsBCBX/AfIC5QH/AdICpQH/AaQBPgFHAf8BywGqAakB/wP2Bf8B9gFQAQAB/wMl
-        ATcEAAGtAV0BMAH8Af0B0gGcAf8B9gH1AfIK/wL8Av8B+QH2Av8B9wHyAv8B8wHuAv8B8AHpAv8B8QHr
-        Af8B8AHlAeQB/wHyAbMBYwH/AboBUwE+Af0EAANXAboB3wLVAf8B4wLZAf8B3ALTAf8B2wLRAf8B2gLQ
-        Af8B1wLOAf8B1QLMAf8B1ALLAf8B0wLKAf8B0QLJAf8BzwLIAf8B0ALJAf8B1wLQAf8BZAJfAfsDNAFU
-        AzIBUAM1AVYDVQG1AWwBkAGgAf8BpAHCAdoB/wHDAcoB0AH/AcsBvgG7Af8B8wHuAe0C/wH9Av8BhgGo
-        AeEB/wFvAdsB8wH/AcQD/wG3A/8BRAGtAeIB/wFCAVkBfgH1AlcBXQHfAbUBNwEAAv8ByQGfAv8BsgFn
-        Av8BawEIAv8BawEIAv8BawEIAv8BawEIAv8BawEIAv8BawEIAv8BawEIAf8B/gFrAQgB/wH+AWsBCAL/
-        AWsBCAL/AWsBCAH/AyoBQAMEAQUEAAGtAVwBLgL8AdIBnQH/AfQB8wHxBv8B/AH7Av8B9wH2Av8B9AHx
-        Av8B8gHtAv8B7gHoAv8B7gHnAv8B8wHvAf8B7AHlAeQB/wHwAbIBZAH/AboBUgE9Af0EAANMAZIBtwKh
-        Af8BxgKwAf8BwQKsAf8BwgKtAf8BwwKuAf8BxAKwAf8BxgKzAf8ByAK2Af8BywK5Af8BzgK9Af8B0QLB
-        Af8B2QLLAf8B1gLDAf8BZAJXAfEDHQEqCAADLAFEAVwBWAFBAfgB7AHhAdwB/wHmAd0B2wH/AeUC2gX/
-        Ad8B2QHTAf8BQQFJAV8B+wFJAagBugH9AdED/wHRA/8BjQHHAeoB/wNOAZQDAQECAbUBNwEAAv8B1QG1
-        Av8B1QG1Av8B1QG0Av8B1gG1Av8B1QGzAv8B1QGzFf8BtQE3AQAB/wMqAUADBAEFCAABrQFcAS4B/AH7
-        AdIBnQH/AfMB8QHwAv8C/gL/AfkB9QL/AfUB8QL/AfEB7QL/Ae4B5wL/Ae0B5gL/Ae8B6QL/AfYB8wH/
-        AesC5QH/AfEBswFmAf8BugFSAT4B/QQAAz0BaAGOAn8B/gHKArUB/wHGArIB/wHGArMB/wHIArQB/wHK
-        ArcB/wHLArkB/wHNArwB/wHRAsAB/wHTAsQB/wHXAsoB/wHfAtIB/wHJArUB/wNbAeEDDAEQDAADSgGM
-        AVkCVAH/AZ8ClQH/AbQCswH/AYgBhwGIAf8DVgG4A0MBdwFVAV0BZgHqAd8B/gL/AecD/wHrA/8BUgFt
-        AYoB9wMkATYBtQE3AQAC/wHgAccC/wHgAccC/wHgAccC/wHgAccC/wHgAccF/wG1ATcBAAH/AbUBNwEA
-        Af8BtQE3AQAB/wG1ATcBAAH/AbUBNwEAAf8DHQEqAwQBBQMCAQMIAAG3AVIBQAH9AfoB1AGgAf8B8gHv
-        AfAC/wH+A/8B+AH2Av8B9QHxAv8B8QHsAv8B7wHrAv8B8wHuAv8B9QHzAv8B/AH7Af8B7ALqAf8B4AGl
-        AVkB/wG4AU4BNAH9BAADJgE4AW4CYgH2AcYCsQH/AccCswH/AccCswH/AckCtgH/AcsCuQH/Ac0CvAH/
-        AdACvwH/AdICwwH/AdUCyAH/AdsC0AH/Ad0C0QH/AbACnAH/A1YBwRAAAwEBAgM0AVQDQgF0Az4BbAMx
-        AU8DCwEPAwABAQJZAVwCyQH5Av8B+wf/AdEB+AH+Af8DWwHIAbUBNwEAFf8BtQE3AQAB/wMrAUIDBwEK
-        AwMBBAMDAQQDAgEDAwABARAAAdABWAEpAv8B4QGnAf8B9wH6AfMH/wH6A/8B9QL/AfwB8gL/Af4B9gP/
-        AfoD/wH9Bf8B8QH1Ae4B/wHnAbMBYwH/AdMBUgETAf8EAAMQARYBXwJcAeoBwwKtAf8BzwK7Af8B0AK+
-        Af8B0QK/Af8B1ALDAf8B1wLHAf8B2wLLAf8B3gLQAf8B4QLWAf8B6QLeAf8B3QLLAf8BmAKEAf8DTAGS
-        LAACSAFJAYcBMQFfAZUB+wFNAWcBmgH6AU0BYgGZAfoBSQFfAZoB+wFOAVcBZgHvAwEBAgG1ATcBAAH/
-        AbUBNwEAAf8BtQE3AQAB/wG1ATcBAAH/AbUBNwEAAf8DHQEqAwQBBQMCAQMgAAFWAlQBqwGWAVoBMgH7
-        AX4CWQH1AX4CWQH1AX4CWQH1AX4CWQH1AX4BWQFMAfUBfgJZAfUBfgJZAfUBfgJZAfUBfgJZAfUBiAFS
-        AVEB9wGWAVYBLAH7AVgCVgG7CAADUQGcAXgCcQH6AY4ChAH7AYECeAH6AYECeAH6AYQCeQH6AYYCegH6
-        AYkCfAH6AYoCfQH6AYwCgAH6AZICjwH7AX4CeAH8A18B4AMhATAYAAMhATEDQAFwA1ABngMpAT8EAAMK
-        AQ4DEQEXHAADBAEFAxQBHAMnAToDLAFEAygBPQMjATQDHgErAxgBIgMUARsDEAEVAwwBEAMJAQwDBAEG
-        AzoBYQNZAccDWQHMA1oBygNaAcoDWgHKA1oBygNaAcoDWgHKA1oBygNaAcoDWgHKA1oBygNcAc4DWQHD
-        AzQBVQNKAYwDVgG2A1UBsQNVAbEDVQGxA1UBsQNVAbEDVQGxA1UBsQNVAbEDVQGxA1UBsQNVAbEDVQGx
-        A1YBtgNOAZgUAANeAdkBxQKyAf8BzwK7Af8DWAHAAykBPwNbAcsDXQHSAzEBTxgAAx8BLAJXAVoBxQJb
-        AWAB1gNXAb8DUAGkA0oBiwNBAXIDOAFdAzEBTgMtAUUDKAE9AyMBNAMaASUDYQHuA+IB/wPdAf8D2gH/
-        A9oB/wPYAf8D2AH/A9cB/wPXAf8D1QH/A9UB/wPUAf8DyAH/A9oB/wOZAf8DVwG9AWABQAE8Af0BtAFv
-        AWEB/wGwAYYBbwH/AbQBiAGAAf8BsgGIAXAB/wGxAYYBcAH/Aa4BhgFwAf8BrQGFAXAB/wGsAYUBbwH/
-        AaoBhAFvAf8BqQGBAW4B/wGoAYIBbwH/AaYBgQFuAf8BpwGDAYIB/wGsAW4BaAH/AVIBRAFDAfQIAAM6
-        AWIDOAFeAzIBUQFzAmsB9gHmAtIB/wHnAtgB/wHFArQB/wGdAo4B/wHMAroB/wHgAswB/wN/Af4DNwFb
-        EAADAgEDAk8BUQGcATEB3gL/AT8BswHHAf8BIQGNAa0B/wEQAZYB0QH/ARIBfwG5Af4BPgFZAXsB9QJX
-        AWAB6AJaAV4B1QNXAb8DUgGmA0kBiQM0AVQDhAH3BP8D9AH/A/MB/wPzAf8D8QH/A/AB/wPuAf8D7QH/
-        A+sB/wPsAf8D5wH/A5YB/wPQAf8DzAH/A1kBwwGmAUwBQAH9AfMB2wHOAf8B4AHRAcYB/wHfAc0BwQH/
-        AdoByQG/Af8B2gHIAb0B/wHaAcUBuwH/AdkBxQG6Af8B2QHFAbgB/wHYAcMBtgH/AdgBwQG0Af8B2AHB
-        AbIB/wHWAb8BsAH/AdgBxAG1Af8B5AG8AagB/wFZAU8BTQHyBAADNQFXAa8CnQH/AbgCpAH/AaUCkwH/
-        AccCtAH/AeEC0QH/Ae0C4QH/AewC3wH/AeMC0gH/AdsCzgH/AfQC6wH/AfEC4gH/AVkCVwHCEAADDgET
-        AVcBXwFlAegBUQHTAfQB/wGzAWwBTAH/AeIBqQGEAf8BwQGUAWIB/wGmAZgBbQH/AYIBowGdAf8BUAGw
-        AcwB/wE0AbgB9gH/ASABsQL/ARQBngL/AQQBUgHTAf8DUQGgA3MB9gP7Af8D6gH/A+sB/wPqAf8D6AH/
-        A+cB/wPmAf8D5AH/A+MB/wPkAf8D3wH/A5wB/wPQAf8DxAH/A1YBwQGkAUsBQAH9Ae8BxwGcAf8BxAGl
-        AYIB/wHZAawBbgH/AfMBtwFwAf8B8QGxAWcB/wHyAa0BYAH/AfIBqQFYAf8B8gGkAVIB/wHyAaABTAH/
-        AfIBnAFFAf8B8gGZAT4B/wHyAZUBOAH/AfUBlQE1Af8B9gGQAS4B/wFWAVMBUQHxAwwBEANkAecBzAK5
-        Af8B3QLLAf8B2gLHAf8B2ALHAf8B6QLcAf8B8QLmAf8B9gLsAf8B9gLtAf8B9gLtAf8B/QL2Af8B3QLQ
-        Af8DYQHcA0UBfgMEAQYIAAM4AVwBIgGpAfQB/wFbAaMBtAH/AeQBtAGLAv8BzwHEAv8B1gG9Av8B3AG2
-        Af8B+wHIAZ0B/wHmAbMBhAH/AcQBoAFpAf8BnwGbAXAB/wFtAqoB/wFKAc4C/wJaAVwBzQN1AfYD/AH/
-        A+0B/wPtAf8D7AH/A+oB/wPpAf8D6AH/A+YB/wPlAf8D5QH/A+EB/wPTAf8D6gH/A8EB/wNWAcEBqAFK
-        AUAB/QHmAcsBrgH/AdAB3AHjAf8B1QG9AaYB/wH+Ab0BgAL/AbwBgAL/AbYBaQL/AbIBYgL/Aa4BWwL/
-        AakBVQL/AaUBTwL/AaIBSAL/AZ8BQgL/AZ8BPgL/AZkBNgH/AVkBUwFRAfEEAANMAZABzAK6Af8B6QLb
-        Af8B6ALbAf8B7QLgAf8B8gLmAf8B3gLRAf8B0ALDAf8B5QLaAf8B/AL0Af8B/QL3Af8B5wLbAf8B2wLG
-        Af8BsQKeAf8DOgFiBAADAwEEA1YBtgFCAc8C/wGXAZABgAH/Af0B1QG6Af8B9AG7AbkB/wH9Ad4BvwH/
-        Af4B3QG/Av8B5gHLAv8B5wHLAv8B5wHJAv8B0QGuAf8B0QGgAVMB/wEYAYkB0gH/A0oBigN1AfYD/QH/
-        A+4B/wPuAf8D7QH/A+sB/wPqAf8D6QH/A+cB/wPmAf8D5gH/A+MB/wOiAf8D0wH/A8cB/wNWAcEBpwFK
-        AUAB/QHwAdYBugH/AegB8wH6Af8B4QHKAbQB/wH7AbwBgQL/Ab0BggL/AbcBbAL/AbMBZgL/Aa8BXwL/
-        AasBWgL/AacBVAL/AaQBTQL/AaEBSAL/AaIBRQL/AZwBPwH/AVkBUwFRAfEDFQEdA0gBhAHAAqsB/wHm
-        AtcB/wHsAuAB/wHvAuMB/wFoAmYB7wNCAXQDLAFEA0gBhQGaApUB+gH/AvwC/wL7Af8B+QLzAf8B8ALl
-        Af8DUwGqBAADGQEjAUIBWQGAAfUBYwHJAesB/wHIAaABbgH/AfwB0wHRAf8B9gHLAcUB/wH8AeMBygH/
-        Af0B4AHKAf8BrgGgAYEB/wHiAcUBsAL/Ad0BxQH/AfQByQGsAf8B+AHYAasB/wNaAdsDIwEzA3UB9gP9
-        Af8D8AH/A+8B/wPuAf8D7AH/A+sB/wPqAf8D6QH/A+cB/wPpAf8D5AH/A5EB/wPNAf8DywH/A1YBwQGl
-        AUwBQAH9AfsB1AGqAf8B4wHDAaIB/wHvAcABlgL/AcIBjAL/Ab4BhQL/AbkBcAL/AbUBagL/AbEBYwL/
-        Aa4BXgL/AaoBWAL/AacBUgL/AaQBTQL/AaYBSwL/AaABRAH/AVkBUwFRAfEDYQHkAcECqwH/Ac0CtgH/
-        AeQC1gH/AfMC6QH/Ac0CvQH/AzQBVQgAAwsBDwFxAm4B8wH/AvoJ/wH9AvYB/wNbAcsDAAEBAkEBQgFz
-        ASoBoAH9Af8BlQGwAa0B/wHtAcQBpAH/AfUBxwHVAf8B+AHhAdIC/wHpAdsB/wHPAcMBpwH/ASsBpAE8
-        Af8BUQGRAUgB/wHfAbsBrAH/AfUBywG0Af8B+AHOAaAB/wNKAYoDEwEaA3UB9gP+Af8D8QH/A/EB/wPw
-        Af8D7gH/A+0B/wPsAf8D6gH/A+kB/wPoAf8D5gH/A8sB/wPoAf8DxwH/A1YBwQGoAU0BQAH9AecBygGo
-        Af8BwwG4Aa0B/wHXAbUBlgL/AcUBjwL/AcEBigL/AbwBgwL/AbgBbgL/AbQBaAL/AbIBYgL/Aa4BXQL/
-        AasBVwL/AagBUgL/AakBUQL/AaQBSgH/AVoBUwFRAfEBYAJfAeAB0gK9Af8B4gLSAf8B7QLiAf8B+ALt
-        Af8BigKFAfkDHQEpBAADFAEbA1UBsgHYAscB/wH+AvsF/wGbApYB+wNRAaADKAE9AwQBBgJZAVwByQFa
-        AcgC/wG4AaYBhQH/AfkB1gHTAf8B8wHLAdgB/wH3AesB3gH/AfwB5AHeAf8BgQGxAWkB/wFbAegBnwH/
-        AU0B2wGNAf8BUQGWAUsB/wHrAdYBywH/AmEBXAHcAykBPwMNAREDdQH2BP8D8wH/A/IB/wPyAf8D8AH/
-        A+8B/wPtAf8D7AH/A+oB/wPqAf8D6AH/A8gB/wPlAf8DyQH/A1YBwQGoAUwBQAH9AesB1gG/Af8B5AHz
-        Av8B2wHKAbkB/wH7AcMBjQL/AcQBjwL/AcABhwL/AbwBggL/AbkBbQL/AbUBaAL/AbIBYgL/Aa4BXQL/
-        AasBWAL/Aa0BVwL/AagBUgH/AVoCUwHxA1IBoQHUAsIB/wH2AuwB/wHyAugB/wH3Au4B/wHYAskB/wNg
-        AdYDVwG4AWECYAHoAc4CuwH/AewC4Qn/AXACbQHzAx0BKgQAAygBPAEoAU0BpAH6AZUBzgHiAf8B2AG2
-        AZEB/wH3AdMB7AH/AfMB4AHkAf8B/AHuAewB/wHKAdABuAH/AUwBxgFmAf8BWgG6AWMB/wFXAc8BhAH/
-        AU4B6AGbAf8BTAGZAUgB/wNOAZcDLwFKAxkBIwN3AfYE/wP0Af8D9AH/A/MB/wPxAf8D8AH/A+8B/wPt
-        Af8D7AH/A+0B/wPoAf8DiQH/A8kB/wPQAf8DVgHBAacBTgFAAf0B9gHcAb0B/wHnAeAB2AH/AecBzAGw
-        Af8B/gHHAZUC/wHGAZMC/wHCAYwC/wG+AYcC/wG7AYEC/wG4AW0C/wG0AWgC/wGyAWMC/wGvAV8C/wGx
-        AV4C/wGsAVgB/wFgAlMB8QMcASgDXAHRAXcCcQHzAeAC0QH/AfcC7wH/AfkC8QH/AegC2gH/AdwCyQH/
-        Ad8CzwH/AewC4wL/Av4J/wHwAuUB/wNYAcEDAQECAk8BUAGbAToBngL/AbUBvgGqAf8B8gHOAb4B/wH3
-        AdMB7wH/AfwB8wHxAv8B8QH0Af8BWgG6AVsB/wFVAboBXAH/AesB3gHYAf8ByAHSAbkB/wFfAcoBaQH/
-        AUQB7gGVAf8BWQFdAVkB1wM3AVoDKQE/A3cB9gT/A/YB/wP1Af8D9QH/A/MB/wPyAf8D8AH/A+8B/wPt
-        Af8D7QH/A+oB/wOwAf8D3AH/A88B/wNWAcEBqAFPAUAB/QH1AdcBsAH/AdQBtgGYAf8B6AG/AZkC/wHO
-        AZ4C/wHIAZgC/wHFAZEC/wHBAYwC/wG+AYYC/wG7AYEC/wG3AW0C/wG1AWkC/wGyAWUC/wG1AWQC/wGx
-        AV4B/wFgAlMB8QQAAwgBCwNhAdwB0AK7Af8B9QLsAf8B/QL4Bv8C/QL/Av4J/wH0Au0B/wH9AvsB/wHd
-        AtMB/wNAAW4EAAFLAU4BcAHwAYcBzgH9Af8BzgG5AZIC/wHdAfEB/wH8Ad4B7gH/Ad4B2wHUAf8B5gLb
-        Af8BxAHSAbYB/wHxAeoB4wL/AfMB9QL/AfcB7gH/An8BiAH+A1UBugFNAaUBWAH6AVkBXQFZAdcDMAFN
-        A3cB9gT/A/cB/wP2Af8D9gH/A/QB/wPzAf8D8QH/A/AB/wPuAf8D7QH/A+sB/wPiAf8D9AH/A8wB/wNW
-        AcEBqAFPAUAB/QHmAdQBvAH/AdIB2gHgAf8B1QHEAbEB/wH8Ac0BnQL/AcsBnAL/AccBlQL/AcMBkQL/
-        AcEBiwL/Ab4BhgL/AbsBggL/AbgBbwL/AbYBagL/AbgBagL/AbQBZAH/AWACUwHxCAADVQGwAdwCywL/
-        Av0B/wH8AvUB/wHrAuEB/wH6AvYJ/wF3AnIB8gNEAXkDVAGuA0oBjAgAAl0BYgHiAbwB4wHkAf8B6QHH
-        AZIB/wHuAdcB0AH/AVABnAFDAf8BCwGKAQYB/wEKAYABAwH/AUcBgwExAf8B7wHdAc4C/wHyAeAB/wHn
-        AeEBwgH/AlkBXQHSAxsBJgMiATIDWwHIAVgBWwFYAcYDdwH2BP8D+QH/A/gB/wP4Af8D9gH/A/QB/wPz
-        Af8D8gH/A/AB/wPxAf8D7QH/A50B/wPSAf8D0gH/A1YBwQGoAU8BQAH9AfAB4QHNAf8B5gHxAfkB/wHf
-        AdMBwwH/AfwB0gGlAv8B0gGlAv8BzgGfAv8BywGZAv8ByAGUAv8BxAGQAv8BwgGLAv8BwAGHAv8BvQGC
-        Av8BvgGEAv8BvAFtAf8BYAJTAfEIAAMSARkDUgGjAdsCzQH/A2EB4gNAAW4DZAHnAf8C/gH/AfwC+QH/
-        A1wByRQAAy0BRQNVAbIBWgJdAcoBWQJkAewBQgHKAT0B/wFEAd0BQgH/ATcB2AExAf8BEwGMASMB/wGN
-        AawBxQH/AaoBzAHXAf8BWQFkAW4B7AMxAU8DCAELAwABAQMCAQMDHwEsA3kB9gT/A/sB/wP5Af8D+AH/
-        A/YB/wP0Af8D8wH/A/IB/wPxAf8D8QH/A+0B/wOWAf8DzwH/A9QB/wNXAcIBlQFxAU0B/gH/AfIBzQH/
-        AfoB3gHFAv8B2wG4Av8B4AGyAv8B3gGtAv8B2QGmAv8B1gGiAv8B0wGcAv8BzwGYAv8BzQGUAv8BywGQ
-        Av8ByAGMAv8BywGMAv8BxgGHAf8BXwJMAfMQAAMyAVADHwEsBAADSgGJA2EB4gNWAbEDNQFXIAADIAEu
-        A1sBwwF6AZIBegH3AVwBYAFcAdQDPQFpAz4BawJBAUIBcwMfAS0DBAEFAwABAQwAA4gB+Bz/A/4B/wP9
-        Af8D/QH/A/sB/wPfAf8D9gH/A9QB/wNXAcIBWQFPAUsB8gF0AU0BRwH6AXIBTQExAfoBcgFNATIB+gFx
-        AU0BMgH6AXABTQExAfoBcAFNAS8B+gFvAU0BLgH6AW8BTQEsAfoBbgFNASoB+gFuAU0BKgH6AW4BTQEp
-        AfoBbgFNASkB+gFqAUMBQQH5AXABMQErAfwDWwHZgAADWwHLA6UB/gOxAf0DsQH9A7EB/QOxAf0DsQH9
-        A7EB/QOxAf0DsQH9A7EB/QOxAf0DswH9A7AB/gNqAfUDOwFlTAADVgGzA1IBqQM1AVgDLQFFAxwBJwMX
-        ASADOwFlAVoCXwHbA0EBcwMaASQDBAEGGAADFQEdA0IBdgNVAbIDVwHCA1YBwQNUAasDPgFrAw8BFBwA
-        AxABFgNbAcgDZAHxA2IB7wNiAe8DYgHvA2IB7wNnAfIDWgHTAxQBGxQAA1YBswFnAlcB8gNfAeADVgG2
-        A0QBeQMoATwDDQESKAADUgGpAQABlgHtAf8BWwJeAdADRAF7AzUBVgJPAVEBnAE5AYMBmgH3AT4BcwGE
-        AfUDPAFmAykBPgMXASADCgENAwIBAwwAA0MBdwFcAlUB6gGfAXsBegH+AdoBoAGdAf8B4gG1Aa0B/wHe
-        Aa0BpQH/AcsBkQGKAf8BdQE6ATkB/ANcAdwDOAFdGAADBAEGA2cB6wP6Af8D8AH/A/AB/wPvAf8D8gH/
-        A/IB/wNXAd8UAAEsAisBQwGNAmoB+QH/AeMB1AH/Ae8BwAGzAf8B0AGbAZMB/wGIAWsBaQH+AV8BRAFF
-        AfgDWgHkA1cBvwNIAYYDLwFKAxABFhgAAzEBTgEAAVoB6gH/AQABJgH0Af8BUwFhAWoB7gFbAl4B2QEA
-        AYMC/wEAASkB8QH/AVMBZAFtAfEDUwGqA0EBcgMxAU8DIQExAw0BEggAA1ABowGrAmMB/QH7AuQC/wHp
-        AeYC/wHZAc8C/wHpAdkC/wHoAdYC/wHnAdUC/wHaAcoB/wHcAZoBkQH/AVwCPgH4A0UBfwgAAwQBBgMq
-        AUEDPwFtA0oBiwNZAesDvQH/A78B/wO8Af8DvQH/A74B/wOtAf8DXgHlA00BlgNCAXYDMAFNAxQBGwQA
-        AUkCSAGHAd8BrAGlAv8B3AHFAv8B1wHBAv8B3wHNAv8B4QHTAv8B2wHQAf8B9AHIAb8B/wHZAaQBngH/
-        Aa4BZQFiAf8BXwFEAUMB+wNZAesDWQHHA04BlAMlATcLAAEBAw4BEwFYAWQBaAHmAQABFgH3Af8BAwEp
-        Av8BBgFNAv8BAgENAfgB/wEAAWAB+AH/AbkBywG1Av8B3gGvAf8BcgFnAWQB8QNQAaQDNgFZAyIBMgQA
-        A0sBkAG2An8B/gX/Af4B/AL/AekB5wL/Ac0BwwL/AdgByQL/AdoByQL/AdcBxgL/AdoBxwL/AeUB0QH/
-        AfQBtQGnAf8BXAI+AfgDOAFcBAADWgHNA3cB/AG3AbgBuQH/AdAB0QHSAf8BzgHPAdAB/wHaAdsB3AH/
-        AuUB5gH/AeIB4wHkAf8B4gHjAeQB/wHjAuUB/wLlAecB/wHMAdEBzwH/AbsBvwG9Af8CrAGtAf8DcgH8
-        A1kB0gQAA1sByAHyAc0BxAL/AdsBzQL/AdYBzAL/AdkB0QL/AdoB1AL/Ad0B1gL/AeIB2QL/AecB3QL/
-        AegB3gL/Ad8B1AH/AfoBzAHBAf8B4wGtAaYB/wGjAUkBSAH/A1UBsgQAAwIBAwMLAQ8DHQEqAVsCYAHW
-        AR8BWwH9Af8BVAFcAf0B/wFGAVEB/AH/ASMBNwH8Af8BBwGUAfUB/wHEAcMBpQL/AdsBpQL/Ae8BxwH/
-        AewBvgGVAf8DUQGnAzMBUgMqAUEBigJlAfkB/wHwAe8C/wH7AfkC/wHwAe8C/wHvAe4C/wHZAdEC/wHc
-        AcwC/wHgAc4C/wHYAccC/wHTAcEC/wHUAcEC/wHjAcwB/wHcAZQBhwH/A1wB3AMQARYDtQH9AvgB9wH/
-        AdUB0QHOAf8B0wHQAc0B/wHSAdABzQH/AdEBzwHMAf8BxgHEAcIB/wG3AbYBswH/Ab4BvAG7Af8CzQHL
-        Af8C0QHPAf8BzwHRAc4B/wHOAc8BzQH/A9kF/wNgAfMDHAEoAWkCXQHwAf8B4QHaAv8B4AHcAv8B4QHf
-        Av8C4wL/AuUC/wLnAv8C5QL/AeEB4AL/Ad0B2wL/AdsB1QL/Ad0B0AL/AewB3QH/AcYBggFvAf8DTwGb
-        BAADCQEMAzABSwFcAmAB1AEuAZoB/AH/AaUBsAH+Af8BnQGrAf0B/wFrAY0B/AH/AU0BYAH7Af8BFgFD
-        AfkB/wENAYEB5gH/AZ4BrgGhAf8B/gG+AYMC/wHjAbAB/wGKAXoBaAH3A0UBfQFVAlMBsAHxAbsBuQL/
-        AdwB1wL/AdsB2AL/Ae4B7QL/AfcB9QL/AdQB0QL/AbkBsgL/AcYBuwL/AdgBxwL/AdYBxAL/AdIBvgL/
-        AdYBwQL/AdABugH/AY8CQAH9Az4BawGZApsB+wG7AbABpgH/AbABZwE2Af8BxgGIAUgB/wHGAYABQwH/
-        AcYBawE+Af8BxAFnATgB/wHEAWEBMwH/AcQBXAEvAf8BwgFXASkB/wHCAVEBIwH/AcIBTQEgAf8BwQFF
-        ARcB/wGZATsBGgH/AdIB1AHWAf8DXQHwAT4CPQFqAbECfwH+Af8B7AHrAv8B5wHoAv8C7gL/AvcB/wH+
-        AvgB/wH8AvMB/wH+AvUC/wHvAe4C/wHqAesC/wLlAv8B5gHiAv8B0gHNAf8BbgJBAfkDMAFLBAADQgF2
-        ATYBYgGFAfYBGQFmAv8BjgGmAv8BjAGlAv8BjAGaAf0B/wFoAYgB/AH/AT8BWwH9Af8BHgFEAv8BAAEm
-        Av8BAAFWAfIB/wFOAaQBvAH/AcMBhAFEAf8BywFqAS8B/wNWAcEBYwJiAekB/wHvAekC/wHkAdwC/wHS
-        AcsC/wHZAdIC/wHLAcoB/wH9AaoBrwH/Af4BwAHDAf8B/QGuAbQB/wH+Aa8BqwL/AdYBwwL/AdMBvwL/
-        AdABvAL/AdoBwwH/AcwBhgFqAf8DUwGtAZcBmQGbAfsBvQGvAaEB/wHmAaIBXQL/AbwBhwL/Aa4BawL/
-        AaUBYgL/AZwBWQL/AZQBUgH/Af4BjAFJAf8B/QGFAUAB/wH9AW4BOQH/AfwBZwEyAv8BXwEnAf8BwAFI
-        ARsB/wHMAtAB/wJdAV8B8AFWAlQBqwHwAckByAL/AvoC/wH8Af0B/wH+AvoB/wH0AeUB5gH/AeYBvgG9
-        Af8B3QGYAZMB/wHvAdIB0Ab/AfQB9QL/AfAB7wL/AfQB9QH/AfACvAH/A1sB4QMPARQEAAFYAlsBywFb
-        AmAB1gFCAWoBgQH1ASABiQHKAf8BDgGVAekB/wFMAYoB/gH/AWABbQH8Af8BEwGLAfkB/wE0AaYB4AH/
-        ASMBiwHOAf8BGwGAAcUB/wEkAaYB2gH/Aa8BhwFXAf8B3wGXAUYB/wFjAV8BVwHoAZACagH5Af8B9wHu
-        Av8B6wHiAv8B6QHeAv8B2AHNAv8BqQGqAf8B4gG2AboB/wGnAmEB/QGwAY0BjgH+Af0BrgGzAv8BwQG1
-        Av8B1gHCAv8BzwG7Av8B2QHCAf8B3wGeAY4B/wNXAcIBlwGZAZsB+wG9Aa8BowH/AeEBoAFdAv8BuQGH
-        Af8B+QGsAWwB/wH4AaQBZAH/AfgBnQFcAf8B9gGWAVUB/wH2AY4BTQH/AfUBiAFHAf8B9AGBAUAB/wHz
-        AW0BOQH/Af0BZgEwAf8BvQFNASMB/wHNAtAB/wJdAV8B8ANfAeMB/AHnAeYB/wH6AegB5QH/AeYBwQG8
-        Af8B0gGZAZYB/wHIAXABbgH/AcoBbAFqAf8BzwFrAWYB/wHTAYMBbQH/AfIB3QHaBv8C+AL/Av4B/wHS
-        AZEBkAH/A1MBsBAAAl0BWgHKAYQBKAEAAf8BRQFLAUUB/wEgAYsC/wExAVwC/wFFAZgByAH/Ae8BnAFE
-        Af8BhgEwAQAB/wFwASoBAAH/AZQBOAEDAf8B2wGMATMB/wHXAZUBRQH/AXMBXwFMAfMBmQFzAWoB+wH/
-        AfUB7QL/AegB3wL/AeoB3wL/AdgBzgL/AbMBtgH/AdIBsgGzAf8BUgI6AfcBpwJhAv0BwAHFAv8BuAGu
-        Av8B1wHBAv8BzwG7Av8B2AHCAf8B4gGiAZIB/wNXAcIBlwGZAZsB+wG8Aa8BowH/AeIBowFhAv8BvQGL
-        Af8B+gGxAYAB/wH5AakBaAH/AfkBogFhAf8B+AGbAVoB/wH3AZQBUwH/AfYBjgFNAf8B9gGIAUYB/wH1
-        AYIBPwH/Af0BbwE5Af8BvgFUASgB/wHNAtAB/wJdAV8B8AGKAm0B9wHdAZ8BnAH/AbIBUgFQAf8BowE+
-        AT0B/wGmAUMBQgH/AbABUQFQAf8BuAFcAVsB/wG/AWUBZAH/AcABXwFcAf8BzgFvAWgB/wH3Ad8B2Qb/
-        AfUB8wH/AaMBSAFGAf0DPQFqEAACWQFXAb8BngFMAQ4B/wG+AYcBQQH/AR4BhQHzAf8BAAFPAf0B/wFM
-        AVUBVgH/AYsBPgELAf8BZgEwAQIB/wFcASQBAAH/AV0BIgEAAf8BgAEzAQAB/wGNAUIBCwH/AWQCWQHr
-        AX8CYgH1Af8B9AHtAv8B6gHhAv8B5wHcAv8B4wHbAv8BsAGyAf8B7gGyAbYB/wHSAbIBswH/AeIBtwG5
-        Af8B/QGoAa0C/wHLAcQC/wHUAcMC/wHPAboC/wHbAcQB/wHbAZcBigH/A1UBsQGXAZkBmwH7AbsBrgGi
-        Af8B4wGmAWQC/wHCAZAB/wH7AbUBhAH/AfoBrgFuAf8B+QGnAWYB/wH4AaEBYAH/AfgBmgFZAf8B9wGV
-        AVQB/wH2AY4BTQH/AfYBiQFHAf8B/gGGAUEB/wG/AVgBLQH/Ac0CzgH/Al0BXwHwA1cBugHhAbMBtQH/
-        AeEBoQGlAf8BzgGHAYgB/wG9AWMBZQH/Aa0CUgH/AaUCRwH/AaQCRQH/AakBTAFLAf8BqgFHAUYB/wHJ
-        AWoBZgH/Af0B7AHqAv8B4QHcAf8BZAJTAfEDHAEoEAACSQFIAYgBzwGIATIC/wHGAXAB/wFPAaUB6QH/
-        AQMBgwH0Af8BrgGcAZEB/wG9AaABgwH/Ab0BpAGKAf8BtQGYAW0B/wGdAWgBQwH/AV0BKQEAAf8BhAE1
-        AQAB/wFbAlkBxAFeAloB2AH4AeQB3gL/AfAB5gL/AeMB3AL/AeUB4QL/AdcB1QL/Aa8BsgL/AbIBtwL/
-        Aa0BsQL/AcoBzAL/AeUB5AL/AdgB0wL/AcoBvAL/AdEBvAH/AaABdAFqAf4DQgF2AZgBmgGcAfsBuwGu
-        AaIB/wHjAasBaAL/AccBlQH/AfsBugGJAf8B+wG1AYMB/wH6Aa4BbQH/AfkBqAFnAf8B+QGgAWAB/wH4
-        AZwBWwH/AfcBlQFUAf8B9gGRAU8B/wH+AY8BSgH/Ab4BXQEzAf8BzAHOAc0B/wFdAl8B8AMYASEBagJk
-        AewB/wHmAekC/wHUAdcB/wH9AcoBzQH/AfUBvQHAAf8B5QGnAaoB/wHSAY4BjwH/Ab8CZwH/AbABVQFW
-        Af8BoQE7ATwB/wHQAYoBiAH/AekBowGdAf8DWQHMFAADHAEoAZwBcQFNAfoB9wHTAa0B/wGzAc4B7wH/
-        AWEBsQH3Af8B/gHzAecB/wHoAdEBugH/AekB0AG3Af8B6wHRAbgB/wHmAcwBtAH/AdcBtAGOAf8BnwFy
-        ATMB/gM7AWQBSQJIAYcB3QGsAaYC/wH5AfIC/wHlAeIC/wHjAeAC/wHmAeIC/wHjAd8C/wHUAdIC/wHb
-        AdkC/wHrAeoC/wHoAecC/wLmAv8B4wHfAf8B/QG3AasB/wFgAlkB6wMUARsBmAGaAZwB+wG7Aa4BogH/
-        AeMBsAFsAv8BzAGbAf8B/AG/AY4B/wH7AboBiAH/AfoBswGBAf8B+gGtAWwB/wH5AaYBZgH/AfgBowFh
-        Af8B+AGdAVsB/wH3AZkBVwH/Af4BlwFTAf8BvgFjATcB/wHLAc0BzAH/AV0CXwHwBAADOwFlAboBrAGt
-        Af0B/wHtAe8C/wHcAd4C/wHaAd0C/wHYAdwC/wHVAdgC/wHNAdAB/wH7AcMBxwH/Ae4BuwG/Af8B4AGc
-        AZ0B/wGFAkcB+QM8AWgYAANEAXoB8gHGAZsB/wH9AeoB2AL/Ae4B4QH/Af4B+wHzAf8B9wHkAdMB/wHz
-        AdgBwQH/AfMB3AHFAf8B+AHnAdMB/wH4AcUBkwH/A1EBoAMQARYDDwEUAWECWwHhAfMB3QHXAv8B/QH6
-        Av8B6wHoAv8B6QHlAv8B6wHmAv8B7AHnAv8B5gHjAv8B6gHpAv8B7gHtAv8B9wH2Av8B/gH9Af8BsAFa
-        AVcB/QNDAXcEAAGYAZkBnAH7AbsBrgGgAf8B6AG5AYQC/wHYAacC/wHLAZoC/wHFAZQC/wG+AYwC/wG5
-        AYcC/wGzAYEC/wGuAW0B/wH+AagBZwH/Af4BpAFjAv8BpAFfAf8BwgFqAT0B/wHLAcwBywH/AV0CXwHw
-        CAADWAG8AfMC6AL/AfcB+QL/AecB6gL/AeMB5gL/AeQB5wL/Ae0B8AL/AeQB5gH/AbUBoQGiAf0BXAJZ
-        AckDLwFKIAACRwFGAYABnAGRAX0B+AH+AfUB6gL/Af0B+AL/AfwB+AH/Af4B+AHxAf8B/gH1AekB/wG5
-        AaEBewH8A1ABnQMNARIDAwEEBAADKQE/AWoCXQHwAfMB4gHfBv8B+QH3Av8B9AHvAv8B8gHtAv8B7QHp
-        Av8B9AHyBv8C+AH/AbUCfwH+A1EBoggAAZkBmwGdAfsBswGnAZoB/wHMAZwBVAH/AeYBuQGCAf8B5QGu
-        AWkB/wHlAagBZAH/AeQBowFfAf8B5AGeAVoB/wHjAZoBVgH/AeIBlgFRAf8B4gGSAU0B/wHhAY4BSQH/
-        AeQBjgFGAf8BqQFZASwB/wLJAcoB/wNfAfAIAAMWAR8BagJmAesM/wH+AfYB9wH/AboBlgGXAf4BXQJa
-        AdMBMQIwAU0sAAMqAUECVgFVAbQBcgFqAWYB8AHsAckBrgH/AX0BdQFpAfICWgFXAb0BNQI0AVUDBwEJ
-        AwEBAgwAAyoBQQFhAl0B4gHdAa8BrgH/AfcB6QHoAv8B/QH4A/8B+wL/AfgB8wL/AfAB7QH/AewCygH/
-        AYYCbQH3A0sBjgwAAbYCtwH9AdsB2AHWAf8BtAGkAZUB/wG7AaoBmQH/AboBqgGaAf8BugGpAZoB/wG6
-        AagBmgH/AbkBqAGZAf8BuQGoAZoB/wG5AacBmAH/AbkBqAGZAf8BuAGnAZgB/wG4AaQBlgH/AbIBpQGa
-        Af8C7QHuAf8DZAHzDAADQAFuAboCsQH9BP8BvAKjAf4BXQJZAdcDNwFaaAADEAEWAUkCSAGIAWACWwHW
-        AXsCZQH0AZkBbQFkAfsBkAJqAfkBZQJfAegBVgJVAbEDKgFBEAADZQHlA50B+wGaAZwBngH6AZoBnAGe
-        AfoBmgGcAZ4B+gGaAZwBngH6AZoBnAGeAfoBmgGcAZ4B+gGaAZwBngH6AZoBnAGeAfoBmgGcAZ4B+gGa
-        AZwBngH6AZkBnAGdAfoBmgGcAZ4B+gOrAfwDXAHJDAADAQECA1cBuANlAeUBPQI8AWgDAwEENAADCAEL
-        AlMBVQGwAkwBgAHzAkQBgAHzAlMBVQGwAwgBC6gAAxABFgM6AWEDVQG0A0sBjgMDAQQgAAMEAQYDAgED
-        BAADAQECA1ABnQI0Av8CAAH0Af8DUAGdAwEBAgQAAwIBAwMEAQYkAAM9AWkDXQHXA1IBoWAAAwkBDAM3
-        AVoDVAGrA1wB6gOoAf0B5QLhAf8DfwH+A1UBsQMNARIYAAMlATcDSAGEDAADQgF0AiUB8AH/AgABzQH/
-        A0IBdAwAAkcBSAGDAyYBOBwAAwMBBANeAdkBuQK0Af8DXgHVAwEBAhgAAw0BEgMeASsDAwEEAxYBHgJY
-        AVkB3QFUAVUBXAHqA0IBdAMRARcDHAEoAzcBWgNEAXsDKAE9DAADKQE+A1QBrgNcAeoCqAGnAf0B3QLX
-        Af8B+QH3AfgB/wH+A/8B+gH+Bv8BrwKoAf8DWQHPAxkBIxAAAwwBEAJRAVIBpwM7AWQDJAE1AwABAQQA
-        AzkBXwIDAccB/wIAAasB/wM5AV8HAAEBAyQBNQM7AWMCUQFSAacDDAEQGAADVQGyAaICmwH/Ab0CuAH/
-        A0sBjgMAAQEYAANXAb0BSwFOAV0B8ANHAYIDIAEuAT8BUAFlAfQBAAGIAfQB/wEAAUkBpgH/A1kBzAFf
-        AlcB6AGZAU0BTAH/AbQCXQH/AVkCTwHyAzgBXggAAXACbQH1Ad8C0wH/AfoB8QHyBf8B+AH2AfgB/wH3
-        AfUB9gH/AfMB6AHgAf8B8QHLAaoB/wHxAdsBxQX/AccCwgH/A10B4gMtAUYMAAM+AWsDRAF6A0QBeQNC
-        AXQDAAEBBAADMAFLAh4BigH7Ah4BfAH7AzABSwcAAQEDQgF1A0QBeQNEAXoDPgFrFAADLQFFAXQCcgH6
-        AccCwQH/AWICYQHmAw0BEhwAAUIBUAFkAfQBAAGMAfwB/wEAAU0BrAH/A1gBxgFbAlgB6QGFAYEBlQH/
-        AScBvQH9Af8BAAGfAeAB/wGdAZIBsQL/AbsBtwH/Af4BqwGqAf8BywFaAVwB/wFgAkEB+QMwAU0EAAHh
-        AtMF/wH+Af0B+wL/AfsB8wH/Af4B9gHmAf8B+wHkAcAB/wH8AcwBkAL/AbQBUAH/AfcBogFCAf8B6gHF
-        AasB/wH9A/8C1QHYAf8DUwHxAzoBYggAA1ABnQM1AVYDSgGMAzQBVAM/AW0EAAMVAR0CWQFhAeQCWQFh
-        AeQDFQEdBAADPwFtAzUBVQNKAYwDNQFVAk8BUQGcDwABAQM7AWQDYQHuAbsCtAH/AboCtQH/AzoBYgQA
-        AwMBBANMAY8DQwF3AxsBJgwAAzABTQJUAWEB7gEnAbUB9gH/AQABlQHiAf8BawGDAacC/wG7Aa8B/wHk
-        AcoBxwH/AVwB1QHvAf8BiwGuAcoB/wH+AaoBpwH/AfACjgH/AewBhAGIAf8BzAFfAWIB/wNbAdkEAANW
-        AasBngKaAfoB+wH6AeoD/wHeAv8B9wHLAv8B4QGnAv8ByQGEAv8BtAFTAf8B9wGcATgB/wHmAYMBKwH/
-        Ad4BpQGHAf8B9gH3AfoB/wHlAeYB6QH/AV8CWAH5A0oBigMEAQYDSgGKAz4BagNCAXYDSwGOAzIBUAQA
-        AyUBNwJXAWAB6wJXAWAB6wMlATcEAAMxAU8DTAGPA0IBdgM+AWoCSAFJAYgIAAMNAREDWwHDAZwClgH/
-        Ab0CtwH/AcYCvwH/A1oBvQMEAQYDSgGLA1oBxQG3ArEB/wG/ArgB/wM/AW0MAAMUARwBYQJbAeEB9gHX
-        AdMB/wFeAeEB+QH/AVgBxQHnAf8B9QHHAcUC/wHDAbsC/wGyAa4B/wH+Aa4BrQH/AfsBsQG0Af8B7wGr
-        AaQB/wHfAZABigH/AegBgwGEAf8BjwFGAUcB/wgAAykBPwNcAc8BwQG1AaoB/gH/AewBywL/AdoBnQL/
-        AcEBZgH/Af0BrQFKAf8B8gGZAT0B/wHkAYMBMAH/AdQBVwEZAf8B0AGAAVIB/wHrAd8B3gH/AukB6wH/
-        AVkCUQH9A0sBkAJEAUUBfAM9AWcDPQFnA08BlwMSARkDCgENAlcBWQHCAgAB0wH/AgABoQH/AlcBWQHC
-        AwoBDQMSARkDTgGWAz0BZwM+AWoDQgF0BAADBAEFA1QBrAGwAqcB/wHEArwB/wHAArgB/wG4ArIB/wNb
-        AcMDXgHQAakCpAH/AcgCwgH/AckCwgH/A18B4wMUARwMAAMcASgBggFuAXAB/gH/AeQB3gH/Af4B1wHQ
-        Af8B+AHGAcQC/wHBAcMC/wHHAcoC/wHSAdMC/wLeAv8B4wHiAv8B3AHXAf8B8QG2Aa4B/wHFAWsBZAH/
-        A18B4BAAAz4BagNlAeUB4gHGAbIC/wG/AW8C/wGlAT0B/wHuAZEBNQH/AeABbwEvAf8B0wFYASAB/wHD
-        ATYBBQH/AbwBPwEiAf8B4QG9AbkB/wHfAdQB1gH/A1sB0ANEAXsDPQFnAz0BZwNPAZcDEgEYAw4BEwJZ
-        AWEB5AEVAScC/wIAAfQB/wJZAWEB5AMOARMDEQEXA04BlgM9AWcCPQE+AWoDQgF0BAADMwFSAaYCnQH/
-        AcMCtwH/AckCxgH/A9MB/wHXAtUB/wGhApYB/wG8ArUB/wHJAcIBwQH/AYoChwH5A00BkQMSARgQAAME
-        AQYBSgJJAYkBkgGFAYYB+wH2AtUC/wHuAe0C/wH9AfwG/wH8AfkC/wHwAe0C/wHgAdsB/wHzAcgBwgH/
-        AdMBoQGcAf8BhQFXAVQB/wM4AVwUAAMEAQYDTAGTAXcBcAFvAfQB7QGvAYoB/wHwAY0BPQH/Ad4BZgEp
-        Af8B0AFbATAB/wHEAVgBOwH/AbcBUQE/Af8BvAGFAXAB/wG4AagBqgH/A1UBtANKAYoDPQFpA0IBdgNM
-        AY8DLAFDBAADOwFlAkwBdwHzAkQBcwHzAzsBZQQAAysBQgNMAY8DQgF2Aj0BPgFqAkkBSgGJBAADVgGz
-        Ab0CsgH/AbsCsgH/AcgCxgH/AeIC4wH/AeAC3QH/AagCngH/AZMCjwH7A1QBpgMaASUfAAEBAzEBTgNW
-        AbMBaAFmAWQB7AHJAbcBsQH/AdEBvAG3Af8BzQG1Aa8B/wGVAY0BiwH7A10B0gNnAfIB1gHKAckB/wG1
-        AbEBsgH/AzkBXxwAAxoBJQNbAcYBxQGfAZQB/wHLAZwBjQH/AbwBnwGdAf8BtgGkAaUB/wG2AakBqwH/
-        AbYBpgGnAf8BXwJSAfQDJQE3Ak8BUQGcAzUBVQNKAYsDMgFQA1IBowMRARcEAAMWAR4DFgEeBAADEQEX
-        A1IBpAMyAVEDSgGLAzUBVgNQAZ0EAANcAd8BuQGuAawB/wGIAWsBbAH/AaUCmwH/AewC6wH/AbgCrgH/
-        AakBngGaAf8BQgFZAW0B9QNCAXQDMwFTAjwBPQFoAyMBNAMzAVMYAAMBAQIDFgEfAyIBMgMoATwDJgE5
-        AyYBOQMjATMDYAHeBP8BygLDAf8DNgFZIAADWQHHAbkBrQGwAf8BvQGyAbYB/wG6Aa4BsAH/AbsCrAH/
-        AcgCtgH/A38B/gNCAXYEAAM+AWsDRAF5A0MBeANCAXMDOQFfA1IBowMuAUcDEQEXAxEBFwMuAUcDUQGi
-        AzoBYANCAXMDRAF5A0QBegM+AWsEAAMWAR8DXAHPAYsBawFpAf8BswKmAf8BuwKzAf8BvgG1AbQB/wHE
-        Aa4BqwH/ARIBqwHJAf8BAAHLAfwB/wEAAawB7AH/AQABswHwAf8BAAGUAd0B/wEAAZ4B5wH/A04BmQwA
-        AwIBAwMVAR0DFgEfAxYBHgMbASYDIwE0AzUBVwNPAZcDXQHXAc4CzAH+AeoC5QH/A1sBxgMOARMcAANU
-        AasBwgKzAf8B0ALDAf8ByQK8Af8ByAK8Af8B0QLEAf8BugKtAf8DVwG9CAADDAEQAlIBVAGmAzQBVAJH
-        AUgBgwNEAXoDNAFUA0wBjwNPAZcDTwGXA0wBjwM0AVQDRAF6AkcBSAGDAjQBNQFVAlEBUgGnAwwBEAgA
-        A1ABnQGjAZ0BmQH/AaQBkgGQAf8BpgGTAZIB/wG0AasBqQH/ATgBsAG9Af8BEAHTAe8B/wETAdYB8wH/
-        ARIB1QH0Af8BEwHRAfMB/wEUAdUB9gH/AQ4BsgHkAf8CUwFUAawMAAMKAQ0DVwG4AWMBXgFfAeoBaQJh
-        Ae4BsgGkAaIB/QHSAbgBtgH/AeABywHKAf8B7QHZAdoB/wHiAtYB/wFjAmIB6QNOAZYDFgEeHAADQgF2
-        AaACkwH+Ad8C1gH/AdQCywH/AdQCywH/AdoC0QH/AdoCzwH/AWICWQHsAxIBGQwAAyMBMwNSAakCNAE1
-        AVUDQwF3A0oBiwNCAXYDPQFnAz0BaANCAXYDSgGLA0MBdwM1AVYDUgGpAyIBMgwAA1ABmgFrAaMBtgH/
-        AZsBrQGwAf8BkgHCAcMB/wGBAeIB4wH/ASsBfAGxAfwDQAFxAzsBZAM6AWIDOgFhAzoBYQMyAVAUAAND
-        AXgBawJiAe8BdwFpAWsB8QNkAecDYQHaA1sBxANOAZUDOgFgAx0BKgMBAQIcAAMpAT4BhwKEAfkB8ALs
-        Af8B4wLfAf8B5QLhAf8B6QLmAf8B8gLtAf8BhQJzAfsDNgFZFAADIwE0AlEBUgGnA0QBewM1AVYDPQFp
-        AjwBPQFnAjwBPQFnAj0BPgFqAzUBVwNEAXsCUQFSAacDIwE0EAADHAEnAkcBSAGDAVoCXQHKAVgBYwFr
-        Ae8BWgJdAcoDSAGGbAADIQEwA2QB7AT/A/gB/wH0AvMB/wHsAuoB/wHpAuYB/wG/ArcB/wNPAZwcAAMP
-        ARQDPgFrA1ABnQNKAYoDRAF7A0QBewJJAUoBiQJPAVEBnAI9AT4BagMPARSYAANAAXEBkAKNAfkBdwJ1
-        AfIBZAJiAeYDYAHWA1gBwQNUAa4DRgF/AwMBBDAAAxEBFwNIAYgDVwG/A1YBwQNMAZMDGwEm2AADBgEI
-        AzEBTwNCAXYDSAGHAlcBXAHfAgABsgH/AgQBywH/AgUBygH/AhIBmAH/A1wB3AMoATxYAAMHAQoDRAF6
-        A1IBqQNFAX0DJgE4AwoBDhQAAz8BbgNWAcEDVwG/A1YBvgNWAb4DVgG+A1YBvgNWAb4DVgG+A1YBvgNW
-        Ab4DVgG+A1YBvgNYAcADVgG+AzkBXwwAAz4BawFcAlcB3wGHAU4BQwH6Aa4BfQE9Af4BVAE0AW8B/gEA
-        AQQB1AH/ASQBJQHvAf8BKAEpAfcB/wFCAUEC/wFTAUwC/wEvAS4BwAH/A1wBzgMKAQ4BXQJZAdcBfwFk
-        AVIB9wFrAWIBWwH2AWsBYgFeAfYBbgFiAVsB9gFuAWIBWQH2AW4BYgFaAfYBcQFiAVgB9gFxAWIBSQH2
-        AXMBYgFJAfYBcwFiAUkB9gFzAWIBSQH2AXMBYgFJAfYBcwFiAUkB9gGDAWUBUQH3AV4CWwHZFAABVQJT
-        AbAB5QGmAUYB/wHuAcgBlwH/AZ0BfwFbAf4BbQFSAUIB9wNXAd8DVAGrAz4BawMjATMDBAEGBAABcQJi
-        AfYB2QLTAf8ByQK4Af8BuAKfAf8BvAKiAf8BxAKpAf8BvgKkAf8BvAKqAf8ByQLBAf8B0gLMAf8BxwK9
-        Af8BxQKwAf8B3gLAAf8B5ALFAf8BwgKTAf8DVwHFBAADAwEEA1MBqgG0AZwBVQH9Af8B1gGqAv8B2QGc
-        Af8B2wGzAZoB/wEaARQBvgH/ARcBGQHpAf8CKQH3Af8CRgL/AUkBTQHzAf8BLwFAAeAB/wE1AS0B7AH/
-        A14B5QMPARQBaQJZAfIB3wHbAd8B/wHnAeAB4gH/AeEBtwGqAf8B5gG0AZIB/wHqAbkBkAH/Ad0BsQGd
-        Af8B2QHIAcYB/wHaAdUB2gH/AdoB0gHVAf8B2wHUAdcB/wHbAdQB2AH/AdwB1QHYAf8B4QHcAd8B/wHc
-        AdsB4QH/AW8BZAFTAfEEAAMWAR8DWgHKA1kBxANKAYoBvgGoAVsB/QG4Ab8BaAH/Ab4BxAGdAv8B7wHQ
-        Av8B7AHJAf8B9gHXAa0B/wHcAbQBhgH/AagBgAFGAf0BYgFJAT0B9gJfAV4B4ANOAZgBsAKoAf0B+gP/
-        AeIC2gH/Ac0CugH/AdQCvgH/AdACvAH/AdICygH/AfgC9w3/AfEC7QH/AeAC1AH/AfkC2gH/AeMCsQH/
-        A1gBywQAA1ABnQHnAa0BbAL/Ae4BxAL/Ad8BtQL/AegBrAH/AasBlwGgAf8CAAHFAf8BDQEPAfMB/wJA
-        Av8BVwFIAfsB/wE7AUcB7AH/ARgBuQHpAf8BFAFOAcAB/wNWAb4EAAFjAWEBXAHuAe0B7AHvAf8B/gHD
-        AZ8B/wH+AakBRQH/AdgBlwFkAf8BvQGCAWcC/wGtAVAB/wHpAZwBVQH/AbwBoAGdAf8BwwGzAbQB/wHI
-        ArcB/wHMArwB/wHQAsEB/wHdAdAB0QH/AewB6gHtAf8BZwFhAVUB7gQAA0gBhAFhAe8BkQH/AUwBvwFg
-        Af8BOAFuARkB/wFdAb0BTgH/AS4BxgE9Af8BNAGXASQB/wHpAccBowL/AeUBxAL/AeoBzAL/AfIB2QL/
-        AfUB3QL/AewB0AH/AfoB1QGpAf8BXQJVAeoBkQJ+AfwB7wLyAf8B2ALPAf8BxQKxAf8ByAKyAf8BwAKz
-        Af8B5QLfAf8B+gL3Af8B9gL1Af8B7wHwAfEB/wHyAvAB/wH3AvIB/wHeAtkB/wHYAsEB/wHaAqoB/wNb
-        AcgDLwFKAZgBbQFNAfoB/wHHAZEC/wHTAZ8C/wHHAY4C/wHSAYcB/wG9AZcBggH/AgABxgH/AR4BHAL/
-        AV0BYwH6Af8BNgFiAd0B/wE7ATYB3gH/ASoBgwH8Af8BAAGyAe8B/wFSAVkBXQHtAzYBWQFjAmEC7gHf
-        AeAC/wG2AW4C/wHaAYwB/wGbAYwBxAH/AT0BOAHQAf8B9wHOAY8B/wH8AbEBWAH/AeUBvgGuAf8C6wHv
-        Af8B7ALlAf8B7ALmAf8B7QLnAf8B8gLtAf8B7gHtAe4B/wFnAWEBWAHuBAADOgFhAY4B0QGfAf4B7gH/
-        AfIB/wGlAfgBuQH/AaAB8QGxAf8BqAH/AcAB/wFhAb8BXwH/AfIB2QG5Av8B5wHKAv8B6AHMAf8B/QHo
-        Ac8B/wH9AekB0wL/AfgB6gH/AfUB3QHCAf8DUwGtAZECfgH8AfAC8wH/AdkC0AH/AcgCswH/AcACrQH/
-        AcwCwQH/Ae4C5QH/AegC5gH/AdQC0gH/AcsCxwH/AcoByQHIAf8B5ALgAf8B7gLmAf8B1gLJAf8B0QKj
-        Af8DWwHIAVoCWAHAAc4BbgEvAf8B0QGMAUIB/wH8AcMBcAL/Ab0BZQL/AbwBWwH/Ae0BsAFQAf8BMAEd
-        AaUB/wI3Av8BZAFrAf4B/wEcAcEB9wH/AQ8BigHjAf8BUAEgAZAB/wFPAYQBpwH/AQABiAHoAf8DUAGd
-        AWMCYQHuAfIB6QHoAf8B/AHLAagC/wHxAcgB/wGxAa8B4wH/AWgBZgHjAf8B+wHwAc4B/wH1AcIBmAH/
-        AcYBoAGUAf8BwwG3AbkB/wHKArgB/wHOAr4B/wHQAsAB/wHbAtAB/wHwAe8B8gH/AWkBYQFdAe4EAANQ
-        AZ4BjAHoAaUB/wHhAf8B4wH/AboB/wHBAf8BbgH/AYIB/wFtAfIBkQH/AVQBowFKAf8B7QHXAcEC/wHv
-        AdcB/wH7AeoB1QH/AfsB7AHbAf8B+gHuAeAC/wH+AfEB/wGRAXYBXwH7AyoBQQGRAn0B/AHwAvMB/wHZ
-        AtAB/wHHArIB/wG9AqwB/wHTAscB/wHqAuIB/wHjAeEB4AH/AZEBjQGMAf8BKQEnASYB/wGgAZ0BmwH/
-        AdkB1wHWAf8B7ALlAf8B2gLQAf8ByQKfAf8DWwHIAWoBXwFYAe0BqgFTARgB/wGXAToBAAH/AcMBagEn
-        Af8B+QGxAU4C/wGxAU8C/wG8AUwB/wG1AWwBRwH/AUEBNwGvAf8BVwFVAe4B/wFEAWQB3QH/AQMBtQHv
-        Af8BPgGVAbMB/wG4AWMBTQH/AlsBXgHZAyEBMAFjAmEB7gH2AfUB9gH/Af0B4gHUAv8B5AHJAf8BowGe
-        AcMB/wFZAVYBqAH/Af0B3gHDAf8B9wHVAcQB/wHeAdMB0QH/Ad4C1gH/AeIC2AH/AeQC2gH/AeQC3AH/
-        AesB5QHmAf8B9AH1AfgB/wFpAmEB7gM7AWQBXwG3AX8B/gHaAf4B5QH/AdgB/wHcAf8BrAH/AbgB/wGJ
-        Af0BkwH/AZwB+gGtAf8BOAHAAVEB/wFcAYwBQAH/AfgB5wHaAf8B/QHyAeQB/wH5Ae8B4wH/AfwB+AHw
-        Af8B/AHtAdwB/wFdAlkB0gMBAQIBjwJ9AfwB8ALzAf8B2QLQAf8BxwKyAf8BvgKuAf8B1QLIAf8B6ALh
-        Af8B6AHlAeQB/wFXAVIBUQH/AwAB/wGBAmwB/wHgAt0B/wHqAuIB/wHbAtIB/wHGAp8B/wNbAcgBkAFn
-        AT4B+AGNAT4BBwH/AWsBJwEAAf8BmwFFAQkB/wHxAa0BUwL/AcQBbgL/Ac4BhwH/AdQBkAE0Af8BYwEo
-        AQgB/wFNASYBNQH/AZIBQQErAf8BogGaAYkB/wErAawB+QH/AZ4BgwGAAf8DUAGdBAABYwJhAe4B+QH4
-        AfkD/wH7Af8BxAHJAcoB/wFIAYoBsgH/ASsBYwGfAf8BggGZAacB/wHsAd0B2AH/Ad8C1QH/AdwC0gH/
-        Ad8C1gH/AeEC1wH/AeIC2QH/AeoC4wH/AfgB+QH7Af8BaQJhAe4BMAIxAU0BagGdAYIB+QHQAfgB0wH/
-        AcgB/QHVAf8B4wH/Ae8B/wG/Af4BzwH/AYsB7wGSAf8BXAHjAYcB/wFDAZ8BOwH/AfIB3wHaAf8B/QH4
-        Ae8B/wH3AfEB7QX/AboBmQGDAf4DQgF0BAABjwJ9AfwB8AL0Af8B2QLQAf8ByAKzAf8BvAKsAf8B0ALF
-        Af8B7ALkAf8B4wLgAf8BrgGlAaQB/wFjAlkB/wG1Aa0BrAH/AeAC3QH/Ae8C5QH/AdkCzQH/AcsCoQH/
-        A1sByAGQAWoBQQH5AYkBPwEJAf8BkwFGAQoB/wHbAZ4BTAH/Af0BywGKAf8B4QGsAWQB/wGvAWoBNgH/
-        AY8BRgERAf8BaAEnAQAB/wFnASQBAAH/AYYBMwEAAf8BsgFWAQ8B/wGcAV4BRwH/AawBZAE+Af8DUQGi
-        BAABZQJhAe4B/gL7Af8B8wH6Af0B/wGbAdgB+QH/AYIBvQHiAf8BaAGyAdcB/wFUAbYB4gH/AbQBygHX
-        Af8BygG1AbIB/wHFArUB/wHKArsB/wHOAr8B/wHRAsEB/wHbAtAB/wL6AfsB/wFpAmEB7gMEAQYCZAFc
-        AecB1AHxAdAB/wGjAe0BtgH/AcwB/wHbAf8BkgHvAaMB/wGQAdQBjwH/AbYB1QGpAf8B3wHjAdAB/wH9
-        AfYB8wH/AfYB9AHyAf8B9wH4AfkD/wH8Af8BYQFfAVQB7gMNARIEAAGOAn0B/AHwAvQB/wHZAtAB/wHH
-        ArIB/wHEArAB/wHHArwB/wHxAegB6QH/AfgB+QH7Af8B5wLlAf8B5ALeAf8B4QHeAd0B/wHyAewB7QH/
-        AeoB5AHlAf8B1gHFAcYB/wHWAqYB/wNbAcgBawFgAVkB6wHHAYkBNwH/AfMBtQFeAv8B1AGbAf8B/gHd
-        AbYB/wG+AZsBbAH/AZMBYAFBAf8BngFtAU0B/wGdAWoBSAH/AZABWAEwAf8BgAE+AQ4B/wFZASEBAAH/
-        AXABMAEAAf8BiQFjATQB/gNCAXQEAAFlAmEB7gL/Af4B/wHrAfUB/AH/Aa4B3AH3Af8B2AH3Av8BwAHw
-        Av8BbwHKAfMB/wG+AdgB5wH/AfUB8AHtAf8B8QLtAf8B8wLuAf8B8wLvAf8B8wLwAf8B9wL0Af8B/gP/
-        AWkCYQHuA1EBogH7AdoBvAX/AcgB6QHMAf8BjQHlAZoB/wGQAdkBlQH/AfQB6wHnAv8B+AH9Av8B+gH7
-        Af8B9QH3AfUB/wL3AfgB/wH9Af4C/wHtAdUByAH/A1EBpwgAAY4CfQH8AfAC8wH/AdgCzwH/AcQCsQH/
-        AcoCtAH/AcQCswH/AdAByAHHAf8B0AHHAcMB/wPsAf8B3gLgAf8B/AL6Af8B9AHuAe0B/wHUAs0B/wHd
-        AsEB/wHaAqgB/wNZAckCVgFVAbQBzgGJATQB/wHsAcEBkAL/AfAB2wL/AfUB6QH/AfIB6QHfAf8B3QHK
-        AbYB/wHZAcQBrgH/AeABzAG4Af8B2gHGAbAB/wHJAa4BlAH/AaEBZwFAAf8BsQFbARwB/wFhAlQB7gMY
-        ASEEAAFlAmEB7gT/AfwB/QL/Ac8B5wH3Af8B1QHsAfoB/wG0AeEB/QH/AZ4B1QH6Af8C3gHiAf8BuQGh
-        AZ8B/wG4AqQB/wG+AqsB/wHDArAB/wHEArQB/wHSAcQBxQH/Af0B/gL/AWoCYQHuAX4BbwFVAfMB/wH8
-        AfcF/wHvAdkBvwH/Ab0BxgGLAf8B5wH0AecC/wL7Af8B+AH6AfwB/wH6Af0C/wH8A/8B/Qf/AY8BZwFf
-        AfsDJgE4CAABrAKoAf0B9wL8Af8B3gLXAf8ByQK2Af8B0AK6Af8B2QHHAcsB/wGmAY0BgQH/AZgBSwEa
-        Af8BmgGWAZMB/wFkAWkBbAH/AeoC7AH/AecB3QHUAf8B5AHLAbEB/wHqAccBqwH/AdMBpgGlAf8DXAHO
-        AykBPgGBAWIBSAH2Ae4B0QGwAf8B+AHuAeIB/wH9AfMB6QP/AfwB/wH5AfAB5wH/Ae8B1gG+Af8B8AHW
-        Ab4B/wHvAdYBvgH/AfEB3QHJAf8B+gHYAbIB/wHVAYYBOgH/A04BlAgAAW8CZwHyCP8B+wP/Ad8B8gL/
-        AdMB7QL/Ae8B+wP/Av4B/wHtAukB/wHuAusB/wHwAu0B/wHxAe4B7wH/AfIB7wHwAf8B9QH0AfUF/wFy
-        AWkBZAHxAkABPwFuAl0BWgHTAaEBjQGDAfkB7wHUAbYB/wHzAcwBrAH/AfMB1AG4Af8B7QHLAawB/wHs
-        AcsBrwH/AfQB3gHKAf8B9QHiAdUB/wH3Ae0B5gH/AfcB5QHZAf8DWwHQAwEBAggAAYQCfQH3AeUC3wH/
-        AdQCxwH/AcYCtAH/AcwCuAH/AdgBwgHEAf8BvQGmAaIB/wGfAYEBYwH/Aa0BoQGgAf8BqwGjAaQB/wHL
-        Ab8BwAH/AdMBwgHBAf8B4gHPAcYB/wHhAcgBugH/AckBpQGkAf8DUQGnBAADRAF6AbwBpQFTAf0B/AHs
-        AdcB/wH6AfIB5wH/AfsB8wHrAf8B/AH0AesB/wH3AeUB1AH/AfcB5AHSAf8B+QHuAeAC/wHzAdsB/wHy
-        AbEBbQH/AVsCWQHEAwQBBggAAWACXAHUAYICbQH3AXECYgH2AXMCYgH2AXMCYgH2AXUCYgH2AXUCYgH2
-        AXUCYgH2AXUCYgH2AXcCYgH2AXcCYgH2AXcCYgH2AXcCYgH2AXcCYgH2AYcCbQH3AV4CWgHYCAADJQE3
-        Ak8BTgGXAWICXwHgAbsBqgGaAf0B8wHcAcMB/wH8AesBygH/AaIBfwFmAf4DVQGyAlMBUgGoAVsCWQHE
-        Ay0BRQwAAT0CPAFnAVICUQGhA10B1wF3AmgB+gFkAlkB7AFWAlQBqwNQAZ0BUgFRAVIBoQNSAaEDUgGh
-        AVICUQGhA1IBoQNSAaEDUgGkA0wBkwMYASEIAAJHAUYBgAGFAWsBYgH2AfcB4gHMAv8B/QH3B/8B/QP/
-        AfoC/wHuAdcB/wGuAXoBZgH8A1YBtgMMARBcAAMHAQoDMAFLAlYBVQG0AXsCZQH0A1UBtWgAAygBPAJW
-        AVUBtAFlAWIBXQHpAZoBiAFxAfkBowGHAXQB+gFuAWUBXQHwAVwCWQHJAzoBYf8AGQADHwEsA0sBjwNV
-        AbQDVwG/A1gBwANXAb0DVAGuA0EBcwMNARJgAAMMARADTgGUA1UBtQNVAbQDVQG0A1UBtQNWAbYDVgG2
-        A1UBugNWAb4DQQFzGAADBQEHAwEBAiwAAzIBUAFPAVgBTwHvASMBmAE3Af8BKgGwAUgB/wEuAbgBTwH/
-        AS8BuAFPAf8BKwGzAUoB/wElAZ0BPAH/ATMBSwE0Af0DVwHFAw8BFCwAAw8BFANOAZcDRgGAAwMBBCAA
-        A0gBhwGeATkBPAH/AbEBRgFJAf8BtQFJAUwB/wG+AVEBUwH/AccBWAFaAf8BzwFgAWEB/wHUAWQBZQH/
-        AdkBaQFqAf8B1QFvAXAB/wNeAeUDBgEIEAACUwFVAa0BFgFvAdIB/wFCAWIBgAH1A1kBxwJNAU4BlgM7
-        AWUDSgGNAYwBbQFRAfcCXQFZAdcBVgJVAbQBTQJMAZEBQAI/AW4DJQE3BAADXwHgATkB1QFkAf8BRgHl
-        AYgB/wFRAeEBjQH/AVcB4gGSAf8BWAHhAZIB/wFUAeMBjwH/AUsB5QGLAf8BQQHgAW4B/wEpAWcBLQH+
-        A0ABcSgAAyUBNwNbAeEBIAGSARkB/wEwAUABEAH9A1YBswMQARYcAAFbAlgBywHwAZsBlAL/AbsBpAH/
-        Af4BvQGpAv8BvAGoAv8BvgGrAv8BvAGoAv8BvAGpAv8BvwGqAv8BwwG4Af8BXwJYAeMDBAEGEAABTQFd
-        AWwB8AE4AcEB/gH/AVsByQH+Af8BVAHIAf4B/wE/AbcB8AH/AVoBXAFmAf8B8wG4AYYC/wG/AW4C/wG5
-        AWEC/wGyAVIC/wGxAVAB/wHsAaQBXgH/A0QBeQQAATQBewE6AfwBYAHoAZwB/wFwAd4BnwH/AYkB4QGn
-        Af8BkAHjAawB/wGRAeMBrQH/AY0B4gGqAf8BhAHfAaIB/wFqAewBogH/AT8BrwFUAf8DUQGgJAADQgF2
-        ATcBYgE/AfYBIwHQAVoB/wEoAckBNgH/AScBngEAAf8BGwFRAQAB/wNaAdsDLQFGFAADAQECAWICWAHp
-        AfwBxgGsAv8B9QHZAf8B+AHuAdkB/wH6AfQB4gH/AfsB9AHkAv8B/AHxAv8B/gH5Av8B/AH4Af8B7QHh
-        Ad0B/wNWAb4QAAMJAQwBAAFcAdQB/wFLAcUB/gH/AZIB2AL/AZYB3AL/AYMBqgG/Af8B2AGfAW4C/wHO
-        AZoC/wHLAZMC/wHFAYgC/wG+AWsB/wH4AbIBYAH/AWkBbAGHAf8CUAFRAZ8EAAFYAY8BXwH7AZQB6gG0
-        Af8BpwHoAbwB/wGyAewBxwH/Ab4B8wHMAf8BwAH0Ac4B/wG3AewByQH/Aa0B6gHAAf8BnwHwAbsB/wFX
-        AbYBaQH/A0wBkyAAAycBOgEpAXkBQgH6ASYB1wFeAf8BJQHWAWMB/wEiAbQBKgH/ASQBmAEAAf8BJwGk
-        AQAB/wEiAWcBAAH/A1oByhQAAyMBMwGNAU8BTQH7Af8B0wG3Av8B9wHfAf8BnQGPAYIB/wFCAT4BOgH/
-        AY4BiAGMAf8BwgGwAasB/wHqAeAB0QP/Af4B/wHNAcEBwAH/A0YBgRAAAxwBKAEAAWYB4gH/AWkB0AH+
-        Af8BvgHoAv8BuAHlAf0B/wGfAYwBhAH/Af0B2QG0Av8B1gGrAv8B0wGkAv8BzgGbAv8ByAGOAf8ByQGP
-        AWIB/wE6Aa8B+QH/A1IBqQQAAVUBYQFVAeoBsgHxAckB/wHQAfQB3QH/AeYB+wHsAf8B5QHxAesB/wHi
-        Ae8B6QH/Ae0B/AHwAf8B3AH2AeYB/wHAAfkB0wH/AU8BnQFTAf0DNgFZHAADDAEQA1gBwAEfAbsBRAH/
-        ASQB0wFcAf8BIQHNAVsB/wEoAcABOwH/ASUBlwEAAf8BJQGbAQAB/wEmAZgBAAH/AToCPgH4A0gBhgMD
-        AQQMAANEAXoBvQFWAUwC/wHeAb4C/wHxAdkB/wHCAbQBowH/AUMBSQFEAf8BgQGnAcAB/wEMAUgBpwH/
-        AksBawH/Ae8B2wHJAf8BfgF2AXQB+gMtAUUQAAIrASwBQwEEAYIB8AH/AY8B2QH+Af8BwgHqAv8BwQHl
-        AfgB/wHRAacBjAL/Ad4BuQL/AdwBtgL/AdkBsAL/AdUBqAH/AfMBpAFhAf8BpgGqAa4B/wE8AbYB/gH/
-        A0oBjQQAA04BmQG3AeABwAH/AfQB/wH0Af8B7AH9AdYB/wFtAYcB2wH/AVkBXgHbAf8B0AH7AcUB/wHp
-        Af8B7AH/Ac0B8gHUAf8DWwHZAwcBChgAAyYBOAJXAVwB3wEAAQsBqAH/ARQBrwFCAf8BIwHVAVUB/wFB
-        AeYBgwH/AUAB6wGHAf8BKAHBAT0B/wElAZ0BAAH/ASMBjQEAAf8BAAFcAacB/wEPAT0BrAH9A1UBugMV
-        AR0IAANVAbIB0gFoAVQC/wHlAcMB/wHwAdoBwgH/AekB2QHCAf8BsAKnAf8BjAG/AegB/wEIAa8C/wEA
-        AWQB0gH/AV4BYgGiAf8BYgJYAe8DEgEZEAADOAFeARQBkQH8Af8BngHeAv8ByAHrAv8BxQHgAe4B/wHm
-        AbsBmwL/AeUByAL/AdYBsAL/AZEBPgL/AaYBWwH/AdUBXwEtAf8BmwHbAfoB/wE3AbUB/gH/A0EBcgQA
-        Aw8BFAFaAV4BWgHVAaIB0gGgAf8BbQHDAbYB/wEXAV4BuQH/AQoBTAG5Af8BLgGwAZUB/wFtAdMBjQH/
-        AV0BYwFdAfADKQE+GAADQQFzAjMBYgH2AgAB9wH/AQABDgHLAf8BPwHEAVAB/wGLAfsBqAH/AWEB/gGf
-        Af8BPgHqAYMB/wEpAdYBZQH/ASUByAFFAf8BIwGgAQUB/wEAAWoBnAH/AQABZAL/AQABNAHOAf8DVwHf
-        AzABSwMBAQIBYQJcAdwB4wGRAWYC/wHtAcoB/wHnAc8BtgH/AeUB0AG6Af8B2gHEAbYB/wFFAW4BpwH/
-        AV0B2QH3Af8BHAHOAv8BAAGaAewB/wEcAUABUwH9A1EBpwMGAQgMAANEAXkBJQGYAv8BrAHjAv8BzwHu
-        Av8ByQLNAf8B8wHaAcUC/wHxAeIC/wHrAdYC/wGuAWYB/wHYAYYBUgH/AScBFwFuAf8BYwGqAeEB/wEz
-        Aa0B+gH/AzgBXAgAAxkBIwFIAmIB9gFqAbQB3QH/Ab0B1AHfAf8BwgHXAd8B/wFWAZ4BywH/AQ4BZwFs
-        Af8DTQGWHAACMQGIAfgCAAL/AgAC/wIAAdkB/wFHAYsBagH/AaYB+QGgAf8BYQH/AaAB/wE6AeYBggH/
-        ASsB1QFeAf8BJQHNAUcB/wEQAaIBQAH/AQABagHEAf8BAAFcAv8BAAFmAv8BAAFDAeQB/wNYAcADHwEs
-        AWgCQgH1AfMBrQGLAf8B+wHlAcUB/wHRAbkBpAH/AcYBsgGgAf8B7QHYAcEB/wHMAb4BuQH/AUcBiwGz
-        Af8BXQHdAfMB/wE3AfAC/wEAAcUB+wH/AQYBUQF/Af4DWAHGAxUBHQgAA04BlAE3AZ8C/wG7AegC/wHW
-        AfAC/wHOAcIBtgH/AfsB8AHmAv8B9gHtAf8B/QHxAeMB/wHuAc0BrwH/AVQBRQGTAf8BAAECAbsB/wEA
-        AQUBrQH/AQABEQG1Af8CVwFaAcUIAAM6AWEBTwGoAbkB/QG0Ac8B5QH/AeYB6gHxAf8B7AHuAfYB/wG8
-        AckB3QH/AToBlgHMAf8DWQHSAx8BLAMSARkDBAEGAwQBBgwAAg8BuAH9AgAC/wIAAv8BEgEQAf4B/wIA
-        AccB/wERAUwBZAH/AUwB5wFeAf8BRAH6AYEB/wEmAccBPgH/AQMBlAFQAf8BAAGbAdQB/wEAAZ4C/wEA
-        AVwC/wEAAV4C/wEAAVoB+AH/A1kBxwM6AWIBfwE3AS8C/gHBAZkB/wHeAcgBrgH/AcUBrgGaAf8B0AG/
-        AagB/wHTAcIBrQH/Ad8BzQGzAf8BuAGgAZsB/wE0AVkBmwH/AVUBzgHrAf8BSQH9Av8BAAHdAv8BAAFc
-        AawB/wNeAdoDJQE3BAACUwFVAbABTQGrAv8BywHtAv8B4AH0Av8B1QHAAa0B/wH+AfsB+AL/AfsB9wH/
-        AfMB8AHsAf8B0wHOAcwB/wFKAVIBtwH/AVYBbgHxAf8BLgFFAdsB/wEtAUIB2gH/AlgBXAHRCAABUAJS
-        AaMBngHZAfQB/wGyAeAB+gH/AaoB2gH2Af8BnQHUAfUB/wGVAdEB9QH/AWoBzQH3Af8CUwFhAfEBXAJX
-        Ad8BYgJYAekBXgJbAdkBXgJaAdgDUwGwAygBPAQAAh4BnQH7AgAC/wI/Av8CgQH+Af8BTQFKAf0B/wED
-        AQAB3gH/AQABJQGIAf8BIwGkATgB/wEGAZwBhwH/AQABowHsAf8BAAHMAv8BAAHHAv8BAAGcAv8BAAFl
-        Av8BAAFSAfQB/wNYAcYDTgGZAboBPQEqAf8B8wHAAZgB/wHWAcIBpAH/AdABuAGeAf8BxgGVAY0B/wHL
-        AYcBjQH/AccBgwGNAf8B1QGQAZQB/wHUAYIBkwH/AVcBTAGbAf8BSQGzAd4B/wFSAfYC/wEJAd8C/wE0
-        AWQBpwH/A1wB3AQAAlgBWwHLAWQBuQL/AdwB8wL/AeoB9wL/Ad0BxgGyAf8B8wHfAdAB/wH1AeUB2AH/
-        AfYB6QHeAf8B+AHtAeQB/wG+AbYBzAH/ATIBPQG4Af8BlwGfAdMB/wFJAZABvQH9Ax8BLAgAAU0CTgGW
-        AbIB3gHyAf8B2wH3Av8B0QHvAv8BuAHmAv8BoAHfAv8BhgHXAv8DWQHsAZUBaQFcAfgB/wHpAcAC/wHd
-        AbwC/wHcAbgB/wHcAaUBcAH/AWACWQHrAzABSwIvAbgB/QJqAv8CkgL/AmsC/wJhAv8BWQFXAv8BHgER
-        AeEB/wIhAV8B+wEAAawB4wH/AQAB9QL/AQAB3gL/AQABwgL/AQABsAL/AQABpgL/AQABbAH7Af8DWQHE
-        A1oCygFSATgB/wHgAb4BmAH/AdMBtQGXAf8B0wGWAY0B/wHxAaIBpQH/Af4BswG0Af8B/gG0AbYB/wH+
-        AbcBuQL/AcQBwgH/AfkBuAG6Af8BgwGAAbgB/wFEAa4B5QH/Aa0B8gHzAf8BawGwAewB/wFTAVUBXQHt
-        BAACWQFdAdIBiwHIAv8B8QH6Av8B9wH8Av8B9gH5AfsB/wHwAeUB3AH/Ae4B4AHVAf8B7QHcAc8B/wHs
-        AdgByQH/AeoB1AHCAf8B9AHwAe0B/wH3AfsC/wFYAWIBaAHpDAADKAE8AXMBiQGaAfoE/wH1A/8BzwHy
-        Av8BtAHyAv8BYgGHAa4B/gFnAlkB8gH5AcwBlwL/Ad4BsgL/AeABuQL/AeEBuQL/AewBvgH/AewBpQFk
-        Af8DVwG9AlgBWwHLAm8B5QH/ApEC/wJqAv8CYAL/AlwC/wFIAUQBhAH6A1ABnQFXAVwBXgHfAQAB6QH+
-        Af8BAAHkAv8BAAHAAv8BAAGxAv8BAAGuAv8BNwFtAY4B9wM6AmICTgHvAb4BYwFEAf8BzAGiAYQB/wHU
-        AY4BhwH/AfcBqwGpAv8BtwGyAv8BtgGzAv8BvgG8Av8BxgHFAv8B2QHXAv8B/AH6Af8B5gGxAb0B/wNe
-        AeUBRwFgAa4B/QEYAVYBygH/A0sBjwQAAxwBJwJTAVUBrQNcAdEDXQHXA14B3QJfAWAB4wJiAWUB6QFi
-        AWMBbgHvAWYBbQGGAfUBYgGMAa8B+wGHAaYB8AH/AYgBqwH1Af8CVAFWAasQAAFGAkcBgAF6AYwBmgH6
-        AdYB5QHuAf8BvAHiAfEB/wFmAYABqgH8AlABUgGjAV8CWgHbAf8B2gGUAv8BzQGZAv8BzgGdAv8BzAGb
-        Av8B1wGcAf8B/gG1AWMB/wNXAb8EAAJPAVEBnAI6AawB/AKDAv8CVQH1Af8CTwFiAe8DMwFSBAADEAEW
-        AVgCWgHAAQABtQH2Af8BAAHPAv8BAAGkAv8BXgFfAWEB4AMnAToEAAFyAisB/AG2AWABSwH/AegBqwGg
-        Av8BxgHAAv8BzwHHAv8B1AHNAv8B3gHXAv8B5gHhAv8B7wHpAv8C+gH/AbMBfwGRAf4DVAGvAwQBBgNA
-        AXACSwFMAY8DAQECLwABAQMFAQcYAAMvAUoBUQJSAaEDUgGpAzkBXwQAA0UBfQHOAYUBcgH+Af8B9AHU
-        Av8B9AHfAv8B9QHdAv8B2wGqAf8BhwFSAUQB9wMxAU8IAAM7AWQCVAFpAe4CWwFeAdADGAEhEAADTAGS
-        ATgBYgGNAfYCVQFXAboDDAEQCAABXAJXAd8BjwFBAUAB/gGzAk4B/QGgAVUBVwH8AZ4BVwFcAfwBlAJf
-        AfsBlAJfAfsBkgFRAWcB+gGUAl8B+wFvAVkBZwHyA0QBfHgAAUcCRgGAAmUBXgHlAaEBfAF2AfoBjgF9
-        AW0B9wFgAlwB1AMzAVKEAANLAY4DWQHDA1cBwgNCAXZAAAMRARcDRAF5A1YBswNYAcYDVwHFA1QBrwM9
-        AWoDDQESEAACVQFXAboBIQEkAZAB+wI+AYIB+AE8AT4BfwH4ATsBPAF+AfgBOgE8AX0B+AE6ATsBfAH4
-        ATkBOgF6AfgCOQF4AfgBNwE5AXYB+AE3ATgBdQH4ATUBNwF0AfgCNwFzAfgCNwFzAfgCIQFiAfsCWQFb
-        AcMMAANTAaoDWAHRA1gBywNaAdUBVAFdAWYB7QFKAV0BbwHzAlcBXwHoA1sB0ANcAc4DWQHSA0QBfAgA
-        AToBbQGHAfcBAAG1AeEB/wEAAasB2gH/AVcCWQHsAxkBIzgAA0MBdwFgAlkB6wJ/AU0B/gGBAakBRAH/
-        AYYBuwFSAf8BiQG2AVMB/wGzAagBbgH/AaIBUQFKAf0DWgHeAzkBXwwAAT0BPwF5AfYBHwE6Ae4B/wEH
-        ASIB5AH/AQIBGwHgAf8BBQEaAdoB/wEDARYB1QH/AQABEQHPAf8BCwEZAdYB/wELARUB0gH/AQABBQHB
-        Af8BAAECAb0B/wIAAbkB/wIAAbUB/wIAAa8B/wIAAbkB/wI4AW4B9wwAAbIBqwGsAf8B2wHSAdEB/wHi
-        AcwBwgH/AYUBowHeAf8BVgHSAv8BZAHpAv8BXgGtAfIB/wHaAcYBwgH/Ad8B1QHUAf8BvAK2Af8DVQG1
-        CAABQgFqAXkB9AEAAegC/wEAAe4C/wEAAYMBtQH/A1wB3ANKAYsDAwEELAABUgJQAaQBqgJ/Af4B/wHv
-        AeUB/wHdAfgBzwH/Ad8B9QHOAf8B5gH1AdYB/wHpAfoB3wP/AfoD/wH5Af8B6wHIAbkB/wFqAkEB+QNE
-        AXoIAANVAbUBGwEuAdsB/wEAAQ0B5AH/AVQBYwHRAf8BqwGvAdAB/wGpAa4B2QH/AbMBtwHgAf8BnAGf
-        AccB/wGaAZwBxAH/AbQBtgHcAf8BrAGuAdMB/wGvAbABywH/AWEBYwG6Af8CAAGkAf8CAAGrAf8CVgFY
-        AcEMAANRAaADVQGtA1ABnQNVAbUBWAGoAb8B/QFpAbcB5wH/AVkBYAFjAesDVAGmA1UBrQNSAakDKAE8
-        CAABWgJdAdMBAAHaAfQB/wEAAdkB9wH/AQABzAH6Af8BAAG4AesB/wEpAUMBagH5AzgBXCgAA0sBkAHG
-        AZoBbQL/Af0B4wL/AeoBzgL/AeABwgL/AdwBuwL/AdwBuQL/Ad0BvQL/AeABwwL/AeoB0QP/AfYB/wH9
-        AeQB1AH/AWoCQQH5AzgBXQQAAysBQgEoAS4BkwH7AQUBIQHqAf8BbQGIAdcB/wH5AfUB2QH/AfgB9gHq
-        A/8B+wH/AlsBTwH/AlABRQP/AfkB/wL6Ae8B/wL7AeIB/wGNAY8BxQH/AgABtQH/AgABkwH/AzIBURgA
-        AzMBUgF5AXUBdgH6AaUBmgGcAf8DVAGuGAADJAE1AVcBXwFkAegBAAHbAfQB/wEAAdoB9gH/AQAB7gL/
-        AQABmgHUAf8BSQFOAVkB8gNLAZADIwEzHAADJgE4AXkBXAFDAfgBvwHTAY4C/wHbAbIC/wHPAZwC/wHK
-        AZMC/wHIAY8C/wHJAY4C/wHLAZQC/wHSAZ8C/wHWAakB/wHuAdUBqwL/AfgB4QH/AfIByAGtAf8DWAHd
-        Aw0BEgMEAQUDUwGqARoBLQHeAf8BFwEuAegB/wHWAdgB5QH/AfoB+QHyAf8C/QH+Af8C1QHXAf8C0gHT
-        Af8C/QH+Af8C+gH1Af8B4QHiAeUB/wEeASEBvAH/AgABtQH/AlYBWAG5AwkBDAwAAzEBTwNWAbYDVwHo
-        AXEBdQFwAfoBswGrAaYB/wGGAmkB/wNYAdEDEAEWGAADJAE1AVkBYgFpAesBAAHhAfkB/wEAAdAB9QH/
-        AQAB1AH+Af8BAgHBAfEB/wEWAUEBmQH9AVIBVQFdAe0DUQGnA0oBiwMkATUQAANVAbIBbAGPATMB/wFo
-        AaMBPAH/AfgByQGNAv8BwAFuAv8BugFlAv8BuQFhAv8BuwFkAf8B1AGvAVIB/wFwAZgBMgH/AeEBvQFs
-        Af8B7QHHAY4B/wGoAbIBYAH/AWYBqQFHAf8BlgFPAUAB/QM9AWoEAAMqAUECQgF7AfUBBAEgAe0B/wFm
-        AYMB6AP/AfcF/wO8Af8DtQf/AfwB/wGQAZQB1QH/AgABwAH/AToBOwF7AfgDMQFOEAABZQJkAfEB4wHa
-        AdsB/wHzAesB6gH/AekB7AHkAf8B2wHQAc4B/wHLAbgBuQH/AY4CgQH/A1gB4wM9AWoDAQECFAADJgE4
-        AVQBYgFoAe0BAAHiAfkB/wEAAdMB8wH/AQcB5QH9Af8BDwHmAv8BCQGvAfIB/wEAAVcBxgH/AQABTAG+
-        Af8BWAFaAVwB5wM4AV0MAAFiAlUB6gE7AYIBGQH/ARIBWgEAAf8BbAGJASUB/wH1AbMBVAL/AbEBTwL/
-        Aa4BSwL/AbMBUQH/AYYBigEjAf8BAgFUAQAB/wFnAYYBIQH/Af0BxQGDAf8BnQGcAT8B/wFSAZEBKwH/
-        AcYBnAFfAf8DUwGwCAACVAFWAasBIQEzAd4B/wE8AVAB9QH/Ae0B7gH8Bf8DjAH/A28F/wHqAesB/gH/
-        ASEBKAHfAf8BAQEKAcAB/wJVAVcBtwMBAQIQAAF6AnYB+AHtAuAB/wHiAtYB/wHnAdwB3gH/AdkBygHL
-        Af8B1ALDAf8B5QLUAf8ByQK6Af8BUAJLAf0DVwHCAyEBMBQAAykBPwFOAWIBaAHvAQAB4wH6Af8BAAHO
-        AfIB/wESAeQB+wH/ATQD/wE+AeoC/wFWAeQC/wEPAYoB5wH/ATcBPQFtAfcDRgGACAABgwFbAUEB+QEp
-        AV0BCAH/ARMBSAEAAf8BEAFHAQAB/wGxAZEBLgL/AbMBTgL/AbQBUAL/AbgBUwH/AVoBZwEVAf8BFQFL
-        AQAB/wEaAUwBAAH/AaoBkwE1Af8B5QGwAVgB/wHJAbIBYwH/AewBugGKAf8DVwHFCAADJwE6AkEBjQH5
-        AZ4BogH9Af8Czwb/A2YB/wNUBf8CpwL/ARYBFwH+Af8BJgEoAagB/QMvAUkUAAGAAn0B9wH5AvIB/wHy
-        Au0B/wHxAu4B/wHcAs8B/wHPAr0B/wHUAsUB/wHhAtIB/wHvAuIB/wGYAo0B/wNRAaEYAAMtAUYBTQFi
-        AWsB7wEAAd0B9AH/AQABxwHwAf8BEQHgAfYB/wFJA/8BjgP/AY8B9gL/ASMBowH5Af8BOgFCAVoB9QMv
-        AUoEAAGMAV8BMgH7ASEBSAEAAf8BEgE0AQAB/wFgAV4BFAH/AeMBqQFHAv8BtwFWAf8B2wGjAUUB/wG2
-        AY4BMgH/ATEBQwEAAf8BFgE2AQAB/wEZAToBAAH/ATIBSAEAAf8BngGDASsB/wGjAY8BOAH/AbsBlwFO
-        Af8DWQHHCAADAgEDAlABUgGjAXABggHnAf8BvQG8Av8C+wL/AkUBQQH/AjcBMgH/AvYB/gH/Al4C/wEh
-        ASIB4gH/A1UBsgMFAQcUAAGBAoAB9wH+AvwB/wHsAuYB/wHvAuoB/wHdAtEB/wHOArwB/wHTAsQB/wHV
-        AsYB/wHtAt8B/wG6Aq0B/wNSAakcAANIAYQBAAGoAdoB/wEAAesB/QH/AQAB5AH0Af8BDwL+Af8BQAP/
-        AZID/wGbA/8BDAFtAeEB/wNbAdADDwEUAXUBWAFIAfYBhQFnASAB/wG3AYoBLAH/AfUBrgFMAv8BvgFj
-        Af8B2wGsAVwB/wFKAU8BGwH/ATcBRgETAf8BPQFHARUB/wE0AT0BDAH/ASUBLwEAAf8BLwEwAQAB/wI3
-        AQAB/wE2ATwBAwH/AZIBYAEpAf8DVQG0DAADJAE2AkwBdwHzAbIBtAH+Af8C3wL/AmYBYAH/AmEBVQH/
-        AsAB/AH/AU0BTgH+Af8BPgE/AYYB9wMqAUEYAAOAAfcB2ALKAf8ByAK3Af8B6ALgAf8B3wLTAf8BzAK5
-        Af8B0gLBAf8B1QLEAf8B5gLWAf8BrQKfAf8DUQGnHAACWwFgAdYBAAHKAfkB/wEAAeAC/wEAAe8C/wEA
-        AfwC/wEOA/8BNQH6Av8BhgP/AVsB4AL/AQcBSwGTAf4DSgGMAV4CWwHZAbEBiwEyAf8B7QGqAUUC/wHK
-        AYwC/wHeAbcB/wHgAdIBuQH/AZ8BpgGPAf8BoAGnAY8B/wGoAasBkwH/AaYBqQGQAf8BlQGZAW0B/wFd
-        AWEBOwH/ARgBKAEAAf8BIAEwAQAB/wGqAWEBMAH/A0MBdwwAAwMBBANQAZ0BggGFAeUB/wHJAcgC/wLm
-        Ae8B/wLmAe0B/wKWAv8BQgFEAeMB/wNTAaoDBgEIGAABgAJ/AfcBzQK7Af8BwwKyAf8B7wLqAf8B3gLS
-        Af8BxgKzAf8B0AK+Af8B0QLAAf8B4gLRAf8BqQKaAf8DUQGnHAABVQJXAboBAAHHAfMB/wEAAdEC/wEA
-        AdoC/wEAAfUC/wEOAdgB8QH/AUIBWQF3AfUBMwGoAbwB/QFUA/8BAwGCAegB/wNOAZQBRwJGAYEBnQFl
-        AS0B/wGlAbUBbwH/AfkB7gHaAv8B8AHhAv8B9gHqAf8B8QHuAeAB/wHCAc8BuAH/AcYB0QG6Af8BzQHV
-        AbwB/wHEAdABtwH/AboBzQG1Af8BhQGoAYYB/wFmAYABKQH/AWQCWQHsAxIBGRAAAyUBNwJTAXQB8QG+
-        AcAB/gH/AtcC/wHJAcgC/wGOAY8C/wFDAUUBeQH2Ay0BRRwAA4AB9wHvAugB/wHwAusB/wH+Av0B/wHZ
-        AswB/wG+AqgB/wHHArQB/wHNArsB/wHfAs0B/wGmApcB/wNRAaccAAMQARYBWQFgAWoB6wEAAdMC/wEA
-        Ac8C/wEAAegC/wElAX8BsgH+A1kBzwExAV0BiwH4AQABswHzAf8CVwFaAb0DDQESAw0BEgFcAlcB3wG9
-        AccBlQH/AcwB6QHRAf8B5QHpAdgB/wH4AfQB6QL/Af0B+AH/AdkB6AHWAf8BvgHYAb4B/wHAAdgBvwH/
-        AcMB2QHBAf8BwAHfAcoB/wG3AdgBqwH/AZABfAFFAf4DRAF5GAADUAGeAYwBkAHlAf8CzAL/AbUBtAL/
-        AWkBbAHkAf8DVAGuIAADbAH1Af8C/QH/AfYC7wH/AeQC2wH/Ad4C0wH/AdMCxQH/AcQCsAH/AcECqwH/
-        AdYCwQH/AaICkQH/A1EBpyAAAzkBXwElAXUBnAH6AQAB0QH7Af8BAAHeAv8BAAHBAe0B/wEGAX8BoAH+
-        AQABjQHbAf8CWQFbAcMDBAEGCAADJQE3AWgBWAFWAe8B4AHdAboB/wHbAfgB5wH/Ad4B8AHlAf8B7AH1
-        Ae0B/wHjAe8B4wH/AdUB5wHWAf8B1QHqAdwB/wHbAfYB6QH/AesB8AHPAf8ByQGTAU8B/wFSAlABpBwA
-        Ax0BKgJMAXcB8wHWAdgC/wHMAc0C/wI+AY0B+AMmATkgAAM+AWsDXAHqAcwCxQH/AfAC6AH/AfAC6AH/
-        AegC4wH/AeAC2QH/Ac4CvwH/AdACuQH/AZ0CiwH/A1QBqyQAAzgBXAFXAVwBXQHfAQABsQHpAf8BAAHq
-        Av8BAAHLAfQB/wJaAV0BygMJAQwQAAMlATcBXgJYAd0B4gG3AZ4B/wH4AfcB7An/AfsD/wH6Af4B8gH/
-        AfYB2QG9Af8BjQFdAVwB+ANOAZQgAAMCAQMDTgGUAZMBlwHoAf8BmgGfAekB/wJPAVMBpQMDAQQkAAMJ
-        AQwDSwGPA2IB7wHZAtYB/wH5AvYB/wH6AvcB/wH4AvcB/wHtAuUB/wGXAooB/wNOAZkoAAMNARIDTgGU
-        AUwBXQFuAfACWgFdAcoDDQESGAADCQEMAUcCRgGAAV4CWwHZAYABZAFZAfUBnQGIAWQB+wGSAX8BagH5
-        AWQBXAFVAeoDVQGyAycBOigAAxsBJgJaAV8B2wJaAWEB5AMiATIwAAMVAR0DUAGeA24B9QOHAfkDXwHj
-        A1kBxwNMAZMDFgEfCAABQgFNAT4HAAE+AwABKAMAAUADAAEgAQECAAEBAQABAQYAAQkWAAP/AQAB8AEf
-        BgAB4AEPBgAB4AEPBgAB4AEPBgAB4AEPBgAB4AEPBgAB4AEPBgAB4AEPBgAB4AEPBgAB4AEPBgAB4AEP
-        BgAB4AEPBgAB4AEPBgAB4AEPBgAB4AEPBgAB4AEPBgAB+AEPAv8B/gF/Av8B8AEHAv8B/gF/Av8B8AED
-        AfkBzwHgAQ8C/wHgAQEB+AGPAeABBwIAAeABAQHwAY8B5gFHAgABwAEBAfABBwHmAUMCAAHAAQAB4AEH
-        Af4BBwIAAcABAAHiARMB8AEHAgABwAEAAcIBMwHgAQ8CAAHAAQABxAETAeABHwIAAcABAQGEARkB4AFv
-        AgAB4AEDAYgBCQHiAWcCAAH8AQ8CAAHgAUcCAAHAAX8C/wHwAQcCAAGDAb8C/wH8AT8C/wHPAb8C/wH+
-        AX8C/wH4AT8BxwHjAeABBwF/Af8B4AEDAcEBwwHAAQMBPwH/AYABAQHAAQMB4AEHAY8B/wGAAQEB4AEH
-        AYABAQGDAf8BgAEBAeABBwGAAQEBwQH/AYABAQHgAQcBgAEBAcAB/wGAAQEB4AEDAYABAQHgAT8BgAEA
-        AcABAQGAAQEB8AEfBAABwAEDAfgBDwQAAcABAwH8AQcEAAHgAQcB/gEDAQABAQH4AR8B4AEHAf8BAQGA
-        AQEB+AEfAfABDwH/AYEBwAEDAfwBPwHwAQ8B/wLAAQcB/AE/AfABDwH/AfAC/wH8AT8B+AEfAf8B/AHg
-        A/8BwgEDAf8B4QHgAT8CAAGAAQEB/wHgAcABDwIAAYABAAH/AcABgAEHAgABgAEAAf8BgAEAAQMCAAGA
-        AQAB/wGBAQABAwIAAYABAAH/AQMBAAEBAgABgAEAAf8BAwQAAYABAAGOAQcB4AQAAQEBDAEPAfwEAAED
-        AQABHwH+BAABAQEAAT8B/wEBAwABAQEAAT8B/wEDAwABAQHAAWMB/wGHAwABAwHAAQMB/wHHAwABBwHg
-        AQMC/wIAAQEBDwHwAQ8CAAL/AZ8B/wGAAQECAAHjAf8BhwH/AYABAQIAAcEB/wGBAf8BgAEBAgABwAH/
-        AcAB/wGAAQECAAGAAX8BwAH/AYABAQIAAYABPwHAAf8BgAEBAwABHwHgAT8BgAEBAwABDwHwAR8BgAEB
-        AwABBwH4AQ8BgAEBAgABDAEHAfwBDwGAAQECAAEeAQMB/AEHAYABAQIAAT8BgQH+AQMBgAEBAgAB/wHA
-        Af8BAwGAAQECAAH/AfAB/wGBAYABAQIAAf8B+AH/AcEBgAEBAgAD/wHhAYABAQT/AeABAwGAAQEBgAEB
-        AYABBwGAAQEBgAEBAwABAwIAAYABAQMAAQECAAGAAQEDAAEBAgABgAEBAwABAQIAAYABAQYAAYABAQYA
-        AYABAQYAAYABAQYAAYABAQYAAYABAQYAAf8BwwEAAQEBAAEBAQABAQHhAYcBAAEBAQABBwEAAQEB4AEH
-        AQABBwEAAQ8BAAEHAfABDwEAAX8BAAH/AQABfwHwAQ8BAAEPAYcB4QHgAQcB/gEHAQACAwLAAQMB+AEH
-        AQACAQKAAQEBwAEHBgABgAEHBgABgAEHAgABgAEBAgABgAEHAgABwAEDAgABgAEHAgAB4AEHAgABgAEH
-        AgAB4AEHAgABgAEHAgABwAEDAgABgAEHAgABgAEBAgABgAEBBgABgAEBBgABgAEBAQACAQKAAQEBgAED
-        AQAB/wEDAsABAwGAAQ8C/wGHAeEB4AEHAYABfwH/AfgCAAHjAf8B4AEHAf8B8AIAAcEB/wGAAQMB4AEg
-        AgABgAH/AYABAQHAAQEDAAF/AYABAQHAAQMDAAE/AYABAQGAAQcDAAEfAYABAQGAAQEDAAEPAYABAQQA
-        AYABBwGAAQEEAAHAAQMBgAEBBAAB4AEBAYABAQEAAQECAAHwAQABgAEBAQABAQIAAfgBAAGAAQEBgAED
-        AgAB/AEAAYABAQHwAQMCAAH+AQEBgAEBAfwBBwIAAf8BAwGAAQMB/wEHAgAB/wGHAcABBwGAAf8CAAHg
-        AQcB4AEHAYAB/wIAAeABBwHAAQMBgAMAAcABAQGAAQEBgAMAAYADAAGAAQABgAEAAYADAAGAAwABgAMA
-        AYADAAGAAwABgAMAAYADAAGAAwABgAMAAYADAAGAAwABgAIAAQEBgAMAAeACAAEBAYABAQIAAeACAAEB
-        AYABAQIAAeABAQEAAQEBwAEDAYABAQHwAfcBgAEBAfABAwHAAQMB8AP/AfABAwHwAQcF/wHhAYABvwGA
-        AQAB4AE/Af8BwAEAAQMBgAEAAeABBwH/AYACAAGAAQABwAEBAf8DAAGAAQABwAEBAf4DAAGAAQABwAEB
-        AfwBAQEAAQEBgAEAAYABAQHgAQMBAAEPAYABAAGAAQEBgAEHAgABgAEAAYABAQEAAQ8BgAEAAYABAAGA
-        AQEBAAEfAeABAAGAAQABgAEDAQABPwHgAQEBgAEAAYABAwEAAT8B4AEBAYABAAGAAQMBAAE/AcABAQGA
-        AQAB4AEHAQABfwHAAQEBgAEAAf4BBwHAAX8BwAEBBP8BwAH/AcABAwIAAv8CAAHAAQMCAAHjAf8GAAHD
-        Af8GAAHAAQEGAAHAAQEGAAHAAQEGAAHAAQEGAAHAAQEGAAGAAQEGAAGAAQEGAAGAAQEGAAGAAQECAAHg
-        AQcCAAGAAQECAAHwAQ8CAAGAAf8CAAHwAQcCAAGAAf8CAAHwAQcCAAL/AgAB8AEHAf8BjwHwAT8C/wHg
-        AQcB/wGHAYABAQGAAQEBwAEHAfABgwIAAYABAQHgAQcB4AEDAgABgAEBAYABAQHAAQECAAGAAQEDAAEB
-        AgABgAEBBgABgAEBBgABgAEBBgABgAEBBgABgAEBBgABgAEBBgABgAEBAgABwAIAAQEBgAEBAgAB4AIA
-        AQEBgAEBAQABAQHgAgABBwGAAQEBAAEBAf8BwAEAAX8BgAEBAYABAQH4AU8B4AUAAfgBBwHgBQABwAED
-        AcAFAAGAAQMBwAcAAcAFAAGAAQABgAcAAYAFAAEBAYAGAAEBCAABAQ4AAYABAQYAAcABAwYAAcABHwYA
-        AfIBHwHgAQcEAAT/AgAC/wHgAQMB8AEPAeABBwHAAX8B4AEAAeABBwHgAQ8BgAEHAeABAAHAAQMCAAGA
-        AQABwAEAAYABAQIAAYABAAGABwABgAcAAYAHAAGABgABAQHgBgABAQHgBgABAQHgBgABAwHgBQABgAED
-        AfACAAEBAgABwAEHAfgBAAGAAQMCAAHAAR8B/AEBAcABBwIAAeABfwL/AeABDwIAAeAB/wH4AR8E/wH4
-        AT8ByAETAf4BPwL/AcABHwGcATkB/AEfAYABBwEAAQ8BBAEgAfwBHwGAAQMBAAEHAQQBIAH4AT8BgAEB
-        AQABAwEEASAB4AFDAYABAQIAAQQBIAHAAQMBgAEBAYADAAGAAQMBgAEBAeADAAGAAQcBgAEBAfABAAEE
-        ASABgAEfAcABAQH8AQABAgFAAYABAwHwAQEB/gEBAgABgAEBAcABAQH8AQMCAAHAAQEBwAEDAfgBAwGA
-        AQEBwAEDAeABBwHwAQcBwAEDAcAD/wHgAQ8B4AEHBP8B4AEPAf8BAwb/AfABAQL/AfgBHwIAAeADAAH4
-        AQECAAGAAwABgAMAAYABAQIAAYAHAAGABwABgAwAAQEDAAEBAwABAQMAAQEDAAEBAwABAwMAAQEDAAED
-        AwABAwMAAQMCAAGAAQMCAAHAAQcCAAHAAQcC/wHwAX8C/wHgAR8I/wGAAT8C/wHAAQcB5wH/AQABHwH8
-        AT8BwAEDAcABAQEAAR8B+AEfAcABAwHAAQEBAAEfAfABDwGAAQcBgAEBAQABHwHgAQ8BgAEHAYABAQEA
-        AR8BwAEDAYABBwGAAQEBAAEfAYABAQGAAQcBgAEBAQABPwMAAQMBgAEBAYABfwMAAQEBgAEBAYABBwQA
-        AYABAQGAAQEEAAGAAQEBgAUAAYABAwGABQABgAEDAcABAAGBAQECAAH/AecB4QEAAsMBAAEfA/8BgQT/
-        AQ8B/wHwAQ8CAAHgAQMBBwH/AeABBwIAAeABAwEBAf8BwAEDAgAB4AEDAQEB/wGAAQECAAH8AT8BAAF/
-        BAAB4AEfAYABDwIAAYABAQHgAQcBwAEHAgABwAEBAeABAwHgAQMCAAHAAQMB4AEDAfABAQIAAcABAwHg
-        AQMB+AMAAeABBwHgAQMB+AMAAeABBwHgAQMB+AMAAfABDwHgAQMB+AIAAQEB+AEfAeABAwH8AQEBgAED
-        AfgBHwHgAQMB/gEDAcABBwH4AR8B8AEDAf8BBwHgAQ8B/AE/AfwBAws=
+        Ad8B8AH/AfoB9AHyAf8B4gGTAVAB/wNWAcEEAAM4AVwCUAFSAaQCWgFdAcoBXwFgAW4B8wLDAd4B/wLO
+        AfQB/wJlAv8CSwH+Af8CMgH3Af8CHAHrAf8CEAHqAf8CXAFgAdQDEAEVCAADZAHsAcgCugH/A1UBsAMW
+        AR4DVQGyAcACtAH/AegC3AH/AfAC5wH/A2AB6wMcAScgAAMDAQQDXgHZAd4B2QHcAf8BoQErARAB/wHA
+        ATYBAAH/Ac8BVQEAAf8B3wFlAQAB/wHnAYIBAAH/AeABaAEAAf8ByQFDAQAB/wG6AVMBNQH/AaEBmQGe
+        Af0DNwFaCAAB0QGfAYMB/wH+Ac4BmAH/Af0ByAGSAv8BzAGRAv8ByQGMAv8BxwGJAf8B/AG+AYIB/wH5
+        AbcBZwL/AbwBYwL/AbkBXwL/AbcBXAH/Af4BswFXAv8BsQFWAf8B7wGQATEB/wNZAcQMAAMHAQoDKgFB
+        AzsBZAJPAVEBnAJaAWAB3gJKAcUB/wJZAd8B/wJWAfQB/wI7Ae4B/wNUAa8MAANCAXQDUQGcAx8BLQNV
+        AbIBwAKwAf8B3gLMAf8B6ALaAf8BzgLBAf8DUwGqJAADEQEXAWQCYAHzAdABugG9Af8BkQIAAf8BrwEY
+        AQAB/wG6ATABAAH/AcQBPwEAAf8ByQFEAQAB/wHIAUQBAAH/AbsBKQEAAf8BvgFiAU8B/wNtAfcDIQEw
+        CAACZAFgAfEBjwFwAWAB/AGOAl8B+wGOAl8B+wGOAV8BWQH7AY4BXwFUAfsBjgFfAU4B+wGOAV8BSQH7
+        AY4BXwFEAfsBjgFfATIB+wGOAV8BMgH7AY4BXwEyAfsBkAFfATEB+wF+ATsBKwH8A0gBhhwAAxQBGwMi
+        ATIDQgF1AlcBWQHCAlkBZwHyAz4BaxQAA1EBnAHFArcB/wHvAt0B/wHeAssB/wHEArcB/wNgAdQDFQEd
+        JAADMAFNAZECiAH+AdwBzgHPAf8BnQJBAf8BrQFKAT0B/wGuAU0BOAH/Aa4BTQE0Af8BrgFNATAB/wGs
+        AUgBLAH/AaEBNAEnAf8BwgGaAZgB/wNiAekDBwEKjAADQgF2A2QB5wNtAfcDZAHsA04BmAMUARwoAAMi
+        ATEDXgHZA2EB7gNhAe4CZQFnAfEDawHzAWwBawFsAfUBgQGAAYEB9wGFAYMBhQH5AY0BiwGMAfsBrgGp
+        AaoB/QNWAbkIAAM6AWEDWQHHA1kBzANaAcoDWgHKA1oBygNaAcoDWgHKA1oBygNaAcoDWgHKA1oBygNa
+        AcoDXAHOA1kBwwM0AVVAAANOAZgDWQHDA1YBvgNWAb4DVgG+A1YBvgNWAb4DVgG+A1YBvgNWAb4DVgG+
+        A1YBvgNWAb4DVgG+A1kBxANEAXwIAANIAYQDbwHzAWcCZgHwAWcCZgHwAWcCZgHwAWcCZgHwAWcCZgHw
+        A2YB8ANmAfADZgHwAXACbwHzA1EBnAgAA2EB7gPiAf8D3QH/A9oB/wPaAf8D2AH/AdgC1wH/A9cB/wPW
+        Af8D1QH/A9UB/wPUAf8D0wH/A+AB/wOZAf8DVwG9DAADLgFHAl4BYQHaAyUBNygAAZkBnQGfAf0BygHN
+        Ac8B/wHLAc0B0AH/AcsBzgHQAf8BygHNAdAB/wHKAc0BzwH/AckBzQHPAf8ByAHMAc4B/wHIAcwBzgH/
+        AcgBywHNAf8ByAHLAc0B/wHIAcsBzQH/AcgBywHNAf8ByQHLAc4B/wGxAbUBtwH/A1sB0AMDAQQDLwFJ
+        A1IBpAHoAuMF/wH7AvkB/wH6AvcB/wH4AvQB/wH2AvAB/wHzAuwB/wHwAugB/wHyAusB/wHsAuUB/wNW
+        AbYDMQFNAwQBBgN9AfcE/wP0Af8D8wH/AfMC8gH/AfEC8AH/AfAB8QHyAf8B7wHwAfEB/wHtAe4B7wH/
+        AesB7AHrAf8B6wLsAf8B6QHqAewB/wHlAuYB/wP1Af8DxgH/A1kBwwgAAxsBJgFUAmIB7wEAAeQC/wJc
+        AWAB1CgAAagBqgGsAf0B7QLwAf8B2QHbAdoB/wHbAd0B3gH/AdsB3QHeAf8B2wHeAd8B/wHbAd4B3wH/
+        AdsB3gHgAf8B2wHeAeAB/wHbAd4B4AH/AdwB3gHgAf8B2wHdAd4B/wHaAdsB3AH/AeYB6AHpAf8B4QHm
+        AekB/wNYAcsDPgFrAW8CbgH1Ad0C1QH/Ad4C1Qb/Av0B/wH8AvgB/wH6AvUB/wH4AvEB/wH1Au0B/wHx
+        AukB/wH2Au8B/wHhAtYB/wHdAtYB/wNxAfYDRAF6A2IB9gP7Af8D6gH/AesC6gH/AeoB6wHqAf8B6wHw
+        AfEB/wHmAekB6gH/AeEB4AHiAf8B4wHlAecB/wHnAewB7wH/AeEB4gHlAf8B3gHfAeEB/wHeAt8B/wLs
+        AesB/wO9Af8DVgHBCAADDgETAVcCXwHoAQAB8QL/ATIBcQGDAfoCTAFNAZEDSQGHA0kBhwNJAYcDSQGH
+        A0kBhwNJAYcDSQGHA0cBgAQAA6gB/QFWAVgBVQH/AhUBAAH/AiEBAQH/Ai8BDAH/AkQBJAH/AkoBLgH/
+        AkwBMQH/AUkBSAEtAf8BPgE/ASEB/wExATIBEQH/ASUBJgELAf8BGwEaAQUB/wIvASkB/wG/AcYBywH/
+        A1oBygNeAc4B9QLpAf8B0QLIAf8BYwJhAf8CtQG0Af8BwgLBAf8BvAK7Af8BvAG7AboB/wG6ArkB/wG5
+        AbgBtwH/AbsCuQH/AbUCtAH/AWMCYgH/AckCwgH/AfgC7AH/A14B2QNlAfYD/AH/Ae0C7AH/Ae4B8AHy
+        Af8B6QHsAe4B/wHaAcgBvwH/AdYBtwGnAf8B2QG+Aa4B/wHSAbYBpwH/AdABuQGwAf8B1QG1AaMB/wHO
+        AaoBlAH/AdYBzQHKAf8B7wHxAfMB/wPAAf8DVgHBCAADGwEmAVkBYAFjAesBAAHoAv8BJwGbAcgB/wG7
+        AbgBuQH/Ac0B2AHRAf8BywHVAdIB/wHJAdIB0AH/AcYB0QHOAf8BxAHPAc0B/wHBAc0BywH/AckB1QHX
+        Af8BnQGkAagB/wQAA6gB/QE9AUABNwH/AwAB/wIzARIB/wI6ARUB/wEcARsBAAH/AjABAAH/AjEBAAH/
+        Ai4BAAH/AiQBAAH/AhcBAAH/Ag8BAAH/AgQBAAH/ARMBEgEFAf8BtgG9AcIB/wNaAcoDYQHmAeIC0AH/
+        AcICsgH/AU0BSgFLAf8BUQFVAVwB/wFYAV0BZAH/AVcBXQFlAf8BWAFdAWUB/wFYAV0BZQH/AVcBXgFm
+        Af8BWAFeAWUB/wFTAVgBXwH/AUoBSAFJAf8BuQGsAasB/wHiAtAB/wNgAesDZQH2A/wB/wHwAvIB/wHr
+        AekB6gH/AdcBswGgAf8B6AG+AZUB/wH1AdEBogH/AfIB0gGnAf8B8wHQAaAB/wHrAcIBmQH/AfUBzQGh
+        Af8B3gGoAWYB/wHTAcMBuwH/AfAB9AH3Af8DwQH/A1YBwQgAAykBPgEVAXIBowH8AQAB6gL/ARYBkQG3
+        Af8BTAFjAT4B/wFIAYgBMAH/AS8BagEOAf8BMAGDAQ0B/wE1AYUBEwH/AS0BaAEQAf8BGgFYAQEB/wFm
+        AZ4BWwH/AakBrAG0Af8EAAOoAf0BNwE6ATUB/wInARgB/wLbAdUB/wK9AbcB/wIcAQAB/wIaAQAB/wIY
+        AQAB/wIQAQAB/wIXAQAB/wIXAQAB/wITAQAB/wIIAQAB/wIYAQoB/wG0AbsBwQH/A1oBygNiAe8BzgK5
+        Af8BzgG/AcEB/wHYAcMBvAH/AeABpwGKAf8B5gGlAYAB/wHpAaIBYQH/AekBnQFZAf8B6QGdAVkB/wHp
+        AaEBYAH/AeYBpgFpAf8B4AGoAYsB/wHZAcEBugH/Ac4BwAHCAf8BzgK5Af8BXwJdAfADZQH2A/4B/wHw
+        AfQB9wH/Ad0BuwGrAf8B7gG3AYMB/wHyAcABhwH/Ad8BswGRAf8B3gG/AaoB/wHeAbIBjgH/AfMBwQGJ
+        Af8B9wHIAZUB/wHUAaMBhgH/Ad4B3AHeAf8B8gH0AfUB/wPCAf8DVgHBCAADHAEoAScBbQGMAfoBAAHo
+        Av8BEwGQAbUB/wFMAWkBQwH/AYMBpQFgAf8BUQGQAUAB/wFSAZABQAH/ARQBXAEAAf8BEgFYAQAB/wEA
+        AUYBAAH/AVUBkgFMAf8BqgGrAbUB/wQAA6gB/QEyAjMB/wExATABIAH/AoEBZgH/AqoBpwH/ApEBhwH/
+        AhEBAAH/ApMBggH/AkMBMAH/AgcBAAH/Ag4BAAH/AgsBAAH/AwAB/wITAQoB/wGwAbcBvQH/A1oBygFl
+        AmQB8QHtAuQB/wLrAfEB/wHlAdEBwAH/AfkBhwENAv8BYAEAAv8BYAEAAv8BYQEAAv8BYQEAAv8BYgEA
+        Av8BYgEAAf8B+gFgAQAB/wHnAcQBqgH/AewB8AH4Af8B6gLgAf8BYQJfAfADZQH2BP8B6gLlAf8B5QGr
+        AYMB/wH1Aa8BWgH/AdgBqgGNAf8B6AHmAegB/wLtAesB/wHkAecB7AH/AdsBrwGSAf8B9QG1AWYB/wHZ
+        AaIBZwH/AdsB1wHYAf8B8wH3AfgB/wLFAcQB/wNWAcEIAANCAXUBAAG4Ae8B/wEAAegC/wEUAZQBtgH/
+        AYcBoQGBAf8BMwGDAScB/wEvAYMBJAH/ASkBZwEaAf8BBQFMAQAB/wEEAUcBAAH/AQABOgEAAf8BVAGQ
+        AU0B/wGqAawBtAH/BAABpQKoAf0BOAE7ATkB/wMAAf8DAAH/AqgBpQH/AqUBnQH/AwAB/wJLAUAB/wK9
+        AboB/wKRAYkB/wIIAQAB/wIBAQAB/wMAAf8BDgENAQkB/wGtAbQBuQH/A1oBygNhAfAE/wHxAe4B8gH/
+        Ad0B1QHPAf8B8AHAAV4C/wG3ATQC/wGmARAB/wH+AaIBAwH/Af4BoQEBAf8B/gGhAQEC/wGfAQAB/wHw
+        AZwBDAH/AdsBzQG9Af8B5AHjAegB/wHyAusB/wFpAWcBaQHxA2UB9gT/AecB2gHWAf8B6gGpAWEB/wHr
+        AacBVQH/AdoBwwG3Af8B8AHtAeYB/wHmAbgBiQH/Ae0B5wHaAf8B2wHAAbMB/wHwAcIBmQH/AeYBuAGV
+        Af8B2gHNAcgB/wH0AfgB+gH/A8YB/wNWAcEEAAMKAQ0CXAFgAdQBAAHhAv8BAAHgAv8BDwGVAcAB/wEi
+        AU8BRQH/ASkBkAErAf8BAAGBAQAB/wEDAYEBAgH/AQsBggEJAf8BCgFeAQYB/wEAAS0BAAH/AU0BiQFI
+        Af8BrAGtAbUB/wQAAaICqAH9AS4BMQEzAf8BAgEBAQAB/wKsAaUB/wK9AboB/wIeAQ8B/wMAAf8COwEz
+        Af8CvgG7Af8CnAGYAf8CAwEAAf8DAAH/AwAB/wEJAQoBCAH/AaoBsgG3Af8DWgHKA18B4AH/AfsB+gH/
+        AfgB9AH1Af8B3wLbAf8B4AHLAasB/wH9AeUBuwH/AfwB4AGzAf8B+wHZAaMB/wH8AdMBlgH/AfsB0AGQ
+        Af8B/gHPAYgB/wHkAcABiAH/AdQBywHKAf8BzQHMAbsB/wHiAdsBzwH/A18B6ANoAfYE/wHuAuoB/wHn
+        AasBgAH/AfYBtAFgAf8B1AGfAWkB/wHjAeIB4wH/AesB4gHQAf8B4QG6AZMB/wHbAa0BiwH/AfcB0wG0
+        Af8B3gGtAY4B/wHfAdkB1wH/AfUB+QH6Af8DyAH/A1YBwQQAA1EBoAEAAZkB6gH/AQAB5gL/AQAB2wH2
+        Af8BLAHmAfwB/wE1AaUB3QH/AUIBggFeAf8BggHEAWkB/wFoAbwBagH/AWgBvQFpAf8BgQHCAYIB/wE7
+        AZEBOwH/AVABjAFMAf8BqgGsAbMB/wQAAZ8BpgGoAf0BJgEpASsB/wFlAWQBYwH/A7gB/wMAAf8DAAH/
+        AgwBAAH/ApUBjQH/Aj8BOwH/AwAB/wMAAf8DAAH/AwAB/wEGAggB/wGoAbABtQH/A1oBygNJAYcByALC
+        Af8B9gHvAe4B/wHqAuUB/wHDAbQBqwH/Ae4B3AHMAf8B7wHiAdQB/wHsAeIB1gH/AesB4wHXAf8B6gHj
+        AdYB/wHqAd8B0AH/AcUBtgGtAf8B4AHXAdkB/wHuAeQB4wH/AccBwAG/Af8DTgGYA2gB9gT/AfcB/QH+
+        Af8B5AHAAawB/wHvAawBYAH/AfEBugGFAf8B2AGkAYAB/wHbAbQBmwH/Ad0BqAGCAf8B5QHGAacB/wHm
+        AbEBjQH/Ad0BuwGoAf8B6AHuAfEB/wH2AvcB/wPJAf8DVgHBBAACWgFeAdUBAAHIAv8BAAHnAv8BAAH9
+        Af4B/wFNA/8BigHuAf4B/wFaAYYBnwH/AbsB0gGwAf8BtwHPAbAB/wG4Ac8BsQH/AbkB0AGyAf8BtgHQ
+        AbAB/wGnAb4BoQH/AaQBpwGsAf8EAAGbAaIBpwH9AScBKwEsAf8CUwFSAf8DvQH/AooBiQH/AioBJQH/
+        AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wEFAQYBBwH/AaYBrgGzAf8DWgHKAwcBCQM9AWgDWAG5
+        A2AB3gGoAaUBpgH9AfkB9wH2Af8B9QH6AfkB/wHwAfoB+AH/AewB+gH5Af8B6AH7AfkB/wHvAvkB/wGL
+        AYMBhAH+A2EB4gNaAb0DQAFvAwkBDANoAfYE/wH5AfoB+wH/AfUC9gH/AeMBuQGiAf8B7AGvAYEB/wH2
+        AcABkQH/AfYBwQGXAf8B9QHLAacB/wHoAbIBjwH/Ad4BuAGkAf8B6wHuAfAB/wHrAe0B7gH/AfcC9gH/
+        A8sB/wNWAcEEAAE5AVgBbgH2AQABxwL/AQAB6gL/AQAD/wFHA/8BlAH3Av8BVwGEAaoB/wLSAc0B/wHR
+        AdYB0QH/Ac8B1AHQAf8BzQHTAc8B/wHMAdIBzwH/AdkC4AH/AZwBnwGiAf8EAAGWAZ0BowH9ATgBOwE8
+        Af8CBgEFAf8DsgH/A9EB/wIpASoB/wMCAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8BAwEEAQUB/wGl
+        Aa0BsgH/A1oBygwAAw4BEwNYAcEE/wH6A/8B9QP/AfID/wHuA/8B+QP/A1wBzAMUARwMAANoAfYE/wP5
+        Af8B+QL7Af8B9wL7Af8B6wHbAdMB/wHnAcEBrgH/AeUBvAGlAf8B5QHBAa4B/wHoAdcB0AH/AfAB9AH3
+        Af8B7gLwAf8B6wLqAf8D+QH/A80B/wNWAcEEAAJXAV8B6AEAAcsC/wEeAY4BrQH8AVgCXwHjAT0B6QH3
+        Af8BiAHyAv8CVgFYAbsDQwF4A0MBeANDAXgDQwF4A0MBeANDAXgDQQFyBAABkQGZAZ4B/QFHAUoBSwH/
+        ASECIAH/A0AB/wM+Af8DKgH/AzUB/wMvAf8DIwH/AhYBFwH/AwwB/wMEAf8DAAH/ARACEQH/AaIBqgGv
+        Af8DWgHKEAADUwGlA/0B/wH+A/8B+AP/AfUD/wHxA/8B+AP/A1UBshAAA2sB9gT/A/sB/wP5Af8B+AL5
+        Af8B+AH9Af4B/wH1AfoB/QH/AfIB9QH4Af8B8gH2AfoB/wHzAfcB+gH/Ae8B8AHxAf8D7QH/A+sB/wP3
+        Af8DzwH/A1cBwgQAA1MBqgEAAckC/wE+AXcBhwH3AlIBUwGoASQBywHtAf8BUwHNAewB/wMrAUIgAAGP
+        AZcBnQH9AUUBRwFIAf8BMQIuAf8CNAEzAf8BMgIxAf8COQE4Af8BOgI5Af8BOwI6Af8CPAE7Af8BPQI8
+        Af8COwE6Af8COAE3Af8BNQIzAf8BLgItAf8BnAGkAaoB/wNZAcwQAANWAasD/QX/AfsD/wH4A/8B9QP/
+        AfoD/wNXAbcDAwEEDAADfAH4HP8D/gH/A/0B/wP8Af8D+gH/A/kF/wPTAf8DVwHCBAADOwFlAT0BZwGC
+        AfcBOwFiAW4B9gEoAU4BfQH6AVQCYQHuAloBXgHVAw0BESAAA38B/gGPAZcBmgH/AVkBXQFgAf8BYAFl
+        AWgB/wFfAWQBZwH/AV8BZAFnAf8BXwFkAWcB/wFfAWQBZgH/AV8BZAFmAf8BXwFkAWcB/wFgAWMBZwH/
+        AWABZQFoAf8BXgFjAWYB/wFnAYEBhQH/AasBtgG8Af8DWQHHEAADVAGvGP8DWAG7AwQBBQwAA1sBywOZ
+        Af4DqwH9A6sB/QOrAf0DqwH9A6sB/QOrAf0DqwH9A6sB/QOrAf0DqwH9A6wB/QOhAf4DYgH1AzsBZUAA
+        AlkBWgHPAYQBhwGIAfsBdAF2AXgB+gFzAXUBdwH6AXQBdgF4AfoBdAF3AXkB+gF1AXcBeQH6AXYBeAF6
+        AfoBdgF4AXoB+gF3AXkBegH6AXcBegF7AfoBeAF6AXsB+gF4AXoBewH6AXoBfgGAAfwDZwHyAzoBYhAA
+        A1EBnAFvAm4B8wNjAe8DYwHvA2MB7wNjAe8BbwJuAfMDUgGnAwEBAjAAAz8BbQFFAUgBdwH2AiEBIgEx
+        IAADBQEHAyMBMwM0AVQDJgE4AwwBEAMCAQNkAAMgAS4DOgFhAzYBWQNFAX8DVgG7A1YBswNAAXADNwFa
+        AzkBXwMcASgwAAM4AV4BMAGiAfgB/wJaAV0BygMXASATAAEBAwYBCAMLAQ8DQQFyA2IB7wFeAlsB2QNV
+        AbIDSAGGAzIBUQMZASMDDQERAwoBDgMHAQoDAwEECAABWQJXAcIBlQFgAVkB+wGKAWQBTQH6AX0CbAH6
+        AX4BbwFwAfoBfgJuAfoBfgJtAfoBfgJtAfoBfgJuAfoBfgFsAWoB+gGQAW4BUAH6AZIBaQFNAfoBlQFf
+        AUUB+wFeAlsB0AwAAwMBBANgAd4CfwF+Af4BhgFRAVAB/QExAV8BuAH/AS0BuQHzAf8BKAGIAc8B/wF3
+        AXABfgH+AY4BgwFXAf0BSwJIAf0DTgGXHAADOQFgA0oBjQFJAkgBhwM3AVsEAAMgAS4BVAFhAWUB7gE4
+        AbkB9AH/A1sByAMWAR4IAAMEAQUDJAE2A0QBeQNMAZIDYQHuAf8B/AH9Af8B/ALrAf8BsQGmAacB/QFn
+        AlkB8gNXAd8DWgHKA1UBsgNQAZoDSAGFAzMBUwMLAQ8EAAHSAWYBPwL/AcQBUgH/Ae8BmgFJAf8B0AHE
+        AccB/wHSAssB/wHTAcoBywH/AdcCzgH/AdYCzgH/AdUB0AHTAf8B1AHCAb0B/wH9AbkBjAL/AZ0BMQL/
+        AZcBEgH/AdwBagEzAf8QAANcAd8BoAGaAZgB/AGMAYQBgwH6AU4BqAG4Af0BZAHkAv8BTgG2AfEB/wKL
+        AY8B+wGXAZQBkwH7AXkCdwH4A0ABcBgAA0gBiAFvAm0B+gGqAqMB/wGKAmAB/wFqAmkB+QJbAVkBwwMo
+        ATwDVAGvAU0B8AL/AR4BZwHEAf8CRQFGAX4IAAMdASoBtQExAQAB/wH0AUkBAAH/AbsBOgEGAf8B8QHM
+        Ac0C/wLzAv8B9wH2Bv8B9AH1Af8B5wG9AbwB/wGgAUYBPgH/AVQBEwEAAf8BSgIAAf8BkgEkAQAB/wNT
+        AbADNgFZBAABnQFlATUB/AH/AbYBTAH/Ae0BlAFJAf8B1AHCAcQB/wHaAUsBMAH/AdcBoAGWAf8B2wHX
+        AdoB/wHcAc4BzQH/AdsB0wHUAf8B2AG+AboB/wHzAZQBVAH/Af4BjgEpAv8BjwEVAf8BtAFTAUAB/QgA
+        AxEBFwMVAR0DKQE/AzMBUgMoATwBUwJVAbABpgHCAd8B/wJMAV0B8wM6AWIDLQFGAy8BSgMYASEDFQEd
+        Aw8BFAwAAykBPgNnAfIBvwG7AbEB/wGsAa0BpgH/AcYCugH/Aa4ClAH/Aa8BmgGXAf8DXgHQAlUBVwG6
+        AVQBqwHVAf4BSgHqAfwB/wNbAcgDCQEMBAABtQExAQAC/wFfAQAB/wHvAV0BAgH/AbsBaQFeAv8B6AHm
+        Av8B5wHoAv8C7wL/AvYC/wL6Bv8C+wH/AfICzwH/AbMBWAFVAf8BaAEoARYB/wGyATABAAH/A0kBiQQA
+        AZsBYQEzAfwB/wG7AVIB/wHvAZsBUQH/Ad0B0QHSAf8B5gErAQgB/wHhAZ0BkQH/AeUB7QHvAf8B5QHf
+        Ad0B/wLmAegB/wHgAcoBxQH/AfIBggE/Af8B/QGNASkC/wGYAR4B/wGzAVIBQAH9BAADSwGQA1wB5wFc
+        AlUB6gFbAlgB4wNbAeEDWgHeA10B8AHNAbkBtQH/AWsBWwFYAfwDWgHkA18B4ANdAeIDXAHnA2AB6wNY
+        AeMDQAFwAxYBHwM3AVsDVQG1AYcBaQGhAf8BUwFOAYwB/wFPAVEBgQH/AboBuAG2Af8BvgGsAasB/wG7
+        AaYBpQH/AcIBrAGiAf8BRAFCAVkB9QEyAYgBmQH7AVMD/wE7AcYB9QH/AkYBRwGABAABtQExAQAB/wH+
+        AWkBCwH/AcoBTwEYAf8B8QHDAbsB/wH8AdMBygH/AfcB0QHPAf8B2gGiAaUB/wHZAZ4BoQH/AasBSgFU
+        Av8C9AL/AvUC/wH+Af0D/wH9Af8BuQFaAVEB/wG1ATEBAAH/A0wBkQQAAZsBYQEzAfwB/wG8AVUB/wHw
+        AaABWAH/AuYB6gH/AeUBlgGHAf8B5wHLAccB/wHtAfoB/gH/Ae0B8QH1Af8B7gH6Af4B/wHmAdgB1AH/
+        AfABWAEpAf8B/QGKAScC/wGcASYB/wGzAVEBQAH9BAABhwKDAfkB8gLwAf8B4gLgAf8B3QLbAf8B3ALZ
+        Af8BzgLMAf8B0wLSAf8B5wLmAf8B7gLsAf8B8gLxAf8B8gLvAf8B9ALxAf8B5AHpAeIB/wHHAeYBygH/
+        AdABywHKAf8DVwHFA1YBswEFAZYB4gH/AQABkAHoAf8BAAGBAeoB/wEAAV0B6AH/ARoBSgG8Af8BrwGl
+        AZ8B/wHOAcABvgH/AcwBuAGyAf8BpwGaAbYB/wEpAWgBzQH/ATsB0AHyAf8BTwH5Av8BVwP/AVEBbQGH
+        AfcDLAFEAbUBMQEAAf8B/gGHAR0B/wHCAV8BTAH/AdUCmQH/AdYBnQGeAf8B1wGhAaMB/wHzAt4B/wH4
+        AuwB/wG2AVoBYgH/Af0B5QHkAv8C7AL/AvMB/wH1Ac8BzQH/AY0BNQEgAf8B3gFBAQAB/wNLAZAEAAGb
+        AV4BMgH8Af8BwAFcAf8B8wGcAVMB/wHoAdIB0AH/AeoB6QHnAf8B6wHfAdwB/wHrAdkB1QH/AesB2QHW
+        Af8B7AHhAdoB/wHnAcEBtQH/Ae8BPgEMAf8B/AGGASIC/wGgASsB/wGzAVEBQAH9BAABsAKtAf0B7gLw
+        Af8B0gLTAf8B1QLWAf8B1QLWAf8BwwLEAf8BzwLQAf8B9AH1AfQB/wHxAvIB/wHxAvIB/wHxAvIB/wPz
+        Af8B6QHuAeoB/wHcAe4B4AH/AeIB4AHfAf8DWQHHAVsCYQHhAU4BcwF5AfQBNQGpAbkB/QEMAbEB7wH/
+        AQUBoQHvAf8BTwGGAagB/wGpAZ4BlgH/AdECxgH/AdsBywHGAf8BvQGnAb4B/wE9AaYB4AH/AVAB/QL/
+        AVEB/AL/AU8B9QH8Af8BRQHbAfMB/wJXAVkBwgG1ATEBAAL/AZUBMQH/AdsBWAEcAf8BywGMAYQB/wHw
+        AcIBvwL/Ae4B6wL/Af0B/AX/AfkC5gH/AbgBWQFhAv8B4wHiAv8B6QHoAf8BswFTAU8B/wGzAWUBNgH/
+        AfIBSQEAAf8DSwGQBAABmwFdATAB/AH/AcUBZgH/Af0BowFKAf8B9wGZAUYB/wH4AZoBRgH/AfgBlwFC
+        Af8B+AGXAT4B/wH4AZQBOwH/AfgBlAE6Af8B+QGPATIB/wH8AYEBIAL/AZEBKAL/AaABLwH/AbMBUAFA
+        Af0EAAGVAowB/AHlAuYB/wHbAtwB/wPfAf8D3wH/A+AB/wHhAuAB/wPgAf8D3wH/A+AB/wPgAf8D4AH/
+        AeEB4AHhAf8B7wHsAe8B/wHhAt0B/wNZAcMDDAEQAy8BSQNdAeIBmwGPAZ4B/wFoAWABiAH/AWgBYgFp
+        Af8BnwKdAf8B1gLNAf8B5AHbAdkB/wH7AeIB2AH/AY8BlAHJAf8BQAHTAfAB/wGAA/8BVQHgAfQB/wJY
+        AWEB5gI0ATUBVQG1ATEBAAL/AaEBRgL/AWUBAgH/AfwBzwGpAf8B4AGoAY4B/wHKAYYBZgH/AeUBrAGp
+        Af8B/gHgAd4C/wH8AfsB/wG5AV4BZQL/AdYBzQH/AfIBwQG8Af8BggEfARQB/wHpAaoBXgH/AfYBSgEA
+        Af8DSwGPBAABnQFZAS0B/AH/Ac4BkwH/AfgB2AG+Af8B+AHXAboB/wH3AdQBtQH/AfUB0gGzAf8B8gHP
+        AbAB/wHxAc0BrgH/AfEByQGrAf8B7wHJAakB/wHsAcwBrQH/AegBxAGpAf8B+wGvAVEB/wG0AU4BQAH9
+        BAABagJnAfQB9wL4Af8D8QH/A/AB/wHuAu8B/wPuAf8B7ALtAf8B6gLrAf8D6QH/A+gB/wPnAf8D5QH/
+        A+MB/wHrAuwB/wHPAsoB/wNVAbEBPQI+AWoBKQFNAYYB+gEFAVQBwgH/AQoBXQHTAf8BAAFMAc4B/wEW
+        AUQBvAH/AagBoAGiAf8B5AHZAdQB/wHxAekB6gH/AbABtgHZAf8BTAFbAb4B/wEhAZoB2QH/AYgB/gL/
+        AZ0D/wFYAWIBYwHvAiEBIgExAbUBMQEAAv8BrgFcAv8BZQECAv8B3AG+Av8B3AG+Af8B/gHZAbgB/wHq
+        AbkBnQH/Ac0BiQFlAf8B2wGdAZkB/wH6AdMB0gH/AbwBXQFhAf8BtgFdAVQB/wGtATUBIgH/AfwBwQGM
+        Af8B9gFKAQAB/wNEAXwEAAGdAVcBKwH8Af4B0wGeAf8B9QL4Af8B/AP/AfwD/wH8A/8B+gH9Av8B+gH7
+        Af0B/wH6AfcB+QH/AfkC9AH/AfkB8gHzAf8B6QHmAeoB/wHyAbMBXwH/AbQBTQFAAf0EAANcAd8I/wH5
+        AvoB/wH2AvcB/wPzAf8B7gLvAf8B6gLrAf8D5wH/AeIC4wH/A94B/wHZAtsB/wPWAf8B3QLeAf8BqAKi
+        Af8DSAGIAVgCXgHdAQ4B3gL/AQMB1QL/AQABugL/AQABogL/AUUBmgHfAf8ByAG0Aa4B/wHpAeAB3QH/
+        Ae4B6QHwAf8BPAGMAdQB/wFOAcwB7wH/AYsB5wH3Af8BlwH9Av8BowP/AZgD/wJZAVwBzAG1ATEBAAL/
+        AbsBiAL/AWUBAhX/AfIC5QH/AdICpQH/AaQBOAFBAf8BywGqAakB/wP2Bf8B9gFKAQAB/wMlATcEAAGd
+        AVcBKwH8Af0B0gGcAf8B9gH1AfIK/wL8Av8B+QH2Av8B9wHyAv8B8wHuAv8B8AHpAv8B8QHrAf8B8AHl
+        AeQB/wHyAbMBXQH/AbQBTQFAAf0EAANXAboB3wLVAf8B4wLZAf8B3ALTAf8B2wLRAf8B2gLQAf8B1wLO
+        Af8B1QLMAf8B1ALLAf8B0wLKAf8B0QLJAf8BzwLIAf8B0ALJAf8B1wLQAf8DXwH7AzQBVAMyAVADNQFW
+        A1UBtQFmAZABoAH/AaQBwgHaAf8BwwHKAdAB/wHLAb4BuwH/AfMB7gHtAv8B/QL/AYYBqAHhAf8BaQHb
+        AfMB/wHEA/8BtwP/AT4BrQHiAf8BQgFZAW4B9QJXAVwB3wG1ATEBAAL/AckBnwL/AbIBYQL/AWUBAgL/
+        AWUBAgL/AWUBAgL/AWUBAgL/AWUBAgL/AWUBAgL/AWUBAgH/Af4BZQECAf8B/gFlAQIC/wFlAQIC/wFl
+        AQIB/wMqAUADBAEFBAABnQFWASsC/AHSAZ0B/wH0AfMB8Qb/AfwB+wL/AfcB9gL/AfQB8QL/AfIB7QL/
+        Ae4B6AL/Ae4B5wL/AfMB7wH/AewB5QHkAf8B8AGyAV4B/wG0AUwBQAH9BAADTAGSAbcCoQH/AcYCsAH/
+        AcECrAH/AcICrQH/AcMCrgH/AcQCsAH/AcYCswH/AcgCtgH/AcsCuQH/Ac4CvQH/AdECwQH/AdkCywH/
+        AdYCwwH/AWQCVwHxAx0BKggAAywBRAJcAUEB+AHsAeEB3AH/AeYB3QHbAf8B5QLaBf8B3wHZAdMB/wFB
+        AUkBXwH7AUMBqAG0Af0B0QP/AdED/wGNAccB6gH/A04BlAMBAQIBtQExAQAC/wHVAbUC/wHVAbUC/wHV
+        AbQC/wHWAbUC/wHVAbMC/wHVAbMV/wG1ATEBAAH/AyoBQAMEAQUIAAGdAVYBKwH8AfsB0gGdAf8B8wHx
+        AfAC/wL+Av8B+QH1Av8B9QHxAv8B8QHtAv8B7gHnAv8B7QHmAv8B7wHpAv8B9gHzAf8B6wLlAf8B8QGz
+        AWAB/wG0AUwBQAH9BAADPQFoAYICfwH+AcoCtQH/AcYCsgH/AcYCswH/AcgCtAH/AcoCtwH/AcsCuQH/
+        Ac0CvAH/AdECwAH/AdMCxAH/AdcCygH/Ad8C0gH/AckCtQH/A1sB4QMMARAMAANKAYwBUwJOAf8BnwKV
+        Af8BtAKzAf8BiAGHAYgB/wNWAbgDQwF3AVUBXAFfAeoB3wH+Av8B5wP/AesD/wFSAW0BhAH3AyQBNgG1
+        ATEBAAL/AeABxwL/AeABxwL/AeABxwL/AeABxwL/AeABxwX/AbUBMQEAAf8BtQExAQAB/wG1ATEBAAH/
+        AbUBMQEAAf8BtQExAQAB/wMdASoDBAEFAwIBAwgAAbEBTAFAAf0B+gHUAaAB/wHyAe8B8AL/Af4D/wH4
+        AfYC/wH1AfEC/wHxAewC/wHvAesC/wHzAe4C/wH1AfMC/wH8AfsB/wHsAuoB/wHgAaUBUwH/AbIBSAE6
+        Af0EAAMmATgDYgH2AcYCsQH/AccCswH/AccCswH/AckCtgH/AcsCuQH/Ac0CvAH/AdACvwH/AdICwwH/
+        AdUCyAH/AdsC0AH/Ad0C0QH/AbACnAH/A1YBwRAAAwEBAgM0AVQDQgF0Az4BbAMxAU8DCwEPAwABAQJZ
+        AVwCyQH5Av8B+wf/AdEB+AH+Af8DWwHIAbUBMQEAFf8BtQExAQAB/wMrAUIDBwEKAwMBBAMDAQQDAgED
+        AwABARAAAdABUgEjAv8B4QGnAf8B9wH6AfMH/wH6A/8B9QL/AfwB8gL/Af4B9gP/AfoD/wH9Bf8B8QH1
+        Ae4B/wHnAbMBXQH/AdMBTAENAf8EAAMQARYDXAHqAcMCrQH/Ac8CuwH/AdACvgH/AdECvwH/AdQCwwH/
+        AdcCxwH/AdsCywH/Ad4C0AH/AeEC1gH/AekC3gH/Ad0CywH/AZgChAH/A0wBkiwAAkgBSQGHATEBXwGP
+        AfsBTQFcAYkB+gFNAVYBhwH6AUkBXwGSAfsBVgFYAWIB7wMBAQIBtQExAQAB/wG1ATEBAAH/AbUBMQEA
+        Af8BtQExAQAB/wG1ATEBAAH/Ax0BKgMEAQUDAgEDIAABVgJUAasBkAFaATIB+wFuAlkB9QFuAlkB9QFu
+        AlkB9QFuAlkB9QFuAVkBTAH1AW4CWQH1AW4CWQH1AW4CWQH1AW4CWQH1AYIBUgFRAfcBkAFWASwB+wFY
+        AlYBuwgAA1EBnAFyAmsB+gGIAnwB+wF5AnIB+gF5AnIB+gF6AnMB+gF7AnQB+gF8AnYB+gF8AncB+gF9
+        AnkB+gGMAokB+wF4AnIB/ANfAeADIQEwGAADIQExA0ABcANQAZ4DKQE/BAADCgEOAxEBFxwAAwQBBQMU
+        ARwDJwE6AywBRAMoAT0DIwE0Ax4BKwMYASIDFAEbAxABFQMMARADCQEMAwQBBgM6AWEDWQHHA1kBzANa
+        AcoDWgHKA1oBygNaAcoDWgHKA1oBygNaAcoDWgHKA1oBygNaAcoDXAHOA1kBwwM0AVUDSgGMA1YBtgNV
+        AbEDVQGxA1UBsQNVAbEDVQGxA1UBsQNVAbEDVQGxA1UBsQNVAbEDVQGxA1UBsQNWAbYDTgGYFAADXgHZ
+        AcUCsgH/Ac8CuwH/A1gBwAMpAT8DWwHLA10B0gMxAU8YAAMfASwCVwFaAcUCWwFgAdYDVwG/A1ABpANK
+        AYsDQQFyAzgBXQMxAU4DLQFFAygBPQMjATQDGgElA2EB7gPiAf8D3QH/A9oB/wPaAf8D2AH/A9gB/wPX
+        Af8D1wH/A9UB/wPVAf8D1AH/A8gB/wPaAf8DmQH/A1cBvQFUAkAB/QG0AWkBWwH/AbABhgFpAf8BtAGI
+        AYAB/wGyAYgBagH/AbEBhgFqAf8BrgGGAWoB/wGtAYUBagH/AawBhQFpAf8BqgGEAWkB/wGpAYEBaAH/
+        AagBggFpAf8BpgGBAWgB/wGnAYMBggH/AawBaAFiAf8BUgFOAUwB9AgAAzoBYgM4AV4DMgFRA2IB9gHm
+        AtIB/wHnAtgB/wHFArQB/wGdAo4B/wHMAroB/wHgAswB/wN/Af4DNwFbEAADAgEDAk8BUQGcASsB3gL/
+        ATkBswHHAf8BGwGNAa0B/wEKAZYB0QH/ARIBfwGtAf4BQgFZAW0B9QJXAV8B6AJaAV4B1QNXAb8DUgGm
+        A0kBiQM0AVQDfQH3BP8D9AH/A/MB/wPzAf8D8QH/A/AB/wPuAf8D7QH/A+sB/wPsAf8D5wH/A5YB/wPQ
+        Af8DzAH/A1kBwwGmAUYBQAH9AfMB2wHOAf8B4AHRAcYB/wHfAc0BwQH/AdoByQG/Af8B2gHIAb0B/wHa
+        AcUBuwH/AdkBxQG6Af8B2QHFAbgB/wHYAcMBtgH/AdgBwQG0Af8B2AHBAbIB/wHWAb8BsAH/AdgBxAG1
+        Af8B5AG8AagB/wFZAVgBVgHyBAADNQFXAa8CnQH/AbgCpAH/AaUCkwH/AccCtAH/AeEC0QH/Ae0C4QH/
+        AewC3wH/AeMC0gH/AdsCzgH/AfQC6wH/AfEC4gH/AVkCVwHCEAADDgETAVcCXwHoAUsB0wH0Af8BswFm
+        AUYB/wHiAakBhAH/AcEBlAFcAf8BpgGYAWcB/wGCAaMBnQH/AUoBsAHMAf8BLgG4AfYB/wEaAbEC/wEO
+        AZ4C/wEAAUwB0wH/A1EBoANiAfYD+wH/A+oB/wPrAf8D6gH/A+gB/wPnAf8D5gH/A+QB/wPjAf8D5AH/
+        A98B/wOcAf8D0AH/A8QB/wNWAcEBpAFFAUAB/QHvAccBnAH/AcQBpQGCAf8B2QGsAWgB/wHzAbcBagH/
+        AfEBsQFhAf8B8gGtAVoB/wHyAakBUgH/AfIBpAFMAf8B8gGgAUYB/wHyAZwBPwH/AfIBmQE4Af8B8gGV
+        ATIB/wH1AZUBLwH/AfYBkAEoAf8BVgJTAfEDDAEQA2QB5wHMArkB/wHdAssB/wHaAscB/wHYAscB/wHp
+        AtwB/wHxAuYB/wH2AuwB/wH2Au0B/wH2Au0B/wH9AvYB/wHdAtAB/wNhAdwDRQF+AwQBBggAAzgBXAEc
+        AakB9AH/AVUBowG0Af8B5AG0AYsC/wHPAcQC/wHWAb0C/wHcAbYB/wH7AcgBnQH/AeYBswGEAf8BxAGg
+        AWMB/wGfAZsBagH/AWcCqgH/AUQBzgL/AloBXAHNA2UB9gP8Af8D7QH/A+0B/wPsAf8D6gH/A+kB/wPo
+        Af8D5gH/A+UB/wPlAf8D4QH/A9MB/wPqAf8DwQH/A1YBwQGoAUQBQAH9AeYBywGuAf8B0AHcAeMB/wHV
+        Ab0BpgH/Af4BvQGAAv8BvAGAAv8BtgFjAv8BsgFcAv8BrgFVAv8BqQFPAv8BpQFJAv8BogFCAv8BnwE8
+        Av8BnwE4Av8BmQEwAf8BWQJTAfEEAANMAZABzAK6Af8B6QLbAf8B6ALbAf8B7QLgAf8B8gLmAf8B3gLR
+        Af8B0ALDAf8B5QLaAf8B/AL0Af8B/QL3Af8B5wLbAf8B2wLGAf8BsQKeAf8DOgFiBAADAwEEA1YBtgE8
+        Ac8C/wGXAZABgAH/Af0B1QG6Af8B9AG7AbkB/wH9Ad4BvwH/Af4B3QG/Av8B5gHLAv8B5wHLAv8B5wHJ
+        Av8B0QGuAf8B0QGgAU0B/wESAYkB0gH/A0oBigNlAfYD/QH/A+4B/wPuAf8D7QH/A+sB/wPqAf8D6QH/
+        A+cB/wPmAf8D5gH/A+MB/wOiAf8D0wH/A8cB/wNWAcEBpwFEAUAB/QHwAdYBugH/AegB8wH6Af8B4QHK
+        AbQB/wH7AbwBgQL/Ab0BggL/AbcBZgL/AbMBYAL/Aa8BWQL/AasBVAL/AacBTgL/AaQBRwL/AaEBQgL/
+        AaIBPwL/AZwBOQH/AVkCUwHxAxUBHQNIAYQBwAKrAf8B5gLXAf8B7ALgAf8B7wLjAf8DYgHvA0IBdAMs
+        AUQDSAGFAYkCgwH6Af8C/AL/AvsB/wH5AvMB/wHwAuUB/wNTAaoEAAMZASMBQgFZAW8B9QFdAckB6wH/
+        AcgBoAFoAf8B/AHTAdEB/wH2AcsBxQH/AfwB4wHKAf8B/QHgAcoB/wGuAaABgQH/AeIBxQGwAv8B3QHF
+        Af8B9AHJAawB/wH4AdgBqwH/A1oB2wMjATMDZQH2A/0B/wPwAf8D7wH/A+4B/wPsAf8D6wH/A+oB/wPp
+        Af8D5wH/A+kB/wPkAf8DkQH/A80B/wPLAf8DVgHBAaUBRgFAAf0B+wHUAaoB/wHjAcMBogH/Ae8BwAGW
+        Av8BwgGMAv8BvgGFAv8BuQFqAv8BtQFkAv8BsQFdAv8BrgFYAv8BqgFSAv8BpwFMAv8BpAFHAv8BpgFF
+        Av8BoAE+Af8BWQJTAfEDYQHkAcECqwH/Ac0CtgH/AeQC1gH/AfMC6QH/Ac0CvQH/AzQBVQgAAwsBDwFr
+        AmYB8wH/AvoJ/wH9AvYB/wNbAcsDAAEBAkEBQgFzASQBoAH9Af8BlQGwAa0B/wHtAcQBpAH/AfUBxwHV
+        Af8B+AHhAdIC/wHpAdsB/wHPAcMBpwH/ASUBpAE2Af8BSwGRAUIB/wHfAbsBrAH/AfUBywG0Af8B+AHO
+        AaAB/wNKAYoDEwEaA2UB9gP+Af8D8QH/A/EB/wPwAf8D7gH/A+0B/wPsAf8D6gH/A+kB/wPoAf8D5gH/
+        A8sB/wPoAf8DxwH/A1YBwQGoAUcBQAH9AecBygGoAf8BwwG4Aa0B/wHXAbUBlgL/AcUBjwL/AcEBigL/
+        AbwBgwL/AbgBaAL/AbQBYgL/AbIBXAL/Aa4BVwL/AasBUQL/AagBTAL/AakBSwL/AaQBRAH/AVoCUwHx
+        A18B4AHSAr0B/wHiAtIB/wHtAuIB/wH4Au0B/wGEAn8B+QMdASkEAAMUARsDVQGyAdgCxwH/Af4C+wX/
+        AZMCkAH7A1EBoAMoAT0DBAEGAlkBXAHJAVQByAL/AbgBpgGFAf8B+QHWAdMB/wHzAcsB2AH/AfcB6wHe
+        Af8B/AHkAd4B/wGBAbEBYwH/AVUB6AGfAf8BRwHbAY0B/wFLAZYBRQH/AesB1gHLAf8CYQFcAdwDKQE/
+        Aw0BEQNlAfYE/wPzAf8D8gH/A/IB/wPwAf8D7wH/A+0B/wPsAf8D6gH/A+oB/wPoAf8DyAH/A+UB/wPJ
+        Af8DVgHBAagBRgFAAf0B6wHWAb8B/wHkAfMC/wHbAcoBuQH/AfsBwwGNAv8BxAGPAv8BwAGHAv8BvAGC
+        Av8BuQFnAv8BtQFiAv8BsgFcAv8BrgFXAv8BqwFSAv8BrQFRAv8BqAFMAf8BWgJTAfEDUgGhAdQCwgH/
+        AfYC7AH/AfIC6AH/AfcC7gH/AdgCyQH/A2AB1gNXAbgDXwHoAc4CuwH/AewC4Qn/AWoCZAHzAx0BKgQA
+        AygBPAEpAU0BmAH6AZUBzgHiAf8B2AG2AZEB/wH3AdMB7AH/AfMB4AHkAf8B/AHuAewB/wHKAdABuAH/
+        AUYBxgFgAf8BVAG6AV0B/wFRAc8BhAH/AUgB6AGbAf8BRgGZAUIB/wNOAZcDLwFKAxkBIwNoAfYE/wP0
+        Af8D9AH/A/MB/wPxAf8D8AH/A+8B/wPtAf8D7AH/A+0B/wPoAf8DiQH/A8kB/wPQAf8DVgHBAacBSAFA
+        Af0B9gHcAb0B/wHnAeAB2AH/AecBzAGwAf8B/gHHAZUC/wHGAZMC/wHCAYwC/wG+AYcC/wG7AYEC/wG4
+        AWcC/wG0AWIC/wGyAV0C/wGvAVkC/wGxAVgC/wGsAVIB/wFgAlMB8QMcASgDXAHRAW0CawHzAeAC0QH/
+        AfcC7wH/AfkC8QH/AegC2gH/AdwCyQH/Ad8CzwH/AewC4wL/Av4J/wHwAuUB/wNYAcEDAQECAk8BUAGb
+        ATQBngL/AbUBvgGqAf8B8gHOAb4B/wH3AdMB7wH/AfwB8wHxAv8B8QH0Af8BVAG6AVUB/wFPAboBVgH/
+        AesB3gHYAf8ByAHSAbkB/wFZAcoBYwH/AT4B7gGVAf8BWQFdAVkB1wM3AVoDKQE/A2gB9gT/A/YB/wP1
+        Af8D9QH/A/MB/wPyAf8D8AH/A+8B/wPtAf8D7QH/A+oB/wOwAf8D3AH/A88B/wNWAcEBqAFJAUAB/QH1
+        AdcBsAH/AdQBtgGYAf8B6AG/AZkC/wHOAZ4C/wHIAZgC/wHFAZEC/wHBAYwC/wG+AYYC/wG7AYEC/wG3
+        AWcC/wG1AWMC/wGyAV8C/wG1AV4C/wGxAVgB/wFgAlMB8QQAAwgBCwNhAdwB0AK7Af8B9QLsAf8B/QL4
+        Bv8C/QL/Av4J/wH0Au0B/wH9AvsB/wHdAtMB/wNAAW4EAAJOAWYB8AGHAc4B/QH/Ac4BuQGSAv8B3QHx
+        Af8B/AHeAe4B/wHeAdsB1AH/AeYC2wH/AcQB0gG2Af8B8QHqAeMC/wHzAfUC/wH3Ae4B/wN/Af4DVQG6
+        AU0BmQFQAfoBWQFdAVkB1wMwAU0DaAH2BP8D9wH/A/YB/wP2Af8D9AH/A/MB/wPxAf8D8AH/A+4B/wPt
+        Af8D6wH/A+IB/wP0Af8DzAH/A1YBwQGoAUkBQAH9AeYB1AG8Af8B0gHaAeAB/wHVAcQBsQH/AfwBzQGd
+        Av8BywGcAv8BxwGVAv8BwwGRAv8BwQGLAv8BvgGGAv8BuwGCAv8BuAFpAv8BtgFkAv8BuAFkAv8BtAFe
+        Af8BYAJTAfEIAANVAbAB3ALLAv8C/QH/AfwC9QH/AesC4QH/AfoC9gn/AWkCZwHyA0QBeQNUAa4DSgGM
+        CAACXQFhAeIBvAHjAeQB/wHpAccBkgH/Ae4B1wHQAf8BSgGcAT0B/wEFAYoBAAH/AQQBgAEAAf8BQQGD
+        ASsB/wHvAd0BzgL/AfIB4AH/AecB4QHCAf8CWQFdAdIDGwEmAyIBMgNbAcgBWAFbAVgBxgNoAfYE/wP5
+        Af8D+AH/A/gB/wP2Af8D9AH/A/MB/wPyAf8D8AH/A/EB/wPtAf8DnQH/A9IB/wPSAf8DVgHBAagBSQFA
+        Af0B8AHhAc0B/wHmAfEB+QH/Ad8B0wHDAf8B/AHSAaUC/wHSAaUC/wHOAZ8C/wHLAZkC/wHIAZQC/wHE
+        AZAC/wHCAYsC/wHAAYcC/wG9AYIC/wG+AYQC/wG8AWcB/wFgAlMB8QgAAxIBGQNSAaMB2wLNAf8DYQHi
+        A0ABbgNkAecB/wL+Af8B/AL5Af8DXAHJFAADLQFFA1UBsgFaAl0BygFZAmQB7AE8AcoBNwH/AT4B3QE8
+        Af8BMQHYASsB/wENAYwBHQH/AY0BrAHFAf8BqgHMAdcB/wFZAmQB7AMxAU8DCAELAwABAQMCAQMDHwEs
+        A2sB9gT/A/sB/wP5Af8D+AH/A/YB/wP0Af8D8wH/A/IB/wPxAf8D8QH/A+0B/wOWAf8DzwH/A9QB/wNX
+        AcIBiQFxAU0B/gH/AfIBzQH/AfoB3gHFAv8B2wG4Av8B4AGyAv8B3gGtAv8B2QGmAv8B1gGiAv8B0wGc
+        Av8BzwGYAv8BzQGUAv8BywGQAv8ByAGMAv8BywGMAv8BxgGHAf8BXwJMAfMQAAMyAVADHwEsBAADSgGJ
+        A2EB4gNWAbEDNQFXIAADIAEuA1sBwwFtAYcBbQH3AVwBYAFcAdQDPQFpAz4BawJBAUIBcwMfAS0DBAEF
+        AwABAQwAA3wB+Bz/A/4B/wP9Af8D/QH/A/sB/wPfAf8D9gH/A9QB/wNXAcIBWQFYAVMB8gFuAk0B+gFs
+        AU0BMQH6AWwBTQEyAfoBawFNATIB+gFqAU0BMQH6AWoBTQEvAfoBaQFNAS4B+gFpAU0BLAH6AWgBTQEq
+        AfoBaAFNASoB+gFoAU0BKQH6AWgBTQEpAfoBagFDAUEB+QFqAisB/ANbAdmAAANbAcsDmQH+A6sB/QOr
+        Af0DqwH9A6sB/QOrAf0DqwH9A6sB/QOrAf0DqwH9A6sB/QOtAf0DpAH+A2IB9QM7AWVMAANWAbMDUgGp
+        AzUBWAMtAUUDHAEnAxcBIAM7AWUBWgJfAdsDQQFzAxoBJAMEAQYYAAMVAR0DQgF2A1UBsgNXAcIDVgHB
+        A1QBqwM+AWsDDwEUHAADEAEWA1sByANkAfEDYgHvA2IB7wNiAe8DYgHvA2cB8gNaAdMDFAEbFAADVgGz
+        AWcCWQHyA18B4ANWAbYDRAF5AygBPAMNARIoAANSAakBAAGWAe0B/wFbAl4B0ANEAXsDNQFWAk8BUQGc
+        AT8BegGJAfcBQgFrAXMB9QM8AWYDKQE+AxcBIAMKAQ0DAgEDDAADQwF3AVwCVQHqAZMBewF6Af4B2gGg
+        AZ0B/wHiAbUBrQH/Ad4BrQGlAf8BywGRAYoB/wFvATQBMwH8A1wB3AM4AV0YAAMEAQYDYAHrA/oB/wPw
+        Af8D8AH/A+8B/wPyAf8D8gH/A1cB3xQAASwCKwFDAYcCagH5Af8B4wHUAf8B7wHAAbMB/wHQAZsBkwH/
+        AX8BawFpAf4BXAFEAUUB+ANaAeQDVwG/A0gBhgMvAUoDEAEWGAADMQFOAQABVAHqAf8BAAEgAfQB/wFU
+        AmEB7gFbAl4B2QEAAYMC/wEAASMB8QH/AVMCZAHxA1MBqgNBAXIDMQFPAyEBMQMNARIIAANQAaMBqAJX
+        Af0B+wLkAv8B6QHmAv8B2QHPAv8B6QHZAv8B6AHWAv8B5wHVAv8B2gHKAf8B3AGaAZEB/wFcAj4B+ANF
+        AX8IAAMEAQYDKgFBAz8BbQNKAYsDWQHrA70B/wO/Af8DvAH/A70B/wO+Af8DrQH/A14B5QNNAZYDQgF2
+        AzABTQMUARsEAAFJAkgBhwHfAawBpQL/AdwBxQL/AdcBwQL/Ad8BzQL/AeEB0wL/AdsB0AH/AfQByAG/
+        Af8B2QGkAZ4B/wGuAV8BXAH/AV8BRAFDAfsDWQHrA1kBxwNOAZQDJQE3CwABAQMOARMBWAJhAeYBAAEQ
+        AfcB/wEAASMC/wEAAUcC/wEAAQcB+AH/AQABWgH4Af8BuQHLAbUC/wHeAa8B/wFpAmQB8QNQAaQDNgFZ
+        AyIBMgQAA0sBkAGqAn8B/gX/Af4B/AL/AekB5wL/Ac0BwwL/AdgByQL/AdoByQL/AdcBxgL/AdoBxwL/
+        AeUB0QH/AfQBtQGnAf8BXAI+AfgDOAFcBAADWgHNA3EB/AG3AbgBuQH/AdAB0QHSAf8BzgHPAdAB/wHa
+        AdsB3AH/AuUB5gH/AeIB4wHkAf8B4gHjAeQB/wHjAuUB/wLlAecB/wHMAdEBzwH/AbsBvwG9Af8CrAGt
+        Af8DbAH8A1kB0gQAA1sByAHyAc0BxAL/AdsBzQL/AdYBzAL/AdkB0QL/AdoB1AL/Ad0B1gL/AeIB2QL/
+        AecB3QL/AegB3gL/Ad8B1AH/AfoBzAHBAf8B4wGtAaYB/wGjAUMBQgH/A1UBsgQAAwIBAwMLAQ8DHQEq
+        AVsCYAHWARkBVQH9Af8BTgFWAf0B/wFAAUsB/AH/AR0BMQH8Af8BAQGUAfUB/wHEAcMBpQL/AdsBpQL/
+        Ae8BxwH/AewBvgGVAf8DUQGnAzMBUgMqAUEBhAJlAfkB/wHwAe8C/wH7AfkC/wHwAe8C/wHvAe4C/wHZ
+        AdEC/wHcAcwC/wHgAc4C/wHYAccC/wHTAcEC/wHUAcEC/wHjAcwB/wHcAZQBhwH/A1wB3AMQARYDrwH9
+        AvgB9wH/AdUB0QHOAf8B0wHQAc0B/wHSAdABzQH/AdEBzwHMAf8BxgHEAcIB/wG3AbYBswH/Ab4BvAG7
+        Af8CzQHLAf8C0QHPAf8BzwHRAc4B/wHOAc8BzQH/A9kF/wNfAfMDHAEoAWECXQHwAf8B4QHaAv8B4AHc
+        Av8B4QHfAv8C4wL/AuUC/wLnAv8C5QL/AeEB4AL/Ad0B2wL/AdsB1QL/Ad0B0AL/AewB3QH/AcYBggFp
+        Af8DTwGbBAADCQEMAzABSwFcAmAB1AEoAZoB/AH/AaUBsAH+Af8BnQGrAf0B/wFlAY0B/AH/AUcBWgH7
+        Af8BEAE9AfkB/wEHAYEB5gH/AZ4BrgGhAf8B/gG+AYMC/wHjAbAB/wGEAW0BaAH3A0UBfQFVAlMBsAHx
+        AbsBuQL/AdwB1wL/AdsB2AL/Ae4B7QL/AfcB9QL/AdQB0QL/AbkBsgL/AcYBuwL/AdgBxwL/AdYBxAL/
+        AdIBvgL/AdYBwQL/AdABugH/AY8CQAH9Az4BawGSApMB+wG7AbABpgH/AbABYQEwAf8BxgGIAUIB/wHG
+        AYABPQH/AcYBZQE4Af8BxAFhATIB/wHEAVsBLQH/AcQBVgEpAf8BwgFRASMB/wHCAUsBHQH/AcIBRwEa
+        Af8BwQE/AREB/wGZATUBFAH/AdIB1AHWAf8DXQHwAT4CPQFqAaUCfwH+Af8B7AHrAv8B5wHoAv8C7gL/
+        AvcB/wH+AvgB/wH8AvMB/wH+AvUC/wHvAe4C/wHqAesC/wLlAv8B5gHiAv8B0gHNAf8BagJBAfkDMAFL
+        BAADQgF2AT8BYgF1AfYBEwFgAv8BjgGmAv8BjAGlAv8BjAGaAf0B/wFiAYgB/AH/ATkBVQH9Af8BGAE+
+        Av8BAAEgAv8BAAFQAfIB/wFIAaQBvAH/AcMBhAE+Af8BywFkASkB/wNWAcEDYgHpAf8B7wHpAv8B5AHc
+        Av8B0gHLAv8B2QHSAv8BywHKAf8B/QGqAa8B/wH+AcABwwH/Af0BrgG0Af8B/gGvAasC/wHWAcMC/wHT
+        Ab8C/wHQAbwC/wHaAcMB/wHMAYYBZAH/A1MBrQGRAZIBkwH7Ab0BrwGhAf8B5gGiAVcC/wG8AYcC/wGu
+        AWUC/wGlAVwC/wGcAVMC/wGUAUwB/wH+AYwBQwH/Af0BhQE6Af8B/QFoATMB/wH8AWEBLAL/AVkBIQH/
+        AcABQgEVAf8BzALQAf8DXQHwAVYCVAGrAfAByQHIAv8C+gL/AfwB/QH/Af4C+gH/AfQB5QHmAf8B5gG+
+        Ab0B/wHdAZgBkwH/Ae8B0gHQBv8B9AH1Av8B8AHvAv8B9AH1Af8B8AK8Af8DWwHhAw8BFAQAAVgCWwHL
+        AVsCYAHWAUIBYgFvAfUBGgGJAcoB/wEIAZUB6QH/AUYBigH+Af8BWgFnAfwB/wENAYsB+QH/AS4BpgHg
+        Af8BHQGLAc4B/wEVAYABxQH/AR4BpgHaAf8BrwGHAVEB/wHfAZcBQAH/Al8BVwHoAYkCagH5Af8B9wHu
+        Av8B6wHiAv8B6QHeAv8B2AHNAv8BqQGqAf8B4gG2AboB/wGnAlUB/QGkAYEBggH+Af0BrgGzAv8BwQG1
+        Av8B1gHCAv8BzwG7Av8B2QHCAf8B3wGeAY4B/wNXAcIBkQGSAZMB+wG9Aa8BowH/AeEBoAFXAv8BuQGH
+        Af8B+QGsAWYB/wH4AaQBXgH/AfgBnQFWAf8B9gGWAU8B/wH2AY4BRwH/AfUBiAFBAf8B9AGBAToB/wHz
+        AWcBMwH/Af0BYAEqAf8BvQFHAR0B/wHNAtAB/wNdAfADXwHjAfwB5wHmAf8B+gHoAeUB/wHmAcEBvAH/
+        AdIBmQGWAf8ByAFqAWgB/wHKAWYBZAH/Ac8BZQFgAf8B0wGDAWcB/wHyAd0B2gb/AvgC/wL+Af8B0gGR
+        AZAB/wNTAbAQAAJdAVoBygGEASIBAAH/AT8BRQE/Af8BGgGLAv8BKwFWAv8BPwGYAcgB/wHvAZwBPgH/
+        AYYBKgEAAf8BagEkAQAB/wGUATIBAAH/AdsBjAEtAf8B1wGVAT8B/wFsAV8BTAHzAZIBYgFfAfsB/wH1
+        Ae0C/wHoAd8C/wHqAd8C/wHYAc4C/wGzAbYB/wHSAbIBswH/AVICQAH3AacCVQL9AcABxQL/AbgBrgL/
+        AdcBwQL/Ac8BuwL/AdgBwgH/AeIBogGSAf8DVwHCAZEBkgGTAfsBvAGvAaMB/wHiAaMBWwL/Ab0BiwH/
+        AfoBsQGAAf8B+QGpAWIB/wH5AaIBWwH/AfgBmwFUAf8B9wGUAU0B/wH2AY4BRwH/AfYBiAFAAf8B9QGC
+        ATkB/wH9AWkBMwH/Ab4BTgEiAf8BzQLQAf8DXQHwAYQCbQH3Ad0BnwGcAf8BsgFMAUoB/wGjATgBNwH/
+        AaYBPQE8Af8BsAFLAUoB/wG4AVYBVQH/Ab8BXwFeAf8BwAFZAVYB/wHOAWkBYgH/AfcB3wHZBv8B9QHz
+        Af8BowFCAUAB/QM9AWoQAAJZAVcBvwGeAUYBCAH/Ab4BhwE7Af8BGAGFAfMB/wEAAUkB/QH/AUYBTwFQ
+        Af8BiwE4AQUB/wFgASoBAAH/AVYBHgEAAf8BVwEcAQAB/wGAAS0BAAH/AY0BPAEFAf8BYAJZAesBbgJZ
+        AfUB/wH0Ae0C/wHqAeEC/wHnAdwC/wHjAdsC/wGwAbIB/wHuAbIBtgH/AdIBsgGzAf8B4gG3AbkB/wH9
+        AagBrQL/AcsBxAL/AdQBwwL/Ac8BugL/AdsBxAH/AdsBlwGKAf8DVQGxAZEBkgGTAfsBuwGuAaIB/wHj
+        AaYBXgL/AcIBkAH/AfsBtQGEAf8B+gGuAWgB/wH5AacBYAH/AfgBoQFaAf8B+AGaAVMB/wH3AZUBTgH/
+        AfYBjgFHAf8B9gGJAUEB/wH+AYYBOwH/Ab8BUgEnAf8BzQLOAf8DXQHwA1cBugHhAbMBtQH/AeEBoQGl
+        Af8BzgGHAYgB/wG9AV0BXwH/Aa0CTAH/AaUCQQH/AaQCPwH/AakBRgFFAf8BqgFBAUAB/wHJAWQBYAH/
+        Af0B7AHqAv8B4QHcAf8BZAJTAfEDHAEoEAACSQFIAYgBzwGIASwC/wHGAWoB/wFJAaUB6QH/AQABgwH0
+        Af8BrgGcAZEB/wG9AaABgwH/Ab0BpAGKAf8BtQGYAWcB/wGdAWIBPQH/AVcBIwEAAf8BhAEvAQAB/wFb
+        AlkBxAFeAloB2AH4AeQB3gL/AfAB5gL/AeMB3AL/AeUB4QL/AdcB1QL/Aa8BsgL/AbIBtwL/Aa0BsQL/
+        AcoBzAL/AeUB5AL/AdgB0wL/AcoBvAL/AdEBvAH/AZQBdAFqAf4DQgF2AZEBkgGTAfsBuwGuAaIB/wHj
+        AasBYgL/AccBlQH/AfsBugGJAf8B+wG1AYMB/wH6Aa4BZwH/AfkBqAFhAf8B+QGgAVoB/wH4AZwBVQH/
+        AfcBlQFOAf8B9gGRAUkB/wH+AY8BRAH/Ab4BVwEtAf8BzAHOAc0B/wNdAfADGAEhA2QB7AH/AeYB6QL/
+        AdQB1wH/Af0BygHNAf8B9QG9AcAB/wHlAacBqgH/AdIBjgGPAf8BvwJhAf8BsAFPAVAB/wGhATUBNgH/
+        AdABigGIAf8B6QGjAZ0B/wNZAcwUAAMcASgBjAFrAU0B+gH3AdMBrQH/AbMBzgHvAf8BWwGxAfcB/wH+
+        AfMB5wH/AegB0QG6Af8B6QHQAbcB/wHrAdEBuAH/AeYBzAG0Af8B1wG0AY4B/wGTAXIBMwH+AzsBZAFJ
+        AkgBhwHdAawBpgL/AfkB8gL/AeUB4gL/AeMB4AL/AeYB4gL/AeMB3wL/AdQB0gL/AdsB2QL/AesB6gL/
+        AegB5wL/AuYC/wHjAd8B/wH9AbcBqwH/AWACWQHrAxQBGwGRAZIBkwH7AbsBrgGiAf8B4wGwAWYC/wHM
+        AZsB/wH8Ab8BjgH/AfsBugGIAf8B+gGzAYEB/wH6Aa0BZgH/AfkBpgFgAf8B+AGjAVsB/wH4AZ0BVQH/
+        AfcBmQFRAf8B/gGXAU0B/wG+AV0BMQH/AcsBzQHMAf8DXQHwBAADOwFlAbQCqAH9Af8B7QHvAv8B3AHe
+        Av8B2gHdAv8B2AHcAv8B1QHYAv8BzQHQAf8B+wHDAccB/wHuAbsBvwH/AeABnAGdAf8BfwJHAfkDPAFo
+        GAADRAF6AfIBxgGbAf8B/QHqAdgC/wHuAeEB/wH+AfsB8wH/AfcB5AHTAf8B8wHYAcEB/wHzAdwBxQH/
+        AfgB5wHTAf8B+AHFAZMB/wNRAaADEAEWAw8BFAFhAlsB4QHzAd0B1wL/Af0B+gL/AesB6AL/AekB5QL/
+        AesB5gL/AewB5wL/AeYB4wL/AeoB6QL/Ae4B7QL/AfcB9gL/Af4B/QH/AaoBUQFQAf0DQwF3BAABkQGS
+        AZMB+wG7Aa4BoAH/AegBuQGEAv8B2AGnAv8BywGaAv8BxQGUAv8BvgGMAv8BuQGHAv8BswGBAv8BrgFn
+        Af8B/gGoAWEB/wH+AaQBXQL/AaQBWQH/AcIBZAE3Af8BywHMAcsB/wNdAfAIAANYAbwB8wLoAv8B9wH5
+        Av8B5wHqAv8B4wHmAv8B5AHnAv8B7QHwAv8B5AHmAf8BrwGhAaIB/QFcAlkByQMvAUogAAJHAUYBgAGQ
+        AX8BdwH4Af4B9QHqAv8B/QH4Av8B/AH4Af8B/gH4AfEB/wH+AfUB6QH/Aa0BjwF1AfwDUAGdAw0BEgMD
+        AQQEAAMpAT8BYwJdAfAB8wHiAd8G/wH5AfcC/wH0Ae8C/wHyAe0C/wHtAekC/wH0AfIG/wL4Af8BqQJ/
+        Af4DUQGiCAABkgGTAZQB+wGzAacBmgH/AcwBnAFOAf8B5gG5AYIB/wHlAa4BYwH/AeUBqAFeAf8B5AGj
+        AVkB/wHkAZ4BVAH/AeMBmgFQAf8B4gGWAUsB/wHiAZIBRwH/AeEBjgFDAf8B5AGOAUAB/wGpAVMBJgH/
+        AskBygH/A10B8AgAAxYBHwFjAmAB6wz/Af4B9gH3Af8BrgGKAYsB/gFdAloB0wExAjABTSwAAyoBQQJW
+        AVUBtAFnAWMBXQHwAewByQGuAf8BbwFoAWcB8gJaAVcBvQE1AjQBVQMHAQkDAQECDAADKgFBAWECXQHi
+        Ad0BrwGuAf8B9wHpAegC/wH9AfgD/wH7Av8B+AHzAv8B8AHtAf8B7ALKAf8BgAJtAfcDSwGODAABsAKx
+        Af0B2wHYAdYB/wG0AaQBlQH/AbsBqgGZAf8BugGqAZoB/wG6AakBmgH/AboBqAGaAf8BuQGoAZkB/wG5
+        AagBmgH/AbkBpwGYAf8BuQGoAZkB/wG4AacBmAH/AbgBpAGWAf8BsgGlAZoB/wLtAe4B/wNfAfMMAANA
+        AW4BtAKrAf0E/wGwApcB/gFdAlkB1wM3AVpoAAMQARYBSQJIAYgBYAJbAdYBbQJlAfQBkgJfAfsBiQJq
+        AfkDXwHoAVYCVQGxAyoBQRAAA2UB5QOUAfsBiQGMAY8B+gGJAYwBjwH6AYkBjAGPAfoBiQGMAY8B+gGJ
+        AYwBjwH6AYkBjAGPAfoBiQGMAY8B+gGJAYwBjwH6AYkBjAGPAfoBiQGMAY8B+gGHAYwBjQH6AYkBjAGP
+        AfoDmgH8A1wByQwAAwEBAgNXAbgDZQHlAT0CPAFoAwMBBDQAAwgBCwJTAVUBsAJMAXAB8wJMAXAB8wJT
+        AVUBsAMIAQuoAAMQARYDOgFhA1UBtANLAY4DAwEEIAADBAEGAwIBAwQAAwEBAgNQAZ0CLgL/AgAB9AH/
+        A1ABnQMBAQIEAAMCAQMDBAEGJAADPQFpA10B1wNSAaFgAAMJAQwDNwFaA1QBqwNcAeoDqAH9AeUC4QH/
+        A38B/gNVAbEDDQESGAADJQE3A0gBhAwAA0IBdAIfAfAB/wIAAc0B/wNCAXQMAAJHAUgBgwMmATgcAAMD
+        AQQDXgHZAbkCtAH/A14B1QMBAQIYAAMNARIDHgErAwMBBAMWAR4CWAFZAd0CVQFcAeoDQgF0AxEBFwMc
+        ASgDNwFaA0QBewMoAT0MAAMpAT4DVAGuA1wB6gKoAacB/QHdAtcB/wH5AfcB+AH/Af4D/wH6Af4G/wGv
+        AqgB/wNZAc8DGQEjEAADDAEQAlEBUgGnAzsBZAMkATUDAAEBBAADOQFfAgABxwH/AgABqwH/AzkBXwcA
+        AQEDJAE1AzsBYwJRAVIBpwMMARAYAANVAbIBogKbAf8BvQK4Af8DSwGOAwABARgAA1cBvQJOAV0B8ANH
+        AYIDIAEuAUUBUgFlAfQBAAGIAfQB/wEAAUMBpgH/A1kBzAFfAlcB6AGZAUcBRgH/AbQCVwH/AVkCWAHy
+        AzgBXggAAWoCZwH1Ad8C0wH/AfoB8QHyBf8B+AH2AfgB/wH3AfUB9gH/AfMB6AHgAf8B8QHLAaoB/wHx
+        AdsBxQX/AccCwgH/A10B4gMtAUYMAAM+AWsDRAF6A0QBeQNCAXQDAAEBBAADMAFLAiEBhAH7AiEBagH7
+        AzABSwcAAQEDQgF1A0QBeQNEAXoDPgFrFAADLQFFAW4CbAH6AccCwQH/A2EB5gMNARIcAAFKAVIBZAH0
+        AQABjAH8Af8BAAFHAawB/wNYAcYBWwJYAekBhQGBAZUB/wEhAb0B/QH/AQABnwHgAf8BnQGSAbEC/wG7
+        AbcB/wH+AasBqgH/AcsBVAFWAf8BYAJBAfkDMAFNBAAB4QLTBf8B/gH9AfsC/wH7AfMB/wH+AfYB5gH/
+        AfsB5AHAAf8B/AHMAZAC/wG0AUoB/wH3AaIBPAH/AeoBxQGrAf8B/QP/AtUB2AH/A1MB8QM6AWIIAANQ
+        AZ0DNQFWA0oBjAM0AVQDPwFtBAADFQEdAloBYQHkAloBYQHkAxUBHQQAAz8BbQM1AVUDSgGMAzUBVQJP
+        AVEBnA8AAQEDOwFkA2EB7gG7ArQB/wG6ArUB/wM6AWIEAAMDAQQDTAGPA0MBdwMbASYMAAMwAU0CVAFh
+        Ae4BIQG1AfYB/wEAAZUB4gH/AWUBgwGnAv8BuwGvAf8B5AHKAccB/wFWAdUB7wH/AYsBrgHKAf8B/gGq
+        AacB/wHwAo4B/wHsAYQBiAH/AcwBWQFcAf8DWwHZBAADVgGrAY8CiQH6AfsB+gHqA/8B3gL/AfcBywL/
+        AeEBpwL/AckBhAL/AbQBTQH/AfcBnAEyAf8B5gGDASUB/wHeAaUBhwH/AfYB9wH6Af8B5QHmAekB/wFf
+        AlgB+QNKAYoDBAEGA0oBigM+AWoDQgF2A0sBjgMyAVAEAAMlATcCWQFgAesCWQFgAesDJQE3BAADMQFP
+        A0wBjwNCAXYDPgFqAkgBSQGICAADDQERA1sBwwGcApYB/wG9ArcB/wHGAr8B/wNaAb0DBAEGA0oBiwNa
+        AcUBtwKxAf8BvwK4Af8DPwFtDAADFAEcAWECWwHhAfYB1wHTAf8BWAHhAfkB/wFSAcUB5wH/AfUBxwHF
+        Av8BwwG7Av8BsgGuAf8B/gGuAa0B/wH7AbEBtAH/Ae8BqwGkAf8B3wGQAYoB/wHoAYMBhAH/AY8BQAFB
+        Af8IAAMpAT8DXAHPAbUBqQGeAf4B/wHsAcsC/wHaAZ0C/wHBAWAB/wH9Aa0BRAH/AfIBmQE3Af8B5AGD
+        ASoB/wHUAVEBEwH/AdABgAFMAf8B6wHfAd4B/wLpAesB/wFRAksB/QNLAZACRAFFAXwDPQFnAz0BZwNP
+        AZcDEgEZAwoBDQJXAVkBwgIAAdMB/wIAAaEB/wJXAVkBwgMKAQ0DEgEZA04BlgM9AWcDPgFqA0IBdAQA
+        AwQBBQNUAawBsAKnAf8BxAK8Af8BwAK4Af8BuAKyAf8DWwHDA14B0AGpAqQB/wHIAsIB/wHJAsIB/wNf
+        AeMDFAEcDAADHAEoAX8BbgFwAf4B/wHkAd4B/wH+AdcB0AH/AfgBxgHEAv8BwQHDAv8BxwHKAv8B0gHT
+        Av8C3gL/AeMB4gL/AdwB1wH/AfEBtgGuAf8BxQFlAV4B/wNfAeAQAAM+AWoDZQHlAeIBxgGyAv8BvwFp
+        Av8BpQE3Af8B7gGRAS8B/wHgAWkBKQH/AdMBUgEaAf8BwwEwAQAB/wG8ATkBHAH/AeEBvQG5Af8B3wHU
+        AdYB/wNbAdADRAF7Az0BZwM9AWcDTwGXAxIBGAMOARMCWgFhAeQBDwEhAv8CAAH0Af8CWgFhAeQDDgET
+        AxEBFwNOAZYDPQFnAj0BPgFqA0IBdAQAAzMBUgGmAp0B/wHDArcB/wHJAsYB/wPTAf8B1wLVAf8BoQKW
+        Af8BvAK1Af8ByQHCAcEB/wGEAoEB+QNNAZEDEgEYEAADBAEGAUoCSQGJAYwBfwGAAfsB9gLVAv8B7gHt
+        Av8B/QH8Bv8B/AH5Av8B8AHtAv8B4AHbAf8B8wHIAcIB/wHTAaEBnAH/AYUBUQFOAf8DOAFcFAADBAEG
+        A0wBkwFnAmUB9AHtAa8BigH/AfABjQE3Af8B3gFgASMB/wHQAVUBKgH/AcQBUgE1Af8BtwFLATkB/wG8
+        AYUBagH/AbgBqAGqAf8DVQG0A0oBigM9AWkDQgF2A0wBjwMsAUMEAAM7AWUCTAFtAfMCTAFsAfMDOwFl
+        BAADKwFCA0wBjwNCAXYCPQE+AWoCSQFKAYkEAANWAbMBvQKyAf8BuwKyAf8ByALGAf8B4gLjAf8B4ALd
+        Af8BqAKeAf8BjQKJAfsDVAGmAxoBJR8AAQEDMQFOA1YBswNkAewByQG3AbEB/wHRAbwBtwH/Ac0BtQGv
+        Af8BjwGHAYUB+wNdAdIDZwHyAdYBygHJAf8BtQGxAbIB/wM5AV8cAAMaASUDWwHGAcUBnwGUAf8BywGc
+        AY0B/wG8AZ8BnQH/AbYBpAGlAf8BtgGpAasB/wG2AaYBpwH/AV8CUgH0AyUBNwJPAVEBnAM1AVUDSgGL
+        AzIBUANSAaMDEQEXBAADFgEeAxYBHgQAAxEBFwNSAaQDMgFRA0oBiwM1AVYDUAGdBAADXAHfAbkBrgGs
+        Af8BiAFlAWYB/wGlApsB/wHsAusB/wG4Aq4B/wGpAZ4BmgH/AUIBWQFnAfUDQgF0AzMBUwI8AT0BaAMj
+        ATQDMwFTGAADAQECAxYBHwMiATIDKAE8AyYBOQMmATkDIwEzA2AB3gT/AcoCwwH/AzYBWSAAA1kBxwG5
+        Aa0BsAH/Ab0BsgG2Af8BugGuAbAB/wG7AqwB/wHIArYB/wN/Af4DQgF2BAADPgFrA0QBeQNDAXgDQgFz
+        AzkBXwNSAaMDLgFHAxEBFwMRARcDLgFHA1EBogM6AWADQgFzA0QBeQNEAXoDPgFrBAADFgEfA1wBzwGL
+        AWUBYwH/AbMCpgH/AbsCswH/Ab4BtQG0Af8BxAGuAasB/wEMAasByQH/AQABywH8Af8BAAGsAewB/wEA
+        AbMB8AH/AQABlAHdAf8BAAGeAecB/wNOAZkMAAMCAQMDFQEdAxYBHwMWAR4DGwEmAyMBNAM1AVcDTwGX
+        A10B1wHCAsAB/gHqAuUB/wNbAcYDDgETHAADVAGrAcICswH/AdACwwH/AckCvAH/AcgCvAH/AdECxAH/
+        AboCrQH/A1cBvQgAAwwBEAJSAVQBpgM0AVQCRwFIAYMDRAF6AzQBVANMAY8DTwGXA08BlwNMAY8DNAFU
+        A0QBegJHAUgBgwI0ATUBVQJRAVIBpwMMARAIAANQAZ0BowGdAZkB/wGkAZIBkAH/AaYBkwGSAf8BtAGr
+        AakB/wEyAbABvQH/AQoB0wHvAf8BDQHWAfMB/wEMAdUB9AH/AQ0B0QHzAf8BDgHVAfYB/wEIAbIB5AH/
+        AlMBVAGsDAADCgENA1cBuANcAeoDYQHuAawBpAGiAf0B0gG4AbYB/wHgAcsBygH/Ae0B2QHaAf8B4gLW
+        Af8DYgHpA04BlgMWAR4cAANCAXYBlAKHAf4B3wLWAf8B1ALLAf8B1ALLAf8B2gLRAf8B2gLPAf8BYgJZ
+        AewDEgEZDAADIwEzA1IBqQI0ATUBVQNDAXcDSgGLA0IBdgM9AWcDPQFoA0IBdgNKAYsDQwF3AzUBVgNS
+        AakDIgEyDAADUAGaAWUBowG2Af8BmwGtAbAB/wGSAcIBwwH/AYEB4gHjAf8BKwF2AaMB/ANAAXEDOwFk
+        AzoBYgM6AWEDOgFhAzIBUBQAA0MBeANiAe8BbQJkAfEDZAHnA2EB2gNbAcQDTgGVAzoBYAMdASoDAQEC
+        HAADKQE+AYECfQH5AfAC7AH/AeMC3wH/AeUC4QH/AekC5gH/AfIC7QH/AX8CYgH7AzYBWRQAAyMBNAJR
+        AVIBpwNEAXsDNQFWAz0BaQI8AT0BZwI8AT0BZwI9AT4BagM1AVcDRAF7AlEBUgGnAyMBNBAAAxwBJwJH
+        AUgBgwFaAl0BygFYAmIB7wFaAl0BygNIAYZsAAMhATADZAHsBP8D+AH/AfQC8wH/AewC6gH/AekC5gH/
+        Ab8CtwH/A08BnBwAAw8BFAM+AWsDUAGdA0oBigNEAXsDRAF7AkkBSgGJAk8BUQGcAj0BPgFqAw8BFJgA
+        A0ABcQGJAocB+QFpAmgB8gNhAeYDYAHWA1gBwQNUAa4DRgF/AwMBBDAAAxEBFwNIAYgDVwG/A1YBwQNM
+        AZMDGwEm2AADBgEIAzEBTwNCAXYDSAGHAlcBXAHfAgABsgH/AgABywH/AgABygH/AgwBmAH/A1wB3AMo
+        ATxYAAMHAQoDRAF6A1IBqQNFAX0DJgE4AwoBDhQAAz8BbgNWAcEDVwG/A1YBvgNWAb4DVgG+A1YBvgNW
+        Ab4DVgG+A1YBvgNWAb4DVgG+A1YBvgNYAcADVgG+AzkBXwwAAz4BawFcAlcB3wF7AU0BSQH6AaIBfQE9
+        Af4BVAE0AW8B/gIAAdQB/wEeAR8B7wH/ASIBIwH3Af8BPAE7Av8BTQFGAv8BKQEoAcAB/wNcAc4DCgEO
+        AV0CWQHXAW4BZAFSAfcCYgFbAfYCYgFeAfYCYgFbAfYCYgFZAfYCYgFaAfYCYgFYAfYCYgFJAfYCYgFJ
+        AfYCYgFJAfYCYgFJAfYCYgFJAfYCYgFJAfYBegFlAVEB9wFeAlsB2RQAAVUCUwGwAeUBpgFAAf8B7gHI
+        AZcB/wGRAX8BWwH+AW0BUgFOAfcDVwHfA1QBqwM+AWsDIwEzAwQBBgQAA2IB9gHZAtMB/wHJArgB/wG4
+        Ap8B/wG8AqIB/wHEAqkB/wG+AqQB/wG8AqoB/wHJAsEB/wHSAswB/wHHAr0B/wHFArAB/wHeAsAB/wHk
+        AsUB/wHCApMB/wNXAcUEAAMDAQQDUwGqAa4BnAFPAf0B/wHWAaoC/wHZAZwB/wHbAbMBmgH/ARQBDgG+
+        Af8BEQETAekB/wIjAfcB/wJAAv8BQwFHAfMB/wEpAToB4AH/AS8BJwHsAf8DXgHlAw8BFAFnAlkB8gHf
+        AdsB3wH/AecB4AHiAf8B4QG3AaoB/wHmAbQBkgH/AeoBuQGQAf8B3QGxAZ0B/wHZAcgBxgH/AdoB1QHa
+        Af8B2gHSAdUB/wHbAdQB1wH/AdsB1AHYAf8B3AHVAdgB/wHhAdwB3wH/AdwB2wHhAf8BZQFkAVMB8QQA
+        AxYBHwNaAcoDWQHEA0oBigG4AagBUgH9AbgBvwFiAf8BvgHEAZ0C/wHvAdAC/wHsAckB/wH2AdcBrQH/
+        AdwBtAGGAf8BqAGAAUAB/QFiAUkBSAH2A18B4ANOAZgBqgKoAf0B+gP/AeIC2gH/Ac0CugH/AdQCvgH/
+        AdACvAH/AdICygH/AfgC9w3/AfEC7QH/AeAC1AH/AfkC2gH/AeMCsQH/A1gBywQAA1ABnQHnAa0BZgL/
+        Ae4BxAL/Ad8BtQL/AegBrAH/AasBlwGgAf8CAAHFAf8BBwEJAfMB/wI6Av8BUQFCAfsB/wE1AUEB7AH/
+        ARIBuQHpAf8BDgFIAcAB/wNWAb4EAAJhAVwB7gHtAewB7wH/Af4BwwGfAf8B/gGpAT8B/wHYAZcBXgH/
+        Ab0BggFhAv8BrQFKAf8B6QGcAU8B/wG8AaABnQH/AcMBswG0Af8ByAK3Af8BzAK8Af8B0ALBAf8B3QHQ
+        AdEB/wHsAeoB7QH/AmEBVQHuBAADSAGEAVsB7wGRAf8BRgG/AVoB/wEyAWgBEwH/AVcBvQFIAf8BKAHG
+        ATcB/wEuAZcBHgH/AekBxwGjAv8B5QHEAv8B6gHMAv8B8gHZAv8B9QHdAv8B7AHQAf8B+gHVAakB/wFc
+        AlUB6gF/AngB/AHvAvIB/wHYAs8B/wHFArEB/wHIArIB/wHAArMB/wHlAt8B/wH6AvcB/wH2AvUB/wHv
+        AfAB8QH/AfIC8AH/AfcC8gH/Ad4C2QH/AdgCwQH/AdoCqgH/A1sByAMvAUoBhgFnAU0B+gH/AccBkQL/
+        AdMBnwL/AccBjgL/AdIBhwH/Ab0BlwGCAf8CAAHGAf8BGAEWAv8BVwFdAfoB/wEwAVwB3QH/ATUBMAHe
+        Af8BJAGDAfwB/wEAAbIB7wH/AVgCXQHtAzYBWQNhAu4B3wHgAv8BtgFoAv8B2gGMAf8BmwGMAcQB/wE3
+        ATIB0AH/AfcBzgGPAf8B/AGxAVIB/wHlAb4BrgH/AusB7wH/AewC5QH/AewC5gH/Ae0C5wH/AfIC7QH/
+        Ae4B7QHuAf8CYQFYAe4EAAM6AWEBggHFAZMB/gHuAf8B8gH/AaUB+AG5Af8BoAHxAbEB/wGoAf8BwAH/
+        AVsBvwFZAf8B8gHZAbkC/wHnAcoC/wHoAcwB/wH9AegBzwH/Af0B6QHTAv8B+AHqAf8B9QHdAcIB/wNT
+        Aa0BfwJ4AfwB8ALzAf8B2QLQAf8ByAKzAf8BwAKtAf8BzALBAf8B7gLlAf8B6ALmAf8B1ALSAf8BywLH
+        Af8BygHJAcgB/wHkAuAB/wHuAuYB/wHWAskB/wHRAqMB/wNbAcgBWgJYAcABzgFoASkB/wHRAYwBPAH/
+        AfwBwwFqAv8BvQFfAv8BvAFVAf8B7QGwAUoB/wEqARcBpQH/AjEC/wFeAWUB/gH/ARYBwQH3Af8BCQGK
+        AeMB/wFKARoBkAH/AUkBhAGnAf8BAAGIAegB/wNQAZ0DYQHuAfIB6QHoAf8B/AHLAagC/wHxAcgB/wGx
+        Aa8B4wH/AWIBYAHjAf8B+wHwAc4B/wH1AcIBmAH/AcYBoAGUAf8BwwG3AbkB/wHKArgB/wHOAr4B/wHQ
+        AsAB/wHbAtAB/wHwAe8B8gH/AmEBXQHuBAADUAGeAYwB6AGlAf8B4QH/AeMB/wG6Af8BwQH/AWgB/wGC
+        Af8BZwHyAZEB/wFOAaMBRAH/Ae0B1wHBAv8B7wHXAf8B+wHqAdUB/wH7AewB2wH/AfoB7gHgAv8B/gHx
+        Af8BiwFkAV8B+wMqAUEBfwJ3AfwB8ALzAf8B2QLQAf8BxwKyAf8BvQKsAf8B0wLHAf8B6gLiAf8B4wHh
+        AeAB/wGRAY0BjAH/ASMBIQEgAf8BoAGdAZsB/wHZAdcB1gH/AewC5QH/AdoC0AH/AckCnwH/A1sByAFk
+        Al0B7QGqAU0BEgH/AZcBNAEAAf8BwwFkASEB/wH5AbEBSAL/AbEBSQL/AbwBRgH/AbUBZgFBAf8BOwEx
+        Aa8B/wFRAU8B7gH/AT4BXgHdAf8BAAG1Ae8B/wE4AZUBswH/AbgBXQFHAf8CWwFeAdkDIQEwA2EB7gH2
+        AfUB9gH/Af0B4gHUAv8B5AHJAf8BowGeAcMB/wFTAVABqAH/Af0B3gHDAf8B9wHVAcQB/wHeAdMB0QH/
+        Ad4C1gH/AeIC2AH/AeQC2gH/AeQC3AH/AesB5QHmAf8B9AH1AfgB/wNhAe4DOwFkAV8BqwF/Af4B2gH+
+        AeUB/wHYAf8B3AH/AawB/wG4Af8BiQH9AZMB/wGcAfoBrQH/ATIBwAFLAf8BVgGMAToB/wH4AecB2gH/
+        Af0B8gHkAf8B+QHvAeMB/wH8AfgB8AH/AfwB7QHcAf8BXQJZAdIDAQECAX4CdwH8AfAC8wH/AdkC0AH/
+        AccCsgH/Ab4CrgH/AdUCyAH/AegC4QH/AegB5QHkAf8BUQFMAUsB/wMAAf8BgQJmAf8B4ALdAf8B6gLi
+        Af8B2wLSAf8BxgKfAf8DWwHIAX4BXAE+AfgBjQE4AQEB/wFlASEBAAH/AZsBPwEDAf8B8QGtAU0C/wHE
+        AWgC/wHOAYcB/wHUAZABLgH/AV0BIgECAf8BRwEgAS8B/wGSATsBJQH/AaIBmgGJAf8BJQGsAfkB/wGe
+        AYMBgAH/A1ABnQQAA2EB7gH5AfgB+QP/AfsB/wHEAckBygH/AUIBigGyAf8BJQFdAZ8B/wGCAZkBpwH/
+        AewB3QHYAf8B3wLVAf8B3ALSAf8B3wLWAf8B4QLXAf8B4gLZAf8B6gLjAf8B+AH5AfsB/wNhAe4BMAIx
+        AU0BagGNAXcB+QHQAfgB0wH/AcgB/QHVAf8B4wH/Ae8B/wG/Af4BzwH/AYsB7wGSAf8BVgHjAYcB/wE9
+        AZ8BNQH/AfIB3wHaAf8B/QH4Ae8B/wH3AfEB7QX/Aa4BjQF/Af4DQgF0BAABfgJ3AfwB8AL0Af8B2QLQ
+        Af8ByAKzAf8BvAKsAf8B0ALFAf8B7ALkAf8B4wLgAf8BrgGlAaQB/wFdAlMB/wG1Aa0BrAH/AeAC3QH/
+        Ae8C5QH/AdkCzQH/AcsCoQH/A1sByAGJAWoBQQH5AYkBOQEDAf8BkwFAAQQB/wHbAZ4BRgH/Af0BywGK
+        Af8B4QGsAV4B/wGvAWQBMAH/AY8BQAELAf8BYgEhAQAB/wFhAR4BAAH/AYYBLQEAAf8BsgFQAQkB/wGc
+        AVgBQQH/AawBXgE4Af8DUQGiBAADYQHuAf4C+wH/AfMB+gH9Af8BmwHYAfkB/wGCAb0B4gH/AWIBsgHX
+        Af8BTgG2AeIB/wG0AcoB1wH/AcoBtQGyAf8BxQK1Af8BygK7Af8BzgK/Af8B0QLBAf8B2wLQAf8C+gH7
+        Af8DYQHuAwQBBgJkAVwB5wHUAfEB0AH/AaMB7QG2Af8BzAH/AdsB/wGSAe8BowH/AZAB1AGPAf8BtgHV
+        AakB/wHfAeMB0AH/Af0B9gHzAf8B9gH0AfIB/wH3AfgB+QP/AfwB/wFhAV8BVAHuAw0BEgQAAX4CdwH8
+        AfAC9AH/AdkC0AH/AccCsgH/AcQCsAH/AccCvAH/AfEB6AHpAf8B+AH5AfsB/wHnAuUB/wHkAt4B/wHh
+        Ad4B3QH/AfIB7AHtAf8B6gHkAeUB/wHWAcUBxgH/AdYCpgH/A1sByAFkAWABWQHrAccBiQExAf8B8wG1
+        AVgC/wHUAZsB/wH+Ad0BtgH/Ab4BmwFmAf8BkwFaATsB/wGeAWcBRwH/AZ0BZAFCAf8BkAFSASoB/wGA
+        ATgBCAH/AVMBGwEAAf8BagEqAQAB/wF/AWMBNAH+A0IBdAQAA2EB7gL/Af4B/wHrAfUB/AH/Aa4B3AH3
+        Af8B2AH3Av8BwAHwAv8BaQHKAfMB/wG+AdgB5wH/AfUB8AHtAf8B8QLtAf8B8wLuAf8B8wLvAf8B8wLw
+        Af8B9wL0Af8B/gP/A2EB7gNRAaIB+wHaAbwF/wHIAekBzAH/AY0B5QGaAf8BkAHZAZUB/wH0AesB5wL/
+        AfgB/QL/AfoB+wH/AfUB9wH1Af8C9wH4Af8B/QH+Av8B7QHVAcgB/wNRAacIAAF+AncB/AHwAvMB/wHY
+        As8B/wHEArEB/wHKArQB/wHEArMB/wHQAcgBxwH/AdABxwHDAf8D7AH/Ad4C4AH/AfwC+gH/AfQB7gHt
+        Af8B1ALNAf8B3QLBAf8B2gKoAf8DWQHJAlYBVQG0Ac4BiQEuAf8B7AHBAZAC/wHwAdsC/wH1AekB/wHy
+        AekB3wH/Ad0BygG2Af8B2QHEAa4B/wHgAcwBuAH/AdoBxgGwAf8ByQGuAZQB/wGhAWEBOgH/AbEBVQEW
+        Af8BYQJUAe4DGAEhBAADYQHuBP8B/AH9Av8BzwHnAfcB/wHVAewB+gH/AbQB4QH9Af8BngHVAfoB/wLe
+        AeIB/wG5AaEBnwH/AbgCpAH/Ab4CqwH/AcMCsAH/AcQCtAH/AdIBxAHFAf8B/QH+Av8DYQHuAW8BaAFV
+        AfMB/wH8AfcF/wHvAdkBvwH/Ab0BxgGLAf8B5wH0AecC/wL7Af8B+AH6AfwB/wH6Af0C/wH8A/8B/Qf/
+        AYkCXwH7AyYBOAgAA6gB/QH3AvwB/wHeAtcB/wHJArYB/wHQAroB/wHZAccBywH/AaYBjQGBAf8BmAFF
+        ARQB/wGaAZYBkwH/AV4BYwFmAf8B6gLsAf8B5wHdAdQB/wHkAcsBsQH/AeoBxwGrAf8B0wGmAaUB/wNc
+        Ac4DKQE+AXMBYgFIAfYB7gHRAbAB/wH4Ae4B4gH/Af0B8wHpA/8B/AH/AfkB8AHnAf8B7wHWAb4B/wHw
+        AdYBvgH/Ae8B1gG+Af8B8QHdAckB/wH6AdgBsgH/AdUBhgE0Af8DTgGUCAADZwHyCP8B+wP/Ad8B8gL/
+        AdMB7QL/Ae8B+wP/Av4B/wHtAukB/wHuAusB/wHwAu0B/wHxAe4B7wH/AfIB7wHwAf8B9QH0AfUF/wFp
+        AmQB8QJAAT8BbgJdAVoB0wGOAYcBegH5Ae8B1AG2Af8B8wHMAawB/wHzAdQBuAH/Ae0BywGsAf8B7AHL
+        Aa8B/wH0Ad4BygH/AfUB4gHVAf8B9wHtAeYB/wH3AeUB2QH/A1sB0AMBAQIIAAF9Am0B9wHlAt8B/wHU
+        AscB/wHGArQB/wHMArgB/wHYAcIBxAH/Ab0BpgGiAf8BnwGBAV0B/wGtAaEBoAH/AasBowGkAf8BywG/
+        AcAB/wHTAcIBwQH/AeIBzwHGAf8B4QHIAboB/wHJAaUBpAH/A1EBpwQAA0QBegG2AaUBTQH9AfwB7AHX
+        Af8B+gHyAecB/wH7AfMB6wH/AfwB9AHrAf8B9wHlAdQB/wH3AeQB0gH/AfkB7gHgAv8B8wHbAf8B8gGx
+        AWcB/wFbAlkBxAMEAQYIAAFgAlwB1AF3Am0B9wNiAfYDYgH2A2IB9gFlAmIB9gFlAmIB9gFlAmIB9gFl
+        AmIB9gFoAmIB9gFoAmIB9gFoAmIB9gFoAmIB9gFoAmIB9gGBAm0B9wFeAloB2AgAAyUBNwJPAU4BlwNf
+        AeABtQGoAZoB/QHzAdwBwwH/AfwB6wHKAf8BlgF/AWYB/gNVAbICUwFSAagBWwJZAcQDLQFFDAABPQI8
+        AWcBUgJRAaEDXQHXAXECXgH6AWQCWQHsAVYCVAGrA1ABnQFSAVEBUgGhA1IBoQNSAaEBUgJRAaEDUgGh
+        A1IBoQNSAaQDTAGTAxgBIQgAAkcBRgGAAXUCYgH2AfcB4gHMAv8B/QH3B/8B/QP/AfoC/wHuAdcB/wGe
+        AXQBYAH8A1YBtgMMARBcAAMHAQoDMAFLAlYBVQG0AW0CZQH0A1UBtWgAAygBPAJWAVUBtAJiAV0B6QGM
+        AYIBagH5AZYBewFuAfoBZgJdAfABXAJZAckDOgFh/wAZAAMfASwDSwGPA1UBtANXAb8DWAHAA1cBvQNU
+        Aa4DQQFzAw0BEmAAAwwBEANOAZQDVQG1A1UBtANVAbQDVQG1A1YBtgNWAbYDVQG6A1YBvgNBAXMYAAMF
+        AQcDAQECLAADMgFQAVcBWAFXAe8BHQGYATEB/wEkAbABQgH/ASgBuAFJAf8BKQG4AUkB/wElAbMBRAH/
+        AR8BnQE2Af8BOQFFAToB/QNXAcUDDwEULAADDwEUA04BlwNGAYADAwEEIAADSAGHAZ4BMwE2Af8BsQFA
+        AUMB/wG1AUMBRgH/Ab4BSwFNAf8BxwFSAVQB/wHPAVoBWwH/AdQBXgFfAf8B2QFjAWQB/wHVAWkBagH/
+        A14B5QMGAQgQAAJTAVUBrQEQAWkB0gH/AUIBWQFvAfUDWQHHAk0BTgGWAzsBZQNKAY0BhQFtAVEB9wJd
+        AVkB1wFWAlUBtAFNAkwBkQFAAj8BbgMlATcEAANfAeABMwHVAV4B/wFAAeUBiAH/AUsB4QGNAf8BUQHi
+        AZIB/wFSAeEBkgH/AU4B4wGPAf8BRQHlAYsB/wE7AeABaAH/ASkBZwEtAf4DQAFxKAADJQE3A1sB4QEa
+        AZIBEwH/ATYBQAEWAf0DVgGzAxABFhwAAVsCWAHLAfABmwGUAv8BuwGkAf8B/gG9AakC/wG8AagC/wG+
+        AasC/wG8AagC/wG8AakC/wG/AaoC/wHDAbgB/wFfAlgB4wMEAQYQAAFOAV0BZQHwATIBwQH+Af8BVQHJ
+        Af4B/wFOAcgB/gH/ATkBtwHwAf8BVAFWAWAB/wHzAbgBhgL/Ab8BaAL/AbkBWwL/AbIBTAL/AbEBSgH/
+        AewBpAFYAf8DRAF5BAABLgF1ATQB/AFaAegBnAH/AWoB3gGfAf8BiQHhAacB/wGQAeMBrAH/AZEB4wGt
+        Af8BjQHiAaoB/wGEAd8BogH/AWQB7AGiAf8BOQGvAU4B/wNRAaAkAANCAXYBQQFiAUgB9gEdAdABVAH/
+        ASIByQEwAf8BIQGeAQAB/wEVAUsBAAH/A1oB2wMtAUYUAAMBAQIBYgJYAekB/AHGAawC/wH1AdkB/wH4
+        Ae4B2QH/AfoB9AHiAf8B+wH0AeQC/wH8AfEC/wH+AfkC/wH8AfgB/wHtAeEB3QH/A1YBvhAAAwkBDAEA
+        AVYB1AH/AUUBxQH+Af8BkgHYAv8BlgHcAv8BgwGqAb8B/wHYAZ8BaAL/Ac4BmgL/AcsBkwL/AcUBiAL/
+        Ab4BZQH/AfgBsgFaAf8BYwFmAYcB/wJQAVEBnwQAAVgBiQFfAfsBlAHqAbQB/wGnAegBvAH/AbIB7AHH
+        Af8BvgHzAcwB/wHAAfQBzgH/AbcB7AHJAf8BrQHqAcAB/wGfAfABuwH/AVEBtgFjAf8DTAGTIAADJwE6
+        ASkBcwFIAfoBIAHXAVgB/wEfAdYBXQH/ARwBtAEkAf8BHgGYAQAB/wEhAaQBAAH/ARwBYQEAAf8DWgHK
+        FAADIwEzAYcBTwFNAfsB/wHTAbcC/wH3Ad8B/wGdAY8BggH/ATwBOAE0Af8BjgGIAYwB/wHCAbABqwH/
+        AeoB4AHRA/8B/gH/Ac0BwQHAAf8DRgGBEAADHAEoAQABYAHiAf8BYwHQAf4B/wG+AegC/wG4AeUB/QH/
+        AZ8BjAGEAf8B/QHZAbQC/wHWAasC/wHTAaQC/wHOAZsC/wHIAY4B/wHJAY8BXAH/ATQBrwH5Af8DUgGp
+        BAABVQFcAVUB6gGyAfEByQH/AdAB9AHdAf8B5gH7AewB/wHlAfEB6wH/AeIB7wHpAf8B7QH8AfAB/wHc
+        AfYB5gH/AcAB+QHTAf8BSQGdAU0B/QM2AVkcAAMMARADWAHAARkBuwE+Af8BHgHTAVYB/wEbAc0BVQH/
+        ASIBwAE1Af8BHwGXAQAB/wEfAZsBAAH/ASABmAEAAf8DPgH4A0gBhgMDAQQMAANEAXoBvQFQAUYC/wHe
+        Ab4C/wHxAdkB/wHCAbQBowH/AT0BQwE+Af8BgQGnAcAB/wEGAUIBpwH/AkUBZQH/Ae8B2wHJAf8BeAFw
+        AW4B+gMtAUUQAAIrASwBQwEAAYIB8AH/AY8B2QH+Af8BwgHqAv8BwQHlAfgB/wHRAacBjAL/Ad4BuQL/
+        AdwBtgL/AdkBsAL/AdUBqAH/AfMBpAFbAf8BpgGqAa4B/wE2AbYB/gH/A0oBjQQAA04BmQG3AeABwAH/
+        AfQB/wH0Af8B7AH9AdYB/wFnAYcB2wH/AVMBWAHbAf8B0AH7AcUB/wHpAf8B7AH/Ac0B8gHUAf8DWwHZ
+        AwcBChgAAyYBOAJXAVwB3wEAAQUBqAH/AQ4BrwE8Af8BHQHVAU8B/wE7AeYBgwH/AToB6wGHAf8BIgHB
+        ATcB/wEfAZ0BAAH/AR0BjQEAAf8BAAFWAacB/wEVAUABqAH9A1UBugMVAR0IAANVAbIB0gFiAU4C/wHl
+        AcMB/wHwAdoBwgH/AekB2QHCAf8BsAKnAf8BjAG/AegB/wECAa8C/wEAAV4B0gH/AVgBXAGiAf8BYgJY
+        Ae8DEgEZEAADOAFeAQ4BkQH8Af8BngHeAv8ByAHrAv8BxQHgAe4B/wHmAbsBmwL/AeUByAL/AdYBsAL/
+        AZEBOAL/AaYBVQH/AdUBWQEnAf8BmwHbAfoB/wExAbUB/gH/A0EBcgQAAw8BFAFaAV4BWgHVAaIB0gGg
+        Af8BZwHDAbYB/wERAVgBuQH/AQQBRgG5Af8BKAGwAZUB/wFnAdMBjQH/A10B8AMpAT4YAANBAXMCOQFi
+        AfYCAAH3Af8BAAEIAcsB/wE5AcQBSgH/AYsB+wGoAf8BWwH+AZ8B/wE4AeoBgwH/ASMB1gFfAf8BHwHI
+        AT8B/wEdAaABAAH/AQABZAGcAf8BAAFeAv8BAAEuAc4B/wNXAd8DMAFLAwEBAgFhAlwB3AHjAZEBYAL/
+        Ae0BygH/AecBzwG2Af8B5QHQAboB/wHaAcQBtgH/AT8BaAGnAf8BVwHZAfcB/wEWAc4C/wEAAZoB7AH/
+        ASIBQAFNAf0DUQGnAwYBCAwAA0QBeQEfAZgC/wGsAeMC/wHPAe4C/wHJAs0B/wHzAdoBxQL/AfEB4gL/
+        AesB1gL/Aa4BYAH/AdgBhgFMAf8BIQERAWgB/wFdAaoB4QH/AS0BrQH6Af8DOAFcCAADGQEjAUgCYgH2
+        AWQBtAHdAf8BvQHUAd8B/wHCAdcB3wH/AVABngHLAf8BCAFhAWYB/wNNAZYcAAI8AXwB+AIAAv8CAAL/
+        AgAB2QH/AUEBiwFkAf8BpgH5AaAB/wFbAf8BoAH/ATQB5gGCAf8BJQHVAVgB/wEfAc0BQQH/AQoBogE6
+        Af8BAAFkAcQB/wEAAVYC/wEAAWAC/wEAAT0B5AH/A1gBwAMfASwBXgJCAfUB8wGtAYsB/wH7AeUBxQH/
+        AdEBuQGkAf8BxgGyAaAB/wHtAdgBwQH/AcwBvgG5Af8BQQGLAbMB/wFXAd0B8wH/ATEB8AL/AQABxQH7
+        Af8BBgFRAX8B/gNYAcYDFQEdCAADTgGUATEBnwL/AbsB6AL/AdYB8AL/Ac4BwgG2Af8B+wHwAeYC/wH2
+        Ae0B/wH9AfEB4wH/Ae4BzQGvAf8BTgE/AZMB/wIAAbsB/wIAAa0B/wEAAQsBtQH/AlcBWgHFCAADOgFh
+        AUkBqAGzAf0BtAHPAeUB/wHmAeoB8QH/AewB7gH2Af8BvAHJAd0B/wE0AZYBzAH/A1kB0gMfASwDEgEZ
+        AwQBBgMEAQYMAAIVAbIB/QIAAv8CAAL/AQwBCgH+Af8CAAHHAf8BCwFGAV4B/wFGAecBWAH/AT4B+gGB
+        Af8BIAHHATgB/wEAAZQBSgH/AQABmwHUAf8BAAGeAv8BAAFWAv8BAAFYAv8BAAFUAfgB/wNZAccDOgFi
+        AX8BNwEvAv4BwQGZAf8B3gHIAa4B/wHFAa4BmgH/AdABvwGoAf8B0wHCAa0B/wHfAc0BswH/AbgBoAGb
+        Af8BLgFTAZsB/wFPAc4B6wH/AUMB/QL/AQAB3QL/AQABVgGsAf8DXgHaAyUBNwQAAlMBVQGwAUcBqwL/
+        AcsB7QL/AeAB9AL/AdUBwAGtAf8B/gH7AfgC/wH7AfcB/wHzAfAB7AH/AdMBzgHMAf8BRAFMAbcB/wFQ
+        AWgB8QH/ASgBPwHbAf8BJwE8AdoB/wJYAVwB0QgAAVACUgGjAZ4B2QH0Af8BsgHgAfoB/wGqAdoB9gH/
+        AZ0B1AH1Af8BlQHRAfUB/wFkAc0B9wH/AlMBYQHxAVwCVwHfAWICWAHpAV4CWwHZAV4CWgHYA1MBsAMo
+        ATwEAAIhAZQB+wIAAv8COQL/AoEB/gH/AUcBRAH9Af8CAAHeAf8BAAEfAYgB/wEdAaQBMgH/AQABnAGH
+        Af8BAAGjAewB/wEAAcwC/wEAAccC/wEAAZwC/wEAAV8C/wEAAUwB9AH/A1gBxgNOAZkBugE3ASQB/wHz
+        AcABmAH/AdYBwgGkAf8B0AG4AZ4B/wHGAZUBjQH/AcsBhwGNAf8BxwGDAY0B/wHVAZABlAH/AdQBggGT
+        Af8BUQFGAZsB/wFDAbMB3gH/AUwB9gL/AQMB3wL/AS4BXgGnAf8DXAHcBAACWAFbAcsBXgG5Av8B3AHz
+        Av8B6gH3Av8B3QHGAbIB/wHzAd8B0AH/AfUB5QHYAf8B9gHpAd4B/wH4Ae0B5AH/Ab4BtgHMAf8BLAE3
+        AbgB/wGXAZ8B0wH/AUMBkAG3Af0DHwEsCAABTQJOAZYBsgHeAfIB/wHbAfcC/wHRAe8C/wG4AeYC/wGg
+        Ad8C/wGGAdcC/wNZAewBhQFdAVwB+AH/AekBwAL/Ad0BvAL/AdwBuAH/AdwBpQFqAf8BYAJZAesDMAFL
+        AjUBsgH9AmQC/wKSAv8CZQL/AlsC/wFTAVEC/wEYAQsB4QH/AiEBXwH7AQABrAHjAf8BAAH1Av8BAAHe
+        Av8BAAHCAv8BAAGwAv8BAAGmAv8BAAFmAfsB/wNZAcQDWgLKAUwBMgH/AeABvgGYAf8B0wG1AZcB/wHT
+        AZYBjQH/AfEBogGlAf8B/gGzAbQB/wH+AbQBtgH/Af4BtwG5Av8BxAHCAf8B+QG4AboB/wGDAYABuAH/
+        AT4BrgHlAf8BrQHyAfMB/wFlAbAB7AH/AVkBWwFdAe0EAAJZAV0B0gGLAcgC/wHxAfoC/wH3AfwC/wH2
+        AfkB+wH/AfAB5QHcAf8B7gHgAdUB/wHtAdwBzwH/AewB2AHJAf8B6gHUAcIB/wH0AfAB7QH/AfcB+wL/
+        AVgCYgHpDAADKAE8AW0BfAGJAfoE/wH1A/8BzwHyAv8BtAHyAv8BYgF/AaIB/gFnAlkB8gH5AcwBlwL/
+        Ad4BsgL/AeABuQL/AeEBuQL/AewBvgH/AewBpQFeAf8DVwG9AlgBWwHLAmkB5QH/ApEC/wJkAv8CWgL/
+        AlYC/wFNAUoBegH6A1ABnQFXAlwB3wEAAekB/gH/AQAB5AL/AQABwAL/AQABsQL/AQABrgL/AT0BbQGG
+        AfcDOgJiAlYB7wG+AV0BPgH/AcwBogGEAf8B1AGOAYcB/wH3AasBqQL/AbcBsgL/AbYBswL/Ab4BvAL/
+        AcYBxQL/AdkB1wL/AfwB+gH/AeYBsQG9Af8DXgHlAUEBVAGoAf0BEgFQAcoB/wNLAY8EAAMcAScCUwFV
+        Aa0DXAHRA10B1wNeAd0DXwHjA2IB6QJiAWMB7wFaAWcBdwH1AV8BhgGbAfsBhwGmAfAB/wGIAasB9QH/
+        AlQBVgGrEAABRgJHAYABdAF9AYkB+gHWAeUB7gH/AbwB4gHxAf8BYAF5AZgB/AJQAVIBowFfAloB2wH/
+        AdoBlAL/Ac0BmQL/Ac4BnQL/AcwBmwL/AdcBnAH/Af4BtQFdAf8DVwG/BAACTwFRAZwCNAGbAfwCgwL/
+        Ak8B9QH/AlcBYgHvAzMBUgQAAxABFgFYAloBwAEAAbUB9gH/AQABzwL/AQABpAL/A18B4AMnAToEAAFs
+        AisB/AG2AVoBRQH/AegBqwGgAv8BxgHAAv8BzwHHAv8B1AHNAv8B3gHXAv8B5gHhAv8B7wHpAv8C+gH/
+        AacBfwGFAf4DVAGvAwQBBgNAAXACSwFMAY8DAQECLwABAQMFAQcYAAMvAUoBUQJSAaEDUgGpAzkBXwQA
+        A0UBfQHCAX8BcgH+Af8B9AHUAv8B9AHfAv8B9QHdAv8B2wGqAf8BgQFSAVAB9wMxAU8IAAM7AWQCVAFh
+        Ae4CWwFeAdADGAEhEAADTAGSAUMBYgF5AfYCVQFXAboDDAEQCAABXAJXAd8BgwFBAUAB/gGtAkgB/QGO
+        AUkBTQH8AYwBTQFWAfwBjgJfAfsBjgJfAfsBgAFNAVwB+gGOAl8B+wFnAVkBZwHyA0QBfHgAAUcCRgGA
+        AmUBXgHlAZMBdgFwAfoBhgJtAfcBYAJcAdQDMwFShAADSwGOA1kBwwNXAcIDQgF2QAADEQEXA0QBeQNW
+        AbMDWAHGA1cBxQNUAa8DPQFqAw0BEhAAAlUBVwG6ASEBJAGKAfsCPgF6AfgCPgF5AfgCPgF4AfgCPgF3
+        AfgCPgF2AfgCPgF0AfgCPgFyAfgCPgFwAfgCPgFvAfgBPQE+AW4B+AI+AW0B+AI+AW0B+AIhAV8B+wJZ
+        AVsBwwwAA1MBqgNYAdEDWAHLA1oB1QFaAV0BYAHtAUwBXQFoAfMCVwFfAegDWwHQA1wBzgNZAdIDRAF8
+        CAABQAFtAYEB9wEAAbUB4QH/AQABqwHaAf8DWQHsAxkBIzgAA0MBdwFgAlkB6wJ/AU0B/gGBAakBPgH/
+        AYYBuwFMAf8BiQG2AU0B/wGzAagBaAH/AaIBSwFEAf0DWgHeAzkBXwwAAkgBawH2ARkBNAHuAf8BAQEc
+        AeQB/wEAARUB4AH/AQABFAHaAf8BAAEQAdUB/wEAAQsBzwH/AQUBEwHWAf8BBQEPAdIB/wIAAcEB/wIA
+        Ab0B/wIAAbkB/wIAAbUB/wIAAa8B/wIAAbkB/wI+AW0B9wwAAbIBqwGsAf8B2wHSAdEB/wHiAcwBwgH/
+        AYUBowHeAf8BUAHSAv8BXgHpAv8BWAGtAfIB/wHaAcYBwgH/Ad8B1QHUAf8BvAK2Af8DVQG1CAABSgFl
+        AWoB9AEAAegC/wEAAe4C/wEAAYMBtQH/A1wB3ANKAYsDAwEELAABUgJQAaQBngJ/Af4B/wHvAeUB/wHd
+        AfgBzwH/Ad8B9QHOAf8B5gH1AdYB/wHpAfoB3wP/AfoD/wH5Af8B6wHIAbkB/wFqAkEB+QNEAXoIAANV
+        AbUBFQEoAdsB/wEAAQcB5AH/AU4BXQHRAf8BqwGvAdAB/wGpAa4B2QH/AbMBtwHgAf8BnAGfAccB/wGa
+        AZwBxAH/AbQBtgHcAf8BrAGuAdMB/wGvAbABywH/AVsBXQG6Af8CAAGkAf8CAAGrAf8CVgFYAcEMAANR
+        AaADVQGtA1ABnQNVAbUBUAGoAbkB/QFjAbcB5wH/AVkCYAHrA1QBpgNVAa0DUgGpAygBPAgAAVoCXQHT
+        AQAB2gH0Af8BAAHZAfcB/wEAAcwB+gH/AQABuAHrAf8BMwFDAWoB+QM4AVwoAANLAZABxgGaAWcC/wH9
+        AeMC/wHqAc4C/wHgAcIC/wHcAbsC/wHcAbkC/wHdAb0C/wHgAcMC/wHqAdED/wH2Af8B/QHkAdQB/wFq
+        AkEB+QM4AV0EAAMrAUIBKAEuAY0B+wEAARsB6gH/AWcBiAHXAf8B+QH1AdkB/wH4AfYB6gP/AfsB/wJV
+        AUkB/wJKAT8D/wH5Af8C+gHvAf8C+wHiAf8BjQGPAcUB/wIAAbUB/wIAAZMB/wMyAVEYAAMzAVIBcwFv
+        AXAB+gGlAZoBnAH/A1QBrhgAAyQBNQFXAl8B6AEAAdsB9AH/AQAB2gH2Af8BAAHuAv8BAAGaAdQB/wFP
+        AVcBWQHyA0sBkAMjATMcAAMmATgBcwFcAUMB+AG/AdMBjgL/AdsBsgL/Ac8BnAL/AcoBkwL/AcgBjwL/
+        AckBjgL/AcsBlAL/AdIBnwL/AdYBqQH/Ae4B1QGrAv8B+AHhAf8B8gHIAa0B/wNYAd0DDQESAwQBBQNT
+        AaoBFAEnAd4B/wERASgB6AH/AdYB2AHlAf8B+gH5AfIB/wL9Af4B/wLVAdcB/wLSAdMB/wL9Af4B/wL6
+        AfUB/wHhAeIB5QH/ARgBGwG8Af8CAAG1Af8CVgFYAbkDCQEMDAADMQFPA1YBtgNXAegBawFvAWoB+gGz
+        AasBpgH/AYYCYwH/A1gB0QMQARYYAAMkATUBWQFgAWIB6wEAAeEB+QH/AQAB0AH1Af8BAAHUAf4B/wEA
+        AcEB8QH/ARwBQAGZAf0BWAFbAV0B7QNRAacDSgGLAyQBNRAAA1UBsgFmAY8BLQH/AWIBowE2Af8B+AHJ
+        AY0C/wHAAWgC/wG6AV8C/wG5AVsC/wG7AV4B/wHUAa8BTAH/AWoBmAEsAf8B4QG9AWYB/wHtAccBjgH/
+        AagBsgFaAf8BYAGpAUEB/wGWAUkBQAH9Az0BagQAAyoBQQJCAW0B9QEAARoB7QH/AWABgwHoA/8B9wX/
+        A7wB/wO1B/8B/AH/AZABlAHVAf8CAAHAAf8CPgF1AfgDMQFOEAADZAHxAeMB2gHbAf8B8wHrAeoB/wHp
+        AewB5AH/AdsB0AHOAf8BywG4AbkB/wGOAoEB/wNYAeMDPQFqAwEBAhQAAyYBOAFaAV0BYgHtAQAB4gH5
+        Af8BAAHTAfMB/wEBAeUB/QH/AQkB5gL/AQMBrwHyAf8BAAFRAcYB/wEAAUYBvgH/A1wB5wM4AV0MAAFc
+        AlUB6gE1AYIBEwH/AQwBVAEAAf8BZgGJAR8B/wH1AbMBTgL/AbEBSQL/Aa4BRQL/AbMBSwH/AYYBigEd
+        Af8BAAFOAQAB/wFhAYYBGwH/Af0BxQGDAf8BnQGcATkB/wFMAZEBJQH/AcYBnAFZAf8DUwGwCAACVAFW
+        AasBGwEtAd4B/wE2AUoB9QH/Ae0B7gH8Bf8DjAH/A2kF/wHqAesB/gH/ARsBIgHfAf8BAAEEAcAB/wJV
+        AVcBtwMBAQIQAAF0AnAB+AHtAuAB/wHiAtYB/wHnAdwB3gH/AdkBygHLAf8B1ALDAf8B5QLUAf8ByQK6
+        Af8BSgJFAf0DVwHCAyEBMBQAAykBPwFWAmIB7wEAAeMB+gH/AQABzgHyAf8BDAHkAfsB/wEuA/8BOAHq
+        Av8BUAHkAv8BCQGKAecB/wE9AUYBbQH3A0YBgAgAAXoBWwFBAfkBIwFXAQIB/wENAUIBAAH/AQoBQQEA
+        Af8BsQGRASgC/wGzAUgC/wG0AUoC/wG4AU0B/wFUAWEBDwH/AQ8BRQEAAf8BFAFGAQAB/wGqAZMBLwH/
+        AeUBsAFSAf8ByQGyAV0B/wHsAboBigH/A1cBxQgAAycBOgJBAYcB+QGeAaIB/QH/As8G/wNgAf8DTgX/
+        AqcC/wEQAREB/gH/ASwBLgGoAf0DLwFJFAABcQJtAfcB+QLyAf8B8gLtAf8B8QLuAf8B3ALPAf8BzwK9
+        Af8B1ALFAf8B4QLSAf8B7wLiAf8BmAKNAf8DUQGhGAADLQFGAVUCYgHvAQAB3QH0Af8BAAHHAfAB/wEL
+        AeAB9gH/AUMD/wGOA/8BjwH2Av8BHQGjAfkB/wJCAVkB9QMvAUoEAAGGAV8BMgH7ARsBQgEAAf8BDAEu
+        AQAB/wFaAVgBDgH/AeMBqQFBAv8BtwFQAf8B2wGjAT8B/wG2AY4BLAH/ASsBPQEAAf8BEAEwAQAB/wET
+        ATQBAAH/ASwBQgEAAf8BngGDASUB/wGjAY8BMgH/AbsBlwFIAf8DWQHHCAADAgEDAlABUgGjAWoBggHn
+        Af8BvQG8Av8C+wL/Aj8BOwH/AjEBLAH/AvYB/gH/AlgC/wEbARwB4gH/A1UBsgMFAQcUAAF0AnEB9wH+
+        AvwB/wHsAuYB/wHvAuoB/wHdAtEB/wHOArwB/wHTAsQB/wHVAsYB/wHtAt8B/wG6Aq0B/wNSAakcAANI
+        AYQBAAGoAdoB/wEAAesB/QH/AQAB5AH0Af8BCQL+Af8BOgP/AZID/wGbA/8BBgFnAeEB/wNbAdADDwEU
+        AWUBWAFIAfYBhQFhARoB/wG3AYoBJgH/AfUBrgFGAv8BvgFdAf8B2wGsAVYB/wFEAUkBFQH/ATEBQAEN
+        Af8BNwFBAQ8B/wEuATcBBgH/AR8BKQEAAf8BKQEqAQAB/wIxAQAB/wEwATYBAAH/AZIBWgEjAf8DVQG0
+        DAADJAE2AkwBbQHzAbIBtAH+Af8C3wL/AmABWgH/AlsBTwH/AsAB/AH/AUcBSAH+Af8BSAFKAYAB9wMq
+        AUEYAANxAfcB2ALKAf8ByAK3Af8B6ALgAf8B3wLTAf8BzAK5Af8B0gLBAf8B1QLEAf8B5gLWAf8BrQKf
+        Af8DUQGnHAACWwFgAdYBAAHKAfkB/wEAAeAC/wEAAe8C/wEAAfwC/wEIA/8BLwH6Av8BhgP/AVUB4AL/
+        AQcBSwGHAf4DSgGMAV4CWwHZAbEBiwEsAf8B7QGqAT8C/wHKAYwC/wHeAbcB/wHgAdIBuQH/AZ8BpgGP
+        Af8BoAGnAY8B/wGoAasBkwH/AaYBqQGQAf8BlQGZAWcB/wFXAVsBNQH/ARIBIgEAAf8BGgEqAQAB/wGq
+        AVsBKgH/A0MBdwwAAwMBBANQAZ0BggGFAeUB/wHJAcgC/wLmAe8B/wLmAe0B/wKWAv8BPAE+AeMB/wNT
+        AaoDBgEIGAABcQJuAfcBzQK7Af8BwwKyAf8B7wLqAf8B3gLSAf8BxgKzAf8B0AK+Af8B0QLAAf8B4gLR
+        Af8BqQKaAf8DUQGnHAABVQJXAboBAAHHAfMB/wEAAdEC/wEAAdoC/wEAAfUC/wEIAdgB8QH/AUIBWQFs
+        AfUBOQGoAbYB/QFOA/8BAAGCAegB/wNOAZQBRwJGAYEBnQFfAScB/wGlAbUBaQH/AfkB7gHaAv8B8AHh
+        Av8B9gHqAf8B8QHuAeAB/wHCAc8BuAH/AcYB0QG6Af8BzQHVAbwB/wHEAdABtwH/AboBzQG1Af8BhQGo
+        AYYB/wFgAYABIwH/AWQCWQHsAxIBGRAAAyUBNwJTAWsB8QG+AcAB/gH/AtcC/wHJAcgC/wGOAY8C/wJI
+        AWsB9gMtAUUcAANxAfcB7wLoAf8B8ALrAf8B/gL9Af8B2QLMAf8BvgKoAf8BxwK0Af8BzQK7Af8B3wLN
+        Af8BpgKXAf8DUQGnHAADEAEWAVkBYAFjAesBAAHTAv8BAAHPAv8BAAHoAv8BJQF/AaYB/gNZAc8BPAFc
+        AX0B+AEAAbMB8wH/AlcBWgG9Aw0BEgMNARIBXAJXAd8BvQHHAZUB/wHMAekB0QH/AeUB6QHYAf8B+AH0
+        AekC/wH9AfgB/wHZAegB1gH/Ab4B2AG+Af8BwAHYAb8B/wHDAdkBwQH/AcAB3wHKAf8BtwHYAasB/wGE
+        AXwBRQH+A0QBeRgAA1ABngGMAZAB5QH/AswC/wG1AbQC/wFjAWYB5AH/A1QBriAAA2YB9QH/Av0B/wH2
+        Au8B/wHkAtsB/wHeAtMB/wHTAsUB/wHEArAB/wHBAqsB/wHWAsEB/wGiApEB/wNRAacgAAM5AV8BKQFv
+        AYwB+gEAAdEB+wH/AQAB3gL/AQABwQHtAf8BBgF/AZQB/gEAAY0B2wH/AlkBWwHDAwQBBggAAyUBNwFi
+        AlgB7wHgAd0BugH/AdsB+AHnAf8B3gHwAeUB/wHsAfUB7QH/AeMB7wHjAf8B1QHnAdYB/wHVAeoB3AH/
+        AdsB9gHpAf8B6wHwAc8B/wHJAZMBSQH/AVICUAGkHAADHQEqAkwBbQHzAdYB2AL/AcwBzQL/Aj4BfQH4
+        AyYBOSAAAz4BawNcAeoBzALFAf8B8ALoAf8B8ALoAf8B6ALjAf8B4ALZAf8BzgK/Af8B0AK5Af8BnQKL
+        Af8DVAGrJAADOAFcAVcCXAHfAQABsQHpAf8BAAHqAv8BAAHLAfQB/wJaAV0BygMJAQwQAAMlATcBXgJY
+        Ad0B4gG3AZ4B/wH4AfcB7An/AfsD/wH6Af4B8gH/AfYB2QG9Af8BfQJcAfgDTgGUIAADAgEDA04BlAGT
+        AZcB6AH/AZoBnwHpAf8CTwFTAaUDAwEEJAADCQEMA0sBjwNiAe8B2QLWAf8B+QL2Af8B+gL3Af8B+AL3
+        Af8B7QLlAf8BlwKKAf8DTgGZKAADDQESA04BlAFOAV0BZgHwAloBXQHKAw0BEhgAAwkBDAFHAkYBgAFe
+        AlsB2QFvAlkB9QGUAYIBXwH7AYoBbgFqAfkBXQFcAVUB6gNVAbIDJwE6KAADGwEmAloBXwHbAloBYQHk
+        AyIBMjAAAxUBHQNQAZ4DaAH1A4EB+QNfAeMDWQHHA0wBkwMWAR8IAAFCAU0BPgcAAT4DAAEoAwABQAMA
+        ASABAQIAAQEBAAEBBgABCRYAA/8BAAHwAR8GAAHgAQ8GAAHgAQ8GAAHgAQ8GAAHgAQ8GAAHgAQ8GAAHg
+        AQ8GAAHgAQ8GAAHgAQ8GAAHgAQ8GAAHgAQ8GAAHgAQ8GAAHgAQ8GAAHgAQ8GAAHgAQ8GAAHgAQ8GAAH4
+        AQ8C/wH+AX8C/wHwAQcC/wH+AX8C/wHwAQMB+QHPAeABDwL/AeABAQH4AY8B4AEHAgAB4AEBAfABjwHm
+        AUcCAAHAAQEB8AEHAeYBQwIAAcABAAHgAQcB/gEHAgABwAEAAeIBEwHwAQcCAAHAAQABwgEzAeABDwIA
+        AcABAAHEARMB4AEfAgABwAEBAYQBGQHgAW8CAAHgAQMBiAEJAeIBZwIAAfwBDwIAAeABRwIAAcABfwL/
+        AfABBwIAAYMBvwL/AfwBPwL/Ac8BvwL/Af4BfwL/AfgBPwHHAeMB4AEHAX8B/wHgAQMBwQHDAcABAwE/
+        Af8BgAEBAcABAwHgAQcBjwH/AYABAQHgAQcBgAEBAYMB/wGAAQEB4AEHAYABAQHBAf8BgAEBAeABBwGA
+        AQEBwAH/AYABAQHgAQMBgAEBAeABPwGAAQABwAEBAYABAQHwAR8EAAHAAQMB+AEPBAABwAEDAfwBBwQA
+        AeABBwH+AQMBAAEBAfgBHwHgAQcB/wEBAYABAQH4AR8B8AEPAf8BgQHAAQMB/AE/AfABDwH/AsABBwH8
+        AT8B8AEPAf8B8AL/AfwBPwH4AR8B/wH8AeAD/wHCAQMB/wHhAeABPwIAAYABAQH/AeABwAEPAgABgAEA
+        Af8BwAGAAQcCAAGAAQAB/wGAAQABAwIAAYABAAH/AYEBAAEDAgABgAEAAf8BAwEAAQECAAGAAQAB/wED
+        BAABgAEAAY4BBwHgBAABAQEMAQ8B/AQAAQMBAAEfAf4EAAEBAQABPwH/AQEDAAEBAQABPwH/AQMDAAEB
+        AcABYwH/AYcDAAEDAcABAwH/AccDAAEHAeABAwL/AgABAQEPAfABDwIAAv8BnwH/AYABAQIAAeMB/wGH
+        Af8BgAEBAgABwQH/AYEB/wGAAQECAAHAAf8BwAH/AYABAQIAAYABfwHAAf8BgAEBAgABgAE/AcAB/wGA
+        AQEDAAEfAeABPwGAAQEDAAEPAfABHwGAAQEDAAEHAfgBDwGAAQECAAEMAQcB/AEPAYABAQIAAR4BAwH8
+        AQcBgAEBAgABPwGBAf4BAwGAAQECAAH/AcAB/wEDAYABAQIAAf8B8AH/AYEBgAEBAgAB/wH4Af8BwQGA
+        AQECAAP/AeEBgAEBBP8B4AEDAYABAQGAAQEBgAEHAYABAQGAAQEDAAEDAgABgAEBAwABAQIAAYABAQMA
+        AQECAAGAAQEDAAEBAgABgAEBBgABgAEBBgABgAEBBgABgAEBBgABgAEBBgABgAEBBgAB/wHDAQABAQEA
+        AQEBAAEBAeEBhwEAAQEBAAEHAQABAQHgAQcBAAEHAQABDwEAAQcB8AEPAQABfwEAAf8BAAF/AfABDwEA
+        AQ8BhwHhAeABBwH+AQcBAAIDAsABAwH4AQcBAAIBAoABAQHAAQcGAAGAAQcGAAGAAQcCAAGAAQECAAGA
+        AQcCAAHAAQMCAAGAAQcCAAHgAQcCAAGAAQcCAAHgAQcCAAGAAQcCAAHAAQMCAAGAAQcCAAGAAQECAAGA
+        AQEGAAGAAQEGAAGAAQEBAAIBAoABAQGAAQMBAAH/AQMCwAEDAYABDwL/AYcB4QHgAQcBgAF/Af8B+AIA
+        AeMB/wHgAQcB/wHwAgABwQH/AYABAwHgASACAAGAAf8BgAEBAcABAQMAAX8BgAEBAcABAwMAAT8BgAEB
+        AYABBwMAAR8BgAEBAYABAQMAAQ8BgAEBBAABgAEHAYABAQQAAcABAwGAAQEEAAHgAQEBgAEBAQABAQIA
+        AfABAAGAAQEBAAEBAgAB+AEAAYABAQGAAQMCAAH8AQABgAEBAfABAwIAAf4BAQGAAQEB/AEHAgAB/wED
+        AYABAwH/AQcCAAH/AYcBwAEHAYAB/wIAAeABBwHgAQcBgAH/AgAB4AEHAcABAwGAAwABwAEBAYABAQGA
+        AwABgAMAAYABAAGAAQABgAMAAYADAAGAAwABgAMAAYADAAGAAwABgAMAAYADAAGAAwABgAMAAYADAAGA
+        AgABAQGAAwAB4AIAAQEBgAEBAgAB4AIAAQEBgAEBAgAB4AEBAQABAQHAAQMBgAEBAfAB9wGAAQEB8AED
+        AcABAwHwA/8B8AEDAfABBwX/AeEBgAG/AYABAAHgAT8B/wHAAQABAwGAAQAB4AEHAf8BgAIAAYABAAHA
+        AQEB/wMAAYABAAHAAQEB/gMAAYABAAHAAQEB/AEBAQABAQGAAQABgAEBAeABAwEAAQ8BgAEAAYABAQGA
+        AQcCAAGAAQABgAEBAQABDwGAAQABgAEAAYABAQEAAR8B4AEAAYABAAGAAQMBAAE/AeABAQGAAQABgAED
+        AQABPwHgAQEBgAEAAYABAwEAAT8BwAEBAYABAAHgAQcBAAF/AcABAQGAAQAB/gEHAcABfwHAAQEE/wHA
+        Af8BwAEDAgAC/wIAAcABAwIAAeMB/wYAAcMB/wYAAcABAQYAAcABAQYAAcABAQYAAcABAQYAAcABAQYA
+        AYABAQYAAYABAQYAAYABAQYAAYABAQIAAeABBwIAAYABAQIAAfABDwIAAYAB/wIAAfABBwIAAYAB/wIA
+        AfABBwIAAv8CAAHwAQcB/wGPAfABPwL/AeABBwH/AYcBgAEBAYABAQHAAQcB8AGDAgABgAEBAeABBwHg
+        AQMCAAGAAQEBgAEBAcABAQIAAYABAQMAAQECAAGAAQEGAAGAAQEGAAGAAQEGAAGAAQEGAAGAAQEGAAGA
+        AQEGAAGAAQECAAHAAgABAQGAAQECAAHgAgABAQGAAQEBAAEBAeACAAEHAYABAQEAAQEB/wHAAQABfwGA
+        AQEBgAEBAfgBTwHgBQAB+AEHAeAFAAHAAQMBwAUAAYABAwHABwABwAUAAYABAAGABwABgAUAAQEBgAYA
+        AQEIAAEBDgABgAEBBgABwAEDBgABwAEfBgAB8gEfAeABBwQABP8CAAL/AeABAwHwAQ8B4AEHAcABfwHg
+        AQAB4AEHAeABDwGAAQcB4AEAAcABAwIAAYABAAHAAQABgAEBAgABgAEAAYAHAAGABwABgAcAAYAGAAEB
+        AeAGAAEBAeAGAAEBAeAGAAEDAeAFAAGAAQMB8AIAAQECAAHAAQcB+AEAAYABAwIAAcABHwH8AQEBwAEH
+        AgAB4AF/Av8B4AEPAgAB4AH/AfgBHwT/AfgBPwHIARMB/gE/Av8BwAEfAZwBOQH8AR8BgAEHAQABDwEE
+        ASAB/AEfAYABAwEAAQcBBAEgAfgBPwGAAQEBAAEDAQQBIAHgAUMBgAEBAgABBAEgAcABAwGAAQEBgAMA
+        AYABAwGAAQEB4AMAAYABBwGAAQEB8AEAAQQBIAGAAR8BwAEBAfwBAAECAUABgAEDAfABAQH+AQECAAGA
+        AQEBwAEBAfwBAwIAAcABAQHAAQMB+AEDAYABAQHAAQMB4AEHAfABBwHAAQMBwAP/AeABDwHgAQcE/wHg
+        AQ8B/wEDBv8B8AEBAv8B+AEfAgAB4AMAAfgBAQIAAYADAAGAAwABgAEBAgABgAcAAYAHAAGADAABAQMA
+        AQEDAAEBAwABAQMAAQEDAAEDAwABAQMAAQMDAAEDAwABAwIAAYABAwIAAcABBwIAAcABBwL/AfABfwL/
+        AeABHwj/AYABPwL/AcABBwHnAf8BAAEfAfwBPwHAAQMBwAEBAQABHwH4AR8BwAEDAcABAQEAAR8B8AEP
+        AYABBwGAAQEBAAEfAeABDwGAAQcBgAEBAQABHwHAAQMBgAEHAYABAQEAAR8BgAEBAYABBwGAAQEBAAE/
+        AwABAwGAAQEBgAF/AwABAQGAAQEBgAEHBAABgAEBAYABAQQAAYABAQGABQABgAEDAYAFAAGAAQMBwAEA
+        AYEBAQIAAf8B5wHhAQACwwEAAR8D/wGBBP8BDwH/AfABDwIAAeABAwEHAf8B4AEHAgAB4AEDAQEB/wHA
+        AQMCAAHgAQMBAQH/AYABAQIAAfwBPwEAAX8EAAHgAR8BgAEPAgABgAEBAeABBwHAAQcCAAHAAQEB4AED
+        AeABAwIAAcABAwHgAQMB8AEBAgABwAEDAeABAwH4AwAB4AEHAeABAwH4AwAB4AEHAeABAwH4AwAB8AEP
+        AeABAwH4AgABAQH4AR8B4AEDAfwBAQGAAQMB+AEfAeABAwH+AQMBwAEHAfgBHwHwAQMB/wEHAeABDwH8
+        AT8B/AEDCw==
 </value>
   </data>
   <metadata name="m_ctxPwList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
diff --git a/KeePass/Forms/MainForm_Functions.cs b/KeePass/Forms/MainForm_Functions.cs
index 15ac1f7..1724008 100644
--- a/KeePass/Forms/MainForm_Functions.cs
+++ b/KeePass/Forms/MainForm_Functions.cs
@@ -242,6 +242,8 @@ namespace KeePass.Forms
 
 			Program.TriggerSystem.RaiseEvent(EcasEventIDs.AppExit);
 
+			MonoWorkarounds.Release(this);
+
 			m_nClipClearCur = -1;
 			if(Program.Config.Security.ClipboardClearOnExit)
 				ClipboardUtil.ClearIfOwner();
@@ -409,7 +411,7 @@ namespace KeePass.Forms
 
 				TaskbarList.SetOverlayIcon(this, Properties.Resources.LockOverlay,
 					KPRes.Locked);
-				NativeMethods.EnableWindowPeekPreview(this.Handle, false);
+				DwmUtil.EnableWindowPeekPreview(this, false);
 			}
 			else if(s.DatabaseOpened == false)
 			{
@@ -423,7 +425,7 @@ namespace KeePass.Forms
 				if(icoDisposable != null) icoDisposable.Dispose();
 
 				TaskbarList.SetOverlayIcon(this, null, string.Empty);
-				NativeMethods.EnableWindowPeekPreview(this.Handle, true);
+				DwmUtil.EnableWindowPeekPreview(this, true);
 			}
 			else // Database open and not locked
 			{
@@ -453,7 +455,7 @@ namespace KeePass.Forms
 				if(icoDisposable != null) icoDisposable.Dispose();
 
 				TaskbarList.SetOverlayIcon(this, null, string.Empty);
-				NativeMethods.EnableWindowPeekPreview(this.Handle, true);
+				DwmUtil.EnableWindowPeekPreview(this, true);
 			}
 
 			// Clip the strings again (it could be that a translator used
@@ -1955,13 +1957,14 @@ namespace KeePass.Forms
 			{
 				if(bOpenLocal)
 				{
-					OpenFileDialog ofdDb = UIUtil.CreateOpenFileDialog(KPRes.OpenDatabaseFile,
+					OpenFileDialogEx ofdDb = UIUtil.CreateOpenFileDialog(KPRes.OpenDatabaseFile,
 						UIUtil.CreateFileTypeFilter(AppDefs.FileExtension.FileExt,
-						KPRes.KdbxFiles, true), 1, null, false, false);
+						KPRes.KdbxFiles, true), 1, null, false,
+						AppDefs.FileDialogContext.Database);
 
-					GlobalWindowManager.AddDialog(ofdDb);
+					GlobalWindowManager.AddDialog(ofdDb.FileDialog);
 					DialogResult dr = ofdDb.ShowDialog();
-					GlobalWindowManager.RemoveDialog(ofdDb);
+					GlobalWindowManager.RemoveDialog(ofdDb.FileDialog);
 					if(dr != DialogResult.OK) return;
 
 					ioc = IOConnectionInfo.FromPath(ofdDb.FileName);
@@ -2526,6 +2529,8 @@ namespace KeePass.Forms
 				UpdateUIState(false, null); // Set overlay icon
 				m_bTaskbarButtonMessage = true;
 			}
+			// else if(m.Msg == DwmUtil.WM_DWMSENDICONICTHUMBNAIL)
+			//	DwmUtil.SetThumbnailIcon(this, Properties.Resources.KeePass, m.LParam);
 
 			base.WndProc(ref m);
 		}
@@ -2800,14 +2805,15 @@ namespace KeePass.Forms
 			}
 			else
 			{
-				SaveFileDialog sfdDb = UIUtil.CreateSaveFileDialog(KPRes.SaveDatabase,
+				SaveFileDialogEx sfdDb = UIUtil.CreateSaveFileDialog(KPRes.SaveDatabase,
 					UrlUtil.GetFileName(pd.IOConnectionInfo.Path),
 					UIUtil.CreateFileTypeFilter(AppDefs.FileExtension.FileExt,
-					KPRes.KdbxFiles, true), 1, AppDefs.FileExtension.FileExt, false, true);
+					KPRes.KdbxFiles, true), 1, AppDefs.FileExtension.FileExt,
+					AppDefs.FileDialogContext.Database);
 
-				GlobalWindowManager.AddDialog(sfdDb);
+				GlobalWindowManager.AddDialog(sfdDb.FileDialog);
 				dr = sfdDb.ShowDialog();
-				GlobalWindowManager.RemoveDialog(sfdDb);
+				GlobalWindowManager.RemoveDialog(sfdDb.FileDialog);
 
 				if(dr == DialogResult.OK)
 					ioc = IOConnectionInfo.FromPath(sfdDb.FileName);
@@ -3187,7 +3193,7 @@ namespace KeePass.Forms
 					if(bExiting) fso = FileSaveOrigin.Exiting;
 
 					DialogResult dr = FileDialogsEx.ShowFileSaveQuestion(
-						pd.IOConnectionInfo.GetDisplayName(), fso, this.Handle);
+						pd.IOConnectionInfo.GetDisplayName(), fso);
 
 					if(dr == DialogResult.Cancel) return;
 					else if(dr == DialogResult.Yes) bInvokeSave = true;
@@ -3674,7 +3680,7 @@ namespace KeePass.Forms
 
 		private DialogResult AskIfSynchronizeInstead(IOConnectionInfo ioc)
 		{
-			VistaTaskDialog dlg = new VistaTaskDialog(this.Handle);
+			VistaTaskDialog dlg = new VistaTaskDialog();
 
 			string strText = string.Empty;
 			if(ioc.GetDisplayName().Length > 0)
@@ -3845,7 +3851,7 @@ namespace KeePass.Forms
 			{
 				bool bSingle = (vSelected.Length == 1);
 
-				VistaTaskDialog dlg = new VistaTaskDialog(this.Handle);
+				VistaTaskDialog dlg = new VistaTaskDialog();
 				dlg.CommandLinks = false;
 				dlg.Content = EntryUtil.CreateSummaryList(null, vSelected);
 				dlg.MainInstruction = (bSingle ? KPRes.DeleteEntriesQuestionSingle :
@@ -3924,7 +3930,7 @@ namespace KeePass.Forms
 
 			if(bPermanent)
 			{
-				VistaTaskDialog dlg = new VistaTaskDialog(this.Handle);
+				VistaTaskDialog dlg = new VistaTaskDialog();
 				dlg.CommandLinks = false;
 				dlg.Content = KPRes.DeleteGroupInfo + EntryUtil.CreateSummaryList(pg, true);
 				dlg.MainInstruction = KPRes.DeleteGroupQuestion;
@@ -3974,7 +3980,7 @@ namespace KeePass.Forms
 			if(pg == null) { Debug.Assert(false); return; }
 			if(pg != GetSelectedGroup()) { Debug.Assert(false); return; }
 
-			VistaTaskDialog dlg = new VistaTaskDialog(this.Handle);
+			VistaTaskDialog dlg = new VistaTaskDialog();
 			dlg.CommandLinks = false;
 			dlg.Content = EntryUtil.CreateSummaryList(pg, false);
 			dlg.MainInstruction = KPRes.EmptyRecycleBinQuestion;
@@ -4092,7 +4098,7 @@ namespace KeePass.Forms
 
 			if(ioc.IsLocalFile()) // Expand relative path to absolute
 				ioc.Path = UrlUtil.MakeAbsolutePath(UrlUtil.EnsureTerminatingSeparator(
-					Directory.GetCurrentDirectory(), false) + "Sentinel", ioc.Path);
+					WinUtil.GetWorkingDirectory(), false) + "Sentinel", ioc.Path);
 
 			if(args[AppDefs.CommandLineOptions.IoCredFromRecent] != null)
 				ioc = CompleteConnectionInfoUsingMru(ioc);
@@ -4671,7 +4677,7 @@ namespace KeePass.Forms
 			SetStatusEx(str);
 			if(!bDbMntnc || !Program.Config.UI.ShowDbMntncResultsDialog) return;
 
-			VistaTaskDialog dlg = new VistaTaskDialog(this.Handle);
+			VistaTaskDialog dlg = new VistaTaskDialog();
 			dlg.CommandLinks = false;
 			dlg.Content = str;
 			dlg.SetIcon(VtdIcon.Information);
diff --git a/KeePass/Forms/OptionsForm.cs b/KeePass/Forms/OptionsForm.cs
index a061396..e78034a 100644
--- a/KeePass/Forms/OptionsForm.cs
+++ b/KeePass/Forms/OptionsForm.cs
@@ -508,6 +508,8 @@ namespace KeePass.Forms
 				lvg, KPRes.SameKeybLayout);
 			m_cdxAdvanced.CreateItem(Program.Config.Integration, "AutoTypeCancelOnWindowChange",
 				lvg, KPRes.AutoTypeCancelOnWindowChange);
+			m_cdxAdvanced.CreateItem(Program.Config.Integration, "AutoTypeCancelOnTitleChange",
+				lvg, KPRes.AutoTypeCancelOnTitleChange);
 
 			lvg = new ListViewGroup(KPRes.Advanced);
 			m_lvAdvanced.Groups.Add(lvg);
@@ -525,6 +527,8 @@ namespace KeePass.Forms
 
 			m_cdxAdvanced.CreateItem(Program.Config.Defaults, "RememberKeySources",
 				lvg, KPRes.RememberKeySources);
+			m_cdxAdvanced.CreateItem(Program.Config.Application, "RememberWorkingDirectories",
+				lvg, KPRes.RememberWorkingDirectories);
 			m_cdxAdvanced.CreateItem(Program.Config.UI.Hiding, "SeparateHidingSettings",
 				lvg, KPRes.RememberHidingSettings);
 			m_cdxAdvanced.CreateItem(Program.Config.UI.Hiding, "UnhideButtonAlsoUnhidesSource",
diff --git a/KeePass/Forms/PwEntryForm.Designer.cs b/KeePass/Forms/PwEntryForm.Designer.cs
index e189648..cc86f7d 100644
--- a/KeePass/Forms/PwEntryForm.Designer.cs
+++ b/KeePass/Forms/PwEntryForm.Designer.cs
@@ -67,21 +67,17 @@
 			this.m_ttBalloon = new System.Windows.Forms.ToolTip(this.components);
 			this.m_tabMain = new System.Windows.Forms.TabControl();
 			this.m_tabEntry = new System.Windows.Forms.TabPage();
-			this.m_rtNotes = new KeePass.UI.CustomRichTextBoxEx();
-			this.m_pbQuality = new KeePass.UI.QualityProgressBar();
 			this.m_tabAdvanced = new System.Windows.Forms.TabPage();
 			this.m_grpAttachments = new System.Windows.Forms.GroupBox();
 			this.m_btnBinView = new System.Windows.Forms.Button();
 			this.m_btnBinSave = new System.Windows.Forms.Button();
 			this.m_btnBinDelete = new System.Windows.Forms.Button();
 			this.m_btnBinAdd = new System.Windows.Forms.Button();
-			this.m_lvBinaries = new KeePass.UI.CustomListViewEx();
 			this.m_grpStringFields = new System.Windows.Forms.GroupBox();
 			this.m_btnStrMove = new System.Windows.Forms.Button();
 			this.m_btnStrAdd = new System.Windows.Forms.Button();
 			this.m_btnStrEdit = new System.Windows.Forms.Button();
 			this.m_btnStrDelete = new System.Windows.Forms.Button();
-			this.m_lvStrings = new KeePass.UI.CustomListViewEx();
 			this.m_ctxListOperations = new System.Windows.Forms.ContextMenuStrip(this.components);
 			this.m_menuListCtxCopyFieldValue = new System.Windows.Forms.ToolStripMenuItem();
 			this.m_tabProperties = new System.Windows.Forms.TabPage();
@@ -107,12 +103,10 @@
 			this.m_btnAutoTypeEdit = new System.Windows.Forms.Button();
 			this.m_btnAutoTypeAdd = new System.Windows.Forms.Button();
 			this.m_btnAutoTypeDelete = new System.Windows.Forms.Button();
-			this.m_lvAutoType = new KeePass.UI.CustomListViewEx();
 			this.m_tabHistory = new System.Windows.Forms.TabPage();
 			this.m_btnHistoryDelete = new System.Windows.Forms.Button();
 			this.m_btnHistoryView = new System.Windows.Forms.Button();
 			this.m_btnHistoryRestore = new System.Windows.Forms.Button();
-			this.m_lvHistory = new KeePass.UI.CustomListViewEx();
 			this.m_btnTools = new System.Windows.Forms.Button();
 			this.m_bannerImage = new System.Windows.Forms.PictureBox();
 			this.m_ctxStrMoveToStandard = new System.Windows.Forms.ContextMenuStrip(this.components);
@@ -142,6 +136,12 @@
 			this.m_ctxBinImportFile = new System.Windows.Forms.ToolStripMenuItem();
 			this.m_ctxBinSep0 = new System.Windows.Forms.ToolStripSeparator();
 			this.m_ctxBinNew = new System.Windows.Forms.ToolStripMenuItem();
+			this.m_rtNotes = new KeePass.UI.CustomRichTextBoxEx();
+			this.m_pbQuality = new KeePass.UI.QualityProgressBar();
+			this.m_lvBinaries = new KeePass.UI.CustomListViewEx();
+			this.m_lvStrings = new KeePass.UI.CustomListViewEx();
+			this.m_lvAutoType = new KeePass.UI.CustomListViewEx();
+			this.m_lvHistory = new KeePass.UI.CustomListViewEx();
 			this.m_ctxDefaultTimes.SuspendLayout();
 			this.m_tabMain.SuspendLayout();
 			this.m_tabEntry.SuspendLayout();
@@ -501,28 +501,6 @@
 			this.m_tabEntry.Text = "Entry";
 			this.m_tabEntry.UseVisualStyleBackColor = true;
 			// 
-			// m_rtNotes
-			// 
-			this.m_rtNotes.Location = new System.Drawing.Point(81, 167);
-			this.m_rtNotes.Name = "m_rtNotes";
-			this.m_rtNotes.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
-			this.m_rtNotes.Size = new System.Drawing.Size(374, 140);
-			this.m_rtNotes.TabIndex = 18;
-			this.m_rtNotes.Text = "";
-			this.m_rtNotes.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.OnNotesLinkClicked);
-			// 
-			// m_pbQuality
-			// 
-			this.m_pbQuality.Location = new System.Drawing.Point(81, 118);
-			this.m_pbQuality.Maximum = 100;
-			this.m_pbQuality.Minimum = 0;
-			this.m_pbQuality.Name = "m_pbQuality";
-			this.m_pbQuality.Size = new System.Drawing.Size(283, 16);
-			this.m_pbQuality.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
-			this.m_pbQuality.TabIndex = 13;
-			this.m_pbQuality.TabStop = false;
-			this.m_pbQuality.Value = 50;
-			// 
 			// m_tabAdvanced
 			// 
 			this.m_tabAdvanced.Controls.Add(this.m_grpAttachments);
@@ -589,23 +567,6 @@
 			this.m_btnBinAdd.UseVisualStyleBackColor = true;
 			this.m_btnBinAdd.Click += new System.EventHandler(this.OnBtnBinAdd);
 			// 
-			// m_lvBinaries
-			// 
-			this.m_lvBinaries.FullRowSelect = true;
-			this.m_lvBinaries.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
-			this.m_lvBinaries.HideSelection = false;
-			this.m_lvBinaries.LabelEdit = true;
-			this.m_lvBinaries.Location = new System.Drawing.Point(6, 20);
-			this.m_lvBinaries.Name = "m_lvBinaries";
-			this.m_lvBinaries.ShowItemToolTips = true;
-			this.m_lvBinaries.Size = new System.Drawing.Size(362, 135);
-			this.m_lvBinaries.TabIndex = 0;
-			this.m_lvBinaries.UseCompatibleStateImageBehavior = false;
-			this.m_lvBinaries.View = System.Windows.Forms.View.Details;
-			this.m_lvBinaries.ItemActivate += new System.EventHandler(this.OnBinariesItemActivate);
-			this.m_lvBinaries.AfterLabelEdit += new System.Windows.Forms.LabelEditEventHandler(this.OnBinAfterLabelEdit);
-			this.m_lvBinaries.SelectedIndexChanged += new System.EventHandler(this.OnBinariesSelectedIndexChanged);
-			// 
 			// m_grpStringFields
 			// 
 			this.m_grpStringFields.Controls.Add(this.m_btnStrMove);
@@ -660,22 +621,6 @@
 			this.m_btnStrDelete.UseVisualStyleBackColor = true;
 			this.m_btnStrDelete.Click += new System.EventHandler(this.OnBtnStrDelete);
 			// 
-			// m_lvStrings
-			// 
-			this.m_lvStrings.ContextMenuStrip = this.m_ctxListOperations;
-			this.m_lvStrings.FullRowSelect = true;
-			this.m_lvStrings.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
-			this.m_lvStrings.HideSelection = false;
-			this.m_lvStrings.Location = new System.Drawing.Point(6, 20);
-			this.m_lvStrings.Name = "m_lvStrings";
-			this.m_lvStrings.ShowItemToolTips = true;
-			this.m_lvStrings.Size = new System.Drawing.Size(362, 135);
-			this.m_lvStrings.TabIndex = 0;
-			this.m_lvStrings.UseCompatibleStateImageBehavior = false;
-			this.m_lvStrings.View = System.Windows.Forms.View.Details;
-			this.m_lvStrings.ItemActivate += new System.EventHandler(this.OnStringsItemActivate);
-			this.m_lvStrings.SelectedIndexChanged += new System.EventHandler(this.OnStringsSelectedIndexChanged);
-			// 
 			// m_ctxListOperations
 			// 
 			this.m_ctxListOperations.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -932,22 +877,6 @@
 			this.m_btnAutoTypeDelete.UseVisualStyleBackColor = true;
 			this.m_btnAutoTypeDelete.Click += new System.EventHandler(this.OnBtnAutoTypeDelete);
 			// 
-			// m_lvAutoType
-			// 
-			this.m_lvAutoType.ContextMenuStrip = this.m_ctxListOperations;
-			this.m_lvAutoType.FullRowSelect = true;
-			this.m_lvAutoType.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
-			this.m_lvAutoType.HideSelection = false;
-			this.m_lvAutoType.Location = new System.Drawing.Point(9, 134);
-			this.m_lvAutoType.Name = "m_lvAutoType";
-			this.m_lvAutoType.ShowItemToolTips = true;
-			this.m_lvAutoType.Size = new System.Drawing.Size(367, 170);
-			this.m_lvAutoType.TabIndex = 6;
-			this.m_lvAutoType.UseCompatibleStateImageBehavior = false;
-			this.m_lvAutoType.View = System.Windows.Forms.View.Details;
-			this.m_lvAutoType.ItemActivate += new System.EventHandler(this.OnAutoTypeItemActivate);
-			this.m_lvAutoType.SelectedIndexChanged += new System.EventHandler(this.OnAutoTypeSelectedIndexChanged);
-			// 
 			// m_tabHistory
 			// 
 			this.m_tabHistory.Controls.Add(this.m_btnHistoryDelete);
@@ -992,21 +921,6 @@
 			this.m_btnHistoryRestore.UseVisualStyleBackColor = true;
 			this.m_btnHistoryRestore.Click += new System.EventHandler(this.OnBtnHistoryRestore);
 			// 
-			// m_lvHistory
-			// 
-			this.m_lvHistory.FullRowSelect = true;
-			this.m_lvHistory.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
-			this.m_lvHistory.HideSelection = false;
-			this.m_lvHistory.Location = new System.Drawing.Point(9, 13);
-			this.m_lvHistory.Name = "m_lvHistory";
-			this.m_lvHistory.ShowItemToolTips = true;
-			this.m_lvHistory.Size = new System.Drawing.Size(447, 288);
-			this.m_lvHistory.TabIndex = 0;
-			this.m_lvHistory.UseCompatibleStateImageBehavior = false;
-			this.m_lvHistory.View = System.Windows.Forms.View.Details;
-			this.m_lvHistory.ItemActivate += new System.EventHandler(this.OnHistoryItemActivate);
-			this.m_lvHistory.SelectedIndexChanged += new System.EventHandler(this.OnHistorySelectedIndexChanged);
-			// 
 			// m_btnTools
 			// 
 			this.m_btnTools.Location = new System.Drawing.Point(6, 453);
@@ -1080,7 +994,7 @@
             this.m_ctxPwGenSep0,
             this.m_ctxPwGenProfiles});
 			this.m_ctxPwGen.Name = "m_ctxPwGen";
-			this.m_ctxPwGen.Size = new System.Drawing.Size(229, 76);
+			this.m_ctxPwGen.Size = new System.Drawing.Size(229, 54);
 			// 
 			// m_ctxPwGenOpen
 			// 
@@ -1233,6 +1147,96 @@
 			this.m_ctxBinNew.Text = "&Create Empty Attachment";
 			this.m_ctxBinNew.Click += new System.EventHandler(this.OnCtxBinNew);
 			// 
+			// m_rtNotes
+			// 
+			this.m_rtNotes.Location = new System.Drawing.Point(81, 167);
+			this.m_rtNotes.Name = "m_rtNotes";
+			this.m_rtNotes.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
+			this.m_rtNotes.Size = new System.Drawing.Size(374, 140);
+			this.m_rtNotes.TabIndex = 18;
+			this.m_rtNotes.Text = "";
+			this.m_rtNotes.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.OnNotesLinkClicked);
+			// 
+			// m_pbQuality
+			// 
+			this.m_pbQuality.Location = new System.Drawing.Point(81, 118);
+			this.m_pbQuality.Maximum = 100;
+			this.m_pbQuality.Minimum = 0;
+			this.m_pbQuality.Name = "m_pbQuality";
+			this.m_pbQuality.Size = new System.Drawing.Size(283, 16);
+			this.m_pbQuality.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
+			this.m_pbQuality.TabIndex = 13;
+			this.m_pbQuality.TabStop = false;
+			this.m_pbQuality.Value = 50;
+			// 
+			// m_lvBinaries
+			// 
+			this.m_lvBinaries.AllowDrop = true;
+			this.m_lvBinaries.FullRowSelect = true;
+			this.m_lvBinaries.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
+			this.m_lvBinaries.HideSelection = false;
+			this.m_lvBinaries.LabelEdit = true;
+			this.m_lvBinaries.Location = new System.Drawing.Point(6, 20);
+			this.m_lvBinaries.Name = "m_lvBinaries";
+			this.m_lvBinaries.ShowItemToolTips = true;
+			this.m_lvBinaries.Size = new System.Drawing.Size(362, 135);
+			this.m_lvBinaries.TabIndex = 0;
+			this.m_lvBinaries.UseCompatibleStateImageBehavior = false;
+			this.m_lvBinaries.View = System.Windows.Forms.View.Details;
+			this.m_lvBinaries.ItemActivate += new System.EventHandler(this.OnBinariesItemActivate);
+			this.m_lvBinaries.AfterLabelEdit += new System.Windows.Forms.LabelEditEventHandler(this.OnBinAfterLabelEdit);
+			this.m_lvBinaries.SelectedIndexChanged += new System.EventHandler(this.OnBinariesSelectedIndexChanged);
+			this.m_lvBinaries.DragDrop += new System.Windows.Forms.DragEventHandler(this.OnBinDragDrop);
+			this.m_lvBinaries.DragEnter += new System.Windows.Forms.DragEventHandler(this.OnBinDragEnter);
+			this.m_lvBinaries.DragOver += new System.Windows.Forms.DragEventHandler(this.OnBinDragOver);
+			// 
+			// m_lvStrings
+			// 
+			this.m_lvStrings.ContextMenuStrip = this.m_ctxListOperations;
+			this.m_lvStrings.FullRowSelect = true;
+			this.m_lvStrings.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
+			this.m_lvStrings.HideSelection = false;
+			this.m_lvStrings.Location = new System.Drawing.Point(6, 20);
+			this.m_lvStrings.Name = "m_lvStrings";
+			this.m_lvStrings.ShowItemToolTips = true;
+			this.m_lvStrings.Size = new System.Drawing.Size(362, 135);
+			this.m_lvStrings.TabIndex = 0;
+			this.m_lvStrings.UseCompatibleStateImageBehavior = false;
+			this.m_lvStrings.View = System.Windows.Forms.View.Details;
+			this.m_lvStrings.ItemActivate += new System.EventHandler(this.OnStringsItemActivate);
+			this.m_lvStrings.SelectedIndexChanged += new System.EventHandler(this.OnStringsSelectedIndexChanged);
+			// 
+			// m_lvAutoType
+			// 
+			this.m_lvAutoType.ContextMenuStrip = this.m_ctxListOperations;
+			this.m_lvAutoType.FullRowSelect = true;
+			this.m_lvAutoType.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
+			this.m_lvAutoType.HideSelection = false;
+			this.m_lvAutoType.Location = new System.Drawing.Point(9, 134);
+			this.m_lvAutoType.Name = "m_lvAutoType";
+			this.m_lvAutoType.ShowItemToolTips = true;
+			this.m_lvAutoType.Size = new System.Drawing.Size(367, 170);
+			this.m_lvAutoType.TabIndex = 6;
+			this.m_lvAutoType.UseCompatibleStateImageBehavior = false;
+			this.m_lvAutoType.View = System.Windows.Forms.View.Details;
+			this.m_lvAutoType.ItemActivate += new System.EventHandler(this.OnAutoTypeItemActivate);
+			this.m_lvAutoType.SelectedIndexChanged += new System.EventHandler(this.OnAutoTypeSelectedIndexChanged);
+			// 
+			// m_lvHistory
+			// 
+			this.m_lvHistory.FullRowSelect = true;
+			this.m_lvHistory.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
+			this.m_lvHistory.HideSelection = false;
+			this.m_lvHistory.Location = new System.Drawing.Point(9, 13);
+			this.m_lvHistory.Name = "m_lvHistory";
+			this.m_lvHistory.ShowItemToolTips = true;
+			this.m_lvHistory.Size = new System.Drawing.Size(447, 288);
+			this.m_lvHistory.TabIndex = 0;
+			this.m_lvHistory.UseCompatibleStateImageBehavior = false;
+			this.m_lvHistory.View = System.Windows.Forms.View.Details;
+			this.m_lvHistory.ItemActivate += new System.EventHandler(this.OnHistoryItemActivate);
+			this.m_lvHistory.SelectedIndexChanged += new System.EventHandler(this.OnHistorySelectedIndexChanged);
+			// 
 			// PwEntryForm
 			// 
 			this.AcceptButton = this.m_btnOK;
diff --git a/KeePass/Forms/PwEntryForm.cs b/KeePass/Forms/PwEntryForm.cs
index 37bc5b3..a20a5f2 100644
--- a/KeePass/Forms/PwEntryForm.cs
+++ b/KeePass/Forms/PwEntryForm.cs
@@ -943,8 +943,9 @@ namespace KeePass.Forms
 
 			if(nSelCount == 1)
 			{
-				SaveFileDialog sfd = UIUtil.CreateSaveFileDialog(KPRes.AttachmentSave,
-					lvsc[0].Text, UIUtil.CreateFileTypeFilter(null, null, true), 1, null, false);
+				SaveFileDialogEx sfd = UIUtil.CreateSaveFileDialog(KPRes.AttachmentSave,
+					lvsc[0].Text, UIUtil.CreateFileTypeFilter(null, null, true), 1, null,
+					AppDefs.FileDialogContext.Attachments);
 
 				if(sfd.ShowDialog() == DialogResult.OK)
 					SaveAttachmentTo(lvsc[0], sfd.FileName, false);
@@ -1532,8 +1533,8 @@ namespace KeePass.Forms
 			if(strFilter != null) strFlt += strFilter;
 			strFlt += KPRes.AllFiles + @" (*.*)|*.*";
 
-			OpenFileDialog dlg = UIUtil.CreateOpenFileDialog(null, strFlt, 1, null,
-				false, false);
+			OpenFileDialogEx dlg = UIUtil.CreateOpenFileDialog(null, strFlt, 1, null,
+				false, AppDefs.FileDialogContext.Attachments);
 
 			if(dlg.ShowDialog() == DialogResult.OK)
 				m_tbUrl.Text = "cmd://\"" + dlg.FileName + "\"";
@@ -1662,70 +1663,78 @@ namespace KeePass.Forms
 		{
 			if(m_pwEditMode == PwEditMode.ViewReadOnlyEntry) return;
 
-			OpenFileDialog ofd = UIUtil.CreateOpenFileDialog(KPRes.AttachFiles,
-				UIUtil.CreateFileTypeFilter(null, null, true), 1, null, true, true);
+			OpenFileDialogEx ofd = UIUtil.CreateOpenFileDialog(KPRes.AttachFiles,
+				UIUtil.CreateFileTypeFilter(null, null, true), 1, null, true,
+				AppDefs.FileDialogContext.Attachments);
 
 			if(ofd.ShowDialog() == DialogResult.OK)
+				BinImportFiles(ofd.FileNames);
+		}
+
+		private void BinImportFiles(string[] vPaths)
+		{
+			if(vPaths == null) { Debug.Assert(false); return; }
+
+			UpdateEntryBinaries(true, false);
+
+			foreach(string strFile in vPaths)
 			{
-				UpdateEntryBinaries(true, false);
+				if(string.IsNullOrEmpty(strFile)) { Debug.Assert(false); continue; }
+
+				byte[] vBytes = null;
+				string strMsg, strItem = UrlUtil.GetFileName(strFile);
 
-				foreach(string strFile in ofd.FileNames)
+				if(m_vBinaries.Get(strItem) != null)
 				{
-					byte[] vBytes = null;
-					string strMsg, strItem = UrlUtil.GetFileName(strFile);
+					strMsg = KPRes.AttachedExistsAlready + MessageService.NewLine +
+						strItem + MessageService.NewParagraph + KPRes.AttachNewRename +
+						MessageService.NewParagraph + KPRes.AttachNewRenameRemarks0 +
+						MessageService.NewLine + KPRes.AttachNewRenameRemarks1 +
+						MessageService.NewLine + KPRes.AttachNewRenameRemarks2;
 
-					if(m_vBinaries.Get(strItem) != null)
-					{
-						strMsg = KPRes.AttachedExistsAlready + MessageService.NewLine +
-							strItem + MessageService.NewParagraph + KPRes.AttachNewRename +
-							MessageService.NewParagraph + KPRes.AttachNewRenameRemarks0 +
-							MessageService.NewLine + KPRes.AttachNewRenameRemarks1 +
-							MessageService.NewLine + KPRes.AttachNewRenameRemarks2;
+					DialogResult dr = MessageService.Ask(strMsg, null,
+						MessageBoxButtons.YesNoCancel);
 
-						DialogResult dr = MessageService.Ask(strMsg, null,
-							MessageBoxButtons.YesNoCancel);
+					if(dr == DialogResult.Cancel) continue;
+					else if(dr == DialogResult.Yes)
+					{
+						string strFileName = UrlUtil.StripExtension(strItem);
+						string strExtension = "." + UrlUtil.GetExtension(strItem);
 
-						if(dr == DialogResult.Cancel) continue;
-						else if(dr == DialogResult.Yes)
+						int nTry = 0;
+						while(true)
 						{
-							string strFileName = UrlUtil.StripExtension(strItem);
-							string strExtension = "." + UrlUtil.GetExtension(strItem);
-
-							int nTry = 0;
-							while(true)
+							string strNewName = strFileName + nTry.ToString() + strExtension;
+							if(m_vBinaries.Get(strNewName) == null)
 							{
-								string strNewName = strFileName + nTry.ToString() + strExtension;
-								if(m_vBinaries.Get(strNewName) == null)
-								{
-									strItem = strNewName;
-									break;
-								}
-
-								++nTry;
+								strItem = strNewName;
+								break;
 							}
+
+							++nTry;
 						}
 					}
+				}
 
-					try
-					{
-						vBytes = File.ReadAllBytes(strFile);
-						vBytes = DataEditorForm.ConvertAttachment(strItem, vBytes);
+				try
+				{
+					vBytes = File.ReadAllBytes(strFile);
+					vBytes = DataEditorForm.ConvertAttachment(strItem, vBytes);
 
-						if(vBytes != null)
-						{
-							ProtectedBinary pb = new ProtectedBinary(false, vBytes);
-							m_vBinaries.Set(strItem, pb);
-						}
-					}
-					catch(Exception exAttach)
+					if(vBytes != null)
 					{
-						MessageService.ShowWarning(KPRes.AttachFailed, strFile, exAttach);
+						ProtectedBinary pb = new ProtectedBinary(false, vBytes);
+						m_vBinaries.Set(strItem, pb);
 					}
 				}
-
-				UpdateEntryBinaries(false, true);
-				ResizeColumnHeaders();
+				catch(Exception exAttach)
+				{
+					MessageService.ShowWarning(KPRes.AttachFailed, strFile, exAttach);
+				}
 			}
+
+			UpdateEntryBinaries(false, true);
+			ResizeColumnHeaders();
 		}
 
 		private void OnCtxBinNew(object sender, EventArgs e)
@@ -1779,5 +1788,34 @@ namespace KeePass.Forms
 
 			UpdateEntryBinaries(false, true, strNew);
 		}
+
+		private void BinDragAccept(DragEventArgs e)
+		{
+			if(e == null) { Debug.Assert(false); return; }
+
+			IDataObject ido = e.Data;
+			if((ido == null) || !ido.GetDataPresent(DataFormats.FileDrop))
+				e.Effect = DragDropEffects.None;
+			else e.Effect = DragDropEffects.Copy;
+		}
+
+		private void OnBinDragEnter(object sender, DragEventArgs e)
+		{
+			BinDragAccept(e);
+		}
+
+		private void OnBinDragOver(object sender, DragEventArgs e)
+		{
+			BinDragAccept(e);
+		}
+
+		private void OnBinDragDrop(object sender, DragEventArgs e)
+		{
+			try
+			{
+				BinImportFiles(e.Data.GetData(DataFormats.FileDrop) as string[]);
+			}
+			catch(Exception) { Debug.Assert(false); }
+		}
 	}
 }
diff --git a/KeePass/Forms/PwGeneratorForm.cs b/KeePass/Forms/PwGeneratorForm.cs
index 1fd6be8..750b772 100644
--- a/KeePass/Forms/PwGeneratorForm.cs
+++ b/KeePass/Forms/PwGeneratorForm.cs
@@ -536,7 +536,7 @@ namespace KeePass.Forms
 			}
 			
 			m_pbPreview.Value = 100;
-			m_tbPreview.Text = sbList.ToString();
+			UIUtil.SetMultilineText(m_tbPreview, sbList.ToString());
 
 			this.Cursor = cNormalCursor;
 		}
diff --git a/KeePass/Forms/StatusLoggerForm.cs b/KeePass/Forms/StatusLoggerForm.cs
index 2f7bd06..13fdd0f 100644
--- a/KeePass/Forms/StatusLoggerForm.cs
+++ b/KeePass/Forms/StatusLoggerForm.cs
@@ -168,7 +168,7 @@ namespace KeePass.Forms
 				return;
 			}
 
-			m_tbDetails.Text = slvic[0].Text;
+			UIUtil.SetMultilineText(m_tbDetails, slvic[0].Text);
 		}
 
 		private void OnFormClosed(object sender, FormClosedEventArgs e)
diff --git a/KeePass/KeePass.csproj b/KeePass/KeePass.csproj
index 87f61d0..0013d09 100644
--- a/KeePass/KeePass.csproj
+++ b/KeePass/KeePass.csproj
@@ -240,17 +240,17 @@
     <Compile Include="..\KeePassLib\Serialization\IOConnectionInfo.cs">
       <Link>KeePassLib\Serialization\IOConnectionInfo.cs</Link>
     </Compile>
-    <Compile Include="..\KeePassLib\Serialization\Kdb4File.cs">
-      <Link>KeePassLib\Serialization\Kdb4File.cs</Link>
+    <Compile Include="..\KeePassLib\Serialization\KdbxFile.cs">
+      <Link>KeePassLib\Serialization\KdbxFile.cs</Link>
     </Compile>
-    <Compile Include="..\KeePassLib\Serialization\Kdb4File.Read.cs">
-      <Link>KeePassLib\Serialization\Kdb4File.Read.cs</Link>
+    <Compile Include="..\KeePassLib\Serialization\KdbxFile.Read.cs">
+      <Link>KeePassLib\Serialization\KdbxFile.Read.cs</Link>
     </Compile>
-    <Compile Include="..\KeePassLib\Serialization\Kdb4File.Read.Streamed.cs">
-      <Link>KeePassLib\Serialization\Kdb4File.Read.Streamed.cs</Link>
+    <Compile Include="..\KeePassLib\Serialization\KdbxFile.Read.Streamed.cs">
+      <Link>KeePassLib\Serialization\KdbxFile.Read.Streamed.cs</Link>
     </Compile>
-    <Compile Include="..\KeePassLib\Serialization\Kdb4File.Write.cs">
-      <Link>KeePassLib\Serialization\Kdb4File.Write.cs</Link>
+    <Compile Include="..\KeePassLib\Serialization\KdbxFile.Write.cs">
+      <Link>KeePassLib\Serialization\KdbxFile.Write.cs</Link>
     </Compile>
     <Compile Include="..\KeePassLib\Serialization\OldFormatException.cs">
       <Link>KeePassLib\Serialization\OldFormatException.cs</Link>
@@ -276,6 +276,9 @@
     <Compile Include="..\KeePassLib\Utility\AppLogEx.cs">
       <Link>KeePassLib\Utility\AppLogEx.cs</Link>
     </Compile>
+    <Compile Include="..\KeePassLib\Utility\GfxUtil.cs">
+      <Link>KeePassLib\Utility\GfxUtil.cs</Link>
+    </Compile>
     <Compile Include="..\KeePassLib\Utility\MemUtil.cs">
       <Link>KeePassLib\Utility\MemUtil.cs</Link>
     </Compile>
@@ -316,11 +319,13 @@
     <Compile Include="DataExchange\Formats\AnyPwCsv144.cs" />
     <Compile Include="DataExchange\Formats\CodeWalletTxt605.cs" />
     <Compile Include="DataExchange\Formats\DataVaultCsv47.cs" />
+    <Compile Include="DataExchange\Formats\DesktopKnox32.cs" />
     <Compile Include="DataExchange\Formats\FlexWalletXml17.cs" />
     <Compile Include="DataExchange\Formats\GenericCsv.cs" />
     <Compile Include="DataExchange\Formats\HandySafeProXml12.cs" />
     <Compile Include="DataExchange\Formats\HandySafeTxt512.cs" />
     <Compile Include="DataExchange\Formats\KasperskyPwMgrXml50.cs" />
+    <Compile Include="DataExchange\Formats\KeePassCsv1x.cs" />
     <Compile Include="DataExchange\Formats\KeePassHtml2x.cs" />
     <Compile Include="DataExchange\Formats\KeePassKdb1x.cs" />
     <Compile Include="DataExchange\Formats\KeePassKdb2x.cs" />
@@ -359,8 +364,8 @@
     <Compile Include="DataExchange\Formats\ZdnPwProTxt314.cs" />
     <Compile Include="DataExchange\ImportUtil.cs" />
     <Compile Include="DataExchange\Json.cs" />
-    <Compile Include="DataExchange\Kdb3File.cs" />
-    <Compile Include="DataExchange\Kdb3Manager.cs" />
+    <Compile Include="DataExchange\KdbFile.cs" />
+    <Compile Include="DataExchange\KdbManager.cs" />
     <Compile Include="DataExchange\PwExportInfo.cs" />
     <Compile Include="Ecas\EcasContext.cs" />
     <Compile Include="Ecas\EcasEnum.cs" />
@@ -699,6 +704,7 @@
       <SubType>Component</SubType>
     </Compile>
     <Compile Include="UI\DocumentManagerEx.cs" />
+    <Compile Include="UI\DwmUtil.cs" />
     <Compile Include="UI\ExpiryControlGroup.cs" />
     <Compile Include="UI\FileDialogsEx.cs" />
     <Compile Include="UI\FontUtil.cs" />
@@ -948,7 +954,7 @@
     <Compile Include="Util\ClipboardContents.cs" />
     <Compile Include="Util\ClipboardEventChainBlocker.cs" />
     <Compile Include="Util\ClipboardUtil.cs" />
-    <Compile Include="Util\ClipboardUtil.MacOSX.cs" />
+    <Compile Include="Util\ClipboardUtil.Unix.cs" />
     <Compile Include="Util\ClipboardUtil.Windows.cs" />
     <Compile Include="Util\CommandLineArgs.cs" />
     <Compile Include="Ecas\EcasActionType.cs" />
@@ -1124,6 +1130,7 @@
   </ItemGroup>
   <ItemGroup>
     <Content Include="KeePass.ico" />
+    <None Include="Resources\Images\B16x16_Imp_DesktopKnox.png" />
     <None Include="Resources\Nuvola_Derived\B16x16_Key_New.png" />
     <None Include="Resources\Nuvola_Derived\B16x16_EditCopyLink.png" />
     <None Include="Resources\Images\B16x16_Imp_KasperskyPwMgr.png" />
diff --git a/KeePass/Native/NativeMethods.Defs.cs b/KeePass/Native/NativeMethods.Defs.cs
index 46b33c6..6d8acee 100644
--- a/KeePass/Native/NativeMethods.Defs.cs
+++ b/KeePass/Native/NativeMethods.Defs.cs
@@ -160,8 +160,6 @@ namespace KeePass.Native
 
 		internal const int OFN_DONTADDTORECENT = 0x02000000;
 
-		internal const uint DWMWA_DISALLOW_PEEK = 11;
-
 		internal const uint SHGFI_DISPLAYNAME = 0x000000200;
 		internal const uint SHGFI_ICON = 0x000000100;
 		internal const uint SHGFI_TYPENAME = 0x000000400;
diff --git a/KeePass/Native/NativeMethods.New.cs b/KeePass/Native/NativeMethods.New.cs
index 8d2c89d..7867518 100644
--- a/KeePass/Native/NativeMethods.New.cs
+++ b/KeePass/Native/NativeMethods.New.cs
@@ -277,14 +277,6 @@ namespace KeePass.Native
 			catch(Exception) { Debug.Assert(!WinUtil.IsAtLeastWindows7); }
 		} */
 
-		internal static void EnableWindowPeekPreview(IntPtr hWnd, bool bEnable)
-		{
-			int iNoPeek = (bEnable ? 0 : 1);
-
-			try { DwmSetWindowAttributeInt(hWnd, DWMWA_DISALLOW_PEEK, ref iNoPeek, 4); }
-			catch(Exception) { Debug.Assert(!WinUtil.IsAtLeastWindowsVista); }
-		}
-
 		internal static uint? GetLastInputTime()
 		{
 			try
diff --git a/KeePass/Native/NativeMethods.Unix.cs b/KeePass/Native/NativeMethods.Unix.cs
index 812a3df..8544892 100644
--- a/KeePass/Native/NativeMethods.Unix.cs
+++ b/KeePass/Native/NativeMethods.Unix.cs
@@ -22,6 +22,7 @@ using System.Collections.Generic;
 using System.Text;
 using System.Windows.Forms;
 using System.Runtime.InteropServices;
+using System.Reflection;
 using System.Diagnostics;
 
 using KeePass.UI;
@@ -35,6 +36,13 @@ namespace KeePass.Native
 {
 	internal static partial class NativeMethods
 	{
+		[StructLayout(LayoutKind.Sequential)]
+		private struct XClassHint
+		{
+			public IntPtr res_name;
+			public IntPtr res_class;
+		}
+
 		/* private const string PathLibDo = "/usr/lib/gnome-do/libdo";
 		private const UnmanagedType NtvStringType = UnmanagedType.LPStr;
 
@@ -71,6 +79,9 @@ namespace KeePass.Native
 
 		internal delegate void BindKeyHandler(string strKey, IntPtr lpUserData); */
 
+		[DllImport("libX11")]
+		private static extern int XSetClassHint(IntPtr display, IntPtr window, IntPtr class_hints);
+
 		private static bool LoseFocusUnix(Form fCurrent)
 		{
 			if(fCurrent == null) { Debug.Assert(false); return true; }
@@ -131,5 +142,68 @@ namespace KeePass.Native
 
 			return string.Empty;
 		}
+
+		private static Type m_tXplatUIX11 = null;
+		private static Type GetXplatUIX11Type(bool bThrowOnError)
+		{
+			if(m_tXplatUIX11 == null)
+			{
+				CheckState cs = CheckState.Indeterminate; // In System.Windows.Forms
+				string strTypeCS = cs.GetType().AssemblyQualifiedName;
+				string strTypeX11 = strTypeCS.Replace("CheckState", "XplatUIX11");
+				m_tXplatUIX11 = Type.GetType(strTypeX11, bThrowOnError, true);
+			}
+
+			return m_tXplatUIX11;
+		}
+
+		private static Type m_tHwnd = null;
+		private static Type GetHwndType(bool bThrowOnError)
+		{
+			if(m_tHwnd == null)
+			{
+				CheckState cs = CheckState.Indeterminate; // In System.Windows.Forms
+				string strTypeCS = cs.GetType().AssemblyQualifiedName;
+				string strTypeHwnd = strTypeCS.Replace("CheckState", "Hwnd");
+				m_tHwnd = Type.GetType(strTypeHwnd, bThrowOnError, true);
+			}
+
+			return m_tHwnd;
+		}
+
+		internal static void SetWmClass(Form f, string strName, string strClass)
+		{
+			if(f == null) { Debug.Assert(false); return; }
+
+			try
+			{
+				Type tXplatUIX11 = GetXplatUIX11Type(true);
+				FieldInfo fiDisplayHandle = tXplatUIX11.GetField("DisplayHandle",
+					BindingFlags.NonPublic | BindingFlags.Static);
+				IntPtr hDisplay = (IntPtr)fiDisplayHandle.GetValue(null);
+
+				Type tHwnd = GetHwndType(true);
+				MethodInfo miObjectFromHandle = tHwnd.GetMethod("ObjectFromHandle",
+					BindingFlags.Public | BindingFlags.Static);
+				object oHwnd = miObjectFromHandle.Invoke(null, new object[] { f.Handle });
+
+				FieldInfo fiWholeWindow = tHwnd.GetField("whole_window",
+					BindingFlags.NonPublic | BindingFlags.Instance);
+				IntPtr hWindow = (IntPtr)fiWholeWindow.GetValue(oHwnd);
+
+				XClassHint xch = new XClassHint();
+				xch.res_name = Marshal.StringToCoTaskMemAnsi(strName ?? string.Empty);
+				xch.res_class = Marshal.StringToCoTaskMemAnsi(strClass ?? string.Empty);
+				IntPtr pXch = Marshal.AllocCoTaskMem(Marshal.SizeOf(xch));
+				Marshal.StructureToPtr(xch, pXch, false);
+
+				XSetClassHint(hDisplay, hWindow, pXch);
+
+				Marshal.FreeCoTaskMem(pXch);
+				Marshal.FreeCoTaskMem(xch.res_name);
+				Marshal.FreeCoTaskMem(xch.res_class);
+			}
+			catch(Exception) { Debug.Assert(false); }
+		}
 	}
 }
diff --git a/KeePass/Native/NativeMethods.cs b/KeePass/Native/NativeMethods.cs
index e0ce628..44c486e 100644
--- a/KeePass/Native/NativeMethods.cs
+++ b/KeePass/Native/NativeMethods.cs
@@ -21,8 +21,8 @@ using System;
 using System.Text;
 using System.Security;
 using System.Runtime.InteropServices;
-using System.Diagnostics;
 using System.Windows.Forms;
+using System.Diagnostics;
 
 using KeePass.UI;
 
@@ -281,13 +281,6 @@ namespace KeePass.Native
 			IntPtr lpInBuffer, uint nInBufferSize, IntPtr lpOutBuffer, uint nOutBufferSize,
 			out uint lpBytesReturned, IntPtr lpOverlapped);
 
-		// [DllImport("DwmApi.dll")]
-		// internal static extern Int32 DwmExtendFrameIntoClientArea(IntPtr hWnd,
-		//	ref MARGINS pMarInset);
-
-		// [DllImport("DwmApi.dll")]
-		// internal static extern Int32 DwmIsCompositionEnabled(ref Int32 pfEnabled);
-
 		[DllImport("ComCtl32.dll", CharSet = CharSet.Auto)]
 		internal static extern Int32 TaskDialogIndirect([In] ref VtdConfig pTaskConfig,
 			[Out] out int pnButton, [Out] out int pnRadioButton,
@@ -336,24 +329,9 @@ namespace KeePass.Native
 		// internal extern static uint DrawThemeBackground(IntPtr hTheme, IntPtr hdc,
 		//	int iPartId, int iStateId, ref RECT pRect, ref RECT pClipRect);	
 
-		// [DllImport("Gdi32.dll")]
-		// [return: MarshalAs(UnmanagedType.Bool)]
-		// internal static extern bool DeleteObject(IntPtr hObject);
-
-		// [DllImport("DwmApi.dll")]
-		// internal static extern int DwmInvalidateIconicBitmaps(IntPtr hWnd);
-
-		[DllImport("DwmApi.dll", EntryPoint = "DwmSetWindowAttribute")]
-		internal static extern int DwmSetWindowAttributeInt(IntPtr hWnd,
-			uint dwAttribute, [In] ref int pvAttribute, uint cbAttribute);
-
-		// [DllImport("DwmApi.dll")]
-		// internal static extern int DwmSetIconicThumbnail(IntPtr hWnd,
-		//	IntPtr hBmp, uint dwSITFlags);
-
-		// [DllImport("DwmApi.dll")]
-		// internal static extern int DwmSetIconicLivePreviewBitmap(IntPtr hWnd,
-		//	IntPtr hBmp, IntPtr pptClient, uint dwSITFlags);
+		[DllImport("Gdi32.dll")]
+		[return: MarshalAs(UnmanagedType.Bool)]
+		internal static extern bool DeleteObject(IntPtr hObject);
 
 		[DllImport("User32.dll")]
 		[return: MarshalAs(UnmanagedType.Bool)]
diff --git a/KeePass/Plugins/PlgxPlugin.cs b/KeePass/Plugins/PlgxPlugin.cs
index 30df3d0..6345912 100644
--- a/KeePass/Plugins/PlgxPlugin.cs
+++ b/KeePass/Plugins/PlgxPlugin.cs
@@ -105,11 +105,7 @@ namespace KeePass.Plugins
 			}
 			catch(Exception exLoad)
 			{
-				if(Program.CommandLineArgs[AppDefs.CommandLineOptions.Debug] != null)
-					MessageService.ShowWarningExcp(strFilePath, exLoad);
-				else
-					MessageService.ShowWarning(KPRes.PluginIncompatible +
-						MessageService.NewLine + strFilePath, KPRes.PluginUpdateHint);
+				PluginManager.ShowLoadError(strFilePath, exLoad, slStatus);
 			}
 		}
 
diff --git a/KeePass/Plugins/PluginManager.cs b/KeePass/Plugins/PluginManager.cs
index d4afafe..466927a 100644
--- a/KeePass/Plugins/PluginManager.cs
+++ b/KeePass/Plugins/PluginManager.cs
@@ -33,6 +33,7 @@ using KeePass.Plugins;
 using KeePass.UI;
 
 using KeePassLib;
+using KeePassLib.Interfaces;
 using KeePassLib.Utility;
 
 namespace KeePass.Plugins
@@ -126,37 +127,64 @@ namespace KeePass.Plugins
 				}
 				catch(Exception) { continue; }
 
-				bool bShowStandardError = false;
+				Exception exShowStd = null;
 				try
 				{
 					PluginInfo pi = new PluginInfo(fi.FullName, fvi, strDisplayFilePath);
 
 					pi.Interface = CreatePluginInstance(pi.FilePath, strTypeName);
 
-					if(pi.Interface.Initialize(m_host) == false)
+					if(!pi.Interface.Initialize(m_host))
 						continue; // Fail without error
 
 					m_vPlugins.Add(pi);
 				}
-				catch(BadImageFormatException)
+				catch(BadImageFormatException exBif)
 				{
 					if(Is1xPlugin(fi.FullName))
 						MessageService.ShowWarning(KPRes.PluginIncompatible +
 							MessageService.NewLine + fi.FullName + MessageService.NewParagraph +
 							KPRes.Plugin1x + MessageService.NewParagraph + KPRes.Plugin1xHint);
-					else bShowStandardError = true;
+					else exShowStd = exBif;
 				}
 				catch(Exception exLoad)
 				{
 					if(Program.CommandLineArgs[AppDefs.CommandLineOptions.Debug] != null)
 						MessageService.ShowWarningExcp(fi.FullName, exLoad);
-					else bShowStandardError = true;
+					else exShowStd = exLoad;
 				}
 
-				if(bShowStandardError)
-					MessageService.ShowWarning(KPRes.PluginIncompatible +
-						MessageService.NewLine + fi.FullName + MessageService.NewParagraph +
-						KPRes.PluginUpdateHint);
+				if(exShowStd != null)
+					ShowLoadError(fi.FullName, exShowStd, null);
+			}
+		}
+
+		internal static void ShowLoadError(string strPath, Exception ex,
+			IStatusLogger slStatus)
+		{
+			if(string.IsNullOrEmpty(strPath)) { Debug.Assert(false); return; }
+
+			if(slStatus != null)
+				slStatus.SetText(KPRes.PluginLoadFailed, LogStatusType.Info);
+
+			bool bShowExcp = (Program.CommandLineArgs[
+				AppDefs.CommandLineOptions.Debug] != null);
+
+			string strMsg = KPRes.PluginIncompatible + MessageService.NewLine +
+				strPath + MessageService.NewParagraph + KPRes.PluginUpdateHint;
+			string strExcp = ((ex != null) ? StrUtil.FormatException(ex).Trim() : null);
+
+			VistaTaskDialog vtd = new VistaTaskDialog();
+			vtd.Content = strMsg;
+			vtd.ExpandedByDefault = ((strExcp != null) && bShowExcp);
+			vtd.ExpandedInformation = strExcp;
+			vtd.WindowTitle = PwDefs.ShortProductName;
+			vtd.SetIcon(VtdIcon.Warning);
+
+			if(!vtd.ShowDialog())
+			{
+				if(!bShowExcp) MessageService.ShowWarning(strMsg);
+				else MessageService.ShowWarningExcp(strPath, ex);
 			}
 		}
 
diff --git a/KeePass/Program.cs b/KeePass/Program.cs
index 82f50a2..a41b7a9 100644
--- a/KeePass/Program.cs
+++ b/KeePass/Program.cs
@@ -19,6 +19,7 @@
 
 using System;
 using System.Collections;
+using System.Collections.Generic;
 using System.Windows.Forms;
 using System.Globalization;
 using System.Threading;
@@ -203,6 +204,10 @@ namespace KeePass
 			Application.SetCompatibleTextRenderingDefault(false);
 			Application.DoEvents(); // Required
 
+#if DEBUG
+			string strInitialWorkDir = WinUtil.GetWorkingDirectory();
+#endif
+
 			if(!CommonInit()) { CommonTerminate(); return; }
 
 			if(m_appConfig.Application.Start.PluginCacheClearOnce)
@@ -408,6 +413,11 @@ namespace KeePass
 
 			MainCleanUp();
 
+#if DEBUG
+			string strEndWorkDir = WinUtil.GetWorkingDirectory();
+			Debug.Assert(strEndWorkDir.Equals(strInitialWorkDir, StrUtil.CaseIgnoreCmp));
+#endif
+
 			if(mGlobalNotify != null) { GC.KeepAlive(mGlobalNotify); }
 			// if(mSingleLock != null) { GC.KeepAlive(mSingleLock); }
 		}
@@ -435,7 +445,7 @@ namespace KeePass
 
 			// Set global localized strings
 			PwDatabase.LocalizedAppName = PwDefs.ShortProductName;
-			Kdb4File.DetermineLanguageId();
+			KdbxFile.DetermineLanguageId();
 
 			m_appConfig = AppConfigSerializer.Load();
 			if(m_appConfig.Logging.Enabled)
@@ -557,8 +567,10 @@ namespace KeePass
 				}
 				else
 				{
+					string[] vFlt = KeyUtil.MakeCtxIndependent(args);
+
 					IpcParamEx ipcMsg = new IpcParamEx(IpcUtilEx.CmdOpenDatabase,
-						CommandLineArgs.SafeSerialize(args), null, null, null, null);
+						CommandLineArgs.SafeSerialize(vFlt), null, null, null, null);
 
 					IpcUtilEx.SendGlobalMessage(ipcMsg);
 				}
diff --git a/KeePass/Properties/AssemblyInfo.cs b/KeePass/Properties/AssemblyInfo.cs
index 9ed86df..03f753b 100644
--- a/KeePass/Properties/AssemblyInfo.cs
+++ b/KeePass/Properties/AssemblyInfo.cs
@@ -38,5 +38,5 @@ using System.Runtime.InteropServices;
 [assembly: Guid("02020c52-c0da-47c0-9f3f-a6fe76cee400")]
 
 // Assembly version information
-[assembly: AssemblyVersion("2.19.0.*")]
-[assembly: AssemblyFileVersion("2.19.0.0")]
+[assembly: AssemblyVersion("2.20.0.*")]
+[assembly: AssemblyFileVersion("2.20.0.0")]
diff --git a/KeePass/Properties/Resources.Designer.cs b/KeePass/Properties/Resources.Designer.cs
index b3977f4..9779f3f 100644
--- a/KeePass/Properties/Resources.Designer.cs
+++ b/KeePass/Properties/Resources.Designer.cs
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.5448
+//     Runtime Version:2.0.50727.5456
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -466,6 +466,13 @@ namespace KeePass.Properties {
             }
         }
         
+        internal static System.Drawing.Bitmap B16x16_Imp_DesktopKnox {
+            get {
+                object obj = ResourceManager.GetObject("B16x16_Imp_DesktopKnox", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         internal static System.Drawing.Bitmap B16x16_Imp_FlexWallet {
             get {
                 object obj = ResourceManager.GetObject("B16x16_Imp_FlexWallet", resourceCulture);
diff --git a/KeePass/Properties/Resources.resx b/KeePass/Properties/Resources.resx
index 686cff6..5e2c52a 100644
--- a/KeePass/Properties/Resources.resx
+++ b/KeePass/Properties/Resources.resx
@@ -574,4 +574,7 @@
   <data name="B16x16_Key_New" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Nuvola_Derived\B16x16_Key_New.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="B16x16_Imp_DesktopKnox" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Images\B16x16_Imp_DesktopKnox.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/KeePass/Resources/Images/B16x16_Imp_DesktopKnox.png b/KeePass/Resources/Images/B16x16_Imp_DesktopKnox.png
new file mode 100644
index 0000000..b1f7af8
Binary files /dev/null and b/KeePass/Resources/Images/B16x16_Imp_DesktopKnox.png differ
diff --git a/KeePass/Resources/KPRes.Generated.cs b/KeePass/Resources/KPRes.Generated.cs
index 8bcb45b..2517b65 100644
--- a/KeePass/Resources/KPRes.Generated.cs
+++ b/KeePass/Resources/KPRes.Generated.cs
@@ -68,6 +68,7 @@ namespace KeePass.Resources
 			m_strAutoShowExpiredEntries = TryGetEx(dictNew, "AutoShowExpiredEntries", m_strAutoShowExpiredEntries);
 			m_strAutoShowSoonToExpireEntries = TryGetEx(dictNew, "AutoShowSoonToExpireEntries", m_strAutoShowSoonToExpireEntries);
 			m_strAutoType = TryGetEx(dictNew, "AutoType", m_strAutoType);
+			m_strAutoTypeCancelOnTitleChange = TryGetEx(dictNew, "AutoTypeCancelOnTitleChange", m_strAutoTypeCancelOnTitleChange);
 			m_strAutoTypeCancelOnWindowChange = TryGetEx(dictNew, "AutoTypeCancelOnWindowChange", m_strAutoTypeCancelOnWindowChange);
 			m_strAutoTypeEntrySelection = TryGetEx(dictNew, "AutoTypeEntrySelection", m_strAutoTypeEntrySelection);
 			m_strAutoTypeEntrySelectionDescLong = TryGetEx(dictNew, "AutoTypeEntrySelectionDescLong", m_strAutoTypeEntrySelectionDescLong);
@@ -345,7 +346,7 @@ namespace KeePass.Resources
 			m_strInvalidUserPassword = TryGetEx(dictNew, "InvalidUserPassword", m_strInvalidUserPassword);
 			m_strIOConnection = TryGetEx(dictNew, "IOConnection", m_strIOConnection);
 			m_strItalic = TryGetEx(dictNew, "Italic", m_strItalic);
-			m_strKdb3KeePassLibC = TryGetEx(dictNew, "Kdb3KeePassLibC", m_strKdb3KeePassLibC);
+			m_strKdbKeePassLibC = TryGetEx(dictNew, "KdbKeePassLibC", m_strKdbKeePassLibC);
 			m_strKdbxFiles = TryGetEx(dictNew, "KdbxFiles", m_strKdbxFiles);
 			m_strKeePassEditor = TryGetEx(dictNew, "KeePassEditor", m_strKeePassEditor);
 			m_strKeePassLibCLong = TryGetEx(dictNew, "KeePassLibCLong", m_strKeePassLibCLong);
@@ -500,6 +501,7 @@ namespace KeePass.Resources
 			m_strRedo = TryGetEx(dictNew, "Redo", m_strRedo);
 			m_strRememberHidingSettings = TryGetEx(dictNew, "RememberHidingSettings", m_strRememberHidingSettings);
 			m_strRememberKeySources = TryGetEx(dictNew, "RememberKeySources", m_strRememberKeySources);
+			m_strRememberWorkingDirectories = TryGetEx(dictNew, "RememberWorkingDirectories", m_strRememberWorkingDirectories);
 			m_strRemoteHostReachable = TryGetEx(dictNew, "RemoteHostReachable", m_strRemoteHostReachable);
 			m_strRepairMode = TryGetEx(dictNew, "RepairMode", m_strRepairMode);
 			m_strRepeatOnlyWhenHidden = TryGetEx(dictNew, "RepeatOnlyWhenHidden", m_strRepeatOnlyWhenHidden);
@@ -656,7 +658,7 @@ namespace KeePass.Resources
 			m_strXslExporter = TryGetEx(dictNew, "XslExporter", m_strXslExporter);
 			m_strXslFileType = TryGetEx(dictNew, "XslFileType", m_strXslFileType);
 			m_strXslSelectFile = TryGetEx(dictNew, "XslSelectFile", m_strXslSelectFile);
-			m_strXslStylesheets = TryGetEx(dictNew, "XslStylesheets", m_strXslStylesheets);
+			m_strXslStylesheetsKdbx = TryGetEx(dictNew, "XslStylesheetsKdbx", m_strXslStylesheetsKdbx);
 			m_strYes = TryGetEx(dictNew, "Yes", m_strYes);
 			m_strZoom = TryGetEx(dictNew, "Zoom", m_strZoom);
 		}
@@ -704,6 +706,7 @@ namespace KeePass.Resources
 			"AutoShowExpiredEntries",
 			"AutoShowSoonToExpireEntries",
 			"AutoType",
+			"AutoTypeCancelOnTitleChange",
 			"AutoTypeCancelOnWindowChange",
 			"AutoTypeEntrySelection",
 			"AutoTypeEntrySelectionDescLong",
@@ -981,7 +984,7 @@ namespace KeePass.Resources
 			"InvalidUserPassword",
 			"IOConnection",
 			"Italic",
-			"Kdb3KeePassLibC",
+			"KdbKeePassLibC",
 			"KdbxFiles",
 			"KeePassEditor",
 			"KeePassLibCLong",
@@ -1136,6 +1139,7 @@ namespace KeePass.Resources
 			"Redo",
 			"RememberHidingSettings",
 			"RememberKeySources",
+			"RememberWorkingDirectories",
 			"RemoteHostReachable",
 			"RepairMode",
 			"RepeatOnlyWhenHidden",
@@ -1292,7 +1296,7 @@ namespace KeePass.Resources
 			"XslExporter",
 			"XslFileType",
 			"XslSelectFile",
-			"XslStylesheets",
+			"XslStylesheetsKdbx",
 			"Yes",
 			"Zoom"
 		};
@@ -1764,6 +1768,17 @@ namespace KeePass.Resources
 			get { return m_strAutoType; }
 		}
 
+		private static string m_strAutoTypeCancelOnTitleChange =
+			@"Cancel auto-type when the target window title changes";
+		/// <summary>
+		/// Look up a localized string similar to
+		/// 'Cancel auto-type when the target window title changes'.
+		/// </summary>
+		public static string AutoTypeCancelOnTitleChange
+		{
+			get { return m_strAutoTypeCancelOnTitleChange; }
+		}
+
 		private static string m_strAutoTypeCancelOnWindowChange =
 			@"Cancel auto-type when the target window changes";
 		/// <summary>
@@ -4811,15 +4826,15 @@ namespace KeePass.Resources
 			get { return m_strItalic; }
 		}
 
-		private static string m_strKdb3KeePassLibC =
+		private static string m_strKdbKeePassLibC =
 			@"The KeePassLibC library is required to open and save KDB files created by KeePass 1.x.";
 		/// <summary>
 		/// Look up a localized string similar to
 		/// 'The KeePassLibC library is required to open and save KDB files created by KeePass 1.x.'.
 		/// </summary>
-		public static string Kdb3KeePassLibC
+		public static string KdbKeePassLibC
 		{
-			get { return m_strKdb3KeePassLibC; }
+			get { return m_strKdbKeePassLibC; }
 		}
 
 		private static string m_strKdbxFiles =
@@ -6516,6 +6531,17 @@ namespace KeePass.Resources
 			get { return m_strRememberKeySources; }
 		}
 
+		private static string m_strRememberWorkingDirectories =
+			@"Remember working directories";
+		/// <summary>
+		/// Look up a localized string similar to
+		/// 'Remember working directories'.
+		/// </summary>
+		public static string RememberWorkingDirectories
+		{
+			get { return m_strRememberWorkingDirectories; }
+		}
+
 		private static string m_strRemoteHostReachable =
 			@"Remote host is reachable (ping)";
 		/// <summary>
@@ -7782,10 +7808,10 @@ namespace KeePass.Resources
 		}
 
 		private static string m_strUpdateCheckInfoPriv =
-			@"No personal information is sent to the KeePass server. KeePass just downloads a small version information file and compares the available version with the installed version.";
+			@"No personal information is sent to the KeePass web server. KeePass just downloads a small version information file and compares the available version with the installed version.";
 		/// <summary>
 		/// Look up a localized string similar to
-		/// 'No personal information is sent to the KeePass server. KeePass just downloads a small version information file and compares the available version with the installed version.'.
+		/// 'No personal information is sent to the KeePass web server. KeePass just downloads a small version information file and compares the available version with the installed version.'.
 		/// </summary>
 		public static string UpdateCheckInfoPriv
 		{
@@ -8232,15 +8258,15 @@ namespace KeePass.Resources
 			get { return m_strXslSelectFile; }
 		}
 
-		private static string m_strXslStylesheets =
-			@"XSL Stylesheets for KDB4 XML";
+		private static string m_strXslStylesheetsKdbx =
+			@"XSL Stylesheets for KDBX XML";
 		/// <summary>
 		/// Look up a localized string similar to
-		/// 'XSL Stylesheets for KDB4 XML'.
+		/// 'XSL Stylesheets for KDBX XML'.
 		/// </summary>
-		public static string XslStylesheets
+		public static string XslStylesheetsKdbx
 		{
-			get { return m_strXslStylesheets; }
+			get { return m_strXslStylesheetsKdbx; }
 		}
 
 		private static string m_strYes =
diff --git a/KeePass/UI/DwmUtil.cs b/KeePass/UI/DwmUtil.cs
new file mode 100644
index 0000000..80b21f8
--- /dev/null
+++ b/KeePass/UI/DwmUtil.cs
@@ -0,0 +1,175 @@
+/*
+  KeePass Password Safe - The Open-Source Password Manager
+  Copyright (C) 2003-2012 Dominik Reichl <dominik.reichl at t-online.de>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.InteropServices;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Drawing.Imaging;
+using System.Windows.Forms;
+using System.Diagnostics;
+
+using KeePass.Native;
+using KeePass.Util;
+
+namespace KeePass.UI
+{
+	public static class DwmUtil
+	{
+		// private const uint DWMWA_FORCE_ICONIC_REPRESENTATION = 7;
+		// private const uint DWMWA_HAS_ICONIC_BITMAP = 10;
+		private const uint DWMWA_DISALLOW_PEEK = 11;
+
+		// public const int WM_DWMSENDICONICTHUMBNAIL = 0x0323;
+		// public const int WM_DWMSENDICONICLIVEPREVIEWBITMAP = 0x0326;
+
+		// [DllImport("DwmApi.dll")]
+		// private static extern Int32 DwmExtendFrameIntoClientArea(IntPtr hWnd,
+		//	ref MARGINS pMarInset);
+
+		// [DllImport("DwmApi.dll")]
+		// private static extern Int32 DwmIsCompositionEnabled(ref Int32 pfEnabled);
+
+		// [DllImport("DwmApi.dll")]
+		// private static extern int DwmInvalidateIconicBitmaps(IntPtr hWnd);
+
+		[DllImport("DwmApi.dll", EntryPoint = "DwmSetWindowAttribute")]
+		private static extern int DwmSetWindowAttributeInt(IntPtr hWnd,
+			uint dwAttribute, [In] ref int pvAttribute, uint cbAttribute);
+
+		// [DllImport("DwmApi.dll")]
+		// private static extern int DwmSetIconicThumbnail(IntPtr hWnd,
+		//	IntPtr hBmp, uint dwSITFlags);
+
+		// [DllImport("DwmApi.dll")]
+		// private static extern int DwmSetIconicLivePreviewBitmap(IntPtr hWnd,
+		//	IntPtr hBmp, IntPtr pptClient, uint dwSITFlags);
+
+		public static void EnableWindowPeekPreview(Form f, bool bEnable)
+		{
+			int iNoPeek = (bEnable ? 0 : 1);
+
+			try
+			{
+				IntPtr h = f.Handle;
+				if(h == IntPtr.Zero) { Debug.Assert(false); return; }
+
+				DwmSetWindowAttributeInt(h, DWMWA_DISALLOW_PEEK, ref iNoPeek, 4);
+				// DwmInvalidateIconicBitmaps(h);
+
+				// EnableCustomPreviews(f, !bEnable);
+			}
+			catch(Exception) { Debug.Assert(!WinUtil.IsAtLeastWindowsVista); }
+		}
+
+		/* private static void EnableCustomPreviews(Form f, bool bEnable)
+		{
+			int s = (bEnable ? 1 : 0);
+
+			try
+			{
+				IntPtr h = f.Handle;
+				if(h == IntPtr.Zero) { Debug.Assert(false); return; }
+
+				DwmSetWindowAttributeInt(h, DWMWA_HAS_ICONIC_BITMAP, ref s, 4);
+				DwmSetWindowAttributeInt(h, DWMWA_FORCE_ICONIC_REPRESENTATION, ref s, 4);
+			}
+			catch(Exception) { Debug.Assert(!WinUtil.IsAtLeastWindowsVista); }
+		}
+
+		public static void SetThumbnailIcon(Form f, Icon ico, IntPtr lParam)
+		{
+			Image img = null;
+			Bitmap bmp = null;
+			IntPtr hBmp = IntPtr.Zero;
+			try
+			{
+				if((f.WindowState != FormWindowState.Minimized) &&
+					f.Visible)
+					return;
+
+				IntPtr h = f.Handle;
+				if(h == IntPtr.Zero) { Debug.Assert(false); return; }
+
+				img = UIUtil.ExtractVistaIcon(ico);
+				if(img == null) img = ico.ToBitmap();
+				if(img == null) { Debug.Assert(false); return; }
+
+				long lThumbInfo = lParam.ToInt64();
+				int iThumbWidth = (int)((lThumbInfo >> 16) & 0xFFFF);
+				int iThumbHeight = (int)(lThumbInfo & 0xFFFF);
+
+				if((iThumbWidth <= 0) || (iThumbHeight <= 0)) return;
+				if(iThumbWidth > 512) iThumbWidth = 512;
+				if(iThumbHeight > 512) iThumbHeight = 512;
+
+				int iImgW = img.Width;
+				int iImgH = img.Height;
+				if(iImgW > iThumbWidth)
+				{
+					float fRatio = (float)iThumbWidth / (float)iImgW;
+					iImgW = iThumbWidth;
+					iImgH = (int)((float)iImgH * fRatio);
+				}
+				if(iImgH > iThumbHeight)
+				{
+					float fRatio = (float)iThumbHeight / (float)iImgH;
+					iImgW = (int)((float)iImgW * fRatio);
+					iImgH = iThumbHeight;
+				}
+				if((iImgW <= 0) || (iImgH <= 0)) { Debug.Assert(false); return; }
+				if(iImgW > iThumbWidth) { Debug.Assert(false); iImgW = iThumbWidth; }
+				if(iImgH > iThumbHeight) { Debug.Assert(false); iImgH = iThumbHeight; }
+
+				iImgW = Math.Min(iImgW, 64);
+				iImgH = Math.Min(iImgH, 64);
+
+				int iImgX = (iThumbWidth - iImgW) / 2;
+				int iImgY = (iThumbHeight - iImgH) / 2;
+
+				bmp = new Bitmap(iThumbWidth, iThumbHeight, PixelFormat.Format32bppArgb);
+				using(Graphics g = Graphics.FromImage(bmp))
+				{
+					g.Clear(Color.Black);
+
+					g.InterpolationMode = InterpolationMode.HighQualityBicubic;
+					g.SmoothingMode = SmoothingMode.HighQuality;
+
+					g.DrawImage(img, iImgX, iImgY, iImgW, iImgH);
+				}
+
+				hBmp = bmp.GetHbitmap();
+				DwmSetIconicThumbnail(h, hBmp, 0);
+			}
+			catch(Exception) { Debug.Assert(!WinUtil.IsAtLeastWindowsVista); }
+			finally
+			{
+				if(hBmp != IntPtr.Zero)
+				{
+					try { NativeMethods.DeleteObject(hBmp); }
+					catch(Exception) { }
+				}
+				if(bmp != null) bmp.Dispose();
+				if(img != null) img.Dispose();
+			}
+		} */
+	}
+}
diff --git a/KeePass/UI/FileDialogsEx.cs b/KeePass/UI/FileDialogsEx.cs
index 5242fd5..4a06cea 100644
--- a/KeePass/UI/FileDialogsEx.cs
+++ b/KeePass/UI/FileDialogsEx.cs
@@ -21,6 +21,7 @@ using System;
 using System.Collections.Generic;
 using System.Text;
 using System.Windows.Forms;
+using System.IO;
 using System.Diagnostics;
 
 using KeePass.Resources;
@@ -41,13 +42,13 @@ namespace KeePass.UI
 	public static class FileDialogsEx
 	{
 		public static DialogResult ShowFileSaveQuestion(string strFile,
-			FileSaveOrigin fsOrigin, IntPtr hParent)
+			FileSaveOrigin fsOrigin)
 		{
 			bool bFile = ((strFile != null) && (strFile.Length > 0));
 
 			if(WinUtil.IsAtLeastWindowsVista)
 			{
-				VistaTaskDialog dlg = new VistaTaskDialog(hParent);
+				VistaTaskDialog dlg = new VistaTaskDialog();
 
 				string strText = KPRes.DatabaseModifiedNoDot;
 				if(bFile) strText += ":\r\n" + strFile;
@@ -104,4 +105,180 @@ namespace KeePass.UI
 				MessageBoxButtons.YesNoCancel);
 		}
 	}
+
+	public abstract class FileDialogEx
+	{
+		private readonly bool m_bSaveMode;
+		private readonly string m_strContext;
+
+		public abstract FileDialog FileDialog
+		{
+			get;
+		}
+
+		public string DefaultExt
+		{
+			get { return this.FileDialog.DefaultExt; }
+			set { this.FileDialog.DefaultExt = value; }
+		}
+
+		public string FileName
+		{
+			get { return this.FileDialog.FileName; }
+			set { this.FileDialog.FileName = value; }
+		}
+
+		public string[] FileNames
+		{
+			get { return this.FileDialog.FileNames; }
+		}
+
+		public string Filter
+		{
+			get { return this.FileDialog.Filter; }
+			set { this.FileDialog.Filter = value; }
+		}
+
+		public int FilterIndex
+		{
+			get { return this.FileDialog.FilterIndex; }
+			set { this.FileDialog.FilterIndex = value; }
+		}
+
+		private string m_strInitialDirectoryOvr = null;
+		public string InitialDirectory
+		{
+			get { return m_strInitialDirectoryOvr; }
+			set { m_strInitialDirectoryOvr = value; }
+		}
+
+		public string Title
+		{
+			get { return this.FileDialog.Title; }
+			set { this.FileDialog.Title = value; }
+		}
+
+		public FileDialogEx(bool bSaveMode, string strContext)
+		{
+			m_bSaveMode = bSaveMode;
+			m_strContext = strContext; // May be null
+		}
+
+		public DialogResult ShowDialog()
+		{
+			string strPrevWorkDir = PreShowDialog();
+			DialogResult dr = this.FileDialog.ShowDialog();
+			PostShowDialog(strPrevWorkDir, dr);
+			return dr;
+		}
+
+		public DialogResult ShowDialog(IWin32Window owner)
+		{
+			string strPrevWorkDir = PreShowDialog();
+			DialogResult dr = this.FileDialog.ShowDialog(owner);
+			PostShowDialog(strPrevWorkDir, dr);
+			return dr;
+		}
+
+		private string PreShowDialog()
+		{
+			string strPrevWorkDir = WinUtil.GetWorkingDirectory();
+
+			string strNew = Program.Config.Application.GetWorkingDirectory(m_strContext);
+			if(!string.IsNullOrEmpty(m_strInitialDirectoryOvr))
+				strNew = m_strInitialDirectoryOvr;
+			WinUtil.SetWorkingDirectory(strNew); // Always, even when no context
+
+			try
+			{
+				string strWD = WinUtil.GetWorkingDirectory();
+				this.FileDialog.InitialDirectory = strWD;
+			}
+			catch(Exception) { Debug.Assert(false); }
+
+			return strPrevWorkDir;
+		}
+
+		private void PostShowDialog(string strPrevWorkDir, DialogResult dr)
+		{
+			string strCur = null;
+			// Modern file dialogs (on Windows >= Vista) do not change the
+			// working directory (in contrast to Windows <= XP), thus we
+			// derive the working directory from the first file
+			try
+			{
+				if(dr == DialogResult.OK)
+				{
+					string strFile = null;
+					if(m_bSaveMode) strFile = this.FileDialog.FileName;
+					else if(this.FileDialog.FileNames.Length > 0)
+						strFile = this.FileDialog.FileNames[0];
+
+					if(!string.IsNullOrEmpty(strFile))
+						strCur = UrlUtil.GetFileDirectory(strFile, false, true);
+				}
+			}
+			catch(Exception) { Debug.Assert(false); }
+
+			if(!string.IsNullOrEmpty(strCur))
+				Program.Config.Application.SetWorkingDirectory(m_strContext, strCur);
+
+			WinUtil.SetWorkingDirectory(strPrevWorkDir);
+		}
+	}
+
+	public sealed class OpenFileDialogEx : FileDialogEx
+	{
+		private OpenFileDialog m_dlg = new OpenFileDialog();
+
+		public override FileDialog FileDialog
+		{
+			get { return m_dlg; }
+		}
+
+		public bool Multiselect
+		{
+			get { return m_dlg.Multiselect; }
+			set { m_dlg.Multiselect = value; }
+		}
+
+		public OpenFileDialogEx(string strContext) : base(false, strContext)
+		{
+			m_dlg.CheckFileExists = true;
+			m_dlg.CheckPathExists = true;
+			m_dlg.DereferenceLinks = true;
+			m_dlg.ReadOnlyChecked = false;
+			m_dlg.ShowHelp = false;
+			m_dlg.ShowReadOnly = false;
+			// m_dlg.SupportMultiDottedExtensions = false; // Default
+			m_dlg.ValidateNames = true;
+
+			m_dlg.RestoreDirectory = false; // Want new working directory
+		}
+	}
+
+	public sealed class SaveFileDialogEx : FileDialogEx
+	{
+		private SaveFileDialog m_dlg = new SaveFileDialog();
+
+		public override FileDialog FileDialog
+		{
+			get { return m_dlg; }
+		}
+
+		public SaveFileDialogEx(string strContext) : base(true, strContext)
+		{
+			m_dlg.AddExtension = true;
+			m_dlg.CheckFileExists = false;
+			m_dlg.CheckPathExists = true;
+			m_dlg.CreatePrompt = false;
+			m_dlg.DereferenceLinks = true;
+			m_dlg.OverwritePrompt = true;
+			m_dlg.ShowHelp = false;
+			// m_dlg.SupportMultiDottedExtensions = false; // Default
+			m_dlg.ValidateNames = true;
+
+			m_dlg.RestoreDirectory = false; // Want new working directory
+		}
+	}
 }
diff --git a/KeePass/UI/PwInputControlGroup.cs b/KeePass/UI/PwInputControlGroup.cs
index 060ec72..03d8bb1 100644
--- a/KeePass/UI/PwInputControlGroup.cs
+++ b/KeePass/UI/PwInputControlGroup.cs
@@ -50,7 +50,7 @@ namespace KeePass.UI
 		private SecureEdit m_secRepeat = null;
 
 		private bool m_bInitializing = false;
-		private bool m_bPrgmCheck = false;
+		private uint m_uPrgmCheck = 0;
 
 		private bool m_bEnabled = true;
 		public bool Enabled
@@ -183,15 +183,15 @@ namespace KeePass.UI
 
 			if((uFlags & (ulong)AceKeyUIFlags.CheckHidePassword) != 0)
 			{
-				m_bPrgmCheck = true;
+				++m_uPrgmCheck;
 				m_cbHide.Checked = true;
-				m_bPrgmCheck = false;
+				--m_uPrgmCheck;
 			}
 			if((uFlags & (ulong)AceKeyUIFlags.UncheckHidePassword) != 0)
 			{
-				m_bPrgmCheck = true;
+				++m_uPrgmCheck;
 				m_cbHide.Checked = false;
-				m_bPrgmCheck = false;
+				--m_uPrgmCheck;
 			}
 
 			bool bAutoRepeat = this.AutoRepeat;
@@ -237,17 +237,22 @@ namespace KeePass.UI
 			if(m_bInitializing) return;
 
 			bool bHide = m_cbHide.Checked;
-			if(!bHide && !m_bPrgmCheck && !AppPolicy.Try(AppPolicyId.UnhidePasswords))
+			if(!bHide && (m_uPrgmCheck == 0))
 			{
-				m_cbHide.Checked = true;
-				return;
+				if(!AppPolicy.Try(AppPolicyId.UnhidePasswords))
+				{
+					++m_uPrgmCheck;
+					m_cbHide.Checked = true;
+					--m_uPrgmCheck;
+					return;
+				}
 			}
 
 			m_secPassword.EnableProtection(bHide);
 			m_secRepeat.EnableProtection(bHide);
 
 			bool bWasAutoRepeat = Program.Config.UI.RepeatPasswordOnlyWhenHidden;
-			if(bHide && !m_bPrgmCheck && bWasAutoRepeat)
+			if(bHide && (m_uPrgmCheck == 0) && bWasAutoRepeat)
 			{
 				++m_uBlockUIUpdate;
 				byte[] pb = GetPasswordUtf8();
@@ -257,7 +262,7 @@ namespace KeePass.UI
 			}
 
 			UpdateUI();
-			if(!m_bPrgmCheck) UIUtil.SetFocus(m_tbPassword, m_fParent);
+			if(m_uPrgmCheck == 0) UIUtil.SetFocus(m_tbPassword, m_fParent);
 		}
 
 		public void SetPassword(byte[] pbUtf8, bool bSetRepeatPw)
@@ -325,7 +330,7 @@ namespace KeePass.UI
 			{
 				if(!VistaTaskDialog.ShowMessageBox(KPRes.PasswordRepeatFailed,
 					KPRes.ValidationFailed, PwDefs.ShortProductName,
-					VtdIcon.Warning, m_fParent.Handle))
+					VtdIcon.Warning, m_fParent))
 					MessageService.ShowWarning(KPRes.PasswordRepeatFailed);
 			}
 
diff --git a/KeePass/UI/UIUtil.cs b/KeePass/UI/UIUtil.cs
index 7d4bb56..9c94b6c 100644
--- a/KeePass/UI/UIUtil.cs
+++ b/KeePass/UI/UIUtil.cs
@@ -206,6 +206,12 @@ namespace KeePass.UI
 			catch(Exception) { Debug.Assert(false); }
 		}
 
+		[Obsolete("Use GfxUtil.LoadImage instead.")]
+		public static Image LoadImage(byte[] pb)
+		{
+			return GfxUtil.LoadImage(pb);
+		}
+
 		public static Image CreateColorBitmap24(int nWidth, int nHeight, Color color)
 		{
 			Bitmap bmp = new Bitmap(nWidth, nHeight, PixelFormat.Format24bppRgb);
@@ -435,6 +441,17 @@ namespace KeePass.UI
 			else { Debug.Assert(!bSimpleTextOnly && !bCtrlEnterAccepts); }
 		}
 
+		public static void SetMultilineText(TextBox tb, string str)
+		{
+			if(tb == null) { Debug.Assert(false); return; }
+			if(str == null) str = string.Empty;
+
+			if(!KeePassLib.Native.NativeLib.IsUnix())
+				str = StrUtil.NormalizeNewLines(str, true);
+
+			tb.Text = str;
+		}
+
 		/// <summary>
 		/// Fill a <c>ListView</c> with password entries.
 		/// </summary>
@@ -720,20 +737,23 @@ namespace KeePass.UI
 			return strExtensions; // Single extension
 		}
 
+		[Obsolete("Use the overload with the strContext parameter.")]
 		public static OpenFileDialog CreateOpenFileDialog(string strTitle, string strFilter,
 			int iFilterIndex, string strDefaultExt, bool bMultiSelect, bool bRestoreDirectory)
 		{
-			OpenFileDialog ofd = new OpenFileDialog();
+			return (OpenFileDialog)CreateOpenFileDialog(strTitle, strFilter,
+				iFilterIndex, strDefaultExt, bMultiSelect, string.Empty).FileDialog;
+		}
 
-			ofd.CheckFileExists = true;
-			ofd.CheckPathExists = true;
+		public static OpenFileDialogEx CreateOpenFileDialog(string strTitle, string strFilter,
+			int iFilterIndex, string strDefaultExt, bool bMultiSelect, string strContext)
+		{
+			OpenFileDialogEx ofd = new OpenFileDialogEx(strContext);
 			
-			if((strDefaultExt != null) && (strDefaultExt.Length > 0))
+			if(!string.IsNullOrEmpty(strDefaultExt))
 				ofd.DefaultExt = strDefaultExt;
 
-			ofd.DereferenceLinks = true;
-
-			if((strFilter != null) && (strFilter.Length > 0))
+			if(!string.IsNullOrEmpty(strFilter))
 			{
 				ofd.Filter = strFilter;
 
@@ -741,66 +761,60 @@ namespace KeePass.UI
 			}
 
 			ofd.Multiselect = bMultiSelect;
-			ofd.ReadOnlyChecked = false;
-			ofd.RestoreDirectory = bRestoreDirectory;
-			ofd.ShowHelp = false;
-			ofd.ShowReadOnly = false;
-			// ofd.SupportMultiDottedExtensions = false; // Default
 
-			if((strTitle != null) && (strTitle.Length > 0))
+			if(!string.IsNullOrEmpty(strTitle))
 				ofd.Title = strTitle;
 
-			ofd.ValidateNames = true;
-
 			return ofd;
 		}
 
+		[Obsolete("Use the overload with the strContext parameter.")]
 		public static SaveFileDialog CreateSaveFileDialog(string strTitle,
 			string strSuggestedFileName, string strFilter, int iFilterIndex,
 			string strDefaultExt, bool bRestoreDirectory)
 		{
-			return CreateSaveFileDialog(strTitle, strSuggestedFileName, strFilter,
-				iFilterIndex, strDefaultExt, bRestoreDirectory, false);
+			return (SaveFileDialog)CreateSaveFileDialog(strTitle, strSuggestedFileName,
+				strFilter, iFilterIndex, strDefaultExt, string.Empty).FileDialog;
 		}
 
+		[Obsolete("Use the overload with the strContext parameter.")]
 		public static SaveFileDialog CreateSaveFileDialog(string strTitle,
 			string strSuggestedFileName, string strFilter, int iFilterIndex,
 			string strDefaultExt, bool bRestoreDirectory, bool bIsDatabaseFile)
 		{
-			SaveFileDialog sfd = new SaveFileDialog();
+			return (SaveFileDialog)CreateSaveFileDialog(strTitle, strSuggestedFileName,
+				strFilter, iFilterIndex, strDefaultExt, (bIsDatabaseFile ?
+				AppDefs.FileDialogContext.Database : string.Empty)).FileDialog;
+		}
 
-			sfd.AddExtension = true;
-			sfd.CheckFileExists = false;
-			sfd.CheckPathExists = true;
-			sfd.CreatePrompt = false;
+		public static SaveFileDialogEx CreateSaveFileDialog(string strTitle,
+			string strSuggestedFileName, string strFilter, int iFilterIndex,
+			string strDefaultExt, string strContext)
+		{
+			SaveFileDialogEx sfd = new SaveFileDialogEx(strContext);
 
-			if((strDefaultExt != null) && (strDefaultExt.Length > 0))
+			if(!string.IsNullOrEmpty(strDefaultExt))
 				sfd.DefaultExt = strDefaultExt;
 
-			sfd.DereferenceLinks = true;
-
-			if((strSuggestedFileName != null) && (strSuggestedFileName.Length > 0))
+			if(!string.IsNullOrEmpty(strSuggestedFileName))
 				sfd.FileName = strSuggestedFileName;
 
-			if((strFilter != null) && (strFilter.Length > 0))
+			if(!string.IsNullOrEmpty(strFilter))
 			{
 				sfd.Filter = strFilter;
 
 				if(iFilterIndex > 0) sfd.FilterIndex = iFilterIndex;
 			}
 
-			sfd.OverwritePrompt = true;
-			sfd.RestoreDirectory = bRestoreDirectory;
-			sfd.ShowHelp = false;
-			// sfd.SupportMultiDottedExtensions = false; // Default
-
-			if((strTitle != null) && (strTitle.Length > 0))
+			if(!string.IsNullOrEmpty(strTitle))
 				sfd.Title = strTitle;
 
-			sfd.ValidateNames = true;
-
-			if(bIsDatabaseFile && (Program.Config.Defaults.FileSaveAsDirectory.Length > 0))
-				sfd.InitialDirectory = Program.Config.Defaults.FileSaveAsDirectory;
+			if(strContext != null)
+			{
+				if((strContext == AppDefs.FileDialogContext.Database) &&
+					(Program.Config.Defaults.FileSaveAsDirectory.Length > 0))
+					sfd.InitialDirectory = Program.Config.Defaults.FileSaveAsDirectory;
+			}
 
 			return sfd;
 		}
@@ -1056,32 +1070,6 @@ namespace KeePass.UI
 			}
 		}
 
-		public static Image LoadImage(byte[] pb)
-		{
-			if(pb == null) throw new ArgumentNullException("pb");
-
-			MemoryStream ms = new MemoryStream(pb, false);
-			try { return Image.FromStream(ms); }
-			catch(Exception)
-			{
-				Image imgIco = TryLoadIco(pb);
-				if(imgIco != null) return imgIco;
-
-				throw;
-			}
-			finally { ms.Close(); }
-		}
-
-		private static Image TryLoadIco(byte[] pb)
-		{
-			MemoryStream ms = new MemoryStream(pb, false);
-			try { return (new Icon(ms)).ToBitmap(); }
-			catch(Exception) { }
-			finally { ms.Close(); }
-
-			return null;
-		}
-
 		public static void SetShield(Button btn, bool bSetShield)
 		{
 			if(btn == null) throw new ArgumentNullException("btn");
@@ -1713,7 +1701,7 @@ namespace KeePass.UI
 			catch(Exception) { Debug.Assert(false); }
 		}
 
-		public static Bitmap ExtractVistaIcon(Icon ico)
+		public static Image ExtractVistaIcon(Icon ico)
 		{
 			if(ico == null) { Debug.Assert(false); return null; }
 
@@ -1747,11 +1735,7 @@ namespace KeePass.UI
 						byte[] pbImage = msImage.ToArray();
 						msImage.Close();
 
-						msImage = new MemoryStream(pbImage, false);
-						Bitmap bmp = new Bitmap(msImage);
-						msImage.Close();
-
-						return bmp;
+						return GfxUtil.LoadImage(pbImage);
 					}
 				}
 			}
@@ -1817,11 +1801,11 @@ namespace KeePass.UI
 
 					if(qSize > 32)
 					{
-						Bitmap bmpIco = ExtractVistaIcon(icoBase);
-						if(bmpIco != null)
+						Image imgIco = ExtractVistaIcon(icoBase);
+						if(imgIco != null)
 						{
-							g.DrawImage(bmpIco, 0, 0, bmp.Width, bmp.Height);
-							bmpIco.Dispose();
+							g.DrawImage(imgIco, 0, 0, bmp.Width, bmp.Height);
+							imgIco.Dispose();
 						}
 						else g.DrawIcon(icoBase, new Rectangle(0, 0, bmp.Width, bmp.Height));
 					}
@@ -2135,5 +2119,23 @@ namespace KeePass.UI
 
 			return bmp;
 		}
+
+		public static Bitmap CreateScaledImage(Image img, int w, int h)
+		{
+			if(img == null) { Debug.Assert(false); return null; }
+
+			Bitmap bmp = new Bitmap(w, h, PixelFormat.Format32bppArgb);
+			using(Graphics g = Graphics.FromImage(bmp))
+			{
+				g.Clear(Color.Transparent);
+
+				g.InterpolationMode = InterpolationMode.HighQualityBicubic;
+				g.SmoothingMode = SmoothingMode.HighQuality;
+
+				g.DrawImage(img, 0, 0, w, h);
+			}
+
+			return bmp;
+		}
 	}
 }
diff --git a/KeePass/UI/VistaTaskDialog.cs b/KeePass/UI/VistaTaskDialog.cs
index 959f22f..9193e85 100644
--- a/KeePass/UI/VistaTaskDialog.cs
+++ b/KeePass/UI/VistaTaskDialog.cs
@@ -26,6 +26,7 @@ using System.Diagnostics;
 using System.Drawing;
 
 using KeePass.Native;
+using KeePass.Resources;
 
 using KeePassLib.Utility;
 
@@ -223,6 +224,22 @@ namespace KeePass.UI
 			}
 		}
 
+		public string ExpandedInformation
+		{
+			get { return m_cfg.pszExpandedInformation; }
+			set { m_cfg.pszExpandedInformation = value; }
+		}
+
+		public bool ExpandedByDefault
+		{
+			get { return ((m_cfg.dwFlags & VtdFlags.ExpandedByDefault) != VtdFlags.None); }
+			set
+			{
+				if(value) m_cfg.dwFlags |= VtdFlags.ExpandedByDefault;
+				else m_cfg.dwFlags &= ~VtdFlags.ExpandedByDefault;
+			}
+		}
+
 		public string FooterText
 		{
 			get { return m_cfg.pszFooter; }
@@ -245,9 +262,8 @@ namespace KeePass.UI
 			get { return m_bVerification; }
 		}
 
-		public VistaTaskDialog(IntPtr hParent)
+		public VistaTaskDialog()
 		{
-			m_cfg.hwndParent = hParent;
 		}
 
 		public void AddButton(int iResult, string strCommand, string strDescription)
@@ -321,13 +337,39 @@ namespace KeePass.UI
 
 		public bool ShowDialog()
 		{
+			return ShowDialog(null);
+		}
+
+		public bool ShowDialog(Form fParent)
+		{
 			MessageService.ExternalIncrementMessageCount();
-			bool bResult = InternalShowDialog();
+
+			Form f = fParent;
+			if(f == null) f = MessageService.GetTopForm();
+			if(f == null) f = GlobalWindowManager.TopWindow;
+
+#if DEBUG
+			if(GlobalWindowManager.TopWindow != null)
+			{
+				Debug.Assert(f == GlobalWindowManager.TopWindow);
+			}
+			Debug.Assert(f == MessageService.GetTopForm());
+#endif
+
+			bool bResult;
+			if((f == null) || !f.InvokeRequired)
+				bResult = InternalShowDialog(f);
+			else
+				bResult = (bool)f.Invoke(new InternalShowDialogDelegate(
+					this.InternalShowDialog), f);
+
 			MessageService.ExternalDecrementMessageCount();
 			return bResult;
 		}
 
-		private bool InternalShowDialog()
+		private delegate bool InternalShowDialogDelegate(Form fParent);
+
+		private bool InternalShowDialog(Form fParent)
 		{
 			if(IntPtr.Size == 4)
 				{ Debug.Assert(Marshal.SizeOf(typeof(VtdConfig)) == VtdConfigSize32); }
@@ -337,6 +379,21 @@ namespace KeePass.UI
 
 			m_cfg.cbSize = (uint)Marshal.SizeOf(typeof(VtdConfig));
 
+			if(fParent == null) m_cfg.hwndParent = IntPtr.Zero;
+			else
+			{
+				try { m_cfg.hwndParent = fParent.Handle; }
+				catch(Exception)
+				{
+					Debug.Assert(false);
+					m_cfg.hwndParent = IntPtr.Zero;
+				}
+			}
+
+			bool bExp = (m_cfg.pszExpandedInformation != null);
+			m_cfg.pszExpandedControlText = (bExp ? KPRes.Details : null);
+			m_cfg.pszCollapsedControlText = (bExp ? KPRes.Details : null);
+
 			int pnButton = 0, pnRadioButton = 0;
 			bool bVerification = false;
 
@@ -362,9 +419,9 @@ namespace KeePass.UI
 		}
 
 		public static bool ShowMessageBox(string strContent, string strMainInstruction,
-			string strWindowTitle, VtdIcon vtdIcon, IntPtr hParent)
+			string strWindowTitle, VtdIcon vtdIcon, Form fParent)
 		{
-			VistaTaskDialog vtd = new VistaTaskDialog(hParent);
+			VistaTaskDialog vtd = new VistaTaskDialog();
 
 			vtd.CommandLinks = false;
 
@@ -374,7 +431,7 @@ namespace KeePass.UI
 
 			vtd.SetIcon(vtdIcon);
 
-			return vtd.ShowDialog();
+			return vtd.ShowDialog(fParent);
 		}
 	}
 }
diff --git a/KeePass/Util/AppLocator.cs b/KeePass/Util/AppLocator.cs
index 2df75b1..0b7c26b 100644
--- a/KeePass/Util/AppLocator.cs
+++ b/KeePass/Util/AppLocator.cs
@@ -297,7 +297,11 @@ namespace KeePass.Util
 
 		public static string FindAppUnix(string strApp)
 		{
-			string str = NativeLib.RunConsoleApp("whereis", "-b " + strApp);
+			string strArgPrefix = "-b ";
+			if(NativeLib.GetPlatformID() == PlatformID.MacOSX)
+				strArgPrefix = string.Empty; // FR 3535696
+
+			string str = NativeLib.RunConsoleApp("whereis", strArgPrefix + strApp);
 			if(str == null) return null;
 
 			str = str.Trim();
diff --git a/KeePass/Util/BinaryDataClassifier.cs b/KeePass/Util/BinaryDataClassifier.cs
index d144ebe..e41fbc6 100644
--- a/KeePass/Util/BinaryDataClassifier.cs
+++ b/KeePass/Util/BinaryDataClassifier.cs
@@ -97,14 +97,16 @@ namespace KeePass.Util
 			Debug.Assert(pbData != null);
 			if(pbData == null) throw new ArgumentNullException("pbData");
 
-			MemoryStream ms = new MemoryStream(pbData, false);
 			try
 			{
-				Image.FromStream(ms);
-				return BinaryDataClass.Image;
+				Image img = GfxUtil.LoadImage(pbData);
+				if(img != null)
+				{
+					img.Dispose();
+					return BinaryDataClass.Image;
+				}
 			}
 			catch(Exception) { }
-			finally { ms.Close(); }
 
 			return BinaryDataClass.Unknown;
 		}
diff --git a/KeePass/Util/ClipboardUtil.MacOSX.cs b/KeePass/Util/ClipboardUtil.MacOSX.cs
deleted file mode 100644
index 5d0301f..0000000
--- a/KeePass/Util/ClipboardUtil.MacOSX.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-  KeePass Password Safe - The Open-Source Password Manager
-  Copyright (C) 2003-2012 Dominik Reichl <dominik.reichl at t-online.de>
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or
-  (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-*/
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Diagnostics;
-
-using KeePassLib.Native;
-
-namespace KeePass.Util
-{
-	public static partial class ClipboardUtil
-	{
-		private static string GetStringM()
-		{
-			return (NativeLib.RunConsoleApp("pbpaste", "-pboard general") ??
-				string.Empty);
-		}
-
-		private static void SetStringM(string str)
-		{
-			NativeLib.RunConsoleApp("pbcopy", "-pboard general", str);
-		}
-	}
-}
diff --git a/KeePass/Util/ClipboardUtil.Unix.cs b/KeePass/Util/ClipboardUtil.Unix.cs
new file mode 100644
index 0000000..8e41b20
--- /dev/null
+++ b/KeePass/Util/ClipboardUtil.Unix.cs
@@ -0,0 +1,83 @@
+/*
+  KeePass Password Safe - The Open-Source Password Manager
+  Copyright (C) 2003-2012 Dominik Reichl <dominik.reichl at t-online.de>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+using System.Diagnostics;
+
+using KeePassLib.Native;
+
+namespace KeePass.Util
+{
+	public static partial class ClipboardUtil
+	{
+		private static string GetStringM()
+		{
+			return (NativeLib.RunConsoleApp("pbpaste", "-pboard general") ??
+				string.Empty);
+		}
+
+		private static void SetStringM(string str)
+		{
+			NativeLib.RunConsoleApp("pbcopy", "-pboard general", str);
+		}
+
+		private static string GetStringU()
+		{
+			// string str = NativeLib.RunConsoleApp("xclip",
+			//	"-out -selection clipboard");
+			// if(str != null) return str;
+
+			string str = NativeLib.RunConsoleApp("xsel",
+				"--output --clipboard");
+			if(str != null) return str;
+
+			if(Clipboard.ContainsText())
+				return (Clipboard.GetText() ?? string.Empty);
+
+			return string.Empty;
+		}
+
+		private static void SetStringU(string str)
+		{
+			// string r = NativeLib.RunConsoleApp("xclip",
+			//	"-in -selection clipboard", str);
+			// if(r != null) return;
+
+			if(string.IsNullOrEmpty(str))
+			{
+				NativeLib.RunConsoleApp("xsel", "--delete --clipboard");
+
+				try { Clipboard.Clear(); }
+				catch(Exception) { Debug.Assert(false); }
+
+				return; // xsel with an empty input can hang
+			}
+
+			string r = NativeLib.RunConsoleApp("xsel",
+				"--input --clipboard", str);
+			if(r != null) return;
+
+			try { Clipboard.SetText(str); }
+			catch(Exception) { Debug.Assert(false); }
+		}
+	}
+}
diff --git a/KeePass/Util/ClipboardUtil.cs b/KeePass/Util/ClipboardUtil.cs
index af9f3fe..2c3c498 100644
--- a/KeePass/Util/ClipboardUtil.cs
+++ b/KeePass/Util/ClipboardUtil.cs
@@ -97,13 +97,14 @@ namespace KeePass.Util
 				}
 				else if(KeeNativeLib.NativeLib.GetPlatformID() == PlatformID.MacOSX)
 					SetStringM(strData);
-				else // Managed
-				{
-					Clear();
-
-					DataObject doData = CreateProtectedDataObject(strData);
-					Clipboard.SetDataObject(doData);
-				}
+				else if(KeeNativeLib.NativeLib.IsUnix())
+					SetStringU(strData);
+				// else // Managed
+				// {
+				//	Clear();
+				//	DataObject doData = CreateProtectedDataObject(strData);
+				//	Clipboard.SetDataObject(doData);
+				// }
 			}
 			catch(Exception) { Debug.Assert(false); return false; }
 
@@ -168,13 +169,15 @@ namespace KeePass.Util
 				else if(KeeNativeLib.NativeLib.GetPlatformID() == PlatformID.MacOSX)
 					SetStringM(Convert.ToBase64String(pbToCopy,
 						Base64FormattingOptions.None));
-				else // Managed, no encoding
-				{
-					Clear();
-
-					DataObject doData = CreateProtectedDataObject(strFormat, pbToCopy);
-					Clipboard.SetDataObject(doData);
-				}
+				else if(KeeNativeLib.NativeLib.IsUnix())
+					SetStringU(Convert.ToBase64String(pbToCopy,
+						Base64FormattingOptions.None));
+				// else // Managed, no encoding
+				// {
+				//	Clear();
+				//	DataObject doData = CreateProtectedDataObject(strFormat, pbToCopy);
+				//	Clipboard.SetDataObject(doData);
+				// }
 			}
 			catch(Exception) { Debug.Assert(false); return false; }
 
@@ -208,10 +211,12 @@ namespace KeePass.Util
 				}
 				else if(KeeNativeLib.NativeLib.GetPlatformID() == PlatformID.MacOSX)
 					return Convert.FromBase64String(GetStringM());
-				else // Managed, no encoding
-				{
-					return (byte[])Clipboard.GetData(strFormat);
-				}
+				else if(KeeNativeLib.NativeLib.IsUnix())
+					return Convert.FromBase64String(GetStringU());
+				// else // Managed, no encoding
+				// {
+				//	return (byte[])Clipboard.GetData(strFormat);
+				// }
 			}
 			catch(Exception) { Debug.Assert(false); }
 
@@ -283,6 +288,11 @@ namespace KeePass.Util
 					SetStringM(string.Empty);
 					bNativeSuccess = true;
 				}
+				else if(KeeNativeLib.NativeLib.IsUnix())
+				{
+					SetStringU(string.Empty);
+					bNativeSuccess = true;
+				}
 			}
 			catch(Exception) { Debug.Assert(false); }
 
@@ -318,17 +328,19 @@ namespace KeePass.Util
 				{
 					string strData = GetStringM();
 					byte[] pbUtf8 = StrUtil.Utf8.GetBytes(strData);
-
-					SHA256Managed sha256 = new SHA256Managed();
-					return sha256.ComputeHash(pbUtf8);
+					return (new SHA256Managed()).ComputeHash(pbUtf8);
+				}
+				else if(KeeNativeLib.NativeLib.IsUnix())
+				{
+					string strData = GetStringU();
+					byte[] pbUtf8 = StrUtil.Utf8.GetBytes(strData);
+					return (new SHA256Managed()).ComputeHash(pbUtf8);
 				}
 				else if(Clipboard.ContainsText())
 				{
 					string strData = Clipboard.GetText();
 					byte[] pbUtf8 = StrUtil.Utf8.GetBytes(strData);
-
-					SHA256Managed sha256 = new SHA256Managed();
-					return sha256.ComputeHash(pbUtf8);
+					return (new SHA256Managed()).ComputeHash(pbUtf8);
 				}
 				else if(m_strFormat != null)
 				{
@@ -370,9 +382,13 @@ namespace KeePass.Util
 			{
 				string str = GetStringM();
 				byte[] pbText = StrUtil.Utf8.GetBytes("pb" + str);
-
-				SHA256Managed sha256 = new SHA256Managed();
-				return sha256.ComputeHash(pbText);
+				return (new SHA256Managed()).ComputeHash(pbText);
+			}
+			if(KeeNativeLib.NativeLib.IsUnix())
+			{
+				string str = GetStringU();
+				byte[] pbText = StrUtil.Utf8.GetBytes("pb" + str);
+				return (new SHA256Managed()).ComputeHash(pbText);
 			}
 
 			try
diff --git a/KeePass/Util/CommandLineArgs.cs b/KeePass/Util/CommandLineArgs.cs
index 91ba956..abc71c2 100644
--- a/KeePass/Util/CommandLineArgs.cs
+++ b/KeePass/Util/CommandLineArgs.cs
@@ -98,7 +98,7 @@ namespace KeePass.Util
 			}
 		}
 
-		private static KeyValuePair<string, string> GetParameter(string strCompiled)
+		internal static KeyValuePair<string, string> GetParameter(string strCompiled)
 		{
 			string str = strCompiled;
 
diff --git a/KeePass/Util/EntryUtil.cs b/KeePass/Util/EntryUtil.cs
index 5351775..0712ae3 100644
--- a/KeePass/Util/EntryUtil.cs
+++ b/KeePass/Util/EntryUtil.cs
@@ -119,7 +119,7 @@ namespace KeePass.Util
 		{
 			MemoryStream ms = new MemoryStream();
 			GZipStream gz = new GZipStream(ms, CompressionMode.Compress);
-			Kdb4File.WriteEntries(gz, vEntries);
+			KdbxFile.WriteEntries(gz, vEntries);
 
 			byte[] pbFinal;
 			if(WinUtil.IsWindows9x) pbFinal = ms.ToArray();
@@ -154,7 +154,7 @@ namespace KeePass.Util
 			MemoryStream ms = new MemoryStream(pbPlain, false);
 			GZipStream gz = new GZipStream(ms, CompressionMode.Decompress);
 
-			List<PwEntry> vEntries = Kdb4File.ReadEntries(gz);
+			List<PwEntry> vEntries = KdbxFile.ReadEntries(gz);
 
 			// Adjust protection settings and add entries
 			foreach(PwEntry pe in vEntries)
diff --git a/KeePass/Util/KeyUtil.cs b/KeePass/Util/KeyUtil.cs
index a3f51e5..d7ca539 100644
--- a/KeePass/Util/KeyUtil.cs
+++ b/KeePass/Util/KeyUtil.cs
@@ -46,6 +46,7 @@ namespace KeePass.Util
 			CompositeKey cmpKey = new CompositeKey();
 			string strPassword = args[AppDefs.CommandLineOptions.Password];
 			string strPasswordEnc = args[AppDefs.CommandLineOptions.PasswordEncrypted];
+			string strPasswordStdIn = args[AppDefs.CommandLineOptions.PasswordStdIn];
 			string strKeyFile = args[AppDefs.CommandLineOptions.KeyFile];
 			string strUserAcc = args[AppDefs.CommandLineOptions.UserAccount];
 
@@ -53,6 +54,11 @@ namespace KeePass.Util
 				cmpKey.AddUserKey(new KcpPassword(strPassword));
 			else if(strPasswordEnc != null)
 				cmpKey.AddUserKey(new KcpPassword(StrUtil.DecryptString(strPasswordEnc)));
+			else if(strPasswordStdIn != null)
+			{
+				KcpPassword kcpPw = ReadPasswordStdIn(true);
+				if(kcpPw != null) cmpKey.AddUserKey(kcpPw);
+			}
 			
 			if(strKeyFile != null)
 			{
@@ -116,11 +122,76 @@ namespace KeePass.Util
 
 			args.Remove(AppDefs.CommandLineOptions.Password);
 			args.Remove(AppDefs.CommandLineOptions.PasswordEncrypted);
+			args.Remove(AppDefs.CommandLineOptions.PasswordStdIn);
 			args.Remove(AppDefs.CommandLineOptions.KeyFile);
 			args.Remove(AppDefs.CommandLineOptions.PreSelect);
 			args.Remove(AppDefs.CommandLineOptions.UserAccount);
 		}
 
+		private static bool m_bReadPwStdIn = false;
+		private static string m_strReadPwStdIn = null;
+		/// <summary>
+		/// Read a password from StdIn. The password is read only once
+		/// and then cached.
+		/// </summary>
+		internal static KcpPassword ReadPasswordStdIn(bool bFailWithUI)
+		{
+			string strPw = null;
+
+			if(m_bReadPwStdIn) strPw = m_strReadPwStdIn;
+			else
+			{
+				try { strPw = Console.ReadLine(); }
+				catch(Exception exCon)
+				{
+					if(bFailWithUI) MessageService.ShowWarning(exCon);
+				}
+			}
+
+			if(strPw == null)
+			{
+				m_strReadPwStdIn = null;
+				m_bReadPwStdIn = true;
+
+				return null;
+			}
+
+			strPw = strPw.Trim();
+
+			m_strReadPwStdIn = strPw;
+			m_bReadPwStdIn = true;
+
+			return new KcpPassword(strPw);
+		}
+
+		internal static string[] MakeCtxIndependent(string[] vCmdLineArgs)
+		{
+			if(vCmdLineArgs == null) { Debug.Assert(false); return new string[0]; }
+
+			CommandLineArgs cl = new CommandLineArgs(vCmdLineArgs);
+			List<string> lFlt = new List<string>();
+
+			foreach(string strArg in vCmdLineArgs)
+			{
+				KeyValuePair<string, string> kvpArg = CommandLineArgs.GetParameter(strArg);
+				if(kvpArg.Key.Equals(AppDefs.CommandLineOptions.PasswordStdIn, StrUtil.CaseIgnoreCmp))
+				{
+					KcpPassword kcpPw = ReadPasswordStdIn(true);
+
+					if((cl[AppDefs.CommandLineOptions.Password] == null) &&
+						(cl[AppDefs.CommandLineOptions.PasswordEncrypted] == null) &&
+						(kcpPw != null))
+					{
+						lFlt.Add("-" + AppDefs.CommandLineOptions.Password + ":" +
+							kcpPw.Password.ReadString()); // No quote wrapping/encoding
+					}
+				}
+				else lFlt.Add(strArg);
+			}
+
+			return lFlt.ToArray();
+		}
+
 		public static bool ReAskKey(PwDatabase pwDatabase, bool bFailWithUI)
 		{
 			if(pwDatabase == null) { Debug.Assert(false); return false; }
diff --git a/KeePass/Util/MonoWorkarounds.cs b/KeePass/Util/MonoWorkarounds.cs
index a409aea..449dc71 100644
--- a/KeePass/Util/MonoWorkarounds.cs
+++ b/KeePass/Util/MonoWorkarounds.cs
@@ -25,6 +25,7 @@ using System.ComponentModel;
 using System.Reflection;
 using System.Diagnostics;
 
+using KeePassLib;
 using KeePassLib.Native;
 
 namespace KeePass.Util
@@ -46,6 +47,9 @@ namespace KeePass.Util
 			if(!MonoWorkarounds.IsRequired) return;
 			if(f == null) { Debug.Assert(false); return; }
 
+			f.HandleCreated += MonoWorkarounds.OnFormHandleCreated;
+			SetWmClass(f);
+
 			ApplyToControlsRec(f.Controls, f, MonoWorkarounds.ApplyToControl);
 		}
 
@@ -54,6 +58,8 @@ namespace KeePass.Util
 			if(!MonoWorkarounds.IsRequired) return;
 			if(f == null) { Debug.Assert(false); return; }
 
+			f.HandleCreated -= MonoWorkarounds.OnFormHandleCreated;
+
 			ApplyToControlsRec(f.Controls, f, MonoWorkarounds.ReleaseControl);
 		}
 
@@ -203,5 +209,16 @@ namespace KeePass.Util
 			if((f != null) && (f.DialogResult == hi.Result))
 				f.DialogResult = hi.Result; // Raises close events
 		}
+
+		private static void SetWmClass(Form f)
+		{
+			KeePass.Native.NativeMethods.SetWmClass(f, PwDefs.UnixName,
+				PwDefs.ResClass);
+		}
+
+		private static void OnFormHandleCreated(object sender, EventArgs e)
+		{
+			SetWmClass(sender as Form);
+		}
 	}
 }
diff --git a/KeePass/Util/SendInputEx.cs b/KeePass/Util/SendInputEx.cs
index 279072d..42a9790 100644
--- a/KeePass/Util/SendInputEx.cs
+++ b/KeePass/Util/SendInputEx.cs
@@ -41,6 +41,8 @@ namespace KeePass.Util
 		public uint DefaultDelay = 10;
 
 		public IntPtr TargetHWnd = IntPtr.Zero;
+		public string TargetWindowTitle = string.Empty;
+
 		public uint ThisThreadID = 0;
 		public uint TargetThreadID = 0;
 		public uint TargetProcessID = 0;
@@ -92,7 +94,13 @@ namespace KeePass.Util
 
 			try
 			{
-				si.TargetHWnd = NativeMethods.GetForegroundWindowHandle();
+				IntPtr hWndTarget;
+				string strTargetTitle;
+				NativeMethods.GetForegroundWindowInfo(out hWndTarget,
+					out strTargetTitle, false);
+				si.TargetHWnd = hWndTarget;
+				si.TargetWindowTitle = (strTargetTitle ?? string.Empty);
+
 				si.ThisThreadID = NativeMethods.GetCurrentThreadId();
 				uint uTargetProcessID;
 				si.TargetThreadID = NativeMethods.GetWindowThreadProcessId(
@@ -393,14 +401,26 @@ namespace KeePass.Util
 		{
 			if(siState.Cancelled) return false;
 
-			if(!Program.Config.Integration.AutoTypeCancelOnWindowChange) return true;
 			if(KeePassLib.Native.NativeLib.IsUnix()) return true;
 
+			bool bChkWnd = Program.Config.Integration.AutoTypeCancelOnWindowChange;
+			bool bChkTitle = Program.Config.Integration.AutoTypeCancelOnTitleChange;
+			if(!bChkWnd && !bChkTitle) return true;
+
 			bool bValid = true;
 			try
 			{
-				IntPtr h = NativeMethods.GetForegroundWindowHandle();
-				if(h != siState.TargetHWnd)
+				IntPtr h;
+				string strTitle;
+				NativeMethods.GetForegroundWindowInfo(out h, out strTitle, false);
+
+				if(bChkWnd && (h != siState.TargetHWnd))
+				{
+					siState.Cancelled = true;
+					bValid = false;
+				}
+
+				if(bChkTitle && ((strTitle ?? string.Empty) != siState.TargetWindowTitle))
 				{
 					siState.Cancelled = true;
 					bValid = false;
diff --git a/KeePass/Util/Spr/SprContext.cs b/KeePass/Util/Spr/SprContext.cs
index 41b8c54..336cdda 100644
--- a/KeePass/Util/Spr/SprContext.cs
+++ b/KeePass/Util/Spr/SprContext.cs
@@ -37,7 +37,7 @@ namespace KeePass.Util.Spr
 		AppPaths = 0x1, // Paths to IE, Firefox, Opera, ...
 		PickChars = 0x2,
 		EntryStrings = 0x4,
-		UrlRmvScm = 0x8,
+		EntryStringsSpecial = 0x8, // {URL:RMVSCM}, ...
 		PasswordEnc = 0x10,
 		Group = 0x20,
 		Paths = 0x40, // App-dir, doc-dir, path sep, ...
@@ -49,15 +49,21 @@ namespace KeePass.Util.Spr
 		HmacOtp = 0x1000,
 		Comments = 0x2000,
 
-		All = 0x3FFF,
+		ExtActive = 0x4000, // Active transformations provided by plugins
+		ExtNonActive = 0x8000, // Non-active transformations provided by plugins
 
+		// Next free: 0x10000
+		All = 0xFFFF,
+
+		// Internal:
 		UIInteractive = SprCompileFlags.PickChars,
 		StateChanging = (SprCompileFlags.NewPassword | SprCompileFlags.HmacOtp),
 
-		Active = (SprCompileFlags.UIInteractive | SprCompileFlags.StateChanging),
+		Active = (SprCompileFlags.UIInteractive | SprCompileFlags.StateChanging |
+			SprCompileFlags.ExtActive),
 		NonActive = (SprCompileFlags.All & ~SprCompileFlags.Active),
 
-		Deref = (SprCompileFlags.EntryStrings | SprCompileFlags.UrlRmvScm |
+		Deref = (SprCompileFlags.EntryStrings | SprCompileFlags.EntryStringsSpecial |
 			SprCompileFlags.References)
 	}
 
@@ -114,15 +120,15 @@ namespace KeePass.Util.Spr
 			get { return m_refsCache; }
 		}
 
-		private bool m_bNoUrlSchemeOnce = false;
-		/// <summary>
-		/// Used internally by <c>SprEngine</c>; don't modify it.
-		/// </summary>
-		internal bool UrlRemoveSchemeOnce
-		{
-			get { return m_bNoUrlSchemeOnce; }
-			set { m_bNoUrlSchemeOnce = value; }
-		}
+		// private bool m_bNoUrlSchemeOnce = false;
+		// /// <summary>
+		// /// Used internally by <c>SprEngine</c>; don't modify it.
+		// /// </summary>
+		// internal bool UrlRemoveSchemeOnce
+		// {
+		//	get { return m_bNoUrlSchemeOnce; }
+		//	set { m_bNoUrlSchemeOnce = value; }
+		// }
 
 		public SprContext() { }
 
@@ -161,7 +167,7 @@ namespace KeePass.Util.Spr
 
 			ctx.m_bMakeAT = false;
 			ctx.m_bMakeCmdQuotes = false;
-			ctx.m_bNoUrlSchemeOnce = false;
+			// ctx.m_bNoUrlSchemeOnce = false;
 
 			Debug.Assert(object.ReferenceEquals(m_pe, ctx.m_pe));
 			Debug.Assert(object.ReferenceEquals(m_pd, ctx.m_pd));
@@ -169,4 +175,35 @@ namespace KeePass.Util.Spr
 			return ctx;
 		}
 	}
+
+	public sealed class SprEventArgs : EventArgs
+	{
+		private string m_str = string.Empty;
+		public string Text
+		{
+			get { return m_str; }
+			set
+			{
+				if(value == null) throw new ArgumentNullException("value");
+				m_str = value;
+			}
+		}
+
+		private SprContext m_ctx = null;
+		public SprContext Context
+		{
+			get { return m_ctx; }
+		}
+
+		public SprEventArgs() { }
+
+		public SprEventArgs(string strText, SprContext ctx)
+		{
+			if(strText == null) throw new ArgumentNullException("strText");
+			// ctx == null is allowed
+
+			m_str = strText;
+			m_ctx = ctx;
+		}
+	}
 }
diff --git a/KeePass/Util/Spr/SprEngine.cs b/KeePass/Util/Spr/SprEngine.cs
index 6e0a72e..46482d5 100644
--- a/KeePass/Util/Spr/SprEngine.cs
+++ b/KeePass/Util/Spr/SprEngine.cs
@@ -45,6 +45,19 @@ namespace KeePass.Util.Spr
 
 		// private static readonly char[] m_vPlhEscapes = new char[] { '{', '}', '%' };
 
+		// Important notes for plugin developers subscribing to the following events:
+		// * If possible, prefer subscribing to FilterCompile instead of
+		//   FilterCompilePre.
+		// * If your plugin provides an active transformation (e.g. replacing a
+		//   placeholder that changes some state or requires UI interaction), you
+		//   must only perform the transformation if the ExtActive bit is set in
+		//   args.Context.Flags of the event arguments object args provided to the
+		//   event handler.
+		// * Non-active transformations should only be performed if the ExtNonActive
+		//   bit is set in args.Context.Flags.
+		public static event EventHandler<SprEventArgs> FilterCompilePre;
+		public static event EventHandler<SprEventArgs> FilterCompile;
+
 		private static void InitializeStatic()
 		{
 			m_strAppExePath = WinUtil.GetExecutable();
@@ -92,6 +105,15 @@ namespace KeePass.Util.Spr
 
 			string str = strText;
 
+			bool bExt = ((ctx.Flags & (SprCompileFlags.ExtActive |
+				SprCompileFlags.ExtNonActive)) != SprCompileFlags.None);
+			if(bExt && (SprEngine.FilterCompilePre != null))
+			{
+				SprEventArgs args = new SprEventArgs(str, ctx.Clone());
+				SprEngine.FilterCompilePre(null, args);
+				str = args.Text;
+			}
+
 			if((ctx.Flags & SprCompileFlags.Comments) != SprCompileFlags.None)
 				str = RemoveComments(str);
 
@@ -106,12 +128,14 @@ namespace KeePass.Util.Spr
 				if((ctx.Flags & SprCompileFlags.EntryStrings) != SprCompileFlags.None)
 					str = FillEntryStrings(str, ctx, uRecursionLevel);
 
-				if((ctx.Flags & SprCompileFlags.UrlRmvScm) != SprCompileFlags.None)
+				if((ctx.Flags & SprCompileFlags.EntryStringsSpecial) != SprCompileFlags.None)
 				{
-					ctx.UrlRemoveSchemeOnce = true;
-					str = SprEngine.FillIfExists(str, @"{URL:RMVSCM}",
-						ctx.Entry.Strings.GetSafe(PwDefs.UrlField), ctx, uRecursionLevel);
-					Debug.Assert(!ctx.UrlRemoveSchemeOnce);
+					// ctx.UrlRemoveSchemeOnce = true;
+					// str = SprEngine.FillIfExists(str, @"{URL:RMVSCM}",
+					//	ctx.Entry.Strings.GetSafe(PwDefs.UrlField), ctx, uRecursionLevel);
+					// Debug.Assert(!ctx.UrlRemoveSchemeOnce);
+
+					str = FillEntryStringsSpecial(str, ctx, uRecursionLevel);
 				}
 
 				if(((ctx.Flags & SprCompileFlags.PasswordEnc) != SprCompileFlags.None) &&
@@ -239,6 +263,13 @@ namespace KeePass.Util.Spr
 			if((ctx.Flags & SprCompileFlags.PickChars) != SprCompileFlags.None)
 				str = ReplacePickChars(str, ctx, uRecursionLevel);
 
+			if(bExt && (SprEngine.FilterCompile != null))
+			{
+				SprEventArgs args = new SprEventArgs(str, ctx.Clone());
+				SprEngine.FilterCompile(null, args);
+				str = args.Text;
+			}
+
 			if(ctx.EncodeAsAutoTypeSequence)
 			{
 				str = StrUtil.NormalizeNewLines(str, false);
@@ -251,14 +282,14 @@ namespace KeePass.Util.Spr
 		private static string FillIfExists(string strData, string strPlaceholder,
 			ProtectedString psParsable, SprContext ctx, uint uRecursionLevel)
 		{
-			// The UrlRemoveSchemeOnce property of ctx must be cleared
-			// before this method returns and before any recursive call
-			bool bRemoveScheme = false;
-			if(ctx != null)
-			{
-				bRemoveScheme = ctx.UrlRemoveSchemeOnce;
-				ctx.UrlRemoveSchemeOnce = false;
-			}
+			// // The UrlRemoveSchemeOnce property of ctx must be cleared
+			// // before this method returns and before any recursive call
+			// bool bRemoveScheme = false;
+			// if(ctx != null)
+			// {
+			//	bRemoveScheme = ctx.UrlRemoveSchemeOnce;
+			//	ctx.UrlRemoveSchemeOnce = false;
+			// }
 
 			if(strData == null) { Debug.Assert(false); return string.Empty; }
 			if(strPlaceholder == null) { Debug.Assert(false); return strData; }
@@ -271,8 +302,8 @@ namespace KeePass.Util.Spr
 					psParsable.ReadString(), ctx.WithoutContentTransformations(),
 					uRecursionLevel + 1);
 
-				if(bRemoveScheme)
-					strReplacement = UrlUtil.RemoveScheme(strReplacement);
+				// if(bRemoveScheme)
+				//	strReplacement = UrlUtil.RemoveScheme(strReplacement);
 
 				return SprEngine.FillPlaceholder(strData, strPlaceholder,
 					strReplacement, ctx);
@@ -352,6 +383,49 @@ namespace KeePass.Util.Spr
 			return str;
 		}
 
+		private const string UrlSpecialRmvScm = @"{URL:RMVSCM}";
+		private const string UrlSpecialScm = @"{URL:SCM}";
+		private const string UrlSpecialHost = @"{URL:HOST}";
+		private const string UrlSpecialPort = @"{URL:PORT}";
+		private const string UrlSpecialPath = @"{URL:PATH}";
+		private const string UrlSpecialQuery = @"{URL:QUERY}";
+		private static string FillEntryStringsSpecial(string str, SprContext ctx,
+			uint uRecursionLevel)
+		{
+			if((str.IndexOf(UrlSpecialRmvScm, SprEngine.ScMethod) >= 0) ||
+				(str.IndexOf(UrlSpecialScm, SprEngine.ScMethod) >= 0) ||
+				(str.IndexOf(UrlSpecialHost, SprEngine.ScMethod) >= 0) ||
+				(str.IndexOf(UrlSpecialPort, SprEngine.ScMethod) >= 0) ||
+				(str.IndexOf(UrlSpecialPath, SprEngine.ScMethod) >= 0) ||
+				(str.IndexOf(UrlSpecialQuery, SprEngine.ScMethod) >= 0))
+			{
+				string strUrl = SprEngine.FillIfExists(@"{URL}", @"{URL}",
+					ctx.Entry.Strings.GetSafe(PwDefs.UrlField), ctx, uRecursionLevel);
+
+				str = StrUtil.ReplaceCaseInsensitive(str, UrlSpecialRmvScm,
+					UrlUtil.RemoveScheme(strUrl));
+
+				try
+				{
+					Uri uri = new Uri(strUrl);
+
+					str = StrUtil.ReplaceCaseInsensitive(str, UrlSpecialScm,
+						uri.Scheme);
+					str = StrUtil.ReplaceCaseInsensitive(str, UrlSpecialHost,
+						uri.Host);
+					str = StrUtil.ReplaceCaseInsensitive(str, UrlSpecialPort,
+						uri.Port.ToString());
+					str = StrUtil.ReplaceCaseInsensitive(str, UrlSpecialPath,
+						uri.AbsolutePath);
+					str = StrUtil.ReplaceCaseInsensitive(str, UrlSpecialQuery,
+						uri.Query);
+				}
+				catch(Exception) { } // Invalid URI
+			}
+
+			return str;
+		}
+
 		private const string StrRemStart = @"{C:";
 		private const string StrRemEnd = @"}";
 		private static string RemoveComments(string strSeq)
diff --git a/KeePass/Util/UpdateCheckEx.cs b/KeePass/Util/UpdateCheckEx.cs
index 59a23cc..6233cff 100644
--- a/KeePass/Util/UpdateCheckEx.cs
+++ b/KeePass/Util/UpdateCheckEx.cs
@@ -475,8 +475,7 @@ namespace KeePass.Util
 				string strSub = KPRes.UpdateCheckInfoRes + MessageService.NewParagraph +
 					KPRes.UpdateCheckInfoPriv;
 
-				VistaTaskDialog dlg = new VistaTaskDialog((fParent != null) ?
-					fParent.Handle : IntPtr.Zero);
+				VistaTaskDialog dlg = new VistaTaskDialog();
 				dlg.CommandLinks = true;
 				dlg.Content = strHdr;
 				dlg.MainInstruction = KPRes.UpdateCheckEnableQ;
@@ -489,7 +488,7 @@ namespace KeePass.Util
 				dlg.SetFooterIcon(VtdIcon.Information);
 
 				int iResult;
-				if(dlg.ShowDialog()) iResult = dlg.Result;
+				if(dlg.ShowDialog(fParent)) iResult = dlg.Result;
 				else
 				{
 					string strMain = strHdr + MessageService.NewParagraph + strSub;
diff --git a/KeePass/Util/WinUtil.cs b/KeePass/Util/WinUtil.cs
index 8772aab..d068296 100644
--- a/KeePass/Util/WinUtil.cs
+++ b/KeePass/Util/WinUtil.cs
@@ -128,12 +128,11 @@ namespace KeePass.Util
 			// If URL is null, return, do not throw exception.
 			Debug.Assert(strUrlToOpen != null); if(strUrlToOpen == null) return;
 
-			string strPrevWorkDir = Directory.GetCurrentDirectory();
+			string strPrevWorkDir = WinUtil.GetWorkingDirectory();
 			string strThisExe = WinUtil.GetExecutable();
 			
 			string strExeDir = UrlUtil.GetFileDirectory(strThisExe, false, true);
-			try { Directory.SetCurrentDirectory(strExeDir); }
-			catch(Exception) { Debug.Assert(false); }
+			WinUtil.SetWorkingDirectory(strExeDir);
 
 			string strUrlFlt = strUrlToOpen;
 			strUrlFlt = strUrlFlt.TrimStart(new char[]{ ' ', '\t', '\r', '\n' });
@@ -194,8 +193,7 @@ namespace KeePass.Util
 			}
 
 			// Restore previous working directory
-			try { Directory.SetCurrentDirectory(strPrevWorkDir); }
-			catch(Exception) { Debug.Assert(false); }
+			WinUtil.SetWorkingDirectory(strPrevWorkDir);
 
 			// SprEngine.Compile might have modified the database
 			Program.MainForm.UpdateUI(false, null, false, null, false, null, false);
@@ -345,7 +343,7 @@ namespace KeePass.Util
 				}
 				else bResult = false;
 
-				if(strDir.Length > 0) Directory.SetCurrentDirectory(strDir);
+				if(strDir.Length > 0) WinUtil.SetWorkingDirectory(strDir);
 
 				if(!NativeMethods.CloseHandle(hDevice)) { Debug.Assert(false); }
 			}
@@ -372,7 +370,7 @@ namespace KeePass.Util
 		{
 			try
 			{
-				string strCur = Directory.GetCurrentDirectory();
+				string strCur = WinUtil.GetWorkingDirectory();
 				if((strCur == null) || (strCur.Length < 3)) return string.Empty;
 				if(strCur[1] != ':') return string.Empty;
 				if(strCur[2] != '\\') return string.Empty;
@@ -382,7 +380,7 @@ namespace KeePass.Util
 				if(chPar != chCur) return string.Empty;
 
 				string strTemp = Path.GetTempPath();
-				Directory.SetCurrentDirectory(strTemp);
+				WinUtil.SetWorkingDirectory(strTemp);
 
 				return strCur;
 			}
@@ -580,5 +578,54 @@ namespace KeePass.Util
 
 			return strExeName;
 		}
+
+		public static string GetHomeDirectory()
+		{
+			string str = null;
+			try
+			{
+				str = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
+			}
+			catch(Exception) { Debug.Assert(false); }
+
+			if(string.IsNullOrEmpty(str))
+			{
+				try
+				{
+					str = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
+				}
+				catch(Exception) { Debug.Assert(false); }
+			}
+
+			if(string.IsNullOrEmpty(str)) { Debug.Assert(false); return string.Empty; }
+
+			return str;
+		}
+
+		public static string GetWorkingDirectory()
+		{
+			string strWorkDir = null;
+			try { strWorkDir = Directory.GetCurrentDirectory(); }
+			catch(Exception) { Debug.Assert(false); }
+
+			return (!string.IsNullOrEmpty(strWorkDir) ? strWorkDir : GetHomeDirectory());
+		}
+
+		public static void SetWorkingDirectory(string strWorkDir)
+		{
+			string str = strWorkDir; // May be null
+
+			if(!string.IsNullOrEmpty(str))
+			{
+				try { if(!Directory.Exists(str)) str = null; }
+				catch(Exception) { Debug.Assert(false); str = null; }
+			}
+
+			if(string.IsNullOrEmpty(str))
+				str = GetHomeDirectory(); // Not app dir
+
+			try { Directory.SetCurrentDirectory(str); }
+			catch(Exception) { Debug.Assert(false); }
+		}
 	}
 }
diff --git a/KeePass/Util/XmlSerialization/XmlSerializerEx.Gen.cs b/KeePass/Util/XmlSerialization/XmlSerializerEx.Gen.cs
index 765e894..7b57215 100644
--- a/KeePass/Util/XmlSerialization/XmlSerializerEx.Gen.cs
+++ b/KeePass/Util/XmlSerialization/XmlSerializerEx.Gen.cs
@@ -196,6 +196,12 @@ namespace KeePass.Util.XmlSerialization
 					case "MostRecentlyUsed":
 						o.MostRecentlyUsed = ReadAceMru(xr);
 						break;
+					case "RememberWorkingDirectories":
+						o.RememberWorkingDirectories = ReadBoolean(xr);
+						break;
+					case "WorkingDirectories":
+						o.WorkingDirectoriesSerialized = ReadArrayOfString(xr);
+						break;
 					case "Start":
 						o.Start = ReadAceStartUp(xr);
 						break;
@@ -776,6 +782,9 @@ namespace KeePass.Util.XmlSerialization
 					case "AutoTypeCancelOnWindowChange":
 						o.AutoTypeCancelOnWindowChange = ReadBoolean(xr);
 						break;
+					case "AutoTypeCancelOnTitleChange":
+						o.AutoTypeCancelOnTitleChange = ReadBoolean(xr);
+						break;
 					case "ProxyType":
 						o.ProxyType = ReadProxyServerType(xr);
 						break;
@@ -1047,6 +1056,33 @@ namespace KeePass.Util.XmlSerialization
 			return o;
 		}
 
+		private static System.String[] ReadArrayOfString(XmlReader xr)
+		{
+			List<System.String> l = new List<System.String>();
+
+			if(SkipEmptyElement(xr)) return l.ToArray();
+
+			Debug.Assert(xr.NodeType == XmlNodeType.Element);
+			xr.ReadStartElement();
+			xr.MoveToContent();
+
+			while(true)
+			{
+				XmlNodeType nt = xr.NodeType;
+				if((nt == XmlNodeType.EndElement) || (nt == XmlNodeType.None)) break;
+				if(nt != XmlNodeType.Element) { Debug.Assert(false); continue; }
+
+				System.String oElem = ReadString(xr);
+				l.Add(oElem);
+
+				xr.MoveToContent();
+			}
+
+			Debug.Assert(xr.NodeType == XmlNodeType.EndElement);
+			xr.ReadEndElement();
+			return l.ToArray();
+		}
+
 		private static KeePass.App.Configuration.AceStartUp ReadAceStartUp(XmlReader xr)
 		{
 			KeePass.App.Configuration.AceStartUp o = new KeePass.App.Configuration.AceStartUp();
diff --git a/KeePass/Util/XmlSerialization/XmlSerializerEx.cs b/KeePass/Util/XmlSerialization/XmlSerializerEx.cs
index 71835be..fb748b2 100644
--- a/KeePass/Util/XmlSerialization/XmlSerializerEx.cs
+++ b/KeePass/Util/XmlSerialization/XmlSerializerEx.cs
@@ -59,7 +59,7 @@ namespace KeePass.Util.XmlSerialization
 			object oResult = null;
 			if((m_t == typeof(AppConfigEx)) || (m_t == typeof(KPTranslation)))
 			{
-				XmlReaderSettings xrs = Kdb4File.CreateStdXmlReaderSettings();
+				XmlReaderSettings xrs = KdbxFile.CreateStdXmlReaderSettings();
 				XmlReader xr = XmlReader.Create(s, xrs);
 
 				string strRootName = GetXmlName(m_t);
diff --git a/KeePassLib/Cryptography/HashingStreamEx.cs b/KeePassLib/Cryptography/HashingStreamEx.cs
index aa2e4db..4834f91 100644
--- a/KeePassLib/Cryptography/HashingStreamEx.cs
+++ b/KeePassLib/Cryptography/HashingStreamEx.cs
@@ -135,8 +135,6 @@ namespace KeePassLib.Cryptography
 			if(m_bWriting) throw new InvalidOperationException();
 
 			int nRead = m_sBaseStream.Read(pbBuffer, nOffset, nCount);
-
-			// Mono bug workaround (LaunchPad 798910)
 			int nPartialRead = nRead;
 			while((nRead < nCount) && (nPartialRead != 0))
 			{
diff --git a/KeePassLib/KeePassLib.csproj b/KeePassLib/KeePassLib.csproj
index 63b65a8..a692379 100644
--- a/KeePassLib/KeePassLib.csproj
+++ b/KeePassLib/KeePassLib.csproj
@@ -107,10 +107,10 @@
     <Compile Include="Serialization\IOConnection.cs">
       <SubType>Component</SubType>
     </Compile>
-    <Compile Include="Serialization\Kdb4File.cs" />
-    <Compile Include="Serialization\Kdb4File.Read.cs" />
-    <Compile Include="Serialization\Kdb4File.Read.Streamed.cs" />
-    <Compile Include="Serialization\Kdb4File.Write.cs" />
+    <Compile Include="Serialization\KdbxFile.cs" />
+    <Compile Include="Serialization\KdbxFile.Read.cs" />
+    <Compile Include="Serialization\KdbxFile.Read.Streamed.cs" />
+    <Compile Include="Serialization\KdbxFile.Write.cs" />
     <Compile Include="Serialization\IOConnectionInfo.cs" />
     <Compile Include="Serialization\OldFormatException.cs" />
     <Compile Include="Translation\KPControlCustomization.cs" />
@@ -120,6 +120,7 @@
     <Compile Include="Translation\KPTranslation.cs" />
     <Compile Include="Translation\KPTranslationProperties.cs" />
     <Compile Include="Utility\AppLogEx.cs" />
+    <Compile Include="Utility\GfxUtil.cs" />
     <Compile Include="Utility\MemUtil.cs" />
     <Compile Include="Utility\MessageService.cs" />
     <Compile Include="Native\NativeLib.cs" />
diff --git a/KeePassLib/Properties/AssemblyInfo.cs b/KeePassLib/Properties/AssemblyInfo.cs
index 8b13823..2fe2c41 100644
--- a/KeePassLib/Properties/AssemblyInfo.cs
+++ b/KeePassLib/Properties/AssemblyInfo.cs
@@ -38,5 +38,5 @@ using System.Runtime.InteropServices;
 [assembly: Guid("395f6eec-a1e0-4438-aa82-b75099348134")]
 
 // Assembly version information
-[assembly: AssemblyVersion("2.19.0.*")]
-[assembly: AssemblyFileVersion("2.19.0.0")]
+[assembly: AssemblyVersion("2.20.0.*")]
+[assembly: AssemblyFileVersion("2.20.0.0")]
diff --git a/KeePassLib/PwCustomIcon.cs b/KeePassLib/PwCustomIcon.cs
index 72470dc..bbc78dd 100644
--- a/KeePassLib/PwCustomIcon.cs
+++ b/KeePassLib/PwCustomIcon.cs
@@ -22,6 +22,8 @@ using System.Diagnostics;
 using System.Drawing;
 using System.IO;
 
+using KeePassLib.Utility;
+
 namespace KeePassLib
 {
 	/// <summary>
@@ -62,9 +64,10 @@ namespace KeePassLib
 			m_pbImageDataPng = pbImageDataPng;
 
 #if !KeePassLibSD
-			MemoryStream ms = new MemoryStream(m_pbImageDataPng, false);
-			m_pCachedImage = Image.FromStream(ms);
-			ms.Close();
+			// MemoryStream ms = new MemoryStream(m_pbImageDataPng, false);
+			// m_pCachedImage = Image.FromStream(ms);
+			// ms.Close();
+			m_pCachedImage = GfxUtil.LoadImage(m_pbImageDataPng);
 #else
 			m_pCachedImage = null;
 #endif
diff --git a/KeePassLib/PwDatabase.cs b/KeePassLib/PwDatabase.cs
index df2d771..2f0278d 100644
--- a/KeePassLib/PwDatabase.cs
+++ b/KeePassLib/PwDatabase.cs
@@ -582,15 +582,15 @@ namespace KeePassLib
 
 				m_bModified = false;
 
-				Kdb4File kdb4 = new Kdb4File(this);
-				kdb4.DetachBinaries = m_strDetachBins;
+				KdbxFile kdbx = new KdbxFile(this);
+				kdbx.DetachBinaries = m_strDetachBins;
 
 				Stream s = IOConnection.OpenRead(ioSource);
-				kdb4.Load(s, Kdb4Format.Default, slLogger);
+				kdbx.Load(s, KdbxFormat.Default, slLogger);
 				s.Close();
 
-				m_pbHashOfLastIO = kdb4.HashOfFileOnDisk;
-				m_pbHashOfFileOnDisk = kdb4.HashOfFileOnDisk;
+				m_pbHashOfLastIO = kdbx.HashOfFileOnDisk;
+				m_pbHashOfFileOnDisk = kdbx.HashOfFileOnDisk;
 				Debug.Assert(m_pbHashOfFileOnDisk != null);
 
 				m_bDatabaseOpened = true;
@@ -620,8 +620,8 @@ namespace KeePassLib
 					m_bUseFileTransactions);
 				Stream s = ft.OpenWrite();
 
-				Kdb4File kdb = new Kdb4File(this);
-				kdb.Save(s, null, Kdb4Format.Default, slLogger);
+				KdbxFile kdb = new KdbxFile(this);
+				kdb.Save(s, null, KdbxFormat.Default, slLogger);
 
 				ft.CommitWrite();
 
diff --git a/KeePassLib/PwDefs.cs b/KeePassLib/PwDefs.cs
index 5d2418b..d165d4b 100644
--- a/KeePassLib/PwDefs.cs
+++ b/KeePassLib/PwDefs.cs
@@ -44,6 +44,9 @@ namespace KeePassLib
 		/// </summary>
 		public const string ShortProductName = "KeePass";
 
+		internal const string UnixName = "keepass2";
+		internal const string ResClass = "KeePass2"; // With initial capital
+
 		/// <summary>
 		/// Version, encoded as 32-bit unsigned integer.
 		/// 2.00 = 0x02000000, 2.01 = 0x02000100, ..., 2.18 = 0x02010800.
@@ -51,18 +54,18 @@ namespace KeePassLib
 		/// e.g. 2.19 = 0x02130000.
 		/// It is highly recommended to use <c>FileVersion64</c> instead.
 		/// </summary>
-		public const uint Version32 = 0x02130000;
+		public const uint Version32 = 0x02140000;
 
 		/// <summary>
 		/// Version, encoded as 64-bit unsigned integer
 		/// (component-wise, 16 bits per component).
 		/// </summary>
-		public const ulong FileVersion64 = 0x0002001300000000UL;
+		public const ulong FileVersion64 = 0x0002001400000000UL;
 
 		/// <summary>
 		/// Version, encoded as string.
 		/// </summary>
-		public const string VersionString = "2.19";
+		public const string VersionString = "2.20";
 
 		public const string Copyright = @"Copyright © 2003-2012 Dominik Reichl";
 
diff --git a/KeePassLib/Resources/KLRes.Generated.cs b/KeePassLib/Resources/KLRes.Generated.cs
index bfa2048..d56bbc7 100644
--- a/KeePassLib/Resources/KLRes.Generated.cs
+++ b/KeePassLib/Resources/KLRes.Generated.cs
@@ -201,10 +201,10 @@ namespace KeePassLib.Resources
 		}
 
 		private static string m_strFileSaveCorruptionWarning =
-			@"The target file might be in a corrupted state. Please try saving again, and if that fails, save the database to a different location.";
+			@"The target file might be corrupted. Please try saving again. If that fails, save the database to a different location.";
 		/// <summary>
 		/// Look up a localized string similar to
-		/// 'The target file might be in a corrupted state. Please try saving again, and if that fails, save the database to a different location.'.
+		/// 'The target file might be corrupted. Please try saving again. If that fails, save the database to a different location.'.
 		/// </summary>
 		public static string FileSaveCorruptionWarning
 		{
diff --git a/KeePassLib/Serialization/BinaryReaderEx.cs b/KeePassLib/Serialization/BinaryReaderEx.cs
index 6f04850..3ed7314 100644
--- a/KeePassLib/Serialization/BinaryReaderEx.cs
+++ b/KeePassLib/Serialization/BinaryReaderEx.cs
@@ -22,35 +22,56 @@ using System.Collections.Generic;
 using System.Text;
 using System.IO;
 
+using KeePassLib.Utility;
+
 namespace KeePassLib.Serialization
 {
-	public sealed class BinaryReaderEx : BinaryReader
+	public sealed class BinaryReaderEx
 	{
-		private string m_strReadExcp = null;
+		private Stream m_s;
+		private Encoding m_enc;
+
+		private string m_strReadExcp;
 		public string ReadExceptionText
 		{
 			get { return m_strReadExcp; }
 			set { m_strReadExcp = value; }
 		}
 
+		private Stream m_sCopyTo = null;
+		/// <summary>
+		/// If this property is set to a non-null stream, all data that
+		/// is read from the input stream is automatically written to
+		/// the copy stream (before returning the read data).
+		/// </summary>
+		public Stream CopyDataTo
+		{
+			get { return m_sCopyTo; }
+			set { m_sCopyTo = value; }
+		}
+
 		public BinaryReaderEx(Stream input, Encoding encoding,
-			string strReadExceptionText) :
-			base(input, encoding)
+			string strReadExceptionText)
 		{
+			if(input == null) throw new ArgumentNullException("input");
+
+			m_s = input;
+			m_enc = encoding;
 			m_strReadExcp = strReadExceptionText;
 		}
 
-		public override byte[] ReadBytes(int count)
+		public byte[] ReadBytes(int nCount)
 		{
 			try
 			{
-				byte[] pb = base.ReadBytes(count);
-				if((pb == null) || (pb.Length != count))
+				byte[] pb = MemUtil.Read(m_s, nCount);
+				if((pb == null) || (pb.Length != nCount))
 				{
 					if(m_strReadExcp != null) throw new IOException(m_strReadExcp);
 					else throw new EndOfStreamException();
 				}
 
+				if(m_sCopyTo != null) m_sCopyTo.Write(pb, 0, pb.Length);
 				return pb;
 			}
 			catch(Exception)
@@ -59,5 +80,11 @@ namespace KeePassLib.Serialization
 				else throw;
 			}
 		}
+
+		public byte ReadByte()
+		{
+			byte[] pb = ReadBytes(1);
+			return pb[0];
+		}
 	}
 }
diff --git a/KeePassLib/Serialization/IOConnection.cs b/KeePassLib/Serialization/IOConnection.cs
index 274a473..153f77c 100644
--- a/KeePassLib/Serialization/IOConnection.cs
+++ b/KeePassLib/Serialization/IOConnection.cs
@@ -284,14 +284,25 @@ namespace KeePassLib.Serialization
 
 			if(ioc.IsLocalFile()) return File.Exists(ioc.Path);
 
+#if !KeePassLibSD
+			if(ioc.Path.StartsWith("ftp://", StrUtil.CaseIgnoreCmp))
+			{
+				bool b = SendCommand(ioc, WebRequestMethods.Ftp.GetDateTimestamp);
+				if(!b && bThrowErrors) throw new InvalidOperationException();
+				return b;
+			}
+#endif
+
 			try
 			{
 				Stream s = OpenRead(ioc);
 				if(s == null) throw new FileNotFoundException();
 
-				// For FTP clients we called RETR to get the file, but we never
-				// followed-up and downloaded the file; close may produce a
-				// 550 error -- that's okay
+				try { s.ReadByte(); }
+				catch(Exception) { }
+
+				// We didn't download the file completely; close may throw
+				// an exception -- that's okay
 				try { s.Close(); }
 				catch(Exception) { }
 			}
@@ -382,6 +393,21 @@ namespace KeePassLib.Serialization
 			// DeleteFile(iocFrom);
 		}
 
+#if !KeePassLibSD
+		private static bool SendCommand(IOConnectionInfo ioc, string strMethod)
+		{
+			try
+			{
+				WebRequest req = CreateWebRequest(ioc);
+				req.Method = strMethod;
+				DisposeResponse(req.GetResponse(), true);
+			}
+			catch(Exception) { return false; }
+
+			return true;
+		}
+#endif
+
 		private static void DisposeResponse(WebResponse wr, bool bGetStream)
 		{
 			if(wr == null) return;
diff --git a/KeePassLib/Serialization/IOConnectionInfo.cs b/KeePassLib/Serialization/IOConnectionInfo.cs
index 3eafc2a..a6bfe7d 100644
--- a/KeePassLib/Serialization/IOConnectionInfo.cs
+++ b/KeePassLib/Serialization/IOConnectionInfo.cs
@@ -276,7 +276,7 @@ namespace KeePassLib.Serialization
 			string str = m_strUrl;
 
 			if(m_strUser.Length > 0)
-				str += @": " + m_strUser;
+				str += " (" + m_strUser + ")";
 
 			return str;
 		}
@@ -305,6 +305,7 @@ namespace KeePassLib.Serialization
 
 		public bool IsLocalFile()
 		{
+			// Not just ":/", see e.g. AppConfigEx.ChangePathRelAbs
 			return (m_strUrl.IndexOf(@"://") < 0);
 		}
 
diff --git a/KeePassLib/Serialization/Kdb4File.Read.Streamed.cs b/KeePassLib/Serialization/KdbxFile.Read.Streamed.cs
similarity index 94%
rename from KeePassLib/Serialization/Kdb4File.Read.Streamed.cs
rename to KeePassLib/Serialization/KdbxFile.Read.Streamed.cs
index 2488e49..53591cd 100644
--- a/KeePassLib/Serialization/Kdb4File.Read.Streamed.cs
+++ b/KeePassLib/Serialization/KdbxFile.Read.Streamed.cs
@@ -32,12 +32,16 @@ using KeePassLib.Collections;
 using KeePassLib.Cryptography;
 using KeePassLib.Cryptography.Cipher;
 using KeePassLib.Interfaces;
+using KeePassLib.Resources;
 using KeePassLib.Security;
 using KeePassLib.Utility;
 
 namespace KeePassLib.Serialization
 {
-	public sealed partial class Kdb4File
+	/// <summary>
+	/// Serialization to KeePass KDBX files.
+	/// </summary>
+	public sealed partial class KdbxFile
 	{
 		private enum KdbContext
 		{
@@ -206,6 +210,17 @@ namespace KeePassLib.Serialization
 				case KdbContext.Meta:
 					if(xr.Name == ElemGenerator)
 						ReadString(xr); // Ignore
+					else if(xr.Name == ElemHeaderHash)
+					{
+						string strHash = ReadString(xr);
+						if(!string.IsNullOrEmpty(strHash) && (m_pbHashOfHeader != null) &&
+							!m_bRepairMode)
+						{
+							byte[] pbHash = Convert.FromBase64String(strHash);
+							if(!MemUtil.ArraysEqual(pbHash, m_pbHashOfHeader))
+								throw new IOException(KLRes.FileCorrupted);
+						}
+					}
 					else if(xr.Name == ElemDbName)
 						m_pwDatabase.Name = ReadString(xr);
 					else if(xr.Name == ElemDbNameChanged)
@@ -757,7 +772,7 @@ namespace KeePassLib.Serialization
 			if(xb != null) return new ProtectedString(true, xb);
 
 			bool bProtect = false;
-			if(m_format == Kdb4Format.PlainXml)
+			if(m_format == KdbxFormat.PlainXml)
 			{
 				if(xr.MoveToAttribute(AttrProtectedInMemPlainXml))
 				{
diff --git a/KeePassLib/Serialization/Kdb4File.Read.cs b/KeePassLib/Serialization/KdbxFile.Read.cs
similarity index 85%
rename from KeePassLib/Serialization/Kdb4File.Read.cs
rename to KeePassLib/Serialization/KdbxFile.Read.cs
index 96ba492..8fd7c37 100644
--- a/KeePassLib/Serialization/Kdb4File.Read.cs
+++ b/KeePassLib/Serialization/KdbxFile.Read.cs
@@ -44,7 +44,7 @@ namespace KeePassLib.Serialization
 	/// <summary>
 	/// Serialization to KeePass KDBX files.
 	/// </summary>
-	public sealed partial class Kdb4File
+	public sealed partial class KdbxFile
 	{
 		/// <summary>
 		/// Load a KDB file from a file.
@@ -52,7 +52,7 @@ namespace KeePassLib.Serialization
 		/// <param name="strFilePath">File to load.</param>
 		/// <param name="kdbFormat">Format specifier.</param>
 		/// <param name="slLogger">Status logger (optional).</param>
-		public void Load(string strFilePath, Kdb4Format kdbFormat, IStatusLogger slLogger)
+		public void Load(string strFilePath, KdbxFormat kdbFormat, IStatusLogger slLogger)
 		{
 			IOConnectionInfo ioc = IOConnectionInfo.FromPath(strFilePath);
 			Load(IOConnection.OpenRead(ioc), kdbFormat, slLogger);
@@ -62,10 +62,10 @@ namespace KeePassLib.Serialization
 		/// Load a KDB file from a stream.
 		/// </summary>
 		/// <param name="sSource">Stream to read the data from. Must contain
-		/// a KDB4 stream.</param>
+		/// a KDBX stream.</param>
 		/// <param name="kdbFormat">Format specifier.</param>
 		/// <param name="slLogger">Status logger (optional).</param>
-		public void Load(Stream sSource, Kdb4Format kdbFormat, IStatusLogger slLogger)
+		public void Load(Stream sSource, KdbxFormat kdbFormat, IStatusLogger slLogger)
 		{
 			Debug.Assert(sSource != null);
 			if(sSource == null) throw new ArgumentNullException("sSource");
@@ -82,7 +82,7 @@ namespace KeePassLib.Serialization
 				BinaryReaderEx brDecrypted = null;
 				Stream readerStream = null;
 
-				if(kdbFormat == Kdb4Format.Default)
+				if(kdbFormat == KdbxFormat.Default)
 				{
 					br = new BinaryReaderEx(hashedStream, encNoBom, KLRes.FileCorrupted);
 					ReadHeader(br);
@@ -110,11 +110,11 @@ namespace KeePassLib.Serialization
 						readerStream = new GZipStream(sHashed, CompressionMode.Decompress);
 					else readerStream = sHashed;
 				}
-				else if(kdbFormat == Kdb4Format.PlainXml)
+				else if(kdbFormat == KdbxFormat.PlainXml)
 					readerStream = hashedStream;
 				else { Debug.Assert(false); throw new FormatException("KdbFormat"); }
 
-				if(kdbFormat != Kdb4Format.PlainXml) // Is an encrypted format
+				if(kdbFormat != KdbxFormat.PlainXml) // Is an encrypted format
 				{
 					if(m_pbProtectedStreamKey == null)
 					{
@@ -131,8 +131,8 @@ namespace KeePassLib.Serialization
 				// ReadXmlDom(readerStream);
 
 				readerStream.Close();
-				GC.KeepAlive(brDecrypted);
-				GC.KeepAlive(br);
+				// GC.KeepAlive(br);
+				// GC.KeepAlive(brDecrypted);
 			}
 			catch(CryptographicException) // Thrown on invalid padding
 			{
@@ -158,12 +158,15 @@ namespace KeePassLib.Serialization
 			// case a different application has created the KDBX file and ignored
 			// the history maintenance settings)
 			m_pwDatabase.MaintainBackups(); // Don't mark database as modified
+
+			m_pbHashOfHeader = null;
 		}
 
 		private void ReadHeader(BinaryReaderEx br)
 		{
-			Debug.Assert(br != null);
-			if(br == null) throw new ArgumentNullException("br");
+			MemoryStream msHeader = new MemoryStream();
+			Debug.Assert(br.CopyDataTo == null);
+			br.CopyDataTo = msHeader;
 
 			byte[] pbSig1 = br.ReadBytes(4);
 			uint uSig1 = MemUtil.BytesToUInt32(pbSig1);
@@ -190,6 +193,12 @@ namespace KeePassLib.Serialization
 				if(ReadHeaderField(br) == false)
 					break;
 			}
+
+			br.CopyDataTo = null;
+			byte[] pbHeader = msHeader.ToArray();
+			msHeader.Close();
+			SHA256Managed sha256 = new SHA256Managed();
+			m_pbHashOfHeader = sha256.ComputeHash(pbHeader);
 		}
 
 		private bool ReadHeaderField(BinaryReaderEx brSource)
@@ -212,49 +221,49 @@ namespace KeePassLib.Serialization
 			}
 
 			bool bResult = true;
-			Kdb4HeaderFieldID kdbID = (Kdb4HeaderFieldID)btFieldID;
+			KdbxHeaderFieldID kdbID = (KdbxHeaderFieldID)btFieldID;
 			switch(kdbID)
 			{
-				case Kdb4HeaderFieldID.EndOfHeader:
+				case KdbxHeaderFieldID.EndOfHeader:
 					bResult = false; // Returning false indicates end of header
 					break;
 
-				case Kdb4HeaderFieldID.CipherID:
+				case KdbxHeaderFieldID.CipherID:
 					SetCipher(pbData);
 					break;
 
-				case Kdb4HeaderFieldID.CompressionFlags:
+				case KdbxHeaderFieldID.CompressionFlags:
 					SetCompressionFlags(pbData);
 					break;
 
-				case Kdb4HeaderFieldID.MasterSeed:
+				case KdbxHeaderFieldID.MasterSeed:
 					m_pbMasterSeed = pbData;
 					CryptoRandom.Instance.AddEntropy(pbData);
 					break;
 
-				case Kdb4HeaderFieldID.TransformSeed:
+				case KdbxHeaderFieldID.TransformSeed:
 					m_pbTransformSeed = pbData;
 					CryptoRandom.Instance.AddEntropy(pbData);
 					break;
 
-				case Kdb4HeaderFieldID.TransformRounds:
+				case KdbxHeaderFieldID.TransformRounds:
 					m_pwDatabase.KeyEncryptionRounds = MemUtil.BytesToUInt64(pbData);
 					break;
 
-				case Kdb4HeaderFieldID.EncryptionIV:
+				case KdbxHeaderFieldID.EncryptionIV:
 					m_pbEncryptionIV = pbData;
 					break;
 
-				case Kdb4HeaderFieldID.ProtectedStreamKey:
+				case KdbxHeaderFieldID.ProtectedStreamKey:
 					m_pbProtectedStreamKey = pbData;
 					CryptoRandom.Instance.AddEntropy(pbData);
 					break;
 
-				case Kdb4HeaderFieldID.StreamStartBytes:
+				case KdbxHeaderFieldID.StreamStartBytes:
 					m_pbStreamStartBytes = pbData;
 					break;
 
-				case Kdb4HeaderFieldID.InnerRandomStreamID:
+				case KdbxHeaderFieldID.InnerRandomStreamID:
 					SetInnerRandomStreamID(pbData);
 					break;
 
@@ -337,8 +346,8 @@ namespace KeePassLib.Serialization
 		/// <returns>Extracted entries.</returns>
 		public static List<PwEntry> ReadEntries(Stream msData)
 		{
-			/* Kdb4File f = new Kdb4File(pwDatabase);
-			f.m_format = Kdb4Format.PlainXml;
+			/* KdbxFile f = new KdbxFile(pwDatabase);
+			f.m_format = KdbxFormat.PlainXml;
 
 			XmlDocument doc = new XmlDocument();
 			doc.Load(msData);
@@ -366,8 +375,8 @@ namespace KeePassLib.Serialization
 			return vEntries; */
 
 			PwDatabase pd = new PwDatabase();
-			Kdb4File f = new Kdb4File(pd);
-			f.Load(msData, Kdb4Format.PlainXml, null);
+			KdbxFile f = new KdbxFile(pd);
+			f.Load(msData, KdbxFormat.PlainXml, null);
 
 			List<PwEntry> vEntries = new List<PwEntry>();
 			foreach(PwEntry pe in pd.RootGroup.Entries)
diff --git a/KeePassLib/Serialization/Kdb4File.Write.cs b/KeePassLib/Serialization/KdbxFile.Write.cs
similarity index 88%
rename from KeePassLib/Serialization/Kdb4File.Write.cs
rename to KeePassLib/Serialization/KdbxFile.Write.cs
index b16af6f..ff46180 100644
--- a/KeePassLib/Serialization/Kdb4File.Write.cs
+++ b/KeePassLib/Serialization/KdbxFile.Write.cs
@@ -48,11 +48,11 @@ using KeePassLib.Utility;
 namespace KeePassLib.Serialization
 {
 	/// <summary>
-	/// Serialization to KeePass KDB files.
+	/// Serialization to KeePass KDBX files.
 	/// </summary>
-	public sealed partial class Kdb4File
+	public sealed partial class KdbxFile
 	{
-		// public void Save(string strFile, PwGroup pgDataSource, Kdb4Format format,
+		// public void Save(string strFile, PwGroup pgDataSource, KdbxFormat format,
 		//	IStatusLogger slLogger)
 		// {
 		//	bool bMadeUnhidden = UrlUtil.UnhideFile(strFile);
@@ -72,7 +72,7 @@ namespace KeePassLib.Serialization
 		/// be written.</param>
 		/// <param name="format">Format of the file to create.</param>
 		/// <param name="slLogger">Logger that recieves status information.</param>
-		public void Save(Stream sSaveTo, PwGroup pgDataSource, Kdb4Format format,
+		public void Save(Stream sSaveTo, PwGroup pgDataSource, KdbxFormat format,
 			IStatusLogger slLogger)
 		{
 			Debug.Assert(sSaveTo != null);
@@ -100,11 +100,9 @@ namespace KeePassLib.Serialization
 				m_pbStreamStartBytes = cr.GetRandomBytes(32);
 
 				Stream writerStream;
-				BinaryWriter bw = null;
-				if(m_format == Kdb4Format.Default)
+				if(m_format == KdbxFormat.Default)
 				{
-					bw = new BinaryWriter(hashedStream, encNoBom);
-					WriteHeader(bw); // Also flushes bw
+					WriteHeader(hashedStream); // Also flushes the stream
 
 					Stream sEncrypted = AttachStreamEncryptor(hashedStream);
 					if((sEncrypted == null) || (sEncrypted == hashedStream))
@@ -119,7 +117,7 @@ namespace KeePassLib.Serialization
 					else
 						writerStream = sHashed;
 				}
-				else if(m_format == Kdb4Format.PlainXml)
+				else if(m_format == KdbxFormat.PlainXml)
 					writerStream = hashedStream;
 				else { Debug.Assert(false); throw new FormatException("KdbFormat"); }
 
@@ -129,8 +127,6 @@ namespace KeePassLib.Serialization
 				m_xmlWriter.Flush();
 				m_xmlWriter.Close();
 				writerStream.Close();
-
-				GC.KeepAlive(bw);
 			}
 			finally { CommonCleanUpWrite(sSaveTo, hashedStream); }
 		}
@@ -143,55 +139,62 @@ namespace KeePassLib.Serialization
 			sSaveTo.Close();
 
 			m_xmlWriter = null;
+			m_pbHashOfHeader = null;
 		}
 
-		private void WriteHeader(BinaryWriter bw)
+		private void WriteHeader(Stream s)
 		{
-			Debug.Assert(bw != null);
-			if(bw == null) throw new ArgumentNullException("bw");
+			MemoryStream ms = new MemoryStream();
 
-			bw.Write(MemUtil.UInt32ToBytes(FileSignature1));
-			bw.Write(MemUtil.UInt32ToBytes(FileSignature2));
-			bw.Write(MemUtil.UInt32ToBytes(FileVersion32));
+			MemUtil.Write(ms, MemUtil.UInt32ToBytes(FileSignature1));
+			MemUtil.Write(ms, MemUtil.UInt32ToBytes(FileSignature2));
+			MemUtil.Write(ms, MemUtil.UInt32ToBytes(FileVersion32));
 
-			WriteHeaderField(bw, Kdb4HeaderFieldID.CipherID,
+			WriteHeaderField(ms, KdbxHeaderFieldID.CipherID,
 				m_pwDatabase.DataCipherUuid.UuidBytes);
 
 			int nCprID = (int)m_pwDatabase.Compression;
-			WriteHeaderField(bw, Kdb4HeaderFieldID.CompressionFlags,
+			WriteHeaderField(ms, KdbxHeaderFieldID.CompressionFlags,
 				MemUtil.UInt32ToBytes((uint)nCprID));
 
-			WriteHeaderField(bw, Kdb4HeaderFieldID.MasterSeed, m_pbMasterSeed);
-			WriteHeaderField(bw, Kdb4HeaderFieldID.TransformSeed, m_pbTransformSeed);
-			WriteHeaderField(bw, Kdb4HeaderFieldID.TransformRounds, MemUtil.UInt64ToBytes(m_pwDatabase.KeyEncryptionRounds));
-			WriteHeaderField(bw, Kdb4HeaderFieldID.EncryptionIV, m_pbEncryptionIV);
-			WriteHeaderField(bw, Kdb4HeaderFieldID.ProtectedStreamKey, m_pbProtectedStreamKey);
-			WriteHeaderField(bw, Kdb4HeaderFieldID.StreamStartBytes, m_pbStreamStartBytes);
+			WriteHeaderField(ms, KdbxHeaderFieldID.MasterSeed, m_pbMasterSeed);
+			WriteHeaderField(ms, KdbxHeaderFieldID.TransformSeed, m_pbTransformSeed);
+			WriteHeaderField(ms, KdbxHeaderFieldID.TransformRounds,
+				MemUtil.UInt64ToBytes(m_pwDatabase.KeyEncryptionRounds));
+			WriteHeaderField(ms, KdbxHeaderFieldID.EncryptionIV, m_pbEncryptionIV);
+			WriteHeaderField(ms, KdbxHeaderFieldID.ProtectedStreamKey, m_pbProtectedStreamKey);
+			WriteHeaderField(ms, KdbxHeaderFieldID.StreamStartBytes, m_pbStreamStartBytes);
 
 			int nIrsID = (int)m_craInnerRandomStream;
-			WriteHeaderField(bw, Kdb4HeaderFieldID.InnerRandomStreamID,
+			WriteHeaderField(ms, KdbxHeaderFieldID.InnerRandomStreamID,
 				MemUtil.UInt32ToBytes((uint)nIrsID));
 
-			WriteHeaderField(bw, Kdb4HeaderFieldID.EndOfHeader, new byte[]{ (byte)'\r', (byte)'\n', (byte)'\r', (byte)'\n' });
-			bw.Flush();
+			WriteHeaderField(ms, KdbxHeaderFieldID.EndOfHeader, new byte[]{
+				(byte)'\r', (byte)'\n', (byte)'\r', (byte)'\n' });
+
+			byte[] pbHeader = ms.ToArray();
+			ms.Close();
+
+			SHA256Managed sha256 = new SHA256Managed();
+			m_pbHashOfHeader = sha256.ComputeHash(pbHeader);
+
+			s.Write(pbHeader, 0, pbHeader.Length);
+			s.Flush();
 		}
 
-		private static void WriteHeaderField(BinaryWriter bwOut,
-			Kdb4HeaderFieldID kdbID, byte[] pbData)
+		private static void WriteHeaderField(Stream s, KdbxHeaderFieldID kdbID,
+			byte[] pbData)
 		{
-			Debug.Assert(bwOut != null);
-			if(bwOut == null) throw new ArgumentNullException("bwOut");
-
-			bwOut.Write((byte)kdbID);
+			s.WriteByte((byte)kdbID);
 
 			if(pbData != null)
 			{
 				ushort uLength = (ushort)pbData.Length;
-				bwOut.Write(uLength);
+				MemUtil.Write(s, MemUtil.UInt16ToBytes(uLength));
 
-				if(uLength > 0) bwOut.Write(pbData);
+				if(uLength > 0) s.Write(pbData, 0, pbData.Length);
 			}
-			else bwOut.Write((ushort)0);
+			else MemUtil.Write(s, MemUtil.UInt16ToBytes((ushort)0));
 		}
 
 		private Stream AttachStreamEncryptor(Stream s)
@@ -314,6 +317,11 @@ namespace KeePassLib.Serialization
 			m_xmlWriter.WriteStartElement(ElemMeta);
 
 			WriteObject(ElemGenerator, PwDatabase.LocalizedAppName, false); // Generator name
+
+			if(m_pbHashOfHeader != null)
+				WriteObject(ElemHeaderHash, Convert.ToBase64String(
+					m_pbHashOfHeader), false);
+
 			WriteObject(ElemDbName, m_pwDatabase.Name, true);
 			WriteObject(ElemDbNameChanged, m_pwDatabase.NameChanged);
 			WriteObject(ElemDbDesc, m_pwDatabase.Description, true);
@@ -651,7 +659,7 @@ namespace KeePassLib.Serialization
 					bProtected = m_pwDatabase.MemoryProtection.ProtectNotes;
 			}
 
-			if(bProtected && (m_format != Kdb4Format.PlainXml))
+			if(bProtected && (m_format != KdbxFormat.PlainXml))
 			{
 				m_xmlWriter.WriteAttributeString(AttrProtected, ValTrue);
 
@@ -700,7 +708,7 @@ namespace KeePassLib.Serialization
 					strValue = sb.ToString(); // Correct string for current code page
 				}
 
-				if((m_format == Kdb4Format.PlainXml) && bProtected)
+				if((m_format == KdbxFormat.PlainXml) && bProtected)
 					m_xmlWriter.WriteAttributeString(AttrProtectedInMemPlainXml, ValTrue);
 
 				m_xmlWriter.WriteString(StrUtil.SafeXmlString(strValue));
@@ -734,7 +742,7 @@ namespace KeePassLib.Serialization
 
 		private void SubWriteValue(ProtectedBinary value)
 		{
-			if(value.IsProtected && (m_format != Kdb4Format.PlainXml))
+			if(value.IsProtected && (m_format != KdbxFormat.PlainXml))
 			{
 				m_xmlWriter.WriteAttributeString(AttrProtected, ValTrue);
 
@@ -802,8 +810,8 @@ namespace KeePassLib.Serialization
 		/// to the stream.</returns>
 		public static bool WriteEntries(Stream msOutput, PwEntry[] vEntries)
 		{
-			/* Kdb4File f = new Kdb4File(pwDatabase);
-			f.m_format = Kdb4Format.PlainXml;
+			/* KdbxFile f = new KdbxFile(pwDatabase);
+			f.m_format = KdbxFormat.PlainXml;
 
 			XmlTextWriter xtw = null;
 			try { xtw = new XmlTextWriter(msOutput, StrUtil.Utf8); }
@@ -835,8 +843,8 @@ namespace KeePassLib.Serialization
 			foreach(PwEntry peCopy in vEntries)
 				pd.RootGroup.AddEntry(peCopy.CloneDeep(), true);
 
-			Kdb4File f = new Kdb4File(pd);
-			f.Save(msOutput, null, Kdb4Format.PlainXml, null);
+			KdbxFile f = new KdbxFile(pd);
+			f.Save(msOutput, null, KdbxFormat.PlainXml, null);
 			return true;
 		}
 	}
diff --git a/KeePassLib/Serialization/Kdb4File.cs b/KeePassLib/Serialization/KdbxFile.cs
similarity index 92%
rename from KeePassLib/Serialization/Kdb4File.cs
rename to KeePassLib/Serialization/KdbxFile.cs
index 25df286..d76b551 100644
--- a/KeePassLib/Serialization/Kdb4File.cs
+++ b/KeePassLib/Serialization/KdbxFile.cs
@@ -39,10 +39,10 @@ using KeePassLib.Utility;
 namespace KeePassLib.Serialization
 {
 	/// <summary>
-	/// The <c>Kdb4File</c> class supports saving the data to various
+	/// The <c>KdbxFile</c> class supports saving the data to various
 	/// formats.
 	/// </summary>
-	public enum Kdb4Format
+	public enum KdbxFormat
 	{
 		/// <summary>
 		/// The default, encrypted file format.
@@ -56,9 +56,9 @@ namespace KeePassLib.Serialization
 	}
 
 	/// <summary>
-	/// Serialization to KeePass KDB files.
+	/// Serialization to KeePass KDBX files.
 	/// </summary>
-	public sealed partial class Kdb4File
+	public sealed partial class KdbxFile
 	{
 		/// <summary>
 		/// File identifier, first 32-bit value.
@@ -71,13 +71,13 @@ namespace KeePassLib.Serialization
 		private const uint FileSignature2 = 0xB54BFB67;
 
 		/// <summary>
-		/// File version of files saved by the current <c>Kdb4File</c> class.
+		/// File version of files saved by the current <c>KdbxFile</c> class.
 		/// KeePass 2.07 has version 1.01, 2.08 has 1.02, 2.09 has 2.00,
-		/// 2.10 has 2.02, 2.11 has 2.04, 2.15 has 3.00.
+		/// 2.10 has 2.02, 2.11 has 2.04, 2.15 has 3.00, 2.20 has 3.01.
 		/// The first 2 bytes are critical (i.e. loading will fail, if the
 		/// file version is too high), the last 2 bytes are informational.
 		/// </summary>
-		private const uint FileVersion32 = 0x00030000;
+		private const uint FileVersion32 = 0x00030001;
 
 		private const uint FileVersionCriticalMask = 0xFFFF0000;
 
@@ -95,6 +95,7 @@ namespace KeePassLib.Serialization
 		private const string ElemEntry = "Entry";
 
 		private const string ElemGenerator = "Generator";
+		private const string ElemHeaderHash = "HeaderHash";
 		private const string ElemDbName = "DatabaseName";
 		private const string ElemDbNameChanged = "DatabaseNameChanged";
 		private const string ElemDbDesc = "DatabaseDescription";
@@ -192,7 +193,7 @@ namespace KeePassLib.Serialization
 
 		private XmlTextWriter m_xmlWriter = null;
 		private CryptoRandomStream m_randomStream = null;
-		private Kdb4Format m_format = Kdb4Format.Default;
+		private KdbxFormat m_format = KdbxFormat.Default;
 		private IStatusLogger m_slLogger = null;
 
 		private byte[] m_pbMasterSeed = null;
@@ -208,6 +209,7 @@ namespace KeePassLib.Serialization
 		private Dictionary<string, ProtectedBinary> m_dictBinPool =
 			new Dictionary<string, ProtectedBinary>();
 
+		private byte[] m_pbHashOfHeader = null;
 		private byte[] m_pbHashOfFileOnDisk = null;
 
 		private readonly DateTime m_dtNow = DateTime.Now; // Cache current time
@@ -217,7 +219,7 @@ namespace KeePassLib.Serialization
 		private const uint NeutralLanguageID = NeutralLanguageOffset + NeutralLanguageIDSec;
 		private static bool m_bLocalizedNames = false;
 
-		private enum Kdb4HeaderFieldID : byte
+		private enum KdbxHeaderFieldID : byte
 		{
 			EndOfHeader = 0,
 			Comment = 1,
@@ -261,7 +263,7 @@ namespace KeePassLib.Serialization
 		/// </summary>
 		/// <param name="pwDataStore">The <c>PwDatabase</c> instance that the
 		/// class will load file data into or use to create a KDBX file.</param>
-		public Kdb4File(PwDatabase pwDataStore)
+		public KdbxFile(PwDatabase pwDataStore)
 		{
 			Debug.Assert(pwDataStore != null);
 			if(pwDataStore == null) throw new ArgumentNullException("pwDataStore");
diff --git a/KeePassLib/Utility/GfxUtil.cs b/KeePassLib/Utility/GfxUtil.cs
new file mode 100644
index 0000000..cbccc72
--- /dev/null
+++ b/KeePassLib/Utility/GfxUtil.cs
@@ -0,0 +1,87 @@
+/*
+  KeePass Password Safe - The Open-Source Password Manager
+  Copyright (C) 2003-2012 Dominik Reichl <dominik.reichl at t-online.de>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Drawing;
+using System.Drawing.Imaging;
+using System.Diagnostics;
+
+namespace KeePassLib.Utility
+{
+	public static class GfxUtil
+	{
+		public static Image LoadImage(byte[] pb)
+		{
+			if(pb == null) throw new ArgumentNullException("pb");
+
+			MemoryStream ms = new MemoryStream(pb, false);
+			try { return LoadImagePriv(ms); }
+			catch(Exception)
+			{
+				Image imgIco = TryLoadIco(pb);
+				if(imgIco != null) return imgIco;
+				throw;
+			}
+			finally { ms.Close(); }
+		}
+
+		private static Image LoadImagePriv(Stream s)
+		{
+			// Image.FromStream wants the stream to be open during
+			// the whole lifetime of the image; as we can't guarantee
+			// this, we make a copy of the image
+			Image imgSrc = null;
+			try
+			{
+#if !KeePassLibSD
+				imgSrc = Image.FromStream(s);
+				Image img = new Bitmap(imgSrc.Width, imgSrc.Height,
+					PixelFormat.Format32bppArgb);
+#else
+				imgSrc = new Bitmap(s);
+				Image img = new Bitmap(imgSrc.Width, imgSrc.Height);
+#endif
+
+				using(Graphics g = Graphics.FromImage(img))
+				{
+					g.Clear(Color.Transparent);
+					g.DrawImage(imgSrc, 0, 0);
+				}
+
+				return img;
+			}
+			finally { if(imgSrc != null) imgSrc.Dispose(); }
+		}
+
+		private static Image TryLoadIco(byte[] pb)
+		{
+#if !KeePassLibSD
+			MemoryStream ms = new MemoryStream(pb, false);
+			try { return (new Icon(ms)).ToBitmap(); }
+			catch(Exception) { }
+			finally { ms.Close(); }
+#endif
+
+			return null;
+		}
+	}
+}
diff --git a/KeePassLib/Utility/MemUtil.cs b/KeePassLib/Utility/MemUtil.cs
index 94e8207..5d8c86c 100644
--- a/KeePassLib/Utility/MemUtil.cs
+++ b/KeePassLib/Utility/MemUtil.cs
@@ -285,14 +285,52 @@ namespace KeePassLib.Utility
 
 			const int nBufSize = 4096;
 			byte[] pbBuf = new byte[nBufSize];
-			int nRead;
 
-			while((nRead = sSource.Read(pbBuf, 0, nBufSize)) > 0)
+			while(true)
+			{
+				int nRead = sSource.Read(pbBuf, 0, nBufSize);
+				if(nRead == 0) break;
+
 				sTarget.Write(pbBuf, 0, nRead);
+			}
 
 			// Do not close any of the streams
 		}
 
+		public static byte[] Read(Stream s, int nCount)
+		{
+			if(s == null) throw new ArgumentNullException("s");
+			if(nCount < 0) throw new ArgumentOutOfRangeException("nCount");
+
+			byte[] pb = new byte[nCount];
+			int iOffset = 0;
+			while(nCount > 0)
+			{
+				int iRead = s.Read(pb, iOffset, nCount);
+				if(iRead == 0) break;
+
+				iOffset += iRead;
+				nCount -= iRead;
+			}
+
+			if(iOffset != pb.Length)
+			{
+				byte[] pbPart = new byte[iOffset];
+				Array.Copy(pb, pbPart, iOffset);
+				return pbPart;
+			}
+
+			return pb;
+		}
+
+		public static void Write(Stream s, byte[] pbData)
+		{
+			if(s == null) { Debug.Assert(false); return; }
+			if(pbData == null) { Debug.Assert(false); return; }
+
+			s.Write(pbData, 0, pbData.Length);
+		}
+
 		public static byte[] Compress(byte[] pbData)
 		{
 			if(pbData == null) throw new ArgumentNullException("pbData");
diff --git a/KeePassLib/Utility/MessageService.cs b/KeePassLib/Utility/MessageService.cs
index 4085382..998900e 100644
--- a/KeePassLib/Utility/MessageService.cs
+++ b/KeePassLib/Utility/MessageService.cs
@@ -158,6 +158,16 @@ namespace KeePassLib.Utility
 			return sbText.ToString();
 		}
 
+#if !KeePassLibSD
+		internal static Form GetTopForm()
+		{
+			FormCollection fc = Application.OpenForms;
+			if((fc == null) || (fc.Count == 0)) return null;
+
+			return fc[fc.Count - 1];
+		}
+#endif
+
 		private static DialogResult SafeShowMessageBox(string strText, string strTitle,
 			MessageBoxButtons mb, MessageBoxIcon mi, MessageBoxDefaultButton mdb)
 		{
@@ -167,15 +177,11 @@ namespace KeePassLib.Utility
 			IWin32Window wnd = null;
 			try
 			{
-				FormCollection fc = Application.OpenForms;
-				if((fc != null) && (fc.Count > 0))
-				{
-					Form f = fc[fc.Count - 1];
-					if((f != null) && f.InvokeRequired)
-						return (DialogResult)f.Invoke(new SafeShowMessageBoxInternalDelegate(
-							SafeShowMessageBoxInternal), f, strText, strTitle, mb, mi, mdb);
-					else wnd = f;
-				}
+				Form f = GetTopForm();
+				if((f != null) && f.InvokeRequired)
+					return (DialogResult)f.Invoke(new SafeShowMessageBoxInternalDelegate(
+						SafeShowMessageBoxInternal), f, strText, strTitle, mb, mi, mdb);
+				else wnd = f;
 			}
 			catch(Exception) { Debug.Assert(false); }
 
diff --git a/KeePassLibSD/KeePassLibSD.csproj b/KeePassLibSD/KeePassLibSD.csproj
index 3e4bf78..0afa13d 100644
--- a/KeePassLibSD/KeePassLibSD.csproj
+++ b/KeePassLibSD/KeePassLibSD.csproj
@@ -248,17 +248,17 @@
     <Compile Include="..\KeePassLib\Serialization\IOConnectionInfo.cs">
       <Link>Serialization\IOConnectionInfo.cs</Link>
     </Compile>
-    <Compile Include="..\KeePassLib\Serialization\Kdb4File.cs">
-      <Link>Serialization\Kdb4File.cs</Link>
+    <Compile Include="..\KeePassLib\Serialization\KdbxFile.cs">
+      <Link>Serialization\KdbxFile.cs</Link>
     </Compile>
-    <Compile Include="..\KeePassLib\Serialization\Kdb4File.Read.cs">
-      <Link>Serialization\Kdb4File.Read.cs</Link>
+    <Compile Include="..\KeePassLib\Serialization\KdbxFile.Read.cs">
+      <Link>Serialization\KdbxFile.Read.cs</Link>
     </Compile>
-    <Compile Include="..\KeePassLib\Serialization\Kdb4File.Read.Streamed.cs">
-      <Link>Serialization\Kdb4File.Read.Streamed.cs</Link>
+    <Compile Include="..\KeePassLib\Serialization\KdbxFile.Read.Streamed.cs">
+      <Link>Serialization\KdbxFile.Read.Streamed.cs</Link>
     </Compile>
-    <Compile Include="..\KeePassLib\Serialization\Kdb4File.Write.cs">
-      <Link>Serialization\Kdb4File.Write.cs</Link>
+    <Compile Include="..\KeePassLib\Serialization\KdbxFile.Write.cs">
+      <Link>Serialization\KdbxFile.Write.cs</Link>
     </Compile>
     <Compile Include="..\KeePassLib\Serialization\OldFormatException.cs">
       <Link>Serialization\OldFormatException.cs</Link>
@@ -284,6 +284,9 @@
     <Compile Include="..\KeePassLib\Utility\AppLogEx.cs">
       <Link>Utility\AppLogEx.cs</Link>
     </Compile>
+    <Compile Include="..\KeePassLib\Utility\GfxUtil.cs">
+      <Link>Utility\GfxUtil.cs</Link>
+    </Compile>
     <Compile Include="..\KeePassLib\Utility\MemUtil.cs">
       <Link>Utility\MemUtil.cs</Link>
     </Compile>
diff --git a/KeePassLibSD/Properties/AssemblyInfo.cs b/KeePassLibSD/Properties/AssemblyInfo.cs
index 7ec1fff..5cd83ff 100644
--- a/KeePassLibSD/Properties/AssemblyInfo.cs
+++ b/KeePassLibSD/Properties/AssemblyInfo.cs
@@ -38,4 +38,4 @@ using System.Runtime.InteropServices;
 [assembly: Guid("1d3c6f10-e10b-47be-a2f1-af2562d7d470")]
 
 // Assembly version information
-[assembly: AssemblyVersion("2.19.0.*")]
+[assembly: AssemblyVersion("2.20.0.*")]
diff --git a/ShInstUtil/ShInstUtil.rc b/ShInstUtil/ShInstUtil.rc
index a95027b..31cfe29 100644
--- a/ShInstUtil/ShInstUtil.rc
+++ b/ShInstUtil/ShInstUtil.rc
@@ -65,8 +65,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 2,19,0,0
- PRODUCTVERSION 2,19,0,0
+ FILEVERSION 2,20,0,0
+ PRODUCTVERSION 2,20,0,0
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -83,12 +83,12 @@ BEGIN
         BEGIN
             VALUE "CompanyName", "Dominik Reichl"
             VALUE "FileDescription", "ShInstUtil - KeePass Helper Utility"
-            VALUE "FileVersion", "2, 19, 0, 0"
+            VALUE "FileVersion", "2, 20, 0, 0"
             VALUE "InternalName", "ShInstUtil"
             VALUE "LegalCopyright", "Copyright (c) 2007-2012 Dominik Reichl"
             VALUE "OriginalFilename", "ShInstUtil.exe"
             VALUE "ProductName", "ShInstUtil - KeePass Helper Utility"
-            VALUE "ProductVersion", "2, 19, 0, 0"
+            VALUE "ProductVersion", "2, 20, 0, 0"
         END
     END
     BLOCK "VarFileInfo"
diff --git a/Translation/DefaultText.xml b/Translation/DefaultText.xml
index c751cb3..3d7a7af 100644
--- a/Translation/DefaultText.xml
+++ b/Translation/DefaultText.xml
@@ -127,6 +127,9 @@
 		<Data Name="AutoType">
 			<Value>Auto-Type</Value>
 		</Data>
+		<Data Name="AutoTypeCancelOnTitleChange">
+			<Value>Cancel auto-type when the target window title changes</Value>
+		</Data>
 		<Data Name="AutoTypeCancelOnWindowChange">
 			<Value>Cancel auto-type when the target window changes</Value>
 		</Data>
@@ -958,7 +961,7 @@
 		<Data Name="Italic">
 			<Value>Italic</Value>
 		</Data>
-		<Data Name="Kdb3KeePassLibC">
+		<Data Name="KdbKeePassLibC">
 			<Value>The KeePassLibC library is required to open and save KDB files created by KeePass 1.x.</Value>
 		</Data>
 		<Data Name="KdbxFiles">
@@ -1423,6 +1426,9 @@
 		<Data Name="RememberKeySources">
 			<Value>Remember key sources (key file paths, provider names, ...)</Value>
 		</Data>
+		<Data Name="RememberWorkingDirectories">
+			<Value>Remember working directories</Value>
+		</Data>
 		<Data Name="RemoteHostReachable">
 			<Value>Remote host is reachable (ping)</Value>
 		</Data>
@@ -1891,8 +1897,8 @@
 		<Data Name="XslSelectFile">
 			<Value>Select XSL Transformation File</Value>
 		</Data>
-		<Data Name="XslStylesheets">
-			<Value>XSL Stylesheets for KDB4 XML</Value>
+		<Data Name="XslStylesheetsKdbx">
+			<Value>XSL Stylesheets for KDBX XML</Value>
 		</Data>
 		<Data Name="Yes">
 			<Value>Yes</Value>
@@ -1934,7 +1940,7 @@
 			<Value>A newer KeePass version is required to open this file.</Value>
 		</Data>
 		<Data Name="FileSaveCorruptionWarning">
-			<Value>The target file might be in a corrupted state. Please try saving again, and if that fails, save the database to a different location.</Value>
+			<Value>The target file might be corrupted. Please try saving again. If that fails, save the database to a different location.</Value>
 		</Data>
 		<Data Name="FileSaveFailed">
 			<Value>Failed to save the current database to the specified location!</Value>
diff --git a/Translation/TrlUtil/MainForm.Designer.cs b/Translation/TrlUtil/MainForm.Designer.cs
index 29e1cd8..316433e 100644
--- a/Translation/TrlUtil/MainForm.Designer.cs
+++ b/Translation/TrlUtil/MainForm.Designer.cs
@@ -92,6 +92,7 @@
 			this.m_tbSave = new System.Windows.Forms.ToolStripButton();
 			this.m_tbSep0 = new System.Windows.Forms.ToolStripSeparator();
 			this.m_tbFind = new System.Windows.Forms.ToolStripTextBox();
+			this.m_menuFileImportPo = new System.Windows.Forms.ToolStripMenuItem();
 			this.m_tabMain.SuspendLayout();
 			this.m_tabProps.SuspendLayout();
 			this.m_tabStrings.SuspendLayout();
@@ -588,14 +589,14 @@
             this.m_menuFileSep1,
             this.m_menuFileExit});
 			this.m_menuFile.Name = "m_menuFile";
-			this.m_menuFile.Size = new System.Drawing.Size(35, 20);
+			this.m_menuFile.Size = new System.Drawing.Size(39, 20);
 			this.m_menuFile.Text = "&File";
 			// 
 			// m_menuFileOpen
 			// 
 			this.m_menuFileOpen.Image = global::TrlUtil.Properties.Resources.B16x16_Folder_Yellow_Open;
 			this.m_menuFileOpen.Name = "m_menuFileOpen";
-			this.m_menuFileOpen.Size = new System.Drawing.Size(123, 22);
+			this.m_menuFileOpen.Size = new System.Drawing.Size(152, 22);
 			this.m_menuFileOpen.Text = "&Open...";
 			this.m_menuFileOpen.Click += new System.EventHandler(this.OnFileOpen);
 			// 
@@ -603,7 +604,7 @@
 			// 
 			this.m_menuFileSave.Image = global::TrlUtil.Properties.Resources.B16x16_FileSave;
 			this.m_menuFileSave.Name = "m_menuFileSave";
-			this.m_menuFileSave.Size = new System.Drawing.Size(123, 22);
+			this.m_menuFileSave.Size = new System.Drawing.Size(152, 22);
 			this.m_menuFileSave.Text = "&Save";
 			this.m_menuFileSave.Click += new System.EventHandler(this.OnFileSave);
 			// 
@@ -611,53 +612,54 @@
 			// 
 			this.m_menuFileSaveAs.Image = global::TrlUtil.Properties.Resources.B16x16_FileSaveAs;
 			this.m_menuFileSaveAs.Name = "m_menuFileSaveAs";
-			this.m_menuFileSaveAs.Size = new System.Drawing.Size(123, 22);
+			this.m_menuFileSaveAs.Size = new System.Drawing.Size(152, 22);
 			this.m_menuFileSaveAs.Text = "Save &As...";
 			this.m_menuFileSaveAs.Click += new System.EventHandler(this.OnFileSaveAs);
 			// 
 			// m_menuFileSep0
 			// 
 			this.m_menuFileSep0.Name = "m_menuFileSep0";
-			this.m_menuFileSep0.Size = new System.Drawing.Size(120, 6);
+			this.m_menuFileSep0.Size = new System.Drawing.Size(149, 6);
 			// 
 			// m_menuFileImport
 			// 
 			this.m_menuFileImport.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.m_menuFileImportLng,
+            this.m_menuFileImportPo,
             this.m_menuFileImportSep0,
             this.m_menuFileImport2xNoChecks});
 			this.m_menuFileImport.Name = "m_menuFileImport";
-			this.m_menuFileImport.Size = new System.Drawing.Size(123, 22);
-			this.m_menuFileImport.Text = "Import";
+			this.m_menuFileImport.Size = new System.Drawing.Size(152, 22);
+			this.m_menuFileImport.Text = "&Import";
 			// 
 			// m_menuFileImportLng
 			// 
 			this.m_menuFileImportLng.Name = "m_menuFileImportLng";
-			this.m_menuFileImportLng.Size = new System.Drawing.Size(282, 22);
-			this.m_menuFileImportLng.Text = "KeePass 1.x LNG File...";
+			this.m_menuFileImportLng.Size = new System.Drawing.Size(311, 22);
+			this.m_menuFileImportLng.Text = "KeePass &1.x LNG File...";
 			this.m_menuFileImportLng.Click += new System.EventHandler(this.OnImport1xLng);
 			// 
 			// m_menuFileImportSep0
 			// 
 			this.m_menuFileImportSep0.Name = "m_menuFileImportSep0";
-			this.m_menuFileImportSep0.Size = new System.Drawing.Size(279, 6);
+			this.m_menuFileImportSep0.Size = new System.Drawing.Size(308, 6);
 			// 
 			// m_menuFileImport2xNoChecks
 			// 
 			this.m_menuFileImport2xNoChecks.Name = "m_menuFileImport2xNoChecks";
-			this.m_menuFileImport2xNoChecks.Size = new System.Drawing.Size(282, 22);
-			this.m_menuFileImport2xNoChecks.Text = "KeePass 2.x LNGX File (No Base Checks)...";
+			this.m_menuFileImport2xNoChecks.Size = new System.Drawing.Size(311, 22);
+			this.m_menuFileImport2xNoChecks.Text = "KeePass &2.x LNGX File (No Base Checks)...";
 			this.m_menuFileImport2xNoChecks.Click += new System.EventHandler(this.OnImport2xNoChecks);
 			// 
 			// m_menuFileSep1
 			// 
 			this.m_menuFileSep1.Name = "m_menuFileSep1";
-			this.m_menuFileSep1.Size = new System.Drawing.Size(120, 6);
+			this.m_menuFileSep1.Size = new System.Drawing.Size(149, 6);
 			// 
 			// m_menuFileExit
 			// 
 			this.m_menuFileExit.Name = "m_menuFileExit";
-			this.m_menuFileExit.Size = new System.Drawing.Size(123, 22);
+			this.m_menuFileExit.Size = new System.Drawing.Size(152, 22);
 			this.m_menuFileExit.Text = "&Exit";
 			this.m_menuFileExit.Click += new System.EventHandler(this.OnFileExit);
 			// 
@@ -708,6 +710,13 @@
 			this.m_tbFind.KeyUp += new System.Windows.Forms.KeyEventHandler(this.OnFindKeyUp);
 			this.m_tbFind.TextChanged += new System.EventHandler(this.OnFindTextChanged);
 			// 
+			// m_menuFileImportPo
+			// 
+			this.m_menuFileImportPo.Name = "m_menuFileImportPo";
+			this.m_menuFileImportPo.Size = new System.Drawing.Size(311, 22);
+			this.m_menuFileImportPo.Text = "&PO File...";
+			this.m_menuFileImportPo.Click += new System.EventHandler(this.OnImportPo);
+			// 
 			// MainForm
 			// 
 			this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -809,6 +818,7 @@
 		private System.Windows.Forms.ToolStripSeparator m_menuFileImportSep0;
 		private System.Windows.Forms.ToolStripMenuItem m_menuFileImport2xNoChecks;
 		private System.Windows.Forms.CheckBox m_cbRtl;
+		private System.Windows.Forms.ToolStripMenuItem m_menuFileImportPo;
 	}
 }
 
diff --git a/Translation/TrlUtil/MainForm.cs b/Translation/TrlUtil/MainForm.cs
index cb3ebd4..b203caa 100644
--- a/Translation/TrlUtil/MainForm.cs
+++ b/Translation/TrlUtil/MainForm.cs
@@ -34,6 +34,7 @@ using KeePass.Util.XmlSerialization;
 
 using KeePassLib;
 using KeePassLib.Resources;
+using KeePassLib.Serialization;
 using KeePassLib.Translation;
 using KeePassLib.Utility;
 
@@ -59,6 +60,8 @@ namespace TrlUtil
 
 		private PreviewForm m_prev = new PreviewForm();
 
+		private delegate void ImportFn(KPTranslation trlInto, IOConnectionInfo ioc);
+
 		public MainForm()
 		{
 			InitializeComponent();
@@ -393,8 +396,8 @@ namespace TrlUtil
 
 		private void OnFileOpen(object sender, EventArgs e)
 		{
-			OpenFileDialog ofd = UIUtil.CreateOpenFileDialog("Open KeePass Translation",
-				m_strFileFilter, 1, null, false, false);
+			OpenFileDialogEx ofd = UIUtil.CreateOpenFileDialog("Open KeePass Translation",
+				m_strFileFilter, 1, null, false, AppDefs.FileDialogContext.Attachments);
 
 			if(ofd.ShowDialog() != DialogResult.OK) return;
 
@@ -623,7 +626,7 @@ namespace TrlUtil
 			Debug.Assert(kpstItem != null);
 			if(kpstItem == null) return;
 
-			m_tbStrEng.Text = lvsic[0].SubItems[1].Text;
+			UIUtil.SetMultilineText(m_tbStrEng, lvsic[0].SubItems[1].Text);
 			m_tbStrTrl.Text = lvsic[0].SubItems[2].Text;
 		}
 
@@ -667,8 +670,9 @@ namespace TrlUtil
 
 		private void OnFileSaveAs(object sender, EventArgs e)
 		{
-			SaveFileDialog sfd = UIUtil.CreateSaveFileDialog("Save KeePass Translation",
-				m_tbNameEng.Text + ".lngx", m_strFileFilter, 1, "lngx", false);
+			SaveFileDialogEx sfd = UIUtil.CreateSaveFileDialog("Save KeePass Translation",
+				m_tbNameEng.Text + ".lngx", m_strFileFilter, 1, "lngx",
+				AppDefs.FileDialogContext.Attachments);
 
 			if(sfd.ShowDialog() != DialogResult.OK) return;
 
@@ -694,7 +698,7 @@ namespace TrlUtil
 
 			m_kpccLast = kpcc;
 
-			m_tbCtrlEngText.Text = m_kpccLast.TextEnglish;
+			UIUtil.SetMultilineText(m_tbCtrlEngText, m_kpccLast.TextEnglish);
 			m_tbCtrlTrlText.Text = m_kpccLast.Text;
 
 			m_tbLayoutX.Text = KpccLayout.ToControlRelativeString(m_kpccLast.Layout.X);
@@ -821,12 +825,24 @@ namespace TrlUtil
 
 		private void OnImport1xLng(object sender, EventArgs e)
 		{
-			OpenFileDialog ofd = UIUtil.CreateOpenFileDialog("Import KeePass 1.x LNG File",
-				"KeePass 1.x LNG File (*.lng)|*.lng|All Files (*.*)|*.*", 1, "lng", false, true);
+			PerformImport("lng", "KeePass 1.x LNG File", Import1xLng);
+		}
+
+		private static void Import1xLng(KPTranslation trlInto, IOConnectionInfo ioc)
+		{
+			TrlImport.Import1xLng(trlInto, ioc.Path);
+		}
+
+		private void PerformImport(string strFileExt, string strFileDesc, ImportFn f)
+		{
+			OpenFileDialogEx ofd = UIUtil.CreateOpenFileDialog("Import " + strFileDesc,
+				strFileDesc + " (*." + strFileExt + ")|*." + strFileExt +
+				"|All Files (*.*)|*.*", 1, strFileExt, false,
+				AppDefs.FileDialogContext.Import);
 
 			if(ofd.ShowDialog() != DialogResult.OK) return;
 
-			try { KeePass1xLngImport.Import(m_trl, ofd.FileName); }
+			try { f(m_trl, IOConnectionInfo.FromPath(ofd.FileName)); }
 			catch(Exception ex) { MessageService.ShowWarning(ex); }
 
 			UpdateStringTableUI();
@@ -955,5 +971,15 @@ namespace TrlUtil
 			OnFileOpen(sender, EventArgs.Empty);
 			FormTrlMgr.IgnoreBaseHash = false;
 		}
+
+		private void OnImportPo(object sender, EventArgs e)
+		{
+			PerformImport("po", "PO File", ImportPo);
+		}
+
+		private static void ImportPo(KPTranslation trlInto, IOConnectionInfo ioc)
+		{
+			TrlImport.ImportPo(trlInto, ioc.Path);
+		}
 	}
 }
diff --git a/Translation/TrlUtil/Properties/AssemblyInfo.cs b/Translation/TrlUtil/Properties/AssemblyInfo.cs
index aca8622..e45e4fa 100644
--- a/Translation/TrlUtil/Properties/AssemblyInfo.cs
+++ b/Translation/TrlUtil/Properties/AssemblyInfo.cs
@@ -38,5 +38,5 @@ using System.Runtime.InteropServices;
 [assembly: Guid("39aa6f93-a1c9-497f-bad2-cc42a61d5710")]
 
 // Assembly version information
-[assembly: AssemblyVersion("2.19.0.*")]
-[assembly: AssemblyFileVersion("2.19.0.0")]
+[assembly: AssemblyVersion("2.20.0.*")]
+[assembly: AssemblyFileVersion("2.20.0.0")]
diff --git a/Translation/TrlUtil/KeePass1xLngImport.cs b/Translation/TrlUtil/TrlImport.cs
similarity index 58%
rename from Translation/TrlUtil/KeePass1xLngImport.cs
rename to Translation/TrlUtil/TrlImport.cs
index b211e5e..32e1c51 100644
--- a/Translation/TrlUtil/KeePass1xLngImport.cs
+++ b/Translation/TrlUtil/TrlImport.cs
@@ -24,16 +24,17 @@ using System.IO;
 using System.Diagnostics;
 
 using KeePassLib.Translation;
+using KeePassLib.Utility;
 
 namespace TrlUtil
 {
-	public static class KeePass1xLngImport
+	public static class TrlImport
 	{
-		public static void Import(KPTranslation kpInto, string strFile)
+		public static void Import1xLng(KPTranslation kpInto, string strFile)
 		{
 			if((strFile == null) || (strFile.Length == 0)) { Debug.Assert(false); return; }
 
-			string strData = File.ReadAllText(strFile, Encoding.UTF8);
+			string strData = File.ReadAllText(strFile, StrUtil.Utf8);
 
 			Dictionary<string, string> dict = new Dictionary<string, string>();
 
@@ -85,34 +86,66 @@ namespace TrlUtil
 			{
 				foreach(KPStringTableItem kpsti in kpst.Strings)
 				{
-					if(kpsti.Value.Length == 0)
-					{
-						string strTrl;
-						if(dict.TryGetValue(kpsti.ValueEnglish, out strTrl))
-							kpsti.Value = strTrl;
-					}
+					string strTrl;
+					if(dict.TryGetValue(kpsti.ValueEnglish, out strTrl))
+						kpsti.Value = strTrl;
 				}
 			}
 
 			foreach(KPFormCustomization kpfc in kpInto.Forms)
 			{
-				if(kpfc.Window.Text.Length == 0)
+				string strTrlWnd;
+				if(dict.TryGetValue(kpfc.Window.TextEnglish, out strTrlWnd))
+					kpfc.Window.Text = strTrlWnd;
+
+				foreach(KPControlCustomization kpcc in kpfc.Controls)
 				{
-					string strTrlWnd;
-					if(dict.TryGetValue(kpfc.Window.TextEnglish, out strTrlWnd))
-						kpfc.Window.Text = strTrlWnd;
+					string strTrlCtrl;
+					if(dict.TryGetValue(kpcc.TextEnglish, out strTrlCtrl))
+						kpcc.Text = strTrlCtrl;
 				}
+			}
+		}
 
-				foreach(KPControlCustomization kpcc in kpfc.Controls)
+		public static void ImportPo(KPTranslation kpInto, string strFile)
+		{
+			if((strFile == null) || (strFile.Length == 0)) { Debug.Assert(false); return; }
+
+			string strData = File.ReadAllText(strFile, StrUtil.Utf8);
+			strData = StrUtil.NormalizeNewLines(strData, false);
+			string[] vData = strData.Split('\n');
+
+			Dictionary<string, string> dict = new Dictionary<string, string>();
+			string strID = string.Empty;
+			foreach(string strLine in vData)
+			{
+				string str = strLine.Trim();
+				if(str.StartsWith("msgid ", StrUtil.CaseIgnoreCmp))
+					strID = FilterPoValue(str.Substring(6));
+				else if(str.StartsWith("msgstr ", StrUtil.CaseIgnoreCmp))
 				{
-					if(kpcc.Text.Length == 0)
+					if(strID.Length > 0)
 					{
-						string strTrlCtrl;
-						if(dict.TryGetValue(kpcc.TextEnglish, out strTrlCtrl))
-							kpcc.Text = strTrlCtrl;
+						dict[strID] = FilterPoValue(str.Substring(7));
+						strID = string.Empty;
 					}
 				}
 			}
+
+			MergeDict(kpInto, dict);
+		}
+
+		private static string FilterPoValue(string str)
+		{
+			if(str == null) { Debug.Assert(false); return string.Empty; }
+
+			if(str.StartsWith("\"") && str.EndsWith("\"") && (str.Length >= 2))
+				str = str.Substring(1, str.Length - 2);
+			else { Debug.Assert(false); }
+
+			str = str.Replace("\\\"", "\"");
+
+			return str;
 		}
 	}
 }
diff --git a/Translation/TrlUtil/TrlUtil.csproj b/Translation/TrlUtil/TrlUtil.csproj
index c99a16a..4f4f6f5 100644
--- a/Translation/TrlUtil/TrlUtil.csproj
+++ b/Translation/TrlUtil/TrlUtil.csproj
@@ -42,7 +42,7 @@
   <ItemGroup>
     <Compile Include="AccelKeysCheck.cs" />
     <Compile Include="FormTrlMgr.cs" />
-    <Compile Include="KeePass1xLngImport.cs" />
+    <Compile Include="TrlImport.cs" />
     <Compile Include="MainForm.cs">
       <SubType>Form</SubType>
     </Compile>

-- 
keepass2



More information about the Pkg-cli-apps-commits mailing list